The waterfall model has also been criticized for its limited interaction with users at only the
requirements phase and at the delivery of the software. The implementers of the waterfall
model included the users and the customers in the design phase with techniques such as
joint application development (JAD) and in the testing phase.
The single most important contribution of the waterfall model is probably that it gave
software engineering a process upon which software development could focus its atten-
tion. As a result of this focus on process, the waterfall model, as well as software quality
problems in general, started to be resolved through the years.
4.2.2 Chief Programmer Team Approach
The chief programmer team approach is a type of coordination and management meth-
odology rather than a software process. The concept was a popular organizational idea
in the mid-1970s.
In his book, The Mythical Man Month (1975), Fred Brooks described a small-team
approach to coordinate the activities of software development. He attributed the
original proposal to Harlan Mills of IBM. The proposed approach mimics a surgical team
organization where there is a chief surgeon and other specialists to support the chief sur-
geon. Instead of a large number of people all working on smaller pieces of the problem,
there is a chief programmer who plans, divides, and assigns the work to the different
specialists. The chief programmer acts just like a chief surgeon in a surgical team and
directs all the work activities. The team size should be about 7 to 10 people, composed of
specialists such as designers, programmers, testers, documentation editors, and the chief
programmer. This approach made sense and is a precursor to dividing a large problem
into multiple components, then having the small chief-programming teams develop the
components.
4.2.3 Incremental Model
The incremental model may be viewed as a modification to the waterfall model. As
software projects increased in size, it was recognized that it is much easier, and some-
times necessary, to develop the software if the large projects are subdivided into smaller
components, which may thus be developed incrementally and iteratively. In the early
days, each component followed a waterfall process model, passing through each step
iteratively. In the incremental model, the components were developed in an overlap-
ping fashion, as shown in Figure 4.3. The components all had to be integrated and
then tested as a whole in a final system test. The incremental model provided a certain
amount of risk containment. If any one component ran into trouble, the other compo-
nents were able to still continue to be developed independently. Unless the problem
was a universal one, such as the underlying technology being faulty, one problem would
not hold up the entire development process.
Another perspective in utilizing the incremental model is to first develop the core
software that contains most of the required functionality. The first increment may be
delivered to users and customers as Release 1. Additional functionality and supplemental
features are then developed and delivered separately as they are completed, becoming
Release 2, Release 3, and so on. Utilizing the incremental model in this fashion provides
an approach that is more akin to an evolutionary software product development. When
4.2 Traditional Process Models
61
91998_CH04_Tsui.indd 61 1/10/13 6:24:45 AM