Kategóriák: Minden - componentes - software - mantenimiento - abstracción

a CLAUDIA LUZ ROJAS SOTO 2 éve

159

Mantenimiento de Software: Ingeniería Reversa - Reingeniería

La ingeniería inversa y la reingeniería son procesos clave en el mantenimiento de software. La ingeniería inversa implica recuperar detalles de diseño y entender el sistema a gran escala, incluso cuando se han perdido archivos y no existe un control de versiones.

Mantenimiento de Software: Ingeniería Reversa - Reingeniería

Mantenimiento de Software: Ingeniería Reversa - Reingeniería

Definición

Relacionado al mantenimiento de software
Abstracci{on del sistema
Despues de reingenieria
Antes re ingenieria
Conocer que esta pasando en el software
Ingernier{ia reversa, proceso de ingenier{a contrario.
¿Qué hacer si se pierde un archivo, y no existe un control de versiones?

Patrones de Diseño

Mejora la arquitectura de software
Resuelven problemas de diseño
Técnicas para resolver problemas comunes en el desarrollo de software

Dificultades

Vacíos
Coherencia/Desintegración
Concreto/Abstracto
Problema/Solución

Refactoring

Reduce code - smells
Comportamiento externo no cambia
Modifica el software para mejorar su lectura, mantenimiento y extensibilidad.

Importancia

Mejora las cualidades del software
Reduce costos de mantenimiento
Identificar anomalías
Facilitar el resuso de software
Migración a otras plataformas
Recuperar información perdida

Alcance

Entender el sistema a gran escala
Identificar componentes que necesitan ser reestructurados
Recuperar detalles de diseño en cualquier nivel de abstraccion
Redocumentación del software
Niveles de abstracción
Implementación
Función
Aplicación
Ayuda en el logro de objetivos
Evolución
Mantenimiento

Ingeniería Reversa de Software

Modelos dinámicos
Diagramas de estados
Para escenarios: diagramas de secuencia
Conocer la actualidad del software

Problemas de memoria

Manejo de memoria

Llamadas de metodos

Polimorfismo

Usar abstracciones estaticas(diagramas de secuencia)

Encontrar patrones

Modelos estáticos
Para visualización : diagramas de clases
Para codigo

Complejidad

Estructura

Sintaxis

Abstracción

Estructura de codigos

CodeCrawler

Descomponer el sistema

Uso de binaries (Decompilación, Deasamblaje)
Determinar la existencia de virus
Traducir el codigo a otro lenguaje
Migrar aplicación a otro HW
Recuperar codigo perdido
Compuesto por dos fases(Chifosky y Cross)
Abstraer información
Recolectar información

Diferencias

Subtopic
Ingenieria Reversa
Herramientas

Orientadas a las tareas

Analisis

Data reverse

Enfocada en las relaciones de la data, entre programas y la base de datos

Ayuda a modificar el software
Promover la ingeniería
Entender el sistema
Conocer el comportamiento del sistema construyendo modelos estaticos y dinámicos
Reingenieria
Reproducir la documentación
Exploración del diseño
Re diseño