Desenvolvimento ágil: eXtreme Programming vs SCRUM Tiago Rodrigues de Mello CCO-230 – ENGENHARIA...
Transcript of Desenvolvimento ágil: eXtreme Programming vs SCRUM Tiago Rodrigues de Mello CCO-230 – ENGENHARIA...
Desenvolvimento ágil:
eXtreme Programming vs SCRUM
Tiago Rodrigues de MelloCCO-230 – ENGENHARIA DE SOFTWARE / 2010
Agenda
Desenvolvimento Ágil de Software eXtreme Programming SCRUM Comparações Conclusão
Manifesto Ágil
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.
eXtreme Programming - XP
Método de desenvolvimento de software; Conjunto de valores, princípios e práticas; Ciclo de desenvolvimento curtos e releases
frequentes; Permite respostas rápidas a mudanças de
requisitos em qualquer etapa do desenvolvimento; Enfatiza o trabalho em equipe que se auto-
organiza em que todos são iguais num trabalho colaborativo.
XP - Valores
Simplicidade; Comunicação; Feedbacks; Coragem; Respeito.
XP: Simplicidade
Não tente prever o futuro! Comece por soluções simples e que funcionem. Melhorias são adicionadas depois.
XP: Comunicação
Todos são parte do time, inclusive o cliente! Contato diário e face a face. Pair programming.
XP: Feedbacks
Testes: Unitários; Integração.
Cliente: Testes funcionais.
Membros do time: Quando um novo requisito chega o time estima
quanto tempo será necessário.
XP: Coragem
Não deixe para amanha o que pode ser feito agora!
Não ficou bom?! Refaça o quanto necessário! Se não precisa, jogue fora!
XP: Respeito
Ninguém modifica o código no repositório sem testar antes;
Todos buscam a melhor solução, o melhor design para poupar retrabalhos futuros;
Todos os valores anteriores são respeitados; Pessoas são valorizadas e ninguém é ignorado.
XP - Práticas
Process – On-site customer (cliente no local), testing (testes), small releases (versões pequenas), planning game (planejamento do jogo)
Programming – Simple design (projeto simples), testing (testes), refactoring(reconstrução), coding standars(código padrão) ;
Team – Collective ownership (código coletivo), continuous integration (integração continua), metaphor (metáfora), pair programming (programação em par), small releases (versões pequenas) ;
SCRUM
Framework iterativo e incremental para desenvolvimento ágil de sofware;
Não há prática de engenharia pré-definida; Conjunto de práticas e papéis predefinidos; Sprints (iterações);
SCRUM
SCRUM: Planejamento, Product Backlog
Product Backlog é criado; Data de entrega do produto final é definida; Componentes do sistema são priorizados; Custo e riscos são estimados; Cliente participa.
SCRUM: Sprints
Ciclo iterativo de desenvolvimento; 1 a 4 semanas de duração (o time define); Um subconjunto do Product Backlog é
selecionado para fazer parte do Sprint atual (Sprint Backlog) ;
Durante o sprint, nenhuma funcionalidade deve ser adicionada; no entanto as existentes no Sprint Backlog podem ser atualizadas ou alteradas.
SCRUM: Papéis
Dono do produto (Product Owner); ScrumMaster; Equipe.
Dono do Produto
Define as funcionalidades do produto e as prioriza;
Responsável pela visão de negócios do projeto; Aceita ou rejeita resultados dos trabalhos; Cliente + Analista de Requisitos.
ScrumMaster
Facilitador: responsável por remover obstáculos do time e assegurar que as práticas estão sendo executadas corretamente;
Escudo contra interferências externas.
Time
Reponsável pela entrega de soluções; Desenvolvedores de software, analista de testes,
designers entre outros; Trabalha de forma auto-gerenciada.
Reuniões
Sprint Planning 1 → Product Backlog (Todos participam);
Sprint Planning 2 (Cliente não participa) → Sprint Backlog;
Daily Scrum (Time + ScrumMaster) Sprint Review/Reflection (30 dias).
Daily Scrum
Reunião curta (15 min); ScrumMaster é o responsável e pergunta a cada
membro do time: O que fez ontem? O que fará hoje? Existe algum obstáculo?
XP vs SCRUM
Semelhanças: Ambos não prevêem o futuro (não definem todos
os requisitos já de início); Ambos produzem software que funcionam a cada
iteração; Comunicação é essencial (Reuniões diárias).
XP vs SCRUM
Diferenças: SCRUM tem papéis pré-definidos; XP a validação do software é feita a todo instante
(Testes); SCRUM somente ao final de cada Sprint; XP adota a programação em par como prática
fundamental; XP é um método e SCRUM é um
FRAMEWORK?!
Conclusão
Ambas abordagens procuram resolver limitações dos métodos tradicionais de desenvolvimento ;
Reduzir custos com mudanças de requisitos ao longo do desenvolvimento;
Reduzir tempo de entrega do produto final ao cliente.
Embora SCRUM seja mais abrangente; ambas dependem de uma avaliação do contexto para serem utilizadas.
Referências
Extreme Programming Explained: Embrace Change, Kent Beck;
http://www.extremeprogramming.org/; Wikipedia; http://improveit.com.br.
Dúvidas e discussões