Page 51 -
P. 51

34   Chapter 2   Software processes




                            Problems with incremental development

                     Although incremental development has many advantages, it is not problem-free. The primary cause of the
                     difficulty is the fact that large organizations have bureaucratic procedures that have evolved over time and there
                     may be a mismatch between these procedures and a more informal iterative or agile process.

                       Sometimes these procedures are there for good reasons—for example, there may be procedures to ensure
                     that the software properly implements external regulations (e.g., in the United States, the Sarbanes-Oxley
                     accounting regulations). Changing these procedures may not be possible so process conflicts may be
                     unavoidable.
                                     http://www.SoftwareEngineering-9.com/Web/IncrementalDev/




                                       Incremental development in some form is now the most common approach for the
                                    development of application systems. This approach can be either plan-driven, agile,
                                    or, more usually, a mixture of these approaches. In a plan-driven approach, the system
                                    increments are identified in advance; if an agile approach is adopted, the early incre-
                                    ments are identified but the development of later increments depends on progress and
                                    customer priorities.
                                       From a management perspective, the incremental approach has two problems:



                                    1.  The process is not visible. Managers need regular deliverables to measure
                                        progress. If systems are developed quickly, it is not cost-effective to produce
                                        documents that reflect every version of the system.
                                    2.  System structure tends to degrade as new increments are added. Unless time and
                                        money is spent on refactoring to improve the software, regular change tends to
                                        corrupt its structure. Incorporating further software changes becomes increas-
                                        ingly difficult and costly.


                                       The problems of incremental development become particularly acute for large,
                                    complex, long-lifetime systems, where different teams develop different parts of the
                                    system. Large systems need a stable framework or architecture and the responsibili-
                                    ties of the different teams working on parts of the system need to be clearly defined
                                    with respect to that architecture. This has to be planned in advance rather than devel-
                                    oped incrementally.
                                       You can develop a system incrementally and expose it to customers for comment,
                                    without  actually  delivering  it  and  deploying  it  in  the  customer’s  environment.
                                    Incremental delivery and deployment means that the software is used in real, opera-
                                    tional processes. This is not always possible as experimenting with new software can
                                    disrupt normal business processes. I discuss the advantages and disadvantages of incre-
                                    mental delivery in Section 2.3.2.
   46   47   48   49   50   51   52   53   54   55   56