Programování smluv

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 1. prosince 2014; kontroly vyžadují 33 úprav .

Smluvní programování ( design by contract (DbC), programování na základě smlouvy , programování založené na smlouvě ) je metoda návrhu softwaru . Navrhuje, že návrhář musí definovat formální , přesné a ověřitelné specifikace rozhraní pro systémové komponenty. V tomto případě se kromě obvyklé definice abstraktních datových typů používají také předpoklady , postpodmínky a invarianty . Tyto specifikace se nazývají „smlouvy“ v souladu s konceptuální metaforou podmínek a odpovědností v občanskoprávních smlouvách .

Historie

Termín navrhl Bertrand Meyer v souvislosti s vývojem Eiffelova jazyka . Smluvní programování vyrostlo z formálního ověření , formální specifikace a Hoareovy logiky . Smluvní programování není jen jednoduchou metaforou pro navrhování způsobu. Podmínky, které usnadňují používání smluvního programování:

Popis

Hlavní myšlenkou smluvního programování je model interakce mezi prvky softwarového systému založený na myšlence vzájemných závazků a výhod . Stejně jako v podnikání, zákazník a dodavatel fungují na základě konkrétní smlouvy . Smlouva o nějaké metodě nebo funkci může zahrnovat:

Mnoho programovacích jazyků umožňuje takové povinnosti vzít v úvahu. Smluvní programování znamená, že tyto požadavky jsou kritické pro správnost programů, takže musí být schváleny během návrhu. Smluvní programování tedy předepisuje začít psát kód psaním formálních tvrzení o správnosti (tvrzení).

V objektově orientovaném programování smlouva o metodě obvykle obsahuje následující informace:

Při používání smluv není vyžadován samotný kód ke kontrole jejich provedení. Obvykle v takových případech je v kódu proveden tvrdý pád[ objasnit ] (" fast-fast "), což usnadňuje ladění provádění smluv. V mnoha jazycích, jako je C , C++ , Delphi , PHP , je toto chování implementováno pomocí assert. V konečné verzi kódu může být toto chování zachováno nebo mohou být kontroly odstraněny, aby se zlepšil výkon.

Unit testy testují modul izolovaně a ověřují, že modul splňuje předpoklady smlouvy a že moduly, které používá, plní své smlouvy. Integrační testy ověřují, že moduly spolupracují správně.

Programování smluv může zvýšit opětovné použití kódu , protože povinnosti modulu jsou jasně zdokumentovány. Obecně lze smlouvu na modul chápat také jako způsob dokumentace softwaru .

Implementace v programovacích jazycích

Podpora DbC na jazykové úrovni

Jazyky nativně podporující smluvní programovací nástroje:

Podpora DbC s knihovnami třetích stran

Obecné nástroje

Poznámky

  1. Walter, programovací jazyk Bright D, smluvní programování . Digitální Mars (1. listopadu 2014). Datum přístupu: 1. prosince 2014. Archivováno z originálu 28. listopadu 2014.
  2. Dokumenty standardní knihovny Scala – tvrzení . EPFL. Staženo 12. ledna 2020. Archivováno z originálu 25. prosince 2019.
  3. David Morgan, Andreas Leitner a Nhat Minh Le. Contracts for Java (anglicky) (4. února 2011). Získáno 12. června 2011. Archivováno z originálu 21. března 2012.  
  4. GitHub - nrc/libhoare: Návrh podle stylu smlouvy pro Rust . Staženo 24. února 2019. Archivováno z originálu 12. října 2018.

Viz také