In contrast to the iterative lifecycle of the UP, an old alternative was the sequential, linear, or “waterfall” lifecycle [Royce70]. In common usage, it defined steps similar to the following:
1. | Clarify, record, and commit to a set of complete and frozen requirements. |
2. | Design a system based on these requirements. |
3. | Implement, based on the design. |
A two year study reported in the MIT Sloan Management Review of successful software projects identified four common factors for success; iterative development, rather than a waterfall process, was first on the list [MacCormack01].[5]
[5] The others were: 2) at least daily incorporation of new code into a complete system build, and rapid feedback on design changes (via testing); 3) a team experienced in shipping multiple products; and 4) an early focus on building and proving a cohesive architecture. Three of these four factors are explicit practices in the UP.
A brief description of its problems, and how they are mitigated by iterative development, is presented in Chapter 37.
18.222.107.64