Mantenimiento y Evolución del Software
El mantenimiento y la evolución del software se refieren a la modificación del software después de su entrega y a la dinámica a largo plazo mediante la cual los sistemas deben cambiar continuamente para seguir siendo útiles.
Definition
El mantenimiento de software es la modificación de un producto de software después de su entrega para corregir fallos, mejorar el rendimiento o adaptarlo a un entorno cambiado, y la evolución del software es el proceso más amplio y continuo mediante el cual el software cambia a lo largo de su vida útil en respuesta a requisitos y entornos cambiantes.
Scope
Esta área abarca las categorías de mantenimiento (correctivo, adaptativo, perfectivo, preventivo); las leyes empíricas de la evolución del software; la comprensión de programas y el análisis de impacto; la reingeniería, ingeniería inversa y migración de sistemas heredados; la acumulación y gestión de la deuda técnica; y los procesos y estándares que rigen el mantenimiento, como ISO/IEC 14764.
Sub-topics
Core questions
- ¿Qué categorías de cambio componen el mantenimiento y cómo se diferencian?
- ¿Qué leyes empíricas rigen cómo debe evolucionar el software con el tiempo?
- ¿Cómo se comprende, reestructura y migra el software heredado?
- ¿Cómo se acumula la deuda técnica y cómo se gestiona?
Key theories
- Categorías de mantenimiento de software
- El mantenimiento se clasifica como correctivo (corrección de fallos), adaptativo (respuesta a cambios en el entorno), perfectivo (mejora de la función o el rendimiento) y preventivo (mejora de la mantenibilidad), siendo el trabajo adaptativo y perfectivo el dominante en la práctica.
- Leyes de Lehman sobre la evolución del software
- Lehman observó que los sistemas en uso activo deben cambiar continuamente o volverse progresivamente menos satisfactorios, y que a medida que evolucionan, su complejidad aumenta a menos que se trabaje para reducirla.
Clinical relevance
El mantenimiento suele consumir la mayor parte del costo total de vida útil de un sistema, por lo que comprender la dinámica de la evolución, controlar el crecimiento de la complejidad y gestionar la deuda técnica son decisivos para la economía y viabilidad a largo plazo del software.
Evidence & guidelines
ISO/IEC 14764 define el proceso de mantenimiento de software, y el área de conocimiento de Mantenimiento de Software de SWEBOK proporciona orientación consensuada sobre las categorías, actividades y técnicas de mantenimiento.
History
El reconocimiento de que el mantenimiento domina el costo del software creció en la década de 1970; Lehman y Belady formularon las leyes de la evolución del software a partir del estudio empírico de grandes sistemas, y las técnicas de reingeniería y modernización de sistemas heredados se desarrollaron a medida que los sistemas de larga duración envejecían y la deuda técnica se convertía en una preocupación reconocida.
Debates
- Mantener, reestructurar o reemplazar sistemas heredados
- Decidir si seguir manteniendo, reestructurar o reemplazar por completo un sistema antiguo es un debate estratégico recurrente, que equilibra el riesgo y el costo del reemplazo frente al costo creciente y la fragilidad del mantenimiento continuo.
Key figures
- Meir M. Lehman
- Les Belady
- Ian Sommerville
Related topics
Seminal works
- lehman1980
- iso14764
- sommerville2015
Frequently asked questions
- ¿El mantenimiento es solo corregir errores?
- No. La corrección de errores (mantenimiento correctivo) es solo una categoría; la mayor parte del esfuerzo de mantenimiento es adaptativo y perfectivo —ajustar el software a nuevos entornos y añadir o mejorar capacidades— lo que en conjunto supera el trabajo correctivo en sistemas típicos.
- ¿Por qué la complejidad del software tiende a crecer con el tiempo?
- Como observó Lehman, los cambios continuos para satisfacer necesidades en evolución añaden estructura y casos especiales; a menos que se dedique un esfuerzo deliberado a la reestructuración y reducción de la complejidad, el sistema se vuelve progresivamente más difícil de cambiar.