Szerződéses programozás

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt hozzászólók, és jelentősen eltérhet a 2014. december 1-jén felülvizsgált verziótól ; az ellenőrzések 33 szerkesztést igényelnek .

A szerződéses programozás ( szerződéses tervezés (DbC), szerződés szerinti programozás , szerződésalapú programozás ) egy szoftvertervezési módszer . Azt sugallja, hogy a tervezőnek formális , pontos és ellenőrizhető interfész specifikációkat kell meghatároznia a rendszerkomponensekhez. Ebben az esetben az absztrakt adattípusok szokásos definíciója mellett előfeltételek , utófeltételek és invariánsok is használatosak . Ezeket a specifikációkat "szerződéseknek" nevezik a polgári jogi szerződésekben szereplő feltételek és felelősség fogalmi metaforájának megfelelően .

Történelem

A kifejezést Bertrand Meyer javasolta az Eiffel -nyelv fejlődésével kapcsolatban . A szerződéses programozás formális ellenőrzésből , formális specifikációból és Hoare logikájából nőtt ki . A szerződéses programozás nem csupán egy egyszerű metafora az út megtervezéséhez. A szerződéses programozás használatát megkönnyítő feltételek:

Leírás

A szerződéses programozás fő gondolata egy szoftverrendszer elemei közötti interakció modellje, amely a kölcsönös kötelezettségek és előnyök elgondolásán alapul . Az üzleti élethez hasonlóan a vevő és a szállító egy meghatározott szerződés alapján működik . Egyes módszerek vagy funkciók szerződése tartalmazhatja:

Sok programozási nyelv lehetővé teszi az ilyen kötelezettségek figyelembevételét. A szerződéses programozás azt jelenti, hogy ezek a követelmények kritikusak a programok helyessége szempontjából, ezért a tervezés során jóvá kell hagyni őket. Így a szerződéses programozás előírja, hogy a kódírást formális helyességi állítások (állítások) megírásával kezdjük.

Az objektumorientált programozásban a metódusszerződés általában a következő információkat tartalmazza:

Szerződések használatakor magának a kódnak nincs szükség a végrehajtásuk ellenőrzésére. Általában ilyen esetekben kemény esés történik a kódban[ clarify ] (" fail-fast "), így könnyebbé válik a szerződések végrehajtásának hibakeresése. Számos nyelven, például C , C++ , Delphi , PHP , ezt a viselkedést a assert. A kód végső verziójában ez a viselkedés megmarad, vagy az ellenőrzések eltávolíthatók a teljesítmény javítása érdekében.

Az egységtesztek egy modult elkülönítve tesztelnek, ellenőrizve, hogy a modul megfelel-e a szerződésben foglalt feltételezéseknek, és az általa használt modulok teljesítik-e a szerződéseiket. Az integrációs tesztek igazolják, hogy a modulok megfelelően működnek együtt.

A szerződéses programozás növelheti a kód újrafelhasználását , mivel a modul kötelezettségei egyértelműen dokumentáltak. Általánosságban elmondható, hogy a modulszerződés a szoftverek dokumentálásának módjaként is felfogható .

Megvalósítás programozási nyelveken

DbC támogatás nyelvi szinten

A szerződéses programozási eszközöket natívan támogató nyelvek:

DbC támogatás harmadik féltől származó könyvtárakkal

Általános eszközök

Jegyzetek

  1. Walter, Bright D programozási nyelv, szerződéses programozás . Digitális Mars (2014. november 1.). Hozzáférés dátuma: 2014. december 1. Az eredetiből archiválva : 2014. november 28.
  2. Scala Standard Library Docs - Assertions . EPFL. Letöltve: 2020. január 12. Az eredetiből archiválva : 2019. december 25.
  3. David Morgan, Andreas Leitner és Nhat Minh Le. Contracts for Java (angol) (2011. február 4.). Letöltve: 2011. június 12. Az eredetiből archiválva : 2012. március 21..  
  4. GitHub - nrc/libhoare: Tervezés a szerződéses stílus kijelentései alapján a Rust számára . Letöltve: 2019. február 24. Az eredetiből archiválva : 2018. október 12..

Lásd még