SlideShare uma empresa Scribd logo
“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

Mais conteúdo relacionado

Mais procurados

Vamos falar de DevOps?
Vamos falar de DevOps?Vamos falar de DevOps?
Vamos falar de DevOps?
Karini Rodrigues Magalhaes
 
Praticas DevOps Com ZendServer
Praticas DevOps Com ZendServerPraticas DevOps Com ZendServer
Praticas DevOps Com ZendServer
William 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ático
elliando dias
 
Testes ágeis
Testes ágeisTestes ágeis
Testes ágeis
Vitor Pelizza
 
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
Samanta Cicilia
 
Práticas DevOps com Zend Server
Práticas DevOps com Zend ServerPráticas DevOps com Zend Server
Práticas DevOps com Zend Server
Diego 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 qualidade
Antônio Carlos
 
Desenvolvimento Guiado por Testes
Desenvolvimento Guiado por TestesDesenvolvimento Guiado por Testes
Desenvolvimento Guiado por Testes
elliando dias
 
WTM - Entrega Contínua
WTM - Entrega ContínuaWTM - Entrega Contínua
WTM - Entrega Contínua
Samanta Cicilia
 
Times plataforma-tdc2020
Times plataforma-tdc2020Times plataforma-tdc2020
Times plataforma-tdc2020
Leonardo Ferreira Leite
 
MTC - Automatizando Visual Regression Testing
MTC - Automatizando Visual Regression TestingMTC - Automatizando Visual Regression Testing
MTC - Automatizando Visual Regression Testing
Samanta Cicilia
 
Precisa testar? - Parte 1
Precisa testar? - Parte 1Precisa testar? - Parte 1
Precisa testar? - Parte 1
Fernando Fabricio
 
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 Valor
Samanta Cicilia
 
Minas Testing Conference - Entrega Contínua
Minas Testing Conference - Entrega ContínuaMinas Testing Conference - Entrega Contínua
Minas Testing Conference - Entrega Contínua
Samanta 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
 
TDD
TDDTDD
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
 
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
Vandre Ramos, MSc, MBA, CSM
 
[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes Automatizados[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes Automatizados
Samanta Cicilia
 

Mais procurados (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
 

Destaque

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
 
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 Voglino
GeneXus
 
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
GeneXus
 
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 GeneXus
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...
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
 

Destaque (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...
 

Semelhante a Gestão de Projeto de Desenvolvimento Agil(XP)

Cs 1
Cs 1Cs 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...
Daniel Wildt
 
Desenvolvimento web ágil com Django
Desenvolvimento web ágil com DjangoDesenvolvimento web ágil com Django
Desenvolvimento web ágil com Django
Igor Sobreira
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração Contínua
guesta433a8
 
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ções
elliando dias
 
Paradigmas De Engenharia De Software
Paradigmas De Engenharia De SoftwareParadigmas De Engenharia De Software
Paradigmas De Engenharia De Software
Robson Silva Espig
 
Ruby On Rails
Ruby On RailsRuby On Rails
Ruby On Rails
Paulo César M Jeveaux
 
Introdução ao Asp.Net Mvc
Introdução ao Asp.Net MvcIntrodução ao Asp.Net Mvc
Introdução ao Asp.Net Mvc
Giovanni Bassi
 
Scrum
ScrumScrum
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 ALM
Adriano 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 Desktop
elliando dias
 
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
Diego Tremper
 
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
Manuel Lemos
 
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
elliando 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 phpUnderControl
Diego 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 Enterprise
Oziel Moreira Neto
 
Projeto de Sistemas - Aula002
Projeto de Sistemas - Aula002Projeto de Sistemas - Aula002
Projeto de Sistemas - Aula002
Cláudio Amaral
 

Semelhante a Gestão de Projeto de Desenvolvimento Agil(XP) (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
 
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
 
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
 
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
 

Mais de elliando dias

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slides
elliando 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 ClojureScript
elliando dias
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structures
elliando dias
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de container
elliando dias
 
Geometria Projetiva
Geometria ProjetivaGeometria Projetiva
Geometria Projetiva
elliando 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 Agility
elliando dias
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Libraries
elliando 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
 
Ragel talk
Ragel talkRagel talk
Ragel talk
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 Web
elliando dias
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
elliando dias
 
Minicurso arduino
Minicurso arduinoMinicurso arduino
Minicurso arduino
elliando dias
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorcery
elliando dias
 
Rango
RangoRango
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
elliando dias
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makes
elliando dias
 
Hadoop + Clojure
Hadoop + ClojureHadoop + Clojure
Hadoop + Clojure
elliando 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 Facebook
elliando 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 Study
elliando dias
 

Mais de 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
 

Último

PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
Faga1939
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
joaovmp3
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
WELITONNOGUEIRA3
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
Danilo Pinotti
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
Momento da Informática
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
TomasSousa7
 
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdfDESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
Momento da Informática
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
Momento da Informática
 

Último (8)

PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
 
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdfDESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
 

Gestão de Projeto de Desenvolvimento Agil(XP)

  • 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