SlideShare uma empresa Scribd logo
1 de 48
Baixar para ler offline
Extreme Programming
          Programação Extrema



Christiano Milfont
Juazeiro do Norte 2009
Copyright 2009 Milfont.org
Code and Fix
3 Amigos




Ivar Jacobson   James Rumbaugh   Grady Booch
Agora Temos Processo
Ainda Temos Problemas

Código complexo.
Manutenção difícil.
Baixa produtividade.
Cronograma sempre atrasado.
Insatisfação de todos.
Design degradado.
Documentação defasada,
excessiva e ilegível.
Fracasso em grande parte dos
projetos.
Nuvem de mudanças
Manifesto Ágil
    Estamos descobrindo maneiras melhores de desenvolver software fazendo-o nós mesmos e
       ajudando outros a fazê-lo. Através deste trabalho, passamos a valorizar:
 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
    Ou seja, mesmo havendo valor nos itens à direita, valorizamos mais os itens à esquerda.

                                         2001
Kent Beck Mike Beedle Arie van Bennekum Alistair Cockburn Ward Cunningham
Martin Fowler James Grenning Jim Highsmith Andrew Hunt Ron Jeffries Jon Kern
Brian Marick Robert C. Martin Steve Mellor Ken Schwaber Jeff Sutherland
Dave Thomas
3 Amigos




Ward Cunningham      Ron Jeffries   Kent Beck
Extreme Programming


 Os princípios conectam os valores
(crenças fundamentais dos processos)
 às práticas (atividades concretas do
              cotidiano).
Extreme Programming
                                     Valores
Courage (Coragem)
Para tomar as decisões certas e dizer o que precisa ser dito para os interessados.
Communication (Comunicação)
Para dar as informações certas e serem usadas com máxima vantagem pelas pessoas
   certas.
Simplicity (Simplicidade)
Para descartarmos as coisas que queremos mas que não precisamos agora.
Feedback (Parecer)
Para aprendermos as lições adequadas a cada oportunidade.
Respect (Respeito)
Para nos tratar com dignidade e reconhecermos o conhecimento e nosso mútuo
   desejo de sucesso.
Release Plan
 “A good plan violently executed now is
 better than a perfect plan executed next
                  week.”

“Um bom plano executado violentamente
  agora é melhor que um plano perfeito
     executado na próxima semana.
                General George S. Patton
Release e Iteration Planning
Release
   Condições de satisfação
   (user stories, budget,
   schedule)


                               Release
                               Planning



          Iteração
             Condições de satisfação
             (user stories +
             Acceptance Tests)


                             Iteration                      Incremento
                                          Desenvolvimento
                             Planning                       no produto
Master Story List
ID   Criticidade Item                  Iteração   Estimativa   Restando
1    Alto        Informar problema     1          10           0
2    Baixo       Listar problemas      ?          ?            ?
3    Baixo       Cadastrar tipos de bug ?         ?            ?
4    Médio       Aprovar problema      2          ?            ?
5    Altíssimo   Controle de acesso    1          100          0
6    Baixo       Cadastrar status      ?          ?            ?
7    Baixo       Cadastrar membros     ?          ?            ?
8    baixo       Cadastrar projeto     ?          ?            ?
Real Customer Involvement
Ubiquitous Language

   Linguagem Ubíqua
Linguagem Ubíqua


"A language structured around
  the domain model and used by
  all team members to connect
  all the activities of the team
  with the software."
Linguagem Ubíqua
               Contexto
• Especialistas em negócio não entendem
  termos de desenvolvedores.
• Desenvolvedores não entendem termos do
  negócio.
• Uma palavra ou sentença tem vários
  significados e modelos dependendo do
  cenário.
Linguagem Ubíqua



“The Blind Men and the Elephant”,
      By John Godfrey Saxe
           (1813- 1887)
Linguagem Ubíqua
Linguagem Ubíqua
Um Membro do projeto cadastra uma “Issue” no
   sistema.

Um Gerente de projetos aceita ou rejeita a
   entrada de Issues para serem trabalhadas.

Um Funcionário do hospital dar entrada do
   Paciente na Emergência.

O Cenário de entrada por pacientes depende do
   Login do usuário com ROLE Admin na Action
   antes do forward.

Um funcionário atende uma solicitação de saída
   de medicamento pelo prontuário do paciente
   com limite do cardápio do médico.

A Tabela TB_ITEMS tem ligação com a Tabela
    TB_NOTAS
Linguagem Ubíqua
Um Membro do projeto cadastra uma “Issue” no
   sistema.

Um Gerente de projetos aceita ou rejeita a
   entrada de Issues para serem trabalhadas.

Um Funcionário do hospital dar entrada do
   Paciente na Emergência.

O Cenário de entrada por pacientes depende do
   Login do usuário com ROLE Admin na Action
   antes do forward.

Um funcionário atende uma solicitação de saída
   de medicamento pelo prontuário do paciente
   com limite do cardápio do médico.

A Tabela TB_ITEMS tem ligação com a Tabela
    TB_NOTAS
Linguagem Ubíqua
Um Membro do projeto cadastra uma “Issue” no
   sistema.

Um Gerente de projetos aceita ou rejeita a
   entrada de Issues para serem trabalhadas.

Um Funcionário do hospital dar entrada do
   Paciente na Emergência.

O Cenário de entrada por pacientes depende do
   Login do usuário com ROLE Admin na Action
   antes do forward.

Um funcionário atende uma solicitação de saída
   de medicamento pelo prontuário do paciente
   com limite do cardápio do médico.

A Tabela TB_ITEMS tem ligação com a Tabela
    TB_NOTAS
Behaviour Driven Development
      Use Case                           User Story
 Um caso de uso captura             Uma estoria descreve
um contrato entre os               funcionalmente o que será
interessados de um                 valioso para os usuários e
sistema sobre seus                 aos compradores de um
comportamentos.                    software.
     Writing Effective Use Cases              User Stories Applied
              Alistair Cockburn                         Mike Cohn
Behaviour Driven Development
              User Story

  • Card         [cartão]
  • Conversation [conversação]
  • Confirmation [confirmação]
                                 “Ron Jeffries, 2001”
Behaviour Driven Development
                   User Story
•   Independente
•   Negociável
•   Valioso ao comprador
•   Estimável
•   Small [Pequena]
•   Testável
                 User Stories Applied
                     Mike Cohn
Behaviour Driven Development
          Story Card
Behaviour Driven Development
          Story Card
Behaviour Driven Development
          Story Card
Planning Poker
Informative Workspace
Nossa Rotina Diária
      Standup Meeting @ 9h


             Pair Up



        Test First [Prática]


     Code            Refactor


     Integrar ou Disponibilizar



        Ir para casa @ 17h
Stand Up Meeting




            Thoughworks india
Pair Up
•   Sit Together (sentam-se juntos)
•   Shared Code (código compartilhado)
•   Energized Work ( Trabalho energizado)
•   Move People Around (Move as pessoas em volta)
•   Pair Programming
•   (Programação em Par)
     – Navegador e Condutor
     – Trabalho energizado
Move People Around
      Dia      Turno                     Historia
                             1              2              3
Seg         Manhã      Paulo/José     Pedro/Carlos
            Tarde      Paulo/Carlos   Pedro/José
Ter         Manhã      Carlos/Pedro   José/Paulo
            Tarde      Carlos/Paulo   José/Pedro
Qua         Manhã                     Carlos/José    Pedro/Paulo
            Tarde                     Carlos/Paulo   Pedro/José
Qui         Manhã                     Paulo/Pedro    José/Carlos
            Tarde                     Paulo/Carlos   José/Pedro
Sex         Manhã                     Carlos/José    Pedro/Paulo
            Tarde                     Carlos/Paulo   Pedro/José
Pair Programming
         “E depois disto designou o
         Senhor ainda outros setenta,
         e mandou-os adiante da sua
         face, de dois em dois, a todas
         as cidades e lugares aonde
         ele havia de ir.”
         Lucas 10:1
         http://www.bibliaonline.com.br/acf/lc/10
Pair Programming
• Pros                                   • Contras
Força boas práticas [Coding Standards]   Preferência de trabalho
Revisão de trabalho                      Desperdício em partes triviais
Redução de custos                        Conflito de Egos
Disseminação/nivelamento                 Habitos pessoais irritantes
Menos interrupção e dispersão
Test Driven Development


“Desenvolvimento guiado por testes
  é um caminho de gerenciamento
 do medo durante a programação.”
                    Kent Beck - Test Driven
                   Development by Example
Test Driven Development
         RED-GREEN-REFACTOR
1. Escreva um teste que não funciona.
2. Escreva o código e faço-o funcionar.
3. Refatore e elimine o código
   repetitivo.
Test Driven Development
                O ritmo em 3 A’s
• Arrange [Criar um objeto]
• Act     [Invocar um método]
• Assert [Verificar o resultado]

               Refactoring Workbook, Bill Wake
Integração Contínua
Extreme Programming
      Princípios
Extreme Programming
                   Práticas primárias
Sit Together (Sentem-se juntos)
Whole Team (Equipe completa)
Energized Work (Trabalho energizado)
Pair Programming (Programação em par)
Move People Around (Mova as equipes)
Stories (Histórias)
Weekly Cycle (Ciclo semanal)
Quarterly Cycle (Ciclo trimestral)
Slack (Folga)
Ten-Minute Build (Construir em 10 minutos)
Extreme Programming
              Práticas primárias [cont.]
Continuous Integration (Integração contínua)
Test-First Integration (Teste primeiro)
Incremental Design (Design incremental)
Informative Workspace (Ambiente informatizado)
Extreme Programming
                 Práticas secundárias
Real Customer Involvement (Envolvimento real do cliente)
Incremental Deployment (Disponibilização incremental)
Team Continuity (Continuidade da equipe)
Shrinking Teams (Diminuição de equipes)
Root-Cause Analysis (Análise da causa-origem)
Daily Deployment (Disponibilização (entrega) diária)
Negotiated Scope Contract (Contrato com escopo negociável)
Shared Code (Código compartilhado)
Code and Tests (Código e testes)
Single Code Base (Código único)
Extreme Programming
             Práticas secundárias (Cont.)
Metaphor (Metáforas)
Refactoring (Refatoração)
Pay-per-Use (Pague-por-uso)
Design Patterns (Padrões de projeto)
40 Hour Week (40 horas semanais)
Planning Game (Jogo do planejamento)
Stand Up Meetings (Reuniões em pé)
Coding Standards (Padrões de codificação)
Extreme Programming
               Papéis
1.Programmer
2.Customer
3.Tester
4.Tracker
5.Coach
6.Consultant
7.Big Boss
http://www.xpce.org

Mais conteúdo relacionado

Mais procurados

Desenvolvimento de Software com Extreme Programming (XP)
Desenvolvimento de Software com Extreme Programming (XP)Desenvolvimento de Software com Extreme Programming (XP)
Desenvolvimento de Software com Extreme Programming (XP)Fernando Kenji Kamei
 
Conhecendo o eXtreme Programming
Conhecendo o eXtreme ProgrammingConhecendo o eXtreme Programming
Conhecendo o eXtreme ProgrammingDaniel Wildt
 
Introdução a Metodologia XP (E Xtreme Programming)
Introdução a Metodologia XP (E Xtreme Programming)Introdução a Metodologia XP (E Xtreme Programming)
Introdução a Metodologia XP (E Xtreme Programming)Rennan Martini
 
Extreme Programming (XP) e Scrum
Extreme Programming (XP) e ScrumExtreme Programming (XP) e Scrum
Extreme Programming (XP) e ScrumRafael Souza
 
Introdução à Programação Extrema (Extreme Programming - XP)
Introdução à Programação Extrema (Extreme Programming - XP)Introdução à Programação Extrema (Extreme Programming - XP)
Introdução à Programação Extrema (Extreme Programming - XP)Claudia Melo
 
Introdução: eXtreme Programming
Introdução: eXtreme ProgrammingIntrodução: eXtreme Programming
Introdução: eXtreme ProgrammingDenis L Presciliano
 
IPA Conhecendo XP
IPA Conhecendo XPIPA Conhecendo XP
IPA Conhecendo XPWildtech
 
Bate-papo com Especialista Terra XP
Bate-papo com Especialista Terra XPBate-papo com Especialista Terra XP
Bate-papo com Especialista Terra XPWildtech
 
Introdução a Métodos Ágeis de Desenvolvimento de Software
Introdução a Métodos Ágeis de Desenvolvimento de SoftwareIntrodução a Métodos Ágeis de Desenvolvimento de Software
Introdução a Métodos Ágeis de Desenvolvimento de SoftwareDaniel Cukier
 
Métodos Ágeis para Desenvolvimento de Software
Métodos Ágeis para Desenvolvimento de SoftwareMétodos Ágeis para Desenvolvimento de Software
Métodos Ágeis para Desenvolvimento de Softwarealexandre_malaquias
 
Scrum: Uma Nova Abordagem No Desenvolvimento De Software Face À Demanda...
Scrum: Uma Nova Abordagem No Desenvolvimento De Software Face À       Demanda...Scrum: Uma Nova Abordagem No Desenvolvimento De Software Face À       Demanda...
Scrum: Uma Nova Abordagem No Desenvolvimento De Software Face À Demanda...Luiz Lemos
 

Mais procurados (20)

Desenvolvimento de Software com Extreme Programming (XP)
Desenvolvimento de Software com Extreme Programming (XP)Desenvolvimento de Software com Extreme Programming (XP)
Desenvolvimento de Software com Extreme Programming (XP)
 
Conhecendo o eXtreme Programming
Conhecendo o eXtreme ProgrammingConhecendo o eXtreme Programming
Conhecendo o eXtreme Programming
 
Introdução a Metodologia XP (E Xtreme Programming)
Introdução a Metodologia XP (E Xtreme Programming)Introdução a Metodologia XP (E Xtreme Programming)
Introdução a Metodologia XP (E Xtreme Programming)
 
Extreme Programming XP
Extreme Programming XPExtreme Programming XP
Extreme Programming XP
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
Extreme Programming (XP) e Scrum
Extreme Programming (XP) e ScrumExtreme Programming (XP) e Scrum
Extreme Programming (XP) e Scrum
 
Metodologias Ageis
Metodologias AgeisMetodologias Ageis
Metodologias Ageis
 
Introdução à Programação Extrema (Extreme Programming - XP)
Introdução à Programação Extrema (Extreme Programming - XP)Introdução à Programação Extrema (Extreme Programming - XP)
Introdução à Programação Extrema (Extreme Programming - XP)
 
Introdução: eXtreme Programming
Introdução: eXtreme ProgrammingIntrodução: eXtreme Programming
Introdução: eXtreme Programming
 
IPA Conhecendo XP
IPA Conhecendo XPIPA Conhecendo XP
IPA Conhecendo XP
 
Bate-papo com Especialista Terra XP
Bate-papo com Especialista Terra XPBate-papo com Especialista Terra XP
Bate-papo com Especialista Terra XP
 
Programacao Extrema
Programacao ExtremaProgramacao Extrema
Programacao Extrema
 
Metodologias ágeis de desenvolvimento
Metodologias ágeis de desenvolvimento Metodologias ágeis de desenvolvimento
Metodologias ágeis de desenvolvimento
 
Introdução a Métodos Ágeis de Desenvolvimento de Software
Introdução a Métodos Ágeis de Desenvolvimento de SoftwareIntrodução a Métodos Ágeis de Desenvolvimento de Software
Introdução a Métodos Ágeis de Desenvolvimento de Software
 
Métodos Ágeis para Desenvolvimento de Software
Métodos Ágeis para Desenvolvimento de SoftwareMétodos Ágeis para Desenvolvimento de Software
Métodos Ágeis para Desenvolvimento de Software
 
Scrum: Uma Nova Abordagem No Desenvolvimento De Software Face À Demanda...
Scrum: Uma Nova Abordagem No Desenvolvimento De Software Face À       Demanda...Scrum: Uma Nova Abordagem No Desenvolvimento De Software Face À       Demanda...
Scrum: Uma Nova Abordagem No Desenvolvimento De Software Face À Demanda...
 
Aula - Metodologias Ágeis
Aula - Metodologias ÁgeisAula - Metodologias Ágeis
Aula - Metodologias Ágeis
 
eXtreme Programming
eXtreme ProgrammingeXtreme Programming
eXtreme Programming
 
Modelagem Ágil
Modelagem ÁgilModelagem Ágil
Modelagem Ágil
 
Modelagem Ágil
Modelagem ÁgilModelagem Ágil
Modelagem Ágil
 

Destaque

BDD com Cucumber, Selenium e Rails
BDD com Cucumber, Selenium e RailsBDD com Cucumber, Selenium e Rails
BDD com Cucumber, Selenium e RailsMilfont Consulting
 
Combinando OO e Funcional em javascript de forma prática
Combinando OO e Funcional em javascript de forma práticaCombinando OO e Funcional em javascript de forma prática
Combinando OO e Funcional em javascript de forma práticaMilfont Consulting
 
Equipes sem Líderes formais e realmente autogeridas
Equipes sem Líderes formais e realmente autogeridasEquipes sem Líderes formais e realmente autogeridas
Equipes sem Líderes formais e realmente autogeridasMilfont Consulting
 
Engine de template em Javascript com HTML Sprites
Engine de template em Javascript com HTML SpritesEngine de template em Javascript com HTML Sprites
Engine de template em Javascript com HTML SpritesMilfont Consulting
 

Destaque (9)

Mvc sem Controller
Mvc sem ControllerMvc sem Controller
Mvc sem Controller
 
BDD com Cucumber, Selenium e Rails
BDD com Cucumber, Selenium e RailsBDD com Cucumber, Selenium e Rails
BDD com Cucumber, Selenium e Rails
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Behaviour Driven Development
Behaviour Driven DevelopmentBehaviour Driven Development
Behaviour Driven Development
 
Domain driven design
Domain driven designDomain driven design
Domain driven design
 
Mare de Agilidade - BDD e TDD
Mare de Agilidade - BDD e TDDMare de Agilidade - BDD e TDD
Mare de Agilidade - BDD e TDD
 
Combinando OO e Funcional em javascript de forma prática
Combinando OO e Funcional em javascript de forma práticaCombinando OO e Funcional em javascript de forma prática
Combinando OO e Funcional em javascript de forma prática
 
Equipes sem Líderes formais e realmente autogeridas
Equipes sem Líderes formais e realmente autogeridasEquipes sem Líderes formais e realmente autogeridas
Equipes sem Líderes formais e realmente autogeridas
 
Engine de template em Javascript com HTML Sprites
Engine de template em Javascript com HTML SpritesEngine de template em Javascript com HTML Sprites
Engine de template em Javascript com HTML Sprites
 

Semelhante a XP: Programação Extrema

Quando os rótulos não atendem as suas necessidades
Quando os rótulos não atendem as suas necessidadesQuando os rótulos não atendem as suas necessidades
Quando os rótulos não atendem as suas necessidadesJuliano Ribeiro
 
Desenvolvimento Client-Side 2016 (BrazilJS)
Desenvolvimento Client-Side 2016 (BrazilJS)Desenvolvimento Client-Side 2016 (BrazilJS)
Desenvolvimento Client-Side 2016 (BrazilJS)Huge
 
O ciclo da vida
O ciclo da vidaO ciclo da vida
O ciclo da vidaLuiz Borba
 
Encontro Locaweb
Encontro  LocawebEncontro  Locaweb
Encontro LocawebFabio Akita
 
Encontro Locaweb Curitiba
Encontro  Locaweb CuritibaEncontro  Locaweb Curitiba
Encontro Locaweb CuritibaFabio Akita
 
SCRUM e XP - Desenvolvimento Ágil de Software - Experiências e relatos
SCRUM e XP - Desenvolvimento Ágil de Software - Experiências e relatosSCRUM e XP - Desenvolvimento Ágil de Software - Experiências e relatos
SCRUM e XP - Desenvolvimento Ágil de Software - Experiências e relatosPaulo César M Jeveaux
 
Equipes de sucesso final
Equipes de sucesso finalEquipes de sucesso final
Equipes de sucesso finalPaulo Mattos
 
Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?Igor Abade
 
Scrum - Framework, Competências e Valores (versão community)
Scrum -  Framework, Competências e Valores (versão community)Scrum -  Framework, Competências e Valores (versão community)
Scrum - Framework, Competências e Valores (versão community)Manoel Pimentel Medeiros
 
2o ProdConf - Escalando Ágil em Projetos com Múltiplos Times
2o ProdConf - Escalando Ágil em Projetos com Múltiplos Times2o ProdConf - Escalando Ágil em Projetos com Múltiplos Times
2o ProdConf - Escalando Ágil em Projetos com Múltiplos TimesGeraldo B Farias
 

Semelhante a XP: Programação Extrema (20)

Bdd e ci
Bdd e ciBdd e ci
Bdd e ci
 
Curso Scrum
Curso ScrumCurso Scrum
Curso Scrum
 
Quando os rótulos não atendem as suas necessidades
Quando os rótulos não atendem as suas necessidadesQuando os rótulos não atendem as suas necessidades
Quando os rótulos não atendem as suas necessidades
 
Scrum em 1h.
Scrum em 1h.Scrum em 1h.
Scrum em 1h.
 
Scrum 8
Scrum 8Scrum 8
Scrum 8
 
Metodos ageis thinkingdifferent
Metodos ageis thinkingdifferentMetodos ageis thinkingdifferent
Metodos ageis thinkingdifferent
 
SCRUM - Aula1
SCRUM - Aula1SCRUM - Aula1
SCRUM - Aula1
 
Scrum na sua Empresa
Scrum na sua EmpresaScrum na sua Empresa
Scrum na sua Empresa
 
Desenvolvimento Client-Side 2016 (BrazilJS)
Desenvolvimento Client-Side 2016 (BrazilJS)Desenvolvimento Client-Side 2016 (BrazilJS)
Desenvolvimento Client-Side 2016 (BrazilJS)
 
Webinar DevOps - Encontros Ágeis
Webinar DevOps - Encontros ÁgeisWebinar DevOps - Encontros Ágeis
Webinar DevOps - Encontros Ágeis
 
O ciclo da vida
O ciclo da vidaO ciclo da vida
O ciclo da vida
 
Palestra Testes De Unidade Com JUnit
Palestra Testes De Unidade Com JUnitPalestra Testes De Unidade Com JUnit
Palestra Testes De Unidade Com JUnit
 
Encontro Locaweb
Encontro  LocawebEncontro  Locaweb
Encontro Locaweb
 
Encontro Locaweb Curitiba
Encontro  Locaweb CuritibaEncontro  Locaweb Curitiba
Encontro Locaweb Curitiba
 
SCRUM e XP - Desenvolvimento Ágil de Software - Experiências e relatos
SCRUM e XP - Desenvolvimento Ágil de Software - Experiências e relatosSCRUM e XP - Desenvolvimento Ágil de Software - Experiências e relatos
SCRUM e XP - Desenvolvimento Ágil de Software - Experiências e relatos
 
Agilidade no governo 02
Agilidade no governo 02Agilidade no governo 02
Agilidade no governo 02
 
Equipes de sucesso final
Equipes de sucesso finalEquipes de sucesso final
Equipes de sucesso final
 
Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?
 
Scrum - Framework, Competências e Valores (versão community)
Scrum -  Framework, Competências e Valores (versão community)Scrum -  Framework, Competências e Valores (versão community)
Scrum - Framework, Competências e Valores (versão community)
 
2o ProdConf - Escalando Ágil em Projetos com Múltiplos Times
2o ProdConf - Escalando Ágil em Projetos com Múltiplos Times2o ProdConf - Escalando Ágil em Projetos com Múltiplos Times
2o ProdConf - Escalando Ágil em Projetos com Múltiplos Times
 

Mais de Milfont Consulting (20)

Continuous integration e continuous delivery para salvar o seu projeto!
Continuous integration e continuous delivery para salvar o seu projeto!Continuous integration e continuous delivery para salvar o seu projeto!
Continuous integration e continuous delivery para salvar o seu projeto!
 
Beagajs
BeagajsBeagajs
Beagajs
 
MVC Model 3
MVC Model 3MVC Model 3
MVC Model 3
 
Dar caos à ordem
Dar caos à ordemDar caos à ordem
Dar caos à ordem
 
I TDD my jQuery code without Browser
I TDD my jQuery code without BrowserI TDD my jQuery code without Browser
I TDD my jQuery code without Browser
 
Oxente BDD
Oxente BDDOxente BDD
Oxente BDD
 
Construindo WebApps ricas com Rails e Sencha
Construindo WebApps ricas com Rails e SenchaConstruindo WebApps ricas com Rails e Sencha
Construindo WebApps ricas com Rails e Sencha
 
Dar Ordem ao Caos
Dar Ordem ao CaosDar Ordem ao Caos
Dar Ordem ao Caos
 
Primeiro Dia Livre Opensocial
Primeiro Dia Livre OpensocialPrimeiro Dia Livre Opensocial
Primeiro Dia Livre Opensocial
 
Tw Dwr 2007 Ap01
Tw Dwr 2007 Ap01Tw Dwr 2007 Ap01
Tw Dwr 2007 Ap01
 
Course Hibernate 2008
Course Hibernate 2008Course Hibernate 2008
Course Hibernate 2008
 
Opensocial
OpensocialOpensocial
Opensocial
 
Frameworks Ajax
Frameworks AjaxFrameworks Ajax
Frameworks Ajax
 
OpenSocial CCT
OpenSocial CCTOpenSocial CCT
OpenSocial CCT
 
Cct Dsl
Cct DslCct Dsl
Cct Dsl
 
Conhecendo a JSR 223: Scripting for the Java Platform
Conhecendo a JSR 223: Scripting for the Java PlatformConhecendo a JSR 223: Scripting for the Java Platform
Conhecendo a JSR 223: Scripting for the Java Platform
 
Ajaxificando
AjaxificandoAjaxificando
Ajaxificando
 
Integração Contínua 3FCSL
Integração Contínua 3FCSLIntegração Contínua 3FCSL
Integração Contínua 3FCSL
 
Sead 29 09 2006 Usabilidade Com Ajax
Sead 29 09 2006 Usabilidade Com AjaxSead 29 09 2006 Usabilidade Com Ajax
Sead 29 09 2006 Usabilidade Com Ajax
 
Tw Course Ajax 2007 Ap04
Tw Course Ajax 2007 Ap04Tw Course Ajax 2007 Ap04
Tw Course Ajax 2007 Ap04
 

XP: Programação Extrema

  • 1. Extreme Programming Programação Extrema Christiano Milfont Juazeiro do Norte 2009 Copyright 2009 Milfont.org
  • 3. 3 Amigos Ivar Jacobson James Rumbaugh Grady Booch
  • 5. Ainda Temos Problemas Código complexo. Manutenção difícil. Baixa produtividade. Cronograma sempre atrasado. Insatisfação de todos. Design degradado. Documentação defasada, excessiva e ilegível. Fracasso em grande parte dos projetos.
  • 7. Manifesto Ágil Estamos descobrindo maneiras melhores de desenvolver software fazendo-o nós mesmos e ajudando outros a fazê-lo. Através deste trabalho, passamos a valorizar: 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 Ou seja, mesmo havendo valor nos itens à direita, valorizamos mais os itens à esquerda. 2001 Kent Beck Mike Beedle Arie van Bennekum Alistair Cockburn Ward Cunningham Martin Fowler James Grenning Jim Highsmith Andrew Hunt Ron Jeffries Jon Kern Brian Marick Robert C. Martin Steve Mellor Ken Schwaber Jeff Sutherland Dave Thomas
  • 8. 3 Amigos Ward Cunningham Ron Jeffries Kent Beck
  • 9. Extreme Programming Os princípios conectam os valores (crenças fundamentais dos processos) às práticas (atividades concretas do cotidiano).
  • 10. Extreme Programming Valores Courage (Coragem) Para tomar as decisões certas e dizer o que precisa ser dito para os interessados. Communication (Comunicação) Para dar as informações certas e serem usadas com máxima vantagem pelas pessoas certas. Simplicity (Simplicidade) Para descartarmos as coisas que queremos mas que não precisamos agora. Feedback (Parecer) Para aprendermos as lições adequadas a cada oportunidade. Respect (Respeito) Para nos tratar com dignidade e reconhecermos o conhecimento e nosso mútuo desejo de sucesso.
  • 11. Release Plan “A good plan violently executed now is better than a perfect plan executed next week.” “Um bom plano executado violentamente agora é melhor que um plano perfeito executado na próxima semana. General George S. Patton
  • 12. Release e Iteration Planning Release Condições de satisfação (user stories, budget, schedule) Release Planning Iteração Condições de satisfação (user stories + Acceptance Tests) Iteration Incremento Desenvolvimento Planning no produto
  • 13. Master Story List ID Criticidade Item Iteração Estimativa Restando 1 Alto Informar problema 1 10 0 2 Baixo Listar problemas ? ? ? 3 Baixo Cadastrar tipos de bug ? ? ? 4 Médio Aprovar problema 2 ? ? 5 Altíssimo Controle de acesso 1 100 0 6 Baixo Cadastrar status ? ? ? 7 Baixo Cadastrar membros ? ? ? 8 baixo Cadastrar projeto ? ? ?
  • 15. Ubiquitous Language Linguagem Ubíqua
  • 16.
  • 17. Linguagem Ubíqua "A language structured around the domain model and used by all team members to connect all the activities of the team with the software."
  • 18. Linguagem Ubíqua Contexto • Especialistas em negócio não entendem termos de desenvolvedores. • Desenvolvedores não entendem termos do negócio. • Uma palavra ou sentença tem vários significados e modelos dependendo do cenário.
  • 19. Linguagem Ubíqua “The Blind Men and the Elephant”, By John Godfrey Saxe (1813- 1887)
  • 21. Linguagem Ubíqua Um Membro do projeto cadastra uma “Issue” no sistema. Um Gerente de projetos aceita ou rejeita a entrada de Issues para serem trabalhadas. Um Funcionário do hospital dar entrada do Paciente na Emergência. O Cenário de entrada por pacientes depende do Login do usuário com ROLE Admin na Action antes do forward. Um funcionário atende uma solicitação de saída de medicamento pelo prontuário do paciente com limite do cardápio do médico. A Tabela TB_ITEMS tem ligação com a Tabela TB_NOTAS
  • 22. Linguagem Ubíqua Um Membro do projeto cadastra uma “Issue” no sistema. Um Gerente de projetos aceita ou rejeita a entrada de Issues para serem trabalhadas. Um Funcionário do hospital dar entrada do Paciente na Emergência. O Cenário de entrada por pacientes depende do Login do usuário com ROLE Admin na Action antes do forward. Um funcionário atende uma solicitação de saída de medicamento pelo prontuário do paciente com limite do cardápio do médico. A Tabela TB_ITEMS tem ligação com a Tabela TB_NOTAS
  • 23. Linguagem Ubíqua Um Membro do projeto cadastra uma “Issue” no sistema. Um Gerente de projetos aceita ou rejeita a entrada de Issues para serem trabalhadas. Um Funcionário do hospital dar entrada do Paciente na Emergência. O Cenário de entrada por pacientes depende do Login do usuário com ROLE Admin na Action antes do forward. Um funcionário atende uma solicitação de saída de medicamento pelo prontuário do paciente com limite do cardápio do médico. A Tabela TB_ITEMS tem ligação com a Tabela TB_NOTAS
  • 24. Behaviour Driven Development Use Case User Story Um caso de uso captura Uma estoria descreve um contrato entre os funcionalmente o que será interessados de um valioso para os usuários e sistema sobre seus aos compradores de um comportamentos. software. Writing Effective Use Cases User Stories Applied Alistair Cockburn Mike Cohn
  • 25. Behaviour Driven Development User Story • Card [cartão] • Conversation [conversação] • Confirmation [confirmação] “Ron Jeffries, 2001”
  • 26. Behaviour Driven Development User Story • Independente • Negociável • Valioso ao comprador • Estimável • Small [Pequena] • Testável User Stories Applied Mike Cohn
  • 32. Nossa Rotina Diária Standup Meeting @ 9h Pair Up Test First [Prática] Code Refactor Integrar ou Disponibilizar Ir para casa @ 17h
  • 33. Stand Up Meeting Thoughworks india
  • 34. Pair Up • Sit Together (sentam-se juntos) • Shared Code (código compartilhado) • Energized Work ( Trabalho energizado) • Move People Around (Move as pessoas em volta) • Pair Programming • (Programação em Par) – Navegador e Condutor – Trabalho energizado
  • 35. Move People Around Dia Turno Historia 1 2 3 Seg Manhã Paulo/José Pedro/Carlos Tarde Paulo/Carlos Pedro/José Ter Manhã Carlos/Pedro José/Paulo Tarde Carlos/Paulo José/Pedro Qua Manhã Carlos/José Pedro/Paulo Tarde Carlos/Paulo Pedro/José Qui Manhã Paulo/Pedro José/Carlos Tarde Paulo/Carlos José/Pedro Sex Manhã Carlos/José Pedro/Paulo Tarde Carlos/Paulo Pedro/José
  • 36. Pair Programming “E depois disto designou o Senhor ainda outros setenta, e mandou-os adiante da sua face, de dois em dois, a todas as cidades e lugares aonde ele havia de ir.” Lucas 10:1 http://www.bibliaonline.com.br/acf/lc/10
  • 37. Pair Programming • Pros • Contras Força boas práticas [Coding Standards] Preferência de trabalho Revisão de trabalho Desperdício em partes triviais Redução de custos Conflito de Egos Disseminação/nivelamento Habitos pessoais irritantes Menos interrupção e dispersão
  • 38. Test Driven Development “Desenvolvimento guiado por testes é um caminho de gerenciamento do medo durante a programação.” Kent Beck - Test Driven Development by Example
  • 39. Test Driven Development RED-GREEN-REFACTOR 1. Escreva um teste que não funciona. 2. Escreva o código e faço-o funcionar. 3. Refatore e elimine o código repetitivo.
  • 40. Test Driven Development O ritmo em 3 A’s • Arrange [Criar um objeto] • Act [Invocar um método] • Assert [Verificar o resultado] Refactoring Workbook, Bill Wake
  • 42. Extreme Programming Princípios
  • 43. Extreme Programming Práticas primárias Sit Together (Sentem-se juntos) Whole Team (Equipe completa) Energized Work (Trabalho energizado) Pair Programming (Programação em par) Move People Around (Mova as equipes) Stories (Histórias) Weekly Cycle (Ciclo semanal) Quarterly Cycle (Ciclo trimestral) Slack (Folga) Ten-Minute Build (Construir em 10 minutos)
  • 44. Extreme Programming Práticas primárias [cont.] Continuous Integration (Integração contínua) Test-First Integration (Teste primeiro) Incremental Design (Design incremental) Informative Workspace (Ambiente informatizado)
  • 45. Extreme Programming Práticas secundárias Real Customer Involvement (Envolvimento real do cliente) Incremental Deployment (Disponibilização incremental) Team Continuity (Continuidade da equipe) Shrinking Teams (Diminuição de equipes) Root-Cause Analysis (Análise da causa-origem) Daily Deployment (Disponibilização (entrega) diária) Negotiated Scope Contract (Contrato com escopo negociável) Shared Code (Código compartilhado) Code and Tests (Código e testes) Single Code Base (Código único)
  • 46. Extreme Programming Práticas secundárias (Cont.) Metaphor (Metáforas) Refactoring (Refatoração) Pay-per-Use (Pague-por-uso) Design Patterns (Padrões de projeto) 40 Hour Week (40 horas semanais) Planning Game (Jogo do planejamento) Stand Up Meetings (Reuniões em pé) Coding Standards (Padrões de codificação)
  • 47. Extreme Programming Papéis 1.Programmer 2.Customer 3.Tester 4.Tracker 5.Coach 6.Consultant 7.Big Boss