Legacy Software Modernization
Legacy software is software a business depends on that has become hard to change, scale, or operate. Modernization moves that software onto a technology that fits, usually by replacing it piece by piece, the way a strangler fig gradually takes over a tree, rather than with one risky rewrite.
itSoftware engineering | OpenSkills.info
Course pathWalk it in order
Look it upDip in anytime
Go furtherLeaves this page
Don't Panic
Don't Panic: Legacy Software Modernization
Legacy software is not software that has had a long and distinguished career collecting dust. It is software the business depends on that has become hard to change. Age often attends the party, but it is not the bouncer. The real problem begins when the technology decides which business changes are possible.
The tempting answer is a grand replacement: build a shiny new copy, then switch everything over in one heroic weekend. This has the minor drawback that the old system keeps changing while the copy is being built, and much of its behavior is undocumented, accidental, or both. A big-bang replacement therefore turns an existing problem into a multi-year guessing competition.
The useful alternative is the strangler fig. Put new behavior around the edges of the old system and move one piece at a time. A facade can route a request to the old application or the new service. For asynchronous work, an event router can do the same job. Both are temporary scaffolding, which is engineering language for something valuable that must not become a permanent resident.
The surprising part is that code is not the whole animal. Modernization has four linked jobs: decide the business outcome, split the work into parts, deliver those parts, and change the organization that produced the old system. A perfect new service built by the same blocked teams and processes can become a newer version of the same complaint.
Data is where the cheerful diagrams start charging rent. During database strangling, the old and new stores must stay consistent while behavior moves. Extract, transform, and load starts the move. Change data capture carries later changes. Validation happens before the new database becomes the system of record, because rollback is much friendlier before the old data objects disappear.
Choose the strategy before the machinery. Some workloads should be retained. Some should be retired, rehosted, replatformed, or replaced with a product. Refactoring is for changing the architecture itself, and the strangler fig is one way to deliver that work gradually. It is not a ceremonial requirement to turn every old system into several newer systems.
Read the Intro for the full map of seams, routing, data, and organizational change. Use the Slides when you need the sequence at a glance. Keep the Cheatsheet nearby when the seven R's, transitional architecture, and cutover conditions start looking suspiciously alike. The quiz is where the vocabulary has to earn its keep.
Where this skill leads
Relevant careers
See how this topic contributes to broader role-level skill maps.
Sources
- https://dl.acm.org/doi/10.5555/208444
Supports
- Legacy information system definition (resists modification and evolution for new requirements)
- Chicken-little and butterfly incremental migration methodologies and the gateway architecture
- https://martinfowler.com/bliki/StranglerFigApplication.html
Supports
- Strangler fig metaphor and 2001 Queensland observation
- Building the new system around the legacy one and moving behavior across piece by piece
- Seams, transitional architecture, facade, and event interception
- https://martinfowler.com/bliki/OriginalStranglerFigApplication.html
Supports
- Original 29 June 2004 strangler fig application post
- Low-risk incremental replacement rationale
- https://martinfowler.com/articles/patterns-legacy-displacement/
Supports
- Four displacement activities (understand outcomes, break apart, deliver parts, change organization)
- Technology as at most half the problem and the legacy replacement treadmill
- Seams definition and transitional architecture reasoning
- https://martinfowler.com/bliki/ConwaysLaw.html
Supports
- Organizational change as one of the four required activities
- Inverse Conway maneuver
- https://learn.microsoft.com/en-us/azure/architecture/patterns/strangler-fig
Supports
- Facade routing, incremental traffic shift, and when the pattern does not fit
- Database strangling phases with ETL, change data capture, and validation before cutover
- Rollback via keeping legacy data objects until the new database is validated as system of record
- https://docs.aws.amazon.com/prescriptive-guidance/latest/large-migration-guide/migration-strategies.html
Supports
- 7 R's definitions (retire, retain, rehost, relocate, repurchase, replatform, refactor)
- Refactor not recommended for large migrations; modernize after moving
- https://aws.amazon.com/blogs/enterprise-strategy/new-possibilities-seven-strategies-to-accelerate-your-application-migration-to-aws/
Supports
- 6 R's to 7 R's evolution and the relocate addition
- AWS Mainframe Modernization and Refactor Spaces launch context
- https://www.omg.org/adm
Supports
- OMG Architecture-Driven Modernization standardization effort and KDM
- https://en.wikipedia.org/wiki/Architecture-driven_modernization
Supports
- June 2003 ADM Task Force formation and November 2003 KDM RFP
- KDM 1.0 in 2007
- https://azure.microsoft.com/en-us/blog/confidently-plan-your-cloud-migration-azure-migrate-is-now-generally-available/
Supports
- Azure Migrate general availability on 28 February 2018
- Assessment, discovery, and strategy planning in a managed migration hub
- https://www.businesswire.com/news/home/20211130005966/en/AWS-Announces-AWS-Mainframe-Modernization
Supports
- AWS Mainframe Modernization announcement on 30 November 2021
- Replatforming and automated COBOL/PL-I to Java refactoring
- https://www.ibm.com/products/watsonx-code-assistant-z
Supports
- IBM watsonx Code Assistant for Z general availability on 26 October 2023
- COBOL and PL/I to Java conversion and generated unit tests
- https://aws.amazon.com/mainframe-modernization/
Supports
- AWS Mainframe Modernization product placement and capabilities in Landscape
- https://aws.amazon.com/transform/
Supports
- AWS Transform for mainframe agentic AI modernization in Landscape
- https://azure.microsoft.com/en-us/products/azure-migrate/
Supports
- Azure Migrate discovery, dependency mapping, and 6R assessment model in Landscape
- https://www.rocketsoftware.com/lets-modernize
Supports
- Rocket Software modernization portfolio and COBOL Enterprise Suite in Landscape
- https://www.businesswire.com/news/home/20240430605619/en/Rocket-Software-Closes-%242.275B-Acquisition-of-OpenTexts-Application-Modernization-and-Connectivity-Business
Supports
- Rocket Software acquisition of the OpenText AMC business closed 1 May 2024
- https://www.openlegacy.com/
Supports
- OpenLegacy AI-driven legacy API integration placement in Landscape
- https://www.castsoftware.com/
Supports
- CAST Imaging and CAST Highlight placement in Landscape
- https://www.delphix.com/
Supports
- Perforce Delphix intelligent data automation placement in Landscape
- https://github.com/feststelltaste/awesome-legacy-systems
Supports
- Curated discovery of aim42, legacy-modernization.io, and legacycode.rocks for Awesome Links
- https://martinfowler.com/articles/legacy-modernization-gen-ai.html
Supports
- GenAI-assisted legacy code understanding for Awesome Links
- https://legacy-modernization.io/
Supports
- Strangler fig, bubble, and bi-directional sync patterns for Awesome Links
- https://aim42.org/
Supports
- aim42 open-source improvement method for Awesome Links
- https://legacycode.rocks/
Supports
- Legacy Code Rocks podcast for Awesome Links
- https://github.com/feststelltaste/awesome-software-analytics
Supports
- Related awesome list for discovery tooling in Awesome Links
- https://github.com/modernizing/awesome-modernization
Supports
- Related awesome list for modernization tooling in Awesome Links
- https://martinfowler.com/articles/strangler-fig-mobile-apps.html
Supports
- Practitioner case study of incremental legacy modernization, including contract-test ownership, reversible experiments, time to first value, and cycle-time measurement
- Field Notes claims about boundary ownership and signals for a migration slice
- https://legacy-modernization.io/patterns/migration/strangler-fig/
Supports
- Practitioner guidance on incomplete migration, routing complexity, and translation logic accumulating in the router
- Field Notes claim about keeping facade routing narrow and domain logic out of infrastructure
