Guideline: Iteration Planning
This guideline provides guidance on iteration patterns and helpful strategies when planning project iterations.
Relationships
Related Elements
Main Description

Iteration Strategies

During each iteration, a subset of the total system is analyzed, designed, implemented and tested. The choice of what the subset should be and how deep to delve are critical to reducing risk in subsequent iterations. There are two basic strategies: Wide/Shallow and Narrow/Deep.

Wide and Shallow

In the Wide/Shallow strategy, the entire problem domain is analyzed, but only the surface details are considered. All scenarios are idenfied but they are only outlined and the most criticals are fleshed-out in great detail. The same thing happense for the architecture which is defined broadly; internal details are detailed only where significant risk or uncertainty must be managed. 

Narrow and Deep

In the Narrow/Deep strategy, a vertical slice of the problem domain is analyzed thoroughly. The Scenarios related to this narrow slice are defined and fleshed-out in great detail, to get a clear understanding of the problem at hand. The architecture required to support the desired behavior is defined, designed, implemented and tested. Subsequent iterations focus on analyzing, designing and implementing additional vertical slices.

Phases and Iterations

Inception Iteration

The first iteration is usually the hardest. There are many new aspects a first iteration must achieve, like putting in place the process, team-building, understanding a new domain, becoming familiar with new tools, and so on. Be conservative in your expectations about how much you can achieve in this iteration. If you aim too high, you risk delaying the completion of the first iteration, reducing the total number of iterations, and hence decreasing the benefit of an iterative approach. The Inception iteration should be focused on fleshing out a candidate architecture and refining enough the scope to be able to go tho the next phase .You must therefore involve the architect and the analyst  in the planning process of early iterations.

Usually the Inception Iteration is a wide and shallow iteration.

Elaboration Iterations

In Elaboration, the iterations focus on defining a stable architecture and mitigating the technical risks, by designing, implementing and testing the architecturally significant scenarios. "Architecturally significant" scenarios are those which exercise and provide you a broad coverage of the architecture of the system.

Elaboration iterations are usually a mix between wide and shallow, and narrow and deep. The overall system is analyzed following a wide and shallow strategy; the architecturally significant scenarios are tackled using a narrow and deep strategy.

Construction Iterations

After the baseline of the architecture at the end of the Elaboration phase, the focus goes from architecturally significant scenarios to customer critical scenarios. The most critical scenarios for the customer would be implemented and tested first. 

Also, toward the end of Elaboration, and during Construction change requests begin to arrive and they will need to be balanced against the existing project plan, iteration plans, and the existing risk list. Change requests may cause the priority of requirements to be re-evaluated, or may drive the re-prioritization of risk. However, they must be managed carefully, lest project control be lost.

During Construction and Transition, the focus is on fleshing-out the architecture and implementing all remaining requirements.

Usually Construction iterations are wide and shallow iterations.

Transition Iteration

The Transition iteration is focused on delivering the application to the customer and reacting to the beta feedback by fixing bugs and implementing small enhancement requests that fit in the Transition iteration schedule. However, and more than ever, enhancement request must be managed really carefully, as you are in the final delivery phase.

As for Construction phase iterations, Transition iterations are usually wide and shallow.