Dizainas pagal sutartį (DbC) traktuoja santykį tarp metodo ir jo iškviečiamojo kaip formalų susitarimą, apibrėžtą trimis dalykais: išankstinės sąlygos (ką turi garantuoti iškviečiamasis), išankstinės sąlygos (ką metodas garantuoja grąžinti), ir invariantai (kas lieka tiesa objektui bet kuriuo metu).
Trys įsipareigojimai
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
