Accueil

Programmation par contrat – Design by contract


Programmation par contrat

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/

cover Object-oriented software construction, Bertrand Meyer, Prentice Hall

Sujets connexes

Tests unitaires