A Programação Extrema (XP) é uma metodologia ágil que visa entregar software de alta qualidade atendendo às necessidades reais do cliente de forma rápida. Isso é feito por meio de pequenas entregas frequentes, programação em pares, testes automatizados e feedback constante entre a equipe e o cliente.
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
XP - Extreme Programming
1. Programação Extrema - XP
Motivação:
* Necessidade de software de qualidade com rapidez.
* Apenas 16,2% dos softwares atingiam sucesso em 1994 e, em
2002 subiu para 34%(Standish Group International).
* Vários motivos para a baixa taxa de sucesso dos modelos
tradicionais:
->Tempo elevado entre cada fase do projeto, demora p/ versões funcionais;
-> Falta de conhecimento por parte do cliente da sua real necessidade;
-> Ênfase na burocracia (diagramas UML, documentos, formulários,
crogramas rígidos);
-> Grande quantidade de erros, gerando desconfiança no software;
Programação Extrema - XP
Solução:
*Focando nas fragilidades do modelo tradicional, surgiram
metodologias p/ desenvolvimento ágil de software.
-> Foco nas pessoas, não no processo, evitando especulações dos
desenvolvedores;
-> Garantir a satisfação do cliente entregando rapidamente e contiuamente
softwares funcionais;
-> O cliente aprender suas reais necessidades durante o projeto e, repassá-las
aos desenvolvedores.
-> Software em funcionamento mais que documentação abrangente;
-> Testes para evitar bugs;
* Uma destas metodologias de desenvolvimento ágil é o Extreme
Programming, visando a grande qualidade do software
desenvolvido e atendendo ás reais necessidades do cliente.
1
2. Programação Extrema - XP
Os valores do XP:
*Comunicação: Entre os desenvolvedores, e entre a equipe e o
cliente.
*Simplicidade: Fazer sempre a coisa mais simples que pode
funcionar. (KISS)
*Feedback: Saber oque está funcionando a todo o momento.
*Coragem: Código feio? fatore, código muito feio? jogue fora e
começe denovo!
*Respeito: Saber ouvir e compreender os outros.
Programação Extrema - XP
As 12 Práticas do XP
1. Planejamento 1. Propriedade Coletiva
2. Fases Pequenas 2. Integração Contínua
3. Metáfora 3. Semana de 40 horas
4. Design Simples 4. Cliente junto aos
5. Testes desenvolvedores
6. Refatoração 5. Padronização do código
7. Programação Pareada
2
3. Programação Extrema - XP
Planejamento
O desenvolvimento é feito em iterações semanais. No início da semana,
desenvolvedores e cliente reúnem-se para priorizar as funcionalidades
Fases Pequenas
A liberação de pequenas versões funcionais do projecto auxilia muito no
processo de aceitação por parte do cliente, que já pode testar uma parte do
sistema que está comprando
Metáfora
Procura facilitar a comunicação com o cliente, entendendo a realidade dele.
Guie o desenvolvimento usando uma estória simples.
Programação Extrema - XP
Design Simples
Simplicidade é um princípio da XP. Implemente apenas a funcionalidade
que foi solicitada. Não confundir simples com fácil.
Testes
Podem ser de diversos tipos, tais como: de aceitação; que são criados pelos
clientes junto com analistas, para determinar a aceitação da funcionalidade
do sistema; TDD; Testes de Integração e outros;
Refatoração
É um processo que permite a melhoria continua da programação, com o
mínimo de introdução de erros e mantendo a compatibilidade com o código
já existente. Refabricar melhora a clareza do código, divide-o em módulos
mais coesos e de maior reaproveitamento, evitando a duplicação de código-
fonte
3
4. Programação Extrema - XP
Programação Pareada
É a programação em par/dupla num único computador. Reduz o numero de
bugs e equilibra a equipe.
Propriedade Coletiva
O código-fonte não tem dono e ninguém precisa solicitar permissão para
poder modificar o mesmo. O objetivo com isto é fazer a equipe conhecer
todas as partes do sistema.
Integração Contínua
Sempre que produzir uma nova funcionalidade, nunca esperar uma semana
para integrar à versão atual do sistema
Programação Extrema - XP
Semana de 40 horas
Trabalhar com qualidade, buscando ter ritmo de trabalho saudável (40
horas/semana, 8 horas/dia), sem horas extras.
Cliente junto aos desenvolvedores
O cliente permanece o tempo todo a par do desenvolvimento do software,
indicando modificações e esclarecendo duvidas da equipe.
Padronização do código
A equipe de desenvolvimento precisa estabelecer regras para programar e
todos devem seguir estas regras. A código fonte final deve parecer ter sido
feito por apenas um programador.
4
5. Programação Extrema - XP
Jogo do Planejamento
Elaboração das Histórias (Exploração)
1) Histórias determinam algo que o sistema precisa fazer, são
descritas pelo cliente.
2) O tempo para elaborar uma história é estimado pelo time.
3) Caso uma história fique muito grande, ela é dividida em
tarefas.
Programação Extrema - XP
Jogo do Planejamento
Fase do comprometimento
Define a data da próxima entrega, e quais histórias serão
implementadas.
Classificação por valor: Cliente classifica as histórias em 3 pilhas de
prioridades.
Classificação por risco: Time divide as histórias em: estimadas
precisamente,estimadas razoavelmente bem e as que não
conseguem ser estimadas.
Definição de velocidade: Time informa o cliente a rapidez que o time
pode trabalhar em condições ideais.
Escolha do Escopo: Cliente escolhe as histórias que farão parte da
próxima versão.
5
6. Programação Extrema - XP
Jogo do Planejamento
Fase de Direcionamento
Tem como propósito atualizar o plano de desenvolvimento, ”muda o
curso do vôo”.
Permite criar novas histórias, redefinir histórias e mudar a velocidade de
desenvolvimento.
Jogo do ponto de vista do desenvolvedor:
O desenvolvedor escolhe uma história, senta com outro desenvolvedor
e a implementa.
Reuniões de pé:
Rápidas e com todo o time reunido, colocam em dia oque cada um fez
e servem para aumentar a comunicação além de dar feedback sobre
o andamento do projeto.
Programação Extrema - XP
Programação em Pares
Dois programadores no mesmo computador; Geralmente um
programador com mais experiência e um novato.
Novato responsável pela codificação, o experiente acompanha
ajudando a desenvolver suas habilidades.
O programa desenvolvido é visto por pelo menos duas pessoas
em tempo de codificação, reduzindo assim o numero de bugs
possíveis.
Evolução da equipe no processo, visto que o novato é treinado
nas técnicas de XP desde o inicio de sua participação. A
equipe torna-se mais equilibrada.
6
7. Programação Extrema - XP
Visão de Desenvolvimento
Programação Extrema - XP
Visão de Iterações
7
8. Programação Extrema - XP
Metáforas
Ao criar comparações e análogias com o dominio em questão o time
passa criar um vocabulário comum, que passa a ser usado para
modelar o sistema e definir sua arquitetura.
Programação Extrema - XP
Testes
Não existem “testadores”, todo o desenvolvedor
desenvolve testes.
Com base nos testes que o desenvolvedor terá
a coragem de alterar o sistema.
Garantem que o sistema faz oque deve ser
feito.
Na XP existem os testes de unidade e de
aceitação.
8
9. Programação Extrema - XP
Testes de Unidade
São escritos pelos desenvolvedores enquanto codificam o sistema.
Devem ser automatizados e rápidos de executar.
Devem ser criados para todas as classes do sistema.
São escritos antes da implementação(TDD).
São um meio de comunicação entre os desenvolvedores,
São a fonte de coragem para realizar a fatoração.
Programação Extrema - XP
Testes de Aceitação
Originalmente chamado de teste de funcionalidade.
São escritos pelo cliente.
São escritos no momento da escrita da história.
O cliente sabe quando uma funcionalidade é terminada.
Para cada história deve existir pelo menos um teste de aceitação.
Uma história só é declarada terminada quando seus testes de
aceitação passarem.
9
10. TDD e Fatoração:
1)Crie um teste.
2)O teste não compila(a classe ainda não foi implementada!)
3)Faça compilar.
4)Veja o teste falha, ótimo, o teste falhou!
5)Implemente o código mais simples que faça o teste passar.
6) Fatore, removendo duplicação e tornando o código mais legível e
flexivel.
7) Volte para o passo 1, até que não consiga pensar em mais nada
para testar.
Bibliográfia:
BECK, Kent. Programação extrema
explicada:acolha as mudanças - Porto Alegre :
Bookman, 2004;
BECK, Kent. Test Driven Development;
http://www.improveit.com.br/xp
http://www.extremeprogramming.org/;
10