Conceito: Mapeamento para Código a partir do Design.
Esta diretriz descreve algumas opções diferentes para passar de um design para a implementação e descreve as vantagens e desvantagens dessas abordagens.
Relacionamentos
Elementos Relacionados
Descrição Principal

Introdução

O design deve definir o sistema o suficiente para que possa ser implementado sem ambigüidade. A idéia do que é suficiente varia de um projeto para outro e de uma empresa para outra.

Em alguns casos, o design remonta um esboço, elaborado apenas o suficiente para assegurar que o implementador possa continuar (uma abordagem de "esboço e código"). O grau de especificação varia conforme o conhecimento do implementador, a complexidade do design e o risco de que o design possa ser construído erroneamente.

Em outros casos, o design é elaborado até o ponto em que o design pode ser transformado automaticamente em código. Isso geralmente envolve extensões para a UML padrão para representar a semântica específica da linguagem e/ou ambiente.

O design também pode ser hierárquico, conforme a seguir:

  • um modelo de design de alto nível que esboça uma visão geral do sistema global
  • um modelo de especificação de subsistema que especifica com exatidão as interfaces e o comportamento necessários dos principais subsistemas do sistema
  • um modelo de design detalhado para as partes internas dos subsistemas

O Caso de Desenvolvimento deve definir como o Modelo de Design é realizado no processo específico do projeto e como/se o modelo está relacionado a outros modelos e à implementação. Os detalhes devem ser capturados nas Diretrizes Específicas do Projeto.

As seções a seguir descrevem algumas opções diferentes para relacionar um design e uma implementação e discutir as vantagens e desvantagens dessas abordagens.

Esboço e Código

Uma abordagem comum para o design é esboçar o design em um nível completamente abstrato e, em seguida, mover diretamente para o código. A manutenção do modelo de design é manual.

Nesta abordagem, deixamos uma classe de design ser uma abstração de várias classes de nível de código. É recomendável mapear cada classe de design para uma classe "principal" que, por sua vez, pode utilizar várias classes "assistentes" para desempenhar seu comportamento. Você pode utilizar as classes "assistentes" para implementar um atributo complexo ou para construir uma estrutura de dados necessária para a implementação de uma operação. No design, você não modela as classes "assistentes" e modela apenas os atributos, relacionamentos e operações chave definidos pela classe principal. A finalidade desse modelo é a abstração dos detalhes que podem ser completados pelo implementador.

Essa abordagem é estendida para aplicar-se aos outros elementos do modelo de design. Você pode ter interfaces de design que sejam mais abstratas que as interfaces de nível de código e assim por diante.

Engenharia Round-Trip

Em ambientes de engenharia round-trip, o modelo de design evolui para um nível de detalhe em que torna-se uma representação visual do código. O código e sua representação visual são sincronizados (com o suporte a ferramentas).

A seguir estão algumas opções para representar um Modelo de Design em um contexto de engenharia round-trip.

Modelo de Design de Nível Alto e Modelo de Design DetalhadoPara o início da página

Nesta abordagem, há dois níveis de modelo de design mantidos. Cada elemento de design de alto nível é uma abstração de um ou mais elementos detalhados no modelo round-trip. Por exemplo, uma classe de design pode ser mapeada para uma classe "principal" e várias classes "assistentes", exatamente como na abordagem de "esboço e código" descrita anteriormente. A rastreabilidade dos elementos do modelo de design de alto nível para elementos do modelo round-trip pode ajudar a manter a consistência entre os dois modelos.

Embora possa ajudar a abstrair detalhes menos importantes, esse benefício deve ser equilibrado com o esforço necessário para manter a consistência entre os modelos.

Modelo de Design de Evolução ÚnicaPara o início da página

Nesta abordagem, há um único Modelo de Design. Os esboços iniciais dos elementos de design evoluem para o ponto no qual podem ser sincronizados com o código. Os diagramas, como aqueles utilizados para descrever realizações de casos de uso de design, referenciam inicialmente as classes de design esboçadas, mas às vezes referenciam classes específicas da linguagem. As descrições de alto nível do design são mantidas conforme necessário, tais como:

  • diagramas da estrutura lógica do sistema,
  • especificações de subsistema/componente,
  • padrões / mecanismos de design.

Esse modelo é mais fácil de se manter consistente com a implementação.

Modelos de Especificação e de Realização

Uma abordagem relacionada é definir o design em termos de especificações para os principais subsistemas, detalhados ao ponto em que as implementações podem ser compiladas em relação a eles.

O design detalhado da realização do subsistema pode ser modelado e mantido separadamente a partir desse modelo de especificação.

Consulte Diretriz do Produto de Trabalho: Subsistema de Design para obter as diretrizes relacionadas às especificações e realizações do subsistema e quando elas devem ser utilizadas.