![]() | MSc-IT Study Material January 2011 Edition Computer Science Department, University of Cape Town | MIT Notes Home | Edition Home | |
While a lot of software that is in use is fairly current, state of the art software, companies often rely on software that has been in use for years, or even decades. This older software is called legacy software.
Legacy software is often, by today's standards, of poor quality: inextensible, convoluted, badly documented, and written in languages which are generally no longer used.
Worse, legacy software have often been continuously changed over decades to meet ever changing business and system requirements, contributing to the software's degradation.
Unfortunately, such legacy software is long lived precisely because it supports critical business systems. This makes it important that legacy systems be reengineered to remain usable in the future. One can think of this as a slow evolution of the legacy software. This evolution, these changes, are often done for one of the following reasons:
The business is making use of a new computing environment or technology, and the software must be updated to support this.
The software must meet new business requirements.
As newer information systems, databases, and so on, become available, the software must be updated to be interoperable with them.
Software must be modified to operate in a networked environment.
Changes to software are inevitable and are not unique to legacy systems. Software engineering must take this into account. This process of change is often referred to as software maintenance.