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

Why adopt this practice?

Today's software applications are too complex to allow you to sequentially define the requirements, come up with an architecture and design, do an implementation, carry out testing, and get it all right. Whether you use waterfall or iterative development approaches, your initial requirements, architecture, design, and code will be suboptimal. With waterfall development, you typically do not get meaningful feedback on what improvements can be made until it is so late in the project that it is too costly to make them. By contrast, dividing the project into a series of time-boxed iterations allows you to deliver capabilities that can be assessed by stakeholders at the end of each iteration. This approach provides rapid and timely feedback loops enabling issues to be addressed and improvements made at a lower cost while budget and time still allow, and before the project has gone so far ahead that major rework is required.

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.

For more information on this practice,  see the practice resource page on IBM® DeveloperWorks®.

Relationships