Many software developers are tasked with completely refactoring legacy code into new code bases using modern paradigms. An effective approach can be Model-Driven Engineering. With this approach, the old code is reverse engineered so that its functionality and hierarchy are fully understood. From this point of understanding, a clear model is formed. Then, as Rick Leinecker explains, the new model is forward engineered using current techniques so that the final product is worthy of contemporary standards.
Ain’t it lovely?