Programmation par Contrat
Les Assertions

Les assertions sont du code de vérification, c'est-à-dire des expressions booléennes qui doivent toujours être évaluées à vrai, faute de quoi une exception est déclenchée.

Eiffel permet la programmation par contrat. Le client d'une méthode (l'appelant) doit respecter un contrat (des préconditions introduites dans une clause 'require'), en échange de quoi le fournisseur (la méthode) garantit l'exécution du contrat (une postcondition, introduite par une clause 'ensure').

Ces deux clauses constituent des assertions. Elles ont plusieurs fonctions qui font d'elles des outils très puissants.

Notons en passant la présence du mot clé old, autorisé dans les postconditions, qui signifie "la valeur qu'avait l'expression qui suit le old au moment de l'appel de la routine". Ceci permet de modéliser des changements temporels simples et de mieux contrôler les actions d'une routine.

Des bibliothèques de composants bien construites sont dotées d'assertions qui, non seulement vérifient l'implantation de la bibliothèque, mais également, via les préconditions, que le code client qui les utilise est bien conçu. L'utilisation d'assertions se traduit naturellement par la génération de code de vérification supplémentaire. Plusieurs niveaux de compilation sont ainsi disponibles, qui activent plus ou moins d'assertions, en fonction de la maturité du logiciel développé :

-debug -check
-all -check
-ensure -check
- require -check
-no -check
-boost

avec l'option de compilation -boost, le logiciel est supposé correct et donc, plus aucun code relatif aux assertions n'est alors généré.

Généricité >>