Introducción
El siguiente trabajo es un resumen de lo que son la reingeniería y sus etapas. Esto sirve porque es una parte importante en el ciclo de vida de un proyecto de software, sobre todo cuando el software ya tiene mucho tiempo de ser usado.Desarrollo
Reingeniería
Es el reconstruir un producto que ha funcionado bien, pero que con el tiempo presenta muchas fallas, creando un producto más funcional, con un mejor desempeño, fiabilidad y facilidad del mantenimiento.
La realizan a cabo especialistas en negocios, o en el caso del software, un ingeniero de software. Es necesaria porque conforme el mundo cambia, los negocios cambian, el software que soporta el negocio también debe cambiar.
Etapas
Reingeniería de procesos de negocios (RPN)
Se define como: "La búsqueda e implementación de un cambio radical en el proceso de negocios para lograr resultados de vanguardia".Un proceso de negocio es un conjunto de tareas lógicamente relacionada que se ejecutan para lograr un resultado de negocios específicos. Dentro del mismo la gente, el equipo, los recursos materiales y los procedimientos del negocio se combinan para llegar a un resultado específico.
Cada sistema de negocio está compuesto por uno o más procesos de negocio y cada uno tiene varios subprocesos.
La reingeniería de procesos de negocio es iterativa. Tiene definidas seis actividades:
1. Definición del negocio. Las metas del negocio se identifican desde cuatro controladores clave: reducción de costo, reducción de tiempos, mejora de calidad y desarrollo y fortalecimiento del negocio.
2. Identificación del proceso. Se identifican los procesos cruciales para lograr las metas precisadas en la definición del negocio.
3. Evaluación del proceso. El proceso existente se analiza y mide exhaustivamente.
4. Especificación y diseño del proceso. Se preparan casos de uso para cada proceso que será rediseñado.
5. Elaboración de prototipos. El proceso de negocio rediseñado debe convertirse en prototipo antes de integrarse al negocio.
6. Refinamiento y particularización. Con base en la retroalimentación del prototipo, el proceso de negocio se refina y luego se particulariza dentro del sistema de negocio.
En ocasiones, estas actividades se utilizan con las herramientas de flujo de trabajo. Estas herramientas permiten al analista modelar los procesos de negocio existene para evaluar las ineficiencias del flujo de trabajo.
Reingeniería del software
Ocurre cuando al software ya no sé le puede dar mantenimiento, debido a la falta de buenas prácticas de ingeniería del software.
La reingeniería requiere tiempo, cuesta cantidades significativas de dinero y abosrbe recursos que de otro modo se ocuparían en problemas inmediatos. Se necesita una estrategia pragmática para realizarla.
Las siguientes fases son un modelo ciclíco de un paradigma de la reingeniería:
1. Análisis de inventarios. Las organizaciones de software deberían tener un inventario de todas sus aplicaciones. Al ordenar esta información, aparecen los candidatos para reingeniería y se les pueden asignar recursos.
2. Reestructuración de documentos. La documentación débil caracteriza a muchos sistemas heredados. Existen varias opciones para atacar el problema:
I. Crear documentación consume muchísimo tiempo. Si el sistema funciona vivirá con lo que se tenga. No es posible recrer documentación pra cientos de programas de computadora.
II. La documentación debe actualizarse, pero se tienen recursos limitados. Se debe documentar aquellas porciones del sistema que en la actualidad experimentan cambios.
III. El sistema es crucial para el negocio y debe volver a documentarse por completo. Un enfoque inteligente es recortar la documentación a un mínimo esencial.
3. Ingeniería inversa
Es el proceso de analizar un programa con la finalidad de crear una representación del programa en un mayor grado de abstracción que el código fuente. Es un proceso de recuperación de diseño. Las herramientas de la ingeniería inversa obtienen información del diseño de datos, arquitéctonico y de procedimientos a partir de un programa existente.
4. Reestructuración
Modifica el código fuente o los datos con finalidad de adecuarlos para futuros cambios.
Reestructuración de código. Algunos sistemas heredados tienen una arquitectura de progrma que dificulta comprenderlos, probarlos y mantenenerlos, en tales casos se puede reestructurar el código dentro de los módulos sospechosos.
Reestructuración de datos. Inicia como una actividad de ingeniería inversa. La arquitectura de datos se analiza con minuciocidad y se definen los modelos de datos necesarios. Se identifican los objetos de datos y los atributos, y se revisa la calidad de las estructuras de datos existentes.
5. Ingeniería directa
Recupera la información del diseño a partir del software existente y la utiliza para alterar o reconstituir el sistema existente con la finalidad de mejorar su calidad global.
Se divide en ingeniería directa para arquitecturas cliente/servidor e ingeniería directa para arquitecturas orientadas a objetos.