SCRUM é um método de desenvolvimento que está enquadrado dentro dos chamados métodos ágeis (Agile Manifesto, 2001). Criado por K. Shwaber, em 1995, ganhou notoriedade ao ser incluído dentre os métodos do manifesto de 2001. O termo SCRUM se refere “a uma formação bastante coesa de atacantes em um jogo de rugby para disputar a posse da bola quando esta é disputada” (KREBS, 2005).
Visão Geral do SCRUM
Segundo Schwaber (2007) o SCRUM necessita de um novo paradigma de desenvolvimento ao abraçar valores como mudança, imprevisibilidade e complexidade. Com o SCRUM as previsões de longo prazo são consideradas perca de recursos, tempo e, principalmente, dinheiro. O desenvolvimento ocorre através de versões e a adaptação é constante a fim de aperfeiçoar o projeto.
O SCRUM preconiza os valores comuns aos métodos que estão relacionados ao Agile Manifest , que são:
- Indivíduos e iterações sobre Processos e ferramentas
- Software funcionando sobre Extensa Documentação
- Colaboração dos clientes sobre Negociação em contratos
- Respostas a mudanças sobre seguir um plano
O SCRUM não é um modelo rígido, que pretenda ter respostas para todas as situações que se apresentem. Sua principal característica é oferecer à equipe as ferramentas para visualizar todas as nuances do projeto durante o seu desenvolvimento de forma a fazer os ajustes necessários. As práticas do SCRUM são, portanto, bastante flexíveis, podendo ser utilizadas em várias situações, e não somente no desenvolvimento de software.
Segundo Lairman o SCRUM possui valores que são importantes para seu êxito:
- Equipe auto-orientada e auto-organizada;
- Uma vez que o escopo de uma iteração é definido, dentro desta este não pode ser alterado;
- Reuniões diárias no início do dia;
- Normalmente as iterações (sprints) duram cerca de 30 dias;
- Demonstração para o cliente ao fim de cada iteração;
- Replanejamento junto com o cliente ao fim de cada iteração.
O SCRUM é fortemente influenciado pela divisão de papéis dentro da equipe do projeto. Seus principais papéis são:
- Product Owner – Representa o interesse do cliente no projeto. Define os requisitos iniciais do projeto, objetivos, planos de entrega (release) e define a priorização de atividades do Product Backlog.
- Scrum Master – Gerencia o processo do SCRUM, atua como evangelista da metodologia SCRUM garantindo que todos saibam como esta funciona. Por fim, é responsável por remover quaisquer obstáculos que estejam impedindo o sucesso do projeto.
- Scrum Team (Time) – É que desenvolve todas as funcionalidades do Product Backlog. Gerencia seu próprio trabalho sendo responsável, portanto, pelo sucesso das iterações e, por conseqüência, do projeto como um todo.
Outros conceitos importantes em SCRUM:
- Product Backlog – consiste de uma lista das funcionalidades que o cliente deseja que ao final do projeto estejam implementadas no software.
- Impediment Backlog – consiste de uma lista dos problemas associados ao desenvolvimento do projeto. Geralmente mapeia riscos associados ao Product Backlog.
- Sprint – consiste da fase onde serão implementadas as funcionalidades previstas no Product Backlog.
- Sprint Backlog – lista de itens do Product Backlog que serãi implementados em um dado sprint.
- Burndown Chart – é o gráfico que sinaliza a quantidade de trabalho restante após certo período. Trata-se de um instrumento com o qual pode-se fazer a interseção entre o planejado e o executado.
Nos próximos posts vamos falar um pouco mais sobre as práticas de SCRUM e XP e como utilizá-los em conjunto.