IEEE 1219 La modificación de un producto software después de su entrega al cliente o usuario para corregir defectos
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.
Se tiene las siguientes definiciones
Mantenibilidad Capacidad de un producto software de ser modificado. Estas modificaciones incluyen correcciones, mejoras, o adaptaciones a cambios en el entorno.
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.
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.
Tipos de mantenimiento software
Correctivo Localiza y corrige defectos en un programa tras su entrega.
Adaptativo Modificación para adaptarse a un cambio en el entorno (ej. dolar, pantallas Táctiles).
Perfectivo Modificación para detectar y corregir fallos latentes antes de que se conviertan en carencias.
Preventivo Modificación para detectar y corregir fallos latentes antes de que se conviertan en fallos operacionales.
Principales Retos Mantenimiento Software
El efecto iceberg No es lo mismo producir que mantener
Código heredado (legacy code)
Desarrollado con tecnologías y técnicas “anticuadas”.
No hay documentación
Si la hay, esta en notación Benito & Manolo, que ya no trabajan en la empresa.
Reescribirlo entero no es factible
El sistema no tiene porque estar bien diseñado, programado, ni haber sido desarrollado siguiendo un proceso de ingeniería.
Principales Problemas Mantenimiento Sw
Efectos domino y efecto iceberg
Cambios ad-hoc, ausencia metodológica del cambio.
Ausencia de documentación adecuada (decisiones de diseño).
Degradación calidad del producto
Soluciones técnicas para el problema de mantenimiento
Ingeniería Inversa Reconstruir el proceso de ingeniería de un producto a partir de ciertos artefactos de dicho producto.
Reingeniería Examen y modificación de un sistema para reconstruirlo en una nueva forma.
Reestructuración Modificación del software para hacerlo mas fácil de entender y cambiar o menos susceptible de incluir errores en cambios posteriores.
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.