domingo, 16 de febrero de 2014

Leyes de Lehman

Introducción:

En la Ingeniería de Software, las Leyes de la Evolución del Software, son una serie de leyes que Meir Lehman formuló en 1974.
Las leyes describen un balance entre fuerzas que ayudan al desarrollo de los sistemas de software, y de otras que realentizan el proceso.
Debido a que casi todo el software está destinado a cambiar durante el curso de su existencia, Lehman determinó ocho leyes que deben cumplirse si se quiere que el software sobreviva.
En un artículo publicado en 1980, Lehman distinguió tres categorías de software:
Un programa-S de "Specification" está escrito según a una especificación exacta sobre lo que el programa puede hacer.
Un programa-P de "Procedures" está escrito para implementar ciertos procedimientos que determinan completamente lo que el programa puede hacer.
Un programa-E de "Enviroment" está escrito para llevar a cabo actividades en el mundo real, sus funciones deben de estar intrínsecamente ligadas al entorno al que está implementado, por lo tanto debe adaptarse a las circunstancias de su entorno y a cualquier cambio.
Lehman señaló que las Leyes de la Evolución del Software se aplican solo a la tercera categoría, los programas-E.

Desarrollo:

Las leyes son:
  1. Cambio continuo: Un programa que se usa en un entorno real necesariamente debe cambiar o se volverá progresivamente menos útil y menos satisfactorio para el usuario.
  2. Complejidad creciente: A medida que un programa en evolución cambia, su estructura tiende a ser cada vez más compleja. Se deben dedicar recursos extras para preservar y simplificar su estructura.
  3. Autoregulacion La evolución de los programas es un proceso autoregulado. Los atributos de los sistemas, tales como tamaño, tiempo entre entregas y la cantidad de errores documentados son aproximadamente invariantes para cada entrega del sistema.
  4. Estabilidad organizacional: Durante el tiempo de vida de un programa, su velocidad de desarrollo es aproximadamente constante e independiente de los recursos dedicados al desarrollo del sistema.
  5. Conservación de la familiaridad: A medida que un sistema evoluciona todo lo que está asociado con ello, como los desarrolladores, personal de ventas, y usuarios por ejemplo, deben mantener un conocimiento total de su contenido y su comportamiento para lograr una evolución satisfactoria. Un crecimiento exagerado disminuye esta capacidad. Por tanto este incremento promedio debe mantenerse.
  6. Crecimiento continuado: La funcionalidad ofrecida por los sistemas tiene que crecer continuamente para mantener la satisfacción de los usuarios.
  7. Decremento de la calidad: La calidad de los sistemas software comenzará a disminuir a menos que dichos sistemas se adapten a los cambios de su entorno de funcionamiento.
  8. Realimentación del sistema: Los procesos de evolución incorporan sistemas de realimentación multiagente y multibucle y estos deben ser tratados como sistemas de realimentación para lograr una mejora significativa del producto.

Conclusión:

Es interesante que desde los años setentas se hallan establecido leyes que describen la evolución del software de entorno, y que además sigan vigentes hasta nuestros días. Dichas leyes deben considerarse y aplicarse en el mantenimiento de los programas-E si se desea que sigan cubriendo los requerimientos para los que fueron creados y los nuevos que vallan surgiendo, ya que el mundo es un lugar que está en constante cambio y no es posible crear un sistema que sea eterno e inmutable.

No hay comentarios.:

Publicar un comentario