Design by contract

related topics
{math, number, function}
{company, market, business}
{system, computer, user}
{law, state, case}
{theory, work, human}
{work, book, publish}
{service, military, aircraft}
{day, year, event}
{game, team, player}

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.

Contents

History

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]

Design by Contract has its roots in work on formal verification, formal specification and Hoare logic. The original contributions include:

Full article ▸

related documents
Java API for XML Processing
Tiny BASIC
Serial number
World file
Pliant
Client-side scripting
Initialization vector
C shell
Wikipedia:Browser notes
Java Naming and Directory Interface
Bytecode
Data type
Meta-Object Facility
AIML
Curl (programming language)
Wikipedia:Database queries
Availability
XML-RPC
8.3 filename
Single precision
Interchange File Format
Flyweight pattern
Canonical LR parser
Computer algebra system
Data integrity
Most significant bit
EXPTIME
Unification
E.164
Dirichlet's theorem on arithmetic progressions