Software contracts take the form of routine preconditions, postconditions, and class invariants written into the program itself. The design by contract methodology uses such contracts for building each software element, an approach that is particularly appropriate for developing safety-critical software and reusable libraries. This methodology is a key design element of some existing libraries, especially the Eiffel Software development environment, which incorporates contract mechanisms in the programming language itself. Because the authors see the contract metaphor as inherent to quality software development, they undertook the work reported in the article as a sanity check to determine whether they see contracts everywhere simply because their development environment makes using them natural or whether contracts are intrinsically present, even when other designers don't express or even perceive them. They studied classes from the .NET collections library for implicit contracts and assessed improvements that might result from making them explicit.
[1]
Michael D. Ernst,et al.
Dynamically discovering likely program invariants
,
2000
.
[2]
James C. McKim,et al.
Design by Contract, By Example
,
2001,
TOOLS.
[3]
簡聰富,et al.
物件導向軟體之架構(Object-Oriented Software Construction)探討
,
1989
.
[4]
Karine Arnout,et al.
The .NET Contract Wizard: adding Design by Contract to languages other than Eiffel
,
2001,
Proceedings 39th International Conference and Exhibition on Technology of Object-Oriented Languages and Systems. TOOLS 39.
[5]
C. A. R. Hoare,et al.
Proof of correctness of data representations
,
1972,
Acta Informatica.
[6]
Bertrand Meyer,et al.
Applying 'design by contract'
,
1992,
Computer.
[7]
Jean-Marc Jézéquel,et al.
Design by Contract: The Lessons of Ariane
,
1997,
Computer.
[8]
MeyerBertrand,et al.
Design by Contract
,
1997
.
[9]
Bertrand Meyer,et al.
Reusable Software: The Base Object-Oriented Component Libraries
,
1994
.