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