Page 264 -
P. 264
9.3 Software maintenance 247
What parts of the system
will be the most expensive
What parts of the system are to maintain?
most likely to be affected by
change requests?
Predicting
Maintainability
What will be the lifetime
maintenance costs of this
Predicting System Predicting system?
Changes Maintenance
Costs
What will be the costs of
How many change maintaining this system
requests can be over the next year?
expected?
environment inevitably result in changes to the system. To evaluate the relationships
Figure 9.10
Maintenance prediction between a system and its environment, you should assess:
1. The number and complexity of system interfaces The larger the number of inter-
faces and the more complex these interfaces, the more likely it is that interface
changes will be required as new requirements are proposed.
2. The number of inherently volatile system requirements As I discussed in Chapter 4,
requirements that reflect organizational policies and procedures are likely to be
more volatile than requirements that are based on stable domain characteristics.
3. The business processes in which the system is used As business processes
evolve, they generate system change requests. The more business processes that
use a system, the more the demands for system change.
For many years, researchers have looked at the relationships between program com-
plexity, as measured by metrics such as cyclomatic complexity (McCabe, 1976), and
maintainability (Banker et al., 1993; Coleman et al., 1994; Kafura and Reddy, 1987;
Kozlov et al., 2008). It is not surprising that these studies have found that the more
complex a system or component, the more expensive it is to maintain. Complexity
measurements are particularly useful in identifying program components that are
likely to be expensive to maintain. Kafura and Reddy (1987) examined a number of
system components and found that maintenance effort tended to be focused on a small
number of complex components. To reduce maintenance costs, therefore, you should
try to replace complex system components with simpler alternatives.
After a system has been put into service, you may be able to use process data to
help predict maintainability. Examples of process metrics that can be used for
assessing maintainability are as follows: