Dê o exemplo aos desenvolvedores no TFS

A inspiração para escrever esse post veio de uma thread no grupo ALM Online do Facebook a qual faço parte e contribuo constantemente.

Durante a conversa dessa thread, foi comentado a customização de Process Template no TFS e como devemos versioná-lo quando há a necessidade de adequá-lo à realidade de nossa empresa.

Como esse papel cabe muitas vezes ao administrador do TFS e ele “pode alterar qualquer coisa sem aviso prévio”, resolvi então dar fim aos ditados populares “em casa de ferreiro, o espeto é de pau” e “faça o que eu digo, não faça o que eu faço”, pois se você cobra padronização e seguimento de processos das outras pessoas, dê você mesmo o exemplo e mostre que tudo funciona.

Criando seu próprio ALM

Como disse acima, vamos dar exemplo e para todas as customizações que você fizer para o seu TFS (customização de processos, extensibilidades de Source Control, Work Items, Builds, etc.) faça o respectivo versionamento e o processo de entregas (Build e Deploy). Para isso siga algumas dicas abaixo:

Primeira dica: Crie um Team Project para o time que administra o TFS

A primeira dica válida para o time que administra o TFS é criar um Team Project para que seu time controle todas as customizações que por ventura vocês venham criar. Claro que você dará permissão somente para o seu time restringindo acesso de uso.

Com esse Team Project você fará o versionamento de todo o código fonte desenvolvido, fará todo o processo de entrega (Build e Deploy), bem como fará o planejamento das atividades utilizando todos os recursos disponíveis. Não esqueça, você é o exemplo!

Eu sou o exemplo!

Com o Team Project criado, crie a estrutura de versionamento que corresponderá a todas as customizações que você criará no seu TFS. Não precisa pensar em uma estrutura de paralelismo de branches (aqui o cenário será bem mais simplificado), mas sim crie no mínimo a estrutura MAIN –> DEV. Lembre-se: ninguém desenvolve em MAIN 🙂

Para nosso exemplo, criarei o versionamento das seguintes estruturas:

  • Process Template;
  • Extensibilidade de Source Control;
  • Extensibilidade de Build;
  • Extensibilidade de Work Item;
  • Relatórios (Reporting Services).

Estrutura do Team Project ALM

Segunda dica: se customizar o Process Template, versione-o

Com a estrutura acima e na eventualidade de executar algum tipo de customização no Process Template, siga os passos abaixo:

  • Baixe o Process Template que servirá como base para suas customizações e faça o seu versionamento;
  • Faça a alteração dos respectivos xmls do Work Item Types necessários às suas customizações e vá criando o histórico de alterações (Check Ins, Pushs, etc.);
  • Programe o Deploy de sua alteração com todos os membros do time.

Terceira dica: Crie as Build Definitions necessárias

Usando ainda nossa estrutura de versionamento e na necessidade de criar extensibilidade no TFS, criaremos solutions .NET que necessitam ser versionadas como quaisquer aplicações desenvolvidas.

Por se tratar de compilações, a regra que vale para todo mundo, também vale para o time que administra o TFS:

Não compile na sua máquina, temos um servidor de build que faz esse trabalho por você!

Portanto cria as respectivas definições de Build para a compilação do seu projeto. Tendo sucesso na compilação, planeje seu Deploy.

Quarta e última dica: já que tem um Team Project só do seu time, utilize o planejamento de atividades

Isso mesmo! O Team Project pertence somente ao time de administradores do TFS. Então porque não criar um ROADMAP das melhorias que serão implementadas no TFS e definir entregas? Pense nisso! Você apresentará o seu plano à alta gestão de sua empresa e conseguirá atingir os seus respectivos planos e metas.

Espero que tenham gostado das dicas.

Até o próximo post.

Vinicius Moura.

Vinicius Moura

Consultor ALM na empresa Lambda3. Formado em Tecnologia da Informação pela Universidade Presbiteriana Mackenzie. Pós graduado em Gestão de Tecnologia da Informação pela FIAP. Certificação Microsoft 70-512 Visual Studio Team Foundation Server 2010, Administration