Métodos ágeis de
desenvolvimento de software


        Élvio Viçosa
     Jerônimo Madruga
        Mauro Kade
Súmario
•   Introdução
•   Scrum
•   FDD
•   XP
Introdução
• Sobre os métodos tradicionais
   – São baseados na produção de uma grande quantidade
     de documentação
   – São considerados métodos pesados
• Sobre os métodos ágeis
   – São o contraponto dos métodos tradicionais, sendo
     considerados métodos leves
   – As pesquisas sobre eles ainda são relativamente novas
   – Nem todas as práticas relacionadas aos métodos ágeis
     são novas
Introdução
• O manifesto ágil:
   – Satisfação do cliente através de entregas mais cedo e
     contínuas, utilizando ciclos de iteração menores
   – Aceitação e acomodação de requistos em qualquer
     tempo do desenvolvimento
   – Desenvolvedores e usuários trabalhando juntos
   – Times motivados e em ambientes apropriados
   – Minimização de documentação e maximização de troca
     de informação face-a-face
   – Encorajamento de atitudes reflexivas e contínuo
     aprendizado
Origem das idéias dos métodos agéis
Métodos ágeis
• Scrum
• Feature Driven Development (FDD)
• Extreme Programming (XP)
Scrum
• O termo Scrum é uma metáfora para uma situação
  em um jogo de Rugby. Esta situação envolve um
  grupo denso de pessoas, lutando pela posse da
  bola.
• O Scrum não é um método completo. Não requer
  que seja utilizada nenhuma prática ou técnica para
  o desenvolvimento de software
• Utiliza pequenos grupos
• É um método para gerenciamento de um projeto
  de software
Scrum
• Processos definidos X processos empíricos :
   – Um processo definido usa uma base de conhecimento
     sobre o processo: são descritos como reproduzíveis
   – Um processo empírico envolve atividades complicadas,
     não reproduzíveis e com resultados imprevisíveis
• As atividades envolvidas no desenvolvimento de
  software são complexas e poucas geram resultados
  repetidos
• O Scrum é baseado nos métodos utilizados nas
  fábricas químicas, que utilizam muito inspeções e
  ajustes.
Scrum
• Principais conceitos da metodologia Scrum:
   –   Time: máximo 7 pessoas
   –   Backlog do Produto
   –   Sprint: ciclo de desenvolvimento mensal
   –   Sprint Backlog
   –   Reunião de Planejamento do Sprint
   –   Reunião do Scrum diário
   –   Comunicação e retroalimentação
   –   ScrumMaster: lider responsável
   –   Incremento de produto potencialmente entregável:
       funcionalidades implementadas, testadas e com
       performance adequada
Diagrama de atividades do Scrum
Feature Driven Development
              (FDD)
• Baseado em modelos e guiado por características e
  implementado em ciclos curtos de iterações
• Os ciclos de implementação de uma característica
  são de no máximo 2 semanas
• Interessante para desenvolvedores pois estão
  permanentemente recebendo novas tarefas
• Interessante para os clientes pois vêem os
  resultados rapidamente
Feature Driven Development
              (FDD)
• Busca-se focar os esforços nas
  funcionalidades que sejam úteis aos olhos
  dos clientes...
• Procura-se restringir a lista de
  funcionalidades (características) àquelas
  que os usuários podem entender
Feature Driven Development
               (FDD)
• Uma feature ou característica é uma função com valor para
  o cliente e que pode ser implementada em duas semanas ou
  menos e é descrita da seguinte forma:
   – <ação><artigo><resultado><preposição><artigo><objeto>
       • Exemplos:
           – calcular o total de uma venda
           – calcular o total de compras de um cliente
• As features podem ser agrupadas. Neste caso são assim
  descritas:
   – <ação - verbo no particípio><artigo><objeto>
       • Exemplos:
           – Comprando um produto
           – Efetivando um pagamento
Feature Driven Development
              (FDD)
• Papéis no FDD:
  – Papéis chaves
     • Gerente de projeto, arquiteto-chefe, gerente de
       desenvolvimento, programador-chefe, dono-de-classe,
       especialista no negócio
  – Papéis de suporte
     • Gerente de liberações, gerente de configuração, administrador
       de rede, especialista na ferramenta, testador, documentador
  – Papéis adicionais
     • outros...
Feature Driven Development
              (FDD)
• Práticas no FDD
  – Modelagem dos objetos de negócio
  – Desenvolver por características
  – Posse de classes de código fonte
     • Cada classe tem um responsável e ele é responsável por sua
       construção e manutenção
  – Time de características
     • Cada feature tem um responsável
  – Builds regulares
  – Visible Progress Report
  – Inspeções
Feature Driven Development (FDD)
•Processos no FDD
Extreme Programming (XP)
• XP é considerado o mais importante movimento
  entre os métodos ágeis atualmente
• XP não é uma idéia totalmente terminada
• Os limites de sua aplicação ainda não estão bem
  definidos
• As práticas do método não precisam ser adotadas
  como um conjunto
• O principal objetivo do XP é reduzir o ciclo de
  desenvolvimento de alguns anos para alguns dias
  ou horas
Extreme Programming (XP)
Tempo
        Clássico     Iterativo     XP




                                        Escopo
Extreme Programming (XP)
Extreme Programming (XP)
• As práticas do XP:
   – Jogo de planejamento
      • As decisões sobre os prazos e escopo são tomadas pelos
        clientes
   – Pequenas liberações
      • Devem ser feitas liberações o mais rápido possível para o
        ambiente de produção
   – Metáfora
      • É definida uma metáfora para o objetivo do sistema
   – Projeto simplificado
      • O código deve ser sempre o mais simples possível
Extreme Programming (XP)
• As práticas do XP:
   – Testes
       • Os testes unitários são escritos pelos programadores com bastante
         freqüência. Os clientes escrevem os testes de aceitação. Os resultados
         dos testes são publicados e ficam visíveis para todos da equipe
   – Redesenho
       • O código vai sendo melhorado aos poucos
   – Programação em pares
       • Todo o código é escrito por um par de programadores
   – Integração contínua
       • Novas classes e métodos são integrados imediatamente
   – Propriedade coletiva do código
       • Qualquer programador, a qualquer momento, pode alterar qualquer
         porção do código fonte
Extreme Programming (XP)
• As práticas do XP:
   – Cliente disponível
      • O cliente ou usuário fica integralmente disponível para a
        equipe
   – Semana de 40 horas
      • Se houver necessidade de trabalho extra, é sinal que há
        problemas
   – Ambiente aberto
      • O time trabalha em um ambiente bastante espaçoso. O grupo
        de programação trabalha em estações de trabalho localizadas
        no centro do ambiente
   – Somente regras
      • As regras podem ser adaptadas e melhoradas, de acordo com a
        necessidade.
Extreme Programming (XP)
• Processo proposto pelo XP:
   – Ele se inicia com o cliente escolhendo as funcionalidades que serão
     implementadas. Estas funcionalidades são chamadas de estórias do
     usuário (user stories). A escolha leva em conta a estimativa de
     custo/tempo feita pelos programadores
   – O desenvolvimento é fortemente guiado a testes (TDD: Test-
     Driven Development). Os programadores escrevem testes
     unitários, que são classes que automatizam sequências de testes
     sobre outras classes. São escritos antes do código estar completo
   – Normalmente no par de programadores procura-se unir um com
     muita experiência em TDD e outro com pouca ou nenhuma
     experiência nesta técnica.
TDD: Test-Driven Development
                        Análise




          Test
          Driven
          Development
Extreme Programming (XP)
• Estórias dos usuários:
   – Uma estória do usuário é uma unidade funcional
   – Ela deve ser entendida pelos clientes e usuários, deve ser testável,
     deve ter valor para o cliente e deve ser pequena o bastante para que
     os programadores possam construir dúzias delas em um ciclo de
     iteração
   – Ela é formada por uma ou duas sentenças que descrevem algo com
     valor para o cliente:
       • O sistema deve verificar se o CPF do cliente é um número válido...
   – Os programadores deverão ser capazes de estimar o custo/tempo
     para implementar a estória. Caso isto não seja possível, a estória
     deve ser subdividida em estórias menores, para que possam ser
     então estimadas
   – As estórias do usuários devem ser criadas pelos clientes e usuários.
     Os desenvolvedores concentram-se nas decisões técnicas
Extreme Programming (XP)
• Estórias dos usuários:
   – O principal critério de ordenamento das estórias é o
     valor para o negócio
   – Não existe consenso nisto
   – O consenso é negociado quando houver problemas de
     priorização.
Exemplo de estória
                                              Everest           1             10

        Cadastro de usuário
                                                                     01 08 2005
Acessando-se o menu principal, administradores do sistema
têm privilégio de acesso ao módulo de cadastro de usuário.          Marcos

                                                                      02 08 2005
O módulo consiste num formulário simples que permite o cadas-
tramento de informações como: nome, sobrenome, endereço,
                                                                    Marcio
e-mail, telefone, estado e cidade.
                                                                       2
Após o cadastramento, é exibida uma página com a listagem
                                                                     04 08 2005
de usuários.
                                                                    Juliano
O evento de cadastramento é registrado em log de atividades.
                                                                      05 08 2005
                                                                      1,5
Extreme Programming (XP)
• Reportando o progresso de um projeto XP:
  – O progresso de cada iteração é medido e
    reportado por uma pessoa chamada tracker
  – A cada programador, o tracker faz duas
    perguntas básicas:
     • Quantos dias você já trabalhou nesta tarefa?
     • Mais quantos dias você precisa para completar a
       tarefa?
Extreme Programming (XP)
• Reportanto o progresso de um projeto XP:
   – Se o tracker descobre que um programador não vai
     conseguir terminar sua tarefa, ele tenta redistribuir o
     encargo para outro programador que esteja com alguma
     folga. Caso isto não seja possível, o cliente deve ser
     informado
   – As iterações no XP terminam na data estimada. As
     estórias implementadas, são apresentadas aos clientes,
     que decidirá se está adequada, a qual, neste caso, será
     considerada completa. As estórias incompletas serão
     consideradas para a próxima iteração
Considerações finais
• Outros Métodos Ágeis
  – ASD (Adaptive Software Development)
     • Mission-driven, component-driven (results), time-limited,
       timeboxed; risk driven; change tolerant
  – Crystal Clear
     • Strong communications; frequent deliveries; reduce overhead;
       management by milestones and risk lists
  – DSDM (Dynamic Systems Development Model)
     • User involvement, stakeholder collaboration; empowered
       team; frequent delivery; backtracking to reverse changes; high-
       level requirements baselining; iterative and incremental
       development; integrated lifecycle testing;
Considerações finais
      ABORDAGEM TRADICIONAL                      ABORDAGEM ÁGIL

Preditiva: detalhar o que ainda não é   Adaptativa: conhecer o problema e
bem conhecida                           resolver o crítico primeiro
Rígida: seguir especificação            Flexível: adaptar-se a requisitos
predefinida a qualquer custo            atuais, que podem mudar
Burocrática:controlar sempre, para      Simplista: fazer algo simples de
alcançar objetivo planejado             imediato, e alterar no futuro se for
                                        necessário
Orientado a processos: seguí-los
possibilita garantir a qualidade        Orientado a pessoas: motivadas,
                                        comprometidas e produtivas
Documentação: é a garantia de
confiança                               Comunicação: é a garantia de
                                        confiança
Sucesso: é entregar o planejado
                                        Sucesso: é entregar o desejado
Gerência: sinônimo de “comando-
controle”, voltada para o trabalho em   Gerência: sinônimo de “liderança-
massa com ênfase no papel do            orientação”, voltada para o trabalho
gerente, com planejamento e             do conhecimento, com ênfase na
disciplina fortes                       criatividade, flexibilidade e atenção às
                                        pessoas
Comparação das metodologias

METODOLOGIA            DIRIGIDA A            PRIORIZA
  Engenharia da         Construção do
                                               Informação
   Informação          Banco de Dados
                        Construção de
Análise Estruturada                          Procedimentos
                          sistemas
Análise Orientada a      Construção de
                                                 Objetos
      Objeto             Componentes
                        Implementação       Funções com valor
  Métodos Ágeis
                      contínua de funções     para o cliente
Métodos ágeis de
desenvolvimento de software


        Élvio Viçosa
     Jerônimo Madruga
        Mauro Kade

Métodos ágeis de desenvolvimento de software

  • 1.
    Métodos ágeis de desenvolvimentode software Élvio Viçosa Jerônimo Madruga Mauro Kade
  • 2.
    Súmario • Introdução • Scrum • FDD • XP
  • 3.
    Introdução • Sobre osmétodos tradicionais – São baseados na produção de uma grande quantidade de documentação – São considerados métodos pesados • Sobre os métodos ágeis – São o contraponto dos métodos tradicionais, sendo considerados métodos leves – As pesquisas sobre eles ainda são relativamente novas – Nem todas as práticas relacionadas aos métodos ágeis são novas
  • 4.
    Introdução • O manifestoágil: – Satisfação do cliente através de entregas mais cedo e contínuas, utilizando ciclos de iteração menores – Aceitação e acomodação de requistos em qualquer tempo do desenvolvimento – Desenvolvedores e usuários trabalhando juntos – Times motivados e em ambientes apropriados – Minimização de documentação e maximização de troca de informação face-a-face – Encorajamento de atitudes reflexivas e contínuo aprendizado
  • 5.
    Origem das idéiasdos métodos agéis
  • 6.
    Métodos ágeis • Scrum •Feature Driven Development (FDD) • Extreme Programming (XP)
  • 7.
    Scrum • O termoScrum é uma metáfora para uma situação em um jogo de Rugby. Esta situação envolve um grupo denso de pessoas, lutando pela posse da bola. • O Scrum não é um método completo. Não requer que seja utilizada nenhuma prática ou técnica para o desenvolvimento de software • Utiliza pequenos grupos • É um método para gerenciamento de um projeto de software
  • 8.
    Scrum • Processos definidosX processos empíricos : – Um processo definido usa uma base de conhecimento sobre o processo: são descritos como reproduzíveis – Um processo empírico envolve atividades complicadas, não reproduzíveis e com resultados imprevisíveis • As atividades envolvidas no desenvolvimento de software são complexas e poucas geram resultados repetidos • O Scrum é baseado nos métodos utilizados nas fábricas químicas, que utilizam muito inspeções e ajustes.
  • 9.
    Scrum • Principais conceitosda metodologia Scrum: – Time: máximo 7 pessoas – Backlog do Produto – Sprint: ciclo de desenvolvimento mensal – Sprint Backlog – Reunião de Planejamento do Sprint – Reunião do Scrum diário – Comunicação e retroalimentação – ScrumMaster: lider responsável – Incremento de produto potencialmente entregável: funcionalidades implementadas, testadas e com performance adequada
  • 10.
  • 11.
    Feature Driven Development (FDD) • Baseado em modelos e guiado por características e implementado em ciclos curtos de iterações • Os ciclos de implementação de uma característica são de no máximo 2 semanas • Interessante para desenvolvedores pois estão permanentemente recebendo novas tarefas • Interessante para os clientes pois vêem os resultados rapidamente
  • 12.
    Feature Driven Development (FDD) • Busca-se focar os esforços nas funcionalidades que sejam úteis aos olhos dos clientes... • Procura-se restringir a lista de funcionalidades (características) àquelas que os usuários podem entender
  • 13.
    Feature Driven Development (FDD) • Uma feature ou característica é uma função com valor para o cliente e que pode ser implementada em duas semanas ou menos e é descrita da seguinte forma: – <ação><artigo><resultado><preposição><artigo><objeto> • Exemplos: – calcular o total de uma venda – calcular o total de compras de um cliente • As features podem ser agrupadas. Neste caso são assim descritas: – <ação - verbo no particípio><artigo><objeto> • Exemplos: – Comprando um produto – Efetivando um pagamento
  • 14.
    Feature Driven Development (FDD) • Papéis no FDD: – Papéis chaves • Gerente de projeto, arquiteto-chefe, gerente de desenvolvimento, programador-chefe, dono-de-classe, especialista no negócio – Papéis de suporte • Gerente de liberações, gerente de configuração, administrador de rede, especialista na ferramenta, testador, documentador – Papéis adicionais • outros...
  • 15.
    Feature Driven Development (FDD) • Práticas no FDD – Modelagem dos objetos de negócio – Desenvolver por características – Posse de classes de código fonte • Cada classe tem um responsável e ele é responsável por sua construção e manutenção – Time de características • Cada feature tem um responsável – Builds regulares – Visible Progress Report – Inspeções
  • 16.
    Feature Driven Development(FDD) •Processos no FDD
  • 17.
    Extreme Programming (XP) •XP é considerado o mais importante movimento entre os métodos ágeis atualmente • XP não é uma idéia totalmente terminada • Os limites de sua aplicação ainda não estão bem definidos • As práticas do método não precisam ser adotadas como um conjunto • O principal objetivo do XP é reduzir o ciclo de desenvolvimento de alguns anos para alguns dias ou horas
  • 18.
    Extreme Programming (XP) Tempo Clássico Iterativo XP Escopo
  • 19.
  • 20.
    Extreme Programming (XP) •As práticas do XP: – Jogo de planejamento • As decisões sobre os prazos e escopo são tomadas pelos clientes – Pequenas liberações • Devem ser feitas liberações o mais rápido possível para o ambiente de produção – Metáfora • É definida uma metáfora para o objetivo do sistema – Projeto simplificado • O código deve ser sempre o mais simples possível
  • 21.
    Extreme Programming (XP) •As práticas do XP: – Testes • Os testes unitários são escritos pelos programadores com bastante freqüência. Os clientes escrevem os testes de aceitação. Os resultados dos testes são publicados e ficam visíveis para todos da equipe – Redesenho • O código vai sendo melhorado aos poucos – Programação em pares • Todo o código é escrito por um par de programadores – Integração contínua • Novas classes e métodos são integrados imediatamente – Propriedade coletiva do código • Qualquer programador, a qualquer momento, pode alterar qualquer porção do código fonte
  • 22.
    Extreme Programming (XP) •As práticas do XP: – Cliente disponível • O cliente ou usuário fica integralmente disponível para a equipe – Semana de 40 horas • Se houver necessidade de trabalho extra, é sinal que há problemas – Ambiente aberto • O time trabalha em um ambiente bastante espaçoso. O grupo de programação trabalha em estações de trabalho localizadas no centro do ambiente – Somente regras • As regras podem ser adaptadas e melhoradas, de acordo com a necessidade.
  • 23.
    Extreme Programming (XP) •Processo proposto pelo XP: – Ele se inicia com o cliente escolhendo as funcionalidades que serão implementadas. Estas funcionalidades são chamadas de estórias do usuário (user stories). A escolha leva em conta a estimativa de custo/tempo feita pelos programadores – O desenvolvimento é fortemente guiado a testes (TDD: Test- Driven Development). Os programadores escrevem testes unitários, que são classes que automatizam sequências de testes sobre outras classes. São escritos antes do código estar completo – Normalmente no par de programadores procura-se unir um com muita experiência em TDD e outro com pouca ou nenhuma experiência nesta técnica.
  • 24.
    TDD: Test-Driven Development Análise Test Driven Development
  • 25.
    Extreme Programming (XP) •Estórias dos usuários: – Uma estória do usuário é uma unidade funcional – Ela deve ser entendida pelos clientes e usuários, deve ser testável, deve ter valor para o cliente e deve ser pequena o bastante para que os programadores possam construir dúzias delas em um ciclo de iteração – Ela é formada por uma ou duas sentenças que descrevem algo com valor para o cliente: • O sistema deve verificar se o CPF do cliente é um número válido... – Os programadores deverão ser capazes de estimar o custo/tempo para implementar a estória. Caso isto não seja possível, a estória deve ser subdividida em estórias menores, para que possam ser então estimadas – As estórias do usuários devem ser criadas pelos clientes e usuários. Os desenvolvedores concentram-se nas decisões técnicas
  • 26.
    Extreme Programming (XP) •Estórias dos usuários: – O principal critério de ordenamento das estórias é o valor para o negócio – Não existe consenso nisto – O consenso é negociado quando houver problemas de priorização.
  • 27.
    Exemplo de estória Everest 1 10 Cadastro de usuário 01 08 2005 Acessando-se o menu principal, administradores do sistema têm privilégio de acesso ao módulo de cadastro de usuário. Marcos 02 08 2005 O módulo consiste num formulário simples que permite o cadas- tramento de informações como: nome, sobrenome, endereço, Marcio e-mail, telefone, estado e cidade. 2 Após o cadastramento, é exibida uma página com a listagem 04 08 2005 de usuários. Juliano O evento de cadastramento é registrado em log de atividades. 05 08 2005 1,5
  • 28.
    Extreme Programming (XP) •Reportando o progresso de um projeto XP: – O progresso de cada iteração é medido e reportado por uma pessoa chamada tracker – A cada programador, o tracker faz duas perguntas básicas: • Quantos dias você já trabalhou nesta tarefa? • Mais quantos dias você precisa para completar a tarefa?
  • 29.
    Extreme Programming (XP) •Reportanto o progresso de um projeto XP: – Se o tracker descobre que um programador não vai conseguir terminar sua tarefa, ele tenta redistribuir o encargo para outro programador que esteja com alguma folga. Caso isto não seja possível, o cliente deve ser informado – As iterações no XP terminam na data estimada. As estórias implementadas, são apresentadas aos clientes, que decidirá se está adequada, a qual, neste caso, será considerada completa. As estórias incompletas serão consideradas para a próxima iteração
  • 30.
    Considerações finais • OutrosMétodos Ágeis – ASD (Adaptive Software Development) • Mission-driven, component-driven (results), time-limited, timeboxed; risk driven; change tolerant – Crystal Clear • Strong communications; frequent deliveries; reduce overhead; management by milestones and risk lists – DSDM (Dynamic Systems Development Model) • User involvement, stakeholder collaboration; empowered team; frequent delivery; backtracking to reverse changes; high- level requirements baselining; iterative and incremental development; integrated lifecycle testing;
  • 31.
    Considerações finais ABORDAGEM TRADICIONAL ABORDAGEM ÁGIL Preditiva: detalhar o que ainda não é Adaptativa: conhecer o problema e bem conhecida resolver o crítico primeiro Rígida: seguir especificação Flexível: adaptar-se a requisitos predefinida a qualquer custo atuais, que podem mudar Burocrática:controlar sempre, para Simplista: fazer algo simples de alcançar objetivo planejado imediato, e alterar no futuro se for necessário Orientado a processos: seguí-los possibilita garantir a qualidade Orientado a pessoas: motivadas, comprometidas e produtivas Documentação: é a garantia de confiança Comunicação: é a garantia de confiança Sucesso: é entregar o planejado Sucesso: é entregar o desejado Gerência: sinônimo de “comando- controle”, voltada para o trabalho em Gerência: sinônimo de “liderança- massa com ênfase no papel do orientação”, voltada para o trabalho gerente, com planejamento e do conhecimento, com ênfase na disciplina fortes criatividade, flexibilidade e atenção às pessoas
  • 32.
    Comparação das metodologias METODOLOGIA DIRIGIDA A PRIORIZA Engenharia da Construção do Informação Informação Banco de Dados Construção de Análise Estruturada Procedimentos sistemas Análise Orientada a Construção de Objetos Objeto Componentes Implementação Funções com valor Métodos Ágeis contínua de funções para o cliente
  • 33.
    Métodos ágeis de desenvolvimentode software Élvio Viçosa Jerônimo Madruga Mauro Kade