Agile software development



Similar documents
Agile Scrum Workshop

Scrum. SE Presentation. Anurag Dodeja Spring 2010

The traditional project management uses conventional methods in software project management process.

Lean vs. Agile similarities and differences Created by Stephen Barkar -

Software Development with Agile Methods

Agile Projects 7. Agile Project Management 21

D25-2. Agile and Scrum Introduction

LEAN AGILE POCKET GUIDE

AGILE - QUICK GUIDE AGILE - PRIMER

Agile with XP and Scrum

1. Sprint Planning. Agile Ceremonies Demystified. A four part series written by Angela Boardman, CSM, CSP ATG (4284)

Issues in Internet Design and Development

Agile Based Software Development Model : Benefits & Challenges

Software processes that are:

Iteration Planning. also called Iteration Kickoff

Agile Software Development Methodologies and Its Quality Assurance

The Basics of Scrum An introduction to the framework

The Agile Manifesto is based on 12 principles:

AGILE METHODOLOGY IN SOFTWARE DEVELOPMENT

Mariusz Chrapko. Before: Software Quality Engineer/ Agile Coach, Motorola, Poland. My Public Profile:

CS435: Introduction to Software Engineering! " Software Engineering: A Practitioner s Approach, 7/e " by Roger S. Pressman

Waterfall to Agile. DFI Case Study By Nick Van, PMP

Scaling Scrum. Colin Bird & Rachel Davies Scrum Gathering London conchango

Introduction to Agile Scrum

Adapting Agile Software Development to Regulated Industry. Paul Buckley Section 706 Section Event June 16, 2015

Introduction to Agile and Scrum

A Viable Systems Engineering Approach. Presented by: Dick Carlson

Applying Lean on Agile Scrum Development Methodology

"Bezpieczny Projekt"

Waterfall vs. Agile Methodology

When is Agile the Best Project Management Method? Lana Tylka

AGILE SOFTWARE DEVELOPMENT. BY Sysop Technology Aurangabad

Transitioning Your Software Process To Agile Jeffery Payne Chief Executive Officer Coveros, Inc.

Process Methodology. Wegmans Deli Kiosk. for. Version 1.0. Prepared by DELI-cious Developers. Rochester Institute of Technology

How To Understand The Limitations Of An Agile Software Development

Practical Agile Requirements Engineering

Getting Agile with Scrum

Measuring ROI of Agile Transformation

Sometimes: 16 % Often: 13 % Always: 7 %

What is Scrum? Scrum Roles. A lean approach to software development. A simple framework. A time-tested process

Topics covered. Agile methods Plan-driven and agile development Extreme programming Agile project management Scaling agile methods

EXIN Agile Scrum Foundation. Sample Exam

Agile Notetaker & Scrum Reference. Designed by Axosoft, the creators of OnTime the #1 selling scrum software.

Comparative Analysis of Agile Software Development Methodologies-A Review

SCEA 2010 EST06. Estimating Issues Associated with Agile. Bob Hunt. Galorath Incorporated

Software Development Process

Getting Agile with Scrum. We re losing the relay race

SECC Agile Foundation Certificate Examination Handbook

Is PRINCE 2 Still Valuable in an Agile Environment?

Advanced Software Engineering. Software Development Processes

A. Waterfall Model - Requirement Analysis. System & Software Design. Implementation & Unit Testing. Integration & System Testing.

Scrum and Kanban 101

An Introduction to Scrum

Software Development Life Cycle Models- Comparison, Consequences

Agile Project Management By Mark C. Layton

Agile Processes and Methodologies: A Conceptual Study

Overview of Scrum. Scrum Flow for one Sprint SCRUMstudy.com. All Rights Reserved. Daily Standup. Release Planning Schedule. Create.

Agile Development Overview

Alternative Development Methodologies

Introduction to Agile

INTRODUCTION. Chapter Motivation

Software Development Life Cycle (SDLC)

The Scrum software development for small project teams. Siim Nahkur,

Atomate Development Process. Quick Guide

Agile Project Management with Scrum

This handbook is meant to be a quick-starter guide to Agile Project Management. It is meant for the following people:

Agile and lean methods for managing application development process

UC Santa Barbara. CS189A - Capstone. Christopher Kruegel Department of Computer Science UC Santa Barbara

Agile Software Development

What is meant by the term, Lean Software Development? November 2014

EPL603 Topics in Software Engineering

Impact of Agile Methodology on Software Development

Getting Agile with Scrum. Mike Cohn - background

Scrum. Speaker: Dan Mezick URL: NewTechUSA.com. Copyright 2002: All rights reserved

Agile Processes and Distributed Projects: Dream or Nightmare?

Moderator: Albert Jeffrey Moore, ASA, MAAA. Presenters: Albert Jeffrey Moore, ASA, MAAA Kelly J. Rabin, FSA, MAAA Steven L. Stockman, ASA, MAAA

ACP Exam Prep Plus Desk Reference including the Project Management Agile Body of Knowledge TM (PMABOK TM )

An Overview of Quality Assurance Practices in Agile Methodologies

Agile Scrum and PMBOK Compatible or Contrary?

Agile Software Development with Scrum. Jeff Sutherland Gabrielle Benefield

Imad Alsadeq, Qatar, May 2013 OPM3, MSP, PMP, PMOC, PMI-RMP, MCP

CompSci Fall 2014 Professors: Robert Duvall, Ajay Patel, Salman Azhar (rcd@cs, ajay.patel, azhar@cs)

Life Cycle Models. V. Paúl Pauca. CSC Fall Department of Computer Science Wake Forest University. Object Oriented Software Engineering

Agile Methodologies XP and Scrum

Agile Software Development in the Large

USCIS/SPAS: Product Backlog Items and User Stories 4/16/2015. Dr. Patrick McConnell

Nova Software Quality Assurance Process

Agile Software Development. Stefan Balbo / Patrick Dolemieux

EXIN Agile Scrum Foundation

TSG Quick Reference Guide to Agile Development & Testing Enabling Successful Business Outcomes

Agile and lean methods for managing application development process

T14 "TIMELINES, ARTIFACTS AND OWNERS IN AGILE PROJECTS" Hubert Smits Rally Software Development BIO PRESENTATION 6/21/2007 1:30:00 PM

Agile extreme Development & Project Management Strategy Mentored/Component-based Workshop Series

Scrum, User Stories, and More! CSCI 5828: Foundations of Software Engineering Lecture 22 11/06/2014

XP & Scrum. extreme Programming. XP Roles, cont!d. XP Roles. Functional Tests. project stays on course. about the stories

Generalizing Agile Software Development Life Cycle

Agile So)ware Development

Agile Software Development

Software Requirements and Specification

Certified ScrumMaster (CSM) Content Outline and Learning Objectives January 2012

Transcription:

Agile software development Syed Nisar Hussain Bukhari Scientist-B DOEACC centre Srinagar nisar.bukhari@gmail.com Abstract: The field of software development is open and dynamic. New approaches of software development are announced in quick succession. In the last 30 years a number of approaches have been introduced of which only a few have survived to be used today. Using any of these approaches we need to check how successful we are in developing software? What percentage of software projects actually succeed? The primary goals in delivering a software are (1) Deliver software that meets the requirements and specifications(feature complete) (2) Deliver the software within the time frame promised (on time) (3) Ensure that the software is of high quality and bug free(failure free) (4) Ensure that the software is within budget. Achieving these four goals is not easy. It requires your entire software team to have a defined development / project management methodology, and tools to make implementing the methodology easy. When choosing your development methodology, you have many to choose from, each having advantages and disadvantages. As classical method of software development have many disadvantages, a new way of software development is explored here which is agile software development-an Iterative and Incremental development. There are many opportunities which agile software development attempt to provide us to assess the direction of the project throughout the development life cycle through regular cadences of work, known as sprints or iterations which are one week to four weeks in duration, at the end of which teams must present a shippable increment of work. Then they can decide to release it as is or continue to enhance for another iteration. Here preference is given to face-to-face communication over written documents when the team consisting of 5 to 9 members is all in the same location. However facilities like voice, videoconferencing, e-mail etc are used to maintain daily contact if team is working in different locations. Now a day s agile development is picking up the stream. In this paper agile software development process will be explored. Also Scrum-an empirical approach which is one of the agile development methodology that allows us to focus on delivering the highest business value in the shortest time will be explored and reviewed. Of all the agile methodologies, scrum is unique in its nature because scrum uses the real world progress of the project. It means it is not based on an efficient guess or uniformed forecast to plan and schedule the project. Keywords: agile; software; agile software development; team;sprint;scrum;cadences;development; project I. INTRODUCTION When a computer software succeeds when it meets the needs of the people who use it, when it performs flawlessly over a long period of time, when it is easy to modify and even easier to use it can and does change things for the better [9]. The problem with most of the projects following traditional software development approach (sequential development) is that the requirements are always changing which is what we can say as poor requirement engineering.

Also in sequential approach every phase of the project must be completed before the next phase can begin. So firstly developers gather all the projects requirements, then complete its architecture and design, then write the code and so on. There is hardly any communication between the groups that complete each phase of work. It assumes requirements of a system can be frozen (i.e., baselined) before the design begins [5]. Clearly it is hard to tell to a team of developers everything that needed to be in a final product before it was up. It follows the big bang approach-the entire software is delivered in one shot at the end [5]. This entails heavy risks, as the user does not know until the very end what they are getting [5]. So a team might have built the software it was asked to build, but, in the time it took to create, business requirements have changed so dramatically that the product is totally irrelevant. Ultimately company is in loss because it has spent time and money but the output is of no use. With agile our focus is on the repetition of abbreviated work cycles as well as the functional product they yield and that is why agile methodology is described as iterative and incremental approach. In waterfall, development teams only have one chance to get each aspect of a project right. In an agile paradigm, every aspect of development requirements, design, etc. is continually revisited throughout the lifecycle. When a team stops and re-evaluates the direction of a project every 2-4 weeks, there s always time to steer it in another direction. The results of this inspect-adapt approach to development greatly reduce both development costs and time to market [7]. In essence, it could be said that the agile development methodology helps companies build the right product [7]. Agile software development methodologies accommodate frequently changing requirements in a tight schedule. That is agile process imples a light and adaptive process, nimble in response to changing needs [5]. There are number of agile Software Development methods which include mainly extreme Programming, Scrum, Agile Modeling etc and it has been observed and experimented that all the aforesaid methods are based on agile manifesto and they have their own life cycle for improving productivity and quality. In this paper,firstly,i will discuss Agile software development process in section II.Secondly,I will explore one of the agile development methodology SCRUM in section III with generalized diagarm.research findings in section IV. Finally, conclusion is drawn in section V. II AGILE SOFTWARE DEVELOPMENT PROCESS The word agile denotes quickness, lightness, well-coordinated and ease of movement. It means that Agile Software development is about fast delivery of software with more ease of development. If for a project with frequently changing requirements and client ready for his involvement and to invest time agile methodology is the best option for that project. It is an incremental concept (iterations) to software development, performed in a highly shared manner by self-organizing teams that produces high quality software in a cost effective and timely manner, which meets the changing needs of its customer. An Iteration is nothing but a small set of the functionalities build on top of previous iteration. As per my work experience with agile way of software development is concerned there is lot of client involvement and face-to-face interaction. Each iteration is tested by client. Then after testing, the feedback from the client is implemented in subsequent iterations; thus minimizing risk and ensuring higher client satisfaction. Features are prioritized depending on customer need, development risk etc. High priority features are developed first. After every iteration, the project priorities are again evaluated. The project teams are generally small and a lot of interaction and communication is

there among team members. As entire team is actively involved, team is empowered to take decisions and no separate team is there to do the project management. Emphasis is on keeping things as simple as possible and being open to change. More emphasis is on developing the application only, and not on documentation. Simple and minimal documents are used to exchange the views. Customer gets to know regular and frequent status of the application. Since the methodology emphasizes rapid delivery, time-to-market is less. So the key functionalities can be available to use sooner. Delivery is defined by fixed timescale. So customer is assured of receiving some functionality by a fixed time period. More Testing is done, so better software quality is delivered. Agile approach to managing software projects is based on giving more value to the developers than to the process [4].To manage agile projects you can use an online product called VersionOne (http://www.versionone.com/).today there are around 30,000 teams in world using this product everyday to plan and track their projects. Figure below illustrates the iteration cycle stages. Figure 1: Iteration cycle stages From the above figure the iteration stages are repeated for each cycle and accordingly agile software development process involves the following: 1) It gets initiated with kick-off meeting 2) Requirements which are known are understood and prioritized. Then development plan is drawn accordingly. 3) Complexity of each requirement is estimated. 4) Design using simple diagrams is done 5) An approach called Test Driven Development (TDD) approach may be used. This approach emphasis on writing test first and then writing code to pass the test. So it can help in avoiding over-coding. 6) Then development is done, sometimes in pairs, with lot of team interaction. Ownership of code is shared when pair programming is done.

7) The code is tested more frequently. 8) Depending on the feedback received, code refactoring is done. There is no impact on external behavior of the application due to refactoring, but the internal structure may be changed to provide better design, maintainability. Some ways of refactoring may be add interface, use super class, perform database to business object mapping in separate class etc. III. SCRUM Scrum is one of the agile development methodology that allows us to focus on delivering the highest business value in the shortest time. Scrum is unique because it introduced the idea of empirical process control [9].That is, Scrum uses the real-world progress of a project not a best guess or uninformed forecast to plan and schedule releases. In Scrum, projects are divided into succinct work cadences, known as sprints, whose typical duration is a calendar month(at most) [9].Designing, coding and testing of the product is done during the sprint. At the end of each sprint, clients and team members meet to assess the progress of a project and accordingly plan its next steps. As my research and development experience with scrum is concerned I found it to be an incredibly effective management methodology for everyone involved, including developers and stakeholders. At the end of the iteration the system is demoed to the stakeholders to verify that the work that the team promised to do at the beginning of the iteration was in fact accomplished. The scrum process: Below figure illustrates the general scrum process [9] Figure 2: The general scrum process So from the above figure scrum process generally has three main phases. 1) Planning: Here project planning is done and also high level design decisions are made. 2) Sprint cycle: An iterative cycle of one month duration at the most, in which the actual development of the product is done(see figure 3 below).generally it starts out with a Sprint Planning Meeting to decide what features to be pulled from product backlog to sprint backlog(features to be completed in this sprint). Sprint backlog is a table we derive from the product backlog that formalizes the schedule for the sprint (short- range schedule) [3]. Then the development is done. And sprint Review Meeting is held where the progress made in the last sprint is demonstrated, and adjustments are made to the project as necessary and with this sprint is closed. The sprint cycle is repeated until the product's development is complete.the product is complete when the variables of time, quality, competition, and cost are at a balance [9].

Develop - code, test, and document. Wrap - Integrated the work and make it ready for evaluation. Review -do the review on the work done in this sprint. Adjust changes(if any) in requirements or plans. Figure 3: The scrum sprint cycle 3) Closure: software is released and development is brought to a close Scrum Roles: 1) Product Owner: Product owner defines the features of the system and decides on release date and content. Product owner also prioritize features according to market value and adjust features and priority every iteration, as needed. He also accepts or rejects work results. Product owner can be a customer or marketing representative or proxy between customer and the team. 2) The Scrum Master: Scrum master Represents management to the project. He is responsible for enacting Scrum values and practices and removes impediments if any. The scrum master has to ensure that the team is fully functional and productive and shields the team from external interferences. Also scrum master enable close cooperation across all roles and functions 3) Scrum team: Scrum usually consists of 5-9 people. Members in a team can be cross functional. That is they can be Programmers, testers, UI Designers, etc. Members must be full time but exceptions may be there (e.g., Database Administrator).Membership should change only between sprint. Scrum Ceremonies: 1) Sprint planning meeting: A meeting at the beginning of a sprint where the sprint is planned. Items from the Product Backlog are selected to be completed in the sprint, based on the priorities set by the Product Owner and each is estimated in hours (1-16). 2) Daily scrum: A meeting is held on a daily basis called scrum meeting.here preference is given to face-to-face communication over written documents when the team consisting of

5 to 9 members is all in the same location. However facilities like voice (Skype is an example), videoconferencing, e-mail etc are used to maintain daily contact if team is working in different locations. This meeting is not a problem solving session but team share the status and potential issues are identified.here team members make commitments to each other and to the Scrum Master. The duration of this meeting is 15 minutes and every team members answers three questions in stand-up position. -What did you do yesterday? -What will you do today? -What obstacles are in your way? While one is giving his scrum others must remain silent and listen to him carefully. Only team members, scrum master and product owner can talk. Daily scrum is a good way for a Scrum Master to track the progress of the Team 3) Sprint review meeting: In this informal Sprint review meeting team presents what it accomplished during the sprint. It typically takes the form of a demo of new features or underlying architecture. The participants in this meeting are customers, management,product owner, other engineers. IV.RESEARCH FINDINGS 1) Customer involvement throughout life cycle is must. 2) If product owner is not avaialble at the time of scrum call,scrum master can hold the scrum and send the scrum note across the product owner. 3) While the scrum is going on, product owner note down everything whatever you say as an answers to three questions using a preformatted scrum document. 4) This document is then send across every team member by product owner. 5) Every team member must first go through that document on next working day before starting his day 6) While one is giving his scrum others must remain silent and listen to him carefully. 7) While working on the particular requirement if there is need for example to create an API XYZ but it was not in the sprint backlog as a requirement for you, you can discuss it with your scrum master and even product owner and add a requirement for this with exact time in product backlog. 8) Every team member must daily update the status (closed,open,inprogress,done) of his/her tasks/requirements in an online system (e.g., VersionOne(http://www.versionone.com/)) 9) Communication is more important with product owner and between team members. If any requirement is ambiguous or not clear to you, clear it at that moment only with product owner. 10) You can also fix a meeting with P.O or set up a call with him to clear this ambiguity. 11) You can also include your T.L in call/discussion and create the minutes of meeting (MOM) document and share it with the entire team. 12) Every team member must finish his/her work on time(time allocated to each requirement which are on his name) so that there are no backlogs against that particular team member in the next sprint. 13) Synchronization of development team with the testing team is must.

V. CONCLUSION Agile software development stresses quick and rapid iterations, small and frequent releases, and evolving requirements facilitated by direct user involvement in the development process. Agile has made it easier to cope with the changes because of short sprints and constant feedback. The reason why agile methodology have been adopted by many IT industries is that you are delivering the quality product in a scheduled time[time which is an important factor in software development] and overhead cost in terms of process and management is minimal. REFRENCES [1]Cockburn, A., Agile software Development, Pearson Education, Asia, Low price edition [2]Craig Larman Applying UML and patterns (An introduction to object oriented analysis and design and the unified process) Second edition [3] Kim H. Pries, Jon M. Quigley- Scrum project management [4]Loannis G.Stamelos, Panagiotis Sfetsos-Agile software development quality assurance. [5] Pankaj jalote - An integrated approach to software engineering [6]Roger S Pressman - Software Engineering: A Practitioner's Approach. Fifth edition McGraw- Hill [7] http://www.agilemethodology.org/ [8] http://www.codeproject.com/kb/architecture/scrum.aspx [9] http://martinfowler.com/articles/newmethodology.html AUTHORS PROFILE Syed Nisar Hussain Bukhari is MCA from University of Kashmir. He has three years of experience as software engineer. He has worked on projects involving scrum agile methodology. Currently he is working as Scientist-B in DOEACC centre Srinagar, a unit of DOEACC society of India, an autonomous body of the department of information technology (DIT), Ministry of communication and information technology (MCIT), Government of India.