A layered model of a legacy system


An alternative way of looking at these components of a legacy system is as series of layers, as shown in Figure 1 below.

Figure 1. Legacy system layers

Each layer depends on the layer immediately below it and interfaces with that layer. If interfaces are maintained, then you should be able to make changes within a layer without affecting either of the adjacent layers. In practice, however, this simple encapsulation is an over-simplification, and changes to one layer of the system may require consequent changes to layers that are both above and below the changed level. The reasons for this are:

Changing one layer in the system may introduce new facilities and higher layers in the system may then be changed to take advantage of these facilities. For example, a new database introduced at the support software layer may include facilities to access the data through a web browser and business processes may be modified to take advantage of this facility.

Changing the software may slow the system down so that new hardware is needed to improve the system performance. The increase in performance from the new hardware may then mean that further software changes which were previously impractical become possible.

It is often impossible to maintain hardware interfaces, especially if a radical change to a new type of hardware is proposed. Major changes to the application software may therefore be required.

Legacy system components


(c) Ian Sommerville 2008