Approaches to software development
◄Previous: 1.3 Characteristics of a software system

# 1.4 Maintainability and other software problems

A software system should be both available, so that users can decide whether or not it still meets their needs, and flexible, so that the developer can change it to meet its users’ needs. Maintenance is the key activity for the coordination and control of changes to a software system. In order to be maintainable, a software system should be written and documented in such a way that changes can readily be made. This means that we must take into account the process used to develop a software system. What the developer does during development affects the ease with which it can be maintained. If a change is easy to make, the cost of that change (labour) can be minimised so that the software system continues to be affordable. The maintainability of software is greatly influenced by how software is designed, written and documented.

Problems of maintenance also apply to software that is purchased as an off-the-shelf package, or software that is offered as a service by another provider.

## Example 5

For anything you buy and use, there are costs associated with its purchase and with the maintenance required for its continued operation. For example, there are costs associated with buying a car and with its continued operation. As the vehicle ages, the costs of maintenance rise, and there comes a point when you have to decide whether it would be preferable to buy a new car or continue with the existing one. Perhaps surprisingly, there are similarities between the maintenance of vehicles and the maintenance of software.

◄Contents►Next: Legacy systems

OpenLearn - Approaches to software development
Except for third party materials and otherwise, this content is made available under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 Licence, full copyright detail can be found in the acknowledgements section. Please see full copyright statement for details.