Criar diagramas de dependência do códigoCreate dependency diagrams from your code

Para visualizar a arquitetura lógica de alto nível do sistema de software, crie um diagrama de dependência no Visual Studio.To visualize your software system's high-level, logical architecture, create a dependency diagram in Visual Studio. Para garantir que seu código permaneça consistente com esse design, valide seu código com um diagrama de dependência.To make sure that your code stays consistent with this design, validate your code with a dependency diagram. Você pode criar diagramas de dependência para projetos do Visual C# e Visual Basic.You can create dependency diagrams for Visual C# and Visual Basic projects. Para ver quais edições do Visual Studio oferecem suporte a esse recurso, consulte suporte de edição para ferramentas de arquitetura e modelagem.To see which editions of Visual Studio support this feature, see Edition support for architecture and modeling tools.

Criar um diagrama de dependência

Um diagrama de dependência permite organizar itens da solução do Visual Studio em grupos lógicos e abstratos chamados camadas.A dependency diagram lets you organize Visual Studio solution items into logical, abstract groups called layers. É possível usar camadas para descrever as tarefas principais realizadas por esses artefatos ou os componentes principais do sistema.You can use layers to describe major tasks that these artifacts perform or the system's major components. Cada camada pode conter outras camadas que descrevem tarefas mais detalhadas.Each layer can contain other layers that describe more detailed tasks. Você também pode especificar as dependências pretendidas ou existentes entre camadas.You can also specify the intended or existing dependencies between layers. Essas dependências, representadas como setas, mostram quais camadas podem usar ou atualmente usam a funcionalidade representada por outras camadas.These dependencies, which are represented as arrows, show which layers can use or currently use the functionality represented by other layers. Para manter controle arquitetônico do código, mostre as dependências desejadas no diagrama e, em seguida, valide o código no diagrama.To maintain architectural control of the code, show the intended dependencies on the diagram and then validate the code against the diagram.

Vídeo: valide suas dependências de arquitetura em tempo realVideo: Validate your architecture dependencies in real time

Criar um diagrama de dependênciaCreate a dependency diagram

Antes de criar um diagrama de dependência, verifique se sua solução tem um projeto de modelagem.Before you create a dependency diagram, make sure your solution has a modeling project.

Importante

Não adicione, arraste ou copie um diagrama de dependência existente de um projeto de modelagem para outro projeto de modelagem ou para outro local na solução.Don't add, drag, or copy an existing dependency diagram from a modeling project to another modeling project or to another place in the solution. Isso preserva as referências do diagrama original, mesmo que você altere o diagrama.This preserves the references from the original diagram, even if you change the diagram. 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.This also prevents layer validation from working correctly and might cause other issues, such as missing elements or other errors when you try to open the diagram.

Em vez disso, adicione um novo diagrama de dependência ao projeto de modelagem.Instead, add a new dependency diagram to the modeling project. Copie os elementos do diagrama de origem para o novo diagrama.Copy the elements from the source diagram to the new diagram. Salve o projeto de modelagem e o novo diagrama de dependência.Save both the modeling project and the new dependency diagram.

Adicionar um novo diagrama de dependência a um projeto de modelagemAdd a new dependency diagram to a modeling project

Observação

Há suporte para diagramas de dependência para projetos do .NET Core a partir do Visual Studio 2019 versão 16,2.Dependency diagrams for .NET Core projects are supported starting in Visual Studio 2019 version 16.2.

  1. No menu arquitetura , escolha novo diagrama de dependência.On the Architecture menu, choose New Dependency Diagram.

  2. Em modelos, escolha diagrama de dependência.Under Templates, choose dependency diagram.

  3. Nomeie o diagrama.Name the diagram.

  4. Em Adicionar ao projeto de modelagem, navegue até e selecione um projeto de modelagem existente em sua solução.In Add to Modeling Project, browse to and select an existing modeling project in your solution.

    -ou--or-

    Escolha criar um novo projeto de modelagem para adicionar um novo projeto de modelagem à solução.Choose Create a new modeling project to add a new modeling project to the solution.

    Observação

    O diagrama de dependência deve existir dentro de um projeto de modelagem.The dependency diagram must exist inside a modeling project. Porém, é possível vinculá-lo a itens em qualquer lugar na solução.However, you can link it to items anywhere in the solution.

  5. Certifique-se de salvar o projeto de modelagem e o diagrama de dependência.Make sure to save both the modeling project and the dependency diagram.

Arrastar e soltar, ou copiar e colar, de um mapa de códigoDrag and drop, or copy and paste, from a Code Map

  1. Gere um mapa de código para a solução usando o menu arquitetura .Generate a Code Map for the solution using the Architecture menu.

  2. Considere aplicar um filtro de mapa de código para remover pastas de solução e "ativos de teste" se você quiser apenas impor dependências no código do produto.Consider applying a Code Map filter to remove solution folders and "Test Assets" if you only want to enforce dependencies in product code.

  3. No mapa de código gerado, remova o nó "externo" ou expanda-o para mostrar assemblies externos, dependendo se você deseja impor dependências de namespace e exclua assemblies não obrigatórios do mapa de código.On the generated Code Map, remove the "External" node, or expand it to show external assemblies, depending on whether you want to enforce namespace dependencies, and delete non-required assemblies from the Code Map.

  4. Criar um novo diagrama de dependência para a solução usando o menu arquiteturaCreate a new Dependency Diagram for the solution using the Architecture menu

  5. Selecione todos os nós no mapa de códigos (use Ctrl + a ou use a seleção de banda de borracha pressionando a tecla Shift antes de clicar, arrastar e liberar.Select all the nodes on the Code Map (use Ctrl + A, or use the rubber band selection by pressing the Shift key before you click, drag, and release.

  6. Arrastar e soltar, ou copiar e colar, os elementos selecionados para o novo diagrama de validação de dependência.Drag and drop, or a copy and paste, the selected elements to the new Dependency Validation diagram.

  7. Isso mostra a arquitetura do aplicativo atual.This shows the current app architecture. Decida o que você deseja que a arquitetura seja e modifique o diagrama de dependência de acordo.Decide what you want the architecture to be and modify the dependency diagram accordingly.

Diagrama de dependência gerado a partir de um mapa de código

Criar camadas de artefatosCreate layers from artifacts

É 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.You can create layers from Visual Studio solution items, such as projects, code files, namespaces, classes, and methods. Isso cria automaticamente links entre camadas e itens, incluindo-os no processo de validação da camada.This automatically creates links between layers and items, including them in the layer validation process.

Também é possível vincular camadas a itens que não dão suporte à validação como, por exemplo, documentos do Word ou apresentações do Powerpoint, de forma que você pode associar uma camada a especificações ou planos.You can also link layers to items that don't support validation, such as Word documents or PowerPoint presentations, so that you can associate a layer with specifications or plans. 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".You can also link layers to files in projects that are shared across multiple apps, but the validation process won't include those layers, which appear with generic names such as "Layer 1" and "Layer 2".

Para ver se um item vinculado dá suporte à validação, abra o Gerenciador de camadas e examine a propriedade de validação de suporte do item.To see if a linked item supports validation, open Layer Explorer and examine the Supports Validation property of the item. Consulte Gerenciando links para artefatos.See Managing links to artifacts.

ParaTo Siga estas etapasFollow these steps
Criar uma camada para um único artefatoCreate a layer for a single artifact
  1. Arraste o item para o diagrama de dependência destas fontes:Drag the item onto the dependency diagram from these sources:


    Uma camada é exibida no diagrama e está vinculada ao artefato.A layer appears on the diagram and is linked to the artifact.
  2. Renomeie a camada para refletir as responsabilidades do código ou dos artefatos associados.Rename the layer to reflect the responsibilities of the associated code or artifacts.
Importante: Arrastar arquivos binários para o diagrama de dependência não adiciona automaticamente suas referências ao projeto de modelagem.Important: Dragging binary files to the dependency diagram does not automatically add their references to modeling project. Você deve adicionar manualmente os arquivos binários que você deseja validar ao projeto de modelagem.You must manually add the binary files that you want to validate to the modeling project. Para adicionar arquivos binários ao projeto de modelagemTo add binary files to the modeling project
  1. No Gerenciador de soluções, abra o menu de atalho do projeto de modelagem e escolha Adicionar item existente.In Solution Explorer, open the shortcut menu for the modeling project, and then choose Add Existing Item.
  2. Na caixa de diálogo Adicionar item existente , navegue até os arquivos binários, selecione-os e escolha OK.In the Add Existing Item dialog box, browse to the binary files, select them, and then choose OK. Os arquivos binários são exibidos no projeto de modelagem.The binary files appear in the modeling project.
  3. Em Gerenciador de soluções, escolha um arquivo binário que você adicionou e, em seguida, pressione F4 para abrir a janela Propriedades .In Solution Explorer, choose a binary file that you added, and then press F4 to open the Properties window.
  4. Em cada arquivo binário, defina a propriedade ação de compilação para validar.On each binary file, set the Build Action property to Validate.
Criar uma única camada para todos os artefatos selecionadosCreate a single layer for all selected artifacts Arraste todos os artefatos para o diagrama de dependência ao mesmo tempo.Drag all the artifacts to the dependency diagram at the same time.

Uma camada é exibida no diagrama e está vinculada a todos os artefatos.A layer appears on the diagram and is linked to all of the artifacts.
Criar uma camada para cada artefato selecionadoCreate a layer for each selected artifact Pressione e segure a tecla Shift enquanto arrasta todos os artefatos para o diagrama de dependência ao mesmo tempo.Press and hold the SHIFT key while you drag all of the artifacts to the dependency diagram at the same time. Observação: Se você usar a tecla Shift para selecionar um intervalo de itens, libere a chave depois de selecionar os artefatos.Note: If you use the SHIFT key to select a range of items, release the key after you select the artifacts. Mantenha-o pressionado novamente ao arrastar os artefatos para o diagrama.Press and hold it again when you drag the artifacts to the diagram.

Uma camada para cada artefato é exibida no diagrama e está vinculada a cada artefato.A layer for each artifact appears on the diagram and is linked to each artifact.
Adicionar um artefato a uma camadaAdd an artifact to a layer Arraste o artefato à camada.Drag the artifact to the layer.
Criar uma nova camada desvinculadaCreate a new unlinked layer Na caixa de ferramentas, expanda a seção diagrama de dependência e arraste uma camada para o diagrama de dependência.In the Toolbox, expand the Dependency Diagram section, and then drag a Layer to the dependency diagram.

Para adicionar várias camadas, clique duas vezes na ferramenta.To add multiple layers, double-click the tool. Quando tiver terminado, escolha a ferramenta ponteiro ou pressione a tecla ESC .When you are finished, choose the Pointer tool or press the ESC key.

- ou -- or -

Abra o menu de atalho para o diagrama de dependência, escolha Adicionar e, em seguida, escolha camada.Open the shortcut menu for the dependency diagram, choose Add, and then choose Layer.
Criar camadas aninhadasCreate nested layers Arraste uma camada existente para outra camada.Drag an existing layer onto another layer.

- ou -- or -

Abra o menu de atalho para uma camada, escolha Adicionar e, em seguida, escolha camada.Open the shortcut menu for a layer, choose Add, and then choose Layer.
Criar uma nova camada que contém duas ou mais camadas existentesCreate a new layer that contains two or more existing layers Selecione as camadas, abra o menu de atalho para sua seleção e escolha grupo.Select the layers, open the shortcut menu for your selection, and then choose Group.
Alterar a cor de uma camadaChange the color of a layer Defina sua propriedade Color para a cor desejada.Set its Color property to the color that you want.
Especificar que os artefatos associados a uma camada não devem pertencer aos namespaces especificadosSpecify that artifacts associated with a layer must not belong to the specified namespaces Digite os namespaces na propriedade de namespaces proibidos da camada.Type the namespaces in the layer's Forbidden Namespaces property. Use um ponto-e-vírgula (;) para separar os namespaces.Use a semicolon (;) to separate the namespaces.
Especificar que os artefatos associados a uma camada não dependem dos namespaces especificadosSpecify that artifacts associated with a layer cannot depend on the specified namespaces Digite os namespaces na propriedade dependências de namespace proibido da camada.Type the namespaces in the layer's Forbidden Namespace Dependencies property. Use um ponto-e-vírgula (;) para separar os namespaces.Use a semicolon (;) to separate the namespaces.
Especificar que os artefatos associados a uma camada devem pertencer a um dos namespaces especificadosSpecify that artifacts associated with a layer must belong to one of the specified namespaces Digite o namespace na propriedade namespaces obrigatórios da camada.Type the namespace in the layer's Required Namespaces property. Use um ponto-e-vírgula (;) para separar os namespaces.Use a semicolon (;) to separate the namespaces.

O número em uma camada indica o número de artefatos que estão associados à camada.The number on a layer indicates the number of artifacts that are linked to the layer. No entanto, ao ler esse número, lembre-se do seguinte:However, when reading this number, remember the following:

  • 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.If a layer links to an artifact that contains other artifacts, but the layer does not link directly to the other artifacts, then the number includes only the linked artifact. No entanto, os outros artefatos estão incluídos para análise durante a validação da camada.However, the other artifacts are included for analysis during layer validation.

    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.For example, if a layer is linked to a single namespace, then the number of linked artifacts is 1, even if the namespace contains classes. Se a camada também tiver links para cada classe no namespace, o número incluirá as classes vinculadas.If the layer also has links to each class in the namespace, then the number will include the linked classes.

  • 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.If a layer contains other layers that are linked to artifacts, then the container layer is also linked to those artifacts, even though the number on the container layer does not include those artifacts.

  1. No diagrama de dependência, abra o menu de atalho da camada e escolha exibir links.On the dependency diagram, open the shortcut menu for the layer, and then choose View Links.

    O Gerenciador de camadas mostra os links de artefatos para a camada selecionada.Layer Explorer shows the artifact links for the selected layer.

  2. Use as seguintes tarefas para gerenciar esses links:Use the following tasks to manage these links:

ParaTo No Gerenciador de CamadasIn Layer Explorer
Excluir o links entre a camada e um artefatoDelete the link between the layer and an artifact Abra o menu de atalho para o link do artefato e escolha excluir.Open the shortcut menu for the artifact link, and then choose Delete.
Mover o link de uma camada para outraMove the link from one layer to another Arraste o link de artefato para uma camada existente no diagrama.Drag the artifact link to an existing layer on the diagram.

- ou -- or -

1. Abra o menu de atalho para o link do artefato e, em seguida, escolha recortar.1. Open the shortcut menu for the artifact link, and then choose Cut.
2. no diagrama de dependência, abra o menu de atalho da camada e escolha colar.2. On the dependency diagram, open the shortcut menu for the layer, and then choose Paste.
Copiar o link de uma camada para outraCopy the link from one layer to another 1. Abra o menu de atalho para o link do artefato e, em seguida, escolha copiar.1. Open the shortcut menu for the artifact link, and then choose Copy.
2. no diagrama de dependência, abra o menu de atalho da camada e escolha colar.2. On the dependency diagram, open the shortcut menu for the layer, and then choose Paste.
Criar uma nova camada com base em um link de artefato existenteCreate a new layer from an existing artifact link Arraste o link de artefato para uma área em branco no diagrama.Drag the artifact link to a blank area on the diagram.
Verifique se um artefato vinculado dá suporte à validação em relação ao diagrama de dependência.Verify that a linked artifact supports validation against the dependency diagram. Examine a coluna de validação de suporte para o link do artefato.Look at the Supports Validation column for the artifact link.

Dependências existentes de engenharia reversaReverse-engineer existing dependencies

Existirá uma dependência sempre que um artefato associado a uma camada tiver uma referência a um artefato associado a outra camada.A dependency exists wherever an artifact that is associated with one layer has a reference to an artifact that is associated with another layer. Por exemplo, uma classe em uma camada declara uma variável que tem uma classe em outra camada.For example, a class in one layer declares a variable that has a class in another layer. É possível fazer engenharia reversa em dependências existentes para artefatos vinculados a camadas no diagrama.You can reverse-engineer existing dependencies for artifacts that are linked to layers on the diagram.

Observação

As dependências não podem sofrer engenharia reversa para determinados tipos de artefatos.Dependencies cannot be reverse-engineered for certain kinds of artifacts. Por exemplo, nenhuma dependência sofrerá engenharia reversa de ou para uma camada vinculada a um arquivo de texto.For example, no dependencies will be reverse-engineered from or to a layer that is linked to a text file. Para ver quais artefatos têm dependências que você pode fazer engenharia reversa, abra o menu de atalho para uma ou várias camadas e escolha exibir links.To see which artifacts have dependencies that you can reverse-engineer, open the shortcut menu for one or multiple layers, and then choose View Links. No Gerenciador de camadas, examine a coluna de validação de suporte .In Layer Explorer, examine the Supports Validation column. As dependências não serão criadas com engenharia reversa para artefatos para os quais essa coluna mostra false.Dependencies will not be reverse-engineered for artifacts for which this column shows False.

  • Selecione uma ou várias camadas, abra o menu de atalho para uma camada selecionada e escolha gerar dependências.Select one or multiple layers, open the shortcut menu for a selected layer, and then choose Generate Dependencies.

    Normalmente, você verá algumas dependências que não devem existir.Typically, you will see some dependencies that should not exist. É possível editar essas dependências para alinhá-las com o design desejado.You can edit these dependencies to align them with the intended design.

Editar camadas e dependências para mostrar o design pretendidoEdit layers and dependencies to show the intended design

Para descrever as alterações que você planeja fazer no sistema ou na arquitetura pretendida, edite o diagrama de dependência:To describe the changes that you plan to make to your system or the intended architecture, edit the dependency diagram:

ParaTo Realizar estas etapasPerform these steps
Alterar ou restringir a direção de uma dependênciaChange or restrict the direction of a dependency Defina sua propriedade Direction .Set its Direction property.
Criar novas dependênciasCreate new dependencies Use as ferramentas dependência e dependência bidirecional .Use the Dependency and Bidirectional Dependency tools.

Para desenhar várias dependências, clique duas vezes na ferramenta.To draw multiple dependencies, double-click the tool. Quando tiver terminado, escolha a ferramenta ponteiro ou pressione a tecla ESC .When you are finished, choose the Pointer tool or press the ESC key.
Especificar que os artefatos associados a uma camada não dependem dos namespaces especificadosSpecify that artifacts associated with a layer cannot depend on the specified namespaces Digite os namespaces na propriedade dependências de namespace proibido da camada.Type the namespaces in the layer's Forbidden Namespace Dependencies property. Use um ponto-e-vírgula (;) para separar os namespaces.Use a semicolon (;) to separate the namespaces.
Especificar que os artefatos associados a uma camada não devem pertencer aos namespaces especificadosSpecify that artifacts associated with a layer must not belong to the specified namespaces Digite os namespaces na propriedade de namespaces proibidos da camada.Type the namespaces in the layer's Forbidden Namespaces property. Use um ponto-e-vírgula (;) para separar os namespaces.Use a semicolon (;) to separate the namespaces.
Especificar que os artefatos associados a uma camada devem pertencer a um dos namespaces especificadosSpecify that artifacts associated with a layer must belong to one of the specified namespaces Digite o namespace na propriedade namespaces obrigatórios da camada.Type the namespace in the layer's Required Namespaces property. Use um ponto-e-vírgula (;) para separar os namespaces.Use a semicolon (;) to separate the namespaces.

Alterar como os elementos aparecem no diagramaChange how elements appear on the diagram

É 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.You can change the size, shape, color, and position of layers or the color of dependencies by editing their properties.

Descobrir padrões e dependências em um mapa de códigoDiscover patterns and dependencies on a code map

Ao criar diagramas de dependência, você também pode criar mapas de código.While creating dependency diagrams, you might also create code maps. Esses diagramas podem ajudá-lo a descobrir padrões e dependências enquanto explora o código.These diagrams can help you discover patterns and dependencies while you explore the code. Use Gerenciador de Soluções, Modo de Exibição de Classe ou pesquisador de objetos para explorar assemblies, namespaces e classes, que geralmente correspondem bem às camadas existentes.Use Solution Explorer, Class View, or Object Browser to explore assemblies, namespaces, and classes - which often correspond well to existing layers. Para obter mais informações sobre mapas de código, consulte:For more information about code maps, see:

Consulte tambémSee also