Design by contract is a general approach to software design, based on software elements cooperating with each other. This book presents various areas that benefit from these ideas: testing and debugging, automatic software documentation, and software process management.