une conception par contrat est une méthode utilisée pour développer un logiciel qui s'appuie sur la mise en place de paramètres de l'interface bien définies, ou contrats, pour toutes les parties d'un programme. Bien que la conception par contrat peut être considéré comme un style de développement conceptuel qui est mis en œuvre à travers la documentation ou de modélisation, plus largement est utilisé pour désigner un mécanisme natif ou une tierce partie dans certains langages de programmation qui nécessite effectivement le codage implicites des contrats au sein de un programme. L'objectif en utilisant la conception par contrat est qu'un programme sera élaboré et, éventuellement, codé d'une manière beaucoup plus complète qui élimine les erreurs les plus insignifiantes, tandis que l'application des contrats par le langage supportant fait des erreurs résiduelles facilement trouvé et capturé. Un programme qui utilise des contrats pour les fonctions et les classes peuvent avoir une conception plus modulaire dans lequel des cours individuels peuvent être réutilisées facilement dans d'autres programmes en raison de la définition claire de leurs contrats.
La base de la conception par philosophie de programmation du contrat est l'idée de contrats commerciaux dans le monde réel. Dans ce modèle, chaque méthode et de classe dans un programme orienté objet définit un contrat par lequel toute autre méthode ou un objet interagir avec elle doivent se conformer. Chaque classe peut aussi avoir un contrat, appelé classe invariant, qu'il doit suivre en interne pour s'assurer que les contrats extérieurs ne compromettent pas sa capacité à fonctionner.
Les deux parties d'un contrat qui sont les plus importants lors de la conception et de codage sont les conditions et les post-conditions. Ces deux parties de la conception de modèle de contrat ® définissent l'état du programme avant qu'une méthode est appelée et l'état du programme après la méthode a terminé l'exécution. D'autres parties d'un contrat peuvent varier selon la mise en œuvre, mais pourraient inclure des renvois à d'autres modules, les conditions de synchronisation et exigences d'ordre de l'exécution.
En développant des contrats pour chaque classe et de méthode, l'interaction des différentes parties d'un programme peut facilement être mappé et prédit. L'exécution de ces contrats, soit par l'utilisation d'affirmations ou d'autres mécanismes, assure également que le programme ne tentera pas d'exécuter s'il ya une violation de contrats, parce que toute sortie produite dans cet état serait techniquement invalide toute façon. Lorsque mis en œuvre comme une caractéristique de la langue maternelle, Design by contrat ® peut aider à s'assurer que le produit final sera fonctionner comme prévu avec peu de risques d'erreurs imprévues.
Parmi les complications qui viennent avec l'utilisation de la conception par contrat philosophie comprennent plus les temps de conception et de développement plus granulaire d'un système avant le codage commence, ce qui peut parfois être difficile avec un grand projet. Plus concrètement, le mécanisme de validation de contrat utilisé dans un langage de programmation qui supporte nativement contrats peut ralentir l'exécution du programme. Une mauvaise compréhension de la conception de la méthodologie du contrat peut conduire à un programme qui utilise des contrats pour effectuer la vérification des erreurs de base, conduisant potentiellement à une application qui est sujette à des accidents soudains après leur libération.