# Lois de Lehman sur l'évolution des logiciels

En génie logiciel, les lois de l'évolution des logiciels font référence à une série de lois que Manny Lehman (en) et László Bélády ont formulées à partir de 1974 concernant l'évolution des logiciels$^,$. Ces lois décrivent un équilibre entre, d'une part, les forces qui conduisent à de nouveaux développements, et d'autre part, celles qui ralentissent leur progression. Au cours des dernières décennies, les lois ont été révisées et étendues à plusieurs reprises.

## Contexte

En remarquant que la plupart des logiciels sont sujets à des changements au cours de leur existence, les auteurs ont entrepris de déterminer à quelles lois ces changements obéiront typiquement, ou devront obéir pour que ces logiciels puissent survivre.
Dans son article de 1980, Lehman précisait l'application de ces lois en distinguant trois catégories de logiciels :
* un programme de type S est écrit en fonction d'une spécification exacte de ce que ce programme peut faire ;
* un programme de type P est écrit pour implémenter certaines procédures qui déterminent complètement ce que le programme peut faire (l'exemple mentionné est un programme pour jouer aux échecs)
* un programme de type E est écrit pour réaliser une activité du monde réel ; la façon dont il doit se comporter est étroitement liée à l'environnement dans lequel il s'exécute, et un tel programme doit s'adapter aux différentes exigences et circonstances dans cet environnement.
Ces lois ne doivent être appliquées qu'à cette dernière catégorie de systèmes.

## Les lois

Au total, huit lois ont été formulées :
* (1974) « Changement continu » : un système de type E doit être continuellement adapté, ou il devient progressivement moins satisfaisant.
* (1974) « Complexité croissante » : à mesure qu'un système de type E évolue, sa complexité augmente, à moins que des travaux ne soient réalisés pour la maintenir ou la réduire.
* (1974) « Auto-régulation » : les processus d'évolution des systèmes de type E s'autorégulent avec une distribution de produits et des mesures de processus proches de la normale.
* (1978) « Conservation de la Stabilité Organisationnelle (taux de travail invariant) » : le taux d'activité global efficace moyen dans un système de type E en évolution est invariant sur la durée de vie du produit.
* (1978) « Conservation de la familiarité » : à mesure qu'un système de type E évolue, toutes les personnes qui y sont associées - les développeurs, les commerciaux et les utilisateurs, par exemple - doivent maintenir la maîtrise de son contenu et son comportement pour obtenir une évolution satisfaisante. Une croissance excessive diminue cette maîtrise. Par conséquent, la croissance incrémentale moyenne reste invariante à mesure que le système évolue.
* (1991) « Croissance continue » : le contenu fonctionnel d'un système de type E doit être continuellement augmenté pour maintenir la satisfaction des utilisateurs tout au long de sa vie.
* (1996) « Qualité décroissante » : la qualité d'un système de type E apparaîtra comme décroissante, à moins qu'il ne soit rigoureusement maintenu et adapté aux changements de son environnement de fonctionnement.
* (1996) « Système de Rétroaction » (énoncé pour la première fois en 1974, formalisé par la loi de 1996) : les processus d'évolution de type E constituent des systèmes de rétroaction à plusieurs niveaux, à plusieurs boucles et à plusieurs agents ; et ils doivent être traités comme tels pour obtenir des améliorations significatives par rapport à toute base raisonnable.