O Scrum é o principal framework utilizado para desenvolvimento ágil de software. Ele é utilizado principalmente quando o projeto é complexo, no qual é muito difícil predeterminar totalmente o que irá acontecer até a entrega final.
A metodologia Scrum é utilizada para organizar e gerenciar projetos utilizando-se dos valores e princípios do manifesto ágil em conjunto com um fluxo e os elementos definidos no framework Scrum.
Nesse artigo vamos abordar o fluxo, os elementos e papéis utilizados em um projeto Scrum.
O Fluxo do Scrum
Na metodologia ágil os projetos são divididos em ciclos chamados iterações, essas iterações são como mini-projetos que seguem todo um ciclo normal de desenvolvimento (Análise de Requisitos, Desenvolvimento, Testes, Documentação). Na metodologia Scrum esses ciclos são chamados Sprints.
Conforme pode ser visto na imagem acima, o conjunto de funcionalidades a ser entregue em um projeto são agrupadas no Product Backlog, que com o passar do tempo irá manter as entregas pendentes.
No início de cada Sprint, é realizada uma reunião de planejamento em que serão priorizados os itens do Product Backlog e então selecionadas as atividades que serão implementadas durante o próximo Sprint. Essas tarefas passam a compor o Sprint Backlog.
No início de cada dia do período de Sprint ocorre uma reunião. Ela tem por objetivo compartilhar com o time o que foi concluído no dia anterior, e quais as prioridades do dia atual.
No final do Sprint, ocorrem reuniões com as conclusões do que foi entregue, uma análise das dificuldades e necessidades de melhorias para as próximas fases e então é feito o planejamento para próximo Sprint.
Os Elementos do Scrum
A metodologia Scrum define um conjunto de elementos que irão contribuir e guiar todo o processo de desenvolvimento ágil. Os principais deles são:
Sprints
Conforme explicado acima, os projetos são divididos em ciclos fixos chamados Sprints, aonde um conjunto de atividades será executado. No início do projeto é definido qual será o período de cada ciclo que geralmente varia de 2 a 4 semanas, mas que deve ser fixo durante todo o projeto.
Product Backlog
O Product Backlog é basicamente uma lista com todas as funcionalidades definidas para o produto. Essas funcionalidades são priorizadas no início de cada Sprint e nada impede que sejam alteradas, removidas ou novas sejam adicionadas durante o período de desenvolvimento do projeto.
Sprint Backlog
No início de cada Sprint há uma reunião aonde se define quais funcionalidades do Product Backlog serão implementadas naquele ciclo, esses itens compõem o Sprint Backlog que será atualizado durante todo o Sprint servindo como base para todo o time. É a equipe de desenvolvimento, em conjunto com o Scrum Master, quem define quais itens podem ser desenvolvidos e entregues durante o próximo ciclo.
Daily Scrum
A Daily Scrum é uma reunião rápida (15 minutos) que ocorre no início de cada dia, em que cada membro da equipe informa o time sobre o que foi feito no dia anterior e qual o plano para o dia atual. Nessa reunião também são apontadas eventuais situações que estejam bloqueando o andamento do processo de desenvolvimento.
Sprint Review Meeting
Essa é uma reunião final do Sprint. Nela a equipe apresenta as funcionalidades que foram implementadas nesse ciclo. Realiza-se também a “Sprint Retrospective” com as lições aprendidas nesse ciclo, os pontos positivos e o que precisa ser aprimorado nos próximos Sprints. É então iniciado o planejamento do próximo Sprint.
Papéis e Responsabilidades
A metodologia também define 3 papéis principais durante o fluxo de desenvolvimento. Conheça suas responsabilidades.
Product Owner
O Product Owner faz na prática o papel do cliente, representando tanto quem está pagando pelo produto quanto quem irá utilizá-lo efetivamente.
É ele quem define o que é esperado do produto final, quais os requisitos e quais funcionalidades deverão ser entregues. Também participa durante todos o processo para a definição das prioridades de entrega de cada Sprint e define as mudanças do que está contido no Product Catalog.
É responsabilidade do Product Owner manter e comunicar a todos os participantes uma visão clara do que a equipe Scrum está buscando alcançar no projeto. Também deve estar sempre disponível para esclarecer eventuais questionamentos assim que eles apareçam.
Scrum Master
O Scrum Master não é considerado um “gerente”, ele possui sim um papel de liderança, é um facilitador dentro do time.
Ele é responsável por garantir que todo o time esteja atuando com base nos princípios e práticas do Scrum, mantendo o time produtivo e focado no que foi planejado.
O membro com o papel de Scrum Master possui também o dever de ajudar o time a resolver problemas e interferências externas que possam prejudicar o andamento do desenvolvimento das atividades planejadas.
Scrum Team
É um time mutidisplinar responsável pelo desenvolvimento e entrega das funcionalidades. Esse time deve ter a capacidade de realizar todas as fases do processo de desenvolvimentismo, incluindo design, codificação, testes, documentação e etc. Preferencialmente devem ser mantidos times pequenos, com não mais que 9 profissionais.
O Scrum Team deve se auto-organizar, com o apoio do Scrum Master, para atender da melhor maneira possível o que está sendo definido pelo Product Owner.
Para o sucesso de um projeto Scrum, é essencial que haja muita integração e colaboração entre o Product Owner, o Scrum Master e o Scrum Team. Todos os participantes do projeto devem estar alinhados das expectativas, dificuldades e resultados durante todos os Sprint até o final do projeto.
Para finalizar, o vídeo abaixo do professor André Gomes explica todo o fluxo e os principais elementos da metodologia Scrum.