Design By Contract and the Component Revolution
Bertrand Meyer · Technology of Object-Oriented Languages and Systems · 2000
Design by Contract tackles head-on the issue of software reliability, by taking a holistic approach to the construction of systems so that they will work correctly the first time around. Based on a simple yet powerful metaphor — software systems as collections of components that interact through contracts, similar to those between people or companies — it has a profound effect on almost every aspect of software development, from analysis and design to implementation, documentation, debugging, quality assurance, maintenance, and project management.