Application re-engineering approaches
| Approach | What changes | Best when |
| Reverse engineer & document | Nothing in production yet | The code is poorly documented, and you need to understand how the software system works before deciding how to modernize it. |
| Restructure | Internal code structure | The logic in your existing system is sound, but tightly coupled code makes every fix or new feature difficult. |
| Translate | Language and runtime | The technology is outdated or unsupported, but the existing architecture and functionality still meet your business needs. |
| Extend | New modules around a stable core | The current system works well, but you need new features or integrations. |
| Re-architect | System structure | The software architecture limits releases, integrations or scalability. |
| Rebuild | Everything, from recovered specs | The outdated system can’t evolve, and patching it costs more than starting over. |



