đ” Encore un papier de Barbara Liskov. Jâai dĂ©jĂ parlĂ© dâelle dans un post prĂ©cĂ©dent (lien Ă la fin). Dans ce papier de 1972 extrĂȘmement actuel, elle nous explique comment produire des logiciels fiables, car testĂ©s, donc testables. Le raisonnement est long, mais rĂ©munĂ©rateur pour qui le suit jusquâau bout.
đ Elle constate dâabord que le dĂ©bogage intensif nâa jamais rien rĂ©solu. Il faut des tests automatisĂ©s couvrant lâensemble des cas utiles.
𧟠Elle ajoute quâil serait trop complexe dâobtenir des preuves formelles quâun logiciel complexe fonctionne, Ă cause du nombre trop grand dâĂ©tats. Des preuves informelles peuvent suffire Ă condition de structurer le programmes correctement, afin quâils soient le plus testables et prĂ©visibles possibles.
âïž La testabilitĂ© est donc, pour Barbara Liskov, une question de design.
âïž LâidĂ©e de dĂ©couper le programme en modules est bonne, mais insuffisante. Un dĂ©coupage bancal ajoute plus de complexitĂ© quâil nâen masque.
2ïžâŁ Elle donne deux rĂšgles, tirĂ©es des travaux de Dijkstra et Parnas, dĂ©jĂ Ă©voquĂ©s ici :
đ Sâappuyer sur le principes des machines virtuelles de Parnas, oĂč chaque niveau dâabstraction sâappuie sur celui immĂ©diatement en dessous pour rĂ©aliser des oĂ©prations plus complexes et proches du mĂ©tier.
đ Faire de la programmation structurĂ©e, sans goto donc. Lâabolition du goto qui est Ă©vidente pour nous en 2021 Ă©tait encore une bataille rangĂ©e en 1972.
đȘ La combinaison de ces deux rĂšgles permet une indĂ©pendance des modules par le dĂ©couplage.
âš On obtient ainsi un programme quâil est possible de tester comme suit :
đ Chaque module est individuellement testĂ© par un ensemble de tests X.
đ Chaque assemblage de modules complet est testĂ© par un ensemble de tests Y.
â GrĂące au design quâelle recommande, le nombre de cas de tests nĂ©cessaires nâest pas X*Y, mais bien X+Y pour atteindre une couverture satisfaisante, ce qui est Ă la portĂ©e des dĂ©veloppeurs.
SOURCE
Liskov, Barbara. âA design methodology for reliable software systems.â AFIPS â72 (Fall, part I) (1972). DOI: 10.1145/1479992.1480018
Enzo Sandré
DOIs: 10.1145/1479992.1480018