reingenieria inversa

24
INTROCUCION INTROCUCION ¿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.

Upload: jose-fernandez

Post on 13-Jun-2015

1.142 views

Category:

Technology


2 download

DESCRIPTION

analisis de reingenieria inversa, aplicacion, ingenieria de softwware

TRANSCRIPT

Page 1: Reingenieria inversa

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.  

Page 2: Reingenieria inversa

INTROCUCIOINTROCUCIONN

¿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.  

Page 3: Reingenieria inversa

INTROCUCIOINTROCUCIONN

¿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.

Page 4: Reingenieria inversa

REINGENIERIA 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.

Page 5: Reingenieria inversa
Page 6: Reingenieria inversa

Analisis de inventarioAnalisis de inventario

Page 7: Reingenieria inversa

• 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.

Page 8: Reingenieria inversa

Restructuración de Restructuración de documentosdocumentos

Page 9: Reingenieria inversa

• La documentación débil es la marca de muchos sistemas heredados.

Page 10: Reingenieria inversa

• Pero que se hace acerca de ellos?• Cuáles son las opciones?

Page 11: Reingenieria inversa

• 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.

Page 12: Reingenieria inversa

ING. ING. INVERSAINVERSA

Page 13: Reingenieria inversa

Definición Definició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]

Page 14: Reingenieria inversa

DefiniciónDefiniciónLa 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.

Page 15: Reingenieria inversa
Page 16: Reingenieria inversa

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.

Page 17: Reingenieria inversa

TiposTiposIng. 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.

Page 18: Reingenieria inversa

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.

Page 19: Reingenieria inversa

REESTRUCTURACIOREESTRUCTURACION N

DE DE CÓDIGO CÓDIGO

Page 20: Reingenieria inversa

REESTRUCTURACION DE REESTRUCTURACION DE

CÓDIGO 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.

Page 21: Reingenieria inversa

5 Reestructuración de 5 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.

Page 22: Reingenieria inversa

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

Page 23: Reingenieria inversa

Puntos a considerar:Puntos a considerar:1. El coste de mantener una línea de código fuente puede estar entre 20 y 40veces por encima del coste del desarrollo inicial de esa línea.2. El rediseño de la arquitectura del software empleando conceptos de diseñomodernos puede facilitar mucho el mantenimiento futuro.3. Dado que ya existe un prototipo de software, la productividad de desarrollodeberá ser mucho más elevada que la media

Page 24: Reingenieria inversa

4. En la actualidad, el usuario ya tiene experiencia con el software. Por lotanto, los nuevos requisitos y la dirección del cambio se podrán estimarsecon mucha más facilidad.5. Las herramientas CASE para la ingeniería automatizarán algunas partes deltrabajo.6. Cuando finalice el mantenimiento preventivo, se dispondrá de unaconfiguración completa del software (documentos, programas y datos).