Artigo Scrum
Artigo Scrum
Artigo Scrum
RESUMO: Cada vez mais os métodos ágeis têm despertado o interesse da comunidade de
Engenharia de Software como uma alternativa para o processo de desenvolvimento de
sistemas de uma maneira mais rápida, eficiente e que atenda as reais necessidades dos
clientes. Existem no mercado vários métodos disponíveis que utilizam a abordagem ágil e
que, por seguirem os princípios ágeis, apresentam uma série de atividades semelhantes no seu
processo de desenvolvimento. Este artigo apresenta os processos de estimativa pelo método
ágil Scrum baseado em pontos por user stories.
1 INTRODUÇÃO
2 MÉTODOS ÁGEIS
1
Acadêmico do Curso de Pós Graduação em Engenharia de Software com Ênfase em Testes de Software da
Univel – Faculdade de Ciências Sociais Aplicadas de Cascavel.
2
Professor do Curso de Pós Graduação em Engenharia de Software com Ênfase em Testes de Software da
Univel – Faculdade de Ciências Sociais Aplicadas de Cascavel.
levantamento completo de um conjunto de requisitos, seguido por um projeto de alto-nível, de
uma implementação, de uma validação e, por fim, de uma manutenção (SOMMERVILLE,
2003).
A partir da década de 90, começaram a surgir novos métodos sugerindo uma
abordagem de desenvolvimento ágil onde os processos adotados tentam se adaptar às
mudanças, apoiando a equipe de desenvolvimento no seu trabalho (BECK, et. al., 2001).
Estes novos métodos surgiram como uma reação aos métodos tradicionais de
desenvolvimento de sistemas, ganhando com o passar dos anos um número cada vez maior de
adeptos.
Com o intuito de definir um manifesto para encorajar melhores meios de desenvolver
sistemas, em fevereiro de 2001 um grupo inicial de 17 metodologistas, entre eles, Robert C.
Martin, Jim Highsmith, Kent Beck e outros, formaram a Aliança para o Desenvolvimento
Ágil de Software, que formulou um manifesto contendo um conjunto de princípios que
definem critérios para os processos de desenvolvimento ágil de sistemas (AMBLER, 2004).
Os doze princípios (BECK, et. al. 2001), aos quais os métodos ágeis devem se adequar são:
a) A prioridade é satisfazer ao cliente através de entregas contínuas e freqüentes;
b) Receber bem as mudanças de requisitos, mesmo em uma fase avançada do projeto;
c) Entregas com freqüência, sempre na menor escala de tempo.
d) As equipes de negócio e de desenvolvimento devem trabalhar juntas diariamente;
e) Manter uma equipe motivada fornecendo ambiente, apoio e confiança necessários;
f) A maneira mais eficiente da informação circular através de uma conversa face-a-face;
g) Ter o sistema funcionando é a melhor medida de progresso;
h) Processos ágeis promovem o desenvolvimento sustentável;
i) Atenção contínua a excelência técnica e a um bom projeto aumentam a agilidade;
j) Simplicidade é essencial;
k) As melhores arquiteturas, requisitos e projetos provêm de equipes organizadas;
l) Em intervalos regulares, a equipe deve refletir sobre como se tornar mais eficaz.
3 SCRUM
3.1 SPRINTS
Projetos Scrum progridem em uma série de iterações chamadas Sprints, que ocorrem
num período de duas a quatro semanas. É recomendado que esse período se mantenha
constante ao longo do desenvolvimento do projeto, pois um período constante leva a um
melhor “ritmo”. O produto é projetado, codificado e testado durante o Sprint. A Figura 1
apresenta uma visão geral do Scrum em execução.
Através desta característica fixa, iterativa e incremental aonde a equipe "abraça" o
produto final aos poucos em partes iguais é que o Scrum triunfa sobre uma metodologia
tradicional onde de início (quando menos se conhece a mente do cliente) tenta-se "abraçar"
tudo. Também, através do Scrum se está sempre planejando junto ao cliente, o que diminui os
riscos de que a equipe não entenda o projeto. Chegando assim no final com algo que não gera
valor e sim desgaste e retrabalho.
Figura 1 – Visão Geral do Andamento do Projeto com o Scrum.
3.2 PAPÉIS
Estimativa
ID Título Importância História (Descrição)
Inicial
O usuário deve encontrar no site um formulário que
perguntará se ele já tem cadastro para fazer
Cadastro 8 (story
1 120 compras. Se for cadastrado deve autenticar com seu
de usuário points)
e-mail e senha. Caso contrário deve aparecer um
formulário com os seguintes dados...
2 ... ... ... ...
Tabela 1 – Exemplo de uma Planilha do Product Backlog
ID:
Trata-se de um código numérico seqüencial que serve para ajudar a identificar
unicamente uma "user story".
Título:
Um nome ou frase que descreva claramente de qual "user story" está se falando. O
nome deve estar na linguagem do negócio e não em linguagem e detalhes técnicos.
Estimativa inicial:
Como o nome já diz é uma estimativa inicial de quanto tempo a funcionalidade poderá
levar. Note também que a unidade são "story points" que corresponde a dias de trabalho de
um profissional. Exemplo: Se com três membros (vamos dizer 2 programadores e 1 designer)
sem interrupções, em um bom ambiente uma funcionalidade deverá ficar pronta em 3 dias
então temos 9 story points (3x3 = 9).
Tal abordagem oferece uma visão de impactos no prazo, mas se trata de uma
estimativa inicial e não deve ser encarada como uma verdade absoluta e, outro fator é que
antes de ocorrer um "sprint" (um período fixo de trabalho da equipe), o tempo de
desenvolvimento necessário para cada funcionalidade incluída se torna mais refinado e com
adição de margens de risco de atraso.
Importância:
O nível de importância recebe números correspondentes ao quanto aquela
funcionalidade é crucial. Isso ajuda quais devem ser feitas logo nas primeiras sprints e a
depender do ambiente na empresa aquelas que têm importância máxima podem se beneficiar
de técnicas como a programação em par que aumenta o foco e reduz bastante a possibilidade
de erros. Também os intervalos normalmente são dados de 10 em 10. Isso facilita a inserção
de outras funcionalidades que são "um pouquinho" mais ou menos importantes. Exemplo:
História A = 120; História B = 119.
História:
É aqui que o Product Owner descreve em alto nível como deve se comportar a
funcionalidade. Quando se diz "alto nível", é que deve estar na linguagem do Product Owner,
ou seja, mais regra de negócio do que um texto técnico para programadores.
No eixo X temos os dias até o fim da sprint. Exemplo: Os dias úteis desde 01 de
fevereiro até 15 de fevereiro (data quando o resultado da sprint deverá ser demonstrado ao
Product Owner).
No eixo Y temos o quanto falta (seja em % ou story points) para que se completem
todas as funcionalidades separadas para a sprint.
A cada reunião "relâmpago" diária da equipe (daily scrum meeting) o gráfico é
atualizado dando a visão de como está indo o trabalho.
Como o nome sugere, é nesta reunião periódica com todos os membros (equipe,
ScrumMaster e product owner) em que são definidas quais funcionalidades do "product
backlog" vão ser escolhidas para que a equipe desenvolva em uma sprint. Aparentemente é
simples, mas trata-se da reunião mais demorada e crucial em um projeto ágil com Scrum.
Abaixo são descritas as atividades da reunião:
1. Definir a meta da sprint. Por exemplo: "criar a central de ajuda do site". Uma sprint não
deve nunca começar sem uma meta definida em uma linguagem de alto nível.
2. As funcionalidades são escolhidas, divididas, discutidas e priorizadas o quanto for
necessário para que as estimativas de tempo e importâncias se encaixem na sprint.
3. As "histórias" (funcionalidades) são quebradas em tarefas e o tempo para cada uma
estimado. Essa informação sobre as tarefas não necessariamente precisa estar com o Product
Owner, pois detalhes técnicos são de encargo da equipe, deixando o Product Owner
preocupar-se com aquilo que é realmente importante para ele, ou seja, as funcionalidades.
Então, como funciona a reunião? Provavelmente a primeira coisa que vem em mente é
colocar todo o pessoal em volta de uma mesa de reunião com um projetor e alguém com uma
planilha Excel ou qualquer documento de texto. A planilha realmente ajuda, pois realmente a
reunião deverá ser documentada, mas se for somente por este caminho a reunião se tornará
um marasmo de "tédio", pois esta não é, nem de longe, a melhor forma de estimular a
participação de todos da equipe.
Algumas técnicas que ajudam muito a resolver este problema são:
Index Cards:
Trata-se de cartões ou post-its onde se coloca o nome da história (funcionalidade), ou se
necessário mais informações como descrição, estimativa, etc. Durante a reunião de sprint
planning, estes cartões são colocados sobre uma mesa ou quadro branco e ao longo da reunião
são organizandos de acordo com a importância que vai sendo atribuída a cada história pelo
Product Owner. Veja o exemplo na Figura 3 a seguir:
Planning Poker:
O que acontece quando se tem uma funcionalidade e durante o "sprint planning" se
pergunta quanto tempo deve levar para que seja desenvolvida? Provavelmente aquele que
sabe, ou acha que sabe, vai responder. Muitas vezes funciona, mas em excesso isso pode ser
altamente prejudicial, pois não existe debate entre a equipe e ficam presos à opinião de uma
só pessoa. E se ela estiver errada ou se, aquela opinião aplique-se somente a ela sem levar em
conta os outros membros da equipe? Para evitar isto, sempre que necessário é utilizado o
"Planning Poker", que funciona da seguinte forma:
1. O ScrumMaster pergunta à equipe quanto tempo ("story points") é necessário para
desenvolver-se uma funcionalidade x.
2. Cada um pensa durante um tempo "quanto dias um profissional precisaria para
desenvolver", escolhe o cartão com o número mais aproximado e quando o tempo acaba
coloca sobre a mesa.
3. Aqueles que colocam o maior e menor número devem explicar porque e com isso busca-se
chegar a um consenso.
4. Existe também uma carta para dúvida e outra para sugerir uma pausa (o desenho de uma
xícara de café).
Esta técnica faz com que todos participem e torna o ambiente mais leve e descontraído.
3 CONCLUSÕES
REFERÊNCIAS
OGUNNAIKE, B.A. & Ray, W. H., et al. Process Dynamics, Modeling and Control. Oxford
University Press, 1ª Edição, 1992
RISING, L. et al. The Scrum Software Development Process. 2007. Disponível em:
<http://members.cox.net/risingl1/articles/IEEEScrum.pdf>. Acesso em: dez 2010.
SCHWABER, Schwaber, Ken. et al. Controlled chaos: living on the edge. 1996. Disponível em:
<http://www.controlchaos.com/old-site/ap.htm>. Acesso em: dez de 2010.
SCHWABER, Schwaber, K. et al. Agile Project Management with Scrum. Microsoft Press. 1ª
Edição, 2004.