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.
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.
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.
No menu arquitetura , escolha novo diagrama de dependência.On the Architecture menu, choose New Dependency Diagram.
Em modelos, escolha diagrama de dependência.Under Templates, choose dependency diagram.
Nomeie o diagrama.Name the diagram.
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.
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
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.
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.
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.
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
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.
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.
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.
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 |
|
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.
Gerenciar links entre camadas e artefatosManage links between layers and artifacts
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.
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:
Mapear as dependências nas soluçõesMap dependencies across your solutions
Usar mapas de códigos para depurar aplicativosUse code maps to debug your applications
Consulte tambémSee also
- Suporte de edição para ferramentas de arquitetura e modelagemEdition support for architecture and modeling tools
- Vídeo: valide suas dependências de arquitetura em tempo realVideo: Validate your architecture dependencies in real time
- Diagramas de dependência: referênciaDependency Diagrams: Reference
- Diagramas de dependência: diretrizesDependency Diagrams: Guidelines
- Validar o código com diagramas de dependênciaValidate code with dependency diagrams
- Visualizar códigoVisualize code