ডিজাইন বাই কন্ট্র্যাক্ট (DbC) একটি method এবং এর caller এর মধ্যে সম্পর্ককে একটি আনুষ্ঠানিক চুক্তি হিসেবে বিবেচনা করে, যা তিনটি জিনিস দ্বারা সংজ্ঞায়িত: preconditions (caller কে যা নিশ্চিত করতে হবে), 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
