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.
|