Gerência - Arquitetura

Conhecendo o Visual Studio Team System Architecture Edition

Escrevi uma série de artigos cobrindo todas as edições do Visual Team System. Chegou à vez da Edição Team System Architecture.

por Fernando Amaral



Escrevi uma série de artigos cobrindo todas as edições do Visual Team System. Chegou à vez da Edição Team System Architecture. Esta edição é a mais simples e a menos funcional, no sentido de atender as necessidades do que se propõe, por isso, foi possível cobrir perfeitamente todas as principais funcionalidades em um único artigo.

Utilizei a versão 2008 do Team System, porém você poderá acompanhá-lo tranquilamente com a versão 2005, pois, no que tange as funcionalidades aqui demonstradas, as diferenças são sutis ou até inexistentes.

Conceitos Iniciais

Esta edição do Team System esta baseada em três conceitos principais: DSL (Domain-specific languages), Model-Driven Development (MDD) e Software Factories.

O conceito de Software Factories não é novo, e, esta de certa forma relacionado à produção de software na forma de uma linha de produção, onde são compartilhados elementos entre diversos sistemas, apresentando um ganho em produtividade, qualidade, previsibilidade entre outros. MDD diz respeito à criação de modelos, que podem ser utilizados na criação de softwares. Diferentemente de outros modelos utilizados na construção do software, como um diagrama de casos de uso, cuja finalidade é de apenas documentar o software, o modelo MDD esta diretamente relacionada à construção do software, a escrita do código e a sua configuração. Um modelo MDD deve gerar código automaticamente para a construção do sistema. DSL pode ser definida como uma forma de modelagem com um objetivo especifica, a fim de definir um determinado grupo de funcionalidades do software.

Obviamente que o objetivo deste artigo é mostrar as funcionalidades da edição Architecture do Team System, para saber mais sobre os assuntos acima, uma ótima referencia é o livro Practical Software Factories in .NET 1.

Distributed System Designer

A edição Architecture do Team System é baseada no template de projeto Distibuted System, que nos propicia a construção de alguns diagramas. Atualmente, existem quatro ferramentas de desenho de sistemas distribuídos:

1. Desenho de datacenter lógico (Logical DataCenter Designer): Modela a infraestrutura lógica de um Datacenter, bem como a forma de comunicação entre seus elementos.

2. Desenho de Aplicação (Applicaton Designer): Modela as aplicações que poderão ser incluídas em sistemas para implantação;

3. Desenho de Sistema (System Designer): Modela sistemas;

4. Desenho de Implantação (Deployment Designer): Modela a implantação de um sistema em um Datacenter Lógico.

Geralmente iniciamos o projeto pelo Logical DataCenter Designer, seguido pelo Application Designer. Podemos ter mais de um Logical DataCenter Designer no projeto, e estes podem ser independentes, porém só podemos ter um Application Designer por solução. O Deployment Designer deve ser criado por último, pois o VS não atualiza a relação de aplicações dos demais diagramas após a sua criação.

Logical Datacenter Designer

Vamos criar uma nova solução utilizando o Template Logical Datacenter Design, do tipo Distributed Systems:

Sua solução deve ser criada como na imagem abaixo:

Na barra de ferramentas (ToolBox), você pode observar diversos objetos que podem ser adicionados a área de desenho, agrupados em General Desiner, Endpoints e Logical Servers.

General Designer possui um controle de conexão para conectar as formas, e um controle para adição de comentários. O grupo Endpoints possui formas que representas pontos de comunicação entre os objetos do diagrama. Logical Servers representam servidores lógicos a serem adicionados na representação do Datacenter. A forma Zone, no grupo Logical Servers, representa uma zona qualquer em uma rede lógica, podendo ser uma VPN, internet, DMZ etc. Uma zona pode conter Servidores Lógicos ou outras zonas.

A montagem de um diagrama é simples, basta arrastar as formas da barra de ferramentas para a área de desenho. Para conectar as formas, basta usar o objeto connection, ou mesmo arrastar o mouse entre um objeto e o endpoint de outro objeto segurando a tecla ALT. Os endpoints podem ser removidos ou adicionados aos servidores lógicos.

No exemplo abaixo, nosso datacenter lógico possui duas zonas, além de um cliente que não pertence a nenhuma zona (poderia representar, por exemplo, o host da aplicação em uma zona, uma maquina cliente na internet e a outra zona a matriz da empresa).

Cada forma possui diversas propriedades, que podem ser acessadas através da janela de propriedades do Visual Studio, como em um controle qualquer. Por exemplo, um endpoint possui uma propriedade CommunicationFlow, cujos valores podem ser Bidirectional, Outbound ou Inbound. Note que no diagrama acima o endpoint que recebe as conexões está definido como Bidirectional, você pode perceber isto pela imagem do mesmo na forma de <>.

Cada forma possui ainda configurações e restrições, que podem ser acessadas pela propriedade Settings and Contrains. Você ainda pode criar configurações personalizadas, selecionando Custom:

Application Designer

Para adicionar um Application Designer à solução, clique com o botão direito sobre a solução, Add, New Item:

Em Distributed System Diagramas, Selecione Application Diagram:

O Diagrama é adicionado à solução. Na barra de ferramentas (ToolBox), você pode observar diversos objetos que podem ser adicionados a área de desenho, agrupados em General Desiner, Endpoints e Logical Servers:

A construção do diagrama é feita de forma semelhante: arrastando objetos para a área de desenho. Neste diagrama também cada forma possui ainda configurações e restrições, que podem ser acessadas pela propriedade Settings and Contrains. Você ainda pode criar configurações personalizadas, selecionando Custom.

Neste diagrama, como estamos modelando a aplicação, existem algumas particularidades. Por exemplo, ao conectar uma aplicação com o banco de dados, o VS vai solicitar as informações para esta conexão:

O VS pode ainda gerar a aplicação representada no diagrama, já na solução. Primeiro você define as propriedades da aplicação, como nome, cultura e plataforma, depois basta clicar com o botão direito sobre o diagrama da aplicação e selecionar Implement Application:

Após uma caixa de dialogo com uma mensagem de aviso, a aplicação é criada e adicionada à solução:

Note que você ainda pode solicitar a criação de todas as aplicações do diagrama.

Junto com a aplicação criada, o VS ainda cria um arquivo SDM, que é um modelo de definição de sistema (System Definition Model). Este é um arquivo em XML que apresenta uma descrição da aplicação recém criada. Se você clicar sobre o arquivo no Solution Explorer será redirecionado ao diagrama da aplicação criado na solução, para visualizar o conteúdo do mesmo, clique com o botão direito sobre o arquivo, selecione Open With, e escolha XML Editor. Na imagem abaixo, a visualização do arquivo:

Uma última observação sobre este tipo de diagrama, é que o Visual Studio permite a criação de apenas um por solução. Caso você tente adicionar outro diagrama de aplicação, o VS exibirá uma mensagem de erro, como na imagem abaixo:

System Designer

Para criar um diagrama de sistema, basta selecionar uma ou mais aplicações em nosso diagrama de aplicações, e selecionar Design Application System, como na imagem abaixo:

O VS vai solicitar um nome para o sistema:

O diagrama do sistema é criado:

Você pode criar um diagrama de sistema independente do diagrama da aplicação. Você pode ainda ter mais de um diagrama de sistema, e, finalmente, você pode adicionar um sistema a outro. Se você observar na barra de ferramentas, existe um grupo Systems para a criação de um subsistema em um sistema já existente:

Deployment Designer

Finalmente, o diagrama de implantação. Este tipo de diagrama não pode ser criado em branco, ele deve ser criado a partir do diagrama de aplicação, e deve existir na solução pelo menos um diagrama de lógico de Datacenter. Para criar este diagrama, clique com o botão direito sobre o diagrama de aplicação e selecione Define Deployment:

Você deve em seguida informar qual diagrama lógico de datacenter será utilizado:

O diagrama é criado. A janela System View deve ser aberta, mostrando as aplicações do diagrama de aplicações. A partir deste momento, você pode vincular aplicações listadas no System View com os servidores lógicos do diagrama de Datacenter lógico, através de operações de arrastar e soltar com o mouse, de acordo com sua compatibilidade:

Note na imagem que aplicações que já estão vinculadas recebem um pequeno ícone verde à esquerda e o atributo <bound>.

O VS permite que você valide o diagrama, para isto basta clicar com o botão direito sobre o mesmo e selecionar Validate Diagram:

As mensagens de validação são exibidas na janela Error List, da mesma forma de erros de compilação de um código. Finalmente, você pode gerar um relatório do diagrama, selecionando Generate Deployment Report ao clicar com o botão direito sobre o diagrama. Abaixo, um modelo de relatório gerado:

Conclusão

A edição Architecture, apesar de apresentar alguma funcionalidade que podem ser bastante úteis para um arquiteto de software e de apresentar, na prática alguns conceitos inovadores com relação a arquitetura de uma solução,  tem ainda poucas funcionalidades disponíveis. A Microsoft tem ainda um longo caminho a percorrer para tornar o produto realmente útil ao público a que se destina, situação semelhante, porém mais agravada, ao que apontei com relação a edição DataBase. A funcionalidade desta edição esta centrada no conjunto de ferramentas e diagramas Distributed System Designer. Não há ainda qualquer suporte a UML a não ser o já conhecido digramas de classes, presente também na Edição Developer e Professional do Visual Studio. Para a edição 2010, em seu primeiro Beta, a situação é um pouco diferente. Já existem ferramentas e suporte para a criação de pelo menos cinco diagramas UML.

1 Lenz, Gunther, and Christoph Wienands. Practical Software Factories in .NET. Springer. © 2006. Books24x7.

Fernando Amaral

Fernando Amaral - Certificado PMP pelo PMI, CDIA+ pela CompTia, MCP, MCAD, MCSD, MCDBA, MCT pela Microsoft. Pós Graduado em Gestão de Sistemas de Informação (UNIDERP) e Melhoria em Processos de Software (UFLA). Atualmente reside em Campo Grande, MS, onde presta consultoria, treinamentos e palestras na área de TI.
Blog:
http://www.fernandoamaral.com.br.