„Design by Contract®“ yra metodas, naudojamas kuriant programinę įrangą, kuri remiasi gerai apibrėžtų sąsajos parametrų arba sutarčių nustatymu visoms programos dalims. Nors „Design by Contract®“ galima žiūrėti kaip į konceptualų kūrimo stilių, kuris įgyvendinamas dokumentuojant arba modeliuojant, jis plačiau naudojamas kalbant apie vietinį ar trečiosios šalies mechanizmą kai kuriose programavimo kalbose, kuriems iš tikrųjų reikia numanomo sutarčių kodavimo. programa. Naudojant „Design by Contract®“ siekiama, kad programa būtų sukurta ir galiausiai užkoduota daug išsamesniu būdu, pašalinant daugiau nereikšmingų klaidų, o sutarčių vykdymas pagalbinėje kalboje leidžia lengvai rasti ir užfiksuoti likusias klaidas. Programa, kuri naudoja sutartis funkcijoms ir klasėms, gali turėti labiau modulinį dizainą, pagal kurį atskiros klasės gali būti lengvai pakartotinai naudojamos kitose programose dėl aiškaus jų sutarčių apibrėžimo.
„Design by Contract®“ programavimo filosofijos pagrindas yra realaus verslo sutarčių idėja. Šiame modelyje kiekvienas objektas orientuotos programos metodas ir klasė apibrėžia sutartį, kurios turi laikytis bet kuris kitas metodas ar objektas, sąveikaujantis su juo. Kiekviena klasė taip pat gali turėti sutartį, vadinamą klasės invariantu, kurios ji turi laikytis viduje, kad užtikrintų, jog išorinės sutartys nepakenktų jos gebėjimui veikti.
Dvi sutarties dalys, kurios yra svarbiausios projektuojant ir koduojant, yra išankstinės ir posąlygos. Šios dvi „Design by Contract®“ modelio dalys apibrėžia programos būseną prieš iškviečiant metodą ir programos būseną po metodo vykdymo. Kitos sutarties dalys gali skirtis priklausomai nuo įgyvendinimo, tačiau gali apimti kryžmines nuorodas į kitus modulius, sinchronizavimo sąlygas ir vykdymo tvarkos reikalavimus.
Sukūrus sutartis kiekvienai klasei ir metodui, skirtingų programos dalių sąveika gali būti lengvai atvaizduojama ir nuspėjama. Sutarčių vykdymas, naudojant tvirtinimus ar kitus mechanizmus, taip pat užtikrina, kad programa nebandys vykdyti sutarties pažeidimo, nes bet kokia tokioje būsenoje pagaminta produkcija bet kokiu atveju techniškai būtų negaliojanti. Įdiegta kaip gimtosios kalbos funkcija, „Design by Contract®“ gali padėti užtikrinti, kad galutinis produktas veiktų taip, kaip tikėtasi, o nenumatytų klaidų tikimybė yra nedidelė.
Kai kurios komplikacijos, kylančios naudojant Design by Contract® filosofiją, apima ilgesnį projektavimo laiką ir detalesnį sistemos kūrimą prieš pradedant kodavimą, o tai kartais gali būti sudėtinga atliekant didelį projektą. Praktiškai sutarčių patvirtinimo mechanizmas, naudojamas programavimo kalboje, kuri iš prigimties palaiko sutartis, gali sulėtinti programos vykdymą. Prastas „Design by Contract®“ metodikos supratimas gali sukelti programą, kuri naudoja sutartis pagrindinei klaidų patikrai, o tai gali sukelti programą, kuri po išleidimo gali staigiai sugesti.