Article: Agile Software Development
From Software Business Community
| Encyclopedia of Software Business. | |
| Please help the community by contributing your expertise and experience to adding content to this article. |
Agile software development
Agile software development is an iterative and incremental (evolutionary) approach to software development which is performed in a highly collaborative manner by self-organizing teams which aim to produce high quality software in a cost effective and timely manner while meeting the changing needs of its stakeholders[1], [1].
Introduction
In an agile environment, software is developed in small complete software life cycles called iterations [2], [3] – each iteration has it own planning phase, requirements analysis, design, coding, unit testing and acceptance testing phase. Team work, collaboration, process adaptability are natural parts of the project life cycle. Development is done with minimal planning in fixed time durations called time boxes (1-4wks). Development teams are usually cross functional and self-organized with no corporate roles. Communication is face to face; working software is also preferred to documentation. Teams are usually co-located and small in size (5-9 people). Team members meet daily in short meetings that last about 15 min called scrum meetings. In these meetings members report what they had done the previous day, what they intend to do, and what problems are preventing them from progressing.
The Agile manifesto
Agile software development is based on the agile manifesto. The Agile Manifesto refers to a statement of principles on which agile software development is based. It was drafted on 13 February 2001, at the lodge at the Snowbird ski resort in the Wasatch Range of mountains in Utah, by representatives of various software development methodologies. The 17 signatories of the manifesto were: Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, Ward Cunningham, Martin Fowler, James Grenning, Jim Highsmith, Andrew Hunt, Ron Jeffries, Jon Kern, Brian Marick, Robert C. Martin, Steve Mellor, Ken Schwaber, Jeff Sutherland, Dave Thomas
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
Agile principles[2]
Some of the principles behind the agile manifesto are:
- Customer satisfaction by rapid and continuous delivery of useful software
- Working software is delivered frequently (weeks rather than months)
- Working software is the principal measure of progress
- Accepting changes throughout the development period
- Daily cooperation between business people and developers
- Face-to-face conversation as seen as the best form of communication (co-location)
- Projects are built around motivated individuals, who should be trusted and be able to manage their own work
- Continuous attention to technical excellence and good design
- Simplicity
- Self-organizing teams
- Regular adaptation to changing circumstances
Agile software development methods
Agile methods are a family of software development processes and practices, not a single approach to software development[4]: Adaptive software development process was introduced in a paper by Edmonds (1974). Other early Agile methods include Scrum (1993) [3], Crystal, Extreme programming (1996), Feature Driven Development, and Dynamic Systems Development Method (DSDM) (1995). Since the publication of the Agile manifesto in 2001 together, these approaches have since been typically referred to as Agile Methodologies.
Agile software development tools and techniques
Agile software development tools and other specific tools and techniques such Burn down charts, backlog lists, continuous integration, Unit testing, Pair programming, test driven development [5], design patterns, code refactoring and other techniques are often used to improve software quality and enhance project agility.
Comparison with other common development methods
Agile projects have proved effective in managing:
- Risky projects where requirements change during project execution
- In complex projects which benefit from the splitting of tasks into small chunks called backlog items which are later implemented in sprints (iterations)
- Scrum meetings help to maintain project transparency
- Burn down charts are commonly used to keep track of the team's velocity (average time it takes the team to complete one backlog task)
- Since the team has collective code ownership quality is upheld by using agreed standards and frequent code refactoring
Agile success stories
- Reaktor Innovations http://www.ri.fi/web/en/frontpage
- IBM http://www.computerworld.com/action/article.do?command=viewArticleBasic&articleId=9067041
- BT http://www.computerworld.com/action/article.do?command=viewArticleBasic&articleId=9067679
- Nokia oy
- Nokia Siemens Networks
The future of agile software development
With the proven advantages and recent adoption of agile methods by many global companies, the future is likely to embrace more of agile methods like test driven development (TDD)[6], feature driven development (FDD,) scrum and other related methodologies
External links to related reading
- Agile Alliance http://www.agilealliance.org/show/2
- Quality Tree Software http://www.qualitytree.com/Classes/Catalog/dat.html
- Agile and Extreme Programming. http://objectmentor.com/resources/bin/XPProgrammingPractices.ppt
References
- ↑ R.C. Martin. Agile Software Development: Principles, Patterns and Practices. Prentice Hall. 2002
- ↑ D. Wells, L. Williams. Extreme Programming and Agile Methods. XP/Agile Universe. 2002.
- ↑ D. Pilone, R. Miles. Head First Software Development. O'Reilly Media inc. 2008
- ↑ R. Pressman. Software Engineering. Wiley. 2007
- ↑ L. Koskela. Test Driven: TDD and Acceptance TDD for Java Developers. Manning Publications Co. 2008
- ↑ L. Koskela. Test Driven: TDD and Acceptance TDD for Java Developers. Manning Publications Co. 2008