Page 50 -
P. 50

2.1   Software process models  33


                                                                 Concurrent
                                                                  Activities

                                                                                           Initial
                                                                 Specification
                                                                                           Version


                                               Outline                                  Intermediate
                                              Description       Development               Versions



                                                                                            Final
                                                                  Validation
                     Figure 2.2 Incremental                                                Version
                     development


                                       validation activities are interleaved rather than separate, with rapid feedback across
                                       activities.
                                         Incremental  software  development,  which  is  a  fundamental  part  of  agile
                                       approaches, is better than a waterfall approach for most business, e-commerce, and
                                       personal systems. Incremental development reflects the way that we solve prob-
                                       lems. We rarely work out a complete problem solution in advance but move toward
                                       a solution in a series of steps, backtracking when we realize that we have made a
                                       mistake. By developing the software incrementally, it is cheaper and easier to make
                                       changes in the software as it is being developed.
                                         Each increment or version of the system incorporates some of the functionality
                                       that is needed by the customer. Generally, the early increments of the system include
                                       the most important or most urgently required functionality. This means that the
                                       customer can evaluate the system at a relatively early stage in the development to see
                                       if it delivers what is required. If not, then only the current increment has to be
                                       changed and, possibly, new functionality defined for later increments.
                                         Incremental development has three important benefits, compared to the waterfall
                                       model:

                                       1.  The cost of accommodating changing customer requirements is reduced. The
                                          amount of analysis and documentation that has to be redone is much less than is
                                          required with the waterfall model.
                                       2.  It is easier to get customer feedback on the development work that has been
                                          done. Customers can comment on demonstrations of the software and see how
                                          much has been implemented. Customers find it difficult to judge progress from
                                          software design documents.
                                       3.  More rapid delivery and deployment of useful software to the customer is possi-
                                          ble, even if all of the functionality has not been included. Customers are able to
                                          use and gain value from the software earlier than is possible with a waterfall
                                          process.
   45   46   47   48   49   50   51   52   53   54   55