Design by Contract (DbC) αντιμετωπίζει τη σχέση μεταξύ μιας method και του καλούντος ως μια τυπική συμφωνία, ορισμένη από τρεις πράγματα: preconditions (τι πρέπει να εγγυηθεί ο καλών), postconditions (τι εγγυάται η method αντιστοίχως), και invariants (τι παραμένει αληθές για το object ανά πάσα στιγμή).
Οι τρεις υποχρεώσεις
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
