See CodeClassInvariants, DesignByContract.