დიზაინი ხელშეკრულებით (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
