Practice: Iterative Development
Create a solution in increments. Each increment is completed in a fixed period of time, an iteration.
Relationships
Purpose

Why adopt this practice?

The iterative approach differs from the traditional software development models, which assume that software development proceeds from one phase to another in a sequential manner. For example, in traditional models one first completes the requirements specification, which is "set in stone". When the requirements are fully completed, one proceeds to design, and then on to the next phase. Towards the later phases of the traditional cycle, disparate software components are integrated to produce the final product, and tested by quality engineers and users to remove bugs and validate functionality.

The iterative approach is the single most significant improvement to the way we build software products in decades, and has significantly improved project success because the feedback cycle is built into the software development lifecycle. This is especially significant in the more complex applications that support more demanding stakeholders and more complex business processes.

Iterations are used to reduce the risk of software development projects, and to deliver high value functionality to the user early on in the lifecycle. You essentially divide up the project into subsets of functionality based on, for example, use cases or use case scenarios. At the end of each iteration, you demonstrate or deliver these pieces of functionality to stakeholders, so that they can use the features and provide feedback. This feedback can be incorporated into future iterations. The iterative model embraces change through a feedback loop, whereas non-iterative models seek to prevent changes, which in turn increases the risk that the developed system does not meet the stakeholders' needs.

An iterative approach provides business value early on in the lifecycle, thus helping recoup the capital invested. It also allows stakeholders to provide feedback while the project is going on, and not at the end when you have spent all of the money and time allotted to the project.

How to read this practice

The best way to read this practice is to first familiarize yourself with its overall structure: what it is in it, and how it is organized.

Begin by making sure that the teams, including stakeholders, understand what the key concepts are, such as:



Next, understand how the various participants in a project collaborate on an iterative development approach.

  • The project manager facilitates the planning of the project iterations, coordinates interactions with the stakeholders, and keeps the project team focused on meeting the project objectives.
  • Stakeholders help the project manager and the team on requirements prioritization in order to minimize project risks and maximize business value throughout the iterations. Their constant feedback also directs and improves the quality of the project outcome.
  • The team commits to completing the work within each iteration.


Understand how these groups collaborate when they perform the following tasks:

  1. Plan Iteration
  2. Manage Iteration
  3. Assess Results

Also, understand what work products are used as inputs to and outputs from these tasks, such as work items list, risk list and Iteration Plan.

Last, understand the various guidelines that explain how to plan, run, and assess iterations.

For details on how to adopt this practice, see How to Adopt the Iterative Development Practice.

Additional Information

Additional Resources

For more information on the iterative development approach, see the following:

  • Kruchten, P. From Waterfall to Iterative Development - A Challenging Transition for Project Managers. The Rational Edge, 2000.

Retrieved from http://www-128.ibm.com/developerworks/rational/library/content/RationalEdge/dec00/FromWaterfalltoIterativeDevelopmentDec00.pdf.  (Get Adobe Reader)

  • Royce, W. Software Project Management: A Unified Framework. Addison Wesley. 1999.