Top Banner
Extreme Programming (XP) João Carlos Ottobboni
24

Extreme programming (xp)

Aug 06, 2015

Download

Technology

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Extreme programming   (xp)

Extreme Programming (XP)

João Carlos Ottobboni

Page 2: Extreme programming   (xp)

O que é Extreme Programming ?

● Extreme Programming é a arte de maximizar a quantidade de software que você não vai fazer.

● São métodos e formas de priorizar quais as partes mais importantes do Projeto, e quem diz quais as partes importantes são os próprios clientes.

● De forma informal, podemos compará-lo como uma danca de salao:

● Desenvolvedor e a dama;● Cliente e o cavalheiro;● Devem estar sempre juntos;● Cliente conduz o desenvolvimento.

Page 3: Extreme programming   (xp)

Timeline do Extreme Programming● Origem década de 80 Kent Beck e Ward Cunningham● 1996: C3 projeto iniciado folha de pagamento da Chrysler

● Outubro de 1998: Distributed Computing magazine article on the ChryslerComprehensiveCompensation (C3) project.

● Setembro de 1999: "Extreme Programming Explained" (Extreme Programming Explained Embrace Change) livro por KentBeck

● Dezembro de 1999: Primeira turma de "Xp Immersion", at Object Mentor, por KentBeck, BobMartin, e RonJeffries

● 31 Dezembro de 1999: Yahoo XP grupo de discussão.

Page 4: Extreme programming   (xp)

Timeline do Extreme Programming

● Junho de 2000: Primeira conferência internacional de XP, em Cagliari Sardinia.

● Setembro de 2000: "Extreme Programming Installed" livro por Jeffries, Anderson, e Hendrickson

● Julho de 2001: Primeiro Universo XP, em Raleigh, Carolina do Norte

● Novembro 2004: "Extreme Programming Explained: Segunda Edição" (Extreme Programming Explained Embrace Change Segunda Edição) livro por Kent Beck, Cynthia Andres

Page 5: Extreme programming   (xp)

Iteração

● O plano de iteração é a lista de histórias selecionadas para serem implementadas dentro de uma iteração.

● Um “laço” de iteração do XP geralmente é curto e tem uma duração de no máximo duas semanas.

● A definição de quais histórias entram num clico parte do cliente que define de acordo com suas prioridades.

● Histórias muito complexas são retiradas do ciclo e repensadas para voltar posteriormente.

Page 6: Extreme programming   (xp)

Valores do XP● Comunicação: Focada em reduzir a quantidade de documentos formais, e aumentar a

comunicação direta entre todas as pessoas envolvidas no projeto.

● Simplicidade: A XP sugere que o código seja feito da forma mais simples possível e que as funcionalidades e requisitos sejam feitas apenas quando as mesmas se fizerem necessárias.

● Feedback: As respostas às decisões tomadas devem ser rápidas e visíveis. Todos devem ter, o tempo todo, consciência do que está acontecendo.

● Coragem: Alterar um código em produção, sem causar bugs, com agilidade, exige muita coragem e responsabilidade.

● Respeito: Todos têm sua importância dentro da equipe e devem ser respeitados e valorizados. Isso mantém o trabalho energizado.

Page 7: Extreme programming   (xp)

Papeis no XP

● Os papéis de um time no XP são formados por uma variedade de pessoas com características e habilidades necessárias para o sucesso do projeto.

● Em geral os papeis não variam muito em relação aos outros processos ou metodologias.

● Existem variações e diferentes referências sobre os papeis no XP. Estes papeis até podem ser acumulados por mais de uma pessoa dentro do time, porém deve se tomar cuidado.

Page 8: Extreme programming   (xp)

Papeis no XP

● Dono do ouro: É o cliente que paga pelo desenvolvimento do projeto;

● Usuário ou cliente: Define os requisitos, executam os testes de aceitação e usam o produto final.

● Gerente: Gerencia e acompanha o planejamento do projeto;

● Coach: É o técnico do time , orienta e mantem a disciplina das práticas padrões da equipe;

Page 9: Extreme programming   (xp)

Papeis no XP

● Testadores: Ajudam os clientes com a definição dos testes. Realizam os testes no sistema;

● Desenvolvedores: Definem a arquitetura, realizam estimativas e implementam o código;

● Tracker: Responsável por coletar as métricas do projeto. O tracker e capaz de contar uma historia de iteração ao final da mesma, através dos apontamentos que realizou e das informações que foram coletadas;

● Analistas: Ajudam o cliente na definição dos requisitos;

Page 10: Extreme programming   (xp)

Práticas de XPO funcionamento do XP e baseado em um conjunto de valores e práticas que são

divididas em organizacionais(circulo vermelho), equipe(circulo verde) e individuais.

Page 11: Extreme programming   (xp)

Práticas de XP● Jogo do Planejamento: São criadas historias que descrevem as funcionalidades a

serem implementadas e são definidas estimativas e prioridades.

● Releases Pequenos: Devem ser o menor possível, e conter os requisitos mais importantes para o negócio.

● Metáfora: Oferece uma visão geral do sistema de forma simples, e que pode ser compartilhada por desenvolvedores e clientes.

● Projeto Simples: Esta prática enfatiza que se deve concentrar em soluções simples e bem estruturadas.

Page 12: Extreme programming   (xp)

Práticas de XP● Testes Constantes: Os teste em XP são feitos antes da programação. Existem

dois tipos de testes: teste de unidade e teste funcional.

● Refatoramento: São constantes melhorias no projeto do software visando melhorar sua capacidade de se adaptar a mudanças.

● Programação em Pares: Possibilita que todos os membros da equipe tenha conhecimento sobre diversas partes do sistema.

● Propriedade Coletiva do Código: Estimula toda a equipe a trabalhar juntos para a melhoria do código.

Page 13: Extreme programming   (xp)

Práticas de XP● Integração Continua: Novas funcionalidades implementadas devem ser integradas

varias vezes ao dia.

● Semana de Quarenta Horas: Não é uma regra porem é aconselhável que a equipe não deve trabalhar por mais de quarenta horas semanais, para não prejudicar a qualidade do código.

● Cliente no Local: Deve ser integrar a equipe uma pessoa por parte do cliente, para orientar e esclarecer duvidas sobre funcionalidades do sistema.

● Padrões de Codificação: Deve se padronizar o código, para que qualquer um possa entender e modificar o código quando necessário.

Page 14: Extreme programming   (xp)

Quando usar o método?

● Equipes com no máximo 12 integrantes;

● Clientes que estejam dispostos a se dedicar semanalmente pois requer varias reuniões com os clientes;

● Ter um espaço físico onde é possível todos os envolvidos ficarem próximos uns dos outros.

Page 15: Extreme programming   (xp)

Vantagens

● Um dos beneficios é tornar o processo ágil e mais flexível. As praticas do XP foram criadas para funcionarem juntas.

● Fornecem mais valor do que cada uma poderia fornecer individualmente.

● Analise prévia dos acontecimentos dentro do projeto, o que oferece qualidade, confiança, datas de entrega e custos promissores.

● O XP é ideal para projetos em que o cliente não sabe exatamente o que quer, pois os feedbacks constantes tornam possível as mudanças para atender os requisitos de forma rápida.

Page 16: Extreme programming   (xp)

Vantagens

● Entregas constantes de partes funcionais do software assim o cliente não precisa esperar muito para ver o software funcionando.

● O cliente esta sempre por perto, resultando em uma produto final muito próximo daquilo que ele deseja.

● Programação em dupla reduz o número de erros e aumenta a legibilidade do código o que facilita manutenções futuras.

● Erros são encontrados em um estágio inicial, pois são realizados diversos testes de diversas formas.

Page 17: Extreme programming   (xp)

Desvantagens

● O cliente deve disponibilizar uma equipe para participar de todo o processo de desenvolvimento do software.

● Existe uma perda de produtividade adotando programação em pares.

● Todos os envolvidos no projeto devem conhecer as técnicas e regras.

● Exige muito código para testes e a razão entre linhas de código de teste para linhas de código de projeto deve ser, no minimo 2:1.

Page 18: Extreme programming   (xp)

Desvantagens

● Requer varias reuniões com os clientes.

● Requer muita mudança cultural.

● A análise de requisitos informal pode não ser bem visto pelos clientes que podem se sentir inseguros.

● A falta de documentação pode ser um problema em certos projetos.

Page 19: Extreme programming   (xp)

Desvantagens

● Uma cultura na qual você e requisitado a trabalhar horas e horas para provar seu “comprometimento com a empresa”, você não conseguira executar o XP se estiver cansado.

● O espaço físico deve permitir a organização da equipe XP de modo que todos fiquem próximos uns aos outros.

Page 20: Extreme programming   (xp)

Ferramentas de Apoio

Para apoiar a adoção de princípios e práticas do XP existem uma serie de ferramentas que podem ser adotas nos projetos de software:

● Temos Hard Tools que são ferramentas mais simples relacionadas com o ambiente.

● Temos Soft Tools que são ferramentas de software que apoiam as práticas.

Page 21: Extreme programming   (xp)

Ambiente e Hard ToolsO ambiente é essencial para apoiar as práticas, para isso e necessário adequá-lo.

Podem ser utilizados uma série de gráficos de acompanhamento, murais e quadros tornando o ambiente informativo.

Page 22: Extreme programming   (xp)

Ambiente e Hard ToolsUm time ágil utiliza quadros para execução e acompanhamento do time. Neste quadro é

possível acompanhar o trabalho que está planejado, o que está em andamento e os que já estão prontos. São conhecidos como quadros de Kanban. Existem variações de quadros de acordo com a necessidade do time.

Page 23: Extreme programming   (xp)

Soft ToolsExistem também inúmeros softwares para apoiar as praticas XP. Abaixo uma lista de

ferramentas práticas que são apoiadas, licença e o endereço do fornecedor.

Page 24: Extreme programming   (xp)

Conclusão

Com base nos dados apresentados é necessário avaliar se é viável ou não a utilização do XP. Muitas vezes o processo de adoção é lento e complicado, mas com dedicação e disciplina pode-se atingir resultados satisfatórios.