Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 1/59 Extreme Programming Régis...
Embed Size (px)
Transcript of Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 1/59 Extreme Programming Régis...

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 1/59
Extreme Programming
Régis Simão e Ciro Coelho

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 2/59
Agenda
Introdução
Valores
Ciclo de Vida
Práticas
Documentação
Equipe
Quando não usar XP
Como implantar
Bibliografia

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 3/59
Livros
Introdução

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 4/59
Livros – The XP Series
Introdução

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 5/59
Outras Referências
Site:
www.improveit.com.br/xp
Grupos:
http://tech.groups.yahoo.com/group/xprio
http://br.groups.yahoo.com/group/xprecife
http://tech.groups.yahoo.com/group/xp-rs
http://br.groups.yahoo.com/group/xpnorte
http://tech.groups.yahoo.com/group/xpsc
http://tech.groups.yahoo.com/group/xpbh
http://tech.groups.yahoo.com/group/xpsp
Introdução

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 6/59
Extreme Programming (XP) é um processo de desenvolvimento de software voltado para:
Projetos cujos requisitos são vagos e mudam com freqüência;
Desenvolvimento de sistemas orientados a objetos;
Equipes pequenas, preferencialmente até 12 desenvolvedores;
Desenvolvimento incremental (ou iterativo), onde o sistema começa a ser implementado logo no início do projeto e vai ganhando novas funcionalidades ao longo do tempo.
Introdução
Fonte: Livro Extreme Programming. Autor Vinícius Manhães Teles

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 7/59
Feedback
Comunicação
Simplicidade
Coragem
Valores

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 8/59
Feedback
Quando o cliente aprende com o sistema que utiliza e re-avalia as suas necessidades, gerando feedback para a equipe de desenvolvimento.
É o mecanismo fundamental que permite que o cliente conduza o desenvolvimento diariamente.
Garante que a equipe direcione as suas atenções para aquilo que irá gerar mais valor.
Valores

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 9/59
Comunicação
O XP busca aproximar todos os envolvidos do projeto
Permite que o cliente compartilhe o seu aprendizado com a equipe
Valores
Promover a comunicação face-a-face ou da forma mais rica que for viável.
A comunicação entre o cliente e a equipe permite que todos os detalhes do projeto sejam tratados com a atenção e a agilidade que merecem.

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 10/59
Feedback e Comunicação
Valores

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 11/59
Simplicidade
Temos que implementar apenas aquilo que é suficiente para atender a cada necessidade do cliente.
Ao codificar, deve-se preocupar apenas com os problemas de hoje.
Deve-se deixar os problemas do futuro para o futuro.
As generalizações devem ser feitas quando elas vierem na forma de uma necessidade específica e não como uma especulação.
Valores

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 12/59
Coragem
“A equipe precisa ser corajosa e acreditar que, utilizando as práticas e valores do XP, será capaz de fazer o software evoluir com segurança e agilidade.”
“Em muitos casos, a equipe alterará algo que vinha funcionando corretamente, o que leva ao risco de gerar falhas no sistema.”
TELES, Vinícius M. Extreme Programming.
Novatec Editora, 2006
Valores

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 13/59
Desenvolvimento Tradicional
Desenvolvimento Ágil
Ciclo Semanal
Ciclo de Vida

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 14/59
Desenvolvimento Tradicional
Ciclo de Vida em Cascata
Forte influência da Revolução Industrial
Software construído linearmente, seguindo uma seqüência de fases
Ciclo de Vida
Definição de Requisitos
Projeto de Software
Implementação e teste de unidade
Integração e teste de sistema
Operação e Manutenção

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 15/59
Desenvolvimento Tradicional
Ciclo de Vida em Cascata
Base de vários processos de software
Interpretação errada do ciclo de vida do Rational Unified Process (RUP)
Ciclo de Vida

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 16/59
Desenvolvimento Tradicional
Características do Ciclo de Vida em Cascata
Linearidade
Determinístico
Especialização
Foco na execução
Ciclo de Vida

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 17/59
Desenvolvimento Ágil
Categorias de Trabalhadores (Drucker, 1999. In: Teles, 2006)
Trabalhador Manual
Habilidades Manuais
Fácil de Automatizar
Determinístico
Repetitivo
Trabalhador do Conhecimento
Uso intensivo de conhecimento e criatividade
O XP vê o desenvolvimento de software como um processo de uso intensivo de conhecimento e criatividade
Ciclo de Vida

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 18/59
Desenvolvimento Ágil
Ciclo de Vida Incremental
Ciclo de Vida
Definir esboço dos requisitos
Atribuir requisitos aos incrementos
Projetar arquitetura do sistema
Desenvolver incremento do sistema
Validar incremento
Integrar incremento
Validar sistema
Sistema incompleto
Sistema final

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 19/59
Desenvolvimento Ágil
Ciclo de Vida em Espiral
Ciclo de Vida
Riskanalysis
Riskanalysis
Riskanalysis
Riskanalysis Proto-
type 1
Prototype 2Prototype 3
Opera-tionalprotoype
Concept ofOperation
Simulations, models, benchmarks
S/Wrequirements
Requirementvalidation
DesignV&V
Productdesign Detailed
design
CodeUnit test
IntegrationtestAcceptance
testService Develop, verifynext-level product
Evaluate alternativesidentify, resolve risks
Determine objectivesalternatives and
constraints
Plan next phase
Integrationand test plan
Developmentplan
Requirements planLife-cycle plan
REVIEW

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 20/59
Ciclo de Vida
Desenvolvimento Ágil
Fonte: Workshop Desenvolvimento Ágil. Autor Vinícius Manhães Teles

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 21/59
Ciclo de Vida
Ciclo Semanal
Definição com o cliente
Desenvolvimento
Teste
Avaliação pelo cliente
Fonte: Workshop Desenvolvimento Ágil. Autor Vinícius Manhães Teles
Validação parcial com o cliente

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 22/59
Ciclo de Vida
Fonte: Palestra Extreme Programming, abraçando a mudança. Autor Helder da Rocha
Ciclo Semanal
Feedback e Aprendizagem

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 23/59
Práticas
Jogo do Planejamento
Cliente Presente
Stand Up Meeting
Desenvolvimento guiado pelos Testes
Programação por Pares
Refactoring
Código Coletivo
Código Padronizado
Design Simples
Ritmo Sustentável
Integração Contínua
Releases Curtos
Metáfora

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 24/59
Práticas
Jogo do Planejamento
É uma reunião onde o cliente avalia as funcionalidades que devem ser implementadas e prioriza aquelas que farão parte do próximo release ou da próxima iteração.
Visa assegurar que a equipe de desenvolvimento esteja sempre trabalhando naquilo que irá gerar maior valor para o cliente a cada dia de trabalho.
O projeto é dividido em Releases e Iterações.
Cliente e a equipe podem revisar o planejamento constatemente.
As funcionalidades são descritas em pequenos cartões e são chamadas de Estórias.

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 25/59
Práticas
Jogo do Planejamento
Exemplos de Estórias (Teles, 2006):
Apresente ao cliente as dez tarifas mais baratas para uma determinada rota (Beck, 2001).
Para cada conta, computar o saldo fazendo a adição de todos os depósitos e a subtração de todas as deduções (Jeffries, 2001).
Produzir um extrato para cada conta, mostrando a data, o número, o beneficiário e a quantia da transação. Segue um extrato de exemplo em anexo – faça o relatório parecer com o exemplo (Jeffries, 2001).
A tela de login deve permitir que o usuário pule o login. Neste caso, o usuário entrará no sistema como guest (Newkirk, 2001).
O usuário deve poder alterar o seu perfil (email, senha, primeiro nome, último nome e filiação). Dois campos de senha para confirmação (Newkirk, 2001).

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 26/59
Práticas
Jogo do Planejamento
Estórias
São sempre escritas pelo próprio cliente.
Criam um vínculo com o cliente.
Formalizam o pensamento do cliente.
Não têm formato de escrita.
Devem ser limitadas pelo tamanho do cartão, simplicidade.
Podem ser dividas em tarefas, quando muito complexas.
Dão a noção de custo.
Cada desenvolvedor seleciona uma estória ou tarefa a ser feita em um determinado prazo.

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 27/59
Práticas
Jogo do Planejamento
Estimativas
Estimativa baseada no conceito de Dia Ideal de Desenvolvimento (só para implementação).
Estima-se cada estória com a unidade Ponto (dia ideal de desenvolvimento).
No canto superior esquerdo do cartão, colocam-se os pontos estimados.
No canto superior direito do cartão, ficam os pontos realmente consumidos.
A estimativa deve ser por comparação.
A estimativa deve ser feita em equipe.
O cliente deve sempre participar.
Velocidade é a quantidade de pontos que uma equipe implementou na iteração anterior.

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 28/59
Práticas
Jogo do Planejamento
Exemplo de Planejamento de uma Iteração de 2 semanas:
2 semanas = 10 dias úteis
1 dia útil para a reunião de planejamento da iteração
1 dia útil para a reunião de encerramento da iteração
Dias úteis disponíveis para o desenvolvimento = 10 – 2 = 8
Números de desenvolvedores = 6 = 3 x 2 = 3 pares
1 par / dia = 1 ponto
1 par em 8 dias = 1 x 8 = 8 pontos
3 pares em 8 dias = 3 x 8 = 24 pontos

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 29/59
Jogo do Planejamento
Acompanhamento Visual
Fonte: Workshop Desenvolvimento Ágil. Autor Vinícius Manhães Teles
Não iniciado Em andamento Finalizado
Práticas

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 30/59
Práticas
Cliente Presente
O cliente deve estar presente durante o desenvolvimento.
Presente em:
Reuniões de Planejamento das Releases e das Iterações
Reuniões de Encerramento das Releases e das Iterações
Alguns momentos do desenvolvimento para tirar dúvidas e validar algumas informações.
O cliente deve conduzir o desenvolvimento a partir do feedback que recebe do sistema.
A presença do cliente simplifica a comunicação.

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 31/59
Práticas
Stand Up Meeting
Reunião rápida que a equipe de desenvolvimento faz a cada manhã para avaliar o trabalho do dia anterior e priorizar aquilo que será implementado no dia.
Três perguntas devem ser respondidas por cada desenvolvedor:
O que foi feito no dia anterior?
O que vai ser feito hoje?
Tem algo atrapalhando ou necessário para o trabalho a ser realizado?
Os problemas relatados devem ser tratados fora da reunião!

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 32/59
Práticas
Desenvolvimento Guiado pelos Testes
Os desenvolvedores escrevem testes para cada funcionalidade antes de implementá-las.
Benefícios:
melhoram o entendimento sobre as necessidades do cliente,
projetam melhor as interfaces externas dos métodos e classes e
limitam até onde codificar cada funcionalidades.
Tipos de Testes:
Testes de Unidade sobre cada classe, criado e executado pelo Desenvolvedor
Testes de Aceitação sobre funcionalidade ou estórias, escrito pelo cliente e pelo Analista de Testes, executado principalmente pelo cliente

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 33/59
Práticas
Desenvolvimento Guiado pelos Testes
Exemplo de um Teste de Unidade
Fonte: Desenvolvimento Orientado a Testes (www.improveit.com.br).

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 34/59
Práticas
Desenvolvimento Guiado pelos Testes
Exemplo de um Teste de Unidade
Fonte: Desenvolvimento Orientado a Testes (www.improveit.com.br).

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 35/59
Práticas
Desenvolvimento Guiado pelos Testes
Exemplo de um Teste de Aceitação
Fonte: Livro Extreme Programming, Autor: Vinícius Manhães Teles

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 36/59
Práticas
Programação em Pares
A implementação é sempre feita por duas pessoas.
Enquanto uma pessoa implementa, a outra avalia o código que está sendo feito, realizando uma revisão constante.
A cada 15 minutos, a pessoa que está implementado passa a fazer a avaliação e a outra implementa.
A cada turno as duplas trocam.

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 37/59
Práticas
Programação em Pares
Benefícios:
Aumenta a produtividade
Melhora a solução
Dissemina conhecimento de negócio
Nivela habilidades
Desafios:
Organização do escritório
Visão gerencial
Relacionamento humano
Competição

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 38/59
Práticas
Refactoring
O refactoring é a técnica de alterar o código sem alterar a funcionalidade.
O objetivo é fazer o código ficar mais simples de ser manipulado.
Anda de mãos dadas com o código coletivo e testes de unidades.
Existem livros específicos sobre técnicas de refactoring.

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 39/59
Práticas
Código Coletivo
Procura evitar “ilhas de conhecimento”.
Quando só uma pessoa conhece uma solução, pode ser um gargalho no desenvolvimento.
Com a programação em pares, os desenvolvedores passam a ser conhecedores de todas as funcionalidades.
Eles têm acesso a todas as funcionalidades, podendo alterá-las sem necessitar de autorização, inclusive fazendo refactoring.

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 40/59
Práticas
Código Padronizado
A equipe deve estabelecer padrões de implementação que devem ser seguidos por todos.
Isto agiliza as manutenções e torna o código mais homogêneo.
Exemplo:
Code Conventions for the Java Programming Language da SUN
Writting Robust Java Code de Scott Ambler
Características de um padrão:
Indentação
Letras maiúsculas e minúsculas
Comentários
Nome

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 41/59
Práticas
Código Padronizado
Quando alguém encontra algo fora do padrão deve-se:
Alertar a equipe o que está fora do padrão e forma correta de fazer.
Fazer refactoring do código, colocando-o no padrão.
Dificuldades
Ter um padrão. Se não tiver, utilize um pronto!
Mudança de hábito.

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 42/59
Práticas
Design Simples
Para ser ágil, a equipe deve optar por um código que seja suficiente para atender as necessidades atuais do cliente.
Necessidades futuras serão atendidas quando elas forem requisitadas, fazendo-se uso do refactoring e testes, por exemplo.
A única coisa constante em um projeto de software é a mudança (Beck, 2000. In: Teles, 2006):
Os requisitos mudam
O design muda
A tecnologia muda
A equipe muda
Os membros da equipe mudam

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 43/59
Práticas
Design Simples
Estratégia do XP para um código simples (Teles, 2006):
Comece escrevendo um teste para funcionalidade a ser desenvolvida.
Faça o design e implemente apenas o suficiente para passar nos testes.
Repita os passos 1 e 2 quantas vezes forem necessárias.
Se você identificar a oportunidade de tornar o design mais simples, faça-o.

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 44/59
Práticas
Design Simples
Ferramentas:
Utilize as ferramentas mais simples.
Se desejar gerar documentações e diagramas, lembre que tem que mantê-las atualizadas.
A documentação sempre tem que refletir o código, senão não serve pra nada!
Documente as decisões importantes.

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 45/59
Práticas
Ritmo Sustentável
Os desenvolvedores devem trabalhar apenas 8 horas por dia.
As horas-extras devem ser evitadas.
Isto para permitir que os desenvolvedores se mantenham atentos, criativos e dispostos a solucionar os problemas.
Sugestão:
08:00 às 08:30 Ler e-mails
08:30 às 09:00 Stand Up Meeting
09:00 às 12:00 Programação em Pares
14:00 às 17:00 Programação em Pares
17:00 às 17:30 Ler e-mails
17:30 às 18:00 Estudo para refactoring

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 46/59
Práticas
Integração Contínua
Consiste da equipe integrarem seus códigos com o restante do sistema várias vezes ao dia.
Para garantir que o sistema esteja funcionando corretamente após uma integração, é necessário realizar todos os testes (testes de regressão).
Código avança através de três fases:
local,
candidato à liberação e
disponibilizado no repositório
Utilize uma máquina em separado para a integração: backup e “ritual”.

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 47/59
Práticas
Integração Contínua
Ferramentas:
Ferramenta de build
Sistema de controle de versão
O processo de integração é feito corretamente quando:
Deve ser fácil e rápido obter o código fonte do qual você necessita;
Deve ser fácil e rápido armazenar as suas mudanças;
O repositório deve detectar conflitos e é importante que seja simples resolvê-los;
Não deve haver espera, isto é, se um par precisa editar alguma coisa, ele deve seguir adiante sem que nada o impeça.

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 48/59
Práticas
Releases Curtos
A equipe deve produzir um conjunto pequeno de funcionalidades (release)
Colocar a release em produção rapidamente para que o cliente possa fazer uso das funcionalidades o mais cedo possível.
Durante o projeto, a equipe colocará diversas versões do sistema em produção, gerando um fluxo contínuo de valor para o cliente.
Aumenta Feedback
Aumenta o Retorno do Investimento

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 49/59
Práticas
Releases Curtos
Fonte: Workshop Desenvolvimento Ágil. Autor Vinícius Manhães Teles

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 50/59
Práticas
Metáfora
A equipe de desenvolvimento transmite idéias complexas de forma simples através de metáforas.
A metáfora do time de futebol para entender a utilização das práticas de futebol

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 51/59
Documentação
Por que documentar?
Permitir que rapidamente um desenvolvedor possa criar ou manter um código.
Até que ponto documentar?
O suficiente para apoiar o código: testes de unidade, testes de aceitação e outras documentações.
Quando documentar?
Próximo da implementação (antes ou depois), para que o negócio não mude enquanto se documenta.
Dentro da mesma iteração.

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 52/59
Documentação
Sugestão de Documentação
Estórias
Testes de Aceitação
Testes de Unidade
Javadoc
Modelo de Classes
Modelo de Dados
Processo de Negócio
Manual do Usuário
Acompanhamento Diário
Acompanhamento do Projeto
Fotos

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 53/59
Gerente de Projeto
Coach
Analista de Teste
Redator Técnico
Desenvolvedor
Equipe

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 54/59
Equipe
Gerente de Projeto
É responsável pelos assuntos administrativos do projetos. Libera a equipe de questões não ligadas ao desenvolvimento. Administra o relacionamento com o cliente, assegurando que o mesmo participe ativamente do desenvolvimento.
Coach
É o responsável técnico pelo projeto. Orienta a equipe nas boas práticas do XP. Pode atuar na implementação, mas a sua função principal é assegurar o bom funcionamento do processo e buscar formas de melhorá-lo continuamente.
Analista de Teste
É responsável por ajudar o cliente a escrever os testes de aceitação. Quando o teste não é automático, ele deve executar os testes diversas vezes ao longo das iterações.

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 55/59
Equipe
Redator Técnico
Ajuda a equipe a documentar o sistema. A equipe pode fazer documentação, mas a preocupação principal deve ser o código. O redator é quem faz a maior parte do trabalho de documentação.
Desenvolvedor
É a pessoa que analisa, projeta e codifica. Não existe distinção entre analista, projetista e programadores. O desenvolvedor faz estes diferentes papéis em diversos momentos do projeto.

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 56/59
Quando não usar XP
Sistemas de premiação individuais
Contratos de escopo fechado
Clientes que fazem questão de um grande número de artefatos
Empresas onde os layouts de escritórios são fixos
Quando não se tem apoio das pessoas que decidem
Equipes grandes e espalhadas geograficamente
Situações onde não se tem controle sobre o código (sistemas legados)
Situações onde o feedback é demorado

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 57/59
Como implantar
Uma prática de cada vez
Enfatize o problema mais importante
Dificuldades culturais
Deixar alguém mexer no seu código
Trabalhar em pares
Dificuldades devido a mudança de hábitos
Manter as coisas simples (e não tentar prever o futuro escrevendo "design flexível")
Jogar fora código desnecessário
Escrever testes antes de codificar
Refatorar com freqüência (vencer o medo)

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 58/59
TELES, Vinícius M. Extreme Programming. Novatec Editora, 2006.
TELES, Vinícius M. Workshop sobre Desenvolvimento Ágil. 2007.
DA ROCHA, Helder. Palestra sobre Extreme Programming: abraçando a mudança. 2002.
Bibliografia

Metodologias de Desenv. Ágil – XP – Régis Simão e Ciro Coelho 59/59
FIM!!!