Metodologias Ágeis de Desenvolvimento de Software<br />Por Emerson Henrique, Luciano Almeida e Márcio Lins<br />
Quem somos?<br />Emerson Henrique<br />Aluno concluinte do curso de Ciência da Computação<br />Analista Desenvolvedor da A...
Sumário<br />Introdução<br />Caos<br />AgileManifesto.org<br />Metodologias Ágeis<br />XP<br />SCRUM<br />SCRUM + XP<br />...
Introdução<br />Projetos de Construção Civil<br />São geralmente construídos como planejados<br />Clientes acompanham a ev...
Introdução<br />Algumas empresas adotam metodologias de desenvolvimento e práticas extremamente formais e controladoras, p...
Introdução<br />Além disso muitas empresas vivem em uma situação de total descontrole e falta de qualidade, e não são nada...
... CAOS<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />7<br />
CAOS<br />Situação perturbadora, desmotivante;<br />Utilizando processo definido ou não;<br />Altos riscos nos projetos;<b...
... Agilemanifesto.org<br />O que é isso?<br />Um manifesto que criticava algumas mitos/práticas da engenharia de software...
... Agilemanifesto.org<br />Indivíduos e interação entre eles mais que processos e ferramentas<br />Software em funcioname...
Agilemanifesto.org<br />12 princípios por traz do Manifesto Ágil<br />Satisfazer o cliente<br />As mudanças são bem vindas...
Metodologias<br />XP – eXtreme Programming<br />SCRUM<br />LEAN<br />CRYSTAL<br />FDD<br />...<br />10/12/2009<br />Metodo...
XP – EXtremeProgramming<br />Começou a engatinhar 1987 e a se estruturar em 1996 com o projeto C3 da Chrysler<br />Criado ...
XP – EXtremeProgramming<br />Valores:<br />Comunicação<br />Simplicidade<br />Feedback<br />Coragem<br />Abordagem Increme...
XP – EXtremeProgramming12 Práticas<br />Planejamento<br />Entregas Frequêntes<br />Metáfora<br />Projeto Simples<br />Test...
Propriedade Coletiva
Integração Contínua
40 horas semanais de trabalho
Cliente presente
Padronização do Código</li></li></ul><li>XP – EXtremeProgrammingJogo de Planejamento<br />Por quê?<br />Gasta-se tempo faz...
XP – EXtremeProgrammingJogo de Planejamento<br />Como?<br />Definição de histórias<br />Valor de negócio das histórias<br ...
XP – EXtremeProgrammingEntregas Frequêntes<br />Consiste em colocar o sistema em produção com frequência, em prazos curtos...
XP – EXtremeProgrammingMetáfora<br />Utilizam as metáforas para inserir a estrutura conceitual do negócio<br />Objetivos:<...
XP – EXtremeProgrammingProjeto Simples<br />Projete um software do jeito que o usuário espera:<br />Primeiro que funcione<...
XP – EXtremeProgrammingDesenvolvimento Orientado a Testes<br />Partindo do pressuposto que achar as causas do bug é mais d...
XP – EXtremeProgrammingDesenvolvimento Orientado a Testes<br />“O XP se concentra sobretudo em dois tipos de testes: o  te...
XP – EXtremeProgrammingProgramação em Par<br />Dois programadores continuamente  colaborando no mesmo projeto, algoritmo, ...
XP – EXtremeProgrammingRefatoração<br />A “refatoração é o processo de fazer mudanças em um código existente e funcional s...
XP – EXtremeProgrammingPropriedade Coletiva<br />O desenvolvedor tem acesso a todo o código<br />O código é de todos os de...
XP – EXtremeProgrammingIntegração Contínua<br />Os pares trabalham de forma isolada, mas integram o que produzem diversas ...
XP – EXtremeProgrammingTrabalho em 40 horas semanais<br />Hora extra é exceção<br />Em atividade de 40 horas semanais já o...
XP – EXtremeProgrammingCliente presente<br />“O melhor e mais participativo cliente não será capaz de obter o software des...
XP – EXtremeProgrammingPadronização de código<br />É importante definir um padrão de codificação no inicio do projeto<br /...
SCRUM<br />O nome é originado da organização de uma equipe de Rugby para o reinicio da partida.<br />Formalizado e implant...
SCRUM<br />O que é de fato?<br />É um framework de desenvolvimento de produto, sobre um ciclo de vida interativo e increme...
SCRUM<br />Quais são os papeis envolvidos?<br />ProductOwner (PO)<br />ScrumTeam<br />ScrumMaster<br />10/12/2009<br />Met...
SCRUMPapel do ProductOwner<br />Conhece o produto e as necessidades do cliente<br />Representa o cliente<br />Define os re...
SCRUMPapel do ScrumMaster<br />É o líder servidor<br />Responsável por remover os impedimentos do time<br />Por remover in...
SCRUMPapel do ScrumTeam<br />Fazem parte do Scrumteam todos os desenvolvedores, arquitetos, analistas, ... que participam ...
SCRUMCerimônias<br />São elas:<br />Planejamentos de Sprint<br />Revisões de Sprint<br />Retrospectivas de Sprint<br />Reu...
SCRUMArtefatos<br />ProductBacklog<br />Lista priorizada de requisitos (Lista mutável)<br />SprintBacklog<br />Itens que s...
SCRUMExemplo de BurndownChart<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />38<br />
SCRUMExemplo de BurndownChart<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />39<br />
SCRUM + XP<br />Scrum não define técnicas de Engenharia de Software<br />Foi construído inicialmente para o desenvolviment...
Próximos SlideShares
Carregando em…5
×

Metodologias Ágeis de Desenvolvimento de Software

4.318 visualizações

Publicada em

Apresentação realizada na Mostra ASPER 2009.

1 comentário
1 gostou
Estatísticas
Notas
Sem downloads
Visualizações
Visualizações totais
4.318
No SlideShare
0
A partir de incorporações
0
Número de incorporações
78
Ações
Compartilhamentos
0
Downloads
243
Comentários
1
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Metodologias Ágeis de Desenvolvimento de Software

  1. 1. Metodologias Ágeis de Desenvolvimento de Software<br />Por Emerson Henrique, Luciano Almeida e Márcio Lins<br />
  2. 2. Quem somos?<br />Emerson Henrique<br />Aluno concluinte do curso de Ciência da Computação<br />Analista Desenvolvedor da Ativasystems<br />Luciano Almeida<br />Graduado em Gestão de Sistemas de Informação<br />Possui MBA em Novas Tecnologias<br />Cursa Especialização em Gerenciamento de Projetos<br />Professor, Consultor, Agilista e Owner do SCRUM Paraíba<br />Márcio Lins<br />Analista Programador da Construtora Alliance<br />Trabalha com AdvPL (Protheus)<br />E cursa Sistemas para Internet<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />2<br />
  3. 3. Sumário<br />Introdução<br />Caos<br />AgileManifesto.org<br />Metodologias Ágeis<br />XP<br />SCRUM<br />SCRUM + XP<br />Conclusão<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />3<br />
  4. 4. Introdução<br />Projetos de Construção Civil<br />São geralmente construídos como planejados<br />Clientes acompanham a evolução<br />Se algo dá errado, faz-se um relatório<br />Projetos de Software<br />Precisam suportar mudanças nas regras de negócio<br />Clientes só vêem algo funcionando perto do fim ou em prazos longos<br />Se algo dá errado, se esquece ou mascara o erro<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />4<br />
  5. 5. Introdução<br />Algumas empresas adotam metodologias de desenvolvimento e práticas extremamente formais e controladoras, porém ainda não conseguem obter qualidade.<br />Por quê?<br />Pouca preocupação com as pessoas e a interação entre elas<br />Pouca comunicação com o cliente<br />Custos muito altos<br />Excesso de formalismo<br />Qual a consequência disso?<br />Alta rotatividade<br />No fim o software não serve mais<br />Projeto cancelado<br />Prazos estourados<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />5<br />
  6. 6. Introdução<br />Além disso muitas empresas vivem em uma situação de total descontrole e falta de qualidade, e não são nada ágeis, vivem o ...<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />6<br />
  7. 7. ... CAOS<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />7<br />
  8. 8. CAOS<br />Situação perturbadora, desmotivante;<br />Utilizando processo definido ou não;<br />Altos riscos nos projetos;<br />Custos muito altos;<br />Projetos sem boa qualidade interna e externa.<br />Mas esse problema não é novo, em 2001, 17 caras lançaram o ...<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />8<br />
  9. 9. ... Agilemanifesto.org<br />O que é isso?<br />Um manifesto que criticava algumas mitos/práticas da engenharia de software e da gerência de projetos adotadas por abordagens tradicionalistas<br />Foi assinado por 17 pessoas envolvidas com desenvolvimento de software, dentre eles consultores e programadores experientes<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />9<br />Robert C. Martin<br />Steve Mellor<br />Ken Schwaber<br />Jeff Sutherland<br />Dave Thomas<br />James Grenning<br />Jim Highsmith<br />Andrew Hunt<br />Ron Jeffries<br />Jon Kern<br />Brian Marick<br />Kent Beck<br />Mike Beedle<br />Arie van Bennekum<br />AlistairCockburn<br />WardCunningham<br />Martin Fowler<br />
  10. 10. ... Agilemanifesto.org<br />Indivíduos e interação entre eles mais que processos e ferramentas<br />Software em funcionamento mais que documentação abrangente<br />Colaboração com o cliente mais que negociação de contratos<br />Responder a mudanças mais que seguir um plano<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />10<br />
  11. 11. Agilemanifesto.org<br />12 princípios por traz do Manifesto Ágil<br />Satisfazer o cliente<br />As mudanças são bem vindas<br />Entrega periódica de funcionalidade<br />Todos juntos<br />Indivíduos Motivados<br />Conversas face a face<br />Medida primária é o software trabalhado<br />Manter um ritmo constante sempre<br />Atenção contínua, excelência técnica e bom projeto<br />Simplicidade<br />Equipes auto-organizáveis ou auto-gerenciáveis<br />Reflexão de melhoria regularmente<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />11<br />
  12. 12. Metodologias<br />XP – eXtreme Programming<br />SCRUM<br />LEAN<br />CRYSTAL<br />FDD<br />...<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />12<br />
  13. 13. XP – EXtremeProgramming<br />Começou a engatinhar 1987 e a se estruturar em 1996 com o projeto C3 da Chrysler<br />Criado pro Kent Beck, que utilizou pela primeira vez em conjunto as práticas que formam a estrutura do Extreme Programming nesse projeto da Chrysler<br />“Jeito leve, eficiente, de baixo risco, flexível, previsível, científico e divertido de desenvolver software” – Kent Beck<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />13<br />
  14. 14. XP – EXtremeProgramming<br />Valores:<br />Comunicação<br />Simplicidade<br />Feedback<br />Coragem<br />Abordagem Incremental<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />14<br />
  15. 15. XP – EXtremeProgramming12 Práticas<br />Planejamento<br />Entregas Frequêntes<br />Metáfora<br />Projeto Simples<br />Testes<br />Programação em pares<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />15<br /><ul><li>Refatorar
  16. 16. Propriedade Coletiva
  17. 17. Integração Contínua
  18. 18. 40 horas semanais de trabalho
  19. 19. Cliente presente
  20. 20. Padronização do Código</li></li></ul><li>XP – EXtremeProgrammingJogo de Planejamento<br />Por quê?<br />Gasta-se tempo fazendo coisas inúteis que servem para aumentar o escopo, o tempo e o custo do projeto<br />Como?<br />Triando o que é essencial, importante e desejável<br />Assumindo a regra “80-20”<br />Entregando 80% dos benefícios com apenas 20% dos requisitos<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />16<br />
  21. 21. XP – EXtremeProgrammingJogo de Planejamento<br />Como?<br />Definição de histórias<br />Valor de negócio das histórias<br />Definição de releases<br />Estimativa com base nas experiências anteriores<br />Observação de riscos<br />Medições de progresso<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />17<br />
  22. 22. XP – EXtremeProgrammingEntregas Frequêntes<br />Consiste em colocar o sistema em produção com frequência, em prazos curtos, normalmente de dois ou três meses.<br />Objetivos:<br />Feedbacks rápidos do cliente e para o cliente<br />Aceitação de mudanças rápidas e sem burocracia<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />18<br />
  23. 23. XP – EXtremeProgrammingMetáfora<br />Utilizam as metáforas para inserir a estrutura conceitual do negócio<br />Objetivos:<br />Facilidade de entendimento e compreensão<br />Envolvidos compreendem o que se quer, mesmo não dominando a linguagem do negócio<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />19<br />
  24. 24. XP – EXtremeProgrammingProjeto Simples<br />Projete um software do jeito que o usuário espera:<br />Primeiro que funcione<br />E funcione corretamente<br />Que seja fácil de utilizar (modelo mental coerente)<br />E que possa evoluir com o tempo<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />20<br />
  25. 25. XP – EXtremeProgrammingDesenvolvimento Orientado a Testes<br />Partindo do pressuposto que achar as causas do bug é mais difícil e demorado que corrigir<br />Então vamos evitar o problema<br />Evitar problema é mais inteligente que resolver<br />TDD (TestDrivenDevelopment) consiste em escrever um mecanismo de teste automatizado antes de codificar cada história e cada método do sistema (BECK, 2000)<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />21<br />
  26. 26. XP – EXtremeProgrammingDesenvolvimento Orientado a Testes<br />“O XP se concentra sobretudo em dois tipos de testes: o teste de unidade e o teste de aceitação. <br />O primeiro tenta assegurar que cada componente do sistema funcione corretamente. <br />O segundo procura testar a interação entre os componentes, as quais dão origem às funcionalidades.”<br />[BECK, 2000 apud TELLES, 2005]<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />22<br />
  27. 27. XP – EXtremeProgrammingProgramação em Par<br />Dois programadores continuamente colaborando no mesmo projeto, algoritmo, código e teste.<br />Diminui erros de código, permite a refatoração instantânea, aprendizado contínuo, etc.<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />23<br />
  28. 28. XP – EXtremeProgrammingRefatoração<br />A “refatoração é o processo de fazer mudanças em um código existente e funcional sem alterar seu comportamento externo. [...]” [ASTELS, 2003 apud TELLES,2005<br />Objetivos:<br />Enxugar o código (Tornar simples e claro)<br />Melhor a eficiência do código<br />Minimizar chances de introduzir bugs<br />Garantias<br />Melhoria interna contínua<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />24<br />
  29. 29. XP – EXtremeProgrammingPropriedade Coletiva<br />O desenvolvedor tem acesso a todo o código<br />O código é de todos os desenvolvedores e qualquer um pode melhorar até aquilo que não fez<br />As alterações podem causar erros. <br />Por segurança, é indicado adotar essa prática apenas quando se tem testes de regressão automatizados<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />25<br />
  30. 30. XP – EXtremeProgrammingIntegração Contínua<br />Os pares trabalham de forma isolada, mas integram o que produzem diversas vezes ao dia.<br />Objetivos:<br />Identificar conflitos cedo, para evitar futuras falhas de integração<br />Consequência:<br />Identificação quase que instantânea de conflito, já que se produz pouco código em poucas horas<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />26<br />
  31. 31. XP – EXtremeProgrammingTrabalho em 40 horas semanais<br />Hora extra é exceção<br />Em atividade de 40 horas semanais já ocorre a diminuição do fator foco<br />Pressões não aumentam o fator foco, pelo contrário diminuem<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />27<br />
  32. 32. XP – EXtremeProgrammingCliente presente<br />“O melhor e mais participativo cliente não será capaz de obter o software desejado se a equipe de desenvolvimento não implementar corretamente o que é pedido e a melhor equipe não será capaz de produzir o software certo se o cliente não for capaz de especificá-lo adequadamente e prover feedback ao longo do projeto.” [TELLES, 2005]<br />Junte-os e terá:<br />Feedbacks mais rápidos<br />Mudanças rápidas sem burocracia<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />28<br />
  33. 33. XP – EXtremeProgrammingPadronização de código<br />É importante definir um padrão de codificação no inicio do projeto<br />Objetivo:<br />Familiarizar todos com o como o mesmo padrão de código (código legível a todos)<br />Simplificar a comunicação <br />E tornar o código coletivo<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />29<br />
  34. 34. SCRUM<br />O nome é originado da organização de uma equipe de Rugby para o reinicio da partida.<br />Formalizado e implantado no desenvolvimento de software em 1995 por Ken Shwaber<br />A função primária do Scrum é ser utilizado para o gerenciamento de projetos de desenvolvimento de software<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />30<br />
  35. 35. SCRUM<br />O que é de fato?<br />É um framework de desenvolvimento de produto, sobre um ciclo de vida interativo e incremental<br />Objetivos:<br />Acompanhamento contínuo<br />Iterações curtas<br />Retorno mais rápido<br />SCRUM NÃO É A BALA DE PRATA! “Não garante sozinho o sucesso de um projeto”<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />31<br />
  36. 36. SCRUM<br />Quais são os papeis envolvidos?<br />ProductOwner (PO)<br />ScrumTeam<br />ScrumMaster<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />32<br />
  37. 37. SCRUMPapel do ProductOwner<br />Conhece o produto e as necessidades do cliente<br />Representa o cliente<br />Define os requisitos do produto, bem como sua importância e urgência<br />É responsável pelo retorno do investimento<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />33<br />
  38. 38. SCRUMPapel do ScrumMaster<br />É o líder servidor<br />Responsável por remover os impedimentos do time<br />Por remover interferências externas<br />E por garantir o uso correto do Scrum<br />Ensina Scrum aos envolvidos<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />34<br />
  39. 39. SCRUMPapel do ScrumTeam<br />Fazem parte do Scrumteam todos os desenvolvedores, arquitetos, analistas, ... que participam do projeto<br />O time é auto-gerenciável e multifuncional ou multidisciplinar (pessoas com diferentes aptidões)<br />Decidem junto com o PO o que entra no Sprint<br />E são responsáveis pelas estimativas de esforço<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />35<br />
  40. 40. SCRUMCerimônias<br />São elas:<br />Planejamentos de Sprint<br />Revisões de Sprint<br />Retrospectivas de Sprint<br />Reuniões diárias<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />36<br />
  41. 41. SCRUMArtefatos<br />ProductBacklog<br />Lista priorizada de requisitos (Lista mutável)<br />SprintBacklog<br />Itens que serão feitos na Sprint (Lista não mutável)<br />BurndownCharts<br />O trabalho acumulado ou realizado (atualizados diariamente durante um Sprint)<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />37<br />
  42. 42. SCRUMExemplo de BurndownChart<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />38<br />
  43. 43. SCRUMExemplo de BurndownChart<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />39<br />
  44. 44. SCRUM + XP<br />Scrum não define técnicas de Engenharia de Software<br />Foi construído inicialmente para o desenvolvimento de software<br />Porém, é um framework para gerenciamento do desenvolvimento de um produto<br />Por isso uma parceria de sucesso no desenvolvimento de software é:<br />SCRUM + XP (Algumas práticas)<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />40<br />
  45. 45. Conclusão<br />SCRUM é uma excelente alternativa para empresas que estão no CAOS<br />É interessante para equipes pequenas, onde a comunicação possa funcionar de forma tranquila<br />XP define boas práticas que contribuem para uma boa comunicação e para a prevenção de problemas<br />Ambas se preocupam e melhoria contínua da qualidade, através de avaliação contínua do trabalho e do processo<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />41<br />
  46. 46. Dúvidas?<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />42<br />
  47. 47. REFERÊNCIAS<br />BECK, Kent. Extreme Programming explained: embrace change. 1. ed. Reading, MA: Addison-Wesley, 2000. 190 p. <br />TELLES, ViníciusMagalhães. UM ESTUDO DE CASO DA ADOÇÃO DAS PRÁTICA E VALORES DO EXTREME PROGRAMMING. 2005.<br />KINIBERG, Herink. Scrum e XP direto das Trincheiras. 2008. Disponível em: &lt;http://www.infoq.com/br/minibooks/scrum-xp-from-the-trenches&gt;<br />&lt;http://improveit.com.br/scrum&gt; Acesso em: 21/10/2009<br />&lt;http://www.adaptworks.com.br/scrum/&gt; Acesso em: 21/10/2009<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />43<br />
  48. 48. Contatos<br />Emerson Henrique<br />emerson.hss@gmail.com<br />http://emersonhss.wordpress.com<br />http://twitter.com/emersonhss<br />Luciano Almeida<br />lucianohgalmeida@gmail.com<br />http://twitter.com/lucianohenrique<br />Márcio Lins<br />slackware.20@gmail.com<br />http://twitter.com/marciolins<br />SCRUM PARAÍBA<br />http://scrumpb.org/<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />44<br />

×