SlideShare ist ein Scribd-Unternehmen logo
1 von 20
Downloaden Sie, um offline zu lesen
“Silicon Valley at Monte da Caparica.”
            - PC World, June 2001




Gestão de projectos e desenvolvimento ágil
          eXtreme Programming
               ENEI 2006



                Antão Almada
                Strategic Software Development Director
eXtreme Programming
•   Apresentação não formal.
•   Há muitos livros e web sites com descrições enfadonhas sobre o
    assunto.
•   Há muita gente que não acredita nesta metodologia.
•   Todas as metodologias têm vantagens e desvantagens.
•   É possível combinar metodologias.
•   “Gestão de projectos e desenvolvimento ágil”
YDreams
•   Fundada em Junho de 2000.
     – 1 gestor de projectos
     – 4 programadores
     – 1 designer
•   Início de 2006
     –   4 gestores de projectos
     –   13 programadores
     –   6 designers
     –   2 electrotécnicos
•   Fim de 2006
     –   14 gestores de projectos
     –   44 programadores
     –   23 designers
     –   5 electrotécnicos
     –   7 controlo de qualidade
Problemas
•   Derrapagens de prazos – durante o projecto torna-se claro que
    não é possível cumprir os prazos.
•   Cancelamento do projecto – cliente investiu e pode ficar com algo
    que não funciona.
•   Não aceitação – é apresentado ao cliente uma solução que não o
    satisfaz.
•   Complexidade técnica – plataformas e ferramentas não testadas.
•   Número elevado de “defeitos” – foram deixados acumular até
    tarde demais .
Soluções
•   Derrapagens de prazos – ciclos muito curtos.
•   Cancelamento do projecto – desenvolvimento é começado muito
    cedo.
•   Não aceitação – o cliente é incluído no ciclo de desenvolvimento.
•   Complexidade técnica – integração contínua, standards de
    código, programação a pares, posse colectiva, refactorização.
•   Número elevado de “defeitos” – utilização de testes automáticos.
Práticas
•   Testes
•   Refactorização
•   Programação a pares
•   Posse colectiva
•   Integração contínua
•   Regras de codificação
Testes
•   Escrita dos testes antes do desenvolvimento - “unit tests”
•   Qualquer alteração no código é validada de imediato
•   Aconselhamos o uso:
     –   NUnit (http://www.nunit.org/)
     –   MbUnit (http://www.testdriven.net/)
     –   TestDriven (http://www.testdriven.net/)
     –   NCover (http://www.ncover.org/)
Refactorização
•   Técnica de melhorar o código sem alterar as funcionalidades.
•   Assume que faz parte do ciclo de desenvolvimento.
•   Alguns IDEs já permitem a modificação automática dos nomes de
    variáveis, classes, funções, etc.
Programação a pares
•   Dois programadores partilham o mesmo computador.
•   Duas cabeças pensam melhor que uma.
•   Pelo menos dois programadores estão familiarizados com essa
    parte do código.
•   Menos hipóteses dos testes falharem.
•   Incentiva a partilha de conhecimento.
•   Revisão do código feita continuamente.
•   Um programador foca-se nos detalhes enquanto o outro foca-se
    nos conceitos.
Posse colectiva
•   Membros da equipa têm acesso a todo o código.
•   “Revision Control System”
•   Repositório centralizado de código fonte e recursos do projecto
•   Permite backups periódicos
•   Guarda histórico
•   Possibilita o trabalho em equipa
•   Aconselhamos o uso:
     – Subversion (http://subversion.tigris.org/)
     – TortoiseSVN (http://tortoisesvn.tigris.org/)
     – AnkhSVN (http://ankhsvn.tigris.org/)
Revision Control System
•   “Checkout” – vai buscar a última versão.
•   “Commit” – coloca actualizações no servidor.
     – Se entretanto o ficheiro tiver sido alterado faz “merge” do
       ficheiro.
•   “Tag” – guarda uma versão.
•   “Branch” – cria “ramo” de desenvolvimento paralelo.
•   “Merge” – insere “ramo” no “tronco” principal.
Integração contínua
•   Validação automática de cada alteração.
     –   Compila
     –   Testa
     –   Gera documentação
     –   Analisa código
•   Aconselhamos o uso:
     –   CruiseControl.NET (http://ccnet.thoughtworks.com/)
     –   CCTray (http://ccnet.thoughtworks.com/)
     –   NAnt (http://nant.sourceforge.net/)
     –   NDoc (http://ndoc.sourceforge.net/)
     –   FxCop (http://www.gotdotnet.com/team/fxcop/)
Regras de codificação
•   Definição de regras para cada linguagem usada:
     –   Formatação
     –   Estrutura do projecto
     –   Nomes
     –   Processamento de erros
     –   Comentários
•   Podem ser divididas nas seguintes categorias:
     – Obrigatorias
     – Directivas
     – Recomendações
•   Devem ser especificadas num Wiki
Registo de tarefas e problemas
•   Não é possível testar tudo com “unit tests”
•   Podem faltar testes para certas condições
•   Controlo de qualidade deve detectar estas situações
•   “Issue Tracking System”
•   Fica tudo registado
•   Histórico
•   Permite:
     – Atribuição de tarefas a membros da equipa
     – Trabalho em equipa
     – Estimar o progresso do projecto
Issue Tracking System
•   Classificação por gravidade:
     –   Sai da aplicação
     –   Não há alternativa
     –   Há alternativa
     –   Pormenor
     –   Sugestão
•   Tarefa passa por vários estados até ser resolvida:
     –   Criado
     –   Atribuído
     –   Resolvido
     –   Testado
     –   Fechado
Issue Tracking System

•   Aconselhamos o uso:
    – Trac (http://www.edgewall.com/trac/)
        •   Wiki – documentação, feedback e discussão
        •   Issue Tracker – registo de “problemas”
        •   Project Timeline – definição de “milestones”
        •   Code Browser – integração com o Subversion
        •   Changeset Viewer – histórico do projecto
        •   Plugins – extensível...
Rotina diária do programador
                        Escolher par


                       Escolher tarefa


                      Desenhar solução

                       Escrever teste



    Escrever código                    Refractorar código


                                            Integrar

                                          Ir para casa
Princípios
•   Semanas de 40 horas
     – Programadores cansados:
         • Produzem menos
         • Criam mais “bugs”
•   Programar apenas o necessário, nada mais...
eXtreme Programming
•   Não é apenas uma metodologia
•   É apoiada por uma série de ferramentas
•   Estas ferramentas podem e devem ser usadas noutras
    metodologias
•   Simplifica o trabalho dos programadores (testes vs
    documentação)
•   Melhora a qualidade das aplicações
•   Reduz os pontos de falha
“Silicon Valley at Monte da Caparica.”
- PC World, June 2001

Weitere ähnliche Inhalte

Was ist angesagt?

Praticas DevOps Com ZendServer
Praticas DevOps Com ZendServerPraticas DevOps Com ZendServer
Praticas DevOps Com ZendServerWilliam Felipe
 
Desenvolvendo aplicações orientadas a testes de aceitação: um caso prático
Desenvolvendo aplicações orientadas a testes de aceitação: um caso práticoDesenvolvendo aplicações orientadas a testes de aceitação: um caso prático
Desenvolvendo aplicações orientadas a testes de aceitação: um caso práticoelliando dias
 
Importância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOpsImportância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOpsSamanta Cicilia
 
Práticas DevOps com Zend Server
Práticas DevOps com Zend ServerPráticas DevOps com Zend Server
Práticas DevOps com Zend ServerDiego Santos
 
O Impacto da adoção de DevOps na qualidade
O Impacto da adoção de DevOps na qualidadeO Impacto da adoção de DevOps na qualidade
O Impacto da adoção de DevOps na qualidadeAntônio Carlos
 
Desenvolvimento Guiado por Testes
Desenvolvimento Guiado por TestesDesenvolvimento Guiado por Testes
Desenvolvimento Guiado por Testeselliando dias
 
MTC - Automatizando Visual Regression Testing
MTC - Automatizando Visual Regression TestingMTC - Automatizando Visual Regression Testing
MTC - Automatizando Visual Regression TestingSamanta Cicilia
 
Visual Regression Tests - Dando um Upload nos seus testes de UI!
Visual Regression Tests - Dando um Upload nos seus testes de UI!Visual Regression Tests - Dando um Upload nos seus testes de UI!
Visual Regression Tests - Dando um Upload nos seus testes de UI!Mariana Elisa Moisés , CTFL-AT,MBA
 
[Uff] Continuous Delivery: Entrega Contínua de Software de Valor
[Uff] Continuous Delivery: Entrega Contínua de Software de Valor[Uff] Continuous Delivery: Entrega Contínua de Software de Valor
[Uff] Continuous Delivery: Entrega Contínua de Software de ValorSamanta Cicilia
 
Minas Testing Conference - Entrega Contínua
Minas Testing Conference - Entrega ContínuaMinas Testing Conference - Entrega Contínua
Minas Testing Conference - Entrega ContínuaSamanta Cicilia
 
[MTC 2021] Tests smells: aquele cheirinho de que algo não está bom no seu cód...
[MTC 2021] Tests smells: aquele cheirinho de que algo não está bom no seu cód...[MTC 2021] Tests smells: aquele cheirinho de que algo não está bom no seu cód...
[MTC 2021] Tests smells: aquele cheirinho de que algo não está bom no seu cód...minastestingconference
 
Do commit à produção: integração contínua e entrega contínua no pipeline de i...
Do commit à produção: integração contínua e entrega contínua no pipeline de i...Do commit à produção: integração contínua e entrega contínua no pipeline de i...
Do commit à produção: integração contínua e entrega contínua no pipeline de i...Leonardo Ferreira Leite
 
[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes Automatizados[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes AutomatizadosSamanta Cicilia
 

Was ist angesagt? (20)

Vamos falar de DevOps?
Vamos falar de DevOps?Vamos falar de DevOps?
Vamos falar de DevOps?
 
Praticas DevOps Com ZendServer
Praticas DevOps Com ZendServerPraticas DevOps Com ZendServer
Praticas DevOps Com ZendServer
 
Desenvolvendo aplicações orientadas a testes de aceitação: um caso prático
Desenvolvendo aplicações orientadas a testes de aceitação: um caso práticoDesenvolvendo aplicações orientadas a testes de aceitação: um caso prático
Desenvolvendo aplicações orientadas a testes de aceitação: um caso prático
 
Testes ágeis
Testes ágeisTestes ágeis
Testes ágeis
 
Importância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOpsImportância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOps
 
Práticas DevOps com Zend Server
Práticas DevOps com Zend ServerPráticas DevOps com Zend Server
Práticas DevOps com Zend Server
 
O Impacto da adoção de DevOps na qualidade
O Impacto da adoção de DevOps na qualidadeO Impacto da adoção de DevOps na qualidade
O Impacto da adoção de DevOps na qualidade
 
Desenvolvimento Guiado por Testes
Desenvolvimento Guiado por TestesDesenvolvimento Guiado por Testes
Desenvolvimento Guiado por Testes
 
WTM - Entrega Contínua
WTM - Entrega ContínuaWTM - Entrega Contínua
WTM - Entrega Contínua
 
Times plataforma-tdc2020
Times plataforma-tdc2020Times plataforma-tdc2020
Times plataforma-tdc2020
 
MTC - Automatizando Visual Regression Testing
MTC - Automatizando Visual Regression TestingMTC - Automatizando Visual Regression Testing
MTC - Automatizando Visual Regression Testing
 
Precisa testar? - Parte 1
Precisa testar? - Parte 1Precisa testar? - Parte 1
Precisa testar? - Parte 1
 
Visual Regression Tests - Dando um Upload nos seus testes de UI!
Visual Regression Tests - Dando um Upload nos seus testes de UI!Visual Regression Tests - Dando um Upload nos seus testes de UI!
Visual Regression Tests - Dando um Upload nos seus testes de UI!
 
[Uff] Continuous Delivery: Entrega Contínua de Software de Valor
[Uff] Continuous Delivery: Entrega Contínua de Software de Valor[Uff] Continuous Delivery: Entrega Contínua de Software de Valor
[Uff] Continuous Delivery: Entrega Contínua de Software de Valor
 
Minas Testing Conference - Entrega Contínua
Minas Testing Conference - Entrega ContínuaMinas Testing Conference - Entrega Contínua
Minas Testing Conference - Entrega Contínua
 
[MTC 2021] Tests smells: aquele cheirinho de que algo não está bom no seu cód...
[MTC 2021] Tests smells: aquele cheirinho de que algo não está bom no seu cód...[MTC 2021] Tests smells: aquele cheirinho de que algo não está bom no seu cód...
[MTC 2021] Tests smells: aquele cheirinho de que algo não está bom no seu cód...
 
TDD
TDDTDD
TDD
 
Do commit à produção: integração contínua e entrega contínua no pipeline de i...
Do commit à produção: integração contínua e entrega contínua no pipeline de i...Do commit à produção: integração contínua e entrega contínua no pipeline de i...
Do commit à produção: integração contínua e entrega contínua no pipeline de i...
 
E so mais um campinho na tela
E so mais um campinho na telaE so mais um campinho na tela
E so mais um campinho na tela
 
[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes Automatizados[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes Automatizados
 

Andere mochten auch

Consumer APPs: 25 mil downloads em um fim de semana
Consumer APPs: 25 mil downloads em um fim de semanaConsumer APPs: 25 mil downloads em um fim de semana
Consumer APPs: 25 mil downloads em um fim de semanaGeneXus
 
GeneXus: Aportando valor al desarrollo de aplicaciones en ecosistemas SAP - D...
GeneXus: Aportando valor al desarrollo de aplicaciones en ecosistemas SAP - D...GeneXus: Aportando valor al desarrollo de aplicaciones en ecosistemas SAP - D...
GeneXus: Aportando valor al desarrollo de aplicaciones en ecosistemas SAP - D...GeneXus
 
Lo que se viene: ¿Cómo escribirás tu futuro? - Laura Voglino
Lo que se viene: ¿Cómo escribirás tu futuro? - Laura VoglinoLo que se viene: ¿Cómo escribirás tu futuro? - Laura Voglino
Lo que se viene: ¿Cómo escribirás tu futuro? - Laura VoglinoGeneXus
 
Boliches Uy - De idea a realidad con GeneXus. - Martín Torrado
Boliches Uy - De idea a realidad con GeneXus. - Martín TorradoBoliches Uy - De idea a realidad con GeneXus. - Martín Torrado
Boliches Uy - De idea a realidad con GeneXus. - Martín TorradoGeneXus
 
Como aproveitar a revolução Web+Mobile com soluções multi-plataforma na Comun...
Como aproveitar a revolução Web+Mobile com soluções multi-plataforma na Comun...Como aproveitar a revolução Web+Mobile com soluções multi-plataforma na Comun...
Como aproveitar a revolução Web+Mobile com soluções multi-plataforma na Comun...GeneXus
 
O que é GeneXus?
O que é GeneXus?O que é GeneXus?
O que é GeneXus?GeneXus
 
Nossa experiência com GeneXus
Nossa experiência com GeneXusNossa experiência com GeneXus
Nossa experiência com GeneXusGeneXus
 
Tecnisa: Una visión del negocio y la tecnología utilizando GeneXus X Evolutio...
Tecnisa: Una visión del negocio y la tecnología utilizando GeneXus X Evolutio...Tecnisa: Una visión del negocio y la tecnología utilizando GeneXus X Evolutio...
Tecnisa: Una visión del negocio y la tecnología utilizando GeneXus X Evolutio...GeneXus
 
Experiencias en el desarrollo de aplicaciones móviles en el sector salud de M...
Experiencias en el desarrollo de aplicaciones móviles en el sector salud de M...Experiencias en el desarrollo de aplicaciones móviles en el sector salud de M...
Experiencias en el desarrollo de aplicaciones móviles en el sector salud de M...GeneXus
 

Andere mochten auch (9)

Consumer APPs: 25 mil downloads em um fim de semana
Consumer APPs: 25 mil downloads em um fim de semanaConsumer APPs: 25 mil downloads em um fim de semana
Consumer APPs: 25 mil downloads em um fim de semana
 
GeneXus: Aportando valor al desarrollo de aplicaciones en ecosistemas SAP - D...
GeneXus: Aportando valor al desarrollo de aplicaciones en ecosistemas SAP - D...GeneXus: Aportando valor al desarrollo de aplicaciones en ecosistemas SAP - D...
GeneXus: Aportando valor al desarrollo de aplicaciones en ecosistemas SAP - D...
 
Lo que se viene: ¿Cómo escribirás tu futuro? - Laura Voglino
Lo que se viene: ¿Cómo escribirás tu futuro? - Laura VoglinoLo que se viene: ¿Cómo escribirás tu futuro? - Laura Voglino
Lo que se viene: ¿Cómo escribirás tu futuro? - Laura Voglino
 
Boliches Uy - De idea a realidad con GeneXus. - Martín Torrado
Boliches Uy - De idea a realidad con GeneXus. - Martín TorradoBoliches Uy - De idea a realidad con GeneXus. - Martín Torrado
Boliches Uy - De idea a realidad con GeneXus. - Martín Torrado
 
Como aproveitar a revolução Web+Mobile com soluções multi-plataforma na Comun...
Como aproveitar a revolução Web+Mobile com soluções multi-plataforma na Comun...Como aproveitar a revolução Web+Mobile com soluções multi-plataforma na Comun...
Como aproveitar a revolução Web+Mobile com soluções multi-plataforma na Comun...
 
O que é GeneXus?
O que é GeneXus?O que é GeneXus?
O que é GeneXus?
 
Nossa experiência com GeneXus
Nossa experiência com GeneXusNossa experiência com GeneXus
Nossa experiência com GeneXus
 
Tecnisa: Una visión del negocio y la tecnología utilizando GeneXus X Evolutio...
Tecnisa: Una visión del negocio y la tecnología utilizando GeneXus X Evolutio...Tecnisa: Una visión del negocio y la tecnología utilizando GeneXus X Evolutio...
Tecnisa: Una visión del negocio y la tecnología utilizando GeneXus X Evolutio...
 
Experiencias en el desarrollo de aplicaciones móviles en el sector salud de M...
Experiencias en el desarrollo de aplicaciones móviles en el sector salud de M...Experiencias en el desarrollo de aplicaciones móviles en el sector salud de M...
Experiencias en el desarrollo de aplicaciones móviles en el sector salud de M...
 

Ähnlich wie XP Agile development principles

Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Dan...
Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Dan...Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Dan...
Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Dan...Daniel Wildt
 
Desenvolvimento web ágil com Django
Desenvolvimento web ágil com DjangoDesenvolvimento web ágil com Django
Desenvolvimento web ágil com DjangoIgor Sobreira
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração Contínuaguesta433a8
 
Introdução ao Windows Azure - Sessão 1 (mais teórica)
Introdução ao Windows Azure - Sessão 1 (mais teórica)Introdução ao Windows Azure - Sessão 1 (mais teórica)
Introdução ao Windows Azure - Sessão 1 (mais teórica)Giovanni Bassi
 
Software Configuration Management Problemas e Soluções
Software Configuration Management Problemas e SoluçõesSoftware Configuration Management Problemas e Soluções
Software Configuration Management Problemas e Soluçõeselliando dias
 
Paradigmas De Engenharia De Software
Paradigmas De Engenharia De SoftwareParadigmas De Engenharia De Software
Paradigmas De Engenharia De SoftwareRobson Silva Espig
 
Introdução ao Asp.Net Mvc
Introdução ao Asp.Net MvcIntrodução ao Asp.Net Mvc
Introdução ao Asp.Net MvcGiovanni Bassi
 
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
 
Qualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALMQualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALMAdriano Bertucci
 
Netbeans 6.0: Aplicações Java Desktop
Netbeans 6.0: Aplicações Java DesktopNetbeans 6.0: Aplicações Java Desktop
Netbeans 6.0: Aplicações Java Desktopelliando dias
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlManuel Lemos
 
Integracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControlIntegracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControlDiego Tremper
 
Gerenciamento de Projeto para Desenvolvimento de Sistema
Gerenciamento de Projeto para Desenvolvimento de SistemaGerenciamento de Projeto para Desenvolvimento de Sistema
Gerenciamento de Projeto para Desenvolvimento de Sistemaelliando dias
 
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...minastestingconference
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlDiego Tremper
 
Boa Práticas no Desenvolvimento Java Enterprise
Boa Práticas no Desenvolvimento Java EnterpriseBoa Práticas no Desenvolvimento Java Enterprise
Boa Práticas no Desenvolvimento Java EnterpriseOziel Moreira Neto
 
Projeto de Sistemas - Aula002
Projeto de Sistemas - Aula002Projeto de Sistemas - Aula002
Projeto de Sistemas - Aula002Cláudio Amaral
 

Ähnlich wie XP Agile development principles (20)

Cs 1
Cs 1Cs 1
Cs 1
 
Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Dan...
Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Dan...Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Dan...
Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Dan...
 
Desenvolvimento web ágil com Django
Desenvolvimento web ágil com DjangoDesenvolvimento web ágil com Django
Desenvolvimento web ágil com Django
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração Contínua
 
Introdução ao Windows Azure - Sessão 1 (mais teórica)
Introdução ao Windows Azure - Sessão 1 (mais teórica)Introdução ao Windows Azure - Sessão 1 (mais teórica)
Introdução ao Windows Azure - Sessão 1 (mais teórica)
 
Software Configuration Management Problemas e Soluções
Software Configuration Management Problemas e SoluçõesSoftware Configuration Management Problemas e Soluções
Software Configuration Management Problemas e Soluções
 
Paradigmas De Engenharia De Software
Paradigmas De Engenharia De SoftwareParadigmas De Engenharia De Software
Paradigmas De Engenharia De Software
 
Ruby On Rails
Ruby On RailsRuby On Rails
Ruby On Rails
 
Introdução ao Asp.Net Mvc
Introdução ao Asp.Net MvcIntrodução ao Asp.Net Mvc
Introdução ao Asp.Net Mvc
 
Scrum
ScrumScrum
Scrum
 
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?
 
Qualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALMQualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALM
 
Netbeans 6.0: Aplicações Java Desktop
Netbeans 6.0: Aplicações Java DesktopNetbeans 6.0: Aplicações Java Desktop
Netbeans 6.0: Aplicações Java Desktop
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControl
 
Integracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControlIntegracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControl
 
Gerenciamento de Projeto para Desenvolvimento de Sistema
Gerenciamento de Projeto para Desenvolvimento de SistemaGerenciamento de Projeto para Desenvolvimento de Sistema
Gerenciamento de Projeto para Desenvolvimento de Sistema
 
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControl
 
Boa Práticas no Desenvolvimento Java Enterprise
Boa Práticas no Desenvolvimento Java EnterpriseBoa Práticas no Desenvolvimento Java Enterprise
Boa Práticas no Desenvolvimento Java Enterprise
 
Projeto de Sistemas - Aula002
Projeto de Sistemas - Aula002Projeto de Sistemas - Aula002
Projeto de Sistemas - Aula002
 

Mehr von elliando dias

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slideselliando dias
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScriptelliando dias
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structureselliando dias
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de containerelliando dias
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agilityelliando dias
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Librarieselliando dias
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!elliando dias
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Webelliando dias
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduinoelliando dias
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorceryelliando dias
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Designelliando dias
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makeselliando dias
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.elliando dias
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebookelliando dias
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Studyelliando dias
 

Mehr von elliando dias (20)

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slides
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScript
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structures
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de container
 
Geometria Projetiva
Geometria ProjetivaGeometria Projetiva
Geometria Projetiva
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agility
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Libraries
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!
 
Ragel talk
Ragel talkRagel talk
Ragel talk
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Web
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 
Minicurso arduino
Minicurso arduinoMinicurso arduino
Minicurso arduino
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorcery
 
Rango
RangoRango
Rango
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Design
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makes
 
Hadoop + Clojure
Hadoop + ClojureHadoop + Clojure
Hadoop + Clojure
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebook
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Study
 

XP Agile development principles

  • 1. “Silicon Valley at Monte da Caparica.” - PC World, June 2001 Gestão de projectos e desenvolvimento ágil eXtreme Programming ENEI 2006 Antão Almada Strategic Software Development Director
  • 2. eXtreme Programming • Apresentação não formal. • Há muitos livros e web sites com descrições enfadonhas sobre o assunto. • Há muita gente que não acredita nesta metodologia. • Todas as metodologias têm vantagens e desvantagens. • É possível combinar metodologias. • “Gestão de projectos e desenvolvimento ágil”
  • 3. YDreams • Fundada em Junho de 2000. – 1 gestor de projectos – 4 programadores – 1 designer • Início de 2006 – 4 gestores de projectos – 13 programadores – 6 designers – 2 electrotécnicos • Fim de 2006 – 14 gestores de projectos – 44 programadores – 23 designers – 5 electrotécnicos – 7 controlo de qualidade
  • 4. Problemas • Derrapagens de prazos – durante o projecto torna-se claro que não é possível cumprir os prazos. • Cancelamento do projecto – cliente investiu e pode ficar com algo que não funciona. • Não aceitação – é apresentado ao cliente uma solução que não o satisfaz. • Complexidade técnica – plataformas e ferramentas não testadas. • Número elevado de “defeitos” – foram deixados acumular até tarde demais .
  • 5. Soluções • Derrapagens de prazos – ciclos muito curtos. • Cancelamento do projecto – desenvolvimento é começado muito cedo. • Não aceitação – o cliente é incluído no ciclo de desenvolvimento. • Complexidade técnica – integração contínua, standards de código, programação a pares, posse colectiva, refactorização. • Número elevado de “defeitos” – utilização de testes automáticos.
  • 6. Práticas • Testes • Refactorização • Programação a pares • Posse colectiva • Integração contínua • Regras de codificação
  • 7. Testes • Escrita dos testes antes do desenvolvimento - “unit tests” • Qualquer alteração no código é validada de imediato • Aconselhamos o uso: – NUnit (http://www.nunit.org/) – MbUnit (http://www.testdriven.net/) – TestDriven (http://www.testdriven.net/) – NCover (http://www.ncover.org/)
  • 8. Refactorização • Técnica de melhorar o código sem alterar as funcionalidades. • Assume que faz parte do ciclo de desenvolvimento. • Alguns IDEs já permitem a modificação automática dos nomes de variáveis, classes, funções, etc.
  • 9. Programação a pares • Dois programadores partilham o mesmo computador. • Duas cabeças pensam melhor que uma. • Pelo menos dois programadores estão familiarizados com essa parte do código. • Menos hipóteses dos testes falharem. • Incentiva a partilha de conhecimento. • Revisão do código feita continuamente. • Um programador foca-se nos detalhes enquanto o outro foca-se nos conceitos.
  • 10. Posse colectiva • Membros da equipa têm acesso a todo o código. • “Revision Control System” • Repositório centralizado de código fonte e recursos do projecto • Permite backups periódicos • Guarda histórico • Possibilita o trabalho em equipa • Aconselhamos o uso: – Subversion (http://subversion.tigris.org/) – TortoiseSVN (http://tortoisesvn.tigris.org/) – AnkhSVN (http://ankhsvn.tigris.org/)
  • 11. Revision Control System • “Checkout” – vai buscar a última versão. • “Commit” – coloca actualizações no servidor. – Se entretanto o ficheiro tiver sido alterado faz “merge” do ficheiro. • “Tag” – guarda uma versão. • “Branch” – cria “ramo” de desenvolvimento paralelo. • “Merge” – insere “ramo” no “tronco” principal.
  • 12. Integração contínua • Validação automática de cada alteração. – Compila – Testa – Gera documentação – Analisa código • Aconselhamos o uso: – CruiseControl.NET (http://ccnet.thoughtworks.com/) – CCTray (http://ccnet.thoughtworks.com/) – NAnt (http://nant.sourceforge.net/) – NDoc (http://ndoc.sourceforge.net/) – FxCop (http://www.gotdotnet.com/team/fxcop/)
  • 13. Regras de codificação • Definição de regras para cada linguagem usada: – Formatação – Estrutura do projecto – Nomes – Processamento de erros – Comentários • Podem ser divididas nas seguintes categorias: – Obrigatorias – Directivas – Recomendações • Devem ser especificadas num Wiki
  • 14. Registo de tarefas e problemas • Não é possível testar tudo com “unit tests” • Podem faltar testes para certas condições • Controlo de qualidade deve detectar estas situações • “Issue Tracking System” • Fica tudo registado • Histórico • Permite: – Atribuição de tarefas a membros da equipa – Trabalho em equipa – Estimar o progresso do projecto
  • 15. Issue Tracking System • Classificação por gravidade: – Sai da aplicação – Não há alternativa – Há alternativa – Pormenor – Sugestão • Tarefa passa por vários estados até ser resolvida: – Criado – Atribuído – Resolvido – Testado – Fechado
  • 16. Issue Tracking System • Aconselhamos o uso: – Trac (http://www.edgewall.com/trac/) • Wiki – documentação, feedback e discussão • Issue Tracker – registo de “problemas” • Project Timeline – definição de “milestones” • Code Browser – integração com o Subversion • Changeset Viewer – histórico do projecto • Plugins – extensível...
  • 17. Rotina diária do programador Escolher par Escolher tarefa Desenhar solução Escrever teste Escrever código Refractorar código Integrar Ir para casa
  • 18. Princípios • Semanas de 40 horas – Programadores cansados: • Produzem menos • Criam mais “bugs” • Programar apenas o necessário, nada mais...
  • 19. eXtreme Programming • Não é apenas uma metodologia • É apoiada por uma série de ferramentas • Estas ferramentas podem e devem ser usadas noutras metodologias • Simplifica o trabalho dos programadores (testes vs documentação) • Melhora a qualidade das aplicações • Reduz os pontos de falha
  • 20. “Silicon Valley at Monte da Caparica.” - PC World, June 2001