Introducción
El proceso de evolución
de los sistemas implica comprender el programa que tiene que cambiarse, y a continuación
implementar estos cambios. Sin embargo, muchos sistemas, especialmente los
sistemas heredados más antiguos son difíciles de comprender y de cambiar. Los programas
pueden haber sido optimizados originalmente para su rendimiento o utilización
de la memoria a expensas de su comprensibilidad o, a lo largo del tiempo, la
estructura inicial del programa puede haberse corrompido por una serie de
cambios.
Reingeniería de Software
Para simplificar los problemas de cambiar sus
sistemas heredados, una compañía puede decidir hacer reingeniería sobre estos
sistemas para mejorar su estructura y comprensibilidad. La reingeniería de
software se refiere a la reimplementación de los sistemas heredados para hacerlos
más mantenibles. La reingeniería puede implicar redocumentar el sistema,
organizar y reestructurar el sistema, traducir el sistema a un lenguaje de programación
más moderno, y modificar y actualizar su estructura y vales de los datos del sistema.
La funcionalidad del software no se cambia y, normalmente, a arquitectura del
sistema también sigue siendo la misma. (Sommerville,
2005)
El proceso de
reingeniería es muy elaborado y trae problemas como un alto grado de riesgo puesto
que se pueden producir errores en la especificación, o puede haber errores en
el desarrollo. Además en cuanto a costes este proceso de la ingeniería de
software es significativamente el más caro, sin embargo, sigue siendo
relativamente menor que el coste de desarrollar un nuevo software.
En la reingeniería de
software se pueden distinguir las siguientes seis etapas, que pueden seguir o
no una secuencia lineal, pero siempre se desarrollarán cíclicamente: (Pressman, 2002)
- Análisis de inventarios.
- Reestructuración de documentos.
- Ingeniería inversa.
- Reestructuración del código.
- Reestructuración de los datos.
- Ingeniería avanzada.
Análisis de inventarios:
Se analizan los
inventarios que poseen las empresas o el usuario sobre las características de
la aplicación. En ocasiones son simples hojas de cálculo con descripciones
detalladas (tamaño, edad,
importancia para el negocio) de las aplicaciones activas. Así se sabrá a que recursos se aplicará la reingeniería.
Reestructuración de documentos:
Normalmente en los
sistemas heredados, la documentación es muy débil; por lo que es necesario
evaluar que documentación debe actualizarse. En ocasiones se debe volver a
documentarse por completo pero lo adecuado es recortar la creación de
documentos al mínimo ya que ocupa muchos recursos y tiempo.
Ingeniería inversa:
Durante esta etapa
se plantea la posibilidad de recuperar el diseño de la aplicación. Con diversas
herramientas y conocimientos se extrae del programa existente información de la
arquitectura y de los procesos así como información de los datos.
Reestructuración de código:
Se analiza el
código fuente y se indican las violaciones de las estructuras de programación
estructurada como lo son los estándares, entonces se reestructura el código.
Reestructuración de los datos:
Se definen los
modelos de datos necesarios, se identifican los objetivos y los atributos, y después
se revisa la calidad de las estructuras existentes. Cuando son débiles, se debe
aplicar una reingeniería a los datos.
Ingeniería avanzada:
La ingeniería
directa no solo recupera la información de diseño a partir del software
existente, también utiliza esta información para alterar o reconstruir el
sistema existente con la finalidad de mejorar su calidad global. En la mayoría
de los casos el software sometido a reingeniería vuelve a implementar la
función del sistema existente y también añade nuevas funciones o mejoras.
Conclusión
Las empresas al utilizar software durante
varios años, es inevitable que se deban realizar cambios y mejoras o hasta
crear un nuevo sistema totalmente innovado. Son ellas que dependiendo de un análisis
decidirán que opción se adapta mejor a sus necesidades y es que es sin duda
alguna que aplicar algo de mantenimiento siempre será menos costoso que
adquirir una aplicación nueva.
En reingeniería sus costos son elevados, debido
a que deben realizarlos profesionales muy bien capacitados y con una gran
habilidad de extracción de datos y muy buena lógica, sin embargo, sigue siendo una
opción muy recomendable para sacar adelante el proceso de negocios de una
empresa.
Trabajos citados
Pressman, R. S. (2002). Ingeniería de Software: Un
enfoque práctico. Madrid: McGRAW-HILL.
Sommerville, I. (2005). Ingeniería del
Software. Madrid: Pearson Eduacion.