O que é um design da Contract®?

Design by Contract® é um método usado para desenvolver um software que se baseia no estabelecimento de parâmetros de interface bem definidos ou contratos, para todas as partes de um programa. Embora o design do Contract® possa ser visto como um estilo de desenvolvimento conceitual que é implementado por meio de documentação ou modelagem, ele é mais amplamente usado para se referir a um mecanismo nativo ou de terceiros em algumas linguagens de programação que realmente requer a codificação implícita dos contratos dentro de um programa. A meta no uso do Design by Contract® é que um programa será desenvolvido e, eventualmente, codificado de uma maneira muito mais completa que remove mais erros triviais, enquanto a aplicação dos contratos pelo idioma de suporte faz com que quaisquer erros residuais encontrados e capturados facilmente. Um programa que usa contratos para funções e classes pode ter um design mais modular, no qual classes individuais podem ser reutilizadas facilmente em outros programas devido à definição clara de seus contratos.

A base parar O Design by Contract® Programming Philosophy é a idéia de contratos comerciais do mundo real. Neste modelo, cada método e classe em um programa orientado a objetos define um contrato pelo qual qualquer outro método ou objeto interagindo deve cumprir. Cada classe também pode ter um contrato, chamado de classe invariante, que deve seguir internamente para garantir que os contratos externos não comprometam sua capacidade de funcionar.

As duas partes de um contrato que são mais importantes durante o projeto e a codificação são as pré-condições e as condições pós-condições. Essas duas partes do modelo de design por contrato® definem o estado do programa antes que um método seja chamado e o estado do programa após a conclusão do método. Outras partes de um contrato podem variar de acordo com a implementação, mas podem incluir referências cruzadas para outros módulos, condições de sincronização e requisitos de ordem de execução.

Ao desenvolver contratos para cada classe e método, a interação das diferentes partes de um programa pode ser facilmente mapeada e prevista. A aplicação dos contratos, seja através do uso de afirmações ou outros mecanismos, também garante que o programa não tente executar se houver uma violação de contratos, porque qualquer produto produzido nesse estado tecnicamente seria inválido de qualquer maneira. Quando implementado como um recurso de idioma nativo, o design do Contract® pode ajudar a garantir que um produto final opere como esperado com pouca chance de erros imprevistos.

Algumas das complicações que vêm com o uso do design pela Filosofia Contract® incluem tempos de design mais longos e mais desenvolvimento granular de um sistema antes do início da codificação, o que às vezes pode ser difícil com um grande projeto. Mais praticamente, o mecanismo de validação do contrato usado em uma linguagem de programação que suporta nativamente os contratos pode retardar a execução do programa. Uma má compreensão de tO design da metodologia do Contract® pode levar a um programa que usa contratos para realizar a verificação básica de erros, levando potencialmente a um aplicativo que é propenso a acidentes repentinos após a liberação.

OUTRAS LÍNGUAS

Este artigo foi útil? Obrigado pelo feedback Obrigado pelo feedback

Como podemos ajudar? Como podemos ajudar?