The strategic options for legacy system evolution are:
1. Abandon maintenance of the system and replace it with a new system.
2. Continue maintaining the system as it is.
3. Perform some re-engineering (system improvement) that makes the system easier to maintain and continue maintenance.
4. Encapsulate the existing functionality of the system in a wrapper and add new functionality by writing new code which calls on the existing system as a component.
5. Decompose the system into separate units and wrap them as components. This is similar to the solution above but gives more flexibility in how the system is used.
You would normally choose the replacement option in situations where the hardware platform for the system is being replaced, where the company wishes to standardize on some approach to development that is not consistent with the current system, where some major sub-system is being replaced (e.g. a database system) or where the technical quality of the existing system is low and there are no current tools for re-engineering.
Please leave a comment below if you found this answer helpful. Happy learning!