MSF for Agile 5 e TFS 2010 - Artigo .net Magazine 84

Este artigo é uma introdução ao conceito de agilidade e para entender como utilizar o TFS para projetos ágeis. Este artigo oferece um ponto de vista sobre projetos ágeis, passando um pouco da filosofia e depois da aplicação do VSTS como ferramenta para aplicação de disciplinas de gerenciamento de projetos e engenharia de software.

De que se trata o artigo

Este artigo é uma introdução ao conceito de agilidade e para entender como utilizar o TFS para projetos ágeis. Este artigo oferece um ponto de vista sobre projetos ágeis, passando um pouco da filosofia e depois da aplicação do VSTS como ferramenta para aplicação de disciplinas de gerenciamento de projetos e engenharia de software. Na prática este artigo abordará as fases dos projetos, como criar e controlar os entregáveis de projeto utilizando puramente as ferramentas disponíveis no Visual Studio Team System 2010.

Para que serve

O MSF for Agile é uma metodologia ágil que pode usada como process template no TFS (Team Foundation Server), servindo para gerenciar todo o ciclo de vida da aplicação de forma integrada ao Visual studio.

Em que situação o tema é útil

Este tema é útil para os membros de equipe que quiserem utilizar Visual Studio 2010 e Team Foundation Server 2010 como plataforma de ALM para projetos Ágeis utilizando somente os recursos nativos destas versões das aplicações. Os recursos aplicam-se às versões do Visual Studio 2010, e Team Foundation Server 2010.

TFS e MSF for Agile

A busca da melhoria na produtividade nos tempos modernos não se aplica somente a software, mas a toda a cadeia produtiva contemporânea. Assim como em diversas áreas, a busca do “graal” da competitividade na melhoria da produtividade na construção de software é uma constante da qual pode depender a sobrevivência de uma empresa de TI. A empírica nos permite vislumbrar até aonde poderíamos ir, mas a prática nos impõe limitações de diversos tipos, como conhecimentos técnicos, motivacionais, ambientais, culturais e de riscos técnicos inerentes à complexidade do produto. Nossas mentes são formidavelmente criativas, e tentar compreender a capacidade de produção dos membros da nossa equipe nos remete as mais diversas ciências e ferramentas, desde produção automatizada e padronização de métodos, até mesmo chegando à psicologia e liderança situacional. Como parte deste artigo, iremos abordar um pouco este universo produtivo, mencionando os princípios da agilidade e nos apoiando no Visual Studio e Team Foundation Server 2010 como ferramentas de apoio para times de desenvolvimento de software, para ajudar na execução de projetos Ágeis.

O mundo está cada vez mais ágil, e isto é um fato. Cartões de crédito, transações on-line, delivery dos mais diversos produtos, redes 3G e dispositivos portáteis conectados quase 100% do tempo, cursos a distância, GPS, e diversos outros recursos que nos dão rápido acesso a serviços e informações. Na prática, todos os serviços existentes ajudam as pessoas a serem mais produtivas, a um custo cada vez menor.

Nos projetos de software esta agilidade está cada vez mais em evidência, tornando-se cada vez mais um requisito obrigatório para que se consiga atingir a produtividade necessária para tornar equipes e empresas competitivas e viáveis economicamente.

Cada vez mais, entende-se que desenvolvimento de software não é uma ciência exata, pois a interferência humana é muito influenciadora do sucesso de um projeto. Surgem então os princípios práticos do Manifesto Ágil, aonde paradigmas são expostos como princípios para apoiar a produção de maneira a garantir a viabilidade econômica dos produtos.

Segundo o manifesto Ágil, a produtividade é focalizada através dos princípios:

“Indivíduos e interação entre eles mais que processos e ferramentas
Software em funcionamento mais que documentação abrangente
Colaboração com o cliente mais que negociação de contratos
Responder a mudanças mais que seguir um plano
Ou seja, mesmo havendo valor nos itens à direita, valorizamos mais os itens à esquerda.”

Bom, então nos perguntamos se deixamos itens adicionais de desenvolvimento de software de lado, como a Arquitetura e Testes por exemplo. Não, os métodos ágeis não vão contra as disciplinas de engenharia, eles apenas tendem a aplicar os princípios de engenharia de uma maneira mais prática e direta. O que muda na verdade é a maneira como se lida com estes itens. Por exemplo, a arquitetura tende a ser evolutiva, desenvolvida baseada em princípios, porém atualizada conforme a necessidade do produto. Os testes por sua vez são feitos antecipadamente, no processo chamado de “early testing”. Conforme o produto fica pronto, a comunicação e o trabalho em equipe passam a serem fatores críticos de sucesso – não que já não fosse em outros tipos de projeto, mas os métodos ágeis realmente os trazem como carro chefe do processo de desenvolvimento – uma abordagem inteligente, uma vez que muitas falhas em projetos começam por falhas de comunicação.

Falando em Processo de Desenvolvimento, as fases dos projetos também continuam ocorrendo, porém, existe a tendência de evitarmos os entregáveis desnecessários, focarmos nos entregáveis úteis e que realmente façam sentido. É muito importante o planejamento da entrega de releases menores, porém mais frequentes baseados em versões “funcionando” deste produto. Neste processo de releases diversos, os clientes são trazidos para avaliar o produto, e obtém-se previsibilidade de que o projeto está ou não caminhando na direção certa, sendo possível agir em tempo hábil de corrigir o rumo do mesmo. É impressionante, pois os métodos ágeis acabam protegendo o ROI (Return On Investment, ou “retorno sobre investimento”), uma vez que o cliente pode ter em seu ambiente, uma versão inicial e funcionando do produto que foi adquirido.

Estes princípios de produtividade, qualidade e de previsibilidade são esclarecidos em diversas outras metodologias que empregam a execução ágil de produção de software, como XP (Extreming Programming), DAS (Desenvolvimento Adaptativo de Software), DSDM (Método de desenvolvimento Dinâmico de Sistemas), Crystal, FDD (Desenvolvimento Guiado por Características), AM (Modelagem Ágil), Scrum e MSF for Agile. O conceito principal de agilidade é o mesmo, pois se baseia no mesmo princípio fundamental do manifesto Ágil.

Neste artigo serão abordados alguns princípios ágeis tomando como referência o MSF for Agile como modelo de processo, e vamos avaliar as funcionalidades do TFS 2010 para suporte a metodologias ágeis. Para o MSF for Agile existe um process template (ou template de processo) que está disponível junto com o TFS 2010 e também há ampla documentação no site do MSDN. O MSF for Agile é baseado no framework Scrum e nas experiências da própria Microsoft, portanto constantemente observamos referências diretas ao Scrum.

Nota: No final deste artigo encontra-se um glossário, com a descrição dos principais termos usados.

O processo de desenvolvimento segundo o MSF for Agile

Durante a edição deste artigo a Microsoft liberou o Visual Studio Scrum 1.0. Isto pode levar à pergunta: Porque a Microsoft iria criar um novo modelo de processo para Agile, se já existe o MSF for Agile? Na verdade, os modelos de processo são um pouco diferentes, pois no Microsoft Scrum 1.0 há alguns recursos que visam suprir necessidades do framework Scrum.

Segundo o MSF for Agile 5.0, o projeto é constituído de fases e atividades, organizadas com o objetivo de agrupar e sequenciar atividades relacionadas, e assim aperfeiçoar cada uma delas. O projeto é então dividido pelos seguintes grupos de atividades, ou fases:

"

· Preparar-se para o projeto (Prepare for the project)

· Estabelecer o Business Case (Establish the Business Case)

· Montar o time (Assemble a Team)

· Configurar a infraestrutura do time (Set up your team’s infrastructure)

· Planejar o projeto (Plan the Project)

· Montar o backlog do produto (Build the Product Backlog)

· Determinar a velocidade do time (Determine your team’s velocity)

· Estabelecer um plano de release (Establish the Release Plan)

· Preparar para o primeiro sprint (Prepare for the First Sprint)

· Planejar um Sprint (Plan a Sprint)

· Escolher as “User Stories” (Cenários funcionais a implementar – Choose User Stories)

· Identificar as tarefas (Identify Tasks)

· Estimar as tarefas (Estimate Tasks)

· Planejar a execução com a capacidade produtiva e riscos de entrega (Commit to User Stories)

· Executar um Sprint (Run a Sprint)

· Executar as tarefas para cada “User Stories” (Complete User Stories)

· Acompanhar o progresso de cada Sprint (Track Sprint Progress)

[...] continue lendo...

Artigos relacionados