CSC/ECE 517 Fall 2007/wiki3 2 dp: Difference between revisions
No edit summary |
No edit summary |
||
Line 12: | Line 12: | ||
<p> | <p> | ||
Programming by contract is a way of designing programs. Each | Programming by contract is a way of designing programs. Each program component has a "contract" which specifies how it should cooperate with the rest of the program. | ||
</p> | </p> | ||
<p> | <p> | ||
This documentation is usually only written in | This documentation is usually only written in human understandable form rather than something syntactical. | ||
eg- When given a positive real number, this function calculates its square root. | |||
This contract contains two parts, the input spesification (postive real number) and the output specification (calculates the square root). | |||
</p> | </p> | ||
<p> | <p> |
Revision as of 17:01, 17 November 2007
Topic
Find some concise examples that illustrate the principle of programming by contract, and are accessible to a general audience of programmers.
Definition
Programming by contract is a software development approach that enforces the developers to define concrete and verifiable interface specifications for the software code. It is based on the theory of a business contract.
Norms of the contract
Programming by contract is a way of designing programs. Each program component has a "contract" which specifies how it should cooperate with the rest of the program.
This documentation is usually only written in human understandable form rather than something syntactical. eg- When given a positive real number, this function calculates its square root. This contract contains two parts, the input spesification (postive real number) and the output specification (calculates the square root).
The idea behind "programming by contract" is that one should make as much of this information available to the computer as possible. This means that the system itself can catch a lot of the simple errors programmers make.
The core idea of programming by contract is how components of a software system collaborate with each other on the basis of mutual obligations and benefits. The concept is drawn from the business domain where clients and suppliers agree on a contract that defines certain norms. The corresponding norms that one can associate with a software system are –
• Preconditions - Certain obligations need to be fulfilled by any module which calls the software component are called as pre-conditions. The module making the call is called the client. The preconditions are the obligations that the client needs to fulfill and are benefits for the software component, called the supplier, as it frees the supplier from having to handle cases outside of the precondition. • Postconditions - The supplier in turn, needs to guarantee certain outputs or certain properties on exit. These set of properties are called the supplier's postconditions. These postconditions are obligations for the supplier, and benefits for the client obtained from calling the supplier module. • Class invariant - The supplier needs to maintain a certain property that is assumed to exist on entry and is guaranteed on exit, called the class invariant.