Qu'est-ce qu'une conception par Contract®?
La conception par Contract® est une méthode utilisée pour développer des logiciels qui repose sur la création de paramètres d'interface bien définis ou de contrats pour toutes les parties d'un programme. Bien que la conception par contrat® puisse être considérée comme un style de développement conceptuel qui est implémenté par la documentation ou la modélisation, il est plus largement utilisé pour se référer à un mécanisme natif ou tiers dans certains langages de programmation qui nécessite réellement le codage implicite des contrats dans un programme. L'objectif de l'utilisation de Design by Contract® est qu'un programme sera développé et, finalement, codé de manière beaucoup plus complète qui supprime les erreurs plus triviales, tandis que l'application des contrats par la langue de soutien rend toutes les erreurs résiduelles facilement trouvées et capturées. Un programme qui utilise des contrats pour les fonctions et les classes peut avoir une conception plus modulaire dans laquelle les classes individuelles peuvent être facilement réutilisées dans d'autres programmes en raison de la définition claire de leurs contrats.
r La philosophie de programmation de conception par contracte® est l'idée de contrats commerciaux du monde réel. Dans ce modèle, chaque méthode et classe d'un programme orienté objet définit un contrat par lequel toute autre méthode ou objet interagissant avec lui doit respecter. Chaque classe peut également avoir un contrat, appelé une classe invariante, qu'elle doit suivre en interne pour garantir que les contrats extérieurs ne compromettent pas sa capacité à fonctionner.
Les deux parties d'un contrat qui sont les plus importantes lors de la conception et du codage sont les conditions préalables et les conditions post-conditions. Ces deux parties du modèle de conception par contrat® définissent l'état du programme avant qu'une méthode ne soit appelée et l'état du programme une fois la méthode terminée l'exécution. D'autres parties d'un contrat peuvent varier selon la mise en œuvre, mais peuvent inclure des références croisées à d'autres modules, des conditions de synchronisation et des exigences de l'ordre de l'exécution.
En développant des contrats pour chaque classe et méthode, l'interaction des différentes parties d'un programme peut facilement être cartographiée et prédite. L'application des contrats, soit par l'utilisation d'assertions ou d'autres mécanismes, garantit également que le programme ne tentera pas d'exécuter s'il y a une violation des contrats, car toute sortie produite dans cet État serait techniquement invalide de toute façon. Lorsqu'il est mis en œuvre en tant que fonctionnalité de langue maternelle, la conception par Contract® peut aider à s'assurer qu'un produit final fonctionnera comme prévu avec peu de chances d'erreurs imprévues.
Certaines des complications qui accompagnent l'utilisation de la conception par la philosophie Contract® comprennent des temps de conception plus longs et un développement plus granulaire d'un système avant le début du codage, ce qui peut parfois être difficile avec un grand projet. Plus pratiquement, le mécanisme de validation du contrat utilisé dans un langage de programmation qui soutient nativement les contrats peut ralentir l'exécution du programme. Une mauvaise compréhension de tLa conception par la méthodologie Contract® peut conduire à un programme qui utilise des contrats pour effectuer la vérification des erreurs de base, conduisant potentiellement à une application sujette à des accidents soudains après la libération.