Gerência - Ciclo de Vida de Desenvolvimento

Série - Visual Studio Team System na prática - Infra-estrutura e desenvolvimento

O Objetivo desta série é trazer até você, exemplos de “como se faz” na prática muitas das operações do dia-a-dia de todos os envolvidos no ciclo de desenvolvimento de software. Do Gerente de Projetos até o usuário final, utilizando recursos disponíveis no “eco sistema” do TS.

por Marcus Garcia



O Objetivo desta série é trazer até você, exemplos de “como se faz” na prática muitas das operações do dia-a-dia de todos os envolvidos no ciclo de desenvolvimento de software. Do Gerente de Projetos até o usuário final, utilizando recursos disponíveis no “eco sistema” do TS.

No primeiro artigo da série (Preparando o ambiente de trabalho (Servidor)) instalamos o Team Foundation. No segundo artigo (Criando o primeiro projeto) criamos o projeto em Team System, porém, esse projeto tinha como único objetivo mostrar a criação e administração básica de um projeto em Visual Studio Team System sem criar vínculo algum com a execução de uma solução/projeto específico. Utilizando-se ainda do cenário do nosso segundo artigo, vamos arquitetar !!!

Cenário

A empresa XYZ necessita vender seus produtos em um novo canal de vendas, o canal escolhido foi a web, portanto, para que essas vendas ocorram, de forma organizada e segura será criado um site de e-commerce.

Nota: Nessa etapa, já sabemos ficticiamente o ambiente em que ocorrerão nossas ações (Servidores, tipos de aplicação, objetivos primários, etc). Ainda não vamos colocar a mão no código, mas vamos (Arquitetos de Infra-estrutura e Desenvolvimento) operacionalizar o ambiente de trabalho.

Lembrando...

A - estrutura da empresa XYZ

A empresa XYZ, possui equipe composta por: 1 Gerente de Projetos, 2 Arquitetos (1 de infra-estrutura e outro de desenvolvimento), 5 Desenvolvedores e 2 Testers, além é claro de mais 10 Beta testers da própria empresa.

A empresa XYZ não costuma utilizar metodologia de desenvolvimento e sim, um apanhado de técnicas no melhor estilo “King of the Jungle” que conheçemos.

A empresa XYZ quer aproveitar alguns desenvolvedores que trabalham em outras filiais da empresa nesse mesmo projeto de e-commerce, ou seja, que acessem remotamente o projeto.

A empresa XYZ quer que seus Stakeholders(1) recebam informações On Line de todos os acontecimentos no projeto.

Portanto, são vários requisitos que até pouco tempo atrás eram praticamente impossíveis de atendê-los em um único Software.

B - Nossa proposta para o Cliente XYZ

Criar um projeto no Team System utilizando a metodologia MSF Agile (leia sobre MSF Agile em: http://msdn.microsoft.com/vstudio/teamsystem/msf/msfagile/) , com base no template que se encontra na base do Team Foundation, controlaremos o projeto no novo Source Safe que foi totalmente redesenhado a partir do ZERO para o Team System que provê entre outras coisas, acesso remoto ao projeto via http e para que todos se mantenham informados, quanto ao andamento do projeto, o Project Site(2) e a utilização de Work Itens(3) serão fundamentais para os Stakeholders(1).

(1) Definição: Conforme o Wikipedia, Stakeholder, é uma referência à todos os envolvidos em um projeto de alguma forma. Por exemplo, cliente, equipe de projeto, acionistas, funcionários, fornecedores, etc. Pode-se utilizar, também, o termo "parte interessada". http://pt.wikipedia.org/wiki/Stakeholder.

(2) Definição: Project Site: É o Portal do Projeto, nele você encontra todas informações refentes a tudo que esta acontecendo em seu projeto bem como relatórios, tarefas pendentes e etc.

(3) Definição: Work Itens : trata-se de um dos principais recursos da ferramenta. Através dele, podemos definir regras a um item, por exemplo: Método de teste para ser efetuado antes de um Check-out no projeto. Maiores informações consulte: http://www.linhadecodigo.com.br/artigos.asp?id_ac=547.

Criando a infra-estrutura da Solução

Nosso Cliente, a empresa XYZ possui vários servidores, porém, para nossa solução iremos utilizar um dos servidores de banco de dados e um dos servidores Web da empresa.

Já com o Visual Studio 2005 Team Edition for Software Architects aberto, vamos criar uma solução vazia. Vá para Menu File/New/Project/Other Projects Types/Visual Studio Solutions e escolha Blank Solution (Figura1) e digite o nome LinhadeCodigo para a solution.


Figura1

Neste momento é criado a Solutions LinhadeCodigo, caso não esteja vendo a solution, vá para o Menu View/Solution Explorer ou tecle o atalho CTRL+Alt+L

Diagrama de aplicação

Precisamos criar a aplicação ou aplicações que utilizaremos em nossa solução, para isso, clique com o botão direito do mouse sobre a Solution (Figura2) e escolha Add\New Distributed System Diagram\Application Diagram e nomeie-o como AplicacaoLC (Figura3)

Figura2

Figura3

Neste momento, você já pode abrir a Toobox e dar uma boa olhada nas possibilidades que você tem. Prontamente, poderá notar que os tipos de aplicações mais usuais se encontram nela. Para utilizá-las é fácil, clique e arraste para dentro da Application Diagram (AplicacaoLC) que acabamos de criar (Figura4)

Figura4

Vamos arrastar para dentro do diagrama uma Asp.NET Web Application e também um External Database. (Figura5)

Figura5

Precisamos agora, definir o Banco de Dados que vamos utilizar e também criar o vínculo entre a aplicação web e o Banco de Dados, para isso, vamos começar pelo Banco de dados. Clique no botão de conector no banco de dados (DBLC) e mantenha o mouse clicado, aperte a tecla ALT esquerda de seu teclado mantendo-a clicada também, arraste o conector até uma das bordas da Aplicação Web (WebAppLC) e em seguida solte. (Figura6)

Figura6

Ao soltar aparecerá automaticamente o Connection Properties, escolha seu Servidor de banco de dados, escolha o tipo de Logo on no servidor e o banco de dados, para o nosso exemplo utilizaremos o NorthWind (4) (Figura7)

(4) O banco de dados Northwind é um banco de dados modelo que pode ser encontrado tanto para Access como para SQL Server, para baixar o NorthWind em SQL Server vá para: http://www.microsoft.com/downloads/details.aspx?FamilyID=06616212-0356-46A0-8DA2-EEBC53A68034&displaylang=en

Figura 7

Em seguida Teste a conexão, clicando em Test Connection e finalmente em OK para finalizar.

Feito isso, já poderíamos implementar a solução que seria automaticamente criada pelo Visual Studio 2005 Team Edition for Software Architects, mas, como já sabemos que a empresa XYZ vai ceder seus servidores para a aplicação quando em produção, nada mais coerente que dimensionar a aplicação de acordo com a realidade de seus servidores.

Diagrama lógico (Datacenter)

O Diagrama lógico é parte fundamental para quem pretende dimensionar corretamente o hardware com a aplicação que vai rodar nele, todos nós conhecemos algum caso em que a aplicação quando pronta não pode ser colocada em produção por não ter o hardware apropriado. Muitas vezes, tal situação gera custo extra para o cliente que precisa fazer um upgrade em seu(s) servidore(s) ou para o desenvolvedor que precisará redimensionar a aplicação e muitas vezes não poderá cobrar por isso, mas isso é um assunto polêmico!!!

Criando o Diagrama lógico

Vá para o Solution Explorer, clique sobre a solution (LinhadeCodigo) clique com o botão direito do mouse sobre a Solution (Figura2) e escolha Add\New Distributed System Diagram\Logical Datacenter Diagram e nomeie-o como LogicalLC (Figura8)

Figura 8

No Diagrama lógico, podemos simular toda a infra-estrutura de servidores e serviços (Figura9) que faz parte de nossa solução. Para nosso exemplo vamos definir uma Zona que é a entrada em nosso Firewall, na seqüência ligaremos o ponto de entrada e ponto de saída de nossa aplicação através de um servidor de web que estará conectado a um servidor de banco de dados.

Figura 9

Vá para o Toobox e arraste uma Zone, um IISWebServer e um DatabaseServer.(Figura10)

Figura10

Montando o Diagrama

(1) Zone – Clique arraste e dimensione de acordo com suas necessidades

(2) Ponto de entrada da Zona – Clique no botão com o desenho de um sinal , clique na tecla ALT também, mantenha clicado e arraste até o WebSiteEndpoint1 do IISwebServer1

(3) Ponto de saída da Zona - Clique no botão com o desenho de um sinal , clique na tecla ALT também, mantenha clicado e arraste até o WebSiteEndpoint2 do IISwebServer1

(4) Conexão – Clique no botão de conector do DatabaseServer1 e mantenha o mouse clicado, aperte a tecla ALT esquerda de seu teclado mantendo-a clicada também, arraste o conector até uma das bordas do IISWebServer1 e em seguida solte.

Importanto informações de servidores

Uma das grandes inovações que o Visual Studio 2005 Team Edition for Software Architects traz é a possibilidade de importar informações do servidor que receberá a aplicação.

Clique no IISwebServer1 e em seguida em Importing Settings, abrirá um Wizzard que vai lhe guiar até o servidor em questão. Esse servidor pode estar dentro da sua rede local ou em local remoto, basta você ter as credenciais para acesso ao servidor e poderá importar todas as configurações do IIS desse servidor (Figura11)

Figura11

Diagrama de Aplicação X Diagrama Lógico – Definindo o Deployment

Uma vez estando pronto os 2 diagramas, já podemos definir o Deployment para na seqüência validarmos a solução e em seguida implementar a solução.

Vá para o Diagrama de Aplicação, clique com o botão direito do mouse em alguma parte do diagrama e escolha Define Deployment, será solicitado um diagrama lógico, escolha o LogicalLC e em seguida clique em OK (Figura12)

Figura12

Na seqüência é criado automaticamente um terceiro diagrama que é o Diagrama de Sistema, no qual temos o System View ao lado esquerdo, que traz todas as aplicações disponíveis para serem alocadas nos seus devidos servidores. (Figura13)

Figura13

Entendendo o Diagrama de Sistema

(1) Diagrama que é criado automaticamente após clicar em Define Deployment no Diagrama de Aplicação

(2) System View traz todas as aplicações disponíveis que devem ser alocadas nos seus devidos servidores

(3) Local que recebe a aplicação no servidor web

(4) Local que recebe a aplicação no servidor de banco de dados

Alocando aplicações nos servidores

Conforme Figura13, arraste a WebAppLC para dentro do IISWebServer1 e arraste o DBLC para dentro do DatabaseServer1. (Figura14)

Figura14

Já com as aplicações alocadas nos seus devidos servidores, clique com o botão direito do mouse no Diagrama Sistema e escolha Validate Diagram para validar o diagrama. (Figura15)

Figura15

Caso não contenha erros, na barra de status da aplicação, receberá a mensagem de 0 errors/warnings found. (Figura16)

Figura16

Nesta etapa já estamos a 1 passo de ter nosso solução pronta para ser implementada, bastando para isso ir para o Diagrama de Aplicação e clicar com o botão direito do mouse em Implement All Applications (Figura17) e em seguida clique em OK.

Figura17

Finalmente, nossa solução foi criada e visualizando através Solution Explorer temos o projeto WebAppLC Criado. (Figura18)

Figura18

Nota: Graças a conexão do banco de dados a WebAppLC, ao abrir o web.config do projeto você verá a string de conexão já configurada (Figura19)

Figura19

Conclusão

Finalmente agora temos condições de unir arquitetos de infra-estrutura e desenvolvimento em um mesmo ambiente sistemático capaz de organizar, implementar e validar suas operações antes de programadores e demais membros da equipe por a “mão no código”. Tal fato inovador, será capaz de economizar muitas horas de trabalho já que validar o ambiente antes é fundamental para diminuir custos diretos e indiretos.

Grande abraço.
Marcus Garcia

Marcus Garcia - Foi Microsoft MVP entre 2004 a 2009, faz gestão de Desenvolvimento de Software na Submarino (Grupo B2W), é autor de inúmeros artigos técnicos e livros, além de ter proferido treinamentos e palestras por todo o Brasil. Atualmente, um dos sócios do Centro de Treinamentos Profissionais Actiongroup (www.actiongroup.com.br) . Pode ser encontrado pelo e-mail marcus.garcia@actiongroup.com.br ou pode ser seguido pelo @marcusgarcia