A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Programação Extrema e outras práticas para elaboração de software Hugo Corbucci AgilCoop DCC - IME - USP

Apresentações semelhantes


Apresentação em tema: "Programação Extrema e outras práticas para elaboração de software Hugo Corbucci AgilCoop DCC - IME - USP"— Transcrição da apresentação:

1 Programação Extrema e outras práticas para elaboração de software Hugo Corbucci AgilCoop DCC - IME - USP www.agilcoop.org.br

2 2 Copyleft Agilcoop 2008 O que é Programação Extrema? Conjunto de práticas a serem adotadas no cotidiano da equipe. As práticas: – são adaptáveis a diferentes contextos – se suportam e complementam – permitem adoção em pequenos passos – apoiam os valores essenciais por trás da metodologia

3 3 Copyleft Agilcoop 2008 Os Valores de XP Comunicação Feedback Coragem Simplicidade Respeito

4 4 Copyleft Agilcoop 2008 A equipe e seu ambiente Sentar juntos Time completo Cliente presente

5 5 Copyleft Agilcoop 2008 A equipe e seu ambiente Papéis – Coach: Lembra a todos as práticas e ajuda com dificuldades na equipe – Tracker: Mantem informações sobre o projeto e elabora gráficos que mostrem as mais importantes à equipe – Cliente: Determina o que é mais importante, responde dúvidas dos programadores e toma decisões sobre funcionalidades.

6 6 Copyleft Agilcoop 2008 Área de trabalho informativa

7 7 Copyleft Agilcoop 2008 Jogo do planejamento Clientes escrevem e priorizam histórias Desenvolvedores estimam as mais prioritárias Suporte do coach e do tracker para evitar otimismo ou pessimismo excessivo

8 8 Copyleft Agilcoop 2008 Localizando em XP

9 9 Copyleft Agilcoop 2008 Sem exagerar Trabalho energizado: Balancear a intensidade do trabalho para não desgastar a equipe. Folga: Não planeje até o último minuto. Deixe uma folga para imprevistos porque eles sempre surgem.

10 10 Copyleft Agilcoop 2008 Build de 10 minutos Fonte: http://xkcd.com/303/

11 11 Copyleft Agilcoop 2008 Melhorando sempre Análise de causa inicial Retrospectiva: Nada é perfeito. Tudo sempre pode melhorar e, para isso, precisa entender o que deu certo e errado.

12 12 Copyleft Agilcoop 2008 Localizando em XP

13 13 Copyleft Agilcoop 2008 Trabalhando em equipe Código compartilhado: Eu fiz, você arruma, nós nos ajudamos Padronização do estilo de código: Seu código e meu código devem ser quase idênticos e indistinguíveis

14 14 Copyleft Agilcoop 2008 Código unificado Repositório único Integração contínua SEM COM

15 15 Copyleft Agilcoop 2008 Redundância Programação pareada: Distribuindo conhecimento na equipe

16 16 Copyleft Agilcoop 2008 Localizando em XP

17 17 Copyleft Agilcoop 2008 Previnindo defeitos Auto-inspeção (mistake proof) Testes são a especificação!

18 18 Copyleft Agilcoop 2008 Testes Manuais? Geralmente são: 1) Escolher alguns valores 2) Executar o programa 3) Visualizar o resultado Implementação muda Difícil repetir os testes Executado poucas vezes Ninguém quer testar Problemas: ● Demorado ● Cansativo ● Poucos casos ● Casos simples

19 19 Copyleft Agilcoop 2008 Testes Automatizados! Código que testa outro código e verifica o resultado Um teste que pode ser executado facilmente várias vezes Testar não é depurar – Testar é buscar erros – Depurar é seguir o fluxo para identificar um erro conhecido “Testes podem mostrar a presença de erros, não a sua ausência” (Dijkstra)

20 20 Copyleft Agilcoop 2008 Porque testar? Ajuda a encontrar erros mais cedo Novas funcionalidades podem quebrar as funcionalidades antigas Dá suporte para mudanças de configuração no ambiente Melhora a qualidade do código, diminuindo o número de erros

21 21 Copyleft Agilcoop 2008 Como e o quê? Tipos de testes: Unidade Integração Aceitação Interface A execução deve ser ágil e rápida – Com ferramentas, scripts ou suite de testes – Resultado deve ser simples OK ou Lista de Erros ● Desempenho ● Estresse ● Segurança ● …

22 22 Copyleft Agilcoop 2008 TDD - Desenvolvimento Dirigido por Testes Ciclo em passos pequenos: 1. Escreva um teste que falha 2. Faça o teste passar rapidamente 3. Refatore

23 23 Copyleft Agilcoop 2008 Localizando em XP

24 24 Copyleft Agilcoop 2008 Design Incremental Simples YAGNI: You Aint Gonna Need It “Você não vai precisar disso” Refatoração DRY: Dont Repeat Yourself “Não se repita”

25 25 Copyleft Agilcoop 2008 Constante manutenção Evitando débito técnico: – Refatoração e Design Simples Complexidade é o inimigo invisível!

26 26 Copyleft Agilcoop 2008 Refatoração Uma [pequena] modificação no sistema que não altera o seu comportamento funcional, mas que torna o código mais fácil de ser entendido e menos custoso de ser alterado: – simplicidade – flexibilidade – clareza O desempenho pode piorar, otimizar não é o objetivo da refatoração

27 27 Copyleft Agilcoop 2008 O espírito da Refatoração Antes

28 28 Copyleft Agilcoop 2008 O espírito da Refatoração (refatoração) Antes

29 29 Copyleft Agilcoop 2008 O espírito da Refatoração (refatoração) Antes Depois

30 30 Copyleft Agilcoop 2008 Exemplos de refatoração Alterar nomes de variáveis, métodos e objetos para melhorar legibilidade do código – String calc_imp_rnd_str(int a, Txs tx, int inc) -> String calculaImpostoDeRenda(int ano, Imposto taxas, int rendimento) Mudar parâmetros de métodos para que fiquem mais claros Melhorar o design da arquitetura Eliminar duplicação de código Flexibilizar métodos para novos usos

31 31 Copyleft Agilcoop 2008 Refatoração sempre existiu... Melhorar o código sempre foi uma prática implícita Com sua popularização (e aceitação acadêmica) surge um vocabulário de refatorações comuns e um catálogo compartilhado Assim podemos utilizá-las mais sistematicamente. Podemos aprender novas técnicas, ensinar uns aos outros. Visível na comunidade Smalltalk nos anos 80/90 Ralph Johnson (academia) Kent Beck (indústria)

32 32 Copyleft Agilcoop 2008 Sintomas para refatorar Quando você encontra código antigo que não entende de primeira facilmente Ao ler código feito por outros programadores, e perceber que ele não está claro (durante revisões por exemplo) Quando precisa consertar uma falha, ou adicionar funcionalidade Regra dos 3: Once and Only Once

33 33 Copyleft Agilcoop 2008 Em cada refatoração Antes de começar a refatoração, verifique se você tem um conjunto sólido de testes para verificar a funcionalidade do código a ser refatorado. Refatorações podem adicionar erros. – porém, como são feitas em pequenos passos, é fácil recuperar-se de uma falha Os testes vão ajudá-lo a detectar erros se eles forem criados.

34 34 Copyleft Agilcoop 2008 Como fazer? Em geral, um passo de refatoração é tão simples que parece que ele não vai ajudar muito. – Cada passo é trivial. – Demora alguns segundos ou alguns poucos minutos para ser realizado. – É uma operação sistemática e óbvia. Mas quando se juntam 50 passos, bem escolhidos, em seqüência, o código melhora radicalmente.

35 35 Copyleft Agilcoop 2008 Voltando para XP

36 36 Copyleft Agilcoop 2008 Um dia de XP Escolhe uma história do cliente. Procura um par livre e um computador. Seleciona um “cartão de história”. Discute modificações recentes no sistema Discute história do cliente Entra no ciclo: Teste s Integraçã o Implementaçã o Projeto (design)

37 37 Copyleft Agilcoop 2008 Dúvidas? agilcoop@agilcoop.org.br ? www.agilcoop.org.br (artigos + agilcast)


Carregar ppt "Programação Extrema e outras práticas para elaboração de software Hugo Corbucci AgilCoop DCC - IME - USP"

Apresentações semelhantes


Anúncios Google