Criar diagramas de dependência do código

Para visualizar a arquitetura lógica de alto nível do sistema de software, crie um diagrama de dependência no Visual Studio. Para verificar se o código permanece consistente com esse design, valide seu código com um diagrama de dependência. É possível criar diagramas de dependência para projetos do Visual C# e do Visual Basic. Para ver quais edições do Visual Studio dão suporte a esse recurso, confira Suporte de edição para ferramentas de arquitetura e modelagem.

Criar um diagrama de dependência

Um diagrama de dependência permite organizar itens de solução do Visual Studio em grupos abstratos, lógicos, chamados de camadas. É possível usar camadas para descrever as tarefas principais realizadas por esses artefatos ou os componentes principais do sistema.

Cada camada pode conter outras camadas que descrevem tarefas mais detalhadas. Também é possível especificar as dependências desejadas ou existentes entre camadas. Essas dependências, representadas como setas, mostram as camadas que usam ou podem usar a funcionalidade representada por outras camadas. Para manter controle arquitetônico do código, mostre as dependências desejadas no diagrama e, em seguida, valide o código no diagrama.

Vídeo: validar suas dependências de arquitetura em tempo real

Criar um diagrama de dependência

Antes de criar um diagrama de dependência, verifique se a solução tem um projeto de modelagem.

Importante

Não adicione, arraste ou copie um diagrama de dependência existente de um projeto de modelagem a outro projeto de modelagem ou a outro local na solução. Isso preserva as referências do diagrama original, mesmo que você altere o diagrama. Isso também impede que a validação da camada funcione corretamente e talvez cause outros problemas como, por exemplo, elementos não encontrados ou outros erros quando você tenta abrir o diagrama.

Em vez disso, adicione um novo diagrama de dependências ao projeto de modelagem. Copie os elementos do diagrama de origem para o novo diagrama. Salve o projeto de modelagem e o novo diagrama de dependência.

Adicionar um novo diagrama de dependência a um projeto de modelagem

Observação

Diagramas de dependência para projetos do .NET Core têm suporte a partir do Visual Studio 2019 versão 16.2.

  1. No menu Arquitetura, escolha Novo Diagrama de Dependência.

  2. Em Modelos, escolha diagrama de dependência.

  3. Nomeie o diagrama.

  4. Em Adicionar ao Projeto de Modelagem, navegue até e selecione um projeto de modelagem existente na solução.

    -ou-

    Escolha Criar um projeto de modelagem para adicionar um novo projeto de modelagem à solução.

    Observação

    O diagrama de dependência deve estar dentro de um projeto de modelagem. Porém, é possível vinculá-lo a itens em qualquer lugar na solução.

  5. Não se esqueça de salvar o projeto de modelagem e o diagrama de dependência.

Arrastar e soltar, ou copiar e colar, de um Mapa de Códigos

  1. Gere um Mapa de Códigos para a solução usando o menu Arquitetura.

  2. Considere aplicar um filtro de Mapa de Códigos para remover pastas de solução e "Ativos de Teste" se você quiser apenas impor dependências no código do produto.

  3. No Mapa do Códigos gerado, remova o nó "Externo" ou expanda-o para mostrar assemblies externos, dependendo de você desejar impor dependências de namespace. Exclua assemblies não necessários do Mapa de Códigos.

  4. Crie um Diagrama de Dependência para a solução usando o menu Arquitetura.

  5. Selecione todos os nós no Mapa do Códigos (use Ctrl + A ou use a seleção de elástico pressionando a tecla Shift antes de clicar, arrastar e soltar).

  6. Arraste e solte ou copie e cole os elementos selecionados para o novo diagrama de Validação de Dependência.

  7. Isso mostra a arquitetura atual do aplicativo. Decida o que você deseja que a arquitetura seja e modifique o diagrama de dependência adequadamente.

Diagrama de dependência gerado a partir de um Mapa de Códigos

Criar camadas com base em artefatos

É possível criar camadas dos itens de solução do Visual Studio como, por exemplo, projetos, arquivos de código, namespaces, classes e métodos. Isso cria automaticamente links entre camadas e itens, incluindo-os no processo de validação da camada.

Você pode vincular camadas a itens que não dão suporte à validação, como documentos do Word ou apresentações do PowerPoint. Isso permite associar uma camada a especificações ou planos. Também é possível vincular camadas a arquivos em projetos compartilhados entre vários aplicativos, mas o processo de validação não incluirá essas camadas, exibidas com nomes genéricos como, por exemplo, "Camada 1" e "Camada 2".

Para saber se um item vinculado dá suporte à validação, abra Gerenciador de Camadas e examine a propriedade Dá Suporte à Validação do item. Consulte Gerenciando links para artefatos.

Para Siga estas etapas
Criar uma camada para um único artefato
  1. Arraste o item para o diagrama de dependência dessas fontes:
    Uma camada é exibida no diagrama e está vinculada ao artefato.
  2. Renomeie a camada para refletir as responsabilidades do código ou dos artefatos associados.

Importante: arrastar arquivos binários para o diagrama de dependência não adiciona automaticamente suas referências ao projeto de modelagem. Adicione manualmente os arquivos binários que você deseja validar ao projeto de modelagem. Para adicionar arquivos binários ao projeto de modelagem
  1. No Gerenciador de Soluções, abra o menu de atalho do projeto de modelagem e, em seguida, escolha Adicionar Item Existente.
  2. Na caixa de diálogo Adicionar Item Existente, navegue até os arquivos binários, selecione-os e, em seguida, escolha OK. Os arquivos binários são exibidos no projeto de modelagem.
  3. No Gerenciador de Soluções, escolha um arquivo binário adicionado e, em seguida, pressione F4 para abrir a janela Propriedades.
  4. Em cada arquivo binário, defina a propriedade Compilar Ação como Validar.
Criar uma única camada para todos os artefatos selecionados Arraste todos os artefatos para o diagrama de dependência ao mesmo tempo.

Uma camada é exibida no diagrama e está vinculada a todos os artefatos.
Criar uma camada para cada artefato selecionado Mantenha a tecla SHIFT pressionada enquanto arrasta todos os artefatos para o diagrama de dependência ao mesmo tempo.
Observação: se você usar a tecla SHIFT para selecionar um intervalo de itens, solte a tecla depois de selecionar os artefatos. Mantenha-o pressionado novamente ao arrastar os artefatos para o diagrama.

Uma camada para cada artefato é exibida no diagrama e está vinculada a cada artefato.
Adicionar um artefato a uma camada Arraste o artefato à camada.
Criar uma nova camada desvinculada Na Caixa de Ferramentas, expanda a seção Diagrama de Dependência e, em seguida, arraste uma Camada para o diagrama de dependência.

Para adicionar várias camadas, clique duas vezes na ferramenta. Quando terminar, escolha a ferramenta Ponteiro ou pressione a tecla ESC.

- ou -

Abra o menu de atalho do diagrama de dependência, escolha Adicionar e escolha Camada.
Criar camadas aninhadas Arraste uma camada existente para outra camada.

- ou -

Abra o menu de atalho de uma camada e, em seguida, escolha Adicionar e Camada.
Criar uma nova camada que contém duas ou mais camadas existentes Selecione as camadas, abra o menu de atalho da seleção e, em seguida, escolha Grupo.
Alterar a cor de uma camada Defina a propriedade Cor como a cor desejada.
Especificar que os artefatos associados a uma camada não devem pertencer aos namespaces especificados Digite os namespaces na propriedade Namespaces Proibidos da camada. Use um ponto-e-vírgula (;) para separar os namespaces.
Especificar que os artefatos associados a uma camada não dependem dos namespaces especificados Digite os namespaces na propriedade Dependências de Namespace Proibidas da camada. Use um ponto-e-vírgula (;) para separar os namespaces.
Especificar que os artefatos associados a uma camada devem pertencer a um dos namespaces especificados Digite o namespace na propriedade Namespaces Obrigatórios da camada. Use um ponto-e-vírgula (;) para separar os namespaces.

O número em uma camada indica o número de artefatos que estão associados à camada. No entanto, ao ler esse número, lembre-se:

  • Se uma camada estiver vinculada a um artefato que contenha outros artefatos, mas não estiver vinculada diretamente a outros artefatos, o número incluirá apenas o artefato vinculado. No entanto, os outros artefatos estão incluídos para análise durante a validação da camada.

    Por exemplo, se uma camada estiver vinculada a um único namespace, o número de artefatos vinculados será 1, mesmo se o namespace contiver classes. Se a camada também tiver links para cada classe no namespace, o número incluirá as classes vinculadas.

  • Se uma camada contiver outras camadas vinculadas a artefatos, a camada de contêiner também estará vinculada a esses artefatos, mesmo que o número na camada de contêiner não inclua esses artefatos.

Gerenciar links entre camadas e artefatos

  1. No diagrama de dependência, abra o menu de atalho da camada e, em seguida, escolha Exibir Links.

    O Gerenciador de Camadas mostra os links de artefato para a camada selecionada.

  2. Use as seguintes tarefas para gerenciar esses links:

Para No Gerenciador de Camadas
Excluir o links entre a camada e um artefato Abra o menu de atalho do link de artefato e, em seguida, escolha Excluir.
Mover o link de uma camada para outra Arraste o link de artefato para uma camada existente no diagrama.

- ou -

1. Abra o menu de atalho do link de artefato e, em seguida, escolha Recortar.
2. No diagrama de dependência, abra o menu de atalho da camada e, em seguida, escolha Colar.
Copiar o link de uma camada para outra 1. Abra o menu de atalho do link de artefato e, em seguida, escolha Copiar.
2. No diagrama de dependência, abra o menu de atalho da camada e, em seguida, escolha Colar.
Criar uma nova camada com base em um link de artefato existente Arraste o link de artefato para uma área em branco no diagrama.
Verifique se um artefato vinculado dá suporte à validação no diagrama de dependência. Observe a coluna Dá Suporte à Validação do link de artefato.

Fazer engenharia reversa de dependências existentes

Existirá uma dependência sempre que um artefato associado a uma camada tiver uma referência a um artefato associado a outra camada. Por exemplo, uma classe em uma camada declara uma variável que tem uma classe em outra camada. É possível fazer engenharia reversa em dependências existentes para artefatos vinculados a camadas no diagrama.

Observação

As dependências não podem sofrer engenharia reversa para determinados tipos de artefatos. Por exemplo, nenhuma dependência sofrerá engenharia reversa de ou para uma camada vinculada a um arquivo de texto. Para saber quais artefatos têm dependências que é possível sofrer engenharia reversa, abra o menu de atalho de uma ou mais camadas e, em seguida, escolha Exibir Links. No Gerenciador de Camadas, examine a coluna Dá Suporte à Validação. As dependências não sofrerão engenharia reversa para artefatos para os quais essa coluna mostra False.

  • Selecione uma ou mais camadas, abra o menu de atalho de uma camada selecionada e, em seguida, escolha Gerar Dependências.

    Se você vir algumas dependências que não deveriam existir, poderá editá-las para alinhá-las com o design pretendido.

Editar camadas e dependências para mostrar o design desejado

Para descrever as alterações que você pretende fazer no sistema ou na arquitetura desejada, edite o diagrama de dependência:

Para Realizar estas etapas
Alterar ou restringir a direção de uma dependência Defina sua propriedade Direção.
Criar novas dependências Use as ferramentas Dependência e Dependência Bidirecional.

Para desenhar várias dependências, clique duas vezes na ferramenta. Quando terminar, escolha a ferramenta Ponteiro ou pressione a tecla ESC.
Especificar que os artefatos associados a uma camada não dependem dos namespaces especificados Digite os namespaces na propriedade Dependências de Namespace Proibidas da camada. Use um ponto-e-vírgula (;) para separar os namespaces.
Especificar que os artefatos associados a uma camada não devem pertencer aos namespaces especificados Digite os namespaces na propriedade Namespaces Proibidos da camada. Use um ponto-e-vírgula (;) para separar os namespaces.
Especificar que os artefatos associados a uma camada devem pertencer a um dos namespaces especificados Digite o namespace na propriedade Namespaces Obrigatórios da camada. Use um ponto-e-vírgula (;) para separar os namespaces.

Alterar como os elementos são exibidos no diagrama

É possível alterar o tamanho, a forma, a cor e a posição das camadas ou a cor das dependências editando-se suas propriedades.

Descobrir padrões e dependências em um mapa de códigos

Ao criar diagramas de dependência, você também pode criar mapas de códigos. Esses diagramas podem ajudar você a descobrir padrões e dependências, enquanto explora o código. Use o Gerenciador de Soluções, o Modo de Exibição de Classe ou o Pesquisador de Objetos para explorar assemblies, namespaces e classes, que geralmente correspondem bem às camadas existentes. Para obter mais informações sobre mapas de códigos, consulte: