domingo, 16 de febrero de 2014

Leyes del mantenimiento de Software

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