Introdução ao Desenvolvimento Ágil com Scrum
Introdução ao Desenvolvimento Ágil com Scrum
Dicas, sugestões ou críticas? Mande-me para melhorarmos este documento cada vez mais! Documento Livre! Pode ser impresso, copiado e distribuído livremente.
Página 1 de 8 Rodrigo Lopes Ferreira –
[email protected] [email protected] Versão 1.0 de 21/05/2009.
Introdução ao Desenvolvimento Ágil com Scrum
Introdução ao Desenvolvimento Ágil É necessário buscar novos processos para responder mais rapidamente às demandas do mercado, diminuindo assim o tempo de espera, os riscos, os erros e aumentando a produtividade das equipes nos projetos. Seguindo o princípio de que 20% dos recursos de um software são utilizados em 80% do tempo, os recursos mais importantes devem ser entregues primeiro. Utilizando este pensamento, é necessário entregar primeiro os recursos que agregam maior valor aos negócios, e que serão mais utilizados. Os métodos ágeis são uma reação aos processos que parecem ser uma maravilha em teoria, mas que na prática, não funcionam como deveriam. A única forma de medir o êxito de um sistema é quando ele funciona como o cliente deseja, e é capaz de mudar rapidamente, de acordo com a demanda do mercado. Scrum Um framework que define um método simples para gerenciar projetos complexos. Os métodos convencionais têm o foco voltado para o desenvolvimento em regras, enquanto o Scrum visa o desenvolvimento de funcionalidades que são mais importantes para o negócio, o tempo todo, sendo assim, as funcionalidades mais importantes são construídas e entregues primeiro, satisfazendo melhor as necessidades dos clientes. Características do Scrum: •
•
•
•
Permite o gerenciamento de mudanças de forma muito eficiente, além de que, estreita a comunicação entre o cliente e a equipe que está desenvolvendo o projeto, mantendo sempre as funcionalidades revisadas e corrigindo possíveis falhas rapidamente. O sistema é construído em blocos por iterações, o cliente sempre vê o resultado final de cada iteração e define se está certou ou não, apontando os erros e evoluindo gradativamente o projeto. Transfere a responsabilidade do gerente para toda a equipe do projeto. Utilizado por empresas como a IBM, Microsoft, Yahoo, Google, BBC, Time Warner, Xerox, Oracle etc. para gerenciar seus projetos com êxito.
Página 2 de 8 Rodrigo Lopes Ferreira –
[email protected] [email protected] Versão 1.0 de 21/05/2009.
Introdução ao Desenvolvimento Ágil com Scrum
Definição dos componentes de Scrum Em Scrum, existem basicamente os seguintes componentes: o o o o o o o
Product Owner Product Backlog Sprint Sprint Backlog Sprint Retrospective Scrum Master Scrum Team
Processo básico de Scrum O ponto chave de Scrum é definir quais são as funcionalidades mais importantes, para que elas sejam desenvolvidas primeiro (princípio 80x20). A responsabilidade por esta lista fica com o maior interessado no sucesso do projeto: o cliente (Product Owner).
O “Product Owner” (que pode ser um representante ou um gerente de projeto, por exemplo), fica responsável por esta lista, que é chamada de “Product Backlog” (esta lista deve ser atualizada e repriorizada constantemente). Esta lista contém os requisitos abstratos do sistema, definidos em linguagem humana, sem especificar tecnologias ou metodologias de implementação; nela, os requisitos são ordenados do mais importante para o menos importante (os requisitos que agregam maior valor ao negócio ficam no topo da lista, e os que agregam menos, em baixo).
Página 3 de 8 Rodrigo Lopes Ferreira –
[email protected] [email protected] Versão 1.0 de 21/05/2009.
Introdução ao Desenvolvimento Ágil com Scrum
Com esta lista pronta e com as prioridades definidas, a equipe de desenvolvimento, conhecida como “Scrum Team” já pode entrar em ação, e junto com o “Product Owner”, definir qual será o item da “Product Backlist” a ser trabalhado no período (geralmente o primeiro item da lista); este trabalho é chamado de “Sprint” e toda a equipe estará focada exclusivamente nele. Ao iniciar um “Sprint”, é feita uma reunião com o “Scrum Team” e com o “Product Owner” para que sejam definidos os fatores burocráticos, como o tempo previsto para a conclusão deste trabalho. Este prazo deve ser negociado com o cliente, pois em Scrum não é possível prorrogar prazos e o “Sprint” não deve sofrer modificações até ser concluído. Depois de acertado o prazo, o “Product Owner” vai embora e deixa a equipe trabalhar.
Página 4 de 8 Rodrigo Lopes Ferreira –
[email protected] [email protected] Versão 1.0 de 21/05/2009.
Introdução ao Desenvolvimento Ágil com Scrum
Na equipe existirá um “Scrum Master”, que será o responsável por garantir que o projeto esteja indo bem, que o resto da equipe esteja seguindo corretamente as tarefas do “Sprint” e resolver impedimentos. Neste ponto é feito uma análise de como o item escolhido do “Product Backlog” pode ser desenvolvido utilizando a tecnologia alvo, ou seja, o requisito abstrato é quebrado e transformado em tarefas de desenvolvimento na tecnologia computacional (Java, por exemplo) e dividido entre os membros do “Scrum Team”.
A partir de agora está aberto o “Sprint” e a equipe deve se auto-regular; cada membro da equipe deve decidir o que fará; as tarefas nunca são atribuídas. Durante o “Sprint” (que não deve durar mais que trinta dias), todos os dias, no mesmo horário, o “Scrum Team” se reúne em uma reunião rápida, para conversar sobre o andamento das tarefas de cada um; nesta reunião, todos os membros do “Scrum Team” falam e respondem as seguintes perguntas: 1. O que fiz ontem? 2. O que farei hoje? 3. Houve alguma coisa que atrapalhou o meu trabalho ontem? (quem deve solucionar este tipo de problema é o “Scrum Master”)
Página 5 de 8 Rodrigo Lopes Ferreira –
[email protected] [email protected] Versão 1.0 de 21/05/2009.
Introdução ao Desenvolvimento Ágil com Scrum
Pessoas que não são do “Scrum Team” podem participar da reunião, mas só devem ouvir, não devem falar nada. Esta reunião não deve ultrapassar quinze minutos e geralmente é feita em pé (por que prende mais a atenção). Ela serve para que todos os membros do “Scrum Team” estejam em total sintonia sobre o andamento do “Sprint” e se comprometam com suas tarefas perante o grupo. Quando se chega ao final do “Sprint”, a equipe faz uma reunião, a “Sprint Retrospective”, que serve para que eles conversem sobre o que aprenderam no “Sprint” e que lições devem levar para o próximo; além disso, o resultado deve ser apresentado para o “Product Owner”, que deve aprová-lo ou inserir demanda de alteração no “Product Backlog”.
Após esta etapa, volta-se ao “Product Backlog”, seleciona-se o requisito do topo, e repete-se todo o ciclo, até terminar todos os itens do “Product Backlog”. Seguindo este conceito de repetição, sempre o “Product Owner” vai estar por dentro do que está sendo desenvolvido e dependerá dele a palavra do que agrega mais valor ao seu negócio; tais funcionalidades serão desenvolvidas primeiro (e entregues primeiro). O software será entregue mais rapidamente e com uma melhor qualidade, por que as funcionalidades são projetadas, desenvolvidas e testadas no “Sprint”; qualquer erro será detectado e corrigido rapidamente em um clico, e não depois de grande parte já ter sido desenvolvida. É garantido que sejam entregues partes documentadas, testadas e funcionando do software de duas a quatro semanas. Isto gera uma grande produtividade e objetividade no projeto.
Página 6 de 8 Rodrigo Lopes Ferreira –
[email protected] [email protected] Versão 1.0 de 21/05/2009.
Introdução ao Desenvolvimento Ágil com Scrum
Desenho do Processo Scrum:
Fonte: (http://upload.wikimedia.org/wiki (http://upload.wikimedia.org/wikipedia/commons/ pedia/commons/5/58/Scrum_proc 5/58/Scrum_process.svg) ess.svg)
Glossário: Product Owner – Quem decide o que agrega maior valor ao negócio, que precisa ser feito primeiro. Pode ser o próprio cliente, seu representante ou um gerente de projeto, por exemplo. Product Backlog – Uma lista mantida somente pelo “Product Owner” com todos os requisitos re quisitos abstratos (em linguagem humana) do sistema, sendo ordenados dos mais importantes no topo, para os menos, em baixo. Sprint – Ciclo de desenvolvimento de um requisito atual da “Product BackLog”. Toda a equipe deve estar focada nele e todos os dias deve haver reuniões para discussão do que foi feito, o que será feito e quais problemas foram encontrados, por todos os membros da equipe. Sprint Backlog – Relação das funcionalidades em linguagem computacional (Java, por exemplo) obtidas através de um item da “Product Backlog”. Organiza as tarefas a serem feitas e a divisão entre os membros do “Scrum Team” Sprint Retrospective – Ao final de cada “Sprint”, a equipe se reúne com o cliente e apresenta o resultado; o cliente deve aprovar o Página 7 de 8 Rodrigo Lopes Ferreira –
[email protected] [email protected] Versão 1.0 de 21/05/2009.
Introdução ao Desenvolvimento Ágil com Scrum
resultado ou lançar uma demanda de alteração no “Product Backlog” para que futuramente se transforme novamente em um “Sprint”. A equipe também utiliza esta reunião para conversar sobre que lições tiraram do “Sprint” e o que pode ser usado no próximo. Scrum Master – Responsável por garantir que o “Sprint” esteja sendo executado de maneira correta. Serve também para resolver possíveis impedimentos que estejam atrapalhando a equipe de realizar o seu trabalho. Scrum Team – Equipe de desenvolvedores que serão responsáveis por desenvolver as tarefas do “Sprint Backlog”. A equipe tem autonomia para decidir como realizará as tarefas.
Referências: http://en.wikipedia.org/wiki/Scrum_(development) http://dojofloripa.wordpress.com/2007/02/07/scrum-em-2-minutos/ http://www.softhouse.se http://www.mountaingoatsoftware.com/scrum http://www.scrumalliance.org/
Página 8 de 8 Rodrigo Lopes Ferreira –
[email protected] [email protected] Versão 1.0 de 21/05/2009.