UNIVERSIDADE SÃO JUDAS TADEU Curso de Pós-Graduação Gerência de Projetos com Ênfase nas práticas do PMI

Documentos relacionados
Géssica Talita. Márcia Verônica. Prof.: Edmilson

Scrum. Introdução UFRPE-DEINFO BSI-FÁBRICA DE SOFTWARE

Desenvolvimento Ágil de Software

Uma introdução ao SCRUM. Evandro João Agnes

Após completar este módulo você deverá ter absorvido o seguinte conhecimento: Uma ampla visão do framework Scrum e suas peculiaridades

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas

ENGENHARIA DE SOFTWARE I

Manifesto Ágil e as Metodologias Ágeis (XP e SCRUM)

SCRUM Gerência de Projetos Ágil. Prof. Elias Ferreira

O Guia Passo-a-Passo para IMPLANTAR. Em seu próprio Projeto

Gerenciamento de Equipes com Scrum

Com metodologias de desenvolvimento

EXIN Agile Scrum Fundamentos

DISCIPLINA ENGENHARIA DE SOFTWARE Aula 03 Desenvolvimento Ágil Modelos Ágeis. Profª Esp.: Maysa de Moura Gonzaga

Scrum. Gestão ágil de projetos

SCRUM: UM MÉTODO ÁGIL. Cleviton Monteiro

Jonas de Souza H2W SYSTEMS

Desenvolvimento Ágil sob a Perspectiva de um ScrumMaster

Gestão de Projetos com Scrum

SCRUM. Otimizando projetos. Adilson Taub Júnior tecproit.com.br

Wesley Torres Galindo

Governança de TI. ITIL v.2&3. parte 1

Manifesto Ágil - Princípios

UTILIZAÇÃO DAS METODOLOGIAS ÁGEIS XP E SCRUM PARA O DESENVOLVIMENTO RÁPIDO DE APLICAÇÕES

Wesley Torres Galindo.

Universidade Federal do Espírito Santo Centro Tecnológico Departamento de Informática Programa de Pós-Graduação em Informática

RESUMO PARA O EXAME PSM I

XP extreme Programming, uma metodologia ágil para desenvolvimento de software. Equipe WEB Cercomp

ANÁLISE COMPARATIVA ENTRE OS MODELOS DE PROCESSO: PROTOTIPAÇÃO, PSP E SCRUM

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software

Pós-Graduação em Gerenciamento de Projetos práticas do PMI

Scrum Guia Prático. Raphael Rayro Louback Saliba Certified Scrum Master. Os papéis, eventos, artefatos e as regras do Scrum. Solutions.

Tópicos. Métodos Ágeis. Histórico; Valores; Métodos Ágeis x Modelos Tradicionais; Exemplo: Referências Bibliográficas.

SCRUM. É um processo iterativo e incremental para o desenvolvimento de qualquer produto e gerenciamento de qualquer projeto.

Engenharia de Software I. Aula 15: Metodologias Ágeis. Prof. Márcio D. Puntel

Quais são as características de um projeto?

SCRUM. Fabrício Sousa

Scrum. Centro de Informática - Universidade Federal de Pernambuco Sistemas de Informação Kiev Gama kiev@cin.ufpe.br

Engenharia de Software II

Metodologias Ágeis. Aécio Costa

ARCO - Associação Recreativa dos Correios. Sistema para Gerenciamento de Associações Recreativas Plano de Desenvolvimento de Software Versão <1.

Sistemas de Informação I

Desenvolvimento Ágil de Software em Larga Escala

Ferramenta para gestão ágil

COMO FAZER A TRANSIÇÃO

Objetivos do Módulo 3

Expresso Livre Módulo de Projetos Ágeis

Gerenciamento de projetos.

5. Métodos ágeis de desenvolvimento de software

SCRUM Discussão e reflexão sobre Agilidade. Fernando Wanderley

Capítulo 2. Processos de Software Pearson Prentice Hall. Todos os direitos reservados. slide 1

Workshop SCRUM. Versão 5 Out 2010 RFS. rildo.santos@etecnologia.com.br

Engenharia de Software II: SCRUM na prática. Ricardo de Sousa Britto

O Rational Unified Process (RUP) é um processo de desenvolvimento de software inspirado no

ROTEIRO PARA ELABORAÇÃO DE PROJETOS

Fundamentos de Teste de Software

Processo de Abertura de Projetosescritorio. Bizagi Process Modeler

Capítulo 1. Extreme Programming: visão geral

Métodos Ágeis e Gestão de Dados Moderna

Módulo de projetos ágeis Scrum Módulo de Projetos Ágeis Scrum

Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios

Alexandre Lima Guilherme Melo Joeldson Costa Marcelo Guedes

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

Dinâmica em Grupo com o Framework SCRUM

Resumo do mês de março Quer mais resumos? Todo mês em:

Prof. Me. Marcos Echevarria

Referências internas são os artefatos usados para ajudar na elaboração do PT tais como:

GARANTIA DA QUALIDADE DE SOFTWARE

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 06 PROFª BRUNO CALEGARO

O papel do CRM no sucesso comercial

Feature-Driven Development

A importância da comunicação em projetos de

Frederico Aranha, Instrutor. Scrum 100 Lero Lero. Um curso objetivo!

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

METODOLOGIAS ÁGEIS - SCRUM -

PEN - Processo de Entendimento das Necessidades de Negócio Versão 1.4.0

Programação Extrema. Luis Fernando Machado. Engenharia de Software

Processo de Desenvolvimento de Software. Unidade V Modelagem de PDS. Luiz Leão luizleao@gmail.com

Você consegue dirigir seu carro sem um painel de controle? Você consegue gerenciar um Service Desk sem Indicadores?

METODOLOGIA DE DESENVOLVIMENTO DE SOFTWARE DO MUSEU PARAENSE EMÍLIO GOELDI

Sistemas de Informação I

Caso Prático: Java como ferramenta de suporte a um ambiente realmente colaborativo no método Scrum de trabalho

Boas Práticas em Gerenciamento de Projetos Material utilizado nas aulas de Pós-graduação do Centro de Informática

Requisitos de Software. Teresa Maciel DEINFO/UFRPE

ágeis para projetos desenvolvidos por fábrica de software

INTRODUÇÃO AOS MÉTODOS ÁGEIS

ACOMPANHAMENTO GERENCIAL SANKHYA

ELABORAÇÃO DE UM PRODUCT BACKLOG EFETIVO

UNIDADE 4. Introdução à Metodologia de Desenvolvimento de Sistemas

Extração de Requisitos

Agilidade parte 3/3 - Scrum. Prof. Dr. Luís Fernando Fortes Garcia luis@garcia.pro.br

MÓDULO 9 METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS

TI Aplicada. Aula 02 Áreas e Profissionais de TI. Prof. MSc. Edilberto Silva prof.edilberto.silva@gmail.com

A Disciplina Gerência de Projetos

MANIFESTO ÁGIL. Esses conceitos aproximam-se melhor com a forma que pequenas e médias organizações trabalham e respondem à mudanças.

Metodologia SCRUM. Moyses Santana Jacob RM Stelvio Mazza RM Tiago Pereira RM Hugo Cisneiros RM 60900

Agenda. Visão Revolução Ágil EduScrum Visão Geral do Método Benefícios Projeto Scrum for Education Sinergias

Transcrição:

UNIVERSIDADE SÃO JUDAS TADEU Curso de Pós-Graduação Gerência de Projetos com Ênfase nas práticas do PMI SCRUM Metodologia Ágil de Gerenciamento de Projetos São Paulo 2009

UNIVERSIDADE SÃO JUDAS TADEU Curso de Pós-Graduação Gerência de Projetos com Ênfase nas práticas do PMI Fernanda Mendes RA: 200880335 Fernanda Pereira RA: 200880093 João Carlos RA: 942000421 Luciana Carvalho RA: 200205766 Ricardo Henrique RA: 200880372 Vanessa Rodrigues RA: 200207910 SCRUM Metodologia Ágil de Gerenciamento de Projetos Prof.: Nelson Rosamilha São Paulo 2009

Sumário RESUMO...1 1 INTRODUÇÃO...2 1.1 CONCEITOS BÁSICOS...2 1.2 HISTÓRICO... 3 1.3 INFLUÊNCIA...3 1.4 O MANIFESTO ÁGIL...5 1.5 VALORES... 6 2 PROCESSOS EMPÍRICOS...7 2.1 PILARES...7 2.2 COMPLEXIDADE...7 3 PAPÉIS...9 3.1 PRODUCT OWNER...9 3.2 EQUIPE...9 3.3 SCRUM MASTER...10 4 ESTIMATIVAS...11 4.1 ESTIMATIVAS ABSOLUTAS E ESTIMATIVAS RELATIVAS...11 4.2 STORY POINTS...12 4.3 VELOCITY... 14 4.4 PLANNING POKER...16 5 PLANEJAMENTO...22 5.1 NÍVEIS DE PLANEJAMENTO...22 5.2 PRODUCT BACKLOG...23 5.3 SPRINT...23 5.4 RELEASE...24 5.5 PLANEJANDO RELEASES...24 6 REUNIÕES...25 6.1 SPRINT PLANNING MEETING... 25 6.2 DAILY SCRUM... 25 6.3 SPRINT REVIEW...26 6.4 SPRINT RETROSPECTIVE...27 7 EXECUTANDO UMA SPRINT...28 7.1 TRABALHANDO EM SPRINTS... 28 7.2 CRIANDO UM TASKBOARD... 29 7.3 MONITORANDO A SPRINT...31 7.4 IMPEDIMENT BACKLOG...32 8 EQUIPES SCRUM...33 8.1 COMPOSIÇÃO... 33 8.2 RESPONSABILIDADE...33 8.3 COLABORAÇÃO...34 9 PROBLEMAS COMUNS...35 10 SCRUM E ENGENHARIA ÁGIL...37 10.1 USER STORIES... 37 10.2 PAIR PROGRAMMING...38 10.3 TEST DRIVEN DEVELOPMENT...38 10.4 REFACTORING...38 10.5 INTEGRAÇÃO CONTÍNUA...39 11 CONCLUSÃO...40

12 BIBLIOGRAFIA...41

1 RESUMO O desenvolvimento de software é uma atividade complexa que envolve inúmeros fatores, muitas vezes imprevisíveis e difíceis de controlar. Esta complexidade faz com que grande parte dos projetos de software exceda o prazo e o orçamento previsto, além de não atender às expectativas do cliente em termos de funcionalidade e qualidade. Neste contexto, um gerenciamento eficaz é fundamental para o sucesso de projetos de software. Como a incerteza é inerente a este tipo de projeto, o gerenciamento de riscos vem-se tornando cada vez mais relevante nesta área de conhecimento. Visando melhores resultados, as empresas de Tecnologia da Informação e Comunicação (TIC) estão adotando também metodologias de desenvolvimento de software mais flexíveis e propícias às freqüentes mudanças, além de mais interação durante todo o projeto entre os usuários e o próprio sistema. Estas metodologias são chamadas de ágeis em contraposição às metodologias pesadas que, tradicionalmente, predominaram na área, mas que se mostraram ineficientes e improdutivas. Este trabalho apresenta uma proposta de utilização das práticas sugeridas pela metodologia ágil Scrum para agilizar os processos sugeridos pelo mprime Process na área de Gerenciamento de Riscos.

2 1 INTRODUÇÃO Scrum é uma estrutura básica (framework) e ágil, para gerenciamento de projetos de software. O intuito é passar por todos os itens do Scrum, tentar dar detalhes diretos e simples sobre esse framework. O que é SCRUM? É um processo de desenvolvimento iterativo e incremental que pode ser aplicado a qualquer produto ou no gerenciamento de qualquer atividade complexa; Criado por Jeff Sutherland e Ken Schwaber na década de 90; A Tecnologia da Informação e Comunicação (TIC) vem crescendo rapidamente, o que demanda rápidas decisões e constante aprimoramento dos processos de negócios utilizados. Ainda são comuns, dentro de ambientes de desenvolvimento de software, problemas relacionados à entrega do produto/serviço de software, orçamento inicial defasado e falhas em critérios de qualidade. 1.1 Conceitos Básicos Ainda que os projetos respeitem prazos e custos, os mesmos podem possuir qualidade suspeita, uma vez que podem ter sido desenvolvido sob muita pressão, o que pode resultar em um elevado número de erros. Algumas destas falhas podem ser relacionadas com os modelos de software utilizados, como por exemplo, o modelo clássico ou seqüencial, considerado uma metodologia tradicional. Metodologias tradicionais propõem processos orientados à documentação para o desenvolvimento de software, o que acaba limitando os desenvolvedores, visto que eles necessitam de toda a documentação pronta para iniciar as atividades de desenvolvimento. Além disso, muitas organizações de pequeno porte ainda não lidam bem com processos, o que pode resultar em efeitos desastrosos em termos de qualidade de software e também dificultar a entrega do software nos prazos e custos predefinidos. Esse tipo de metodologia é composta por atividades seqüenciais como levantamento de requisitos, análise, projeto, implementação, teste, implantação e

3 manutenção. Deve ser aplicada apenas em situações em que os requisitos de software sejam estáveis e os requisitos futuros previsíveis. Os projetos que possuem requisitos propensos a mudanças, nas quais, refazer partes do código, não é considerado uma atividade de alto custo, onde as equipes são pequenas, as datas de entrega do software são curtas e o desenvolvimento rápido é fundamental, poderão utilizar-se das técnicas adotadas pelas metodologias ágeis. As metodologias ágeis surgiram com a proposta de aumentar o enfoque nas pessoas e não nos processos de desenvolvimento. Além disso, existe a preocupação de gastar menos tempo com documentação e mais com resolução de problemas de forma interativa. Uma característica das metodologias ágeis é que elas são adaptativas ao invés de serem preditivas, ou seja, tentam se adaptar a novos fatores decorrentes do desenvolvimento do projeto, ao invés de procurar analisar previamente tudo o que pode acontecer no decorrer do desenvolvimento. 1.2 Histórico Inicialmente, o Scrum foi criado como uma estrutura básica (framework) para gerenciamento de projetos, na indústria convencional. Só em 1995, Ken Schwaber formalizou-o para projetos de desenvolvimento de software. Ele foi fortemente baseado no processo Lean Manufacturing da Toyota, mais conhecido como Manufatura Enxuta. 1.3 Influência Scrum é usado por - First American Real; Google; Nielsen Media; Yahoo; Intuit; Microsoft; Ipswitch; High Moon Studios; BMC Software; Electronic Arts; Estate; Nokia; Sabre; Siemens; Lexis Nexis; Philips; John Deere; Lockheed Martin; CESAR; Turner Broadcasting; BBC; Time Warner; Capital One; Salesforce.com CERTI; Oce. Scrum é usado para desenvolvimento de vídeo games; desenvolvimento interno; software comercial; sistemas críticos; websites aplicações; software de controle de Satélites; projetos de preço fixo; software para portáteis; aplicações

4 certificadas ISO9001; financeiras; aplicações de controle de redes; telefones celulares; sistemas embarcados; Algumas das Aplicações ISV Sistemas 24x7 com 99.999% de uptime requerido maiores aplicações em uso na atualidade.

5 1.4 O Manifesto Ágil Há alguns anos, um grupo de profissionais veteranos na área de software, decidiram se reunir em uma estação de esqui, nos EUA, para discutir formas de melhorar o desempenho de seus projetos. Embora cada envolvido tivesse suas próprias práticas e teorias sobre como fazer um projeto de software ter sucesso, cada qual, com as suas particularidades, todos concordavam que, em suas experiências prévias, um pequeno conjunto de princípios sempre parecia ter sido respeitado quando os projetos davam certo. Com base nisso, eles criaram o Manifesto para o Desenvolvimento Ágil de Software, freqüentemente chamado apenas de Manifesto Ágil, e o termo Desenvolvimento Ágil passou a descrever abordagens de desenvolvimento que seguissem estes princípios, que são apresentados a seguir: Estamos descobrindo maneiras melhores de desenvolver software fazendo-o nós mesmos e ajudando outros a fazê-lo. Através desse trabalho, passamos a valorizar: Indivíduos e interação entre eles mais que processos e ferramentas; Software em funcionamento mais que documentação abrangente; Colaboração com o cliente mais que negociação de contratos; Responder a mudanças mais que seguir um plano. Ou seja, mesmo havendo valor nos itens à direita, valorizamos mais os itens à esquerda. O Manifesto Ágil, criado em 2001, descreve a essência de um conjunto de abordagens para desenvolvimento de software criado ao longo da última década. A mais conhecida delas é o Extreme Programming, também conhecida pela abreviação XP, uma metodologia criada por Kent Beck no final dos anos 90. O XP é composto por um pequeno conjunto de práticas, que giram em torno de alguns valores básicos.

6 1.5 Valores Todos que se envolvem com desenvolvimento de software têm um sentimento sobre aquilo que realmente importa. Uma pessoa pode achar que o que realmente importa é pensar cuidadosamente em todas as decisões de design concebíveis antes de implementá-las. Outra pode achar que importante mesmo é não ter nenhum tipo de restrições sobre sua liberdade pessoal. O maior problema encontrado em relação ao que as pessoas "sabem" sobre desenvolvimento de software é que elas se concentram em ações individuais. O que realmente importa não é como uma pessoa se comporta, mas sim como os indivíduos se comportam como parte de uma equipe e como parte de uma organização. Por exemplo, as pessoas são apaixonadas por estilos de codificação. Apesar de haver estilos que são sem dúvidas melhores que outros, a questão mais importante em relação a estilos de codificação é que a equipe como um todo escolha adotar um estilo em comum. Estilos de codificação muito peculiares e os valores revelados por eles, liberdade pessoal a qualquer custo, não ajudam a equipe a ter sucesso. Se todos na equipe se concentrarem naquilo que é importante para a equipe, em que devem se concentrar? XP se baseia em cinco valores para guiar o desenvolvimento: Comunicação Coragem Feedback Respeito Simplicidade

7 2 PROCESSOS EMPÍRICOS São aqueles que não se conheçam todas as variáveis de entrada para que possa estabelecer um processo repetível. O Scrum, parte do princípio que nem todas as características do produto são conhecidas na análise e que provavelmente os requisitos mudarão com o passar do tempo. Conclusão dos Processos Processos empíricos são baseados em inspeção e adaptação e devem ser utilizados sempre que os processos definidos não forem adequados devido a complexidade do projeto. 2.1 Pilares A proposta do Scrum é radicalmente diferente. O Scrum contempla uma visão empírica e tem seus pilares apoiados na teoria de controle de processos empíricos. O Scrum, como um bom processo empírico, parte do princípio que nem todas as características do produto são conhecidas na análise e que provavelmente os requisitos mudarão com o passar do tempo. No Scrum existem duas atividades principais: inspeção e adaptação. Como o processo não é definido, o gerente de projeto tem que inspecionar a execução diariamente, o que requer transparência, e fazer as adaptações necessárias com o passar do tempo. A exemplo do XP, Scrum é como aprender a dirigir um carro: você não traça um destino inicialmente e chega em linha reta até o final. Aprender a dirigir está muito mais relacionado com pequenas correções de rota até a chegada final. Desenvolvimento é uma atividade extremamente complexa que não se adapta a um processo definido. A única alternativa viável é a utilização de um processo empírico baseado em inspeção e adaptação. 2.2 Complexidade Devido a alta complexidade, inerente ao desenvolvimento de software, os processos tornam-se cada vez mais difíceis e não fornecem um nível de flexibilidade adequado para que se obtenha a alta produtividade e qualidade no produto final com as práticas de engenharia atuais. A melhor alternativa possível nesta situação é a

8 adoção de um processo que seja flexível o bastante para acomodar as alterações necessárias exigidas durante o desenvolvimento do produto. O Scrum é uma metodologia testada em uma diversidade de projetos, com mais de 15 anos de uso, que pode aumentar consideravelmente a produtividade da equipe e a qualidade do produto. Um projeto de software, seja ele web-based ou não, é sempre um percurso longo e cheio de contratempos onde a agilidade para tratar os problemas é sempre um fator que marca a diferença, no tempo de execução e, sobretudo, nos custos e nos investimentos. As mudanças são constantes e complexas, por isso mesmo as metodologias utilizadas revelam-se de grande importância uma vez que ditam o sucesso ou insucesso de um projeto tornando a evolução do mesmo mais seguro e estável. Scrum é uma metodologia que agrupa importantes conceitos e metodologias que visam a produtividade, a qualidade dos produtos, o retorno do investimento e consequentemente a satisfação do cliente. E, a satisfação do cliente em projetos de desenvolvimento de software implica sempre no período de vida do projeto, onde o próprio projeto contempla as mudanças do negócio, da economia, da legislação etc. isto é, a satisfação do cliente exige que se abrace a mudança, em vez de seguir um plano rígido e predefinido.

9 3 PAPÉIS Cada um dos três papéis são agentes importantes no desenvolvimento do produto, cada um com sua responsabilidade conforme apresentado a seguir: 3.1 Product Owner O Product Owner é responsável por definir as características do produto e a prioridade de cada característica. O Product Owner deve definir a data de entrega e deve rever as características e as prioridades quando necessário. Como retorno, o Product Owner é o responsável por garantir a lucrabilidade do produto e deve aceitar ou não os resultados do trabalho desenvolvido. Responsabilidades: Define a visão do produto É o representante dos clientes Entende do negócio Define o objetivo do Sprint Elege prioridades de negócio Gerencia o Backlog 3.2 Equipe A equipe de SCRUM deve ser uma equipe multifuncional composta de 5 a 9 pessoas, deve selecionar um trabalho e especificar os resultados esperados. A equipe deve ter total liberdade ao fazer o trabalho para conseguir atingir a meta e deve poder organizar a ela mesma e ao trabalho. Também é a equipe que vai demonstrar o trabalho desenvolvido ao Product Owner. Características: Responsável pela entrega Multi-funcional

10 Auto-organizada e auto-gerenciada Todos os membros igualmente comprometidos com um objetivo comum Geralmente equipes pequenas (até 10) Equipes grandes geralmente se comportam como várias equipes pequenas 3.3 SCRUM Master É o líder da equipe do SCRUM e trabalha próximo ao Product Owner, ele deve garantir o trabalho da equipe, seja funcional e/ou produtivo, acompanhando o que foi feito, o que está sendo feito e novas tarefas foram descobertas. É de responsabilidade do SCRUM Master remover as barreiras no desenvolvimento e evitar que problemas externos ao desenvolvimento do produto afetem o grupo de SCRUM. É o SCRUM Master o responsável sobre a aplicação efetiva do processo, ele deve garantir que as regras do processo sejam seguidas a risca. Características: Conhece o processo Remove impedimentos Protege a equipe Riscos e interferências externos Excesso de otimismo Auxilia o Product Owner a maximizar o retorno do investimento

11 4 ESTIMATIVAS 4.1 Estimativas Absolutas e Estimativas Relativas Qual a extensão da muralha da China? Qual a temperatura do Sol? Qual a altura da Empire State Building? Se fizermos essas perguntas a 10 pessoas diferentes, provavelmente receberemos 10 respostas completamente diferentes. Mas o que isso tem haver com software? O processo de estimar esses valores não é muito diferente do que fazemos quando alguém nos pede para estimar quanto tempo vai levar para desenvolver a função X. Prever todos os fatores que possam impactar o processo de desenvolvimento é impossível. Resumindo, acertar quanto vai levar para implementar uma funcionalidade não difere muito de acertar a altura do Empire State ou a temperatura do Sol. Esse tipo de estimativa pode ser chamada de absoluta, porque tentamos estimar diretamente o tempo de cada funcionalidade sem levar em conta as outras. Esse tipo de estratégia tem diversos problemas. As estimativas ficam totalmente desprotegidas em relação a mudanças na equipe, já que as estimativas de tempo têm relação direta com a quantidade de pessoas que formam a equipe e o grau de experiência e conhecimento de cada uma delas. Qualquer tipo de mudança nos membros da equipe invalidará todas as estimativas já realizadas. Quando passamos a estimar relativamente, não nos preocupamos inicialmente com o tempo. Pode parecer estranho à primeira vista, mas o que precisamos estimar inicialmente é o tamanho de cada funcionalidade, o quão complexo será desenvolver o item, mas não só isso, o valor de complexidade atribuído a cada item deve ser definido em relação a outros. Exemplificando: Se atribuirmos um valor de complexidade 10 para o item A e estimarmos que o item B é três vezes mais complexo, então atribuiremos o valor 30 para o item B e assim por diante até que todos os itens estejam estimados. Qual a vantagem disso? Primeiro iniciamos as estimativas com uma referência, para isso escolhemos um item que

12 pareça ser simples e atribuímos nosso valor de referência (2,10,N,etc.) e a partir daí, passamos a estimar os outros itens em relação a essa referência. O importante aí não é a precisão da referência, mas sim a consistência entre as estimativas. Outra vantagem é que as estimativas estão blindadas em relação a mudanças na equipe, mesmo que a equipe mude completamente o tamanho dos itens, as estimativas continuarão as mesmas. Mas, precisamos ter uma idéia de quando o item estará pronto, precisamos planejar nossas entregas, etc. Para isso, aplicamos nas nossas estimativas relativas a métrica da velocidade da equipe, ou seja, quantos pontos de complexidade a equipe consegue resolver a cada interação, como isso podemos derivar toda a agenda do projeto. Se a equipe mudar, a velocidade muda, e a agenda muda, mas todo trabalho estimado não é perdido. Quando aplicamos a velocidade, estamos injetando realidade nas nossas estimativas, estamos de fato usando uma métrica de quanto a equipe pode se comprometer e estamos entregando uma agenda muito mais confiável. 4.2 Story Points Story Points são apenas medidas relativas de esforço envolvido na estimativa de um usuário história. A idéia geral é estarmos na estimativa do 'caminho feliz' de um caso ou utilizar uma das principais vias alternativas em nosso produto atraso. Gestores determinam a capacidade em termos de tempo, ou seja, os gestores estimam quanto tempo levará para antecipar determinadas tarefas e, em seguida, atribui o trabalho baseado nos membros da equipe e o total do tempo disponível. Isso é problemático, porque não distingue uma história que é muito difícil de preencher, considerando somente o tempo de trabalho necessário. Dito de outra maneira codifica uma característica e organiza os montes de documentação sobre a sua mesa, que são atividades que provavelmente possuem a mesma quantidade de tempo, mas não há dúvida de que o antigo exigiria muito mais concentração e esforço. Devido a esse fato, devem ser reconhecidos como incrivelmente diferentes tarefas, que exigem diferentes níveis de esforço. Scrum toma uma abordagem bastante diferente de determinar um membro da equipe da capacidade. Primeiro de tudo, Scrum atribui ao trabalho uma equipe inteira, não um indivíduo.

13 Filosoficamente, isso coloca uma ênfase no esforço coletivo. Por outro lado, recusase a quantificar Scrum trabalho em termos de tempo, porque isso iria prejudicar a auto-organização central para o sucesso do Scrum. Este é um grande intervalo de cachoeira: Em vez de um gestor estimar tempo em nome de outras pessoas e atribuindo tarefas com base em conjecturas, os membros da equipe no Scrum utilizam esforço e grau de dificuldade para estimar os seus próprios trabalhos. Scrum não prescreve um único caminho para equipes estimar seu trabalho. No entanto, pedimos que as equipes não estimem em termos de tempo, mas, em vez disso, use uma métrica mais abstrata para quantificar esforço. Estimar métodos inclui dimensionamento numérico (1 a 10), a seqüência Fibonacci (1, 2, 3, 5, 8, 13, 21, 34, etc), e até mesmo raças de cachorros, em que um Chihuahua representaria a menor história e um Great Dane a maior. O importante é que a equipe tenha uma compreensão da amplitude que é utilizada, de modo que cada membro da equipe se familiarize com a escala de valores. No Sprint Planning Meeting, a equipe se reúne para calcular os seus esforços para as histórias em atraso. O Produto Proprietário e necessidades destas estimativas, priorizam itens na carteira e, como resultado, as previsões com base em comunicados da equipe. Isto significa que o Produto Dono precisa de uma avaliação honesta de como vai ser difícil trabalhar. Assim, recomenda-se que o Produto Proprietário não observe o processo de estimação para evitar pressionar (intencionalmente ou não) uma equipe para reduzir o seu esforço nas estimativas e assumir mais trabalho. Mesmo quando a equipe faz estimativas entre si, deverão ser tomadas medidas para reduzir a influência do modo como uma equipe faz estimativas. Como tal, é recomendado que todos os membros da equipe divulguem as suas estimativas em simultâneo.

14 tabela: O planejamento do trabalho realizado versus o total alcançado dá a seguinte 4.3 Velocity Para acompanhar o progresso e a velocidade da equipe de desenvolvimento, o Scrum utiliza um painel de progresso chamado de Gráfico de Consumo (Burndown Chart), que ilustra a quantidade de funcionalidades que foram desenvolvidas até o momento no Sprint. A inclinação da curva dá a noção de Velocidade (Velocity) da equipe. A conversa gira em torno dos desenvolvedores, onde o Scrum Master pergunta para cada membro do time quanto tempo uma atividade do Backlog demora para ser desenvolvida (em horas), e com base nisso as horas necessárias para o projeto. Quando já passou por alguns ciclos com Sprints, é utilizado o Cálculo de Velocidade

15 e uma medida em cima do total do trabalho feito, onde cada item recebe um peso de acordo com a sua estimativa inicial. Como estimar a velocidade? A maneira mais simples de estimar a velocidade é verificar o histórico do time. Qual foi a velocidade do time nos últimos Sprints? Então assumir que a velocidade será a mesma para o último Sprint, mas isso só funciona se o time já teve feito alguns Sprints antes. Outra maneira de calcular é através de cálculo de recurso. Por exemplo, vamos assumir que estamos planejando um Sprint de 3 semanas (15 dias) com um time de 4 pessoas. O recurso João ficará dois dias de folga, Zezinho apenas 50%, colocando tudo isso no papel ficará: Estimamos que a velocidade será menor que 50. Mas quanto menos? Utilizamos o termo Fator Foco para isso: Fórmula para velocidade estimada do Sprint: (Dias de Recurso Disponível) * (Fator Foco) = (Velocidade Estimada) Fator Foco é uma estimativa de como o time esta focado no Projeto. Um fator foco baixo significa que o time espera encontrar vários inconvenientes. A melhor maneira de determinar um Fator Foco concreto é analisando o último Sprint, ou melhor, a média dos últimos Sprints.

16 Fator Foco do último Sprint: (Fator Foco) = ( Velocidade Atual ) (Dias de Recurso Disponível ) Velocidade atual é a soma da estimativa inicial de todas as estórias que foram finalizadas no Sprint anterior. Por exemplo, no ultimo Sprint completamos 18 pontos em uma equipe de 3 pessoas, trabalhando por 3 semanas para um total de 45 dias de recurso. Vamos calcular o novo Sprint baseado nestes dados, para complicar imagine que chegou mais um recurso (Trainee), que totalizando dá 50 dias de recurso com treinamentos, feriados, etc Desta maneira a velocidade estimada para o próximo Sprint é de 20 pontos de estória. Isso significa que o time deve adicionar estórias para o Sprint até o mesmo chegar perto de 20 pontos. 4.4 Planning Poker O Planning Poker é uma forma de fomentar a interação entre a equipe de uma maneira divertida, servindo também para o Scrum Master e o Product Owner terem uma idéia dos perfis de estimativa de cada um dos membros. Sempre existirá aquele que é mais ousado e acha possível fazer tudo muito fácil, assim como, no outro extremo, terá aquele que sempre vai encontrar pontos que devem ser melhor esclarecidos em cada história. Na prática, o Planning Poker funciona como um nivelador para a equipe, para aumentar o entrosamento e para ensinar o Scrum. Depois de um ou dos exercícios, o Planning Poker acaba sendo aposentado. Os números menores refletem muito bem algo realmente possível de realizar. Os números maiores não são relatos muito claros, difíceis de estimar; Estes

17 devem ser transformados em relatos menores para facilitar a realização; Números maiores que 13 levantam questões do tipo: Isso é mesmo um caso?, Isso não poderia ser quebrado em casos menores?, etc. Cada membro da equipe possui um conjunto de cartas; O Product Owner, junto da equipe, seleciona os relatos que mais se aproxima de uma pontuação 2; Essa pontuação no momento é apenas 2, não significa 2 dias, nem duas horas. Story Points é uma forma eficiente de estimar, mesmo parecendo ser algo muito abstrato inicialmente. Essa abstração se vai, a partir do momento em que o primeiro sprint é executado. No final do sprint, essa pontuação virou referência, e já pode ser considerada num gráfico pontos x tempo. A questão aqui é definir um relato de referência, esta será referência para os demais; Todos devem pensar e selecionar uma carta e TODOS devem prestar atenção; Caso haja divergências de opiniões, a pessoa com a menor carta e a pessoa com a maior carta deve explicar o porque da seleção; Havendo consenso, o relato do caso fica estimado, caso contrário a carta escolhida pela maioria se torna real; O Scrum Master é essencial, pois ele deverá evitar brincadeiras ou discussões durante esse momento. A estimativa é uma das principais atividades em Scrum e outros processos ágeis. Isto significa que o processo de avaliação do tamanho de uma história, ou seja, quanto tempo vai demorar, como é muito trabalho para implementar, como é caro, ou no entanto você deseja colocá-lo.em Scrum, a estimativa é uma equipe atividade. Para cada história, toda a equipe participa no processo de estimação. Planejamento poker (algumas vezes chamado Scrum poker) é uma simples mas poderosa ferramenta que permite estimar-time mais rápido, mais preciso e, mais divertido. O termo foi cunhado por James Grenning e popularizado por Mike Cohn. Estimativa sem planejamento poker Aqui está um típico problema com equipes que fazem estimativas. Vamos dizer que estamos em um sprint e planejamento reunião do Produto Proprietário diz:

18 Portanto, a equipe começa a pensar quanto tempo a história vai tomar (em dias-homem ideal, neste caso) Um analista da equipe acredita que sabe exatamente o que precisa ser feito, por isso ele acha que isso vai levar 3 dias. Analistas B e C são mais pessimistas. Analistas D e E são slacking, ou seja, não estão com foco na reunião. Isto torna o B e C confuso. Eles começam a duvidar das suas próprias estimativas. E acorda e não sabe realmente o que está sendo estimado. D está ainda cochilando. O Product Owner pede para o resto da equipe dar as estimativas.

19 Como você pode ver, o resto da equipe tem sido fortemente influenciado por um, só porque o mesmo falou primeiro. Isto é muito arriscado! B e C pensaram que iria demorar muito mais tempo do que 3 dias, as suas dúvidas devem ser sanadas! Estimando com planejamento Poker Agora imagine que cada membro da equipe é a realização de um baralho de cartas, contendo os seguintes cartões: Vamos refazer o cálculo. O Product Owner diz:

20 Mais uma vez, a equipe começa a pensar quanto tempo a história vai tomar. Desta vez ninguém se arrisca a falar sem pensar. Em vez disso, todos têm de apresentar um cartão de face para baixo, contendo sua estimativa. Todo mundo tem de apresentar um cartão, por isso, D e E despertam. D admite que ele estava dormindo. Todas as cartas são viradas simultaneamente, revelando todas as estimativas. Divergência em especial em A e C. Há a necessidade de discutir essa história e por que as suas estimativas são tão diferentes. Após alguma discussão, A percebe que ele se esqueceu de algumas tarefas importantes que devem ser incluídas na história. Já, C percebeu que incluiu tarefas a mais. Após o debate (3 minutos no total) é feita uma outra rodada, até que as estimativas tenham a mesma história.

21 Convergência Eles concordam que uma estimativa de 5 deve estar perto o suficiente. Próxima história.

22 5 PLANEJAMENTO 5.1 Níveis de planejamento O processo SCRUM possui 5 níveis de planejamento: Nível 1 Visão do Produto: Neste nível são definidas todas as características do produto que se quer desenvolver. Nível 2 Roadmap do Produto: Neste nível o produto é dividido em releases para que sejam desenvolvidos pela equipe. Nível 3 Release: Neste nível é realizado um plano de desenvolvimento para cada release, um release pode ser desenvolvido usando mais de uma sprint (iteração).

23 Nível 4 Sprint (Iteração): Neste nível é definida todas as tarefas que serão realizadas em uma sprint (iteração). Nível 5 Daily (Diário): Neste nivel é definido como será o trabalho em cada dia de execução do sprint, bem como relatar o que deu certo e errado nas tarefas. 5.2 Product Backlog É uma lista que formaliza todos os requisitos de um produto priorizados que se pretende fazer ou que se precisa construir no projeto. Cada item desta lista representa um requisito funcional, ou requisito não funcional, ou questão de tecnologia / infra-estrutura. Os itens com maior prioridade nesta lista são os requisitos mais desejados do produto. Num projeto real, o Product Backlog nunca é finalizado. Existe uma natural evolução e maturidade dos requisitos nesta lista. Requisitos novos podem aparecer, requisitos existentes podem perder prioridade e podem até serem eliminados. Apesar de se permitir que áreas usuárias manifestem seus pedidos nesta lista, somente o Product Owner pode priorizar o Backlog. 5.3 Sprint São iterações realizadas, uma após a outra, para entregar gradativamente as estórias que compõem um produto. É considerado que o tempo ideal de um sprint é de duas semanas. Criação do Product Increment: A finalização das estórias definidas para um determinado Sprint marca a realização de um Product Increment. Game Designers, por exemplo, definem detalhes de jogabilidade sobre as estórias e, programadores criam testes para as estórias e então, fazem o código necessário para que consiga passar pelos casos de teste definidos para aquela estória. Similarmente, outros membros da equipe trabalham de maneira colaborativa de forma a realizar todas as estórias definidas para aquele Sprint. Um músico trabalha em parceria com programadores, game designers com artistas gráficos, etc. Além disso, diariamente, os membros da equipe devem atualizar a estimativa de esforço necessário para finalizar cada estória.