Conferência SC 24 | Gestão logística para redução de custos e fidelização
eXtreme Programming(Sepai2004) - Manoel Pimentel
1. eXtreme
Programming
Conceitos e Casos Práticos
I Beljungle
SEPAI 2004
1/49
Extreme Manoel Pimentel
Programming manoel_consultor@yahoo.com.br
2. Manoel Pimentel
É Engenheiro de Software, com mais de 15 anos na área de TI,
atualmente trabalha com projetos pela Rhealeza(SP). É Diretor
Editorial da Revista Visão Ágil, Membro da Agile Alliance e foi um dos
pioneiros na utilização e divulgação de métodos ágeis no Brasil. Já
escreveu artigos para importantes revistas e portais especializados no
Brasil e no exterior. Possui as certificações CSM e CSP da Scrum
Alliance. Já participou do time de Desenvolvimento do NetBeans(Sun),
foi criador do projeto BoxSQL, fundador do grupo XPNorte e do NUG-
BR e frequentemente palestra em eventos sobre processos e
tecnologias. Maiores informações em:
http://manoelpimentel.blogspot.com
2/49
Extreme Manoel Pimentel
Programming manoel_consultor@yahoo.com.br
4. Vamos usar XP?
XP é um apelido carinhoso de uma metodologia
de desenvolvimento designada Extreme
Programming, com foco em agilidade de
Programming
equipes e qualidade de projetos, apoiada em
valores como simplicidade, comunicação,
feedback e coragem…
4/49
Extreme Manoel Pimentel
Programming manoel_consultor@yahoo.com.br
5. Vamos usar XP? (cont..)
Nos submete ao reconhecimento de que XP é
uma metologia baseada em comportamentos e
atitudes, proporcionando dessa forma,
atitudes
mecanismos para que o projeto seja executado
com sucesso. dentro do prazo e do orçamento,
fazendo então com que o cliente fique satisfeito
e a equipe de desenvolvimento não fique maluca
por causa do projeto.
5/49
Extreme Manoel Pimentel
Programming manoel_consultor@yahoo.com.br
6. O que é um projeto de sucesso?
É um projeto onde:
-É executado dentro do prazo
-Dentro do orçamento,
-O cliente fica satisfeito
-E a equipe de desenvolvimento não fique
maluca por causa do projeto.
6/49
Extreme Manoel Pimentel
Programming manoel_consultor@yahoo.com.br
8. Valores do XP: (cont...)
Relação entre valores e práticas
PRÁTICAS
XP
simplicidade comunicação feedback coragem
8/49
Extreme Manoel Pimentel
Programming manoel_consultor@yahoo.com.br
9. Valores do XP: (cont...)
simplicidade
é necessária desde a forma como se levanta
requisitos até a codificação e os testes da
solução desenvolvida.
9/49
Extreme Manoel Pimentel
Programming manoel_consultor@yahoo.com.br
10. Valores do XP: (cont...)
comunicação
é obrigatória para que não haja lacunas em
processos e problemas entre equipe(cliente e
fornecedor).
10/49
Extreme Manoel Pimentel
Programming manoel_consultor@yahoo.com.br
11. Valores do XP: (cont...)
feedback
é a pratica fundamentada em retornar
informações entre os membros da equipe e
também na relação com o cliente, desde de
responder e-mails, telefonemas bips e demais
meios.
11/49
Extreme Manoel Pimentel
Programming manoel_consultor@yahoo.com.br
12. Valores do XP: (cont...)
coragem
Saber dizer NÃO quando necessário, ou então
para dizer que o projeto vai demorar além do
estimado pois os novos requisitos precisam ser
codificados ou o código já em funcionamento
precisa ser refatorado.
12/49
Extreme Manoel Pimentel
Programming manoel_consultor@yahoo.com.br
13. Práticas de XP:
Extreme Programming é dinâmica e flexível,
porém é necessário muita disciplina para usá-la
em um projeto, para demostrar isso, em seguida
temos um conjunto sugerido de quot;boas práticasquot;
em projetos usando XP.
13/49
Extreme Manoel Pimentel
Programming manoel_consultor@yahoo.com.br
14. Práticas de XP: (cont...)
>> O cliente sempre disponível
(The Customer is Always Available)
Constante disponilidade do cliente para
colaborar em dúvidas, alterações, e prioridades
em um escopo, ou seja dando um dinâmismo
ativo ao projeto.
14/49
Extreme Manoel Pimentel
Programming manoel_consultor@yahoo.com.br
15. Práticas de XP: (cont...)
>> Metáforas no projeto
(Metaphor)
Visando facilitar a comunição da equipe, caso
seja possível, é estabelecido o uso de metáforas
em pontos chaves ao projeto, como por exemplo
a definição de um nome que seja comum à
equipe e simbolize algo de fácil assimilação.
15/49
Extreme Manoel Pimentel
Programming manoel_consultor@yahoo.com.br
16. Práticas de XP: (cont...)
>> Planejando o jogo
(Planning Game )
São estimuladas reuniões usando quadros
brancos, com o objetivo de captar e definir as
quot;user storiesquot;( estórias), para poder estimar o
tempo ideal das interaçoes, o projeto como um
todo, elaborar estratégias e tentar prever as
contigências para projeto.
16/49
Extreme Manoel Pimentel
Programming manoel_consultor@yahoo.com.br
17. Práticas de XP: (cont...)
>> Planejando o jogo (cont …)
Estórias(user stories)
são textos claros ou diagramas com notação
UML com as especificações de regras de
negócios inerentes ao sistema, levantadas
juntos aos clientes, que servirão como base para
os requisitos.
17/49
Extreme Manoel Pimentel
Programming manoel_consultor@yahoo.com.br
18. Práticas de XP: (cont...)
>> Planejando o jogo (cont …)
Relação das estórias com o projeto
Estórias Interações
NOTAÇÂO UML
(classes, caso de CODIFICAÇÃO
uso, etc.)
Critérios de Testes
aceitação Unitários
18/49
Extreme Manoel Pimentel
Programming manoel_consultor@yahoo.com.br
19. Práticas de XP: (cont...)
>> Planejando o jogo (cont …)
Estórias, Interações e Releases
8 Sem.
R1 R2 R3 R4
2 Sem.
I1 I2 I3 I4
LEGENDAS:
1 Sem. 1 Sem. R – Releases
I – Interação
S1 S2 S - Estória
19/49
Extreme Manoel Pimentel
Programming manoel_consultor@yahoo.com.br
20. Práticas de XP: (cont...)
>> Pequenas versões
(Small Releases )
Conforme as interações são concluídas, o cliente
recebe pequenas versões/releases do sistema,
visando com que seja colocado em prática e
validado aquilo que está sendo implementado,
ou mais cedo possam ser detectadas
necessidades de alterações de requisitos no
software.
20/49
Extreme Manoel Pimentel
Programming manoel_consultor@yahoo.com.br
21. Práticas de XP: (cont...)
>> Pequenas versões (cont …)
Esquema de aplicação:
Aceitação e avanço p/
Teste unitário/ próximas interações
Critérios de aceitação
Interação SIM
1
Validação
Release 1 pelo Aprovado?
cliente
Interação NÃO
2 Novos requisitos
Necessidade de
refatoração
21/49
Extreme Manoel Pimentel
Programming manoel_consultor@yahoo.com.br
22. Práticas de XP: (cont...)
>> Testes de Aceitação
(Acceptance Tests)
São definidos pelo usuário na fase inicial do
projeto e são os critérios de aceitação do
software conforme a estratégia de entrega,
representa exatamente a métrica de aderência
do software desenvolvido/implantado ao
universo do cliente.
22/49
Extreme Manoel Pimentel
Programming manoel_consultor@yahoo.com.br
23. Práticas de XP: (cont...)
>> Primeiro os testes
(Test First Design)
Aplicados apartir de testes unitários do código
produzido, além de serem definidos utilizando
os critérios de aceitação definidos previamente
pelo cliente, garante também a redução de erros
de programação e aumenta a fidelidade do
código produzido ao padrão estabelecido para o
projeto.
23/49
Extreme Manoel Pimentel
Programming manoel_consultor@yahoo.com.br
24. Práticas de XP: (cont...)
>> Primeiro os testes (cont ...)
Através da prática de testes unitários,
definimos antes da codificação os testes dos
métodos críticos do software ou métodos
simples que podem apresentar alguma exceção
de processamento.
24/49
Extreme Manoel Pimentel
Programming manoel_consultor@yahoo.com.br
25. Práticas de XP: (cont...)
>> Integração Contínua
(Continuous Integration)
Os diversos módulos do software são integrados
diversas vezes por dia e todos os testes unitários
são executados. O código não passa até obter
sucesso em 100% dos testes unitários,
facilitando então dessa forma o trabalho de
implementação da solução.
25/49
Extreme Manoel Pimentel
Programming manoel_consultor@yahoo.com.br
26. Práticas de XP: (cont...)
>> Integração Contínua
Esquema de aplicação:
Funcionários
Inserir()
Excluir() Teste
unitário
Bloquear() 1:1 ProcessaPgto
Demitir()
Férias()
MétPrincipal() Teste
<<integração>> ProvisãoFin() unitário
Envelope ProvisãoCTB()
1:N
NovoEvento() 1:N
Teste
Calcular() unitário
Alterar() 1:1
LiberarPgto()
26/49
Extreme Manoel Pimentel
Programming manoel_consultor@yahoo.com.br
27. Práticas de XP: (cont...)
>> Simplicidade de Design
(Simple Design)
O código está, a qualquer momento, na forma
mais simples e mais clara, conforme os padrões
definidos pela equipe, facilitando a compreensão
e possível continuidade por qualquer membro da
equipe de desenvolvimento.
27/49
Extreme Manoel Pimentel
Programming manoel_consultor@yahoo.com.br
28. Práticas de XP: (cont...)
>> Refatoração - melhoria constante
(Refactoring)
A cada nova funcionalidade adicionada, é
trabalhado o design do código até ficar na sua
forma mais simples, mesmo que isso implique
em quot;mexerquot; em um código que esteja em
funcionamento.
28/49
Extreme Manoel Pimentel
Programming manoel_consultor@yahoo.com.br
29. Práticas de XP: (cont...)
>> Refatoração - melhoria constante (cont ...)
Claro que a prática de refatoração nem sempre
é aceita, pois envolve questões como prazo e
custo, e essa prática em si pode ser minimizada
caso o projeto esteja usando 100% de
orientação a objeto, onde podemos criar
códigos os mais genéricos e reutilizáveis
possíveis, diminuindo o trabalho em caso de
uma possível refatoração.
29/49
Extreme Manoel Pimentel
Programming manoel_consultor@yahoo.com.br
30. Práticas de XP: (cont...)
>> Programação em dupla
(Pair Programming)
Todo código em produção é desenvolvido por
duas pessoas trabalhando com o mesmo
teclado, o mesmo mouse e o mesmo monitor,
somando forças para a implementação do
código.
30/49
Extreme Manoel Pimentel
Programming manoel_consultor@yahoo.com.br
31. Práticas de XP: (cont...)
>> Programação em dupla
pontos positvos :
- Compartilhamento de conhecimento acerca das
regras de negócio do projeto por todos da equipe
de desenvolvimento;
- Fortalece a prática de Propriedade Coletiva do
Código;
- Nivelação de conhecimento técnico;
- Elevação dos níveis de atenção ao código
31/49
Extreme Manoel Pimentel
Programming manoel_consultor@yahoo.com.br
32. Práticas de XP: (cont...)
>> Rodízio de pessoas
(Move People Around)
As duplas de programação são revezadas
periodicamente, com o objetivo de uniformizar os
códigos produzidos, deixar todos os módulos do
sistema com mesmo padrão de
código/pensamento, e compartilhar o código
com todos da equipe.
32/49
Extreme Manoel Pimentel
Programming manoel_consultor@yahoo.com.br
33. Práticas de XP: (cont...)
>> Rodízio de pessoas (cont ...)
Esquema de aplicação:
(1° Momento )
Equipe Verde Equipe Vermelho
Código 1 Código 2
Programador X Programador Y Programador W Programador Z
33/49
Extreme Manoel Pimentel
Programming manoel_consultor@yahoo.com.br
34. Práticas de XP: (cont...)
>> Rodízio de pessoas (cont ...)
Esquema de aplicação:
(2° Momento )
Equipe Verde Equipe Vermelho
Código 1 Código 2
Programador X Programador Z Programador W Programador Y
34/49
Extreme Manoel Pimentel
Programming manoel_consultor@yahoo.com.br
35. Práticas de XP: (cont...)
>> Rodízio de pessoas (cont ...)
Esquema de aplicação:
(3° Momento )
Equipe Verde Equipe Vermelho
Código 1 Código 2
Programador W Programador Z Programador X Programador Y
35/49
Extreme Manoel Pimentel
Programming manoel_consultor@yahoo.com.br
36. Práticas de XP: (cont...)
>> Propriedade coletivaCollective
(Code Ownership )
Uma vez aplicado a Programação em Dupla e
Rodízio de Pessoas a equipe como um todo
é responsável por cada arquivo de código.
Não é preciso pedir autorização para alterar
qualquer arquivo, mantendo claro, um padrão
prático de comunicação da equipe.
36/49
Extreme Manoel Pimentel
Programming manoel_consultor@yahoo.com.br
37. Práticas de XP: (cont...)
>> Padronização do código
(Coding Standards )
Todo código é desenvolvido seguindo um
padrão, qualquer que seja, mas toda equipe
deve seguir o mesmo padrão, dessa forma
todos da equipe terão a mesma visão do
código.
37/49
Extreme Manoel Pimentel
Programming manoel_consultor@yahoo.com.br
38. Práticas de XP: (cont...)
>> Otimizando a jornadas de trabalho
(40 Hour Week )
Trabalhar por longos períodos é
contraproducente, portanto sempre que
possível evitar a sobrecarga de trabalho de
todos da equipe, criando condições
favoráveis ao uso da carga normal de
trabalho.
38/49
Extreme Manoel Pimentel
Programming manoel_consultor@yahoo.com.br
39. Práticas de XP: (cont...)
>> Otimizando a jornadas de trabalho(cont...)
(40 Hour Week )
deixando a equipe livre para relaxar, brincar,
ou fazer o quem bem entender para equilibrar
o trabalho mental e físico, existe até uma
frase que diz : trabalhe a 100% durante as 40
horas e descanse a 100% no resto, se algum
deles não for feito com 100%, um afetatá o
outro.
39/49
Extreme Manoel Pimentel
Programming manoel_consultor@yahoo.com.br