Gerência - Ciclo de Vida de Desenvolvimento

Primeiros passos no Visual Studio Team System

Investir em uma plataforma de Application Lifecycle Management como o Visual Studio Team System só vem a potêncializar o desenvolvimento de seus projetos pelo grande número de recursos oferecidos destinados a gestão estratégica e colaboração.

por Ramon Durães



O desenvolvimento de um produto de software em conjunto já não é mais novidade em nenhum mercado. Falar hoje em dia de Rapid Application Development (RAD) e Integrated Development Environment (IDE) também já não traz mais novidade, pois já temos ótimas ferramentas como o Visual Studio 2008 que usa toda a tecnologia para oferecer grande produtividade no desenvolvimento de software e mais precisamente na codificação. Com a plataforma .NET Framework também consolidamos outra dúvida comum que era a escolha da linguagem de programação. Lá no passado eu escutava muito dos amigos a conhecida frase “A minha linguagem de programação é melhor que a sua”. Conforme você vem acompanhando o mercado essa também já é uma afirmação bem ultrapassada.

O mercado hoje já está consolidado com os padrões disponíveis que já oferecem ampla segurança do ponto de vista de tecnologia. Agora chegou o momento de usar a tecnologia para facilitar não somente a codificação, mas incorporar todo o ciclo de desenvolvimento, pois só assim será possível alcançar um produto com qualidade no prazo e no tempo exigido pelo mercado desviando dos já conhecidos problemas ligados aos casos de insucesso na entrega de projetos de software tão relatados em diversas pesquisas realizadas pelo Standish Group (www.standishgroup.com)
sobre o histórico dos projetos ao longo dos últimos 10 anos conforme você pode ver na figura 01 onde apenas cerca de 30% dos projetos são considerados sucesso.

figura01
Figura 01 - Standish Group, 2004 Third Quarter Research Report, CHAOS Research Results

Conforme você pode observar na figura 01 os números são alarmantes e representam também a nossa realidade inclusive no Brasil. É um fato claro que está mais barato desenvolver software hoje, no entanto entregar com sucesso tem sido cada vez mais um grande desafio.

Com foco nessa grande demanda do mercado pela profissionalização do ciclo de desenvolvimento que desde 2005 a Microsoft passou a investir no mercado de Application Lifecycle Management (ALM) com o lançamento da plataforma de Visual Studio Team System (VSTS).

A plataforma do Visual Studio Team System (VSTS) é ofertada como uma solução baseada em um conjunto de produtos que juntos trabalham juntos e integrados para proporcionar a gestão do ciclo de vida de uma aplicação, oferecendo suporte para todo o ciclo de desenvolvimento envolvendo todas as áreas e papéis relacionados em um projeto de software tais como:

- Gestão
- Negócios
- Analise
- Arquitetura (Software / Infra estrutura)
- Desenvolvimento
- Banco de dados
- Qualidade

Com uma solução integrada oferecida pelo Team System você terá os mecanismos necessários para vencer os principais desafios em um projeto de software como: colaboração, qualidade, prazos e acompanhamento.

Com o modelo de gestão para o ciclo de desenvolvimento oferecido pelo Visual Studio Team System que trabalha em conjunto com a sua metodologia de desenvolvimento você terá mais um grande aliado no seu projeto possibilitando de forma integrada grandes resultados que são muito difíceis de se alcançar de forma manual devido aos diversos desafios no dia a dia desenvolvendo software.

É muito importante você ter em mente que plataforma de Application Lifecycle Management (ALM) não é simplesmente uma ferramenta para salvar seu código fonte como tenho observado alguns clientes que confundem o Visual Studio Team System  (VSTS) com o Visual Source Safe (VSS). O simples fato de armazenar o seu código fonte  com as ações de Check-In e Check-Out você consegue tranquilamente com as principais ferramentas do mercado de Source Control do mercado e não é essa a proposta  de uma solução de ALM.

Para ter resultados numa plataforma de ALM é necessário projetar a implantação pensando em todo o ciclo de desenvolvimento do seu projeto de forma que possa usar a plataforma de forma estratégica e tenha total aderência com as características do seu projeto.

Nos últimos 12 meses tenho tido uma grande oportunidade de conversar com um grande número de clientes e avaliar seu processo de desenvolvimento para alinharmos uma estratégia de implantação do Visual Studio Team System onde estamos tendo um índice de satisfação de 100% ou mais se fosse possível registrar. O grande falto que quero registrar é que o VSTS oferece um modelo sólido para os mais variados tamanhos de projetos permitindo criar uma personalização para atender clientes pequenos, médios e grandes respeitando as diferenças de cada cliente.

Eu me recordo de um cliente que relatou que conseguimos provocar “lágrimas” nós olhos dele pela tamanha satisfação e alcance de seus objetivos. Comentou ainda que por diversas vezes avaliou  diversas soluções mas nenhuma chegou tão próximo do seu modelo de negócio como o Visual Studio Team System.

Esses momentos com os clientes são de grande importância pois passamos a investir na plataforma desde 2004 internamente. Apartir de 2005 com o lançamento oficial para o mercado  começamos a ofertar para os  clientes. E nada melhor que trazer esse grande feedback de quem  realmente acaba por usar a plataforma no seu dia a dia.

Para você ter uma idéia do potencial oferecido pelo Visual Studio Team System gostaria de lhe convidar a observar a figura 02.

figura02
Figura 02 – Visual Studio Team System

Nós temos uma estrutura divida em algumas camadas que poderíamos separar conforme as seguintes visões:

- Ferramentas que atuam no cliente (Gerente de projeto, Arquiteto, Desenvolvedor, DBA, Tester).
- Ferramentas que atual no servidor (Portal, Comunicação, Relatórios, Controle de versão).
- Metodologia.
- Ferramentas de terceiros que complementam a solução

O principal componente chave da nossa solução é o Team Foundation Server (TFS) conforme você pode conferir na figura 03 que se encarrega de coletar todas as informações durante o clico de desenvolvimento. A comunicação é realizada por meio de itens de trabalho (Work Itens), que são criados pelo MS Project, Excel ou diretamente no Visual Studio. Consiste nas tarefas a serem executadas dentro do projeto. O TFS é o provedor de informações coletando dados e sumarizados para exibir por meio de relatórios estratégicos para acompanhamento do projeto. Tenha em suas mãos o controle sobre o código fonte de forma integrada usando novos conceitos além do “simples” armazenar, pois ele contém políticas de controle que permitem uma integração do código fonte ao ciclo de desenvolvimento. Tais políticas permitem, por exemplo, garantir que todo o código enviado esteja relacionado a uma tarefa criada no MS Project. Destaca-se também, pelo armazenamento de código dentro do SQLServer, usando transações atômicas evitando qualquer perda de código e permitindo desenvolvimento remoto com toda arquitetura baseada em Web Services.

figura03.png
 Figura 03 – Visual Studio Team System

Você ainda pode observar na figura 03 os diversos recursos oferecidos por cada versão presente na solução: Achitecture Edition, Development Edition, Test Edition, Database Edition

A idéia é você utilizar a versão do Team Edition de acordo com o seu papel no projeto. E para complemento temos a versão Visual Studio Team Suite que já engloba toda  as versões anteriores.

Terceirização de projetos desenvolvimento
Hoje em dia independente do tamanho da empresa sendo ela pequena ou média ou grande em algum momento já ter sido levantado a bandeira da terceirização dos projetos de desenvolvimento ou parte deles. Nós temos cenários em clientes que possuem 09 fornecedores para desenvolvimento e o que poderia ser de imediato uma grande facilidade acaba necessitando de uma série de critérios para o devido acompanhamento.

Com a plataforma de Visual Studio Team System você agora tem mecanismos eficientes para gerenciar os fornecedores externos fazendo com eles sigam os padrões de desenvolvimento do seu projeto permitindo acompanhar a qualidade do projeto e todas as entregas.

Modelo único para gerenciamento de todos os projetos
Por mais que tentamos padronizar os processos e tecnologias acabamos de ter que manter muitos projetos desenvolvidos em plataforma legadas e que ainda demandam muitas ações para manutenção e modificações relacionadas. Você poderá utilizar o Team Foudantion Server para armazenar também esses projetos usando próprio plug-in oferecido pela Microsoft ou conectores oferecidos por terceiros.

Transparência total
Para você que vive o dia a dia desenvolvendo software deve saber muito bem o que é encontrar uma alteração “desconhecida” em um bloco de código. A primeira pergunta básica é quem mudou e logo em seqüência o por que dessa mudança. Eu posso dizer para você que seus problemas acabaram pois com o Annotate você tem agora essa informação para auditar seu código a qualquer momento com transparência e sem complicações vai identificar a pessoa que mudou, todos os arquivos relacionados a essa mudança e quem fez essa solicitação de mudança conforme pode observar na figura 03.

figura03
Figura 04 – Annotate


Qualidade de software é prioridade

Se produzir um produto com qualidade é desejo de todas as empresas do mercado, para o Visual Studio Team System é a uma prioridade. Quem nunca recebeu uma ligação de um cliente reclamando que fez o primeiro teste na aplicação e encontrou um problema? Tenho certeza que você deve ter respondido que na sua maquina funciona. Falando assim até parece que é uma piada, mas é um assunto muito sério que afeta um grande número de projetos. Como pode você pode garantir que os testes realizados estão cobrindo todo o código? Para essa e outras dúvidas que temos todo um conjunto de ferramentas integradas do VSTS com o objetivo de trabalhar em cima da qualidade cobrindo  desde registro de bug, realização de testes unitários, funcionais, de carga, manuais, cobertura de código e muito outras ferramentas que possibilitam ao profissional agora ter mecanismos eficientes para atuar na qualidade do projeto. Confira na figura 04 um exemplo de relatório de cobertura de código após a realização de um teste unitário.


figura04
Figura 05 – Code Coverage

Analisando a figura 04 você pode observar na cobertura de código que quando o seu cliente estava reclamando ele realmente tinha razão. Você estava entregando um bloco de código que jamais estava sendo testado conforme indicado pela seta.

Integrando o desenvolvimento do banco de dados
O banco de dados tornou-se um dos maiores parceiros das aplicações. Com a solução de Visual Studio Team System você vai estender a mesma gestão no desenvolvimento  do código fonte para o desenvolvedor de banco de dados / DBA que agora trabalharam juntos usando poderosos recursos cobrindo desde controle de versão até qualidade dos objetos do banco de dados. Dentre os principais recursos podemos citar:


- Reverse-Engineering  (Importando a estrutura de um banco de dados existente para dentro do projeto no Visual Studio).
- Schema Compare (Comparando schemas entre banco de dados diferentes e gerando código T-SQL para o sincronismo das estruturas).
- Data Compare (Comparando dados entre banco de dados diferentes e gerando código T-SQL para sincronização).
- Refactoring  (Trocando nomes dos objetos no banco de dados respeitando todas as dependências. Esse recurso funciona de forma muito similar ao .NET ).
- Code Analysis (Utilizando análise estática de código para validar padrões de implementação em código T-SQL).
- Unit Testing (Criando testes unitários para validação de funcionalidades, schema, segurança e dados garantindo o controle de qualidade).


Próximos passos
Conhecer mais da plataforma do Visual Studio Team System sempre procurando relacionar com as necessidades do dia a dia do seu projeto. É muito importante fazer um levantamento interno em interno em seu projeto de como o mesmo está hoje e quais serão os passos nos próximos anos.  Perguntas simples conforme o pequeno questionário abaixo já pode ser o primeiro passo:

- Utiliza algum controle de código fonte atualmente?
- Já tem alguma metodologia de desenvolvimento?
- Quantas pessoas participam do projeto e qual o papel delas nos mesmos?
- Você já tem uma área de qualidade?
- Quais linguagens e plataformas são utilizadas nos projetos?
- Qual seu banco de dados atual?
- Quais principais projetos atuais?
- Quais são as principais reclamações nos projetos?
- Existem planos de novos projetos, migração de projetos antigos e contratação de mais profissionais?

Considerações finais
Investir em uma plataforma de Application Lifecycle Management como o Visual Studio Team System só vem a potêncializar o desenvolvimento de seus projetos pelo grande número de recursos oferecidos destinados a gestão estratégica e colaboração. Com um modelo simplificado de trabalhado você terá a disposição grandes resultados e uma aderência do seu modelo de trabalho. Enxergue hoje o VSTS como a plataforma base para todos os projetos de software independente da tecnologia utilizada de forma a permitir um único modelo de gestão em todo seu ciclo de desenvolvimento.

Para saber mais

Standish Group Report: There’s Less Development Chaos Today
http://www.sdtimes.com/content/article.aspx?ArticleID=30247

Por que você precisa do Visual Studio Team System
http://blogs.2pc.com.br/ramonduraes/archive/2008/09/02/
por-que-voc-precisa-de-visual-studio-team-system.aspx


Workshop Visual Studio Team 2PC Professional Consulting
http://www.2pc.com.br

Gerenciando projetos de software com Visual Studio Team System
http://www.2pc.com.br/mkt/cd/


Ramon Durães

Ramon Durães - Especialista em desenvolvimento de software e Microsoft Most Valuable Professional (MVP) em Visual Studio Team System. Realiza treinamentos de .NET Framework em empresas, consultoria em arquitetura de software e implantação de Visual Studio Team System. Palestrante nos principais eventos da Microsoft no Brasil (Tech-Ed 2005, Tech-Ed 2006, Tech-Ed 2007, Tech-Ed 2008, Tech-ED 2009), Microsoft Innovation Days 2007 (Salvador, Brasília, Recife, Goiânia, Natal, Maringá), Microsoft Innovation Days 2009 (Salvador) , Campus Party Brasil 2009 e eventos regionais relacionados a grupos de usuários e universidades. Conhecido autor de artigos para os principais portais de conteúdo e autor de 10 publicações eletrônicas em CD (Video-Aula) pela editora Linha de Código além dos livros "Desenvolvendo para web usando o Visual Studio 2008" e "Gerenciando projetos de software usando Visual Studio Team System" pela editora Brasport. Pode ser encontrado em seu blog http://www.ramonduraes.net e @ramonduraes no Twitter.