sexta-feira, 2 de janeiro de 2015

Scrum: Agilidade em projetos

Scrum é uma metodologia ágil para gestão e planejamento de projetos de software. No Scrum, os projetos são dividos em ciclos (tipicamente mensais) chamados de Sprints. O Sprint representa um Time Box dentro do qual um conjunto de atividades deve ser executado.
Metodologias ágeis de desenvolvimento de software são iterativas, ou seja, o trabalho é dividido em iterações, que são chamadas de Sprints no caso do Scrum.

As funcionalidades a serem implementadas em um projeto são mantidas em uma lista que é conhecida como Product Backlog. No início de cada Sprint, faz-se um Sprint Planning Meeting, ou seja, uma reunião de planejamento na qual o Product Owner prioriza os itens do Product Backlog e a equipe seleciona as atividades que ela será capaz de implementar durante o Sprint que se inicia. As tarefas alocadas em um Sprint são transferidas do Product Backlog para o Sprint Backlog.
A cada dia de uma Sprint, a equipe faz uma breve reunião (normalmente de manhã), chamada Daily Scrum. O objetivo é disseminar conhecimento sobre o que foi feito no dia anterior, identificar impedimentos e priorizar o trabalho do dia que se inicia.
Ao final de um Sprint, a equipe apresenta as funcionalidades implementadas em uma Sprint Review Meeting. Finalmente, faz-se uma Sprint Retrospective e a equipe parte para o planejamento do próximo Sprint. Assim reinicia-se o ciclo. Veja a ilustração abaixo:


Cerimônias
No Scrum há 4 cerimonias a saber:
Sprint Planning Meeting: É uma reunião onde os três papéis do Scrum estão presentes onde o Product Owner explica para o Development Team o detalhamento de cada produto e o Development Team estima o esforço de cada produto através da técnica Planning Poker. O resultado dessa reunião será de uma lista priorizada dos produtos e o Development Team irá se comprometer a entregar o que ela julga ser capaz, sem sofrer nenhum tipo de pressão do Product Owner ou de qualquer outra pessoa. A Definição de Pronto de cada produto deverá ser estabelecida nesta etapa, uma vez que durante a Sprint Review Meeting cada produto será confrontado com a Definição de Pronto de cada produto. Para saber mais sobre a técnica Planning Poker, acesse aqui.
Daily Scrum Meeting: É uma reunião diária feita somente entre os membros do Development Team com duração de 15 minutos, e é recomendado que seja feito no mesmo local. Cada membro precisa responder três perguntas: o que você fez da última reunião até agora? o que você fará até a próxima reunião? há algum impedimento que impeça suas atividades? Caso haja algum impedimento, o Scrum Master precisa ser acionado. Tanto o Scrum Master quanto o Product Owner podem participar da reunião, no entanto, não podem influenciar e devem estar apenas de corpo presente, sem falar uma única palavra, salvo o Scrum Master, caso o Development Team esteja violando algum processo do Framework Scrum.
Sprint Review Meeting: É a reunião onde todos os papéis participam e o Development Team apresenta as entregas dos produtos funcionando para o Product Owner, onde este poderá aceitar ou não. O Product Owner, se desejar, poderá convidar outras pessoas para participar desta reunião. E cada produto será confrontado com a Definição de Pronto realizada durante o Sprint Planning Meeting.
Sprint Retrospective Meeting: É uma reunião realizada após o término de cada Sprint entre os membros do Development Team de lições aprendidas, onde serão abordados o que foi mal e o que precisa ser melhorado para a próxima Sprint e o que foi bem e que precisa ser mantido para a próxima Sprint.
Artefatos
No Framework Scrum há 4 artefatos a saber:
Product Backlog: É a lista de produtos que o projeto precisará entregar, muitas das vezes os produtos são descritos em forma de estórias (Users Stories), como por exemplo: “Como professor gostaria de acessar o sistema de notas online para que possa consultar as notas dos meus alunos em qualquer lugar que eu esteja.”
Sprint: É o período de tempo que leva de 2 a 4 semanas para serem desenvolvidos os produtos planejados para a Sprint corrente.
Sprint Backlog: São os produtos selecionados pelo Development Team e na ordem priorizada pelo Product Owner na qual o Development Team se compromete à entregar na Sprint corrente.
Burndown Chart: É o gráfico de acompanhamento diário do andamento das atividades durante a Sprint. No eixo Y do gráfico é o indicativo dos pontos e no eixo X é o indicativo do tempo.