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

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

1 Programação eXtrema uma experiência didática Curso Ministrado no segundo semestre de 2001 Alfredo Goldman, Carlos Ferreira e Fabio Kon {gold, cef,

Apresentações semelhantes


Apresentação em tema: "1 Programação eXtrema uma experiência didática Curso Ministrado no segundo semestre de 2001 Alfredo Goldman, Carlos Ferreira e Fabio Kon {gold, cef,"— Transcrição da apresentação:

1 1 Programação eXtrema uma experiência didática Curso Ministrado no segundo semestre de 2001 Alfredo Goldman, Carlos Ferreira e Fabio Kon {gold, cef, Departamento de Ciência da Computação Universidade de São Paulo 13 de julho de 2002

2 13 / Julho / 2002 Curso de Qualidade - SBC2 Resumo da Apresentação l Programação eXtrema l Nossa experiência l Resultados l Conclusões

3 3 Programação eXtrema uma solução radical Seminário de Engenharia de Software Fabio Kon Departamento de Ciência da Computação 15 de maio de 2001

4 13 / Julho / 2002 Curso de Qualidade - SBC4 Prelúdio Programming in the Small vs. Programming in the Large

5 13 / Julho / 2002 Curso de Qualidade - SBC5 Programação eXtrema XP l Metodologia de desenvolvimento de software aperfeiçoada nos últimos 5 anos. l Ganhou notoriedade a partir da OOPSLA2000. l Nome principal: Kent Beck.

6 13 / Julho / 2002 Curso de Qualidade - SBC6 Reações a XP l Alguns odeiam, outros amam. l Quem gosta de programar ama! l Deixa o bom programador livre para fazer o que ele faria se não houvesse regras. l Força o [mau] programador a se comportar de uma forma similar ao bom programador.

7 13 / Julho / 2002 Curso de Qualidade - SBC7 Modelo Tradicional de Desenvolvimento de Software 0. Levantamento de Requisitos 1. Análise de Requisitos 2. Desenho da Arquitetura 3. Implementação 4. Testes 5. Produção / Manutenção

8 13 / Julho / 2002 Curso de Qualidade - SBC8 Premissas Básicas do Modelo Tradicional l É necessário fazer uma análise de requisitos profunda e detalhada antes de desenhar a arquitetura do sistema. l É necessário fazer um estudo minucioso e elaborar uma descrição detalhada da arquitetura antes de começar a implementá-la. l É necessário testar o sistema completamente antes de mandar a versão final para o cliente.

9 13 / Julho / 2002 Curso de Qualidade - SBC9 O que está por trás deste modelo? Custo de mudanças requisitos desenho testes análise implementação produção

10 13 / Julho / 2002 Curso de Qualidade - SBC10 E se a realidade hoje em dia fosse outra? Custo de mudanças tempo

11 13 / Julho / 2002 Curso de Qualidade - SBC11 E se essa fosse a realidade? l A atitude dos desenvolvedores de software seria completamente diferente: l Tomaríamos as grandes decisões o mais tarde possível. l Implementaríamos agora somente o que precisamos agora. l Não implementaríamos flexibilidade desnecessária (não anteciparíamos necessidades).

12 13 / Julho / 2002 Curso de Qualidade - SBC12 E essa é a nova realidade ! (pelo menos em muitos casos) l Orientação a Objetos: facilita e cria oportunidades para mudanças. l Desenho simples: Less is more. l Testes automatizados: nos dão segurança quando fazemos mudanças. l Prática / cultura de mudanças: aprendemos técnicas e adquirimos experiência em lidar com código mutante.

13 13 / Julho / 2002 Curso de Qualidade - SBC13 A Quem se Destina XP? l Grupos de 2 a 10 programadores l Projetos de 1 a 36 meses (calendário) l De 1000 a linhas de código l Papéis: l Programadores (foco central)(sem hierarquia) l Treinador (coach) l Acompanhador (tracker) l Cliente

14 13 / Julho / 2002 Curso de Qualidade - SBC14 E Se Eu Não Me Encaixo Nesses Casos? l Você ainda pode aprender muito sobre desenvolvimento de software. l Terá elementos para repensar as suas práticas. l Ou você é 100% eXtremo ou não é eXtremo. Não dá para ser 80% XP.

15 13 / Julho / 2002 Curso de Qualidade - SBC15 Princípios Básicos de XP l Feedback rápido l Simplicidade é o melhor negócio l Mudanças incrementais l Carregue a bandeira das mudanças (Embrace change) l Alta qualidade

16 13 / Julho / 2002 Curso de Qualidade - SBC16 As 4 Variáveis do Desenvolvimento de Software l Tempo l Custo l Qualidade l Escopo (foco principal de XP)

17 13 / Julho / 2002 Curso de Qualidade - SBC17 Um Projeto XP l Fase de Exploração l duração: 2 a 6 meses. l termina quando a primeira versão do software é enviada ao cliente. l clientes escrevem histórias (story cards). l programadores interagem com clientes e discutem tecnologias. l Não só discutem, experimentam diferentes tecnologias e arquiteturas para o sistema. l Planejamento: 1 a 2 dias.

18 13 / Julho / 2002 Curso de Qualidade - SBC18 Um Dia na Vida de um Programador XP l Escolhe uma história do cliente. l Procura um par livre. l Escolhe um computador para programação pareada (pair programming). l Seleciona uma tarefa claramente relacionada a uma característica (feature) desejada pelo cliente.

19 13 / Julho / 2002 Curso de Qualidade - SBC19 Um Dia na Vida de um Programador XP l Discute modificações recentes no sistema l Discute história do cliente l Testes l Implementação l Desenho l Integração

20 13 / Julho / 2002 Curso de Qualidade - SBC20 Um Dia na Vida de um Programador XP l Atos constantes no desenvolvimento: l Executa testes antigos. l Busca oportunidades para simplificação. l Modifica desenho e implementação incrementalmente baseado na funcionalidade exigida no momento. l Escreve novos testes. l Enquanto todos os testes não rodam a 100%, o trabalho não está terminado. l Integra novo código ao repositório.

21 13 / Julho / 2002 Curso de Qualidade - SBC21 Os 4 Valores de XP l Comunicação l Simplicidade l Feedback l Coragem

22 13 / Julho / 2002 Curso de Qualidade - SBC22 Testes l Fundamento mais importante de XP. l É o que dá segurança e coragem ao grupo. l Testes das unidades (Unit tests) l escritos pelos programadores para testar cada elemento do sistema (e.g., cada método em cada caso). l Testes Funcionais (Functional tests) l escritos pelos clientes para testar a funcionalidade do sistema.

23 13 / Julho / 2002 Curso de Qualidade - SBC23 Testes l Testes das unidades l Tem que estar sempre funcionando a 100%. l São executados várias vezes por dia. l Executados à noite automaticamente. l Testes funcionais l Vão crescendo de 0% a 100%. l Quando chegam a 100% acabou o projeto.

24 13 / Julho / 2002 Curso de Qualidade - SBC24 O Código l Padrões de estilo adotados pelo grupo inteiro. l O mais claro possível. l XP não se baseia em documentações detalhadas e extensas (perde-se sincronismo). l Comentários padronizados sempre que necessários. l Programas bem escritos dispensam comentários. l Programação Pareada ajuda muito!

25 13 / Julho / 2002 Curso de Qualidade - SBC25 Programação Pareada l Erro de um detectado imediatamente pelo outro (grande economia de tempo). l Maior diversidade de idéias, técnicas, algoritmos. l Enquanto um escreve, o outro pensa em contra-exemplos, problemas de eficiência, etc. l Vergonha de escrever código feio (hacking) na frente do seu par. l Pareamento de acordo com especialidades. l Ex.: Sistema de Tempo Real Orientado a Objetos

26 13 / Julho / 2002 Curso de Qualidade - SBC26 Propriedade Coletiva do Código l Modelo tradicional: só autor de uma função pode modificá-la. l XP: o código pertence a todos. l Se alguém identifica uma oportunidade para simplificar, consertar ou melhorar código escrito por outra pessoa, que o faça. l Mas rode os testes!

27 13 / Julho / 2002 Curso de Qualidade - SBC27 Refatoramento (Refactoring) l Uma [pequena] modificação no sistema que não altera o seu comportamento funcional l mas que melhora alguma qualidade não- funcional: l simplicidade l flexibilidade l clareza l desempenho

28 13 / Julho / 2002 Curso de Qualidade - SBC28 Exemplos de Refatoramento l Mudança do nome de variáveis l Mudanças nas interfaces dos objetos l Pequenas mudanças arquiteturais l Encapsular código repetido em um novo método l Generalização de métodos l raizQuadrada(float x) raiz(float x, int n)

29 13 / Julho / 2002 Curso de Qualidade - SBC29 Cliente l Responsável por escrever histórias. l Muitas vezes é um programador ou é representado por um programador do grupo. l Trabalha no mesmo espaço físico do grupo. l Novas versões são enviadas para produção todo mês (ou toda semana). l Feedback do cliente é essencial. l Requisitos mudam (e isso não é mau).

30 13 / Julho / 2002 Curso de Qualidade - SBC30 Coach (Treinador) l Em geral, o mais experiente do grupo. l Identifica quem é bom no que. l Lembra a todos as regras do jogo (XP). l Eventualmente faz programação pareada. l Não desenha arquitetura, apenas chama a atenção para oportunidades de melhorias. l Seu papel diminui à medida em que o time fica mais maduro.

31 13 / Julho / 2002 Curso de Qualidade - SBC31 Tracker (Acompanhador) l A consciência do time. l Coleta estatísticas sobre o andamento do projeto. Alguns exemplos: l Número de histórias definidas e implementadas. l Número de unit tests. l Número de testes funcionais definidos e funcionando. l Número de classes, métodos, linhas de código l Mantém histórico do progresso. l Faz estimativas para o futuro.

32 13 / Julho / 2002 Curso de Qualidade - SBC32 Quando XP Não Deve Ser Experimentada? l Quando o cliente não aceita as regras do jogo. l Quando o cliente quer uma especificação detalhada do sistema antes de começar. l Quando os programadores não estão dispostos a seguir (todas) as regras. l Se (quase) todos os programadores do time são medíocres.

33 13 / Julho / 2002 Curso de Qualidade - SBC33 Quando XP Não Deve Ser Experimentada? l Grupos grandes (>10 programadores). l Quando feedback rápido não é possível: l sistema demora 6h para compilar. l testes demoram 12h para rodar. l exigência de certificação que demora meses. l Quando o custo de mudanças é essencialmente exponencial. l Quando não é possível realizar testes.

34 13 / Julho / 2002 Curso de Qualidade - SBC34 Resumindo (princípios) Planning game (escopo) Small releases Metaphor Simple design Testing Refactoring Pair programming

35 13 / Julho / 2002 Curso de Qualidade - SBC35 Resumindo (princípios) Collective ownership Continuous integration (for each complete task) 40-hour week On-site customer Coding standards

36 13 / Julho / 2002 Curso de Qualidade - SBC36 Conclusão Vencendo os Medos l Escrever código. l Mudar de idéia. l Ir em frente sem saber tudo sobre o futuro. l Confiar em outras pessoas. l Mudar a arquitetura de um sistema em funcionamento. l Escrever testes.

37 13 / Julho / 2002 Curso de Qualidade - SBC37 Conclusão l XP não é para todo mundo. l Mas todo mundo pode aprender com ela.

38 13 / Julho / 2002 Curso de Qualidade - SBC38 XP - um curso de graduação - organização l Seleção dos alunos l Ambiente de trabalho l Fundamentos de XP l Apresentação do problema l Acompanhamento l Mudanças de rota l Análise dos resultados

39 13 / Julho / 2002 Curso de Qualidade - SBC39 Seleção dos alunos l Limitação a 12 pessoas l Estudantes com conhecimentos sólidos de OO l Requisito: gostar de programar l Estar disponível pelo menos 10 horas/semana l Divisão em dois grupos de seis segundo afinidades

40 13 / Julho / 2002 Curso de Qualidade - SBC40 Ambiente de trabalho l Não limitar a escolha dos programas l Servidor exclusivo l Local especialmente preparado l Biblioteca à disposição

41 13 / Julho / 2002 Curso de Qualidade - SBC41 Fundamentos de XP l Aulas teóricas (duas semanas) l Apresentação de XP l Aula sobre testes l Aula sobre refatoramento l Aula sobre CVS l Aula sobre heurísticas

42 13 / Julho / 2002 Curso de Qualidade - SBC42 O sistema l Necessidade de um problema/cliente real l Cliente: Professores do Departamento l Problema: Atribuição de Carga Didática

43 13 / Julho / 2002 Curso de Qualidade - SBC43 Planejamento l Histórias (Story cards), 15 no total l Entrar as preferências de cada docente l A partir dos dados produzir uma solução l Histórico de dados l Autenticação l Escolha das tecnologias (duas semanas) l Java, JSP, XML e diversos pacotes para Java l PHP, MySQL e C++

44 13 / Julho / 2002 Curso de Qualidade - SBC44 Desenvolvimento l Cada grupo optou em entregar três versões l Para cada grupo: l um administrador sistema l um tracker l Em comum: l um monitor l um treinador (Fabio) l dois clientes (Alfredo e Carlos)

45 13 / Julho / 2002 Curso de Qualidade - SBC45 Como na vida real... l A entrega das versões atrasou l Mas isto não foi surpresa para os clientes l A programação pareada foi muito importante l Conhecimento compartilhado rapidamente l Outros problemas l Provas de outras matérias l Desistência de um aluno l <10%, ótima proporção com relação aos outros cursos l Incompatibilidade de horários

46 13 / Julho / 2002 Curso de Qualidade - SBC46 Resultados l Dois sistemas para carga didática l Com interface Web l Desenvolvidos incrementalmente l Testados incrementalmente l Um dos sistemas é um projeto (gpl) sourceforge sourceforge.net/projects/xpusp

47 13 / Julho / 2002 Curso de Qualidade - SBC47 Balanço do Curso l Dos 11 alunos que chegaram ao final l Todos aprenderam bastante no curso l Apenas um não gostou de programação pareada l O problema escolhido é muito difícil l Mas os sistemas o resolvem parcialmente

48 13 / Julho / 2002 Curso de Qualidade - SBC48 Conclusão l É possível ensinar novas metodologias de programação l Este esforço é importante l Ajuda a diminuir a distância entre a faculdade e a vida real


Carregar ppt "1 Programação eXtrema uma experiência didática Curso Ministrado no segundo semestre de 2001 Alfredo Goldman, Carlos Ferreira e Fabio Kon {gold, cef,"

Apresentações semelhantes


Anúncios Google