You can edit almost every page by Creating an account. Otherwise, see the FAQ.

Théorème fondamental de l'ingénierie logicielle

De EverybodyWiki Bios & Wiki
Aller à :navigation, rechercher


Le Théorème fondamental de l'ingénierie logicielle ("fundamental theorem of software engineering" ou FTSE) est un terme proposé par Andrew Koenig pour décrire une remarque de Butler Lampson[1] attribuée à David J. Wheeler[2] :

« On peut résoudre n'importe quel problème en ajoutant un niveau supplémentaire d'indirection. »

Ce n'est pas vraiment un théorème scientifique à prouver, c'est plutôt un principe général pour gérer la complexité via l'abstraction.

On complète souvent la phrase avec humour par "… sauf quand le problème, c'est qu'on a trop de niveaux d'indirection". En effet, avoir trop d'abstractions peut créer de la complexité, ce qui est en soi un problème.

Par exemple, l'utilisation de couches de protocoles réseau, que l'on retrouve partout aujourd'hui, a été critiquée par le passé et présentée sous la forme de "trop d'abstraction"[3]. Ici, ajouter des couches d'indirection peut imposer aux couches supérieures de ré-implémenter des fonctionnalités de couches plus basses, ce qui est moins efficient. On peut aussi se retrouver dans une situation où une fonctionnalité dans une couche a besoin d'informations qui n'est présente que dans une autre couche, ce qui viole l'objectif de la séparation en couches d'abstraction.


Références[modifier]

  1. Abrahams and Gurtovoy, C++ Template Metaprogramming, 2005, Addison Wesley, p. 13.
  2. http://bwlampson.site/Slides/TuringLecture.htm
  3. I. Wakeman, J. Crowcroft, Z. Wang et D. Sirovica, « Is Layering Harmful? », IEEE Network,‎ , p. 20–24 (DOI 10.1109/65.120719)

Erreur Lua dans Module:Catégorisation_badges à la ligne 170 : attempt to index field 'wikibase' (a nil value).Erreur Lua dans Module:Suivi_des_biographies à la ligne 189 : attempt to index field 'wikibase' (a nil value).


Cet Article wiki "Théorème fondamental de l'ingénierie logicielle" est issu de Wikipedia. La liste de ses auteurs peut être visible dans ses historiques et/ou la page Edithistory:Théorème fondamental de l'ingénierie logicielle.