Softcontract: an assertion-based software development process that enables design-by-contract.