Page 261 -
P. 261

244   Chapter 9   Software evolution






                                                           Fault Repair
                                                             (17%)


                                                                         Functionality
                                                      Environmental      Addition or
                                                       Adaptation
                                                         (18%)           Modification
                                                                           (65%)



                  Figure 9.8
                  Maintenance effort
                  distribution

                                    For embedded real-time systems, maintenance costs were up to four times more than
                                    development costs. The high reliability and performance requirements of these sys-
                                    tems mean that modules have to be tightly linked and hence difficult to change.
                                    Although these estimates are more than 25 years old, it is unlikely that the cost dis-
                                    tributions for different types of system have significantly changed.
                                      It is usually cost effective to invest effort in designing and implementing a system to
                                    reduce the costs of future changes. Adding new functionality after delivery is expensive
                                    because you have to spend time learning the system and analyzing the impact of the pro-
                                    posed changes. Therefore, work done during development to make the software easier
                                    to understand and change is likely to reduce evolution costs. Good software engineering
                                    techniques, such as precise specification, the use of object-oriented development, and
                                    configuration management, contribute to maintenance cost reduction.
                                      Figure 9.9 shows how overall lifetime costs may decrease as more effort is
                                    expended during system development to produce a maintainable system. Because of
                                    the potential reduction in costs of understanding, analysis, and testing, there is a sig-
                                    nificant multiplier effect when the system is developed for maintainability. For
                                    System 1, extra development costs of $25,000 are invested in making the system
                                    more maintainable. This results in a savings of $100,000 in maintenance costs over






                                         System 1

                                         System 2


                                                                                                  $
                  Figure 9.9                    0   50  100  150  200  250  300  350  400  450  500
                  Development and
                  maintenance costs         Development Costs    Maintenance Costs
   256   257   258   259   260   261   262   263   264   265   266