Extreme Programming
Prof.: Ari Oliveira
Projeto deDesenvolvimentoSoftware
Extreme Programming
22
│ O Extreme Programming (XP) é uma metodologia de desenvolvimento de software que auxilia na produção de sistemas de maior qualidade, em menos tempo e de forma econômica;
│ O XP se baseia nos princípios dos métodos ágeis:‖ Desenvolvimento incremental;‖ Envolvimento do cliente.
│ Criada por Kent Beck‖ Projeto da Daimler-Chrysler (de 1997 a 1999), dona da Mercedes-Benz.
│ Desenvolvida para:‖ Equipes médias e pequenas (2 a 12 pessoas)‖ Requisitos vagos e em constante evolução
│ Possui um conjunto de valores e práticas para nortear o desenvolvimento de software
Extreme Programming
33
│ Scrum é interessante porque fornece um mecanismo de informação de status que é atualizado continuamente, e porque utiliza a divisão de tarefas dentro da equipe de forma explicita.
│ Scrum e XP são complementares pois Scrum provê práticas ágeis de gerenciamento enquanto XP provê práticas integradas de engenharia de software.
Extreme Programming
Extreme Programming
Aplicação das boas práticas de desenvolvimento de
software levadas ao extremo
Foca em Código
Extreme Programming
55
Princípios Básicos
Comunicação Simplicidade Feedback Coragem Retorno Respeito
5
Extreme Programming
66
│ Comunicação
‖ Os membros da equipe (clientes, gerentes, programadores) devem interagir ao máximo pessoalmente.
‖ Devem trabalhar na mesma sala, conversar pessoalmente ou através de chats, etc.
│ Simplicidade
‖ Projeto do SW é simplificado continuamente
‖ Processo adaptado, caso algo não esteja funcionando
Extreme Programming
77
│ Feedback
‖ Cliente está sempre participando do desenvolvimento do sistema
‖ Testes de unidade e de aceitação fornecem feedback sobre o sistema
‖ Oportunidades e problemas são identificados o mais rápido possível
Extreme Programming
88
│ Coragem‖ Indicar problemas no projeto, parar quando está cansado,
pedir ajuda quando necessário‖ Simplificar código que está funcionado, dizer ao cliente
que não será possível implementar um requisito no prazo estimado
‖ Seguir o XP como deve ser
│ Respeito‖ Evite complicar o trabalho dos demais. Preserve a
qualidade do código, do design.
Extreme Programming
99
Práticas e Regras do XP
Planejamento Projeto Codificação Testes
Extreme Programming
1010
Práticas e Regras do XP
Planejamento
Estórias Iterações VelocidadeJogo do
Planejamento
Versões pequenas e frequentes
Extreme Programming
1111
│ Estórias de uso
‖ Usadas como requisitos do sistema
‖ Mesmo propósito dos casos de uso (de UML), porém menores e mais simples
‖ Escritos na linguagem do cliente com o mínimo de detalhes para a estimativa de custos
Práticas e Regras do XP
Planejamento Projeto Codificação Testes
Extreme Programming
1212
Extreme Programming
1313
│ Iterações
‖ Desenvolvimento dividido em iterações
‖ Possuem duração entre 1 e 3 semanas
‖ Funcionalidades são entregues no final de cada iteração
‖ Prazos devem ser levados a sério, negocie o escopo se for necessário
Práticas e Regras do XP
Planejamento Projeto Codificação Testes
Extreme Programming
1414
│ Medida da velocidade de projeto‖ Indica a produtividade da equipe no projeto
‖ Razão entre o que foi produzido e o que foi estimado a cada iteração
‖ Pode ser medido durante uma iteração
‖ Variações dramáticas em mais de uma iteração sugerem renegociação de prazo e escopo das versões
Práticas e Regras do XP
Planejamento Projeto Codificação Testes
Extreme Programming
1515
│ Jogo do planejamento
‖ Planejamento de versões (Releases)
¦ No início do projeto especifica-se que estórias de uso serão implementadas em cada versão
¦ Define-se as datas de liberação das versões│ Geralmente de 2 a 3 meses.
¦ Uma release possui diversas iterações curtas
Práticas e Regras do XP
Planejamento Projeto Codificação Testes
Extreme Programming
1616
│ Jogo do planejamento
‖ Planejamento das iterações:
¦ Feito no início de cada iteração
│ Estórias de uso são escolhidas de acordo com a importância pro cliente e o risco pro projeto
│ Estórias são divididas em tarefas de 1 a 3 dias
│ Tarefas são distribuídas entre programadores e estimadas pelos próprios executores
‖ Estimativa preferencialmente baseada no passado
‖ Leva-se em conta a programação em pares
¦ Estórias são adicionadas ou removidas para completar o tempo da iteração
Práticas e Regras do XP
Planejamento Projeto Codificação Testes
Extreme Programming
1717
│ Versões frequentes e pequenas
‖ Funcionalidades implementadas são rapidamente entregues ao cliente
‖ Permite um feedback mais rápido do cliente reduzindo o impacto de mudanças de requisitos
‖ Versão pode ter inclusive uma única iteração
Práticas e Regras do XP
Planejamento Projeto Codificação Testes
Extreme Programming
1818
│ Reuniões rápidas (stand-up meeting)
‖ Faz a comunicação entre toda a equipe para comunicar problemas, soluções, etc.
‖ Reunião feita em pé com poucos minutos de fala para cada integrante
Práticas e Regras do XP
Planejamento Projeto Codificação Testes
Extreme Programming
1919
Práticas e Regras do XP
Projeto
Simplicidade Metáforas SpikeNão adicionar
Funcionalidades previamente
Contato constante com
Cliente
Extreme Programming
2020
│ Simplicidade‖ Projetos simples tomam menos tempo que os
complexos
‖ Evitar generalizações e abstrações desnecessárias no momento
‖ Um bom projeto deve conter o menor número possível de classes e métodos
‖ É mais rápido e barato¦ Requisitos mudam frequentemente Práticas e Regras do XP
Planejamento Projeto Codificação Testes
Extreme Programming
2121
│ Metáfora‖ Tem a intenção de oferecer uma visão geral do
sistema, em um formato simples, que possa ser compartilhada por clientes e programadores.
‖ Faz-se uma analogia entre o sistema e um outro sistema não necessariamente de software que seja de fácil entendimento para todos
‖ Corresponde mais ou menos à Arquitetura do sistema
‖ Não tem sido muito usadaPráticas e Regras do XP
Planejamento Projeto Codificação Testes
Extreme Programming
2222
│ Criar spike solutions para reduzir riscos
‖ Programas muito simples (protótipos) utilizados para verificar o uso determinadas soluções e tecnologias
‖ Utilizados para reduzir os riscos técnicos do projeto ou validar as estimativas realizadas
Práticas e Regras do XP
Planejamento Projeto Codificação Testes
Extreme Programming
2323
│ Não adicionar funcionalidades antecipadamente
‖ Requisitos mudam rapidamente
‖ Mantém o código limpo de adivinhações sobre o que pode ser usado no futuro
‖ Mantém a produtividade
Práticas e Regras do XP
Planejamento Projeto Codificação Testes
Extreme Programming
2424
│ O cliente está sempre disponível
‖ Não deve só ajudar a equipe de desenvolvimento
‖ Deve ser parte da equipe
‖ Comunicação com o cliente é feita em todas as fases de um projeto XP
¦ Estórias de uso, planejamento de versões, feedback do sistema, testes de aceitação, etc.
Práticas e Regras do XP
Planejamento Projeto Codificação Testes
Extreme Programming
2525
Práticas e Regras do XP
Codificação
Em paresRotação de
ParesPadrão de
NomenclaturaHoras
SemanaisIntegração Contínua
Refatorarsempre que
possível
Extreme Programming
2626
│ Programação em pares
‖ Duas pessoas programando em um mesmo computador pensam melhor que uma
‖ Revezamento: um programa enquanto o outro projeta e faz revisão on-line do código digitado
‖ Ganho de qualidade compensa o uso de duplas
‖ Auxilia a difusão de conhecimentoPráticas e Regras do XP
Planejamento Projeto Codificação Testes
Extreme Programming
2727
│ Rotação de pares de programadores‖ Ajuda ainda mais a eliminar as pessoas
consideradas “ilhas de conhecimento”
‖ Cada um da equipe passa a conhecer todas as partes do sistema
‖ Os pares devem sempre ser encorajados a trabalhar em partes do sistema desconhecidas por eles
Práticas e Regras do XP
Planejamento Projeto Codificação Testes
Extreme Programming
2828
│ Propriedade coletiva do código
‖ Todos são responsáveis por todo código
‖ Permite que pessoas forneçam idéias para toda parte do sistema
‖ Diminui o risco de possuir pessoas insubstituíveis no projeto
Práticas e Regras do XP
Planejamento Projeto Codificação Testes
Extreme Programming
2929
│ Código tem sempre que seguir um padrão
‖ Mantém o código consistente e uniforme
‖ Facilita a leitura e entendimento por outros programadores
Práticas e Regras do XP
Planejamento Projeto Codificação Testes
Extreme Programming
3030
│ 40 horas semanais‖ Não se deve trabalhar mais de 60 h por 2 ou mais
semanas consecutivas‖ Horas extras não remuneradas prejudicam motivação
da equipe‖ A insatisfação de se trabalhar horas extras pode
contribuir para a queda de qualidade e aumento de defeitos
‖ Ao invés disto, modifique o escopo ou o prazo do projeto
Práticas e Regras do XP
Planejamento Projeto Codificação Testes
Extreme Programming
3131
│ Integração contínua‖ Módulos do sistema são integrados diversas vezes
ao dia
‖ Todos os testes de unidade definidos são executados
‖ Identificação rápida de bugs inseridos¦ Programador sabe que trechos de código foram
alterados nas últimas horasPráticas e Regras do XP
Planejamento Projeto Codificação Testes
Extreme Programming
3232
│ Fazer refactoring sempre que possível
‖ Reestruturação sem acrescentar funcionalidade
‖ Remove redundâncias e melhora a qualidade do projeto
‖ Retira códigos não utilizados
‖ Testes unitários “garantem” que código mantém mesmo comportamento
Práticas e Regras do XP
Planejamento Projeto Codificação Testes
Extreme Programming
3333
Práticas e Regras do XP
Testes
UnitáriosTestes antes da
codificaçãoTestes de aceitação
Extreme Programming
3434
│ Testes unitários‖ Teste das menores unidades (classes, métodos, ...)
‖ Identifica bugs no código
‖ Protege o código de manutenções indevidas
‖ De responsabilidade do programador. São automatizados (JUnit)
‖ Automação dos testes paga o custo da criação dos testes
Práticas e Regras do XP
Planejamento Projeto Codificação Testes
Extreme Programming
3535
│ Testes unitários são escritos para detectar bugs identificados‖ Criação do teste
unitário que identifique o bug antes de corrigi-lo
‖ Bugs têm tendência de ressurgir posteriormente
Práticas e Regras do XP
Planejamento Projeto Codificação Testes
Extreme Programming
3636
│ Testes antes da codificação
‖ Limita o escopo da solução a ser implementada
‖ Serve de especificação do código testado
‖ Facilita o entendimento do código a ser criado
‖ Garante que os testes vão ser criados
Práticas e Regras do XP
Planejamento Projeto Codificação Testes
Extreme Programming
3737
│ Execução periódica de testes de aceitação (testes funcionais)‖ Procuram testar uma funcionalidade como um
todo (Ex: Venda).
‖ Criados a partir das estórias de uso a serem implementadas na iteração
‖ Clientes verificam a corretude dos testes escritos
‖ Devem ser automatizados e regressivosPráticas e Regras do XP
Planejamento Projeto Codificação Testes
Extreme Programming
3838
│ “Dono da grana” (GoldOwner)‖ Patrocinador (quem paga pelo software)
│ “Dono dos objetivos” (GoalOwner)‖ Quem define os requisitos (em geral, um usuário)
│ Gerente‖ Facilitador do projeto
│ Testador de aceitação‖ Define os critérios de aceitação junto ao cliente
│ Programador‖ Responsável pela implementação
│ Rastreador‖ Coleta sinais do projeto (métricas). Avalia desempenho
│ Técnico‖ Especialista do processo. Dá suporte à equipe que está mudando.
Extreme Programming
3939
• Planejar Iteração
• Detalhar Estórias (criar tarefas)
• Descrever Prioridades
• Estimar Tarefas
– Estimar por Comparação
– Estimar por Intuição
– Spike Solutions
• Distribuir Estórias
• Construir Testes de Aceitação
• Programar
– Fazer Teste Unitário
– Implementar
• Stand-up meetings
• Executar Testes de Aceitação
• Disponibilizar Iteração
Extreme Programming
4040
Extreme Programming
414141
Extreme Programming
424242
Princípios Básicos
Comunicação Simplicidade Feedback Coragem Retorno Respeito
Práticas e Regras do XP
Planejamento
Estó
rias
Iter
açõ
es
Vel
oci
dad
e
Jogo
do
Pla
nej
amen
to
Ver
sões
peq
uen
as e
fre
qu
ente
s
ProjetoSi
mp
licid
ade
Met
áfo
ras
Spik
e
Não
ad
icio
nar
Fu
nci
on
alid
ades
p
revi
amen
te
Co
nta
to c
on
stan
te c
om
Clie
nte
Codificação
Em p
ares
Ro
taçã
o d
e P
ares
Pad
rão
de
No
men
clat
ura
Ho
ras
Sem
anai
s
Inte
graç
ão C
on
tín
ua
Ref
ato
rar
sem
pre
qu
e p
oss
ível
Testes
Un
itár
ios
Test
es a
nte
s d
a co
dif
icaç
ão
Test
es d
e ac
eita
ção
Extreme Programming
Prof.: Ari Oliveira
Projeto deDesenvolvimentoSoftware
Top Related