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