Planejamento ágil no Visual Studio usando Scrum

25 de abril de 2012 Por Ramon Durães

imageO uso de métodos ágeis para gestão de projetos de software tem crescido em todo o mundo, principalmente no Brasil, tendo o framework do Scrum como principal base para gestão.

O Scrum é muito simples e divide as atividades de gestão em três importantes papéis: Product Owner (PO) representando o cliente, Scrum Master (SM) atuando como líder e responsável pela manutenção do processo e Time formado pelas pessoas encarregadas em desenvolver o software.

O Scrum baseia-se no conceito de desenvolvimento interativo e incremental, usando ciclos curtos de 2-4 semanas conhecidos como Sprint, permitindo uma colaboração contínua entre todos os interessados, sempre focando na entrega de valor a cada Sprint e, com a proximidade do PO, você consegue ir direto ao ponto buscando a satisfação com o alinhamento no desejo de negócio.

O Team Foundation Server (TFS) é uma plataforma de colaboração para projetos de software unindo gestão de código fonte, gestão de projetos, qualidade de software e integração de todo o ciclo de desenvolvimento, seja para projetos ágeis ou formais, implementando um conceito conhecido como Application Lifecycle Management (ALM) funcionando como o ERP para quem desenvolve software seja em .NET, Java ou qualquer outra plataforma.

O Visual Studio Scrum 2.0 é um template de processo 100% baseado no framework do Scrum para permitir o uso do mesmo em conjunto com o Team Foundation Server, possibilitando assim usar os principais artefatos, utilizando a mesma nomenclatura e funcionalidade, mantendo os mesmos padrões até para os mais puristas no framework.

Como toda a comunicação no projeto é gerenciada pelo TFS, você vai encontrar no template Visual Studio Scrum o recurso Work Items, que é a uma espécie de formulário para entrada de dados customizado automaticamente de acordo com o template de processo adotado no projeto. Como estamos usando o Visual Studio Scrum teremos os seguintes itens: Product Backlog Item (Estórias do usuário), Task (Tarefas), Impediment (Impedimentos), Bug (Problemas),Test Case (Casos de teste) complementando com os relatórios: Release Burndown, Sprint Burndown e Velocity.

Como você está observando, toda a comunicação será baseada nos próprios termos já usados no Scrum, mantendo a total compatibilidade com o seu framework. Para a gestão de um projeto ágil não é necessário TFS, porém no dia a dia de um projeto temos diversas ações que precisam ser tomadas que vão além do uso de postit, tornando-se mais desafiador ainda quando você trabalha com vários times, inclusive tendo pessoas em locais diferentes.

Para se comunicar com o TFS você pode usar Excel, Project, Visual Studio, Eclipse e o portal web do projeto, permitindo assim, independente do ambiente desejado uma integração total entre as informações trocadas nos projetos.

Em um cenário clássico o PO pode publicar um user story utilizando o Work Item (Product Backlog Item) fazendo com que essa informação apareça para todos os projetos. O Time ao capturar uma estória de usuário durante a reunião de planejamento do Sprint vai quebrar em tarefas usando o Work Item (Task), estimando em horas cada atividade. Um outro desenvolvedor pode pegar um Work Item (Task) e associar ao seu usuário mudando o status para InProgress e depois durante CheckIn relacionar o código com esse Work Item.

Agora você começa a entender a diferença que o TFS vai provocar no seu projeto. Sem mudar nada no seu processo você ao fazer um CheckIn de código relacionado a uma tarefa (PostIt) está sem esforço documentando eletronicamente o seu código fonte. A qualquer momento você pode voltar naquele código e saber se o mesmo teve aquela linha modificada pelo desenvolvedor em função de uma tarefa xyz relacionada a uma estória de usuário criada pelo Product Owner. O mesmo acontece no caso de um registro de bug.

Essa mesma integração vai se refletir no servidor Build (Continuous integration) que durante a geração da versão do seu software, além de validar os testes unitários integrados, politicas do projeto, vai emitir um relatório dos Work Items vinculados nessa versão, respondendo de forma simples a uma grande dúvida no final do Sprint “O que tem nessa versão “.

Transparência, inspeção e adaptação

Um principio básico oferecido pelo Team Foundation Server é colaboração e transparência que você pode perceber imediatamente já na primeira visão ao entrar no portal do projeto, conforme demonstrado na Figura 01.

Figura01
Figura 01 – Visão pública do Dashboard com detalhes do projeto.

Analisado o Dashboard temos informações sobre o seu Sprint que está em andamento, Burndown para acompanhar a tendência, informações sobre registros de Work Items abertos como quantidade de itens no Sprint Backlog, tarefas em andamento e qualquer consulta adicional que você julgue importante mostrar para seu time. Essa mesma tela é complementada com um item estratégico que é o relatório de Build, consolidando a gestão com o feedback contínuo.
.

Product Backlog
O Product Owner pode adicionar ou priorizar novos itens a qualquer momento o backlog, conforme você pode observar na Figura 02 com uma visão do trabalho sendo realizado no portal do projeto. Nesse portal o dia a dia do PO é facilitado, pois além de simples e leve todas as informações são centralizadas e as alterações já refletem para todos no projeto.

Figura02

Figura 02 – Product BackLog

A priorização de atividades faz parte do dia a dia de qualquer PO e nesse momento você observa na Figura 02 como é simples bastando arrastar e colocar no local desejado. Com isso, automaticamente ele já se auto-organiza, definindo uma nova endentação de prioridade que em projetos ágeis é um item fundamental para manter o desenvolvimento sempre próximo do valor de negócio.

A qualquer momento o PO pode detalhar um item de backlog (User Story). Ao clicar no mesmo ele tem acesso ao formulário completo, conforme apresentado na Figura 03. Um item importante que você pode observar além do descritivo detalhado é a possibilidade de se adicionar links e anexos que o PO julgue importante para esclarecer o valor de negócio.

clip_image004
Figura 03
– Product BackLog Item

Conforme comentei no início, esse formulário apresentado na Figura 03 é uma visão de campos definidos pelo templates de processo Visual Studio Scrum. Outro ponto importante no mesmo é o esforço que é atualizado pelo time após a estimativa, seja usando Planning Poker ou técnica similar. Nesse exemplo usamos escala Fibonacci (1, 2, 3, 5, 8, 13) para definir a complexidade dos itens.

Sprint Planning
Durante a reunião de planejamento do Sprint o Time se reúne com o PO para esclarecer dúvidas do backlog, estimar e capturar itens para montar o seu Sprint Backlog. Na Figura 04 você pode observar como é simples a atividade de capturar um item do Backlog e transformar em Sprint Backlog.

clip_image005
Figura 04 – Sprint Planning.

Ainda na reunião de planejamento do Sprint o Time vai detalhar o item do Sprint Backlog em tarefas (Task) relacionadas, conforme pode observar na Figura 05. Uma informação importante é que essas tarefas são relacionadas diretamente com o item de Backlog permitindo com isso rastreabilidade. Se você encontrar um código fonte com uma tarefa vinculada, você saberá qual o item do Sprint Backlog vinculado.

clip_image006
Figura 05
– Sprint Planning.

Sprint
Um Sprint em um projeto Scrum pode variar entre 2 a 4 semanas conforme o modelo adotado. Em cada print o Time se compromete com um conjunto de itens do backlog cujo objetivo é entregar valor ao final “Software funcionando”. Com o uso do TFS você terá um Scrum Board virtual, conforme apresentado na Figura 06, dispensando o uso de PostIt. Cada membro do Time vai pegar um PostIt e arrastar para a área IN PROGRESS, alterando automaticamente o status do Work Item de “TO DO” para “IN PROGRESS” e já relacionando o nome da pessoa que pegou essa atividade.


clip_image008
Figura 06
– Scrum Board.

Daily Scrum Meeting
Durante o Sprint temos uma reunião diária com duração estimada em 15 minutos. É um dos principais momentos do Time, pois o objetivo é fazer uma rápida sincronização sobre o andamento das atividades. É importante registrar que não é um momento para bater papo, falar de futebol e, sim, responder a três perguntas chaves: O que você fez ontem? O que você fará hoje? Há algum impedimento no seu caminho?
Durante a reunião diária é comum você atualizar a sua atividade informando quanto tempo falta, conforme você pode observar na Figura 07 e, se necessário, registrar impedimentos, conforme você pode observar na Figura 08.

clip_image009
Figura 07
– Scrum Board.

clip_image011
Figura 08 – Registrando um impedimento


Burndown

O gráfico de Burndown é estratégico para o Time Scrum e consolida uma visão atualizada com a projeção e tendência de entrega do Sprint. É uma informação importantíssima para o Time. Na Figura 09 você pode observar um exemplo de Burndown.

clip_image013
Figura 09 – Visualizando o Burndown

Um ponto muito importante é que pessoas em qualquer lugar podem ter acesso ao mesmo, inclusive pessoas externas ao projeto, permitindo assim que outras pessoas tenham visibilidade sem necessidade de ficar perguntando como está indo o projeto. Acho que você sabe bem o que estou falando. Não existe pergunta mais chata que “E ai?”. Vale ressaltar que esse Burndown é uma informação exclusiva do Time e o mesmo é o único responsável pelo Sprint. Ao PO interessa a entrega final após a conclusão do Sprint.

Velocity
Uma métrica importante em um projeto Scrum é a velocidade do time. Esse número é calculado após a entrega de alguns Sprints e é atualizado com frequência. É uma referência importante, baseando-se em quantos pontos um time está entregando por Sprint. O Time usa essa informação para saber até quantos pontos de complexidade eles consegue assumir por Sprint. O TFS, usando o histórico dos Sprints gera para você, conforme pode observar na Figura 10.

clip_image014
Figura 10 – Visualizando o gráfico Velocity.

Forecast
Independente do modelo de projeto, sendo ágil ou formal, uma pergunta recorrente é quando estará pronto? Com um Scrum temos duas respostas para essa pergunta. A primeira se for relacionada ao conjunto de itens do Sprint Backlog a resposta é ao final do Sprint. Se a pergunta for relacionada ao Backlog o Team Foundation Server pode ajudar você, conforme pode observar na Figura 11 uma previsão quebrando em Sprints futuros usando a velocidade como base. É mais uma forma ágil de usar a tecnologia para facilitar o seu dia a dia no projeto.

clip_image016
Figura 11 – Forecast

Relacionando informações

Um dos principais pilares na estratégia de ALM usando Team Foundation
Server é justamente reunir as informações dos projetos e usar de forma integrada. Na Figura 12 você observa como durante o Check In é possível vincular uma atividade. Com esse simples passo você está documentando o seu software. O TFS, em cada Check In gera um identificador chamado de Changeset que permite rastrear todas as informações relacionadas.

clip_image017
Figura 12
– Check In associando uma tarefa “PostIt”.

Conforme a política de integração continua atotada eu projeto é possível após durante a geração da versão validar estratégias do projeto como padronização de código usando Code Analysis, padronização da arquitetura, testes unitários e saber quais funcionalidades foram implementadas nessa versão conforme você pode observar na Figura 13.

clip_image018
Figura 13
– Gerando uma versão

Utilizar o Scrum dentro do Team Foundation Server é muito fácil e ágil, permitindo justamente ampliar ainda mais a colaboração, atuando como elo entre todos os participantes do projeto. Quando falamos do universo Application Lifecycle Management, diversos outros recursos são facilitados por se trabalhar em um modelo colaborativo e integrado, permitindo uma gestão mais efetiva de todo o ciclo de desenvolvimento.

[],
Ramon Durães
MVP, Visual Studio ALM
PSD, PSM, CSM

Aproveite agora mesmo e faça um incrível curso online
ALM – Gestão ágil de projetos

Você está procurando um curso personalizado ou consultoria?
Para consultoria e treinamento em Visual Studio / Team Foundantion Server / Scrum procure a 2PC