Your SlideShare is downloading. ×
Metodologias Ágeis de Desenvolvimento de Software
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Metodologias Ágeis de Desenvolvimento de Software

2,441
views

Published on

Apresentação sobre metodologias ágeis de desenvolvimento de software, tratando de XP e SCRUM.

Apresentação sobre metodologias ágeis de desenvolvimento de software, tratando de XP e SCRUM.

Published in: Technology, Business

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,441
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
170
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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
  • 7. ... CAOS
    10/12/2009
    Metodologias Ágeis de Desenvolvimento de Software
    7
  • 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
  • 15. XP – EXtremeProgramming12 Práticas
    Planejamento
    Entregas Frequêntes
    Metáfora
    Projeto Simples
    Testes
    Programação em pares
    10/12/2009
    Metodologias Ágeis de Desenvolvimento de Software
    15
    • Refatorar
    • 16. Propriedade Coletiva
    • 17. Integração Contínua
    • 18. 40 horas semanais de trabalho
    • 19. Cliente presente
    • 20. Padronização do Código
  • XP – EXtremeProgrammingJogo de Planejamento
    Por quê?
    Gasta-se tempo fazendo coisas inúteis que servem para aumentar o escopo, o tempo e o custo do projeto
    Como?
    Triando o que é essencial, importante e desejável
    Assumindo a regra “80-20”
    Entregando 80% dos benefícios com apenas 20% dos requisitos
    10/12/2009
    Metodologias Ágeis de Desenvolvimento de Software
    16
  • 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
  • 42. SCRUMExemplo de BurndownChart
    10/12/2009
    Metodologias Ágeis de Desenvolvimento de Software
    38
  • 43. SCRUMExemplo de BurndownChart
    10/12/2009
    Metodologias Ágeis de Desenvolvimento de Software
    39
  • 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
  • 46. Dúvidas?
    10/12/2009
    Metodologias Ágeis de Desenvolvimento de Software
    42
  • 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