Design by Contract (DbC) coi quan hệ giữa một method và bên gọi nó như một thỏa thuận chính thức, được định nghĩa bởi ba thứ: tiền điều kiện (precondition) (điều bên gọi phải đảm bảo), hậu điều kiện (postcondition) (điều method đảm bảo trả lại), và bất biến (invariant) (điều luôn đúng với object ở mọi lúc).
Ba nghĩa vụ
PRECONDITION → nghĩa vụ của bên gọi: input/trạng thái method cần để chạy đúng
POSTCONDITION → nghĩa vụ của method: điều nó hứa khi trả về (nếu precondition đúng)
INVARIANT → thuộc tính luôn-đúng của object, trước và sau mỗi method
