Design by Contract (DbC) behandler forholdet mellom en metode og dens oppkaller som en formell avtale, definert av tre ting: prekondisjon (hva oppkalleren må garantere), postkondisjoner (hva metoden garanterer til gjengjeld), og invarianter (hva som forblir sann for objektet til enhver tid).
De tre forpliktelsene
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
