Reingenieria inversa

1,586 views

Published on

analisis de reingenieria inversa, aplicacion, ingenieria de softwware

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,586
On SlideShare
0
From Embeds
0
Number of Embeds
30
Actions
Shares
0
Downloads
41
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Reingenieria inversa

  1. 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. 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. 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. 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.
  5. 5. Analisis de inventarioAnalisis de inventario
  6. 6. • 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.
  7. 7. Restructuración deRestructuración de documentosdocumentos
  8. 8. • La documentación débil es la marca de muchos sistemas heredados.
  9. 9. • Pero que se hace acerca de ellos? • Cuáles son las opciones?
  10. 10. • 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.
  11. 11. ING. INVERSAING. INVERSA
  12. 12. 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]
  13. 13. 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.
  14. 14. 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.
  15. 15. 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.
  16. 16. 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.
  17. 17. REESTRUCTURACIONREESTRUCTURACION DEDE CÓDIGOCÓDIGO
  18. 18. 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.
  19. 19. 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.
  20. 20. 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
  21. 21. 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
  22. 22. 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).

×