Introdução
Conceitos e Objetivos
O que são métodos ágeis de desenvolvimento?


       • Metodologias de desenvolvimento que nos permita alterar
         constantemente o código sem comprometer sua qualidade.

Quanto mais                                                        Estabilidade da
                                                                   relação custo e
funcionalida
                                                                   funcionalidade
 des maior o
    custo
Principais Métodos


• Abordadas               • Outros métodos


•   Programação extrema   • Adaptive Software Development
•   Scrum                 • Crystal
•   Programação pareada   • Pragmatic Programming
•   Orientado a testes
Casos de sucesso !!!!


• Assembléia Legislativa do Estado de São Paulo
• Ikwa
• ITM
• Paggo
• Parceria com Scopus e LARC
• Sistema Janus
• LocaWeb
Programação eXtrema (XP)
Programação
     eXtrema (XP)



É uma metodologia ágil para equipes pequenas e médias e que irão desenvolver software com requisitos vagos e
em constante mudança. Para isso, adota a estratégia de constante acompanhamento e realização de vários
pequenos ajustes durante o desenvolvimento de software. Desenvolvedor (KENT BECK)

Valores

• Comunicação
• Simplicidade
• Retroalimentação (Feedback)
• Coragem
• Respeito

Comunicação
• A maioria dos problemas e erros são causados por falta de comunicação
• Maximizar a comunicação entre a equipe e o cliente
• Comunicação entre pessoas: direta
• Comunicação entre pessoas e artefatos:
• estes devem ser de leitura fácil e estar atualizados
Programação
      eXtrema (XP)



Valores contrários a programação XP

• Comunicação
– preferir papel a olho-no-olho

• Simplicidade
– fazer mais do que o necessário para resolver o problema atual
pensando em antecipar a resolução de problemas futuros

• Retroalimentação (Feedback)
– Retroalimentação só bem perto do final. Contrato assinado.
• Coragem
• Respeito
– Longas jornadas de trabalho para terminar o projeto
Programação
    eXtrema (XP)




Princípios da programação XP

• Humanidade
• Economia
• Benefício mútuo
• Auto similaridade
• Melhora contínua
• Diversidade
• Reflexão
• Oportunidade
• Redundância
• Falha
• Qualidade
• Passos de bebê
• Responsabilidade aceita
Programação
     eXtrema (XP)




Praticas da programação XP

• Categorias                                         • Fatores relacionados a equipes e fatores humanos

– Análise de Requisitos e Planejamento               – Sentar junto
– Fatores relacionados a equipes e fatores humanos   – Time inteiro
– Projeto (Design)                                   – Ambiente de trabalho informativo
– Codificação e lançamento (liberação) de código     – Trabalho energizado
                                                     – Programação Pareada
• Análise de Requisitos e Planejamento
                                                     • Projeto (Design)
– Ciclo semanal
– Ciclo quinzenal                                    – Design incremental
– Folga                                              – Programação com testes primeiro
Programação
    eXtrema (XP)




Praticas da programação XP

• Codificação e lançamento (liberação) de código

– Build de dez minutos (compilar)
– Integração contínua

• Codificação e lançamento (liberação) de código

– Código e testes
– Código compartilhado
– Base de código única
– Entrega (deployment) diária
Gerenciamento de Equipes
com Scrum
Programação
                   Scrum
    eXtrema (XP)




• O Scrum é um processo de desenvolvimento iterativo e incremental para
  gerenciamento de projetos e desenvolvimento ágil de software.


• Scrum possui seu foco na gerenciamento de projeto da organização onde é
  difícil planejar à frente.
Programação
                   Scrum
    eXtrema (XP)




Características


• Processo de controle e gerenciamento
• Processo iterativo de inspeção e adaptação
• Usado para gerenciar projetos complexos
• Entrega valor de negócio periodicamente
• Compatível com CMMi até o nível 3, ISO e outras metodologias
• Extremamente simples, mas muito difícil
Programação
                       Scrum
     eXtrema (XP)



• Princípios do SCRUM


• Os envolvidos trabalham em equipe com:
• – Responsabilidade
• – Transparência
• – Honestidade
• – Auto-organização


• Fornecer software funcionando
• – De forma incremental
• – Potencialmente empregável
Programação
                   Scrum
    eXtrema (XP)




• Tipos de processo SCRUM


• Processo prescritivo
– Funciona em ambientes controlados


• Processo empírico
– Funciona para processos complexos e imprevisíveis
Programação pareada
Programação                               Programação
                            Scrum
       eXtrema (XP)                              pareada



• Programação pareada é a prática onde um ou mais programadores
trabalham lado a lado em um computador colaborando no mesmo
projeto, algoritmo, código ou teste.


Principal vantagem

Quando se está trabalhando em par se trabalha o dia todo. Pois ao
trabalhar sozinho, você vê o seu e-mail, lê blogs e etc. E essas coisas
não acontecem com programação em par. Ao fim de um dia de
programação em par você está cansado, pois você realmente pensou
e trabalhou o dia todo. Mas você fica contente, pois sabe que teve o
trabalho realizado
Programação                   Programação
                  Scrum
   eXtrema (XP)                  pareada




• O par é composto de:


• Um motorista: que digita no computador ou registra o projeto
• Um navegador: que observa o trabalho do motorista e identifica
  problemas, clarifica questões e faz sugestões.
• Os parceiros devem trocar de papéis de tempos em tempos para compartilhar o
  trabalho igualmente e obter o máximo da sua experiência com a programação
  pareada.
Programação                   Programação
                   Scrum
   eXtrema (XP)                  pareada




• Importante


• Um controla o teclado e o mouse
• O outro observa criticamente
• Os dois estão continuamente dialogando
• De tempos em tempos, o controle muda de mãos
• Ao longo de um projeto, os companheiros são trocados
Programação                   Programação
                  Scrum
   eXtrema (XP)                  pareada




• Vale a pena ?


• Aparentemente não...
• Usa dois “recursos” em vez de um
• Pagar o salário de dois desenvolvedores para trabalharem num mesmo
  problema???
• Os dois usam o mesmo computador a maior parte do tempo (o outro fica ocioso...)
Programação                  Programação
                    Scrum
   eXtrema (XP)                 pareada




• Por que fazer ?


• Pesquisas mostraram que:


• Aumenta a qualidade do software
• As tarefas são completadas em menos tempo(mas não necessariamente em menos
  da metade do tempo que um programador sozinho gasta)
• Tão importante quanto a programação pareada são a análise pareada e o projeto
  (design) pareado
Orientada a testes
Programação                  Programação   Orientado a
                   Scrum
   eXtrema (XP)                 pareada       testes



• Orientada no modelo cascata


– Licitação de requisitos
– Projeto
– Construção (implementação ou codificação)
– Integração
– Teste e depuração
– Instalação
– Manutenção de software
Programação             Programação   Orientado a
                    Scrum
    eXtrema (XP)            pareada       testes



• Tipos de testes
• Unidade
• Integração
• Interface de Usuário
• Aceitação
• Mutação
• Desempenho
• Estresse
• Segurança
Programação                     Programação   Orientado a
                     Scrum
     eXtrema (XP)                    pareada       testes



• Teste de Software:
– Executar o programa a ser testado com alguma entrada e conferir visualmente os
resultados obtidos
• Teste Automatizado:
– Programa ou script executável que roda o programa a ser testado e faz verificações
automáticas em cima dos efeitos colaterais obtidos.
• Testar NÃO é depurar
– Testar é verificar a presença de erros
– Depurar é seguir o fluxo para identificar um erro conhecido
Programação                       Programação      Orientado a
                   Scrum
eXtrema (XP)                      pareada          testes
   Principais Métodos

   • Referencias


   • BECK, Kent. Simple Smalltalk Testing: With Patterns.
   • http://www.xprogramming.com/testfram.htm
   • http://www-128.ibm.com/developerworks/java/library/•
   • http://www.instrumentalservices.com/media/articles
   • http://www.prowareness.com/blog/pair-programing-an-xp-practice-benefits/


   Livro: Metodologias Ágeis: Engenharia de Software sob Medida - José Henrique
   Teixeira de Carvalho Sbrocco e Paulo Cesar de Macedo

Desenvolvimento de Software

  • 2.
  • 3.
    O que sãométodos ágeis de desenvolvimento? • Metodologias de desenvolvimento que nos permita alterar constantemente o código sem comprometer sua qualidade. Quanto mais Estabilidade da relação custo e funcionalida funcionalidade des maior o custo
  • 4.
    Principais Métodos • Abordadas • Outros métodos • Programação extrema • Adaptive Software Development • Scrum • Crystal • Programação pareada • Pragmatic Programming • Orientado a testes
  • 5.
    Casos de sucesso!!!! • Assembléia Legislativa do Estado de São Paulo • Ikwa • ITM • Paggo • Parceria com Scopus e LARC • Sistema Janus • LocaWeb
  • 6.
  • 7.
    Programação eXtrema (XP) É uma metodologia ágil para equipes pequenas e médias e que irão desenvolver software com requisitos vagos e em constante mudança. Para isso, adota a estratégia de constante acompanhamento e realização de vários pequenos ajustes durante o desenvolvimento de software. Desenvolvedor (KENT BECK) Valores • Comunicação • Simplicidade • Retroalimentação (Feedback) • Coragem • Respeito Comunicação • A maioria dos problemas e erros são causados por falta de comunicação • Maximizar a comunicação entre a equipe e o cliente • Comunicação entre pessoas: direta • Comunicação entre pessoas e artefatos: • estes devem ser de leitura fácil e estar atualizados
  • 8.
    Programação eXtrema (XP) Valores contrários a programação XP • Comunicação – preferir papel a olho-no-olho • Simplicidade – fazer mais do que o necessário para resolver o problema atual pensando em antecipar a resolução de problemas futuros • Retroalimentação (Feedback) – Retroalimentação só bem perto do final. Contrato assinado. • Coragem • Respeito – Longas jornadas de trabalho para terminar o projeto
  • 9.
    Programação eXtrema (XP) Princípios da programação XP • Humanidade • Economia • Benefício mútuo • Auto similaridade • Melhora contínua • Diversidade • Reflexão • Oportunidade • Redundância • Falha • Qualidade • Passos de bebê • Responsabilidade aceita
  • 10.
    Programação eXtrema (XP) Praticas da programação XP • Categorias • Fatores relacionados a equipes e fatores humanos – Análise de Requisitos e Planejamento – Sentar junto – Fatores relacionados a equipes e fatores humanos – Time inteiro – Projeto (Design) – Ambiente de trabalho informativo – Codificação e lançamento (liberação) de código – Trabalho energizado – Programação Pareada • Análise de Requisitos e Planejamento • Projeto (Design) – Ciclo semanal – Ciclo quinzenal – Design incremental – Folga – Programação com testes primeiro
  • 11.
    Programação eXtrema (XP) Praticas da programação XP • Codificação e lançamento (liberação) de código – Build de dez minutos (compilar) – Integração contínua • Codificação e lançamento (liberação) de código – Código e testes – Código compartilhado – Base de código única – Entrega (deployment) diária
  • 12.
  • 13.
    Programação Scrum eXtrema (XP) • O Scrum é um processo de desenvolvimento iterativo e incremental para gerenciamento de projetos e desenvolvimento ágil de software. • Scrum possui seu foco na gerenciamento de projeto da organização onde é difícil planejar à frente.
  • 14.
    Programação Scrum eXtrema (XP) Características • Processo de controle e gerenciamento • Processo iterativo de inspeção e adaptação • Usado para gerenciar projetos complexos • Entrega valor de negócio periodicamente • Compatível com CMMi até o nível 3, ISO e outras metodologias • Extremamente simples, mas muito difícil
  • 15.
    Programação Scrum eXtrema (XP) • Princípios do SCRUM • Os envolvidos trabalham em equipe com: • – Responsabilidade • – Transparência • – Honestidade • – Auto-organização • Fornecer software funcionando • – De forma incremental • – Potencialmente empregável
  • 16.
    Programação Scrum eXtrema (XP) • Tipos de processo SCRUM • Processo prescritivo – Funciona em ambientes controlados • Processo empírico – Funciona para processos complexos e imprevisíveis
  • 17.
  • 18.
    Programação Programação Scrum eXtrema (XP) pareada • Programação pareada é a prática onde um ou mais programadores trabalham lado a lado em um computador colaborando no mesmo projeto, algoritmo, código ou teste. Principal vantagem Quando se está trabalhando em par se trabalha o dia todo. Pois ao trabalhar sozinho, você vê o seu e-mail, lê blogs e etc. E essas coisas não acontecem com programação em par. Ao fim de um dia de programação em par você está cansado, pois você realmente pensou e trabalhou o dia todo. Mas você fica contente, pois sabe que teve o trabalho realizado
  • 19.
    Programação Programação Scrum eXtrema (XP) pareada • O par é composto de: • Um motorista: que digita no computador ou registra o projeto • Um navegador: que observa o trabalho do motorista e identifica problemas, clarifica questões e faz sugestões. • Os parceiros devem trocar de papéis de tempos em tempos para compartilhar o trabalho igualmente e obter o máximo da sua experiência com a programação pareada.
  • 20.
    Programação Programação Scrum eXtrema (XP) pareada • Importante • Um controla o teclado e o mouse • O outro observa criticamente • Os dois estão continuamente dialogando • De tempos em tempos, o controle muda de mãos • Ao longo de um projeto, os companheiros são trocados
  • 21.
    Programação Programação Scrum eXtrema (XP) pareada • Vale a pena ? • Aparentemente não... • Usa dois “recursos” em vez de um • Pagar o salário de dois desenvolvedores para trabalharem num mesmo problema??? • Os dois usam o mesmo computador a maior parte do tempo (o outro fica ocioso...)
  • 22.
    Programação Programação Scrum eXtrema (XP) pareada • Por que fazer ? • Pesquisas mostraram que: • Aumenta a qualidade do software • As tarefas são completadas em menos tempo(mas não necessariamente em menos da metade do tempo que um programador sozinho gasta) • Tão importante quanto a programação pareada são a análise pareada e o projeto (design) pareado
  • 23.
  • 24.
    Programação Programação Orientado a Scrum eXtrema (XP) pareada testes • Orientada no modelo cascata – Licitação de requisitos – Projeto – Construção (implementação ou codificação) – Integração – Teste e depuração – Instalação – Manutenção de software
  • 25.
    Programação Programação Orientado a Scrum eXtrema (XP) pareada testes • Tipos de testes • Unidade • Integração • Interface de Usuário • Aceitação • Mutação • Desempenho • Estresse • Segurança
  • 26.
    Programação Programação Orientado a Scrum eXtrema (XP) pareada testes • Teste de Software: – Executar o programa a ser testado com alguma entrada e conferir visualmente os resultados obtidos • Teste Automatizado: – Programa ou script executável que roda o programa a ser testado e faz verificações automáticas em cima dos efeitos colaterais obtidos. • Testar NÃO é depurar – Testar é verificar a presença de erros – Depurar é seguir o fluxo para identificar um erro conhecido
  • 27.
    Programação Programação Orientado a Scrum eXtrema (XP) pareada testes Principais Métodos • Referencias • BECK, Kent. Simple Smalltalk Testing: With Patterns. • http://www.xprogramming.com/testfram.htm • http://www-128.ibm.com/developerworks/java/library/• • http://www.instrumentalservices.com/media/articles • http://www.prowareness.com/blog/pair-programing-an-xp-practice-benefits/ Livro: Metodologias Ágeis: Engenharia de Software sob Medida - José Henrique Teixeira de Carvalho Sbrocco e Paulo Cesar de Macedo