La ingeniería inversa permite reconstruir el proceso de creación de un producto a partir de ciertos componentes ya existentes. En el contexto del software, esta técnica es crucial para realizar transformaciones automáticas que pueden añadir, modificar o eliminar elementos del código o modelo de un sistema.
Transformaciones
Manipulación, por medio de transformaciones automáticas ejecutadas por un computador, del código o modelo de un sistema para añadirle/modificarle/eliminarle elementos.
Reestructuración
Modificación del software para hacerlo mas
fácil de entender y cambiar o menos
susceptible de incluir errores en cambios posteriores.
Reingeniería
Examen y modificación de un sistema para reconstruirlo en una nueva forma.
Ingeniería Inversa
Reconstruir el proceso de ingeniería de un producto a partir de ciertos artefactos de dicho producto.
Soluciones técnicas para el
problema de mantenimiento
Degradación calidad del producto
Ausencia de documentación adecuada
(decisiones de diseño).
Cambios ad-hoc, ausencia metodológica
del cambio.
Efectos domino y efecto iceberg
Principales Problemas
Mantenimiento Sw
El sistema no tiene porque estar bien diseñado, programado, ni haber sido desarrollado siguiendo un proceso de ingeniería.
Reescribirlo entero no es factible
Si la hay, esta en notación Benito & Manolo, que ya no trabajan en la empresa.
No hay documentación
Desarrollado con tecnologías y técnicas
“anticuadas”.
Código heredado
(legacy code)
El efecto iceberg
No es lo mismo producir que mantener
Principales Retos Mantenimiento
Software
Preventivo
Modificación para detectar y
corregir fallos latentes antes de
que se conviertan en fallos
operacionales.
Perfectivo
Modificación para detectar y
corregir fallos latentes antes
de que se conviertan en carencias.
Adaptativo
Modificación para adaptarse a un
cambio en el entorno (ej. dolar,
pantallas Táctiles).
Correctivo
Localiza y corrige defectos en
un programa tras su
entrega.
Tipos de mantenimiento
software
Estabilidad de un diseño software
Capacidad de resistencia al efecto domino que tendrá un sistema software derivado de dicho diseño cuando es modificado.
Efecto domino (ripple effect)
Un determinado cambio en un producto software se dice que genera un efecto domino cuando a consecuencia del cambio debemos realizar cambios adicionales en el sistema.
Mantenibilidad
Capacidad de un producto software de ser modificado. Estas modificaciones incluyen correcciones, mejoras, o adaptaciones a cambios en el entorno.
Se tiene las siguientes
definiciones
ISO/IEC 14764
Conjunto de actividades destinadas a proporcionar soporte económicamente rentable para un determinado producto software.
Estas actividades se realizan tanto antes de la entrega del producto como después de la entrega del mismo.
IEEE 1219
La modificación de un producto software
después de su entrega al cliente o usuario para corregir defectos