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. After the code is analyzed and understood, white-box modernization often includes some system or code restructuring. This transformation is typically used to augment some quality attribute of the system like maintainability or performance. Although acquiring an understanding of a system interface is not an easy task, it does not reach the degree of difficulty associated with white-box modernization. Black-box modernization is often based on wrapping.