1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil Aplicar os ideais do desenvolvimento...

61
1 Extreme Programming

Transcript of 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil Aplicar os ideais do desenvolvimento...

Page 1: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

1

Extreme Programming

Page 2: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

2 2

Manifesto do Desenvolvimento Ágil

www.agilealliance.org

Aplicar os ideais do desenvolvimento ágil ao nosso processo particular poderia nos ajudar a ser mais ágeis, mesmo que não pudéssemos adotar XP.

Indivíduos e interações mais que processos e ferramentas.

Trabalhar no software mais que documentação abrangente.

Colaboração do cliente mais que negociação contratual.

Responder às mudanças mais que seguir um plano.

Page 3: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

3 3

O que é XP?

Processo de desenvolvimento de software Projetos com requisitos muito voláteis Equipes pequenas (até ~10 pessoas)

Desenvolvimento incremental

Page 4: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

4 4

O que é um projeto de sucesso?

Cumpre o orçamento Cumpre o prazo Cliente fica feliz Equipe fica feliz

Page 5: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

5 5

Premissas do desenvolvimento

Cliente é capaz de especificar um software antes de iniciar o desenvolvimento

Equipe de desenvolvimento é capaz de quantificar o esforço

Equipe é capaz de criar o software imaginado pelo cliente

Cliente ficará feliz

Page 6: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

6 6

Resumo

Divisão nítida entre “produção” e “consumo”

Cliente produz uma especificação que é consumida pela equipe de desenvolvimento

Equipe de desenvolvimento produz o software que é consumido pelo cliente

Page 7: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

7 7

Motivação: custo de uma alteração

Tempo de Projeto

Cu

sto

$ 1Requisitos

$ 10Análise

$ 100Design

$ 1.000Implem.

$ 10.000Testes

Page 8: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

8 8

Premissas Básicas do Modelo Tradicional

É necessário fazer uma análise de requisitos profunda e detalhada antes de projetar a arquitetura do sistema.

É necessário fazer um estudo minucioso e elaborar uma descrição detalhada da arquitetura antes de começar a implementá-la.

É necessário testar o sistema completamente antes de mandar a versão final para o cliente.

Page 9: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

9 9

Por que software falha?

Page 10: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

10 10

Problemas desta premissa

Premissa é irreal em vários casos O cliente não é capaz de especificar o

software previamente Grande problema:

DETALHE

Page 11: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

11 11

Premissa do desenvolvimento ágil APRENDIZADO FEEDBACK DESENVOLVIMENTO

ITERATIVO

Page 12: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

12 12

Aprendizado O cliente aprende durante

o desenvolvimento Descobre novas

possibilidades Muda as prioridades

Page 13: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

13 13

Trabalho intelectual

Retrabalho é uma característica do trabalho intelectual

ExperimentaçãoCriaçãoRevisãoExperimentação ...

Page 14: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

14 14

Premissa: custo de uma alteração

Tempo de Projeto

Cu

sto

Page 15: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

15 15

E se essa fosse a realidade?

A atitude dos desenvolvedores de software seria completamente diferente:Tomaríamos as grandes decisões o mais

tarde possível. Implementaríamos agora somente o que

precisamos agora.Não implementaríamos flexibilidade

desnecessária (não anteciparíamos necessidades).

Page 16: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

16 16

E essa é a nova realidade !(pelo menos em muitos casos)

Orientação a Objetos facilita e cria oportunidades para mudanças

Técnicas de Refatoramento possibilita melhorar continuamente a implementação

aumentando constantemente a qualidade do código produzido

Testes automatizados nos dão segurança quando fazemos mudanças

Prática / cultura de mudanças aprendemos técnicas e adquirimos experiência em

lidar com código mutante

Page 17: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

17 17

As 4 Variáveis do Desenvolvimento de Software

• Tempo

• Custo

• Qualidade

• Escopo (foco principal de XP)

Page 18: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

18 18

Valores

FeedbackComunicaçãoSimplicidadeCoragem

Page 19: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

19 19

User Stories

Funcionalidades são informadas através de user stories

Estórias devem ser simples

Desenvolvedores estimam tempo

Page 20: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

20 20

Planejamento

De posse das estimativas, é possível priorizar

Cliente entrega as estórias priorizadas para serem implementadas

Desenvolvedores respeitam as prioridades dos clientes

Projeto é dividido em partes: releases e iterações

Page 21: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

21 21

Priorização

Cliente deve priorizar as estórias

Para obter o máximo de valor rapidamente

Se baseia nas suas necessidades e nas estimativas dos desenvolvedores

Page 22: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

22 22

Release e Iteração

R1 R2 R3 R4

I1

S1

8 Sem.

I2 I3 I4

2 Sem.

1 Sem.

S2

Projeto: 8 meses = 32 semanas

Page 23: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

23 23

Release Planning

Cliente recebe um “orçamento” dos desenvolvedores

Seleciona as estórias prioritárias que possam ser implementadas dentro do orçamento

Pode trocar estórias durante o release

R1 R2 R3 R4

8 Sem.

Page 24: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

24 24

Iteration Planning

Cliente recebe um “orçamento” Não pode haver troca de funcionalidades

durante uma iteração Velocidade: quantidade de estórias que a

equipe consegue implementar em uma iteração

I1 I2 I3 I4

2 Sem.

Page 25: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

25 25

Stand-up meeting

Reunião rápida

Diária Usada para

atualização da equipe

Page 26: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

26 26

Desenvolvimento: orientação a objetos Sistema é composto

por pequenas peças Peças têm objetivos

específicos Facilita construção Facilita evolução

Page 27: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

27 27

Buscando bugs

Sistemas podem ter defeitos

É difícil descobrir qual é a peça defeituosa

É mais fácil se o problema for detectado logo após a adoção da peça

Page 28: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

28 28

Test Driven Design

No XP, primeiro se especifica o teste

Depois se constrói a peça

Page 29: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

29 29

Unit Test

Nome dado à verificação feita sobre cada peça

Cada peça possui um unit test associado a ela

Testes são automatizados Quando uma nova peça entra

no sistema, todos os testes são executados

Page 30: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

30 30

Page 31: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

31 31

Page 32: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

32 32

Acceptance Test

Cliente deve especificar testes de aceitação para cada funcionalidade de uma iteração

Sistema deve passar nestes testes ao término da iteração

Page 33: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

33 33

Pair Programming

Todo código é escrito em par

Duas pessoas trabalham em um único computador

Uma digita, enquanto a outra revisa, corrige e sugere

Page 34: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

34 34

Collective code ownership

Todos são responsáveis por todas as partes do sistema

Código tem que estar sempre “limpo”

Todos são capazes de modificá-lo

Page 35: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

35 35

Refactoring Uma [pequena] modificação no sistema

que não altera o seu comportamento funcional

mas que melhora alguma qualidade não-funcional:simplicidade flexibilidadeclarezadesempenho

Page 36: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

36 36

Exemplos de Refactoring

Mudança do nome de variáveis

Mudanças nas interfaces dos objetos

Pequenas mudanças arquiteturais

Encapsular código repetido em um novo método

Generalização de métodos• raizQuadrada(float x) raiz(float x, int n)

Page 37: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

37 37

Desenvolvimento em equipe

Como conciliar diversos desenvolvedores? Estrutura de diretórios Atualização do código por várias pessoas

diferentes

Page 38: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

38 38

CVS – Repositório de fontes Check out Add Commit Update Conflict Remove

Page 39: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

39 39

CVS

Page 40: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

40 40

40 hour week

Desenvolvimento de software é um trabalho intelectual intenso

Não é produtivo trabalhar além do limite

Page 41: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

41 41

Customer onsite Fator mais

importante no XP:ComunicaçãoFeedback

Viabiliza a simplicidade da metodologia

War room c / quadro branco

Page 42: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

42 42

Feedback constante

Permite que pequenas mudanças sejam feitas

Evita a necessidade de mudanças bruscas

Mantém o projeto em curso

Page 43: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

43 43

Integração contínua Máquina destacada para a integração Integração ocorre diversas vezes ao dia Os testes são executados em cada

integração Correções são feitas imediatamente

Page 44: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

44 44

Ambientes para deployment

Como lidar com diferentes ambientes?

Exemplo:DesenvolvimentoAceitaçãoProdução

Page 45: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

45 45

Ambientes para deployment

Desenvolvimento

Aceitação

Produção

Page 46: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

46 46

Problemas de ter vários ambientes

Possíveis erros devido a tarefas manuais repetitivas

Gasto de tempo

Page 47: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

47 47

Automatização do deployment

Agiliza as integrações Evita erros

Page 48: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

48 48

Ant

Page 49: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

49 49

Exemplo simples

<project name="projeto" default="desenvolvimento">

<target name="desenvolvimento"> <mkdir dir="build"/> <javac srcdir="src" destdir="build"/> <junit> <test name="test.SystemTester"/> </junit> </target>

</project>

targ

et

tasks

Page 50: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

50 50

Ambiente de Desenvolvimento

Desejável que tenha:Code completionValidação on-lineSuporte à depuraçãoSuporte a Refactoring Integração com jUnit Integração com CVS Integração com Ant

Page 51: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

51 51

Exemplos

Page 52: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

52 52

Importância da IDE para o XP

Ganho de tempo Automação Facilidade de uso Verificação permanente do código

Page 53: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

53 53

Importância da IDE para o XP

Page 54: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

54 54

Steering Pequenas mudanças Ajustes simples ao

longo do tempo

X

Page 55: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

55 55

Segredo do sucesso

O conjunto é o que faz a diferença

A ausência de uma prática mostra a deficiência de outras

Metáfora do time de futebol

Page 56: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

56 56

XP e RUP

XP RUP

Foco nas práticas da equipe Foco nos artefatos

Comportamental Prescritivo

Projetos de determinados tamanhos

Qualquer projeto

Page 57: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

57 57

Negociação

Venda técnica Venda focada em negócio Duas propostas:

Escopo fechadoEscopo variável

Page 58: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

58 58

Resistências

Dificuldades com a área de TI Grande resistência dos desenvolvedores Pouca resistência na área usuária do

cliente Estratégia: pedido de tempo

Page 59: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

59 59

Ambiente de desenvolvimento

Sala dedicada unicamente ao projeto Mural Quadros brancos Mesas que suportam programação em par Equipamentos com bom desempenho

Page 60: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

60 60

XP no Brasil

2000: algumas práticas começam a ser usadas em projetos no Sul

Dez/2002: primeiro XP Brasil Jan/2003: fundação do XP Rio Fev/2003: primeiro projeto full-XP em uma

grande empresa brasileira (em andamento) Nov/2003: lançamento previsto do primeiro

livro brasileiro sobre XP

Page 61: 1 Extreme Programming. 2 2 Manifesto do Desenvolvimento Ágil  Aplicar os ideais do desenvolvimento ágil ao nosso processo particular.

61 61

Referências Site Xispê

http://www.xispe.com.br XP Rio

http://www.yahoogroups.com/groups/xprio Lista Xpers

http://www.yahoogroups.com/groups/xpers