Wat is een ontwerp van Contract®?

Design by Contract® is een methode die wordt gebruikt om software te ontwikkelen die afhankelijk is van de oprichting van goed gedefinieerde interfaceparameters of contracten, voor alle delen van een programma. Hoewel ontwerp door Contract® kan worden gezien als een conceptuele ontwikkelingsstijl die wordt geïmplementeerd door documentatie of modellering, wordt het breder gebruikt om te verwijzen naar een native of derden mechanisme binnen sommige programmeertalen die daadwerkelijk de impliciete codering van de contracten binnen een programma vereist. Het doel bij het gebruik van Design by Contract® is dat een programma zal worden ontwikkeld en uiteindelijk op een veel complete manier wordt gecodeerd die meer triviale fouten verwijdert, terwijl de handhaving van de contracten door de ondersteunende taal eventuele resterende fouten gemakkelijk kan worden gevonden en vastgelegd. Een programma dat contracten voor functies en klassen gebruikt, kan een meer modulair ontwerp hebben waarin individuele klassen gemakkelijk kunnen worden hergebruikt in andere programma's vanwege de duidelijke definitie van hun contracten.

De basis voorR Het ontwerp door Contract® Programming Philosophy is het idee van real-world zakelijke contracten. In dit model definieert elke methode en klasse in een objectgeoriënteerd programma een contract waarmee elke andere methode of object die ermee omgaat, moet blijven. Elke klas kan ook een contract hebben, een klasse invariant genoemd, dat het intern moet volgen om ervoor te zorgen dat externe contracten zijn vermogen om te functioneren niet in gevaar brengen.

De twee delen van een contract die het belangrijkst zijn tijdens ontwerp en codering zijn de voorwaarden en de post-conditions. Deze twee delen van het ontwerp door Contract® -model definiëren de status van het programma voordat een methode wordt opgeroepen en de status van het programma nadat de methode is voltooid. Andere delen van een contract kunnen variëren door implementatie, maar kunnen kruisverwijzingen naar andere modules, synchronisatiecondities en vereisten voor de orde-uitvoering omvatten.

Door contracten voor elke klasse en methode te ontwikkelen, kan de interactie van de verschillende delen van een programma gemakkelijk worden toegewezen en voorspeld. De handhaving van de contracten, hetzij door het gebruik van beweringen of andere mechanismen, zorgt er ook voor dat het programma niet zal proberen uit te voeren als er een schending van contracten is, omdat elke in die staat geproduceerde output technisch gezien toch ongeldig zou zijn. Wanneer geïmplementeerd als een functie van moedertaal, kan ontwerp door Contract® helpen ervoor te zorgen dat een eindproduct zal werken zoals verwacht met weinig kans op onvoorziene fouten.

Sommige complicaties die worden gepaard met het gebruik van het ontwerp door Contract® -filosofie omvatten langere ontwerptijden en meer gedetailleerde ontwikkeling van een systeem voordat codering begint, wat soms moeilijk kan zijn met een groot project. Meer praktisch, het contractvalidatiemechanisme dat wordt gebruikt in een programmeertaal die native contracten ondersteunt, kunnen de uitvoering van het programma vertragen. Een slecht begrip van tHij ontwerp door contract® -methodologie kan leiden tot een programma dat contracten gebruikt om basisfoutcontrole uit te voeren, wat mogelijk leidt tot een applicatie die vatbaar is voor plotselinge crashes na release.

ANDERE TALEN