L'essence même de la programmation orientée objet, c'est la délégation des responsabilités : l'idée est de résoudre des tâches plus ou moins complexes en faisant collaborer différents objets qui ont chacun une responsabilité particulière. La programmation par contrat consiste à établir des contrats entre ces différents objets, des contrats qui définissent dans quelles conditions les objets peuvent collaborer.
Ces contrats sont exprimés sous la forme d'assertions — une assertion est une condition qui doit être vraie. Il en existe 3 types :
Enfin, la vérification de ces contrats peut être activée ou désactivée : elle est activée en période de développement et de test — cela permet de vérifier que les objets ont été conçus et utilisés correctement, — et désactivée dans la version finale.
À noter que cette technique à été introduite par Bertrand Meyer et qu'elle fait partie intégrante du langage Eiffel dont il est à l'origine.
[c] Design by contract, BorCon 2002
Lors des conférences Borland 2002, j'ai présenté une session consacrée au design by contract :
« La qualité constitue sûrement l'un des enjeux majeurs du développement logiciel. Plusieurs techniques adaptées à la programmation orientée objet ont été imaginées pour s'assurer de cette qualité. Si l'eXtreme Programming a popularisé l'utilisation des tests unitaires, Bertrand Meyer, quant à lui, a proposé depuis longtemps la mise en œuvre de la notion de contrat.
Cette technique — on l'appelle Design by contract ou programmation par contrat — consiste à exprimer les spécifications des composants logiciels sous la forme de contrats et à vérifier en permanence le respect de ces derniers.
Après avoir présenté les principes du Design by contract, nous nous intéresserons à sa mise en œuvre dans des langages comme le C++, Delphi ou Java. Par ailleurs, nous montrerons pourquoi cette technique est complémentaire des tests unitaires préconisés par XP. »
Vous pouvez accéder aux diapositives et aux exemples. Un article sera disponible prochainement.
[s] An introduction to design by contract, http://www.eiffel.com/doc/manuals/technology/contract/
Object-oriented software construction Prentice Hall |
Copyright © 2002-2012 Olivier Mangez – Tous droits réservés