Despite its' power, design by contract is an underutilized software development technique. That is most likely explained by the speed of software development and the time that would be required to learn it well enough to use it. Most developers either do not, or feel that they do not have the time to stop and learn how to use design by contract effectively. Well, the former group simply cannot be helped, as not even design by contract will extend the time in a day. However, for the latter group, this book is for you.
Design by contract is not difficult to learn, as is demonstrated in this book. The examples are very easy to understand and are chosen for their combination of ease of use as well as having applicability to the kinds of programs that developers create. While Eiffel and Java are used to create the examples, it is not critical that you know them to understand the code. The only requirement is that you understand the basic principles of object-oriented programming. While some background in logic would be helpful, all that is needed is what is required for writing correct Boolean expressions in programs.
I am a big proponent of the design by contract model of software development. The writing of the contract principles forces a level of intellectual rigor that can dramatically improve the quality of your software. In this book, you can not only learn how to do it, but you will also learn how to do it well and the ways in which you can do it wrong. I have placed it in my list of the top ten books of the year.