A concept originated by the creator of _(Eiffel), capturing the idea that interfaces should be metaphorically like contracts between the provider and the consumer of a function. This amounts often to the provider conditionally satisfying a specification based on some characteristic of the caller.

This is a useful principle, but not taken far enough by Eiffel itself.

<ul class="links">
<li>An _(introduction| http://www.gauss.muc.de/tools/dbc/dbc-intro.html) to the subject.
<li>A _(readling list| http://www.cs.rice.edu/~robby/contract-reading-list/).
<li>_(Some links| http://www.cs.kau.se/~eivind/links/#contracts).
<li>A paper describing it as _(the missing link| http://www.elj.com/eiffel/dbc/) in software design.
<li>_(From the Eiffel manual| http://archive.eiffel.com/doc/manuals/technology/contract/).
<li>_(More articles on contracts| http://www.elj.com/eiffel/feature/dbc/).
<li>_(A PLT article on contract soundness| http://www.ccs.neu.edu/scheme/pubs/oopsla01-ff.pdf).
<li>_(A PLT article on behavioral contracts| http://www.ccs.neu.edu/scheme/pubs/fse01-flf.pdf).
<li>An _(implementation| http://www.swe.uni-linz.ac.at/publications/abstract/TR-SE-97.24.html) in _(Python).
<li>An _(implementation| http://www.pragmaticprogrammer.com/ruby/downloads/dbc.html) in _(Ruby).
<li>An _(implementation| http://www.muc.de/~hoelzl/tools/dbc/) in _(Common Lisp).
<li>See also _(Perfect) and _(Sather).
</ul>