You are on page 1of 16

Unidades temticas de Ingeniera del Software

Mantenimiento del software


3 edicin (2000)

Facultad de Informtica
desarrollar para mantener
El mantenimiento constituye la ltima fase del ciclo de vida del
software
Una vez finalizado el desarrollo, el producto entra en la fase de
operacin y mantenimiento
El mantenimiento debe asegurar que el producto sigue satisfaciendo
las expectativas del cliente
Para facilitar el mantenimiento del producto es necesario un desarrollo
de calidad

Necesidad del mantenimiento


El cambio es inevitable en la vida del software. Por ello,
debemos desarrollar mecanismos de evaluacin, control e
implementacin de modificaciones.

Mantenimiento del software 2


contenidos
Tipos de mantenimiento
Actividades del mantenimiento
Costes del mantenimiento
Esfuerzo del mantenimiento
Problemas del mantenimiento
Facilidad del mantenimiento
Tareas de mantenimiento
Efectos secundarios
Mantenimiento de cdigo ajeno
Ingeniera inversa
Reingeniera
Referencias bibliogrficas

Mantenimiento del software 3


tipos de mantenimiento

Mantenimiento correctivo
Diagnosticar y corregir errores no localizados durante la prueba

Mantenimiento adaptativo
Modificar el software para que interaccione con el entorno cambiante

Mantenimiento perfectivo
Aadir nuevas funciones y modificar funciones existentes

Mantenimiento preventivo
Cambiar el software para facilitar el futuro mantenimiento

Mantenimiento del software 4


actividades del mantenimiento
Peticin de
mantenimiento

Software Cdigo
Configuracin
?

Mantenimiento no estrucutrado
Mantenimiento estructurado

Evaluar diseo Evaluar cdigo

Planificar
?

Modificar diseo
Recodificar
Recodificar

Revisar Revisar

Probar y
distribuir Mantenimiento del software 5
costes del mantenimiento
Una oportunidad de desarrollo que se ha de posponer o que se
pierde, debido a que los recursos que estn disponibles deben
dedicarse a tareas de mantenimiento
Insatisfaccin del cliente al no poder ser atendidas sus peticiones en
un tiempo razonable
Disminucin de la calidad del software debido a los errores que
introducen los cambios
Retraso en el desarrollo por tener que disponer del personal para
tareas del mantenimiento

El coste final es...


una drstica reduccin de la productividad que se produce
cuando se inicia el mantenimiento de viejos programas

Mantenimiento del software 6


esfuerzo de mantenimiento

Se distribuye entre...
Actividades productivas. Anlisis, evaluacin, modificacin del
diseo y codificacin.
Actividades menos productivas. Interpretacin y compresin.

M=p+Kexp(c-f) Modelo del esfuerzo de mantenimiento

Esfuerzo total (M)


Esfuerzo productivo (p)
Constante emprica (K)
Medida de la complejidad atribuida a la falta de un buen diseo y documentacin (c)
Medida del grado de familiaridad con el software (f)

Mantenimiento del software 7


problemas del mantenimiento
Dificultad para seguir la evolucin del software a travs de varias
versiones al no existir documentacin sobre los cambios
Dificultad para seguir el proceso por el que se construy el software
Dificultad para comprender un programa ajeno
Dificultad para contactar con los desarrolladores
La documentacin apropiada no existe
No se prev el cambio cuando se disea
El mantenimiento no se considera un trabajo atractivo

...todos tienen su origen en las deficiencias del desarrollo

Mantenimiento del software 8


facilidad de mantenimiento
Factores que afectan a la facilidad de mantenimiento
Factores asociados con el mtodo de desarrollo aplicado.
Factores relacionados con el entorno de desarrollo. (Kopetz, H.)
Evaluacin de la facilidad de mantenimiento
Se puede evaluar indirectamente considerando los atributos de la actividad de
mantenimiento que se pueden medir.
Gilb (1979) proporciona un conjunto de mtricas relacionadas con el esfuerzo
empleado durante el mantenimiento:
Tiempo de reconocimiento del problema, de retraso administrativo, de recoleccin de
herramientas de mantenimiento, de anlisis del problema, de especificacin de los
cambios, tiempo activo de correccin o modificacin, de prueba local, de prueba
global, de revisin del mantenimiento y tiempo total de recuperacin.

Mantenimiento del software 9


facilidad de mantenimiento (cont.)
Evaluacin de la facilidad de mantenimiento (cont.)
Tambin se puede evaluar indirectamente considerando medidas de la
complejidad del software y de la estructura del diseo.

Revisin
Los factores que afectan a la facilidad de mantenimiento,
La facilidad de mantenimiento debe considerarse en el proceso de revisin.

Mantenimiento del software 10


tareas de mantenimiento
Establecer una organizacin de mantenimiento
Prescribir procedimientos de evaluacin y de informacin
Definir una secuencia estandarizada de sucesos para cada peticin
Establecer un sistema de registro de informacin de las actividades
Definir criterios de revisin y de evaluacin de las tareas de mantenimiento
FPM

Accin FPM
Control Controlador Supervisor
de mantenimiento del sistema
cambios ICS ICS

Asignacin
Informe
Gestor Plantilla
configuracin mantenimiento FPM: Formulario peticin mixto
Configuracin
ICS: Informe cambios del software

Mantenimiento del software 11


efectos secundarios
Errores u otros comportamientos indeseables aparecidos como
resultado de una modificacin
Se pueden limitar mediante una profunda documentacin de diseo,
una revisin de la configuracin completa del software antes de lanzar
la nueva versin y una cuidadosa prueba de regresin

Categoras de efectos secundarios (Freedman y Weinberg, 1990)


Efectos secundarios sobre el cdigo
Efectos secundarios sobre los datos
Efectos secundarios sobre la documentacin

Mantenimiento del software 12


mantenimiento de cdigo ajeno
Estudiar el programa antes de entrar en modo emergencia
Estudiar el flujo de control general
Evaluar la documentacin existente
Hacer uso de los listados de referencias cruzadas
Hacer cambios con el mayor cuidado
No eliminar cdigo hasta estar totalmente seguro
Insertar variables propias para evitar problemas
Mantener un registro de las actividades de mantenimiento
Evitar la necesidad de tener que tirar el programa y volverlo a escribir
(Yourdon, 1975)

Mantenimiento del software 13


ingeniera inversa
Proceso de analizar un programa con el objeto de crear una
representacin de mayor nivel de abstraccin que el cdigo fuente
Proceso de recuperacin de diseo
Se aplica en el mantenimiento preventivo. Los programas que sean
susceptibles de cambiar en un futuro cercano sern preparados para
ese cambio

Elementos de ingeniera inversa


Nivel de abstraccin, Completitud, Interactividad y Direccionalidad

Mantenimiento del software 14


reingeniera
Proceso de recuperacin de la informacin de diseo de un software
existente para alterarlo o reconstruirlo en un esfuerzo de mejorar la
calidad general
El software resultante implementa la funcin del sistema existente
El desarrollador aade nuevas funciones y/o mejora el rendimiento
general
Se aplica en el mantenimiento preventivo. Los programas que sean
susceptibles de cambiar en un futuro cercano sern preparados para
ese cambio

Mantenimiento del software 15


referencias bibliogrficas
Pressman, R.S. Ingeniera del software. Un enfoque prctico.
McGraw-Hill, 1993

Mantenimiento del software 16