From a project management perspective, we need a way to assess progress to ensure that we are not wandering aimlessly from iteration to iteration but are actually converging on a product. From a management perspective, we must also define points in time to operate as gating functions based on clear criteria. These milestones provide points at which we can decide to proceed, abort, or change course. Finally, we must partition and organize the sequence of iterations according to specific short- term objectives. Progress will be measured in the number of use cases completed, features completed, test cases passed, performance requirements satisfied, and risks eliminated.
The iterative process is organized in phases, as shown in Figure 4-3. But unlike the steps in the waterfall approach, the phases here are not the traditional sequence of requirements analysis, design, coding, integration, and test. They are completely orthogonal to the traditional phases. Each phase is concluded by a major milestone. [2]
[2] The milestone definition and names are identical to the ones proposed by Barry Boehm in the article "Anchoring the Software Process," IEEE Software , July 1996, pp. 73 “82.
Let's look at the four phases in more detail.
Inception
The good idea ”specifying the end-product vision and its business case and defining the scope of the project. [3] The inception phase is concluded by the lifecycle objective (LCO) milestone.
[3] American Heritage Dictionary defines inception as "the beginning of something, such as an undertaking, a commencement."
Elaboration
Planning the necessary activities and required resources; specifying the features and designing the architecture. [4] The elaboration phase is concluded by the lifecycle architecture (LCA) milestone.
[4] American Heritage Dictionary defines elaboration as the process "to develop thoroughly, to express at greater length or greater detail."
Construction
Building the product and evolving the vision, the architecture, and the plans until the product ”the completed vision ”is ready for delivery to its user community. The construction phase is concluded by the initial operational capability (IOC) milestone.
Transition
Transitioning the product to its users, which includes manufacturing, delivering, training, supporting, and maintaining the product until users are satisfied. It is concluded by the product release milestone, which also concludes the cycle.
The four phases (I, E, C, and T) constitute a development cycle and produce a software generation. A software product is created in an initial development cycle. Unless the life of the product stops at this point, a product will evolve into its next generation by a repetition of the sequence of inception, elaboration, construction, and transition phases, but with different emphases on the various phases. We call these periods evolution cycles (see Figure 4-4).
As the product goes through several evolution cycles, new generations of the product are produced. Evolution cycles can be triggered by user-suggested enhancements, changes in the user's context, changes in the underlying technology, or reaction to the competition. In practice, cycles may overlap slightly: the inception and elaboration phase may begin during the final part of the transition phase of the previous cycle. We revisit this issue in Chapter 7.
Do not interpret the various figures to mean that the phases are of equal duration; their length varies greatly depending on the specific circumstances of the project. What is important is the goal of each phase and the milestone that concludes it. Figure 4-5 shows the time line of a typical project.
For example, a two-year project would have the following:
A 2 ½-month inception phase
A 7-month elaboration phase
A 12-month construction phase
A 2 ½-month transition phase
How does this time line relate to iterations? In each phase you progress iteratively, and each phase consists of one or several iterations. [5] The lifecycle is shown in Figure 4-6. [6]
[5] In rare cases, a phase may contain no real iteration.
[6] The number of iterations per phase in this diagram is for illustration only. We discuss the number of iterations in Chapter 7.