Cuando una aplicación lleva siendo usada años, es fácil que esta aplicación se vuelva inestable como fruto de las múltiples correcciones, adaptaciones o mejoras que han podido surgir a lo largo del tiempo. Esto deriva en que cada vez que se pretende realizar un cambio se producen efectos colaterales inesperados y hasta de gravedad, por lo que se hace necesario, si se prevé que la aplicación seguirá siendo de utilidad, aplicar reingeniería a la misma.
Se entiende por reingeniería la modificación de un producto software, o de ciertos componentes, usando para el análisis del sistema existente técnicas de ingeniería inversa y, para la etapa de reconstrucción, herramientas de ingeniería directa. Entre los beneficios de aplicar reingeniería a un producto existente se puede incluir:
- Facilita la matenibilidad del software.
- Adaptación a nuevos estándares, tecnologías, etc.
- Posible alternativa más económica frente a un nuevo desarrollo del sistema (análisis coste/beneficio).




