Je suis curieux de savoir à quel point design-by-contract est utilisé en dehors de la communauté Eiffel. Existe-t-il des projets open source actifs utilisant la conception par contrat? Ou, pour reformuler la question en une seule réponse: quel est le projet open-source le plus utilisé (non-Eiffel) qui utilise design-by-contract?Quel est le projet open source le plus utilisé qui utilise la conception par contrat?
Répondre
La partie "non-Eiffel" de votre question est intéressante. Les contrats prennent tout leur sens quand il y a un support pour eux dans le langage de programmation, sinon c'est juste une bonne syntaxe pour les commentaires.
Cela nous amène aux langages qui prennent en charge les contrats. Je connais trois sauf Eiffel:
- ESC/Java ajoute des contrats à Java en utilisant un langage nommé JML.
- .NET contracts pour tous les langages .NET (fonctionne au niveau du bytecode)
- Frama-C ajoute des contrats à C en utilisant la langue ACSL
Les deux premiers ont des contrats exécutables. Avantages: peuvent être utilisés comme assertions d'exécution. Inconvénients: manque le pouvoir expressif de spécifier complètement ce qu'une fonction fait dans un contrat. Vous pouvez essentiellement écrire uniquement des vérifications de santé mentale. D'autre part, les contrats ACSL sont plus expressifs et non exécutables. Ils permettent de spécifier complètement qu'une fonction de tri doit toujours se terminer et laisser les mêmes éléments que dans le tableau original dans l'ordre. Les contrats ACSL peuvent être utilisés pour l'analyse statique, en particulier le calcul de précondition le plus faible de style Hoare. Et seulement être vraiment familier avec le dernier (avertissement: je travaille sur Frama-C, mais la partie ACSL est le travail de beaucoup de gens, dont certains ont contribué beaucoup plus que moi), je peux seulement mentionnez "ACSL by example", une bibliothèque C open source avec des contrats ACSL en cours de développement par Fraunhofer FIRST. Ce n'est pas encore publié, mais il fera partie du projet Device-soft. Je suis sûr que vous pourriez obtenir une version préliminaire si vous étiez intéressé. N'hésitez pas à contacter la personne mentionnée comme contact sur cette dernière page web.
Le langage de programmation D a un support natif pour les contrats. Il y a des bibliothèques pour ajouter des contrats à Python et à Ruby, et même C/C++ a eu un certain soutien via GNU Nana. Mais je ne sais pas si quelqu'un les utilise vraiment. Je suis particulièrement intéressé par Java et C# /. NET. –