eXtreme Programming
© Alexandre Vasconcelos
[email protected]
[email protected]
Centro de Informática da UFPE/
Qualiti Software Processes
1/44
O surgimento de XP

Em meados de 1990, Kent Beck procurou
formas mais simples e eficientes de
desenvolver software
 Identificou
o que tornava simples e o que
dificultava o desenvolvimento de software

Em Março de 1996, ele iniciou um projeto com
novos conceitos que resultaram na
metodologia eXtreme Programming
2/44
O que é eXtreme Programming?


Metodologia ágil (leve) mais utilizada na
atualidade
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
3/44
Estudo da palavra
Extreme
Programming
Aplicação das boas práticas de
desenvolvimento de software
levadas ao extremo
Foca em Código
4/44
Manifesto ágil

Valorização de:





Principais preocupações:




Indivíduos e interação MAIS QUE processos e ferramentas
Software em funcionamento MAIS QUE documentação
abrangente
Colaboração com o cliente MAIS QUE negociação de
contratos
Responder a mudanças MAIS QUE seguir um plano
Entregar funcionalidades para o cliente de forma rápida
Procuram usar o mínimo de documentação possível
Realizam projeto simples sem se preocupar em antecipar
funcionalidades
WebSite: http://www.agilemanifesto.org/
5/44
Foco na satisfação do cliente

Desenvolver o
que o cliente
precisa no
momento que
é necessário
6/44
Princípios básicos

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

7/44
Princípios básicos

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
8/44
Princípios básicos

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
9/44
Práticas e Regras de XP: Planejamento

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
10/44
Práticas e Regras de XP: Planejamento

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
11/44
Práticas e Regras de XP: Planejamento

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
12/44
Práticas e Regras de XP: Planejamento

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
13/44
Práticas e Regras de XP: Planejamento

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
14/44
Práticas e Regras de XP: Planejamento

Versões freqüentes 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
15/44
Práticas e Regras de XP: Planejamento

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
16/44
Práticas e Regras de XP: Projeto

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 freqüentemente
17/44
Práticas e Regras de XP: Projeto

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 usada

18/44
Práticas e Regras de XP: Projeto

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
19/44
Práticas e Regras de XP: Projeto

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
20/44
Práticas e Regras de XP: Projeto

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.
21/44
Práticas e Regras de XP: Codificação

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 conhecimento
22/44
Práticas e Regras de XP: Codificação

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
23/44
Práticas e Regras de XP: Codificação

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
24/44
Práticas e Regras de XP: Codificação

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
25/44
Práticas e Regras de XP: Codificação

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
26/44
Práticas e Regras de XP: Codificação

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 horas
27/44
Práticas e Regras de XP: Codificação

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
28/44
Práticas e Regras de XP: Testes

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
29/44
Práticas e Regras de XP: Testes

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
30/44
Práticas e Regras de XP: Testes

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
31/44
Práticas e Regras de XP: Testes

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 regressivos
32/44
Dependência entre práticas

Algumas práticas possuem inter-dependências
 Refactoring:
Testes unitários
 Rotação de pessoas: programação em pares
 Propriedade coletiva de código: refactoring,
testes unitários, integração contínua
 40h semanais: planejamento junto ao cliente
 Etc.
33/44
Ciclo de Vida em XP

Um projeto XP passa por algumas fases
durante seu ciclo de vida
 Fase
de exploração: Anterior à construção do
sistema. Visa verificar a viabilidade do sistema e
experimentar possíveis soluções
 Fase de planejamento inicial: Visa definir as
estórias e fechar com cliente o escopo e data do
primeiro Release
34/44
Ciclo de Vida XP


Fase de iterações do release: Em uma iteração
algumas estórias são implementadas.
Atividades de uma iteração: escrita dos casos
de testes  projeto e refatoramento 
codificação  realização dos testes 
integração.
Fase de produção: O sistema é posto em
operação em um ambiente que simula o
ambiente de produção para verificar
performance e desempenho.
35/44
Ciclo de Vida XP


Fase de manutenção: XP considera que
manutenção faz parte da sua natureza e suas
práticas consideram um ambiente onde
alterações são constantes
Fase de morte: Término de um projeto XP
36/44
Papéis envolvidos em XP



Treinador: Preocupa-se com a execução técnica e
evolução do processo. Possui conhecimentos de XP
e orienta a equipe.
Rastreador: Coleta dados sobre o andamento do
projeto e a sua conformidade com o planejamento
feito para as iterações e release.
Programador: Escreve o código e os casos de teste
unitários sempre em pares. É responsável por
estimar o tempo para a implementação das estórias.
37/44
Papéis envolvidos em XP


Cliente: Responsável por escrever as estórias
junto com os programadores e priorizá-las.
Também ajuda na escrita dos casos de teste
funcionais.
Testador: Ajuda o cliente na definição e escrita
dos testes funcionais. Ele não precisa ser uma
pessoa com apenas essa função, pode
desempenhar também o papel de
programador.
38/44
Exemplo de uma Iteração em XP
•Planejar Iteração
•Detalhar Estórias(Criar Tarefas)
•Descrever Prioridades
•Estimar Tarefas
–Estimar por Comparação
–Estimar por Intuição
–Spike Soluctions
•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
39/44
Xplanner


http://www.xplanner.org
Ferramenta que permite
o planejamento e
acompanhamento de
equipes de
desenvolvimento XP.
40/44
Ferramenta Xplanner - Tela da estória
41/44
Ferramenta Xplanner - Tela da iteração
42/44
Quando não se deve usar XP

Possíveis barreiras para o sucesso de um projeto XP
Cultura: Quando a empresa possui uma cultura
fortemente tradicional com ênfase em muita
documentação, modelagem, etc.
 Tamanho da equipe: Beck considera que a equipe
deve ser pequena (até 12 pessoas).
 Espaço físico: O local de trabalho deve servir para
aproximar a equipe e facilitar a comunicação.
 Cliente: Em XP o cliente ou alguém que o represente
deve trabalhar junto à equipe.

43/44
eXtreme Programming
© Alexandre Vasconcelos
[email protected]
[email protected]
Centro de Informática da UFPE/
Qualiti Software Processes
44/44
Download

Apresentação – eXtreme Programming (XP) - Sefaz-AL