Con el paso de los años se ha ido produciendo un volumen muy
grande de software. En la actualidad, la mayor parte de éste software está
formado por código antiguo "
heredado" (del inglés legacy code ); es decir, código de aplicaciones
desarrolladas hace algún tiempo, con técnicas y herramientas en desuso y
probablemente por personas que ya no pertenecen al colectivo responsable en
este momento del mantenimiento del software concreto.
En muchas ocasiones, la situación se complica porque el
código heredado fue objeto de múltiples actividades de mantenimiento. La opción
de desechar este software y reescribirlo para adaptarlo a las nuevas
necesidades tecnológicas o a los cambios en la especificación es muchas veces
inadecuada por la gran carga financiera que supuso el desarrollo del software
original y la necesidad económica de su amortización.
Los problemas específicos del mantenimiento de código
heredado han sido caracterizados en las
llamadas Leyes del Mantenimiento del
Software, propuestas por Lehman.
Continuidad del
Cambio: Un programa utilizado en un entorno del mundo real esta destinado a cambiar, ya que, en
caso contrario, será utilizado cada vez
menos en dicho entorno (tan pronto como un programa ha sido escrito, está ya desfasado).
– Las razones que conducen a esta afirmación son varias:
• A los usuarios se les ocurren nuevas funcionalidades
cuando comienzan a utilizar el software;
• Nuevas características en el hardware pueden permitir
mejoras en el software;
• Se encuentran defectos en el software que deben ser
corregidos;
• El software debe instalarse en otro sistema operativo o
máquina;
• O el software necesita ser más eficiente.
Incremento de la
Complejidad: A la par que los cambios transforman los programas, su
estructura se hará progresivamente más compleja salvo que se haga un esfuerzo
activo para evitar este fenómeno. Esto significa que al realizar cambios en un
programa (excluyendo el mantenimiento preventivo), la estructura de dicho
programa se hace más compleja cuando los programadores no pueden o no quieren usar
técnicas de ingeniería del software.
Evolución del
Programa: La evolución de un programa es un proceso autorregulado. Las
medidas de determinadas propiedades (tamaño, tiempo entre versiones y número de
errores) revelan estadísticamente determinadas tendencias e invariantes.
Conservación de la
familiaridad: A lo largo del tiempo de vida de un programa,
la carga que supone el desarrollo de dicho programa es aproximadamente
constante e independiente de los recursos dedicados.
Conservación de la
Familiaridad: Durante todo el tiempo de vida de un producto software, el
incremento en el número de cambios incluidos con cada versión (release) es
aproximadamente constante.
Crecimiento
continuado: Su contenido funcional debe incrementarse continuamente para
satisfacer al usuario durante el periodo de vida.
Decremento de la
calidad: Su calidad parecerá disminuir a menos que se mantengan y adapten
rigurosamente a los cambios en su ambiente operacional.
Realimentación del
sistema: Sus procesos de evolución constituyen sistemas de
retroalimentación con niveles, ciclos y agentes múltiples y deben tratarse de
forma que se obtengan mejorías significativas sobre cualquier base razonable.
Estas leyes no son otra cosa que el resultado del estudio
científico de experiencia acumulada en Ingeniería del Software. Como tales, nos
pueden servir como base para la planificación de las actividades de
mantenimiento y para la toma de decisiones al respecto.
No hay comentarios.:
Publicar un comentario