Design by Contract (DbC) एक पद्धति और उसके कॉलर के बीच संबंध को एक औपचारिक समझौते के रूप में मानता है, जो तीन चीजों द्वारा परिभाषित है: पूर्व शर्तें (जो कॉलर को गारंटी देनी चाहिए), बाद की शर्तें (जो पद्धति बदले में गारंटी देती है), और अपरिवर्तनीय (जो वस्तु के लिए हमेशा सच रहते हैं)।
तीन दायित्व
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
