Mantenimiento de software |
En
El mantenimiento de software es también una de las fases en el ciclo de vida de desarrollo de sistemas (SDLC, sigla en inglés de system development life cycle), que se aplica al desarrollo de software. La fase de mantenimiento es la fase que viene después del despliegue (implementación) del software en el campo.
Una percepción común del mantenimiento es que se trata meramente de la corrección de
El mantenimiento del software y la evolución de los sistemas fue abordada por primera vez por
Los problemas claves de mantenimiento de software son administrativos y técnicos. Problemas clave de administración son: alineación con las prioridades del cliente, dotación de personal, cuál organización hace mantenimiento, estimación de costos. Son cuestiones técnicas claves: limitado entendimiento, análisis de impacto, pruebas (testing), medición de mantenibilidad.
El mantenimiento de software es una actividad muy amplia que incluye la corrección de errores, mejoras de las capacidades, eliminación de funciones obsoletas y optimización. Debido a que el cambio es inevitable, se debe desarrollar mecanismos para la evaluación, controlar y hacer modificaciones.
Así que cualquier trabajo realizado para cambiar el software después de que esté en operación es considerado trabajo de mantenimiento. El propósito es preservar el valor del software sobre el tiempo. El valor puede ser mejorado ampliando la base de clientes, cumpliendo requisitos adicionales, siendo cada vez más fácil de usar, más eficiente y empleando más nuevas tecnología. El mantenimiento puede abarcar 20 años, mientras que el desarrollo puede estar entre 1 y 2 años.
A finales de los años 1970, una famosa y ampliamente citada estudio de encuesta por
Gabriela castillo, expuso la muy alta fracción de los costos del
La encuesta mostró que alrededor del 75% del esfuerzo de mantenimiento fue en los dos primeros dos tipos, y la corrección de errores consumía aproximadamente el 21%. Muchos estudios posteriores sugieren una magnitud similar del problema. Los estudios muestran que la contribución del usuario final es crucial durante el análisis y recopilación de nuevos datos de requerimiento. Y ésta es la causa principal de cualquier problema durante el mantenimiento y evolución del software. Así que el mantenimiento de software es importante porque consume gran parte de los costos del ciclo de vida y también la imposibilidad de cambiar el software de forma rápida y fiable significa que las oportunidades de negocio se pierden. [3] [4] [5]
Impacto de los factores clave de ajuste en el mantenimiento (por orden de máximo impacto positivo)
Factores de mantenimiento | Rango más |
---|---|
Especialistas de mantenimiento | 35% |
Experiencia alta del personal | 34% |
Variables y datos manejados por tablas | 33% |
Baja complejidad de la base de código | 32% |
Y2K y motores especiales de búsqueda | 30% |
Herramientas de reestructuración de código | 29% |
Herramientas de reingeniería | 27% |
Lenguajes de programación de alto nivel | 25% |
Herramientas de ingeniería inversa | 23% |
Herramientas de análisis de complejidad | 20% |
Herramientas de seguimiento de defectos | 20% |
Especialistas en "actualización masiva" Y2K | 20% |
Herramientas de control de cambio automático | 18% |
Horas extras no pagadas | 18% |
Mediciones de calidad | 16% |
Inspecciones formales de la base de código | 15% |
Bibliotecas de |
15% |
Tiempo de respuesta excelente | 12% |
Formación anual de > 10 días | 12% |
Experiencia de la alta gerencia | 12% |
Automatización del |
12% |
No módulos propensos a errores | 10% |
Reporte de defectos en-línea | 10% |
Medidas de productividad | 8% |
Excellent ease of use | 7% |
Medidas de satisfacción de usuarios | 5% |
Alta moral del equipo | 5% |
Suma | 603% |
No sólo son problemáticos los módulos propensos a errores, también muchos otros factores pueden disminuir el rendimiento. Por ejemplo, muy complejo "
Impacto de los factores clave de ajuste en el mantenimiento (por orden de máximo impacto negativo)
Factores de mantenimiento | Rango menos |
---|---|
Módulos propensos a errores | -50% |
Datos y variables incrustados | -45% |
Inexperiencia del personal | -40% |
Alta complejidad del código | -30% |
No Y2K de motores de búsqueda especiales | -28% |
Métodos manuales de control de cambio | -27% |
Lenguajes de programación de bajo nivel | -25% |
Ninguna herramienta de seguimiento de defectos | -24% |
No hay especialistas en "actualización masiva" Y2K | -22% |
Pobre facilidad de uso | -18% |
No hay mediciones de calidad | -18% |
No hay especialistas de mantenimiento | -18% |
Tiempo de respuesta pobre | -16% |
No hay inspecciones de código | -15% |
No hay bibliotecas de pruebas de regresión | -15% |
No hay automatización del help desk | -15% |
No hay reportes de defecto en línea | -12% |
Falta de experiencia de gestión | -15% |
No hay herramientas de reestructuración | -10% |
No hay entrenamiento anual | -10% |
Ningunas herramientas de reingeniería | -10% |
No hay herramientas de ingeniería inversa | -10% |
No hay herramientas de análisis de la complejidad | -10% |
No hay medidas de productividad | -7% |
Moral pobre del equipo | -6% |
No hay medidas de satisfacción del usuario | -4% |
Horas extras no pagadas | 0% |
Suma | -500% |
[6]