agile software development- an approach to light

0 downloads 0 Views 501KB Size Report
product. Agile software development focuses on keeping code simple, testing often, and delivering .... The Product Owner has the following responsibilities.
Ambily O.A et al. / International Journal of Engineering Science and Technology (IJEST)

AGILE SOFTWARE DEVELOPMENTAN APPROACH TO LIGHT WEIGHT FROM HEAVY WEIGHT AMBILY O. A. * Research Scholar, Karpagam University, Coimbatore & Lecturer, KVM College of Engineering & I.T.

Dr. T. JUDETH MALLIGA Professor, Jansons Institute of Technology, Coimbatore. Abstract : Today the world is evolving with technological advancements. Similarly information technology does not enjoy solidity. For instance, we see processors getting faster, hard disks becoming compact, bandwidth increasing, operating systems & programming tools evolving and security is increasing as well. These technical changes and deliberate efforts of people swiftly change the expectations of clients. New software development ideas were presented in the form of Agile Manifesto as a counteraction to that of traditional rigorous methods and paradigms. Agile Manifesto consists of four values and twelve principles. Agile means ‘the quality of being agile’ or dexterity in motion. Agile software development is a highly collaborative and evolutionary approach for system development. Agile methods are a group of development approaches to software development. This paper deals with the applicability of light weight development methods in the field of software engineering and industry. Keywords: Agile Manifesto; Scrum; Extreme Programming; Sprint. 1.

Introduction

When we step into the software development process, we can see different process models. In the case of waterfall model, it is a traditional approach to software development, needs long time and a sequence of activities. Here comes the importance of lightweight development methods. Agile software development is one of those kinds. The agile methods have generated a lot of interest in IT industry. Agile methods stress two concepts: the intolerant honesty of working code and the effectiveness of people working together with goodwill. Working code tells the developers and sponsors what they really have in front of them. Using people effectively achieves quality, speed, and cost savings. A collaborative environment can produce a better design than each could produce alone. The quality of the team and the caliber of its members are more important than the efficiency of its processes. Traditional project management lies on the traditional management theory, which assumes that:       2.

Rigid procedures are needed to regulate a change. Hierarchical organizational structures are means of establishing order. Increased control results in increased order. Organizations must be rigid, static hierarchies. Problems are solved primarily through task breakdown and allocation. Projects and risk are adequately predictable to be managed through complex up-front planning.

Agile Software Development (ASD)

In software application development, agile software development (ASD) is a methodology for the creative process that anticipates the need for flexibility and applies a level of pragmatism into the delivery of the finished product. Agile software development focuses on keeping code simple, testing often, and delivering functional bits of the application as soon as they're ready.

ISSN: 0975-5462

Vol. 3 No. 1 Jan 2011

399

Ambily O.A et al. / International Journal of Engineering Science and Technology (IJEST)

Agile Software Development is a movement within the Software Development community, away from traditional process-heavy methodologies and toward "relatively light weight, effective, human-powered software-development techniques". The basis for agile software development is tiny teams of self-motivated and self-organized code writers and managers, usually 7-10 people, who huddle together, plan, code, execute and deliver work products to their clients on the basis of Agile Manifesto and its principles. 3.

History of ASD

Few years ago small projects were more successful than large projects. When agile methods came into the picture, the situation is changed. The modern definition of agile software development evolved in the mid-1990s as part of a reaction against "heavyweight" methods like waterfall model. The Agile Alliance was formed in 2001 to promote the concepts of agile software development, and help organizations adopt them. Agile Alliance is an organization that promotes agile software development methodologies, which includes Scrum, XP and others. However, the concepts themselves were being refined and shaped throughout the 1990s. 4.

Principles behind agile methods

In 2001, 17 prominent figures in the field of agile development came together at the Snowbird ski resort in Utah to discuss ways of creating software in a lighter, faster, more people-centric way. They created the Agile Manifesto, widely regarded as the canonical definition of agile development and accompanying agile principles. The Agile Manifesto states: We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:    

Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan

That is, while there is value in the items on the right, we value the items on the left more. Some of the principles behind the Agile Manifesto are:           

Customer satisfaction by rapid, continuous delivery of useful software Working software is delivered frequently (weeks rather than months) Working software is the principal measure of progress Even late changes in requirements are welcomed Close, daily cooperation between business people and developers Face-to-face conversation is the best form of communication (Co-location) Projects are built around motivated individuals, who should be trusted Continuous attention to technical excellence and good design Simplicity Self-organizing teams Regular adaptation to changing circumstances

The manifesto spawned a movement in the software industry known as agile software development. 5.

Methodologies Under Agile Software Framework

Agile software development is an abstract framework for undertaking software engineering projects. There are several methodologies under the agile software framework. Two of the most popular are Scrum and Extreme Programming (XP).

ISSN: 0975-5462

Vol. 3 No. 1 Jan 2011

400

Ambily O.A et al. / International Journal of Engineering Science and Technology (IJEST)

5.1. Scrum An agile software development methodology developed by Ken Schwaber and Jeff Sutherland in the mid1990s. Scrum is an Agile process that can be used to manage and control complex software and product development using iterative, incremental practices. Scrum has been used from simple projects to changing the way entire enterprises do their business. Scrum significantly increases productivity and reduces time to benefits while facilitating adaptive, empirical systems development. 5.2. Extreme Programming (XP) A discipline for developing software that emphasizes on customer collaboration and teamwork. Developed by Kent Beck, Ward Cunningham and Ron Jeffries, and it is based on a formal set of rules about how one develops functionality such as defining a test before writing the code and never designing more than is needed to support the code that is written. XP is designed to guide the project correctly rather than concentrating on meeting target dates, which are often impractical in this business. Some of the core practices are simple design, pair programming and delivering small releases frequently. Main advantage of XP is highly satisfied customers. 6.

Integrating Scrum with Extreme Programming

Scrum projects support the use of any software engineering discipline. However, since XP and Scrum share many core practices, Scrum and XP integrate well together. 6.1. Scrum with Pair Programming Scrum mainly focused on managing the software projects where as pair programming is a very good programming practice. Scrum projects support the use of any software engineering discipline. So we can blend managing nature of scrum with pair programming and thus improve the scrum. 6.2. Traditional Scrum Process An agile software development methodology developed by Ken Schwaber and Jeff Sutherland in the mid1990’s. Scrum is an agile process that can be used to manage and control complex software and product development using iterative, incremental practices. Scrum has been used from simple projects to changing the way entire enterprises do their business. Scrum significantly increases productivity and reduces time to benefits while facilitating adaptive, empirical systems development. In Scrum, projects progress via a series of iterations called sprints. Each sprint is typically one to four weeks long. Scrum is ideally suited for projects with rapidly changing or evolving requirements. 6.3. Scrum Roles Scrum has three roles:  Product Owner  Scrum Master  Team. The Product Owner has the following responsibilities. 

Define the features of the product.



Decide on release date and content.



Prioritize features according to market value.



Adjust features and priority every 30 days as needed.



Accept or reject work results.

The Scrum Master is a facilitative team leader working together with the Product Owner. He must: 

Ensure that the team is fully functional and productive.



Enable close cooperation across all roles and functions.



Remove barriers.

ISSN: 0975-5462

Vol. 3 No. 1 Jan 2011

401

Ambily O.A et al. / International Journal of Engineering Science and Technology (IJEST) 

Shield the team from external interferences.



Ensure that the process is followed, including issuing invitations to Daily Scrum, Sprint Review and Sprint Planning meetings. The scrum team usually with seven (plus/minus two) members have the right to: 

Select the Sprint goal and specifies work results.



Has the right to do everything within the boundaries of the project guidelines to reach the Sprint goal.



Organize itself and its work.



Present work results to the Product Owner.

Users - The users are considered the people or places that will utilize the projects outcome or product. 6.4. Components of SCRUM process Sprint – a series of iteration of work that results in an increment and production of work product. Daily Scrum – a meeting to analyze the status. In the meeting three key questions are asked and answered by all members  How many objectives are achieved since the last team meeting? 

What kinds of constraints are faced?



What do you plan to accomplish by the next team meeting?

These daily meetings lead to “Knowledge socialization” and thus by promote a self organizing team structure. Product Backlog – a to do list of user requirements that originated in the product definition. Sprint Planning Meeting - where each Sprint is planned. Sprint Review Meeting - where the results of the Sprint are examined. Sprint Backlog – a list of tasks that the team completes to turn product backlog into a product increment during a Sprint. Stakeholder - anyone with an interest in the product or system being constructed. Product Owner - the person who is responsible for the quality of the product for customers, users and stakeholders. Development Team - one or more small teams that develop the system or product. Scrum Master - the coach of the teams who is responsible for the Scrum process and the productivity of the teams Increment - an increment of potentially shippable product functionality that a team builds every Sprint. 6.5. Steps in SCRUM Process a. b. c.

In the initial stage, product owner collect various inputs from various sources such as end users, customers and stakeholders. Prepare a product backlog based on the SRS. Product owner presents the initial estimations to higher management. If the project proposal seems good and project gets a "go" decision.

d.

Team selection and sprint planning meeting.

e.

Create a sprint backlog.

f.

Sprint backlog items are implemented via sprints.

g.

Work product generated by the sprint is reviewed by team members along with stakeholders.

ISSN: 0975-5462

Vol. 3 No. 1 Jan 2011

402

Ambily O.A et al. / International Journal of Engineering Science and Technology (IJEST)

h.

Collect feedback from the customer or stakeholder and plan the next sprint

Fig. 1. Scrum Process

6.6. Pair programming Pair programming is simply 2 in 1 that is two programmers work together at one workstation. One types the code while the other reviews each line of code. The person who is typing is called the driver. Driver has the right to edit the code. The person reviewing the code is called the observer or navigator. In pair programming two programmers switch roles frequently. Pair programming provides a mechanism for real time problem solving and real time quality assurance. While reviewing, the observer also considers the strategic direction of the work, coming up with ideas for improvements and likely future problems to address. This frees the driver to focus all of his or her attention on the "tactical" aspects of completing the current task, using the observer as a safety net and guide. 6.7. Advantages of Scrum with Pair programming By integrating scrum with pair programming we can achieve the benefits of both.

7.



Increased work satisfaction.



Enhanced quality of work products.



Reduced management risk.



Increased productivity.



Eliminates communication gap between team members.



Effective knowledge sharing. Agile System Development Life Cycle ASDLC contains the following phases. a. b. c. d. e. f.

Project Selection and Planning. Project Initiation. Construction Iterations. Release Iterations. Production. Retirement.

ISSN: 0975-5462

Vol. 3 No. 1 Jan 2011

403

Ambily O.A et al. / International Journal of Engineering Science and Technology (IJEST)

Fig. 2. Agile system Development Life cycle

8.

Advantages of Agile Projects over Traditional Projects

Now organizations are focusing on develop software in short-period with less cost and effort. A light weight development method meets these requirements through the following features.

Fig. 3. Comparison between heavy weight and Light weight Methods

9. Conclusion From this study it can be concluded that the software industry go away from the heavy weight methods, many IT deals are outdated in that they are still planed on the basis of the waterfall method, and not light weight

ISSN: 0975-5462

Vol. 3 No. 1 Jan 2011

404

Ambily O.A et al. / International Journal of Engineering Science and Technology (IJEST)

method. But there is no doubt that the Agile approach has entered the mainstream. In a recent survey, more than 50% of the respondents said that at least half their organization’s software projects used an Agile methodology. Now many large companies using Agile methods for their software development rather than heavy weight methods. References [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20]

Adrian Bridgwater, “Agile Is Not A Religion”, February 2009. Agile Alliance, Manifesto for Agile Software Development, 2001. Alistair Cockburn, Learning From Agile Software Development - Part One. Crosstalk October 2002 and Alistair Cockburn, Learning From Agile Software Development - Part Two. Crosstalk November 2002. Augustine Sanjiv, Woodcock Susan. Agile Project Management: Emergent Order through Visionary Leadership. 2003. Beck X, Extreme Programming Explained: Embrace Change, Addison-Wesley Pub Co, 1999. Beedle M, “Scrum : An Extension Pattern Language for hyperproductive software development”. Boehm Harry, Turner Richer, Management Challenges to Implementing Agile Processes in Traditional Development Organizations. Special Issue. Craig Larman and Victor R. Basili, Iterative and Incremental Development: A Brief History. Computer , June 2003. Hass Kathleen B. The blending of traditional and Agile Project Management. PM World Today. May, 2007. James T, Stepping back from lean [lean vs agile manufacturing. IEEE software, Volume 84, Issue 1, Feb-March 2005. Jonna Kalermo and Jenni Rissanen : Agile Software Development in Theory and Practice. Pekka Abrahamsson, Outi Salo, Jussi Ronkainen and Juhani Warsta : Agile Software Development Methods - Review and Analysis. Payne Bob, Sencindiver Fred, Woodcock Susan, Augustine Sanjiv. Agile project management: steering from the edges. http://www.agilemanifesto.org http://www.agilesoftwaredevelopment.com http://www.ambysoft.com http://www.ccpace.com/Resources/documents/AgileProjectManagement.pdf http://en.wikipedia.org/wiki/Scrum_(development) http://en.wikipedia.org/wiki/Test-driven_development http://www.pcmag.com

ISSN: 0975-5462

Vol. 3 No. 1 Jan 2011

405