Process Templates para Team Foundation Server

No Visual Studio Team Foundation Server 2008, podemos encontrar dois templates de processo que já vem com o produto: o MSF for Agile 4.2 e o MSF for CMMi 4.2.

São processos bem abrangentes sendo que o primeiro é mais indicado para projetos com um nível de controle não tão alto, onde temos que ter respostas ágeis a frequentes mudanças de requisitos e uma quantidade de documentação reduzida e o segundo mais indicado para projetos onde o gerenciamento de escopo, recursos, configuração e qualidade são mais efetivos e é um template de processo que atende aos requisitos do CMMi nível 3.

Para uma boa parte das empresas, esses dois templates fornecem templates e recursos mais que suficiente para o gerenciamento do projeto, porém há empresas que preferem customizar o próprio processo e definir seus próprios templates, workflows de aprovação de tarefas e bugs, relatórios, etc.

E há ainda, com o crescimento da adoção de metodologias ágeis, empresas parceiras e a própria comunidade trabalhando na criação de templates de processos para essas metodologias, entre elas Scrum, XP e FDD.

Consultando o site http://widgets.accentient.com/default.aspx que é um excelente repositório de extenções para o Team System, pude ver que já temos 13 novos templates para utilizarmos no Team Foundation Server. São eles:

  1. Cognizant FDD Process ($) – Cognizant (Commercial)
  2. Content Bridge for VSTS ($) – Osellus (Commercial)
  3. IRIS Process Author ($) – Osellus (Commercial)
  4. IRIS Process Live ($) – Osellus (Commercial)
  5. MSF for Agile Software Development (ver 4.1) – Microsoft (Free)
  6. MSF for CMMI® Process Improvement (ver 4.1) – Microsoft (Free)
  7. Personal Workspace v1.0 – Mitch Denny/Readify (Commercial)
  8. Process MeNtOR TeamGuide ($) – Object Consulting (Commercial)
  9. Scrum Template (CodePlex) – CodePlex (Community)
  10. Scrum Template (Conchango) – Conchango (Free)
  11. Scrum Template (Microsoft eScrum) – Microsoft (Free)
  12. Scrum Template (Scrumptious) – CodePlex (Community)
  13. XP for Team System (Extreme Programming) – CodePlex (Community)

Abraços
André Dias

Casos de Sucesso do Team System

Agora, até que diminuiu um pouco, mas até um tempo atrás eu recebia diversas perguntas questionando a verdadeira necessidade do Team System, se ele aumentava realmente a produtividade, se valia a pena o investimento no produto, etc.

Bom, segue uma “pequena lista” de Casos de Sucesso do Team System. Temos inclusive a brasileira Telemar (#33) entre os casos de sucesso. Confiram:

  1. Achmea
  2. Airways New Zealand
  3. Anonymous Global Manufacturer
  4. Anonymous Social Networking Web Site
  5. Bowne
  6. CC Intelligent Solutions
  7. CH2MHill
  8. Clear Channel
  9. Configuresoft
  10. De Post – La Poste
  11. Dell
  12. DriveTime
  13. EDS
  14. EDS
  15. Fujitsu
  16. Gulf Coast Seal
  17. Hotmail.com
  18. Imagination
  19. Indianapolis Colts
  20. Info Support
  21. Infosys
  22. K2
  23. KBC Bank
  24. MethodFactory
  25. Microsoft
  26. Microsoft Business Unit IT
  27. Microsoft e*BIS IT
  28. Microsoft Managed Solutions IT
  29. Microsoft OEM Division’s IT Center of Excellence
  30. Service Corporation International (SCI)
  31. Sogeti Group
  32. State of Washington Digital Archives Development Team
  33. Telemar
  34. The Computer Solution Company (TCSC)
  35. Top Image Systems
  36. Washington State Department of Community, Trade, and Economic Development
  37. Windows Live College Bracket Challenge
  38. Worldspan

Abraços
André Dias

Consultando a versão do Team System e Estendendo o Trial

Consultando o Blog do Brian Harry, encontrei uma ferramenta muito interessante que nos permite verificar qual versão do Team System estamos utlizando. No caso de ser uma versão Trial, ele informa ainda o número de dias restantes e ainda nos permite estender por mais 30 dias uma versão trial.

É uma ferramenta bem simples que pode ser rodada direto no servidor para evitar problemas de permissão e você tem que fornecer apenas o nome do servidor onde o TS está instalado.

A ferramenta está disponível para download no blog do Brian ou se preferir, clique aqui para fazer o download.

Divirta-se 🙂

Abraços
André Dias

Como alterar o Team Foundation Server no Project – Parte 2

Mês passado, eu publiquei um post sobre como alterar o servidor do Team System no MS Project 2007 / Excel .

Para quem não está acompanhando, o Team System oferece diversas opções de clients: o próprio Visual Studio com o Team Explorer, o Internet Explorer acessando o Team System Web Access e temos também o Excel e o Project.

O problema é que uma vez que você seleciona o servidor e projeto com qual vai trabalhar, você nunca mais pode alterar. Imagine eu tentando explicar pro meu gerente que o crograma dele com centenas de atividades não poderia mais se conectar ao Team System e ele não poderia mais sincronizar o status das ativades, nem publicar mais nada. Acho que ele não gostou muito 🙂

Como citado anteriormente, publiquei um post que mostrava como contornar isso, mas há uma forma muito mais inteligente de fazer isso: Coloquei esse problema no fórum americano e uma pessoa do time me deixou um e-mail dizendo pra eu entrar em contato que ele tinha um software interno para corrigir isso.

Mandei o e-mail para o cidadão que prontamente me respondeu com o software em anexo junto com um pequeno manual e não é que o software funcionou 🙂 Ele disse ainda que é muito provável que essa ferramenta seja anexada a próxima versão do Power Tools.

Se você está precisando fazer isso agora e não pode esperar até a próxima versão, entre em contato comigo que encaminho a ferramenta.

Um abraço
André Dias

Migrando Team System 2005 para Team System 2008

Primeiro post do ano. Eu poderia começar falando sobre como foram as minhas férias, viagens, mas que férias? No máximo uma prainha no Guarujá/SP na virada do ano. Então vamos ao que eu fiz no lugar das férias, vamos falar sobre como migrar o Team System da versão 2005 para 2008.

Antes de tudo vou explicar o cenário que tinhamos. Tinhamos uma instalação Single Server do TS2005. Ela começou com apenas um projeto para avaliarmos o produto e em pouco mais de um mês começamos a colher os resultados com diversos relatórios sobre o projeto, acompanhamento em tempo real das atividades, um ótimo controle do ciclo de vida do projeto. Pronto! Foi suficiente para convencer o gerente e migrarmos todos os projetos, até então no Source Safe, para o Team System.

Como consequência, o servidor ficou mais lento, as builds começaram a demorar mais e resolvemos migrar para uma arquitetura multi-server. Aproveitamos também que o Team System 2008 já estava em RTM e fizemos a migração de versão também.

Existem vários procedimentos para migração e apesar do guia não recomendar, saímos de uma arquitetura single server 2005 diretamente para uma multi-server 2008.

Inicialmente fizemos a migração do Sharepoint Services 2.0 para o Sharepoint Services 3.0 utilizando esse o artigo TN1501: Configuring Windows SharePoint Services 3.0 on the Visual Studio 2005 Team Foundation Server Application Tier.

Em seguida fizemos o Upgrade do Team System 2005 para o Team System 2008 apenas para atualizar as bases de dados do 2005 para o formato do 2008. Para realizar esse procedimento utilizamos o Team Foundation Installation Guide for Visual Studio Team System 2008.

Depois disso fizemos uma instalação do zero utilizando quatro servidores novos:
1) Team Foundation Application Server
2) Team Foundation Database Server
3) Team Foundation Build Server
4) Sharepoint Server 2007

Essa instalação multi-server também pode ser encontrada no Installation Guide do TS2008.

Com um conjunto de máquinas zerinho e o servidor antigo migrado para a estrutura do Team System 2008. Foi só fazer o backup de todos os bancos de dados do Single Server e restauramos na arquitetura Multi-Server utilizando esse imenso guia How to: Move Your Team Foundation Server from One Hardware Configuration to Another.

Não foi uma instalação simples, também não achamos um guia que mostrasse o caminho completo para fazer essa migração do jeito que queriamos então utilizamos esse conjunto de guias que deu num resultado perfeito.

Hoje, estamos com essa arquitetura multi-server funcionando perfeitamente e utilizando praticamente todos os recursos disponíveis no Team System 2008. Os novos templates de processos estão bem mais completos, o gerenciamento de builds ficou muito mais fácil, a customização do portal do projeto com o Sharepoint Server 2007 está muito mais tranquila. Então se você tem a oportunidade de fazer essa migração, recomendo que perca um tempinho planejando e vá em frente porque os resultados valem a pena.

Um abraço
André Dias

Números do Team System na Microsoft

Visitando o Blog da Aline Frias, encontrei uma informação super interessante sobre a utlização do Visual Studio Team System e do Team Foundation Server na própria Microsoft. É isso aí! A MS utilizando seus próprios produtos e com números realmente impressionantes. Confiram:

  • Projetos no Team Foundation Server: 1.355 (taxa de crescimento de >100 novos projetos/mês)
  • Usuários Ativos: 8.452 (grupos que já usam TFS: MSIT, DevDiv, SQL, Office, Windows, MSCOM e Windows Live/MSN)
  • Work Items: 1.254.266
  • Arquivos de Código-Fonte: 27.311.195 (isso mesmo, mais de 27 milhões de arquivos-fonte!)

Os números foram enviados pelo Joe Schwetz, Group Manager do time de TFS.

Abraços
André Dias

Como alterar o Team Foundation Server no Project 2007

Há alguns meses, implantamos o Team System na empresa para avaliarmos o produto. Foi uma instalação Single Server, apenas um projeto de avaliação e muuuuita experiência. Os resultados foram tão bons que hoje temos todos os projetos da empresa hospedados nele e dezenas de desenvolvedores conectados no Team Foundation Server e integração com Excel, Project, desenvolvimento externo, continuous integration, etc.

Acontece que o número de acessos aumentou, os recursos utilizados também e vimos a necessidade de migrar o Team System para uma arquitetura distribuída. Então, colocamos o Team System em algumas máquina, restauramos o Backup e fizemos a migração com sucesso.

Colocamos o servidor novo no ar, notificamos os desenvolvedores e analistas para apontarem para o novo servidor e quando achávamos que estava tudo bem, me aparece um gerente dizendo que não conseguia mais atualizar o MS Project Professional 2007 que estava conectado ao Team System.

Após muito pesquisar, qual é a solução que a Microsoft oferece? Criar um project do zero, importar os Work Items e fazer uma espécie de Merge na unha. Confesso que não acreditei quando vi que tanto o MS Project quanto o Excel não permitem alterar o endereço do Servidor do Team System.

Uma gambiarra que fizemos para resolver o problema temporariamente, foi alterar o arquivo hosts do Windows para apontar o nome do servidor antigo para o IP do novo servidor, mas não recomendo ninguém a fazer isso, pois é muuuuita gambiarra 🙂 Foi apenas uma solução temporária que encontramos.

Enquanto não achamos uma solução melhor, vou seguir o que a Microsoft indicou no artigo Reconnect a Microsoft Project File to Team Foundation Server.

Mas que foi um belo balde de água fria, num momento que estávamos super empolgados com os testes e planejamento de migração para o VSTS 2008, foi !! Espero que em breve saia algum patch pra isso.

Abraços
André Dias

Especificação do Team System code name Rosario disponível

Eu já tinha me surpreendido com a participação dos Product Managers do Team System participando de fóruns para colher feedbacks e sugestões da comunidade, mas confesso que nunca imaginei ver a Microsoft abrindo a especificação do produto para podermos opinar de verdade.

Navegando atrás de informações sobre o Visual Studio Team System code name Rosario encontrei um blog falando que junto com o CTP de novembro, a MS liberou algumas especificações do que será implementado e um fórum específico para discutir as features que são importantes para o produto.

Atualmente, existem 3 especificações disponíveis:

  1. Visa melhorar o processo de adição de arquivos no Version Control, justificando que na versão atual a experiência de adicionar arquivos é complexa e tem um workflow não-linear, especialmente para arquivos em localizações não mapeadas.

  2. Foca em melhorar a experiência de achar o history para um item no Version Control. Algumas mudanças serão feitas na janela do ChangeSet para fornecer recursos para rastrear em branches e merges. Isso eu já tinha sentido falta, pois quando você faz um branch, você perde todo o histórico.

  3. Trata da melhora do processo de Labeling no Version Control. A especificação diz que é processo é muito complexo para uma tarefa que deveria ser simples e que muitas opções estão disponíveis para processos triviais.

Todas essas especificações podem ser encontradas em http://msdn2.microsoft.com/en-us/teamsystem/bb936702.aspx e sugestões e comentários sobre as especificações podem ser postadas no fórum específico.

Só pra fechar, gostaria de dizer que achei essa iniciativa da Microsoft fantástica e adoraria que isso fosse estendido a outros produtos / tecnologias como .NET Framework e Entity Framework.

André Dias

Version Control e SQL Management Studio

Uma dúvida muito comum nas palestras relacionadas ao Team System no TechEd 2007 foi sobre os clients do Version Control. Muitas pessoas queriam saber se é possível utilizar Version Control com Visual Basic 6, SQL Management Studio, Java, etc ..

A resposta é SIM! A própria Microsoft liberou um produtinho chamado Visual Studio 2005 Team Foundation Server MSSCCI Provider que permite a utilização do Version Control através dos seguintes produtos:

  • Visual Studio .NET 2003
  • Visual C++ 6 SP6
  • Visual Visual Basic 6 SP6
  • Visual FoxPro 9 SP1
  • Microsoft Access 2003 SP2
  • SQL Server Management Studio
  • Sparx Systems Enterprise Architect 6.1
  • Sybase PowerBuilder 10.5
  • Toad for SQL Server 2.0

Pra quem usa o Java como plataforma, temos ainda o Teamprise. Esse produto é um plugin que permite conectar o Eclipse ao TFS. Não é free, mas já é uma solução.

É isso aí, produto Microsoft gerenciando SDLC em muitas linguagens 🙂

[]s
André Dias

Teste Unitário e Code Coverage com Visual Studio

Ultimamente tenho visto muita gente falar sobre testes unitários, metodologias ágeis, garantia de qualidade, mas implementar o tal do teste unitário que é bom mesmo, são poucas empresas que conheço que fazem isso de verdade.

Quando digo que são poucas, não estou me refirindo a você abrir o Visual Studio, criar um projetinho de teste e criar um método simples para testar apenas o “caminho feliz” do seu método, estou falando de você planejar os seus testes unitários antes e criar vários métodos de testes para cobrir todas, ou pelo menos a maioria, das situações que o seu método possa executar.

Isso engloba em testar range de valores, parametros opcionais, se as exceções são levantadas corretamente e por aí vai. Se for preciso utlizar Mock Objects, ótimo, vamos fazer isso também, mas é extremamente importante que você faça métodos de testes que sejam eficientes e não apenas para dizer que está utilizando testes unitários na sua aplicação.

Um recurso muito útil presente no Visual Studio (edições pra Developer e Tester) é o Code Coverage. Esse recurso ligado junto com os testes unitários permite ao usuário acompanhar visualmente quais trechos do código foram testados ou não.

Vamos ver um exemplo de como ele funciona:

1. Vamos criar um projeto do tipo Class Library e adicionar uma classe Calculadora como o exemplo abaixo:


public class Calculadora
{
public static float Dividir(float d1, float d2)
{
if (d2 == 0)
{
throw new DivideByZeroException();
}
else
{
return d1 / d2;
}
}

public static int Soma(int a, int b)
{
return a + b;
}
}

2. Em seguida , vamos adicionar um projeto do tipo Test Project e adicionar uma classe chamada CalculadoraTest com o seguinte código:


[TestClass]
public class CalculadoraTest
{
[TestMethod]
public void DivisaoComumTeste()
{
float resultado = Calculadora.Dividir(6, 3);
float esperado = 2;

Assert.AreEqual(esperado, resultado);
}
}

Veja que a classe de teste possui apenas um método e não está cobrindo a situação de divisão por zero, e nem o método Soma. Isso não quer dizer que o método não funcione, mas ele não foi testado.

Se rodarmos esse teste, teremos o seguinte resultado:

Até aí nada de muito interessante, a janela mostra apenas que o teste foi executado com sucesso. O grande barato é quando ligamos o Code Coverage o colamos os testes unitários para rodar junto.

Para habilitar o Code Coverage, vá no arquivo localtestrun.testrunconfig da sua solução e você verá a seguinte tela:

Marque o Assembly CodeCoverageSample.dll e mande rodar os testes novamente. Quando terminar os testes, acesse o menu Test/Windows/Code Coverage Results e veja que coisa linda 🙂

O Visual Studio te dá a porcentagem de código testado agrupados por métodos, classes, namespaces e assemblies e além disso marca no código por quais trechos ele passou ou não.

Dessa forma fica muito fácil visualizar que temos que escrever mais métodos de testes para testar a situação da divisão por zero e para garantir que o método de soma está funcionando corretamente.

Agora que já conhecemos o Code Coverage, é só definirmos uma meta para o nosso projeto (80, 90, 100% de cobertura) e brigar com o seu gerente pra ele alocar tempo para você criar métodos de testes que cubram todo o seu código 🙂

Um grande abraço

André Dias