Design by Contract ™, the importance of interface specifications.

As an advocate of developing with strong interface specifications, based upon solid requirements, I was recently looking for a good explanation I could refer developers to.  Eiffel Software and Betrand Meyer provide thorough descriptions of the benefits.

Design by Contract (tm)
Programming by Contract
Contract Programming
Contract-First development

http://en.wikipedia.org/wiki/Design_by_contract

Design by Contract (DbC) or Programming by Contract is an approach to designing computer software. It prescribes that software designers should define formal, precise and verifiable interface specifications for software components, which extend the ordinary definition of abstract data types with preconditions, postconditions and invariants. These specifications are referred to as “contracts”, in accordance with a conceptual metaphor with the conditions and obligations of business contracts.

Because Design by Contract is a registered trademark[1] of Eiffel Software in the United States, many developers refer to it as Programming by Contract, Contract Programming, or Contract-First development.
The term was coined by Bertrand Meyer in connection with his design of the Eiffel programming language and first described in various articles starting in 1986[2][3][4] and the two successive editions (1988, 1997) of his book Object-Oriented Software Construction. Eiffel Software applied for trademark registration for Design by Contract in December 2003, and it was granted in December 2004.[5][6] The current owner of this trademark is Eiffel Software.[1][7]

OTHER:
http://www.dugaldmorrow.com/index.php?option=com_content&task=view&id=19&Itemid=38
http://www.eiffel.com/developers/design_by_contract.html
http://www.eiffel.com/developers/presentations/
http://www.artima.com/cppsource/deepspace.html
http://www.eventhelix.com/realtimemantra/Object_Oriented/design_by_contract.htm

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s