Design by Contract (DbC) i trajton marrëdhëniet midis një metode dhe thirrësit të saj si një marrëveshje formale, e përcaktuar nga tre gjëra: përparësimet (çfarë duhet të garantojë thirrësi), postpërparësimet (çfarë garanton metoda në këmbim) dhe invariantet (çfarë mbetet e vërtetë për objektin gjatë gjithë kohës).
Tre obligimet
PRECONDITION → caller's duty: inputs/state the method requires to run correctly
POSTCONDITION → method's duty: what it promises on return (if precondition held)
INVARIANT → always-true property of the object, before and after every method
