Mantenimiento de Software: Ingeniería Reversa - Reingeniería
Diferencias
Reingenieria
Re diseño
Exploración del diseño
Reproducir la documentación
Ingenieria Reversa
Conocer el comportamiento del sistema construyendo modelos estaticos y dinámicos
Entender el sistema
Promover la ingeniería
Ayuda a modificar el software
Data reverse
Enfocada en las relaciones de la data, entre programas y la base de datos
Herramientas
Analisis
Orientadas a las tareas
Subtopic
Ingeniería Reversa de Software
Compuesto por dos fases(Chifosky y Cross)
Recolectar información
Abstraer información
Uso de binaries (Decompilación, Deasamblaje)
Recuperar codigo perdido
Migrar aplicación a otro HW
Traducir el codigo a otro lenguaje
Determinar la existencia de virus
Modelos estáticos
Abstracción
Descomponer el sistema
Estructura de codigos
CodeCrawler
Analisis
Sintaxis
Estructura
Complejidad
Para codigo
Para visualización : diagramas de clases
Modelos dinámicos
Abstracción
Encontrar patrones
Usar abstracciones estaticas(diagramas de secuencia)
Analisis
Polimorfismo
Llamadas de metodos
Manejo de memoria
Problemas de memoria
Conocer la actualidad del software
Para escenarios: diagramas de secuencia
Diagramas de estados
Abstracción
Ayuda en el logro de objetivos
Mantenimiento
Evolución
Reingenieria
Niveles de abstracción
Aplicación
Función
Estructura
Implementación
Alcance
Redocumentación del software
Recuperar detalles de diseño en cualquier nivel de abstraccion
Identificar componentes que necesitan ser reestructurados
Entender el sistema a gran escala
Importancia
Recuperar información perdida
Migración a otras plataformas
Facilitar el resuso de software
Identificar anomalías
Reduce costos de mantenimiento
Mejora las cualidades del software
Refactoring
Modifica el software para mejorar su lectura, mantenimiento y extensibilidad.
Comportamiento externo no cambia
Reduce code - smells
Dificultades
Vacíos
Problema/Solución
Concreto/Abstracto
Coherencia/Desintegración
Patrones de Diseño
Técnicas para resolver problemas comunes en el desarrollo de software
Resuelven problemas de diseño
Mejora la arquitectura de software
Definición
¿Qué hacer si se pierde un archivo, y no existe un control de versiones?
Ingernier{ia reversa, proceso de ingenier{a contrario.
Conocer que esta pasando en el software
Abstracci{on del sistema
Antes re ingenieria
Despues de reingenieria
Relacionado al mantenimiento de software