Restructure and optimise existing code without changing its external behaviour to remove technical debt and to improve the component’s features and structure.
Migrate an application component to a new runtime platform. Make minimal changes to code to adapt to the new platform, but don’t change the code structure or the features and functions it provides.
Re-build or re-write the application component from scratch while preserving its scope and specifications.
Materially alter the application code so you can shift it to a new application architecture and fully exploit new and better capabilities of the application platform.
Eliminate the former application component altogether and replace it, taking new requirements and needs into account.