Increasing costs of legacy system maintenance

Keeping legacy systems in use avoids the risks of replacement but making changes to existing software usually becomes more expensive as systems get older. Legacy software systems which are more than a few years old are particularly expensive to change for several reasons:

  1. Different parts of the system have been implemented by different teams. There is, therefore, no consistent programming style across the whole system.
  2. Part or all of the system may be implemented using an obsolete programming language. It may be difficult to find staff who have knowledge of these languages and expensive outsourcing of system maintenance may be required.
  3. System documentation is often inadequate and out-of-date. In some cases, the only documentation is the system source code. Sometimes the source code has been lost and only the executable version of the system is available.
  4. Many years of maintenance have usually corrupted the system structure making it increasingly difficult to understand. New programs may have been added and interfaced with other parts of the system in an ad hoc way.
  5. The system may have been optimised for space utilisation or execution speed rather than written for understandability. This causes particular difficulties for programmers who have learned modern software engineering techniques and who have not been exposed to the programming tricks that have been used.
  6. The data processed by the system may be maintained in different files which have incompatible structures. There may be data duplication and the data itself may be out of date, inaccurate and incomplete.

Legacy systems

(c) Ian Sommerville 2008