Diagramas de camada: diretrizes
Você pode descrever a arquitetura do seu aplicativo em um nível alto, criando diagramas de camada no Visual Studio Ultimate. Para garantir que o código permaneça consistente com esse design, valide o código com um diagrama de camada no Visual Studio Ultimate ou no Visual Studio Premium. Você também pode incluir a validação da camada no processo de compilação. Consulte Vídeo do Canal 9: projetar e validar a arquitetura usando diagramas de camada.
O que é um diagrama de camada?
Como um diagrama de arquitetura tradicional, um diagrama de camada identifica os principais componentes ou unidades funcionais de design e suas interdependências. Cada nó no diagrama, chamado um camada, representa um grupo lógico de namespaces, projetos ou outros artefatos. Você pode desenhar as dependências que devem existir em seu design. Ao contrário de um diagrama de arquitetura tradicional, você pode verificar que as dependências reais no código-fonte está de acordo com as dependências pretendidas que você especificou. Fazendo parte de validação de uma compilação regular na Team Foundation Server, você pode garantir que o código do programa continua a aderem à arquitetura do sistema por meio de alterações futuras. Consulte Diagramas de camada: referência.
Como criar ou atualizar seu aplicativo com diagramas de camada
As etapas a seguir fornecem uma visão geral de como usar diagramas de camada dentro do processo de desenvolvimento. As seções posteriores deste tópico descrevem mais detalhes sobre cada etapa. Se você estiver desenvolvendo um novo design, omita as etapas que se referem ao código existente.
Dica
Estas etapas aparecem na ordem aproximada.Você provavelmente deseja sobrepor as tarefas, reordená-las de acordo com sua própria situação e visitá-las no início de cada iteração em seu projeto.
Criar um diagrama de camada para o aplicativo inteiro ou para uma camada dentro dele.
Definir camadas para representar componentes ou áreas funcionais principais do seu aplicativo. Nomeie essas camadas de acordo com sua função, por exemplo, "Apresentação" ou "Serviços". Se você tiver um Visual Studio solução, você pode associar cada camada com uma coleção de artefatos, como projetos, namespaces, arquivos e assim por diante.
Descobrir as dependências existentes entre camadas.
Editar camadas e dependências para mostrar o design que você deseja que o código para refletir.
Criar novas áreas do seu aplicativo criando camadas para representar os blocos de arquiteturais principais ou componentes e definir dependências para mostrar como cada camada usa os outros.
Editar o layout e a aparência do diagrama para ajudá-lo a discutir isso com seus colegas.
Valide o código no diagrama de camada para realçar os conflitos entre o código e a arquitetura que você precisa.
Atualizar o código de acordo com sua nova arquitetura. Desenvolver de maneira iterativa e refatorar o código até que a validação não mostra nenhum conflito.
Incluir validação de camada no processo de compilação para garantir que o código continua de acordo com seu design.
Criar um diagrama de camada
Um diagrama de camada deve ser criado dentro de um projeto de modelagem. Você pode adicionar um novo diagrama de camada a um projeto de modelagem existente, crie um novo projeto de modelagem do diagrama de camada ou copie um diagrama de camada existente dentro do mesmo projeto de modelagem.
Importante
Não adicione, arraste ou copie um diagrama de camada existente de um projeto de modelagem a outro projeto de modelagem ou em outro local na solução.Um diagrama de camada copiado dessa maneira terá as mesmas referências do diagrama original, mesmo se você modificar o diagrama.Isso impedirá a validação da camada funcione corretamente e pode causar outros problemas, como elementos ausentes ou outros erros ao tentar abri-lo.
Consulte Criar diagramas de camada a partir do código.
Definir camadas para representar componentes ou áreas funcionais
Camadas representam grupos lógicos de artefatos, como projetos, arquivos de código, namespaces, classes e métodos. Você pode criar camadas de artefatos de projetos do Visual c# .NET e Visual Basic .NET ou anexe especificações ou planos para uma camada vinculando documentos, como arquivos do Word ou apresentações do PowerPoint. Cada camada aparece como um retângulo no diagrama e mostra o número de artefatos que estão associados a ele. Uma camada pode conter camadas aninhadas que descrevem tarefas mais específicas.
Como diretriz geral, camadas de nome de acordo com sua função, por exemplo, "Apresentação" ou "Serviços". Se os artefatos estão estreitamente interdependentes, colocá-los na mesma camada. Se os artefatos podem ser atualizados separadamente ou usados em aplicativos separados, colocá-los em diferentes camadas. Para saber mais sobre os padrões de camadas, visite o site de padrões e práticas em https://go.microsoft.com/fwlink/?LinkId=145794.
Dica
Existem certos tipos de artefatos que é possível vincular camadas, mas que não dão suporte a validação no diagrama de camada.Para ver se o artefato dá suporte à validação, abra Gerenciador de camadas para examinar o dá suporte à validação propriedades do link de artefato.Consulte descobrir dependências existentes entre camadas.
Ao atualizar um aplicativo não familiar, você pode usar gráficos de dependência para ajudá-lo a explorar e compreender o código. Esses gráficos podem ajudar a descobrir clusters e as dependências no código. Você talvez também queira usar o Architecture Explorer para explorar namespaces e classes, que normalmente correspondem bem a camadas existentes. Isso pode ajudar a facilitar a atribuição de artefatos a camadas. Em seguida, é possível usar diagramas de camada para ajudar a atualizar o código.
Para obter mais informações, consulte os seguintes tópicos:
Descobrir dependências existentes entre camadas
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. Você pode descobrir dependências existentes com a engenharia reversa-los.
Dica
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 ver quais artefatos têm dependências que você pode fazer engenharia reversa, clique uma ou mais camadas e, em seguida, clique em Exibir Links.Em 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 Falso.
Para efetuar engenharia reversa de dependências existentes entre camadas
- Selecione uma camada ou várias camadas, clique uma camada selecionada e, em seguida, clique em gerar dependências.
Normalmente, você verá algumas dependências que não devem existir. É possível editar essas dependências para alinhá-las com o design desejado.
Editar camadas e dependências para mostrar o design desejado
Para descrever as alterações que você planeja fazer a arquitetura pretendida ou em seu sistema, use as etapas a seguir para editar o diagrama de camada. Você também pode considerar fazer algumas alterações de refatoração para melhorar a estrutura do código antes de estendê-lo. Consulte melhorando a estrutura do código.
Para |
Realizar estas etapas |
---|---|
Excluir uma dependência que não deve existir |
Clique na dependência e então pressione excluir. |
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 tiver terminado, clique o ponteiro ferramenta ou pressione a ESC chave. |
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. |
Melhorando a estrutura do código
Alterações de refatoração são aprimoramentos que não afetam o comportamento do aplicativo, mas ajuda a tornar o código mais fácil de alterar e estender no futuro. Código bem estruturado possui um design que seja fácil de abstrair a um diagrama de camada.
Por exemplo, se você criar uma camada para cada namespace no código e, em seguida, efetuar engenharia reversa de dependências, deve haver um conjunto mínimo de dependências unidirecionais entre as camadas. Se você criar um diagrama mais detalhado usando classes ou métodos como as camadas, o resultado também deve ter as mesmas características.
Se esse não for o caso, o código será mais difícil alterar ao longo do tempo e menos adequado para validação usando diagramas de camada.
Criar novas áreas do seu aplicativo
Ao iniciar o desenvolvimento de um novo projeto ou uma nova área em um novo projeto, você pode desenhar camadas e dependências para ajudar a identificar os principais componentes antes de começar a desenvolver o código.
Mostrar os padrões de arquitetura identificação em seus diagramas de camada, se possível. Por exemplo, um diagrama de camada que descreve um aplicativo de área de trabalho pode incluir camadas como apresentação, lógica de domínio e armazenamento de dados. Um diagrama de camada que cobre um único recurso em um aplicativo pode ter camadas como modelo, exibição e controlador. Para obter mais informações sobre esses padrões, consulte Patterns & Practices: arquitetura de aplicativos.
Se você costuma cria padrões similares, crie uma ferramenta personalizada. Consulte Como definir um item da caixa de ferramentas de modelagem personalizado.
Criar um artefato de código para cada camada como um namespace, classe ou componente. Isso torna mais fácil de seguir o código e vincular os artefatos de código em camadas. Assim que você cria cada artefato, vinculá-lo à camada apropriada.
Você não precisa vincular a maioria das classes e outros artefatos a camadas porque elas se encaixam no maiores artefatos como namespaces que você já tiver vinculado a camadas.
Criar um novo diagrama para um novo recurso. Normalmente, haverá um ou mais diagramas em camadas que descrevem o aplicativo inteiro. Se você estiver criando um novo recurso dentro do aplicativo, não adicionar ou alterar os diagramas existentes. Em vez disso, crie seu próprio diagrama que reflete as novas partes do código. As camadas no novo diagrama podem incluir apresentação, lógica de domínio e as camadas de banco de dados para o novo recurso.
Quando você compila o aplicativo, seu código será validado tanto contra o diagrama como um todo e seu diagrama mais detalhado do recurso.
Editar o layout de apresentação e discussão
Para ajudá-lo a identificar as camadas e dependências ou discuti-las com os membros da equipe, edite a aparência e o layout do diagrama das seguintes maneiras:
Altere formas, tamanhos e posições das camadas.
Altere as cores das camadas e dependências.
- Selecione uma ou mais camadas ou dependências, com o botão direito e clique propriedades. No propriedades janela, edite o cor propriedade.
Valide o código no diagrama
Quando você edita o diagrama, você pode validá-la contra o código manualmente a qualquer momento ou automaticamente toda vez que você executa uma compilação local ou Team Foundation Build.
Consulte:
Incluir validação de camada no processo de compilação
Atualizar o código de acordo com a nova arquitetura
Normalmente, os erros serão exibidos na primeira vez que você valida o código em um diagrama de camada atualizado. Esses erros podem ter várias causas:
Um artefato é atribuído à camada errada. Nesse caso, mova o artefato.
Um artefato como, por exemplo, uma classe usa outra classe de maneira a entrar em conflito com a arquitetura. Nesse caso, refatore o código para remover a dependência.
Para resolver esses erros, atualize o código até que mais nenhum erro seja exibido durante a validação. Isso geralmente é um processo iterativo. Para obter mais informações sobre esses erros, consulte Validar o código com diagramas de camada.
Dica
Ao desenvolver ou refatorar o código, você pode ter novos artefatos para vincular ao diagrama de camada.No entanto, isso pode não ser necessário, por exemplo, quando você tem camadas que representam os namespaces existentes e o novo código só adiciona mais material a esses namespaces.
Durante o processo de desenvolvimento, você talvez queira suprimir alguns dos conflitos reportados durante a validação. Por exemplo, você talvez queira suprimir erros que já esteja resolvendo ou que não sejam relevantes para seu cenário específico. Quando você suprime um erro, é uma prática recomendada registrar em log um item de trabalho em Team Foundation. Para executar essa tarefa, consulte Validar o código com diagramas de camada.
Incluir validação de camada no processo de compilação
Para garantir que as alterações futuras no código em conformidade com os diagramas de camada, incluem a validação de camada ao processo de compilação padrão da sua solução. Sempre que outros membros da equipe compilar a solução, as diferenças entre as dependências no código e o diagrama de camada serão relatadas como erros de compilação. Para obter mais informações sobre como incluir validação da camada no processo de compilação, consulte Validar o código com diagramas de camada.