• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Metodologias Ágeis de Desenvolvimento de Software
 

Metodologias Ágeis de Desenvolvimento de Software

on

  • 4,842 views

Apresentação realizada na Mostra ASPER 2009.

Apresentação realizada na Mostra ASPER 2009.

Statistics

Views

Total Views
4,842
Views on SlideShare
4,766
Embed Views
76

Actions

Likes
1
Downloads
230
Comments
1

2 Embeds 76

http://scrumpb.org 67
http://www.slideshare.net 9

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

11 of 1 previous next

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Metodologias Ágeis de Desenvolvimento de Software Metodologias Ágeis de Desenvolvimento de Software Presentation Transcript

    • Metodologias Ágeis de Desenvolvimento de Software
      Por Emerson Henrique, Luciano Almeida e Márcio Lins
    • 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
    • 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
    • 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
    • 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
    • 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
    • ... CAOS
      10/12/2009
      Metodologias Ágeis de Desenvolvimento de Software
      7
    • 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
    • ... 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
    • ... 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
    • 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
    • Metodologias
      XP – eXtreme Programming
      SCRUM
      LEAN
      CRYSTAL
      FDD
      ...
      10/12/2009
      Metodologias Ágeis de Desenvolvimento de Software
      12
    • 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
    • XP – EXtremeProgramming
      Valores:
      Comunicação
      Simplicidade
      Feedback
      Coragem
      Abordagem Incremental
      10/12/2009
      Metodologias Ágeis de Desenvolvimento de Software
      14
    • 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
      • Propriedade Coletiva
      • Integração Contínua
      • 40 horas semanais de trabalho
      • Cliente presente
      • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • SCRUM
      Quais são os papeis envolvidos?
      ProductOwner (PO)
      ScrumTeam
      ScrumMaster
      10/12/2009
      Metodologias Ágeis de Desenvolvimento de Software
      32
    • 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
    • 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
    • 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
    • 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
    • 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
    • SCRUMExemplo de BurndownChart
      10/12/2009
      Metodologias Ágeis de Desenvolvimento de Software
      38
    • SCRUMExemplo de BurndownChart
      10/12/2009
      Metodologias Ágeis de Desenvolvimento de Software
      39
    • 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
    • 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
    • Dúvidas?
      10/12/2009
      Metodologias Ágeis de Desenvolvimento de Software
      42
    • 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
    • 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