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