Design by Contract é baseado em uma poderosa metáfora de como elementos de um sistema de software de interagir uns com os outros, da mesma forma que as empresas colaboram: com base em obrigações ebenefícios mútuos.
O "cliente" e "fornecedor" concordar com um "contrato" que:
- O fornecedor deve fornecer um resultado determinado (obrigação) e tem o direito de esperar que o cliente ter satisfeito as condições exigidas (benefício).
- O cliente deve satisfazer estas condições (obrigação) e tem o direito de obter o resultado (benefício).
- Ambas as partes devem cumprir determinadas leis e regulamentos gerais, aplicando-se a todos os contratos.
Design by Contract transforma esses elementos em componentes integrais do software: pré-condições (obrigações do cliente, benefícios fornecedor);
Pós-condições (benefícios de cliente, obrigações do fornecedor);
Invariantes (regras gerais).
Esses conceitos existem em todos os níveis:
- requisitos
- projeto
- implementação
- teste
Design by Contract revoluciona construção de software por eliminará erros antes que eles têm a oportunidade de prejudicar o software.
Design by Contract fornece:
- documentação automática, de alta qualidade.
- quadro integrado para testes específicos e eficazes.
- a capacidade de comunicar seu projeto sem a necessidade de descrever os detalhes da implementação.
- um guia claro e simples ao longo de todo o processo de desenvolvimento de software.
Aguardar uma certa condição para garantir que uma informação no módulo de clientes o chame: a pré-condição da rotina — uma obrigação para o cliente, e o benefício do fornecedor (a rotina em si), eliminando casos de executar por outros meios.
- Garantir uma certa condição de saída: A pós-condição da rotina — uma obrigação do fornecedor, e obviamente um benefício (o maior benefício de chamar a rotina) para o cliente.
- Manter uma determinada propriedade, assumida na entrada e garantida na saída: uma Classe Constante.
É possível resumir Programação por contrato através de "3 perguntas" que um designer deve-se fazer constantemente:
- O que isto prevê?
- O que isto garante?
- O que isto mantém?
É um desafio para a construção de uma especificação que:
- é o mais simples possível
- é o mais claro possível
- não tem nenhuma ambiguidade
- é totalmente preciso
- permite que o leitor ignore completamente os detalhes de implementação (a menos que há um bug)
- forneça entendimento ao leitor o mais rápido possível, com pouca chance de mal-entendido
Design By Contract é muito útil para a criação de classes e interfaces.
Ele pode tanto orientar a descoberta de um design mais robusto.
Ele pode tanto orientar a descoberta de um design mais robusto.
Referências:
Nenhum comentário:
Postar um comentário
Observação: somente um membro deste blog pode postar um comentário.