Vista previa del material en texto
1er semestre Ing. informática 2017 Ingeniería inversa y reingeniería de software: Transformando y comprendiendo aplicaciones existentes Resumen: La ingeniería inversa y reingeniería de software son procesos utilizados para analizar, transformar y comprender aplicaciones existentes. La ingeniería inversa se enfoca en descomponer y comprender un sistema de software existente sin tener acceso a su documentación original o su diseño inicial. Por otro lado, la reingeniería de software implica la transformación y mejora de un sistema de software existente para actualizarlo, mejorar su rendimiento, escalabilidad o agregar nuevas funcionalidades. Ejemplo de uso en la vida real: Imaginemos que una empresa hereda un sistema de software crítico para su operación diaria, pero carece de documentación y comprensión completa del sistema. Para resolver este problema, utilizan ingeniería inversa para analizar el código fuente y comprender cómo está estructurado y funciona el sistema. El primer paso es utilizar herramientas de ingeniería inversa que analizan el código y generan diagramas de clases, diagramas de flujo de control y otras representaciones visuales del sistema. Estas representaciones permiten a los ingenieros de software entender la estructura del sistema, las interacciones entre los diferentes componentes y las dependencias existentes. Una vez que se obtiene una comprensión sólida del sistema, se puede pasar a la fase de reingeniería. En este punto, el equipo de desarrollo puede realizar mejoras y modificaciones en el sistema existente para cumplir con los requisitos actuales de la empresa. Por ejemplo, se pueden identificar partes del código que son obsoletas o ineficientes y reescribirlas utilizando mejores prácticas de programación. También se pueden agregar nuevas funcionalidades que el sistema original no tenía, como integración con nuevas tecnologías o capacidades de análisis de datos. 1er semestre Ing. informática 2017 La reingeniería de software también puede implicar la migración del sistema a una nueva plataforma o arquitectura, aprovechando las ventajas de tecnologías más modernas y eficientes. Por ejemplo, se podría migrar un sistema monolítico a una arquitectura basada en microservicios para mejorar la escalabilidad y la flexibilidad.