There’s so much talk about applying agile techniques to deliver software. For people new to Agile, this article provides a quick overview of a typical Agile Development Life Cycle.
Before we dive into the Agile Development Life Cycle, it is important to understand that Agile is an approach to software development. This approach was developed to mitigate the risks associated with the traditional Waterfall model.
The basic premise that requirements are clear at beginning of a project is challenged in the agile approach. In reality, project requirements are unearthed, can change and may evolve over a project life Cycle. For vague requirements, the Agile approach to software development trumps the traditional Waterfall model, but in what ways?
Principles behind the Agile Manifesto
The Agile approach is based on principles that have been extracted from the Agile Manifesto. For the complete list of principles, refer to Principles behind the Agile Manifesto. Briefly these principles are as follows:
- Customer satisfaction by rapid delivery of useful software
- Welcome changing requirements, even late in development
- Working software is delivered frequently (weeks rather than months)
- Close, daily cooperation between business people and developers
- Projects are built around motivated individuals, who should be trusted
- Face-to-face conversation is the best form of communication (co-location)
- Working software is the principal measure of progress
- Sustainable development, able to maintain a constant pace
- Continuous attention to technical excellence and good design
- Simplicity—the art of maximizing the amount of work not done—is essential
- Self-organizing teams
- Regular adaptation to changing circumstances
It is the principles behind the Agile Manifesto that influence the life Cycle of Agile Development. For example, Principle 3 means that the life Cycle needs to deliver in an iterative manner. Similarly, Principle 7 means that the development should be incremental. Principles 2, 6, and 12 mean that there would be more meetings and proactive risk mitigation.
Now, let’s see how these principles are implemented in a typical Agile Development Life Cycle. I say “typical" because there are several Agile methodologies, such as SCRUM and XP (Extreme Programming).
A Typical Agile Development Life Cycle
In a typical Agile Development Life Cycle, the smallest item of work is called a story. Multiple stories may make a feature. Therefore, stories can be viewed as scope. Stories are delivered in a defined timeframe, which is known as an Iteration. Refer to the Agile Development Project Planning Considerations - Length of an Agile Iteration article for the key considerations for determining the iteration length.
Several Iterations make a Release. A project may have several releases. It is easier to understand with a visual. The following image shows the iterations within a release.
Each release starts with a team meeting in which stories from the backlog are assigned to iterations. This is known as a Release Kickoff. Similarly, there is an Iteration Kickoff. During an Iteration, there are daily stand-up meetings in which the team gives status and unidentified risks are unearthed.
After an Iteration is complete, the team holds an Iteration Retrospective. In this meeting, the team reflects on the Iteration and takes the lessons learned to the next Iteration. Similarly, there is a Release Retrospective.