Design by contract