SlideShare uma empresa Scribd logo
1
ENGENHARIA DE SOFTWARE - AULA 03
INTRODUÇÃO À PROGRAMAÇÃO
EXTREMA (XP)
PROF. DRA. CLAUDIA MELO
19/Mar/2018
@claudia_melo claudiamelo.org
PROGRAMAÇÃO EXTREMA - XP
•Metodologia de desenvolvimento de software
aperfeiçoada nos últimos 10 anos
•Ganhou notoriedade a partir da OOPSLA’2000
•Nome principal: Kent Beck
2
A QUEM SE DESTINA XP?
• Papéis (sem hierarquia):
– Programadores (foco central)
– “Treinador” ou “Técnico” (coach)
– “Acompanhador” (tracker)
– Cliente
3
E SE EU NÃO ME ENCAIXO NESSES CASOS?
• Você ainda pode aprender muito sobre desenvolvimento
de software
• Terá elementos para repensar as suas práticas
• No início se dizia:
– “Ou você é 100% eXtremo ou não é eXtremo. Não dá para ser
80% XP”
• Hoje não é mais necessariamente assim (definitivamente)
4
5
Copyleft AgilCoop
OS VALORES DE XP
• Comunicação
• Feedback
• Coragem
• Simplicidade
• Respeito
– Valor criado na versão de 2004
6
AS 12 PRÁTICAS DE XP

1.Planejamento
2.Fases Pequenas
3.Metáfora
4.Design Simples
5.Testes
6.Refatoração
7.Programação Pareada
7
1.Propriedade Coletiva
2.Integração Contínua
3.Semana de 40 horas
4.Cliente junto aos
desenvolvedores
5.Padronização do
código
PRINCÍPIOS BÁSICOS DE XP
• Feedback rápido
• Simplicidade é o melhor negócio
• Mudanças incrementais
• Carregue a bandeira das mudanças / não valorize o medo (Embrace
change)
• Alta qualidade do código
8
AS 4 VARIÁVEIS DO DESENVOLVIMENTO
• Tempo
• Custo
• Qualidade
• Escopo (foco principal de XP)
9
10https://www.atlassian.com/agile/agile-iron-triangle/sectionWrap/00/column/00/moreContent/05/imageBinary/waterfall-v-agile-iron-triangle-v03.png
4 VARIÁVEIS E O TRIÂNGULO DE FERRO
(A.K.A. COBERTOR CURTO)
UM PROJETO XP
• Fase de Exploração
– duração: 1 a 6 meses
– termina quando a primeira versão do software é enviada ao
cliente
– clientes escrevem “histórias” (story cards)
– programadora/es interagem com clientes e discutem
tecnologias
– Não só discutem, experimentam diferentes tecnologias e
arquiteturas para o sistema
11
12
UM DIA NA VIDA DO/A
PROGRAMADOR/A
XP
UM DIA NA VIDA DE
• Escolhe a próxima história mais
importante do cliente
• Procura um par livre
• Escolhe um computador para
programação pareada
• Seleciona um “cartão de história”
contendo uma tarefa claramente
relacionada a uma característica
(feature) desejada pelo cliente
13
• Discute modificações recentes no sistema
• Discute história do cliente (Business
Analysis)
• Testes (Test-Driven Development)
• Implementação
• Projeto (design)
• Integração do código
14
UM DIA NA VIDA DE
https://www.slideshare.net/SunilMundra/agile-101-36992572
Analyze
Design
Code
Test
Deploy
Develop	&	deploy
Working	software	showcased	to	the	business
• Atos constantes no desenvolvimento:
– Executa testes antigos
– Busca oportunidades para simplificação
– Modifica desenho e implementação incrementalmente
baseado na funcionalidade exigida no momento
– Escreve novos testes
– Enquanto todos os testes não rodam a 100%, o trabalho não
está terminado
– Integra novo código ao repositório
15
UM DIA NA VIDA DE
TESTES
• Fundamento mais importante de XP
• É o que dá segurança e coragem ao grupo
• Testes de unidade (Unit tests)
– escritos, por quem desenvolve, para testar cada elemento do sistema
(p.ex., cada método em cada caso)
• Testes de funcionalidades (Functional tests)
– escritos pelos clientes para testar a funcionalidade do sistema (Testes
de Aceitação)
16
TESTES
• Testes das unidades do sistema
– Tem que estar sempre funcionando a 100%
– São executados várias vezes por dia
– Executados à noite automaticamente
• Testes das funcionalidades
– Vão crescendo de 0% a 100%
– Quando chegam a 100% acabou o projeto
17
O CÓDIGO
• Padrões de estilo adotados pelo grupo inteiro
• O mais claro possível
– nomes claros (intention-revealing names)
– XP não se baseia em documentações detalhadas e extensas (perde-se
sincronia)
• Comentários sempre que necessários
• Comentários padronizados
• Programação Pareada ajuda muito!
18
19
PROGRAMAÇÃO
PAREADA
https://www.flickr.com/photos/provoost/2246718091
• Erro de um detectado imediatamente
pelo outro (grande economia de tempo)
• Maior diversidade de ideias, técnicas,
algoritmos
• Enquanto um escreve, o outro pensa
em contra-exemplos, problemas de
eficiência, etc
• Vergonha de escrever código feio
(gambiarras) na frente do seu par
• Pareamento de acordo com
especialidades
– Ex.: Sistema Multimídia Orientado a Objetos
• Experimentos controlados mostraram
que a qualidade do código produzido
aumenta sem perda de velocidade 

[Livro Pair Programming Illuminated: Laurie
Williams, Robert Kessler]
QUANDO PROGRAMAR EM PAR?
• Princípios para a seleção de pares
• Conselhos práticos, tais como montagem de mobiliário,
rodízio de pares e eliminação de pares ‘ruins’
• Sete hábitos de programadores em par eficazes
20
Dybå, T. et al, 2007. Are Two Heads Better
than One? On the Effectiveness of Pair
Programming
PROPRIEDADE COLETIVA DO CÓDIGO
• Modelo tradicional: só autor de uma função pode modificá-la
• XP: o código pertence a todos
• ps: não por ser software livre, mas por ser um princípio
• Se alguém identifica uma oportunidade para simplificar,
consertar ou melhorar código escrito por outra pessoa, que o
faça
• Mas rode os testes!
21
REFATORAÇÃO (REFACTORING)
• Uma [pequena] modificação no sistema que não
altera o seu comportamento funcional
• mas que melhora alguma qualidade não-funcional:
– simplicidade
– flexibilidade
– clareza
– [desempenho]
22
EXEMPLOS DE REFATORAÇÃO
• Mudança do nome de variáveis
• Mudanças nas interfaces dos objetos
• Pequenas mudanças arquiteturais
• Encapsular código repetido em um
novo método
• Generalização de métodos
• raizQuadrada(float x)⇒ raiz(float x,
int n)
23
CLIENTE/PRODUCT OWNER
• Responsável por escrever “histórias”
• Mas pessoas do time acompanham e auxiliam OU
• Pode estar representado por alguém do time
(menos ideal)
• Trabalha no mesmo espaço físico do grupo
• Novas versões são enviadas para produção
todo mês (ou toda semana)
• Feedback do cliente é essencial
• Requisitos mudam (e isso não é mau)
24
COACH (TREINADOR)
• Em geral, o mais experiente do grupo
– (eXPeriente em metodologia, não na tecnologia)
• Identifica quem é bom no quê
• Lembra a todos as regras do jogo (XP)
• Eventualmente faz programação pareada
• Não desenha arquitetura, apenas chama a atenção para
oportunidades de melhorias
• Seu papel diminui à medida em que o time fica mais maduro
25
TRACKER (ACOMPANHADOR)
• A “consciência” do time
• Coleta estatísticas sobre o andamento do projeto
• Alguns exemplos:
● Número de histórias definidas e implementadas
● Número de testes de unidade
● Número de testes funcionais definidos e funcionando
● Número de classes, métodos, linhas de código
• Mantém histórico do progresso
• Faz estimativas para o futuro
26
CONCLUSÃO: SER ÁGIL = VENCER MEDOS
• Escrever código
• Mudar de ideia
• Ir em frente sem saber tudo sobre o futuro
• Confiar em outras pessoas
• Mudar a arquitetura de um sistema em funcionamento
• Escrever testes
27
PRÁTICAS PRIMÁRIAS
•Sentar Junto
• Desenvolva num ambiente grande o suficiente para o time todo ficar junto
•Time Completo
• Monte um time multi-disciplinar, com todas as habilidades necessárias para o
sucesso do projeto
•Área de Trabalho Informativa
• Um observador interessado deve ser capaz de ter uma idéia do andamento do
projeto andando pela área de trabalho
28
PRÁTICAS PRIMÁRIAS
•Trabalho Energizado
• Trabalhe apenas enquanto puder ser produtivo e o número de horas que puder
agüentar
•Programação Pareada
•Histórias
• Unidades de funcionalidade visíveis ao cliente
• Estimativa é feita o mais cedo possível para facilitar a interação entre o cliente e a
equipe
29
PRÁTICAS PRIMÁRIAS
•Ciclo Semanal
• Representa uma iteração
• Planeje o trabalho uma semana de cada vez
• Reunião no início da semana para discutir o progresso, escolher histórias e dividi-las em tarefas
•Ciclo de Estação (Release)
• Identificar gargalos e iniciar reparos
• Planejamento do tema da estação
• Foco no todo: onde o projeto se encaixa na organização
30
PRÁTICAS PRIMÁRIAS
•Folga
• Inclua no plano algumas tarefas menores que podem ser removidas caso ocorra um
atraso
• Não se comprometa além do que é possível ser realizado
•Build de 10 minutos
• Faça o build AUTOMÁTICO do sistema INTEIRO e rode TODOS os testes em até 10
minutos
•Desenvolvimento Orientado por Testes
31
PRÁTICAS PRIMÁRIAS
•Integração Contínua
• Integração pode ser síncrona ou assíncrona (no build)
•Design Incremental
• Invista no design do sistema todos os dias
• O conselho não é minimizar o investimento em design no curto prazo, mas
manter o investimento proporcional às necessidades do sistema
• Design feito mais próximo de quando é usado é mais eficiente
32
COMO COMEÇAR?
•Práticas dependem da situação e do contexto, são um guia
para onde você pode chegar
•Adote XP em passos pequenos (mude uma coisa de cada
vez)
•Crie consciência da necessidade de uma prática usando
métricas
•Avalie a experiência de adoção
33
PRÁTICAS COROLÁRIAS
•Envolvimento Real com o Cliente
• Faça com que as pessoas cujas vidas e negócios serão afetados pelo sistema
façam parte do time
•Implantação Incremental
• Ao substituir um sistema legado, troque partes da funcionalidade gradualmente
•Continuidade do Time
• Mantenha times eficientes trabalhando juntos
34
PRÁTICAS COROLÁRIAS
•Redução do Time
• Mantenha a carga de trabalho constante e distribua as tarefas de modo a deixar alguém
ocioso
• Com o tempo, essa pessoa pode ser liberada para formar novos times
•Análise de Causa Inicial
• Sempre que encontrar um defeito, elimine o defeito e sua causa
• “Os 5 Porquês”
•Código Compartilhado
35
PRÁTICAS COROLÁRIAS
•Código e Testes
• Os únicos artefatos permanentes
•Repositório Único de Código
• Desenvolva num repositório único. Branches podem existir, mas devem ser
incorporados logo
•Implantação Diária
• Coloque software novo em produção toda noite
36
PRÁTICAS COROLÁRIAS
•Contrato de Escopo Variável
• Contratos devem fixar tempo, custo e qualidade, mas a
negociação de escopo deve ser aberta
•Pague-Pelo-Uso
• Cobre por cada vez que o sistema é usado
• O dinheiro é o feedback máximo
37
SOBRE A EQUIPE
•Diversos papéis
• Testadores, Projetistas de Interface, Arquitetos,
Gerentes de Projeto etc.
38
EQUIPES DISTRIBUÍDAS
•Valores se aplicam para equipes distribuídas geograficamente
•É necessário nutrir comunicação e feedback devido à
separação
•Adaptar as práticas, base de código única é a conexão entre as
equipes
•Não abandonar práticas difíceis de manter à distância
• eg.: programação pareada usando VNC
39
QUANDO NÃO USAR XP
•Quando os valores reais da sua organização não
se alinham com os valores de XP
40
COMUNIDADE
•O suporte de uma comunidade é muito importante
•Reconhecimento e crítica dos seus pares
•Oferece uma perspectiva de pessoas que
compartilham os mesmo valores, mas estão em
outras organizações
•Melhoria através de grupos de estudo
41
MAIS INFORMAÇÕES
• Vários conteúdos desta apresentação foram trazidos do Curso
de Verão 2010 - IME/USP AgilCoop - da qual faço parte :)
• www.agilcoop.org.br
• Outros:
• www.agilealliance.org
• www.xispe.com.br
• www.extremeprogramming.org
• www.agilealliance.com.br
42
CLAUDIA MELOPEOPLE TECHNOLOGY RESEARCHER
@claudia_melo
claudiamelo.org @claudiameloblog
/claudiamelo

Mais conteúdo relacionado

Mais procurados

Modelagem Arquitetural e Visão 4+1
Modelagem Arquitetural e Visão 4+1Modelagem Arquitetural e Visão 4+1
Modelagem Arquitetural e Visão 4+1
Adriano Tavares
 
Palestra sobre metodologia Scrum
Palestra sobre metodologia ScrumPalestra sobre metodologia Scrum
Palestra sobre metodologia Scrum
Personal
 
Aula Lógica de Programação - cap1
Aula Lógica de Programação - cap1 Aula Lógica de Programação - cap1
Aula Lógica de Programação - cap1
Cloves da Rocha
 
Kanban
KanbanKanban
Modelos de ciclo de vida de software
Modelos de ciclo de vida de softwareModelos de ciclo de vida de software
Modelos de ciclo de vida de software
Yuri Garcia
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
Aricelio Souza
 
Java modulo 01 - Introdução
Java modulo 01 - IntroduçãoJava modulo 01 - Introdução
Java modulo 01 - Introdução
Professor Samuel Ribeiro
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
elliando dias
 
Aula 6 - Qualidade de Software
Aula 6 - Qualidade de SoftwareAula 6 - Qualidade de Software
Aula 6 - Qualidade de Software
Leinylson Fontinele
 
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de Dados
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de DadosBanco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de Dados
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de Dados
Leinylson Fontinele
 
Aula Pronta - Gerenciamento de Projetos
Aula Pronta - Gerenciamento de ProjetosAula Pronta - Gerenciamento de Projetos
Aula Pronta - Gerenciamento de Projetos
AyslanAnholon
 
Modelos de Processo de Software Parte 1
Modelos de Processo de Software Parte 1Modelos de Processo de Software Parte 1
Modelos de Processo de Software Parte 1
Elaine Cecília Gatto
 
Introdução a Containers Docker
Introdução a Containers DockerIntrodução a Containers Docker
Introdução a Containers Docker
Matheus Fidelis
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
Marcelo Yamaguti
 
Scrum - As Regras do Jogo segundo o Guia do Scrum
Scrum - As Regras do Jogo segundo o Guia do ScrumScrum - As Regras do Jogo segundo o Guia do Scrum
Scrum - As Regras do Jogo segundo o Guia do Scrum
André Borgonovo
 
Aula1 e aula2 - Analise e Projeto de Sistemas
Aula1 e aula2 - Analise e Projeto de SistemasAula1 e aula2 - Analise e Projeto de Sistemas
Aula1 e aula2 - Analise e Projeto de Sistemas
Gustavo Gonzalez
 
Metodologia agil scrum
Metodologia agil scrumMetodologia agil scrum
Metodologia agil scrum
Pablo Juan ஃ
 
Apresentando a Linguagem de Programação Python
Apresentando a Linguagem de Programação PythonApresentando a Linguagem de Programação Python
Apresentando a Linguagem de Programação Python
Priscila Mayumi
 
Metodologia SCRUM
Metodologia SCRUMMetodologia SCRUM
Metodologia SCRUM
Rafael Pinheiro
 
Aula Modelos de Processos Tradicionais para Desenvolvimento de Software
Aula Modelos de Processos Tradicionais para Desenvolvimento de Software Aula Modelos de Processos Tradicionais para Desenvolvimento de Software
Aula Modelos de Processos Tradicionais para Desenvolvimento de Software
Cloves da Rocha
 

Mais procurados (20)

Modelagem Arquitetural e Visão 4+1
Modelagem Arquitetural e Visão 4+1Modelagem Arquitetural e Visão 4+1
Modelagem Arquitetural e Visão 4+1
 
Palestra sobre metodologia Scrum
Palestra sobre metodologia ScrumPalestra sobre metodologia Scrum
Palestra sobre metodologia Scrum
 
Aula Lógica de Programação - cap1
Aula Lógica de Programação - cap1 Aula Lógica de Programação - cap1
Aula Lógica de Programação - cap1
 
Kanban
KanbanKanban
Kanban
 
Modelos de ciclo de vida de software
Modelos de ciclo de vida de softwareModelos de ciclo de vida de software
Modelos de ciclo de vida de software
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Java modulo 01 - Introdução
Java modulo 01 - IntroduçãoJava modulo 01 - Introdução
Java modulo 01 - Introdução
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Aula 6 - Qualidade de Software
Aula 6 - Qualidade de SoftwareAula 6 - Qualidade de Software
Aula 6 - Qualidade de Software
 
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de Dados
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de DadosBanco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de Dados
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de Dados
 
Aula Pronta - Gerenciamento de Projetos
Aula Pronta - Gerenciamento de ProjetosAula Pronta - Gerenciamento de Projetos
Aula Pronta - Gerenciamento de Projetos
 
Modelos de Processo de Software Parte 1
Modelos de Processo de Software Parte 1Modelos de Processo de Software Parte 1
Modelos de Processo de Software Parte 1
 
Introdução a Containers Docker
Introdução a Containers DockerIntrodução a Containers Docker
Introdução a Containers Docker
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Scrum - As Regras do Jogo segundo o Guia do Scrum
Scrum - As Regras do Jogo segundo o Guia do ScrumScrum - As Regras do Jogo segundo o Guia do Scrum
Scrum - As Regras do Jogo segundo o Guia do Scrum
 
Aula1 e aula2 - Analise e Projeto de Sistemas
Aula1 e aula2 - Analise e Projeto de SistemasAula1 e aula2 - Analise e Projeto de Sistemas
Aula1 e aula2 - Analise e Projeto de Sistemas
 
Metodologia agil scrum
Metodologia agil scrumMetodologia agil scrum
Metodologia agil scrum
 
Apresentando a Linguagem de Programação Python
Apresentando a Linguagem de Programação PythonApresentando a Linguagem de Programação Python
Apresentando a Linguagem de Programação Python
 
Metodologia SCRUM
Metodologia SCRUMMetodologia SCRUM
Metodologia SCRUM
 
Aula Modelos de Processos Tradicionais para Desenvolvimento de Software
Aula Modelos de Processos Tradicionais para Desenvolvimento de Software Aula Modelos de Processos Tradicionais para Desenvolvimento de Software
Aula Modelos de Processos Tradicionais para Desenvolvimento de Software
 

Semelhante a Introdução à Programação Extrema (Extreme Programming - XP)

Introdução ao XP
Introdução ao XPIntrodução ao XP
Introdução ao XP
Paulo Rebelo, MSc, PMP, CSP
 
Extreme Programming
Extreme ProgrammingExtreme Programming
Extreme Programming
Elaine Cecília Gatto
 
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
 
Texto de Apoio2_Síntese de Metodologias Ageis.ppt
Texto de Apoio2_Síntese de Metodologias Ageis.pptTexto de Apoio2_Síntese de Metodologias Ageis.ppt
Texto de Apoio2_Síntese de Metodologias Ageis.ppt
HurgelNeto
 
ageis2003.ppt
ageis2003.pptageis2003.ppt
ageis2003.ppt
JAIMEMARTINS18
 
ageis2003.ppt
ageis2003.pptageis2003.ppt
ageis2003.ppt
ssuser9a8135
 
eXtreme Programming (xp)
eXtreme Programming (xp)eXtreme Programming (xp)
eXtreme Programming (xp)
Renato Pina
 
Metodologias Ágeis
Metodologias ÁgeisMetodologias Ágeis
Metodologias Ágeis
Profa Karen Borges
 
Métodos ágeis de desenvolvimento de software
Métodos ágeis de desenvolvimento de softwareMétodos ágeis de desenvolvimento de software
Métodos ágeis de desenvolvimento de software
Jerônimo Medina Madruga
 
Desenvolvimento de Software
Desenvolvimento de SoftwareDesenvolvimento de Software
Desenvolvimento de Software
Adilmar Dantas
 
Metodologias Ageis
Metodologias AgeisMetodologias Ageis
Metodologias Ageis
MarcosMaozinha
 
Scrum: entendendo o framework e aplicando no dia-a-dia
Scrum: entendendo o framework e aplicando no dia-a-diaScrum: entendendo o framework e aplicando no dia-a-dia
Scrum: entendendo o framework e aplicando no dia-a-dia
Vítor Bruno de Almeida
 
SCRUM - Aula1
SCRUM - Aula1SCRUM - Aula1
SCRUM - Aula1
Saulo Arruda
 
Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
Engenharia de software aula 6 - Introdução ao Desenvolvimento ÁgilEngenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
Rebecca Betwel
 
Metodologias Ágeis: Uma breve introdução
Metodologias Ágeis: Uma breve introduçãoMetodologias Ágeis: Uma breve introdução
Metodologias Ágeis: Uma breve introdução
Achiles Camilo
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Domingos Teruel
 
Modelagem Ágil - UaiJug TechDays 2013 - Uberlândia MG
Modelagem Ágil - UaiJug TechDays 2013 - Uberlândia MGModelagem Ágil - UaiJug TechDays 2013 - Uberlândia MG
Modelagem Ágil - UaiJug TechDays 2013 - Uberlândia MG
Neubio Ferreira
 
Scrum em 1h.
Scrum em 1h.Scrum em 1h.
Scrum em 1h.
Márcio Oya
 
Sprint Zero com mais Valor (TDC-2015)
Sprint Zero com mais Valor (TDC-2015)Sprint Zero com mais Valor (TDC-2015)
Sprint Zero com mais Valor (TDC-2015)
Alex Magalhaes
 
Modelos de Processo de Desenvolvimento de Software 2 - Prof.ª Cristiane Fidelix
Modelos de Processo de Desenvolvimento de Software 2 - Prof.ª Cristiane FidelixModelos de Processo de Desenvolvimento de Software 2 - Prof.ª Cristiane Fidelix
Modelos de Processo de Desenvolvimento de Software 2 - Prof.ª Cristiane Fidelix
Cris Fidelix
 

Semelhante a Introdução à Programação Extrema (Extreme Programming - XP) (20)

Introdução ao XP
Introdução ao XPIntrodução ao XP
Introdução ao XP
 
Extreme Programming
Extreme ProgrammingExtreme Programming
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)
 
Texto de Apoio2_Síntese de Metodologias Ageis.ppt
Texto de Apoio2_Síntese de Metodologias Ageis.pptTexto de Apoio2_Síntese de Metodologias Ageis.ppt
Texto de Apoio2_Síntese de Metodologias Ageis.ppt
 
ageis2003.ppt
ageis2003.pptageis2003.ppt
ageis2003.ppt
 
ageis2003.ppt
ageis2003.pptageis2003.ppt
ageis2003.ppt
 
eXtreme Programming (xp)
eXtreme Programming (xp)eXtreme Programming (xp)
eXtreme Programming (xp)
 
Metodologias Ágeis
Metodologias ÁgeisMetodologias Ágeis
Metodologias Ágeis
 
Métodos ágeis de desenvolvimento de software
Métodos ágeis de desenvolvimento de softwareMétodos ágeis de desenvolvimento de software
Métodos ágeis de desenvolvimento de software
 
Desenvolvimento de Software
Desenvolvimento de SoftwareDesenvolvimento de Software
Desenvolvimento de Software
 
Metodologias Ageis
Metodologias AgeisMetodologias Ageis
Metodologias Ageis
 
Scrum: entendendo o framework e aplicando no dia-a-dia
Scrum: entendendo o framework e aplicando no dia-a-diaScrum: entendendo o framework e aplicando no dia-a-dia
Scrum: entendendo o framework e aplicando no dia-a-dia
 
SCRUM - Aula1
SCRUM - Aula1SCRUM - Aula1
SCRUM - Aula1
 
Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
Engenharia de software aula 6 - Introdução ao Desenvolvimento ÁgilEngenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
 
Metodologias Ágeis: Uma breve introdução
Metodologias Ágeis: Uma breve introduçãoMetodologias Ágeis: Uma breve introdução
Metodologias Ágeis: Uma breve introdução
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnit
 
Modelagem Ágil - UaiJug TechDays 2013 - Uberlândia MG
Modelagem Ágil - UaiJug TechDays 2013 - Uberlândia MGModelagem Ágil - UaiJug TechDays 2013 - Uberlândia MG
Modelagem Ágil - UaiJug TechDays 2013 - Uberlândia MG
 
Scrum em 1h.
Scrum em 1h.Scrum em 1h.
Scrum em 1h.
 
Sprint Zero com mais Valor (TDC-2015)
Sprint Zero com mais Valor (TDC-2015)Sprint Zero com mais Valor (TDC-2015)
Sprint Zero com mais Valor (TDC-2015)
 
Modelos de Processo de Desenvolvimento de Software 2 - Prof.ª Cristiane Fidelix
Modelos de Processo de Desenvolvimento de Software 2 - Prof.ª Cristiane FidelixModelos de Processo de Desenvolvimento de Software 2 - Prof.ª Cristiane Fidelix
Modelos de Processo de Desenvolvimento de Software 2 - Prof.ª Cristiane Fidelix
 

Mais de Claudia Melo

Ethical Decisions in a Wicked World: The Role of Technologists, Entrepreneurs...
Ethical Decisions in a Wicked World: The Role of Technologists, Entrepreneurs...Ethical Decisions in a Wicked World: The Role of Technologists, Entrepreneurs...
Ethical Decisions in a Wicked World: The Role of Technologists, Entrepreneurs...
Claudia Melo
 
Introdução a Métodos Ágeis
Introdução a Métodos ÁgeisIntrodução a Métodos Ágeis
Introdução a Métodos Ágeis
Claudia Melo
 
Gerência de configuração ágil
Gerência de configuração ágilGerência de configuração ágil
Gerência de configuração ágil
Claudia Melo
 
Requisitos ágeis - Parte 1
Requisitos ágeis - Parte 1Requisitos ágeis - Parte 1
Requisitos ágeis - Parte 1
Claudia Melo
 
Introdução à Engenharia de Software
Introdução à Engenharia de SoftwareIntrodução à Engenharia de Software
Introdução à Engenharia de Software
Claudia Melo
 
O ideal feminino e a computação v2.0
O ideal feminino e a computação v2.0O ideal feminino e a computação v2.0
O ideal feminino e a computação v2.0
Claudia Melo
 
O papel da Agilidade na Economia Digital Descrição, Agile Day, Scopus
O papel da Agilidade na Economia Digital Descrição, Agile Day, ScopusO papel da Agilidade na Economia Digital Descrição, Agile Day, Scopus
O papel da Agilidade na Economia Digital Descrição, Agile Day, Scopus
Claudia Melo
 
Diálogo TCU: Governos em Transformação Digital
Diálogo TCU: Governos em Transformação DigitalDiálogo TCU: Governos em Transformação Digital
Diálogo TCU: Governos em Transformação Digital
Claudia Melo
 
Ethics and Sustainability for Techies and Entrepreneurs
Ethics and Sustainability for Techies and EntrepreneursEthics and Sustainability for Techies and Entrepreneurs
Ethics and Sustainability for Techies and Entrepreneurs
Claudia Melo
 
A Method for Evaluating End-User Development Technologies
A Method for Evaluating End-User Development TechnologiesA Method for Evaluating End-User Development Technologies
A Method for Evaluating End-User Development Technologies
Claudia Melo
 
CSBC'2017 - Diversidade de Gênero na Computação
CSBC'2017 - Diversidade de Gênero na Computação CSBC'2017 - Diversidade de Gênero na Computação
CSBC'2017 - Diversidade de Gênero na Computação
Claudia Melo
 
Ethics and sustainability for techies
Ethics and sustainability for techiesEthics and sustainability for techies
Ethics and sustainability for techies
Claudia Melo
 
Princípios da Gestão Ágil
Princípios da Gestão ÁgilPrincípios da Gestão Ágil
Princípios da Gestão Ágil
Claudia Melo
 
Exploring the frontiers of Agile Development in the Digital Era
 Exploring the frontiers of Agile Development in the Digital Era Exploring the frontiers of Agile Development in the Digital Era
Exploring the frontiers of Agile Development in the Digital Era
Claudia Melo
 
The Web of Gendered Innovations
The Web of Gendered InnovationsThe Web of Gendered Innovations
The Web of Gendered Innovations
Claudia Melo
 
9 Maneiras de Falhar com KPIs
9 Maneiras de Falhar com KPIs9 Maneiras de Falhar com KPIs
9 Maneiras de Falhar com KPIs
Claudia Melo
 
Ser ágil no mundo de tecnologia
Ser ágil no mundo de tecnologiaSer ágil no mundo de tecnologia
Ser ágil no mundo de tecnologia
Claudia Melo
 
Governos em transformação digital: novas tecnologias e métodos, velhos desafi...
Governos em transformação digital: novas tecnologias e métodos, velhos desafi...Governos em transformação digital: novas tecnologias e métodos, velhos desafi...
Governos em transformação digital: novas tecnologias e métodos, velhos desafi...
Claudia Melo
 
Minicurso: Uma Introdução ao Desenvolvimento de Software Lean
Minicurso: Uma Introdução ao Desenvolvimento de Software LeanMinicurso: Uma Introdução ao Desenvolvimento de Software Lean
Minicurso: Uma Introdução ao Desenvolvimento de Software Lean
Claudia Melo
 
O hackerismo e a tecnologia na relação entre governo e sociedade
O hackerismo e a tecnologia na relação entre governo e sociedadeO hackerismo e a tecnologia na relação entre governo e sociedade
O hackerismo e a tecnologia na relação entre governo e sociedade
Claudia Melo
 

Mais de Claudia Melo (20)

Ethical Decisions in a Wicked World: The Role of Technologists, Entrepreneurs...
Ethical Decisions in a Wicked World: The Role of Technologists, Entrepreneurs...Ethical Decisions in a Wicked World: The Role of Technologists, Entrepreneurs...
Ethical Decisions in a Wicked World: The Role of Technologists, Entrepreneurs...
 
Introdução a Métodos Ágeis
Introdução a Métodos ÁgeisIntrodução a Métodos Ágeis
Introdução a Métodos Ágeis
 
Gerência de configuração ágil
Gerência de configuração ágilGerência de configuração ágil
Gerência de configuração ágil
 
Requisitos ágeis - Parte 1
Requisitos ágeis - Parte 1Requisitos ágeis - Parte 1
Requisitos ágeis - Parte 1
 
Introdução à Engenharia de Software
Introdução à Engenharia de SoftwareIntrodução à Engenharia de Software
Introdução à Engenharia de Software
 
O ideal feminino e a computação v2.0
O ideal feminino e a computação v2.0O ideal feminino e a computação v2.0
O ideal feminino e a computação v2.0
 
O papel da Agilidade na Economia Digital Descrição, Agile Day, Scopus
O papel da Agilidade na Economia Digital Descrição, Agile Day, ScopusO papel da Agilidade na Economia Digital Descrição, Agile Day, Scopus
O papel da Agilidade na Economia Digital Descrição, Agile Day, Scopus
 
Diálogo TCU: Governos em Transformação Digital
Diálogo TCU: Governos em Transformação DigitalDiálogo TCU: Governos em Transformação Digital
Diálogo TCU: Governos em Transformação Digital
 
Ethics and Sustainability for Techies and Entrepreneurs
Ethics and Sustainability for Techies and EntrepreneursEthics and Sustainability for Techies and Entrepreneurs
Ethics and Sustainability for Techies and Entrepreneurs
 
A Method for Evaluating End-User Development Technologies
A Method for Evaluating End-User Development TechnologiesA Method for Evaluating End-User Development Technologies
A Method for Evaluating End-User Development Technologies
 
CSBC'2017 - Diversidade de Gênero na Computação
CSBC'2017 - Diversidade de Gênero na Computação CSBC'2017 - Diversidade de Gênero na Computação
CSBC'2017 - Diversidade de Gênero na Computação
 
Ethics and sustainability for techies
Ethics and sustainability for techiesEthics and sustainability for techies
Ethics and sustainability for techies
 
Princípios da Gestão Ágil
Princípios da Gestão ÁgilPrincípios da Gestão Ágil
Princípios da Gestão Ágil
 
Exploring the frontiers of Agile Development in the Digital Era
 Exploring the frontiers of Agile Development in the Digital Era Exploring the frontiers of Agile Development in the Digital Era
Exploring the frontiers of Agile Development in the Digital Era
 
The Web of Gendered Innovations
The Web of Gendered InnovationsThe Web of Gendered Innovations
The Web of Gendered Innovations
 
9 Maneiras de Falhar com KPIs
9 Maneiras de Falhar com KPIs9 Maneiras de Falhar com KPIs
9 Maneiras de Falhar com KPIs
 
Ser ágil no mundo de tecnologia
Ser ágil no mundo de tecnologiaSer ágil no mundo de tecnologia
Ser ágil no mundo de tecnologia
 
Governos em transformação digital: novas tecnologias e métodos, velhos desafi...
Governos em transformação digital: novas tecnologias e métodos, velhos desafi...Governos em transformação digital: novas tecnologias e métodos, velhos desafi...
Governos em transformação digital: novas tecnologias e métodos, velhos desafi...
 
Minicurso: Uma Introdução ao Desenvolvimento de Software Lean
Minicurso: Uma Introdução ao Desenvolvimento de Software LeanMinicurso: Uma Introdução ao Desenvolvimento de Software Lean
Minicurso: Uma Introdução ao Desenvolvimento de Software Lean
 
O hackerismo e a tecnologia na relação entre governo e sociedade
O hackerismo e a tecnologia na relação entre governo e sociedadeO hackerismo e a tecnologia na relação entre governo e sociedade
O hackerismo e a tecnologia na relação entre governo e sociedade
 

Último

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
 
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
 
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Gabriel de Mattos Faustino
 
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
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
WELITONNOGUEIRA3
 
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
 
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
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
joaovmp3
 

Último (8)

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
 
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
 
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.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
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
 
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...
 
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
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
 

Introdução à Programação Extrema (Extreme Programming - XP)

  • 1. 1 ENGENHARIA DE SOFTWARE - AULA 03 INTRODUÇÃO À PROGRAMAÇÃO EXTREMA (XP) PROF. DRA. CLAUDIA MELO 19/Mar/2018 @claudia_melo claudiamelo.org
  • 2. PROGRAMAÇÃO EXTREMA - XP •Metodologia de desenvolvimento de software aperfeiçoada nos últimos 10 anos •Ganhou notoriedade a partir da OOPSLA’2000 •Nome principal: Kent Beck 2
  • 3. A QUEM SE DESTINA XP? • Papéis (sem hierarquia): – Programadores (foco central) – “Treinador” ou “Técnico” (coach) – “Acompanhador” (tracker) – Cliente 3
  • 4. E SE EU NÃO ME ENCAIXO NESSES CASOS? • Você ainda pode aprender muito sobre desenvolvimento de software • Terá elementos para repensar as suas práticas • No início se dizia: – “Ou você é 100% eXtremo ou não é eXtremo. Não dá para ser 80% XP” • Hoje não é mais necessariamente assim (definitivamente) 4
  • 6. OS VALORES DE XP • Comunicação • Feedback • Coragem • Simplicidade • Respeito – Valor criado na versão de 2004 6
  • 7. AS 12 PRÁTICAS DE XP
 1.Planejamento 2.Fases Pequenas 3.Metáfora 4.Design Simples 5.Testes 6.Refatoração 7.Programação Pareada 7 1.Propriedade Coletiva 2.Integração Contínua 3.Semana de 40 horas 4.Cliente junto aos desenvolvedores 5.Padronização do código
  • 8. PRINCÍPIOS BÁSICOS DE XP • Feedback rápido • Simplicidade é o melhor negócio • Mudanças incrementais • Carregue a bandeira das mudanças / não valorize o medo (Embrace change) • Alta qualidade do código 8
  • 9. AS 4 VARIÁVEIS DO DESENVOLVIMENTO • Tempo • Custo • Qualidade • Escopo (foco principal de XP) 9
  • 11. UM PROJETO XP • Fase de Exploração – duração: 1 a 6 meses – termina quando a primeira versão do software é enviada ao cliente – clientes escrevem “histórias” (story cards) – programadora/es interagem com clientes e discutem tecnologias – Não só discutem, experimentam diferentes tecnologias e arquiteturas para o sistema 11
  • 12. 12 UM DIA NA VIDA DO/A PROGRAMADOR/A XP
  • 13. UM DIA NA VIDA DE • Escolhe a próxima história mais importante do cliente • Procura um par livre • Escolhe um computador para programação pareada • Seleciona um “cartão de história” contendo uma tarefa claramente relacionada a uma característica (feature) desejada pelo cliente 13
  • 14. • Discute modificações recentes no sistema • Discute história do cliente (Business Analysis) • Testes (Test-Driven Development) • Implementação • Projeto (design) • Integração do código 14 UM DIA NA VIDA DE https://www.slideshare.net/SunilMundra/agile-101-36992572 Analyze Design Code Test Deploy Develop & deploy Working software showcased to the business
  • 15. • Atos constantes no desenvolvimento: – Executa testes antigos – Busca oportunidades para simplificação – Modifica desenho e implementação incrementalmente baseado na funcionalidade exigida no momento – Escreve novos testes – Enquanto todos os testes não rodam a 100%, o trabalho não está terminado – Integra novo código ao repositório 15 UM DIA NA VIDA DE
  • 16. TESTES • Fundamento mais importante de XP • É o que dá segurança e coragem ao grupo • Testes de unidade (Unit tests) – escritos, por quem desenvolve, para testar cada elemento do sistema (p.ex., cada método em cada caso) • Testes de funcionalidades (Functional tests) – escritos pelos clientes para testar a funcionalidade do sistema (Testes de Aceitação) 16
  • 17. TESTES • Testes das unidades do sistema – Tem que estar sempre funcionando a 100% – São executados várias vezes por dia – Executados à noite automaticamente • Testes das funcionalidades – Vão crescendo de 0% a 100% – Quando chegam a 100% acabou o projeto 17
  • 18. O CÓDIGO • Padrões de estilo adotados pelo grupo inteiro • O mais claro possível – nomes claros (intention-revealing names) – XP não se baseia em documentações detalhadas e extensas (perde-se sincronia) • Comentários sempre que necessários • Comentários padronizados • Programação Pareada ajuda muito! 18
  • 19. 19 PROGRAMAÇÃO PAREADA https://www.flickr.com/photos/provoost/2246718091 • Erro de um detectado imediatamente pelo outro (grande economia de tempo) • Maior diversidade de ideias, técnicas, algoritmos • Enquanto um escreve, o outro pensa em contra-exemplos, problemas de eficiência, etc • Vergonha de escrever código feio (gambiarras) na frente do seu par • Pareamento de acordo com especialidades – Ex.: Sistema Multimídia Orientado a Objetos • Experimentos controlados mostraram que a qualidade do código produzido aumenta sem perda de velocidade 
 [Livro Pair Programming Illuminated: Laurie Williams, Robert Kessler]
  • 20. QUANDO PROGRAMAR EM PAR? • Princípios para a seleção de pares • Conselhos práticos, tais como montagem de mobiliário, rodízio de pares e eliminação de pares ‘ruins’ • Sete hábitos de programadores em par eficazes 20 Dybå, T. et al, 2007. Are Two Heads Better than One? On the Effectiveness of Pair Programming
  • 21. PROPRIEDADE COLETIVA DO CÓDIGO • Modelo tradicional: só autor de uma função pode modificá-la • XP: o código pertence a todos • ps: não por ser software livre, mas por ser um princípio • Se alguém identifica uma oportunidade para simplificar, consertar ou melhorar código escrito por outra pessoa, que o faça • Mas rode os testes! 21
  • 22. REFATORAÇÃO (REFACTORING) • Uma [pequena] modificação no sistema que não altera o seu comportamento funcional • mas que melhora alguma qualidade não-funcional: – simplicidade – flexibilidade – clareza – [desempenho] 22
  • 23. EXEMPLOS DE REFATORAÇÃO • Mudança do nome de variáveis • Mudanças nas interfaces dos objetos • Pequenas mudanças arquiteturais • Encapsular código repetido em um novo método • Generalização de métodos • raizQuadrada(float x)⇒ raiz(float x, int n) 23
  • 24. CLIENTE/PRODUCT OWNER • Responsável por escrever “histórias” • Mas pessoas do time acompanham e auxiliam OU • Pode estar representado por alguém do time (menos ideal) • Trabalha no mesmo espaço físico do grupo • Novas versões são enviadas para produção todo mês (ou toda semana) • Feedback do cliente é essencial • Requisitos mudam (e isso não é mau) 24
  • 25. COACH (TREINADOR) • Em geral, o mais experiente do grupo – (eXPeriente em metodologia, não na tecnologia) • Identifica quem é bom no quê • Lembra a todos as regras do jogo (XP) • Eventualmente faz programação pareada • Não desenha arquitetura, apenas chama a atenção para oportunidades de melhorias • Seu papel diminui à medida em que o time fica mais maduro 25
  • 26. TRACKER (ACOMPANHADOR) • A “consciência” do time • Coleta estatísticas sobre o andamento do projeto • Alguns exemplos: ● Número de histórias definidas e implementadas ● Número de testes de unidade ● Número de testes funcionais definidos e funcionando ● Número de classes, métodos, linhas de código • Mantém histórico do progresso • Faz estimativas para o futuro 26
  • 27. CONCLUSÃO: SER ÁGIL = VENCER MEDOS • Escrever código • Mudar de ideia • Ir em frente sem saber tudo sobre o futuro • Confiar em outras pessoas • Mudar a arquitetura de um sistema em funcionamento • Escrever testes 27
  • 28. PRÁTICAS PRIMÁRIAS •Sentar Junto • Desenvolva num ambiente grande o suficiente para o time todo ficar junto •Time Completo • Monte um time multi-disciplinar, com todas as habilidades necessárias para o sucesso do projeto •Área de Trabalho Informativa • Um observador interessado deve ser capaz de ter uma idéia do andamento do projeto andando pela área de trabalho 28
  • 29. PRÁTICAS PRIMÁRIAS •Trabalho Energizado • Trabalhe apenas enquanto puder ser produtivo e o número de horas que puder agüentar •Programação Pareada •Histórias • Unidades de funcionalidade visíveis ao cliente • Estimativa é feita o mais cedo possível para facilitar a interação entre o cliente e a equipe 29
  • 30. PRÁTICAS PRIMÁRIAS •Ciclo Semanal • Representa uma iteração • Planeje o trabalho uma semana de cada vez • Reunião no início da semana para discutir o progresso, escolher histórias e dividi-las em tarefas •Ciclo de Estação (Release) • Identificar gargalos e iniciar reparos • Planejamento do tema da estação • Foco no todo: onde o projeto se encaixa na organização 30
  • 31. PRÁTICAS PRIMÁRIAS •Folga • Inclua no plano algumas tarefas menores que podem ser removidas caso ocorra um atraso • Não se comprometa além do que é possível ser realizado •Build de 10 minutos • Faça o build AUTOMÁTICO do sistema INTEIRO e rode TODOS os testes em até 10 minutos •Desenvolvimento Orientado por Testes 31
  • 32. PRÁTICAS PRIMÁRIAS •Integração Contínua • Integração pode ser síncrona ou assíncrona (no build) •Design Incremental • Invista no design do sistema todos os dias • O conselho não é minimizar o investimento em design no curto prazo, mas manter o investimento proporcional às necessidades do sistema • Design feito mais próximo de quando é usado é mais eficiente 32
  • 33. COMO COMEÇAR? •Práticas dependem da situação e do contexto, são um guia para onde você pode chegar •Adote XP em passos pequenos (mude uma coisa de cada vez) •Crie consciência da necessidade de uma prática usando métricas •Avalie a experiência de adoção 33
  • 34. PRÁTICAS COROLÁRIAS •Envolvimento Real com o Cliente • Faça com que as pessoas cujas vidas e negócios serão afetados pelo sistema façam parte do time •Implantação Incremental • Ao substituir um sistema legado, troque partes da funcionalidade gradualmente •Continuidade do Time • Mantenha times eficientes trabalhando juntos 34
  • 35. PRÁTICAS COROLÁRIAS •Redução do Time • Mantenha a carga de trabalho constante e distribua as tarefas de modo a deixar alguém ocioso • Com o tempo, essa pessoa pode ser liberada para formar novos times •Análise de Causa Inicial • Sempre que encontrar um defeito, elimine o defeito e sua causa • “Os 5 Porquês” •Código Compartilhado 35
  • 36. PRÁTICAS COROLÁRIAS •Código e Testes • Os únicos artefatos permanentes •Repositório Único de Código • Desenvolva num repositório único. Branches podem existir, mas devem ser incorporados logo •Implantação Diária • Coloque software novo em produção toda noite 36
  • 37. PRÁTICAS COROLÁRIAS •Contrato de Escopo Variável • Contratos devem fixar tempo, custo e qualidade, mas a negociação de escopo deve ser aberta •Pague-Pelo-Uso • Cobre por cada vez que o sistema é usado • O dinheiro é o feedback máximo 37
  • 38. SOBRE A EQUIPE •Diversos papéis • Testadores, Projetistas de Interface, Arquitetos, Gerentes de Projeto etc. 38
  • 39. EQUIPES DISTRIBUÍDAS •Valores se aplicam para equipes distribuídas geograficamente •É necessário nutrir comunicação e feedback devido à separação •Adaptar as práticas, base de código única é a conexão entre as equipes •Não abandonar práticas difíceis de manter à distância • eg.: programação pareada usando VNC 39
  • 40. QUANDO NÃO USAR XP •Quando os valores reais da sua organização não se alinham com os valores de XP 40
  • 41. COMUNIDADE •O suporte de uma comunidade é muito importante •Reconhecimento e crítica dos seus pares •Oferece uma perspectiva de pessoas que compartilham os mesmo valores, mas estão em outras organizações •Melhoria através de grupos de estudo 41
  • 42. MAIS INFORMAÇÕES • Vários conteúdos desta apresentação foram trazidos do Curso de Verão 2010 - IME/USP AgilCoop - da qual faço parte :) • www.agilcoop.org.br • Outros: • www.agilealliance.org • www.xispe.com.br • www.extremeprogramming.org • www.agilealliance.com.br 42
  • 43. CLAUDIA MELOPEOPLE TECHNOLOGY RESEARCHER @claudia_melo claudiamelo.org @claudiameloblog /claudiamelo