35
Programação Extrema na Prática Engenharia de Software Conference - 13:40 - 15:00 maio/09 São Paulo Dairton Bassi - [email protected]

Programação Extrema na Prática - ccsl.ime.usp.brccsl.ime.usp.br/agilcoop/files/20090523-ESC-XP.pdf · Manifesto Ágil Indivíduos e interações são mais importantes do que processos

Embed Size (px)

Citation preview

Page 1: Programação Extrema na Prática - ccsl.ime.usp.brccsl.ime.usp.br/agilcoop/files/20090523-ESC-XP.pdf · Manifesto Ágil Indivíduos e interações são mais importantes do que processos

Programação Extrema na Prática

Engenharia de Software Conference - 13:40 - 15:00 maio/09 São Paulo

Dairton Bassi - [email protected]

Page 2: Programação Extrema na Prática - ccsl.ime.usp.brccsl.ime.usp.br/agilcoop/files/20090523-ESC-XP.pdf · Manifesto Ágil Indivíduos e interações são mais importantes do que processos

Assuntos de Hoje

Métodos Ágeis

Valores Ágeis

Programação Extrema

Princípios

Práticas

Cases

Page 3: Programação Extrema na Prática - ccsl.ime.usp.brccsl.ime.usp.br/agilcoop/files/20090523-ESC-XP.pdf · Manifesto Ágil Indivíduos e interações são mais importantes do que processos

Métodos Tradicionais

1 - Levantamento de Requisitos

2 - Análise de Requisitos

3 - Desenho da Arquitetura

4 - Implementação

5 - Testes

6 - Produção / Manutenção

Page 4: Programação Extrema na Prática - ccsl.ime.usp.brccsl.ime.usp.br/agilcoop/files/20090523-ESC-XP.pdf · Manifesto Ágil Indivíduos e interações são mais importantes do que processos

Qual é o foco?

Produção de software não é uma operação mecânica

Desenvolver software requer análise, compreensão e criatividade

Page 5: Programação Extrema na Prática - ccsl.ime.usp.brccsl.ime.usp.br/agilcoop/files/20090523-ESC-XP.pdf · Manifesto Ágil Indivíduos e interações são mais importantes do que processos

O que é preciso?

Flexibilidade

Colaboração

Comprometimento

Disposição

Sinergia

Confiança

Coragem

Comunicação

Respeito

Foco nas Pessoas

Page 6: Programação Extrema na Prática - ccsl.ime.usp.brccsl.ime.usp.br/agilcoop/files/20090523-ESC-XP.pdf · Manifesto Ágil Indivíduos e interações são mais importantes do que processos

Manifesto Ágil

Indivíduos e interações são mais importantes do que processos e ferramentas.

Software funcionando é mais importante do que documentação completa e detalhada.

Colaboração com o cliente é mais importante do que negociação de contratos.

Adaptação a mudanças é mais importante do que seguir o plano inicial.

Page 7: Programação Extrema na Prática - ccsl.ime.usp.brccsl.ime.usp.br/agilcoop/files/20090523-ESC-XP.pdf · Manifesto Ágil Indivíduos e interações são mais importantes do que processos

Vários Métodos Ágeis

eXtreme Programming (XP)

Scrum

Lean

Crystal Clear

DSDM

FDD

ASD

EVO

Page 8: Programação Extrema na Prática - ccsl.ime.usp.brccsl.ime.usp.br/agilcoop/files/20090523-ESC-XP.pdf · Manifesto Ágil Indivíduos e interações são mais importantes do que processos

O que é?

“XP é sobre mudança social.”Kent Beck

Page 9: Programação Extrema na Prática - ccsl.ime.usp.brccsl.ime.usp.br/agilcoop/files/20090523-ESC-XP.pdf · Manifesto Ágil Indivíduos e interações são mais importantes do que processos

Feedback - Simplicidade

Coragem - Comunicação

Respeito

Valores

Tenha e forneça feedback rápido

Simplicidade é o melhor negócio

Faça mudanças incrementais

Carregue a bandeira das mudanças

Alta qualidade do código

Respeite as pessoas

Page 10: Programação Extrema na Prática - ccsl.ime.usp.brccsl.ime.usp.br/agilcoop/files/20090523-ESC-XP.pdf · Manifesto Ágil Indivíduos e interações são mais importantes do que processos

PrincípiosQualidade

Redundância

Falha

Benefício mútuo

Passos pequenos

Fluxo

Oportunidade

Melhoria

Reflexão

Responsabilidade aceita

Page 11: Programação Extrema na Prática - ccsl.ime.usp.brccsl.ime.usp.br/agilcoop/files/20090523-ESC-XP.pdf · Manifesto Ágil Indivíduos e interações são mais importantes do que processos

Valores, Princípios e Práticas

Page 12: Programação Extrema na Prática - ccsl.ime.usp.brccsl.ime.usp.br/agilcoop/files/20090523-ESC-XP.pdf · Manifesto Ágil Indivíduos e interações são mais importantes do que processos

Principais Práticas de XP

Histórias

Time completo

Área de Trabalho

TDD

Build Ágil

Folga

Programação Pareada

Integração Contínua

Trabalho energizado

Design Incremental

Sentar junto

Ciclo semanal e trimestral

Page 13: Programação Extrema na Prática - ccsl.ime.usp.brccsl.ime.usp.br/agilcoop/files/20090523-ESC-XP.pdf · Manifesto Ágil Indivíduos e interações são mais importantes do que processos

Programação em Pares

Erros detectados imediatamente

Diversidade de idéias, técnicas e algoritmos

Enquanto um escreve, o outro pensa em contra-exemplos, problemas de eficiência etc.

Vergonha de escrever código feio (gambiarras)

Pareamento de acordo com especialidades

Page 14: Programação Extrema na Prática - ccsl.ime.usp.brccsl.ime.usp.br/agilcoop/files/20090523-ESC-XP.pdf · Manifesto Ágil Indivíduos e interações são mais importantes do que processos

O Ambiente

Page 15: Programação Extrema na Prática - ccsl.ime.usp.brccsl.ime.usp.br/agilcoop/files/20090523-ESC-XP.pdf · Manifesto Ágil Indivíduos e interações são mais importantes do que processos

Testes

Fundamental para o sucesso de XP

Dá segurança e coragem ao grupo

Testes de unidades

escritos pelos programadores

Testes de funcionalidades

escritos pelos clientes

Page 16: Programação Extrema na Prática - ccsl.ime.usp.brccsl.ime.usp.br/agilcoop/files/20090523-ESC-XP.pdf · Manifesto Ágil Indivíduos e interações são mais importantes do que processos

Um mural de histórias

Page 17: Programação Extrema na Prática - ccsl.ime.usp.brccsl.ime.usp.br/agilcoop/files/20090523-ESC-XP.pdf · Manifesto Ágil Indivíduos e interações são mais importantes do que processos

Um quadro mais complexo

Page 18: Programação Extrema na Prática - ccsl.ime.usp.brccsl.ime.usp.br/agilcoop/files/20090523-ESC-XP.pdf · Manifesto Ágil Indivíduos e interações são mais importantes do que processos

Cliente

Responsável por escrever “histórias”

Pode ser representado por um programador

Trabalha no mesmo espaço físico do grupo

Avalia as novas funcionalidades entregues

Dá Feedback rapidamente

Solicita ou aprova mudanças

Page 19: Programação Extrema na Prática - ccsl.ime.usp.brccsl.ime.usp.br/agilcoop/files/20090523-ESC-XP.pdf · Manifesto Ágil Indivíduos e interações são mais importantes do que processos

Coach

Um desenvolvedor experiente

Identifica as habilidades da equipe

Lembra das regras do jogo (XP)

Eventualmente faz programação em pares

Não desenha arquitetura

Seu papel diminui com o tempo

Page 20: Programação Extrema na Prática - ccsl.ime.usp.brccsl.ime.usp.br/agilcoop/files/20090523-ESC-XP.pdf · Manifesto Ágil Indivíduos e interações são mais importantes do que processos

Tracker

Coleta estatísticas e as exibe

Mantém histórico do progresso

Alguns exemplos:

Número de histórias implementadas

Número de testes

Número de classes e linhas de código

Page 21: Programação Extrema na Prática - ccsl.ime.usp.brccsl.ime.usp.br/agilcoop/files/20090523-ESC-XP.pdf · Manifesto Ágil Indivíduos e interações são mais importantes do que processos

Refatorações

Não altera a funcionalidade

Melhora alguma qualidade não-funcional:

simplicidade

flexibilidade

clareza

desempenho*

Page 22: Programação Extrema na Prática - ccsl.ime.usp.brccsl.ime.usp.br/agilcoop/files/20090523-ESC-XP.pdf · Manifesto Ágil Indivíduos e interações são mais importantes do que processos

Exemplos de Refatorações

Nomes de variáveis

valtotcont => valor_total_da_conta

Mudanças arquiteturais

Encapsular código repetido

Generalização de métodos

raizQuadrada(float x) + raizCubica(float x) ⇒ raiz(float x, int n)

Page 23: Programação Extrema na Prática - ccsl.ime.usp.brccsl.ime.usp.br/agilcoop/files/20090523-ESC-XP.pdf · Manifesto Ágil Indivíduos e interações são mais importantes do que processos

O Código

Padrões de estilo adotados por todo o grupo

O mais claro possível

XP não é baseada em documentação

Comentários sempre que necessários

Comentários padronizados

Page 24: Programação Extrema na Prática - ccsl.ime.usp.brccsl.ime.usp.br/agilcoop/files/20090523-ESC-XP.pdf · Manifesto Ágil Indivíduos e interações são mais importantes do que processos

Propriedade coletiva

Se eu perceber uma oportunidade para simplificar, consertar ou melhorar o código escrito por outra pessoa, peço autorização verbalmente ou por escrito?

Page 25: Programação Extrema na Prática - ccsl.ime.usp.brccsl.ime.usp.br/agilcoop/files/20090523-ESC-XP.pdf · Manifesto Ágil Indivíduos e interações são mais importantes do que processos

E as Reuniões?

Reunião da versão

Reunião da iteração

Stand up meeting

Page 26: Programação Extrema na Prática - ccsl.ime.usp.brccsl.ime.usp.br/agilcoop/files/20090523-ESC-XP.pdf · Manifesto Ágil Indivíduos e interações são mais importantes do que processos

Um dia de um programador XP

Escolhe uma história do cliente

Procura um par livre

Escolhe um computador para programar

Discute as modificações recentes no sistema

Discute a história com o parceiro

Page 27: Programação Extrema na Prática - ccsl.ime.usp.brccsl.ime.usp.br/agilcoop/files/20090523-ESC-XP.pdf · Manifesto Ágil Indivíduos e interações são mais importantes do que processos

Um dia de um programador XP

Repensa a arquitetura

Pensa em novos testes

Faz a implementação e os testes

Executa os testes

Integra o novo código ao repositório

Page 28: Programação Extrema na Prática - ccsl.ime.usp.brccsl.ime.usp.br/agilcoop/files/20090523-ESC-XP.pdf · Manifesto Ágil Indivíduos e interações são mais importantes do que processos

Atividades Freqüentes

Executa testes antigos

Busca oportunidades para simplificação

Modifica a implementação incrementalmente

Escreve novos testes

Faz todos os testes passarem

Integra novo código ao repositório

Page 29: Programação Extrema na Prática - ccsl.ime.usp.brccsl.ime.usp.br/agilcoop/files/20090523-ESC-XP.pdf · Manifesto Ágil Indivíduos e interações são mais importantes do que processos

Case 1: Grande Órgão Público

Apoio da gerência

Conhecimento técnico heterogêneo

Alguns estavam animados

Alguns estavam apreensivos

Projeto complicado e problemático

A diretoria queria resultados

Page 30: Programação Extrema na Prática - ccsl.ime.usp.brccsl.ime.usp.br/agilcoop/files/20090523-ESC-XP.pdf · Manifesto Ágil Indivíduos e interações são mais importantes do que processos

Abordagem

Equipe de consultores em Métodos Ágeis

Selecionamos a metodologia (XP), as tecnologias e as ferramentas

Implantação gradual e em etapas

Revesamento dos coaches

*Bons resultados fizeram o projeto crescer*

Page 31: Programação Extrema na Prática - ccsl.ime.usp.brccsl.ime.usp.br/agilcoop/files/20090523-ESC-XP.pdf · Manifesto Ágil Indivíduos e interações são mais importantes do que processos

Case 2: Startup Web 2.0Primeiro desafio: criar a empresa

Projeto inovador e de alto risco

Participação de venture capital

Resultados rápidos

Liberdade para definir as regras

Tecnologia “recente”

Ambiente moderno e favorável

Multiciplinaridade

Page 32: Programação Extrema na Prática - ccsl.ime.usp.brccsl.ime.usp.br/agilcoop/files/20090523-ESC-XP.pdf · Manifesto Ágil Indivíduos e interações são mais importantes do que processos

Ambiente Energizado

Prazo para a 1ª versão em produção: 6 meses Realizado: 5 meses

Page 33: Programação Extrema na Prática - ccsl.ime.usp.brccsl.ime.usp.br/agilcoop/files/20090523-ESC-XP.pdf · Manifesto Ágil Indivíduos e interações são mais importantes do que processos

Para fazer XP

Supere o medo de mudanças

Escreva código

Confie no trabalho da sua equipe

Escreva testes

Negocie e busque a colaboração do cliente

Entregue software com freqüência

Page 34: Programação Extrema na Prática - ccsl.ime.usp.brccsl.ime.usp.br/agilcoop/files/20090523-ESC-XP.pdf · Manifesto Ágil Indivíduos e interações são mais importantes do que processos

Como começar?

Repense suas práticas

No início, se dizia: “Ou você é 100% eXtremo ou não é eXtremo.”

Implemente mudanças gradualmente

Converse com as pessoas. Se preciso, peça ajuda.

Page 35: Programação Extrema na Prática - ccsl.ime.usp.brccsl.ime.usp.br/agilcoop/files/20090523-ESC-XP.pdf · Manifesto Ágil Indivíduos e interações são mais importantes do que processos

?

Dairton [email protected]