Design by Contract
formal basis -- pre and post conditions
refinement -- by inheritance or polymorphism
runtime checks -- division of responsibility
see
Ch. 3, Contracts
slide
:
Design by Contract