METODOLOGIA ÁGEIS SCRUM Prof. Fabiano Papaiz IFRN SCRUM O Scrum foi concebido como um estilo de gerenciamento de projetos, sendo inicialmente utilizado por uma empresa automotiva japonesa por Takeuchi e Nonaka em 1986 Eles notaram que os projetos executados com equipes pequenas e multidisciplinares produziam excelentes resultados Associaram estas equipes altamente eficazes à formação Scrum do esporte Rugby SCRUM Em 1995, Ken Schwaber formalizou a definição do Scrum e ajudou a implantá-lo na área de desenvolvimento de software A filosofia por trás do Scrum é que uma equipe deve trabalhar sempre em conjunto, de forma integrada e autoorganizada para desenvolver o software Além de ser utilizado para o gerenciamento de projetos de de software, o Scrum também pode ser aplicado em qualquer outro tipo de projeto no qual um grupo de pessoas necessitem trabalhar juntas para atingir um objetivo comum SCRUM Assim como o RUP, o Scrum não é uma metodologia já pronta e definida, ele é um modelo no qual podemos nos basear para definirmos a nossa própria metodologia de desenvolvimento O Scrum fornece uma estrutura básica de processo (um framework) onde podem ser adicionados papeis, artefatos, atividades etc, de acordo com a necessidade da equipe e do projeto Mas é muito comum encontrarmos definições do Scrum como sendo uma metodologia (ou processo) de desenvolvimento de software O mesmo acontecendo com o RUP SCRUM Características A equipe deve ser multi-funcional e auto-organizada A equipe escolhe a melhor forma de realizar o seu trabalho para desenvolver o software, sendo que todas as habilidades necessárias estão presentes nos membros da equipe Não há necessidade de constantes supervisões externas para controlar o trabalho da equipe (“somos maduros o suficiente!”) O produto evolui em uma série de iterações (Sprints) Usa a abordagem iterativa e incremental Entregas frequentes de funcionalidades 100% desenvolvidas Geralmente os Sprints duram de 2 a 4 semanas SCRUM Características (continuação) As funcionalidades a serem implementadas devem estar listadas num artefato denominado Product Backlog Lista que contém todas as funcionalidades que o software deverá possuir, ordenada por uma prioridade definida pelo cliente Orienta a equipe sobre: O que devemos fazer? Por onde começamos? O que é mais importante para o cliente? Não há uma prática de engenharia prescrita O Scrum irá de se adequar a todas elas SCRUM CONCEITOS DO SCRUM SCRUM Visão Geral O que fiz desde ontem? O que estou planejando fazer até amanhã? Existe algo me impedindo de atingir minha meta? SCRUM Artefatos Product Backlog É uma lista ordenada que contém todas as funcionalidades necessárias para a construção do software Podem ser utilizadas Histórias de Usuários, Casos de Uso ou aquilo que a equipe achar necessário para definir as funcionalidades Cada item deve possuir uma prioridade (um peso) de acordo com a vontade do cliente Ao final de cada Sprint, a lista deverá ser revisada e repriorizada (Sprint Review) Incluindo tudo que tenha ficado pendente na Sprint anterior, como também as novas funcionalidades que vierem a ser solicitadas pelo cliente SCRUM Artefatos Product Backlog (continuação) Exemplo: Como um Eu gostaria de Para Valor de Negócio (10 a 100) Estimativa (horas) Gerente de RH Publicar novas vagas de emprego Encontrar candidatos 80 20 Interessado na vaga de emprego Me candidatar a uma vaga Encontrar um emprego 70 40 Gerente de RH Fazer a triagem dos candidatos Eliminar candidatos que não interessam à empresa 50 8 SCRUM Artefatos Sprint Backlog É uma lista de tarefas que a equipe se compromete a completar dentro de uma Sprint As tarefas serão geradas a partir dos itens do Product Backlog Projetar as classes de domínio, criar o banco de dados, refatorar um código etc Geralmente 1 funcionalidade irá gerar n tarefas (1:n) Deverão ser considerados: A prioridade que o cliente definiu no Product Backlog O esforço estimado pela equipe para completar a funcionalidade SCRUM Papeis SCRUM Papeis Product Owner Como o nome já diz, é o Dono do Produto, ou seja, quem definirá as funcionalidades que o software irá possuir Pode ser o próprio cliente ou um representante da empresa Deve ser uma pessoa apenas e não um grupo de pessoas Irá priorizar as funcionalidades de acordo com o valor agregado para o cliente Aceitará ou rejeitará os resultados dos trabalhos Decidirá as datas de lançamento dos releases do software SCRUM Papeis Team (Time de Desenvolvimento) Equipe formada geralmente por 5 a 9 pessoas Deverá ser multi-funcional, ou seja, todas as habilidades necessárias para desenvolver o software deverão estar presentes na equipe (Analistas, Programadores, DBAs, Web Designers, Testadores etc) Auto-organizável, pois a equipe decidirá como dividir o trabalho em tarefas, tendo autonomia para tomar decisões sobre como executar o seu trabalho da melhor forma possível, não havendo interferência ou dependência de pessoas externas à equipe Os integrantes deverão ter dedicação integral no projeto, evitando a participação em vários projetos ao mesmo tempo A troca de integrantes somente deverá ocorrer antes da Sprint iniciar SCRUM Papeis Scrum Master Aquele que procura assegurar que a equipe respeite e siga os valores e as práticas do Scrum Protege a equipe assegurando que ela não se comprometa excessivamente com relação àquilo que é capaz de realizar durante uma Sprint (Ritmo Sustentável) Atua como um “escudo” para evitar interferências externas Atua como ouvinte das Reuniões Diárias (Daily Scrum), sendo o responsável por remover quaisquer obstáculos que sejam levantados pela equipe durante essas reuniões SCRUM Papeis Foco principal de cada Papel: Product Owner definição das funcionalidades Team desenvolvimento das funcionalidades Scrum Master garantir a aplicação do Scrum SCRUM Reuniões (Cerimônias) SCRUM Reuniões (Cerimônias) Sprint Planning (Planejamento da Sprint) É o planejamento do trabalho que será realizado durante uma determinada Sprint Funcionalidades do Product Backlog serão selecionadas e as tarefas necessárias serão identificadas e estimadas Participam todos os papeis envolvidos: Product Owner, Team e Scrum Master Geralmente dividida em 2 partes com duração de até 4h cada 1ª Parte: Quais funcionalidades serão desenvolvidas? 2ª Parte: Como as funcionalidades serão desenvolvidas? SCRUM Reuniões (Cerimônias) Daily Scrum (Reuniões Diárias) Reuniões diárias, de preferência sempre no mesmo horário, em pé, com duração de no máximo 15 minutos Perguntas a serem respondidas por cada integrante: O que fiz desde ontem? O que estou planejando fazer até amanhã? Existe algo me impedindo de atingir minha meta? Participantes: Team e o Scrum Master (ouvinte) SCRUM Reuniões (Cerimônias) Sprint Review (Revisão da Sprint) Apresentação do resultado gerado pela Sprint, o qual deve ser um incremento do software, totalmente funcional e potencialmente utilizável pelo cliente Apresentação sem utilização de slides, devendo ser demonstrada a utilização da versão do software que foi gerada As funcionalidades que não forem totalmente implementadas deverão voltar para o Product Backlog para serem inseridas nas Sprints seguintes Todos deverão participar SCRUM Reuniões (Cerimônias) Sprint Retrospective (Retrospectiva da Sprint) Reunião que ocorre após a Sprint Review e antes da próxima Sprint Planning. Seu objetivo é avaliar a Sprint realizada em busca de melhoria nos processos e ferramentas utilizadas, na comunicação e relacionamento da equipe e na qualidade do produto Enquanto a Sprint Review analisa o produto que foi gerado, a Sprint Retrospective analisa o processo que foi adotado, visando sua melhoria contínua Participantes: Team e o Scrum Master SCRUM Trabalho: 1. O que é o Scrum? 2. O que é uma Sprint? 3. Qual a diferença entre o Product Backlog e o Sprint Backlog? 4. Quais os papéis definidos pelo Scrum e quais as responsabilidades de cada um deles? 5. Quais são as reuniões (cerimônias) definidas pelo Scrum? E quais os objetivos de cada uma delas? 6. Qual o número de pessoas recomendado pelo Scrum para formar um Team (equipe de desenvolvimento)? Em grupo com até 3 pessoas Enviar o documento em formato PDF para o e-mail do professor ([email protected]), contendo os integrantes do grupo e com o assunto = “Trabalho sobre Scrum” FIM