Agile software development approach
Agile software development is set of software development methodologies based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams.
Incremental software development methods have been traced back to 1957. ”Lightweight’ software development methods evolved in the mid-1990s as a reaction against ‘heavyweight’ methods, which were characterized by their critics as a heavily regulated, regimented, micromanaged, waterfall model of development. Supporters of lightweight methods (and now agile methods) contend that they are a return to earlier practices in software development.
Early implementations of lightweight methods include Scrum (1993), Crystal Clear, Extreme Programming (1996), Adaptive Software Development, Feature Driven Development, and Dynamic Systems Development Method (1995). These are now typically referred to as Agile methodologies, after the Agile Manifesto.
The Agile Manifesto was written in February 2001, at a summit of independent-minded practitioners of several programming methodologies.
Manifesto for Agile Software Development 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.
The Agile Manifesto has twelve underlying principles:
1. Customer satisfaction by rapid delivery of useful software
2. Welcome changingrequirements, even late in development
3. Working software is delivered frequently (weeks rather than months)
4. Working software is the principal measure of progress
5. Sustainable development, able to maintain a constant pace
6. Close, daily co-operation between business people and developers
7. Face-to-face conversation is the best form of communication (co-location)
8. Projects are built around motivated individuals, who should be trusted
9. Continuous attention to technical excellence and good design
11. Self-organizing teams
12. Regular adaptation to changing circumstances
Agile methods break tasks into small increments with minimal planning and do not directly involve long-term planning. Iterations are short time frames. Team composition in an agile project is usually cross-functional and self-organizing and team size is usually small (5-9 people.) The agile method encourages stakeholders to prioritize "their requirements on the basis of business value.
The Agile approach is supported by the Agile Alliance, a nonprofit organization that wants to see Agile projects start and help Agile teams perform. It is funded by individual memberships, corporate memberships, and by the proceeds from the Agile 200X series of conferences. It is not a certification body and does not endorse any certification programs.
Anyone involved in an Agile software development project team; including analysts, architects, developers, testers and business customer/users; anyone supporting or managing an Agile project team who requires a detailed understanding of the practices and benefits of Agile software development.
Software development projects
Strengths and pitfalls in using the method:
Improved quality; higher productivity; positive effect on business satisfaction;
· Distributed development efforts where teams are not located together
· Acceptance: forcing an Agile process on a development team that is unfamiliar with the approach
· Exceptions: mission-critical systems where failure is not an option at any cost (e.g. software for surgical procedures).
Relevant links (web links):
http://agilemanifesto.org/ and http://www.agilealliance.org