Page 47 -
P. 47
30 Chapter 2 Software processes
Requirements
Definition
System and
Software Design
Implementation
and Unit Testing
Integration and
System Testing
Operation and
Figure 2.1 The Maintenance
waterfall model
2. Incremental development This approach interleaves the activities of specifica-
tion, development, and validation. The system is developed as a series of versions
(increments), with each version adding functionality to the previous version.
3. Reuse-oriented software engineering This approach is based on the existence of
a significant number of reusable components. The system development process
focuses on integrating these components into a system rather than developing
them from scratch.
These models are not mutually exclusive and are often used together, especially
for large systems development. For large systems, it makes sense to combine some
of the best features of the waterfall and the incremental development models. You
need to have information about the essential system requirements to design a soft-
ware architecture to support these requirements. You cannot develop this incremen-
tally. Sub-systems within a larger system may be developed using different
approaches. Parts of the system that are well understood can be specified and devel-
oped using a waterfall-based process. Parts of the system which are difficult to
specify in advance, such as the user interface, should always be developed using an
incremental approach.
2.1.1 The waterfall model
The first published model of the software development process was derived from
more general system engineering processes (Royce, 1970). This model is illustrated
in Figure 2.1. Because of the cascade from one phase to another, this model is known
as the ‘waterfall model’ or software life cycle. The waterfall model is an example of
a plan-driven process—in principle, you must plan and schedule all of the process
activities before starting work on them.