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.
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.