Modifying a legacy system to adapt it to new business needs becomes increasingly difficult. Replacement is normally used with systems that are undocumented, outdated, or not extensible. In addition, IT resources are typically fully allocated performing maintenance tasks and may not be familiar with new technologies that can be utilized on the new system. Replacement requires extensive testing of the new system. Legacy systems are well tested and tuned, and encapsulate considerable business expertise.
Replacement is a broadly studied problem with plenty of supporting literature.
2.3 Modernization Modernization involves more extensive changes than maintenance, but conserves a significant portion of the existing system. These changes often include system restructuring, important functional enhancements, or new software attributes. Modernization is used when a legacy system requires more pervasive changes than those possible during maintenance, but it still has business value that must be preserved. Program understanding is the principal form of reverse engineering used in white-box modernization. Program understanding involves modeling the domain, extracting information from the code using appropriate extraction mechanisms, and creating abstractions that help in the understanding of the underlying system structure.