Leyes de Lehman de la evolución del software

En ingeniería del software, las Leyes de evolución del software, o simplemente leyes de Lehman se refieren a una serie de leyes empíricas que Lehman y Belady formularon, basados en trabajos que comenzaron en 1974, con respecto a la evolución del software.[1][2]​ Las leyes describen el balance entre las fuerzas que impulsan nuevos desarrollos, y las fuerzas que ralentizan el proceso.

Leyes de Lehman

editar
  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.[3]
  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]
  3. Autorregulación La evolución de los programas es un proceso autorregulado. 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.[3]
  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.[3]
  5. Conservación de la familiaridad: A medida que un sistema evoluciona también todo lo que está asociado a 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.[3]
  6. Crecimiento continuo: 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.[3]
  8. Retroalimentación del sistema: Los procesos de evolución incorporan sistemas de retroalimentación multi-agente y multi-ciclo y estos deben ser tratados como sistemas de retroalimentación para lograr una mejora significativa del producto.[3]

Véase también

editar

Referencias

editar
  1. Lehman, Meir M. (1980). «Programs, Life Cycles, and Laws of Software Evolution». Proc. IEEE 68 (9): 1060-1076. 
  2. Lehman, M. M.; J. F. Ramil, P. D. Wernick, D. E. Perry, and W. M. Turski (1997). «Metrics and laws of software evolution—the nineties view». Proc. 4th International Software Metrics Symposium (METRICS '97). pp. 20-32. doi:10.1109/METRIC.1997.637156. Archivado desde el original|urlarchivo= requiere |url= (ayuda) el 13 de febrero de 2012. Consultado el 13 de mayo de 2013. 
  3. a b c d e f g Lehman, M. M. (1980). «On Understanding Laws, Evolution, and Conservation in the Large-Program Life Cycle». Journal of Systems and Software 1: 213-221. doi:10.1016/0164-1212(79)90022-0.