Reingeniería del software
Conceptos
1. Reingeniería: es un proceso capaz de modificar un software o alguno de sus componentes por medio de ciertas técnicas como la ingeniería inversa (comprensión del funcionamiento de un programa), reestructuración de código, restructuración de datos o ingeniería directa; esto con el fin de mejorar o agregar nuevas funcionalidades.
2. Técnica de ingeniería inversa:
La técnica de ingeniería inversa constituye la piedra angular del cracking.
Se basa en la descompilación, o compilación inversa, de un programa a un lenguaje de programación, generalmente, el más básico que existe que es el lenguaje ensamblador.
3. Herramientas de ingeniería directa:
Una herramienta UML no debe limitarse sólo a una representación pictórica de diagramas, sino que apoyar en forma directa y técnica la construcción de la aplicación en el lenguaje que se utiliza ( Java, C++, ASP, ASPX, PHP). La ingeniería directa, va moviéndose desde los requerimientos, hacia el diseño (modelamiento, procesos) para llegar a la implementación. Nuestra experiencia, frente a la carencia de una herramienta UML es este aspecto, nos llevó a desarrollar RobotDocIRS, con el cual intentamos automatizar la generación de código fuente en forma robusta y pertinente a los intereses de cada proyecto.
Importancia
La reingeniería de software tiene como principal función reestructurar o rediseñar aplicaciones de software viejo y funcional en operación dentro de las empresas, que con los avances de tecnologías tanto de hardware y software se vuelven obsoletas, para lo cual es necesaria su operación sobre nuevas plataformas.
Beneficios
- Pueden reducir los riegos evolutivos de una organización.
- Puede ayudar a las organizaciones a recuperar sus inversiones en software.
- Puede hacer el software más fácilmente modificable
- Amplía las capacidades de las herramientas CASE
- Es un catalizador para la automatización del mantenimiento del software
- Puede actuar como catalizador para la aplicación de técnicas de inteligencia artificial para resolver problemas de reingeniería
- Reducir la complejidad del sistema
- Generar diferentes alternativas
- Recuperar y/o actualizar la información perdida (cambios que no se documentaron en su momento
- Detectar efectos laterales
- Facilitar la reutilización
Actividades
- análisis de inventarios
- reestructuración de documentos
- ingeniería inversa
- reestructuración de programas y datos
- ingeniería directa
Pasos
Resumen
La reingeniería de software tiene como principal función reestructurar o rediseñar aplicaciones de software viejo y funcional en operación dentro de las empresas, que con los avances de tecnologías tanto de hardware y software se vuelven obsoletas, para lo cual es necesaria su operación sobre nuevas plataformas.
Existen diversos beneficios al aplicar esta; como, por ejemplo:
- Amplía las capacidades de las herramientas CASE
- Reducir la complejidad del sistema


