La reingeniería de software es un proceso de desarrollo de software que se realiza para mejorar la mantenibilidad de un sistema de software. La reingeniería es el examen y alteración de un sistema para reconstituirlo en una nueva forma. Este proceso abarca una combinación de subprocesos como ingeniería inversa, ingeniería avanzada, reconstrucción, etc.
La reingeniería es la reorganización y modificación de los sistemas de software existentes para hacerlos más mantenibles.
Objetivos de la Reingeniería:
- Describir una opción rentable para la evolución del sistema.
- Describir las actividades involucradas en el proceso de mantenimiento del software.
- Distinguir entre reingeniería de software y de datos y explicar los problemas de la reingeniería de datos.
Pasos involucrados en la Reingeniería:
- Análisis de inventario
- Reconstrucción de documentos
- Ingeniería inversa
- Reconstrucción de código
- Reconstrucción de datos
- Ingeniería avanzada
Representación esquemática:
Factores de costo de reingeniería:
- La calidad del software a rediseñar
- El soporte de herramientas disponible para la reingeniería
- El alcance de la conversión de datos requerida
- La disponibilidad de personal experto para la reingeniería
Ventajas de la Reingeniería:
- Riesgo reducido: como el software ya existe, el riesgo es menor en comparación con el desarrollo de software nuevo. Problemas de desarrollo, problemas de personal y problemas de especificación son muchos de los problemas que pueden surgir en el desarrollo de software nuevo.
- Costo reducido: el costo de la reingeniería es menor que los costos de desarrollo de software nuevo.
- Revelación de reglas comerciales: a medida que se rediseña un sistema, se redescubren las reglas comerciales que están integradas en el sistema.
- Mejor uso del personal existente: la experiencia del personal existente se puede mantener y ampliar para adaptarse a nuevas habilidades durante la reingeniería.
Desventajas de la reingeniería:
- Límites prácticos al alcance de la reingeniería.
- Los cambios importantes en la arquitectura o la reorganización radical de la gestión de datos de los sistemas deben realizarse manualmente.
- Es poco probable que el sistema rediseñado sea tan fácil de mantener como un sistema nuevo desarrollado con métodos modernos de reingeniería de software.