Page 258 -
P. 258

9.2   Program evolution dynamics  241



                        Law                        Description
                        Continuing change          A program that is used in a real-world environment must necessarily
                                                   change, or else become progressively less useful in that environment.

                        Increasing complexity      As an evolving program changes, its structure tends to become more
                                                   complex. Extra resources must be devoted to preserving and simplifying
                                                   the structure.
                        Large program evolution    Program evolution is a self-regulating process. System attributes such
                                                   as size, time between releases, and the number of reported errors is
                                                   approximately invariant for each system release.

                        Organizational stability   Over a program’s lifetime, its rate of development is approximately constant
                                                   and independent of the resources devoted to system development.
                        Conservation of familiarity  Over the lifetime of a system, the incremental change in each release is
                                                   approximately constant.
                        Continuing growth          The functionality offered by systems has to continually increase to
                                                   maintain user satisfaction.

                        Declining quality          The quality of systems will decline unless they are modified to reflect
                                                   changes in their operational environment.

                        Feedback system            Evolution processes incorporate multiagent, multiloop feedback systems
                                                   and you have to treat them as feedback systems to achieve significant
                                                   product improvement.


                                         The third law is, perhaps, the most interesting and the most contentious of
                     Figure 9.7  Lehman’s
                     laws              Lehman’s laws. It suggests that large systems have a dynamic of their own that is
                                       established at an early stage in the development process. This determines the gross
                                       trends of the system maintenance process and limits the number of possible system
                                       changes. Lehman and Belady suggest that this law is a consequence of structural fac-
                                       tors that influence and constrain system change, and organizational factors that
                                       affect the evolution process.
                                         The structural factors that affect the third law come from the complexity of large
                                       systems. As you change and extend a program, its structure tends to degrade. This is
                                       true of all types of system (not just software) and it occurs because you are adapting
                                       a structure intended for one purpose for a different purpose. This degradation, if
                                       unchecked, makes it more and more difficult to make further changes to the pro-
                                       gram. Making small changes reduces the extent of structural degradation and so
                                       lessens the risks of causing serious system dependability problems. If you try and
                                       make large changes, there is a high probability that these will introduce new faults.
                                       These then inhibit further program changes.
                                         The organizational factors that affect the third law reflect the fact that large sys-
                                       tems are usually produced by large organizations. These companies have internal
                                       bureaucracies that set the change budget for each system and control the decision-
                                       making process. Companies have to make decisions on the risks and value of the
   253   254   255   256   257   258   259   260   261   262   263