I'm in the early stages of learning design-by-contract (DbC). And I think that if followed correctly, it can produce very high quality software. This gets me wondering though... why isn't it used a lot? Are there some issues in using it effectively within the typical software development process? For instance, does it make changing the requirements midway of a project difficult?
I know that for some problems, it's difficult to express the solution using DbC. But I think if practiced properly, it can save teams from maintenance head aches. And considering how much resources are expended on software maintenance, the upfront cost of using DbC during design time may be well worth it.