Co je to design od Contract®?
Design by Contract® je metoda používaná k vývoji softwaru, který se spoléhá na vytvoření dobře definovaných parametrů rozhraní nebo smluv pro všechny části programu. Ačkoli návrh společností Contract® lze považovat za styl koncepčního vývoje, který je implementován prostřednictvím dokumentace nebo modelování, více se používá k označení mechanismu nativní nebo třetí strany v některých programovacích jazycích, které ve skutečnosti vyžaduje implicitní kódování smluv v rámci programu. Cílem při používání Design by Contract® je to, že program bude vyvinut a nakonec kódován mnohem úplnějším způsobem, který odstraňuje více triviálních chyb, zatímco prosazování smluv podpůrným jazykem umožňuje snadno nalezeno a zachyceno zbytkové chyby. Program, který používá smlouvy na funkce a třídy, může mít modulární design, ve kterém lze jednotlivé třídy znovu použít v jiných programech kvůli jasné definici jejich smluv.
Základ pror Design by Contract® Programming Philosophy je myšlenka obchodních smluv v reálném světě. V tomto modelu definuje každá metoda a třída v objektově orientovaném programu smlouvu, kterou musí dodržovat jakákoli jiná metoda nebo objekt, který s ní interaguje. Každá třída také může mít smlouvu, nazvanou invariantní třídu, že musí následovat interně, aby zajistila, že externí smlouvy neohrožují její schopnost fungovat.
Dvě části smlouvy, které jsou nejdůležitější během návrhu a kódování, jsou předpoklady a post-kondice. Tyto dvě části návrhu podle modelu Contract® Definují stav programu před voláním metody a stav programu po dokončení metody. Ostatní části smlouvy se mohou lišit implementací, ale mohou zahrnovat křížové odkazy na jiné moduly, podmínky synchronizace a požadavky na pořadí.
Vývojem smluv pro každou třídu a metodu lze interakci různých částí programu snadno mapovat a předvídat. Vymáhání smluv, ať už pomocí tvrzení nebo jiných mechanismů, také zajišťuje, že se program nepokouší provést, pokud dojde k porušení smluv, protože jakýkoli výstup vytvořený v tomto státě by byl stejně neplatný. Při implementaci jako funkce rodného jazyka může Design by Contract® pomoci zajistit, aby konečný produkt fungoval podle očekávání s malou šancí na nepředvídané chyby.
Některé komplikace, které přicházejí s použitím návrhu filozofií Contract®, zahrnují delší doby návrhu a podrobnější vývoj systému před začátkem kódování, což může být někdy obtížné s velkým projektem. Praktičtější je prakticky, mechanismus validace smlouvy používaný v programovacím jazyce, který nativně podporuje smlouvy, může zpomalit provádění programu. Špatné porozumění tNávrh podle metodiky Contract® může vést k programu, který používá smlouvy k provádění základní kontroly chyb, což potenciálně vede k aplikaci, která je po uvolnění náchylná k náhlým havárii.