Design by Contract (DbC), bir metot ve çağıranı arasındaki ilişkiyi üç şeyle tanımlanan resmi bir anlaşma olarak ele alır: ön koşullar (çağıranın garantilemesi gereken şeyler), son koşullar (metotun karşılık olarak garantilediği şeyler) ve değişmezler (nesne için her zaman doğru kalan şeyler).
Üç yükümlülük
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
