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.
   42   43   44   45   46   47   48   49   50   51   52