Slides

Metodologias Ágeis de Desenvolvimento de Software

Description
1. Metodologias Ágeis de Desenvolvimento de Software<br />Por Emerson Henrique, Luciano Almeida e Márcio Lins<br /> 2. Quem somos?<br />Emerson…
Categories
Published
of 44
All materials on our website are shared by users. If you have any questions about copyright issues, please report us to resolve them. We are always happy to assist you.
Related Documents
Share
Transcript
  • 1. Metodologias Ágeis de Desenvolvimento de Software<br />Por Emerson Henrique, Luciano Almeida e Márcio Lins<br />
  • 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. 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. 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. 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. 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. ... CAOS<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />7<br />
  • 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. ... 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. ... 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. 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. 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. 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. 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. 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. Propriedade Coletiva
  • 17. Integração Contínua
  • 18. 40 horas semanais de trabalho
  • 19. Cliente presente
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. SCRUMExemplo de BurndownChart<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />38<br />
  • 43. SCRUMExemplo de BurndownChart<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />39<br />
  • 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. 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. Dúvidas?<br />10/12/2009<br />Metodologias Ágeis de Desenvolvimento de Software<br />42<br />
  • 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. 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 />
  • Search
    Related Search
    We Need Your Support
    Thank you for visiting our website and your interest in our free products and services. We are nonprofit website to share and download documents. To the running of this website, we need your help to support us.

    Thanks to everyone for your continued support.

    No, Thanks