Design by Contract
Uma abordagem para projetar software que prescreve que os projetistas de software devem definir especificações formais, precisas e verificáveis de interface para componentes de software. O contrato define pré-condições, pós-condições e invariantes.