domingo, 23 de febrero de 2014

Reingeniería de Software

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.

Descargar formato PDF



No hay comentarios:

Publicar un comentario