Legacy Transformation, or Software Modernization, refers to the conversion, rewriting or porting of a legacy system to a modern computer programming language, software libraries, protocols, or a hardware platform. The legacy transformation aims to retain and extend the value of the legacy investment through migration to new platforms.
The time required for application modernization or re-engineering is a crucial factor to consider when existing legacy applications enjoy properties worth preserving. They are already deployed and have usually undergone significant scrutiny by their users. A long history of maintenance has resulted in a “stress-hardened” code and a wealth of test and validation capabilities. Nonfunctional properties such as performance and accuracy have been fine-tuned. Application history exists in the form of original designers, current and past maintainers, and (potentially) in bug reports and change order records.
However, the same history of maintenance that “stress-hardened” the applications, causes a problem: The system becomes ‘brittle” and increasingly resistant to change, hard to modify, and thus becomes a candidate for modernization projects.
Motivation or “need” for migration
There are a variety of reasons that dictate the need for migration of a legacy system:
Legacy languages are hard to support
The legacy languages and development tools needed to support the legacy system are increasingly difficult or expensive to obtain. This is a very common occurrence with 4th generation languages popular in the 1970s-1990s and significantly impacts the migration decision.
People are scarce
People that are proficient in legacy languages are becoming difficult to find and retain. Younger talent is reluctant to learn “legacy” languages because the efforts don’t appear to be relevant to the advancement of their long-term career.
The underlying platform is hard to support
Many legacy systems run on legacy hardware systems. Such hardware systems are becoming more expensive to maintain, and personnel that knows these systems are also more difficult to find.
Legacy software does not integrate well with other IT systems
The architecture of legacy languages often does not lend itself to building bridges to other IT systems that have grown up around it.
Additional challenges posed by legacy systems
The need to migrate mainframe software is often driven by ongoing challenges, including:
- The high cost of operating the mainframe
- The shrinking pool of IT personnel that understand the mainframe system languages and structure
- The need for faster application evolution in response to changing requirements by use of more modern software engineering methods
- The need to integrate the application and its data more effectively with the balance of the organization
Despite these challenges, most of the legacy software performs an extremely valuable function that must not be disturbed by a migration.
Common pitfalls in manual migration
Hand-migrating large applications by re-coding from scratch usually causes huge management overheads when the migration team attempts to re-validate the requirements with management. Hand-migrating by translating line for line introduces errors by damaging implicit business rules and suffers from scope creep. Also, there is a continuous war between the application maintenance staff, who must keep the application running during the migration process, and the migration staff, who do not want to see any change during the lengthy migration process. As a consequence, many manual migrations fail or run significantly over time and cost budgets. Offshore hand-migration suffers the same fate in addition to communication and coordination problems.
Strategies & planning
Many organizations face the problem of having to modernize their existing software systems by migrating to more capable systems. Modernizing legacy software systems is a complex engineering problem that includes most aspects of traditional software development with more constraints. A successful migration effort requires both a sound development plan and a sound migration plan.
A development plan addresses the selection of the appropriate software processes, methods, tools, and hardware and software platforms. A migration plan created in conjunction with the development plan is necessary to help ensure that the operational transition to the new system goes smoothly.
A good migration plan should weigh programmatic and technical drivers for system development against customer priorities. Because of this, the plan may impact system development and certainly should impact system deployment. Iteration among the key stakeholders is necessary for an effective migration effort. Like development, migration planning involves tradeoffs among cost, schedule, risk, and resources.
Legacy system modernization is often a large, multi-year project. Because these legacy systems are often critical in the operations of most enterprises, deploying the modernized system all at once introduces an unacceptable level of operational risk. As a result, legacy systems are typically modernized incrementally. Initially, the system consists completely of legacy code. As each increment is completed, the percentage of legacy code decreases. Eventually, the system is completely modernized. A migration strategy must ensure that the system remains fully functional during the modernization effort.
Making software modernization decisions is a process within an organizational context. “Real-world” decision making in business organizations often has to be made based on “bounded rationality”. Besides that, there exist multiple (and possibly conflicting) decision criteria, which is why the certainty, completeness, and availability of useful information (as a basis for the decision) is often limited.
Legacy systems are still alive because of their distinct characteristics and good pedigree. In the last 40 years, we have learned that it is quite economically and practically challenging to migrate legacy code worth trillions into other technologies that eventually were short-lived.
However, it is always possible to either eliminate or gradually integrate the legacy systems by following an effective migration strategy and appropriate migration tools. With the right strategy and a steady approach, legacy migration is not only feasible but advisable for an enterprise-wide transformation for better agility and resilience.