Diretriz: Modelo de Design
Esta diretriz explica como derivar o Modelo de Design a partir do Modelo de Análise.
Relacionamentos
Elementos Relacionados
Descrição Principal

Identificando Elementos de Design de Classes de Análise Para o início da página

O Produto de Trabalho: Classes de Análise representa as funções desempenhadas por instâncias de elementos de design; essas funções podem ser preenchidas por um ou mais elementos de modelo de design. Além disso, um único elemento de design pode desempenhar vários papéis. As observações abaixo abordam as maneiras como os papéis de análise podem ser desempenhados:

  • Uma classe de análise pode tornar-se uma única classe de design no modelo de design.
  • Uma classe de análise pode tornar-se parte de uma classe de design no modelo de design.
  • Uma classe de análise pode tornar-se de uma classe de design agregada no modelo de design. (Ou seja, as partes dessa agregação podem não estar modeladas explicitamente como classes de análise.)
  • Uma classe de análise pode tornar-se um grupo de classes de design que herda da mesma classe no modelo de design.
  • Uma classe de análise pode tornar-se um grupo de classes de design funcionalmente relacionadas no modelo de design.
  • Uma classe de análise pode tornar-se de um subsistema de design no modelo de design.
  • Uma classe de análise pode tornar-se parte de um subsistema de design, como uma ou mais interfaces e suas implementações correspondentes.
  • Uma classe de análise pode vir a ser um relacionamento no modelo de design.
  • Um relacionamento entre classes de análise pode tornar-se uma classe de design no modelo de design.
  • As classes de análise manipulam principalmente os requisitos funcionais e objetos de modelo provenientes do domínio de "problema", as classes de design manipulam os requisitos não-funcionais e objetos de modelo provenientes do domínio de "solução".
  • As classes de análise podem ser utilizadas para representar "os objetos que desejamos que sejam suportados pelo sistema", sem tomar uma decisão sobre quantos devem ser suportados com hardware e quantos com software. Assim, parte de uma classe de análise pode ser usada pelo hardware e não estar definida no modelo de design.

Qualquer combinação dos itens descritos acima também é possível.

Se um Modelo de Análise separado for mantido, certifique-se de manter a rastreabilidade do elemento de design identificado para as Classes de Análise às quais corresponderem.  Para obter informações adicionais, consulte Mapeando para o Modelo de Análise.

Mapeando para o Modelo de Análise Para o início da página

Esta seção se aplicará apenas se um Modelo de Análise for mantido.

Durante o design, são identificados elementos de design que suportam um alinhamento mais estrito com a arquitetura e as tecnologias escolhidas.  Toda Classe de Análise no Modelo de Análise deve ser associada a pelo menos uma classe de design no Modelo de Design.

Para modelar essa rastreabilidade, uma dependência de <<rastreio>> deve ser desenhada do elemento de design para a(s) classe(s) que ela representa, conforme mostrado no diagrama a seguir: 

O Diagrama amostra dependência de rastreio.

Nota: os links de rastreabilidade são desenhados dos elementos do Modelo de Design aos elementos do Modelo de Análise, de modo que o Modelo de Design seja dependente do Modelo de Análise e não ao contrário.

Mapeando para o Modelo de Implementação

Antes de iniciar o design, você deve escolher como as classes do modelo de design devem se relacionar às classes de implementação. No Guia de Design, você pode obter mais informações específicas sobre o projeto.

O modelo de design pode se aproximar mais ou menos do modelo de implementação, dependendo de como você mapeia classes, pacotes e subsistemas para classes de implementação, arquivos, pacotes e subsistemas no modelo de implementação. Durante a implementação, você abordará muitas vezes pequenas questões táticas relacionadas ao ambiente de implementação que não devem impactar o modelo de design. Por exemplo, as classes e os subsistemas podem ser adicionados durante a implementação para lidar com o desenvolvimento paralelo ou ajustar dependências de importação. Para obter informações adicionais, consulte Tarefa: Estruturar o Modelo de Implementação e Técnica: Mapeando de Design para Código.

O mapeamento do modelo de design para o modelo de implementação deve ser consistente. O Produto de Trabalho: Diretrizes Específicas do Projeto deve definir este mapeamento e um nível consistente de abstração deverá ser aplicado em todo o modelo de design.

Características de um Bom Modelo de Design

Um bom modelo de design tem as características a seguir:

  • Satisfaz os requisitos do sistema.
  • Resiste a mudanças efetuadas no ambiente de implementação.
  • É de fácil manutenção em relação a outros possíveis modelos de objeto e à implementação do sistema.
  • Tem um procedimento de implementação claro.
  • Não inclui informações que estejam melhor documentadas no código do programa.
  • Adapta-se facilmente a mudanças efetuadas em requisitos.

Para obter características específicas, consulte Lista de Verificação: Modelo de Design.