1. INTROCUCIONINTROCUCION
¿Qué es? Es el proceso de reconstrucción del
software, crear un producto con una mejor
funcionalidad, mejor desempeño y fiabilidad, así
como una mejor facilidad de mantenimiento.
¿Quién la hace? En el ámbito de las
organizaciones, la reingeniería la llevan a cabo
especialistas en negocios. En nuestro ámbito lo
realizan los ingenieros de software.
2. INTROCUCIONINTROCUCION
¿Por qué es importante? Por que nos permite
mantenernos en el ritmo de las exigencias de las
nuevas tecnologías, por tal motivo el software
tendrá que rediseñarse para estar en ritmo.
¿Cuáles son los pasos? El proceso de reingeniería
de software incluye análisis de inventarios,
reestructuración de documentos, ingeniería
inversa, reestructuración de programas y datos, e
ingeniería avanzada.
3. INTROCUCIONINTROCUCION
¿Cuál es el producto obtenido? Se produce una
diversidad de productos de trabajo de reingeniería.
Ejemplo: Modelos de análisis, modelos de diseño,
procedimientos de prueba, entre otros.
¿Cómo puedo estar seguro de que lo he hecho
correctamente? Utilizando las mismas prácticas de
SQA que se aplican a cualquier proceso de ingeniería
del software: las revisiones técnicas formales evalúan
los modelos de análisis y de diseño; las revisiones
especializadas consideran la aplicabilidad y la
compatibilidad en el negocio; y las pruebas se aplican
para descubrir errores en contenido, funcionalidad e
interoperabilidad.
4. REINGENIERIA
DE SOFTWAREDE SOFTWARE
La reingeniería de software involucra diferentes
actividades como lo son: análisis de inventarios,
reestructuración de documentos, ingeniería
inversa, reestructuración de programas y datos, e
ingeniería directa; con la finalidad de crear
versiones de programas ya existentes que sean de
mejor calidad y los mismos tengan una mayor
facilidad de mantenimiento.
7. • Todas las organizaciones de software deberían tener un
inventario de todas sus aplicaciones.
• El inventario tal vez no sea más que un modelo en una hoja
de cálculo que contenga información que proporcione una
descripción detallada (tamaño, edad, importancia para el
negocio) de las aplicaciones activas.
• Los candidatos a la reingeniería aparecen cuando se ordena
esta información en función de su importancia para el
negocio, longevidad, mantenibilidad actual y otros criterios
localmente importantes.
• Es entonces cuando es posible asignar recursos a las
aplicaciones candidatas para el trabajo de reingeniería.
• Es importante señalar que el inventario deberá visitarse con
regularidad, el estado de las aplicaciones puede cambiar en
función del tiempo, como resultado, cambiarán las
prioridades para la reingeniería.
10. • Pero que se hace acerca de ellos?
• Cuáles son las opciones?
11. • Crear documentación consume mucho tiempo, si el
sistema funciona vivirá con lo que tenga.
• La documentación debe actualizarse pero se tiene
recursos limitados.
• Se utiliza un enfoque de documentar cuando se toque.
• El sistema es crucial para el negocio y debe volver a
documentarse por completo incluso en este caso un
enfoque inteligente es recortar la documentación a un
mínimo esencial.
• Cada una de estas opciones es viable.
• Una organización de software debe elegir la más
apropiada para cada caso.
13. DefiniciónDefinición
«El análisis de un sistema para identificar sus componentes
actuales y las dependencias que existen entre ellos, para
extraer y crear abstracciones de dicho sistema informático
de sus diseño» [Chifofsky, 1990].
«El proceso de analizar el código, documentación y
comportamiento de un sistema para identificar sus
componentes actuales y sus dependencias para extraer y
crear una abstracción del sistema e información del
diseño. EL sistema en estudio no es alterado, si no que
produce conocimiento adicional acerca del sistema »
[SEI, 2004]
14. DefiniciónDefinición
La Ing. inversa tiene tiene la misión de desentrañar los
misterios y secretos de los sistemas en uso. Consiste
principalmente en recuperar el diseño de una
aplicación a partir del código.
Esto se realiza principalmente mediante herramientas
que extraen información de los datos, procedimientos
y arquitectura del sistema existente.
15.
16. TiposTipos
• Ing. Inversa de datos.
Se usa para modificar una base de datos, para migrar
a un nuevo sistema de gestión de base de datos y
también para crear el modelo de datos del sistema
del software.
Toda esta información extraída son: entidades,
relaciones, atributos, etc. y se crean modelos de
datos, como por ejemplo: Diagramas E-R.
17. TiposTipos
Ing. inversa de lógica.
Se usa para entender mejor la aplicación y regenerar el
código. También para migrar la aplicación a un nuevo
sistema operativo. Además genera/complementa la
documentación y comprueba que el código cumple con
las especificaciones del diseño.
Toda la información extraída son las especificaciones de
diseño y se crean modelos de flujo de control, diagramas
de diseño, documentos de especificación de diseño, etc.
18. Cuando aplicar la Ing.Cuando aplicar la Ing.
inversainversa
Documentación inexistente o totalmente obsoleta.
Cuando se hace un cambio de lenguaje de
programación , sistema operativo , cuando no hay
especificaciones de diseño.
Cuando no hay cumplimiento de las
especificaciones de diseño.
20. REESTRUCTURACION DE CÓDIGOREESTRUCTURACION DE CÓDIGO
La reestructuración del código se lleva a cabo para
conseguir un diseño que produzca la misma función
pero con mayor calidad que el programa original.
El objetivo es tomar el código de forma de "plato de
espaguetis" y derivar un diseño de procedimientos
que se ajuste a la filosofía de la programación
estructurada.
21. 5 Reestructuración de5 Reestructuración de
datosdatos
• Es una actividad de reingeniería a gran escala. En
la mayoría de los casos, la reestructuración de
datos comienza con una actividad de ingeniería
inversa. La arquitectura de datos actual se analiza
con minuciosidad y se define los modelos de datos
necesarios, se identican los objetivos de datos y los
atributos, y después se revisa la calidad de las
estructuras de datos existentes.
22. 6 Ingeniería directa6 Ingeniería directa
• La ingeniería directa, que se denomina también
renovación o reclamación, no solamente recupera
la información de diseño de un software ya
existente, sino que, además, utiliza esta información
para alterar o reconstruir el sistema existente en un
esfuerzo por mejorar su calidad global
23. Puntos a considerar:Puntos a considerar:
1. El coste de mantener una línea de código fuente
puede estar entre 20 y 40
veces por encima del coste del desarrollo inicial de
esa línea.
2. El rediseño de la arquitectura del software
empleando conceptos de diseño
modernos puede facilitar mucho el mantenimiento
futuro.
3. Dado que ya existe un prototipo de software, la
productividad de desarrollo
deberá ser mucho más elevada que la media
24. 4. En la actualidad, el usuario ya tiene experiencia
con el software. Por lo
tanto, los nuevos requisitos y la dirección del cambio
se podrán estimarse
con mucha más facilidad.
5. Las herramientas CASE para la ingeniería
automatizarán algunas partes del
trabajo.
6. Cuando finalice el mantenimiento preventivo,
se dispondrá de una
configuración completa del software (documentos,
programas y datos).