In his book “Model Driven Software Migration”, Christian Wagner talks about the aging software problem and what to do about it.
Software will age over time and may result in costly failures for organizations. Migrations happen if classical maintenance tracks start to fail.
First software life cycles are discussed:
- Waterfall
- Spiral
- Continuous and Agile
Next the different types of maintenance are discussed:
- Corrective maintenance
- Adaptive maintenance
- Perfecting maintenance
- Preventive maintenance
The important trigger for migration and refactoring is design drift. The original architecture will erode over the different maintenance cycles ultimately rendering maintenance useless. At this moment software reengineering will be required. This can take different forms:
- Retargeting
- Revamping
- Re-architecting
- Redesign
Going from the old to the new can happen in diverse ways:
- Rewrite: new technologies but new errors
- Wrapping: exiting knowledge but old architecture
- Migration: existing knowledge and newt architecture
Migration can use different approaches:
- Model to Model
- Model to Code
- Code to Model