Software lifecycle models identify the key activities in the development of a software system and their relationships to one another. This is distinct from development methodologies, which prescribe detailed approaches for each of the key activities. For example, a lifecycle model may state that there is an activity called "design" which follows another called "requirements analysis"; a methodology will specify how the activity of design is supposed to be carried out.
The most primitive lifecycle model is often referred to as Code-Fix. This is the approach adopted by most students for solving assigned programming problems (raise your hand if guilty). The code-fix approach consists of:
Or, put more simply: Code, Fix, repeat. This approach is generally effective enough for small problems where the solution is "obvious". It fails spectacularly for any software system large enough to be interesting in the "real world".
The Waterfall Model was originally developed in the early 1970s in an attempt to provide some structure to large-scale software development. It was refined over the next decade until it reached the form presented here. The Waterfall approach is still used successfully in many large software development projects and has been institutionalized in several software development standards (some of which we will see later in the course). The Waterfall Model is illustrated in figure 1. As can be seen, the model consists of eight primary activities, executed in a sequential order. The activities are:
Each of these activities is deemed complete once a verification or validation activity is completed. These ensure that the product of each activity satisfies its goals. Validation activities ensure that the product will meet its intended mission ("doing the right thing") while verification activities ensure that the product meets a previously developed specification ("doing the thing right"). A key issue here is requirements traceability which refers to the tracking of identified requirements through to their ultimate satisfaction.
The products of each activity are normally maintained via a configuration management system, the goal of which is to provide a definitive version of any of the products at any time. Such a definitive version is called a baseline; each is established at a milestone (typically the completion of an activity). The milestone baseline process typically works as:
Advantages of baselining:
The economic rationale for the Waterfall Model rests on two premises:
Premise 1 appears to hold, at least for large systems. The rationale for Premise 2 is presented in figure 2. In short, it is generally much more expensive to repair an error in the activities normally found later in the cycle. This is particularly true for large products where the variance can be a factor of 100. Thus, it makes sense to eliminate the errors as rigorously as possible in the earlier activities.
One refinement of the Waterfall Model is incremental development, illustrated at figure 3. In this approach, part of the Product Design stage is the identification of suitable product increments which can be developed one at a time. Typically these represent useful subsets of the total product functionality. For example, increment 1 might include all of the "must have" features, increment 2 all of the "should have" features, and increment 3 all of the "nice to have" features. At the end of each increment we have a functioning software system, deliverable to the user, satisfying some subset of the total requirement.
This approach is valuable because:
One other nice feature of the approach is that it tends to flatten the required staffing curve. A comparison of the staffing curve for a strict Waterfall project with that of an incremental Waterfall project is found at figure 4.
Another refinement of the Waterfall Model is to begin work on "future" activities before the "current" activity is complete. The aim of this is to prepare the way for the beginning of the main effort on the "future" activity. This can include:
Chapter 4 of Boehm, Barry W. Software Engineering Economics. Prentice-Hall, 1981
© Greg Phillips, 1998