Design by contract (DBC) je metoda čiji je autor Bertrand Meyer, tvorac OOPL jezika Eiffel, a razvio ju je 80-tih godina prošlog stoljeća.
U radu se prikazuje pokušaj primjene DBC metode u programskom jeziku Oracle PL/SQL.
SAŽETAK
DBC se zasniva na ideji da svaka metoda (procedura ili funkcija), uz “standardni” programski kod, treba imati još dva dodatna dijela – pretkondiciju (precondition) i postkondiciju (postcondition). Klasa treba imati još jedan dodatni dio – invarijantu (invariant).
Ugovor (contract) se zasniva na tome da metoda “zahtijeva” od svog pozivatelja (neke druge metode) da zadovolji uvjete definirane u pretkondiciji plus uvjete definirane u invarijanti, a ona (pozvana metoda) se tada “obvezuje” da će na kraju zadovoljiti uvjete definirane u postkondiciji plus uvjete definirane u invarijanti.
Ideja je na neki način upravo suprotna od tzv. defanzivnog programiranja, koje zagovora da se u svim mogućim trenucima pokušava što više toga provjeriti.
Eiffel u potpunosti podržava DBC. Za sada niti jedan drugi OOPL ne podržava DBC u potpunosti, barem ne na razini jezika. Međutim, moguće je primijeniti DBC i u ostalim OOPL jezicima (pretkondicije i postkondicije se mogu primijeniti i u ne-OOPL jezicima, ali se invarijante mogu realizirati samo u OOPL jezicima).