63
Grupo Pará

eXtreme Programming

Embed Size (px)

DESCRIPTION

eXtreme Programming - Apresentação do Grupo Pará na disciplina Métodos Ágeis de Desenvolvimento de Software (prof. Márcio Sete) da Pós-graduacao em engenharia de software centrada em métodos ágeis - UNA - 03/09/2010

Citation preview

Page 1: eXtreme Programming

Grupo Pará

Page 2: eXtreme Programming

“XP é a arte de maximizar a quantidade de software que você não vai fazer” ImprovIT

“XP é um jeito leve, eficiente, de baixo risco, flexível, preditivo, científico e divertido de se desenvolver software” Kent Beck

“XP é uma disciplina, porque existem coisas que você precisa fazer para dizer que está fazendo XP ” Kent Beck

Page 3: eXtreme Programming

Comunicação

Simplicidade

Feedback

Coragem

Page 4: eXtreme Programming

Sincroniza o time em torno do mesmo objetivo

Page 5: eXtreme Programming

Práticas de comunicação Programação em par colocam as

pessoas lado a lado sem individualismo Testes unitários esclarecem os objetivos

do código fonte Estimativas envolvem programadores,

gerentes e clientes

Page 6: eXtreme Programming

Coisas simples são mais fáceis de entender, manter, construir em cima e, se for necessário, derrubar e refazer

Page 7: eXtreme Programming

A tendência de software é o custo de mudança aumentar ao longo do tempo

Page 8: eXtreme Programming

A proposta é achatar essa curva

Page 9: eXtreme Programming

Itens complexos demoram. Você vai perder tempo em algo que não será usado?

Page 10: eXtreme Programming

Quanto antes você tiver feedback sobre uma situação, mais rápido você pode agir

Page 11: eXtreme Programming

Formas de feedback: Estimativa imediata do time para o

cliente Leitura do código (pergunte ao sistema) Testes unitários / TDD Testes funcionais Integração Contínua Deploy Contínuo

Page 12: eXtreme Programming

“Coragem é resistência ao medo, domínio do medo, e não ausência do medo.” Mark Twain

Page 13: eXtreme Programming

Gerente de projetos Responsável pelo relacionamento entre

equipe e cliente. Reporta o andamento, os problemas e os riscos.

Filtra para a equipe de desenvolvimento os aspectos administrativos e burocráticos.

Contatar clientes, agendar, garantir a presença do cliente;

Garantem à equipe: equipamentos, softwares, itens de escritório.

Page 14: eXtreme Programming

Gerente de projetos Deve compreender os valores e práticas da XP. Mentalidade industrial representa ameaça ao

projeto. (programação em par, equipe gerenciável. ritmo sustentável (40h/semana, industria: repetição, software: criatividade/esforço mental, cansaço))

Desaconselháveis fazer com que uma pessoa assuma o papel de gerente e coach. proximidade: coach-equipe-tecnico, gerente=cliente=admin

Page 15: eXtreme Programming

Coach Assegura que a equipe respeita e utiliza

os valores e práticas do XP. Possui conhecimento técnico e do

processo de desenvolvimento de software.

Sendo o XP voltado para o comportamento humano, o coach verifica o andamento e mostra eventuais erros.

Page 16: eXtreme Programming

Analista de testes Testa e garante a qualidade do sistema. Ajuda o cliente a escrever testes de

aceitação e que assegura que o sistema os respeite.

Não envolvido com o desenvolvimento. (Visão de fora, não da codificação.)

Page 17: eXtreme Programming

Redator técnico Mantém a documentação do sistema

atualizada. Evita envolver o desenvolvedor na

documentação. Sintonia com a equipe e cliente

Page 18: eXtreme Programming

Desenvolvedor Analisa, projeta, codifica. Equipe multidisciplinar (membros

exercem vários papéis em momentos diferentes do projeto).

Não existe aristocracia ou hierarquia. Todos aprendem com todos

(programação em par)

Page 19: eXtreme Programming
Page 20: eXtreme Programming

Sugere que os usuários finais sejam envolvidos diretamente no processo de desenvolvimento.

Vantagens: Feedback rápido Percepção se o que está implementado

consegue ser usado facilmente pelos usuários finais.

Page 21: eXtreme Programming

Melhor fazer pequenos lotes de trabalho de cada vez, validá-los e só então seguir adiante.

Quando os erros são descobertos rapidamente e abrangem um escopo pequeno, solucionar torna-se mais fácil.

Page 22: eXtreme Programming

O que fazer na próxima semana Estórias (cliente escreve) Estimativa Seleção de cartões Aguarde e confie Reunião diária

Page 23: eXtreme Programming

Estórias (Cliente escreve)

Page 24: eXtreme Programming

Estimativa

Page 25: eXtreme Programming

Seleção de estórias

Page 26: eXtreme Programming

Aguarde e confie...

Page 27: eXtreme Programming
Page 28: eXtreme Programming

Reuniões diárias

Page 29: eXtreme Programming

Reunião diária Ocorre todos os dias, com todos os

membros da equipe. Objetiva,15 min, em pé. O que cada um fez no dia anterior

(equipe atualizada com o andamento do projeto)

O que será feito (quais cartões,quem faz o quê, decisões tomadas em equipe).

Page 30: eXtreme Programming

Une várias técnicas em uma só: Revisão de código Correções imediatas Evita acumulo de pequenos erros. Melhor Modelagem da Solução

Todo desenvolvimento feito em pares. Um computador, dois programadores. Um piloto, um co-piloto Papéis são alternados freqüentemente Pares são trocados periodicamente

Page 31: eXtreme Programming

Um digita, outro revisa código, e os dois discutem soluções juntos.

Interpretação errada: uma pessoa trabalha, e a outra fica parada (desperdício).

Page 32: eXtreme Programming

Pressão do Par Minimiza focos de distração (bate papo,

email, etc...). Responsabilidade compartilhada.

Page 33: eXtreme Programming

Revezamento Fundamental. Não há regra definida. Desenvolvedores sabem hora de trocar.

Page 34: eXtreme Programming

Disseminação de Conhecimento Troca de par incentiva disseminação

de conhecimento. Nivela equipe por alto. Facilita inserção de novos membros.

Page 35: eXtreme Programming

Benefícios: Melhor qualidade do design, código e

testes Revisão constante do código Nivelamento da equipe Maior comunicação

Page 36: eXtreme Programming

Pesquisas demonstram que duplas produzem código de melhor qualidade em aproximadamente o mesmo tempo que programadores trabalhando sozinho.

Page 37: eXtreme Programming

Principais Desafios Exige que as pessoas envolvidas sejam

receptivas, compreensivas umas com as outras, engajadas e, sobretudo, humildes.

Organização física do escritório. Visão Gerencial: desenvolvedores vistos

como operários.

Page 38: eXtreme Programming

Testar é a parte do desenvolvimento de software que todo mundo sabe que precisa ser feita, mas ninguém quer fazer.

Software é complexo, erros são inevitáveis (natureza lógica, atenção, interpretação de requisitos).

Page 39: eXtreme Programming

ACEITE ISSO!

Page 40: eXtreme Programming

É possível fazer algo QUANDO os erros são detectados e diminuir QUANTO de impacto será causado no cronograma.

Diminuir o tempo entre uma ação e o feedback que ela gera é essencial para o aprendizado.

Page 41: eXtreme Programming

Plano de saúdePrevenir x Remediar

Page 42: eXtreme Programming

Prevenindo… Investimento monetário inicial Benefícios a longo prazo Custo inferior comparado à necessidade

de remediar em caso de fatalidade

Page 43: eXtreme Programming

Doenças = Bugs = Tempo de depuração

Aumento do custo (tempo de inserção ............. tempo de

descoberta)

Page 44: eXtreme Programming

Testes expõem o defeito assim que ele entra no sistema.

Testes dizem exatamente ONDE está o erro.

Page 45: eXtreme Programming

TESTES DE UNIDADE - realizado em cada classe do sistema para verificar se o resultado gerado é correto.

TESTE DE ACEITAÇÃO - realizado sobre cada funcionalidade, ou estórias do sistema. A interação entre várias classes que implementam uma funcionalidade.

Page 46: eXtreme Programming

TESTES AUTOMATIZADOS - Classes que testam outras classes

Page 47: eXtreme Programming

Testes dão confiança ao time, pois diminuem o risco da mudança

Page 48: eXtreme Programming

ConceitoPorque Refatorar?Quando Refatorar? Como Refatorar?Riscos e impedimentosReflexão

Page 49: eXtreme Programming

"Refatoração é o processo de alteração de um sistema de software de modo que 

o comportamento externo do código não mude, mas que sua estrutura

interna seja melhorada."

Vinícius Teles, citando ASTELS

Page 50: eXtreme Programming

Conceito A Refatoração é utilizada após

a implementação da funcionalidade, ou seja, depois que a função estiver sendo executada perfeitamente, usa-se a Refatoração.

Page 51: eXtreme Programming

Por que refatorar? Mudança contínua de Requisitos Refatorar melhora o projeto do software Torna o software mais fácil de entender Ajuda a encontrar falhas Ajuda a programar mais rapidamente 

Page 52: eXtreme Programming

Quando refatorar? Regra de três Quando acrescentar funções Quando existe duplicação Quando precisar consertar uma falha Enquanto revisa o código

Page 53: eXtreme Programming

Como refatorar? O primeiro passo para Refatorar é criar

um sólido conjunto de testes para o  trecho de código.

Page 54: eXtreme Programming

Riscos e impedimentos Desenvolver códigos com erros Sem metodologia de Refatoração o risco

aumenta Tempo: pode ocorrer atraso no término

do produto Gera custos

Page 55: eXtreme Programming

Reflexão Se Refatorar me toma mais tempo, me

dá mais trabalho, que a implementação da funcionalidade em si, então porque Refatorar?

Trabalhando desta maneira você se assegura que conseguirá adicionar uma próxima funcionalidade com menos esforço, e assim sucessivamente

Page 56: eXtreme Programming

Integrar e testar o sistema inteiro diversas vezes por dia. Ferramentas: SVN, TFS, etc

O build rápido é uma prioridade.

Código coletivo.

Page 57: eXtreme Programming

Construir ideais para explicar outras ideias.

Page 58: eXtreme Programming

Documentar não é o Objetivo Principal.

Documenta-se o mínimo necessário antes.

A documentação mais abrangente acontece quando o código está pronto.

Page 59: eXtreme Programming

Documentos que compõem a documentação: Estória. Testes. Javadoc Diagramas de classe. – Rational Rose Modelos de dados. Manual do usuário. UML. Fotos.

Page 60: eXtreme Programming

XP leva princípios e práticas do senso comum a níveis extremos: Se revisar o código é bom, revisaremos

o tempo inteiro (programação em par); Se testar é bom, todos vão testar o

tempo inteiro; Se o projeto é bom, ele fará parte das

funções diárias de todos (refatoração);

Page 61: eXtreme Programming

Se simplicidade é bom, sempre deixaremos o sistema com o projeto mais que simples que suporte a funcionalidade atual;

Se testes de integração são importantes, vamos integrar e testar várias vezes ao dia;

Se iterações são boas, faremos iterações muito, muito pequenas - horas e semanas, não meses e anos;

Page 62: eXtreme Programming

[Beck 2004] Kent Beck. Extreme Programming Explained. Addison-Wesley, 2004.

[Teles 2004] Vinícius Manhães Teles. Extreme Programming: Aprenda como encantar seus usuários desenvolvendo software com agilidade e alta qualidade. Novatec, 2004.

[Improve IT] http://improveit.com.br

Page 63: eXtreme Programming

?