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

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

Copyleft AgilCoop1 Desenvolvimento Á gil de Software com Programa ç ão eXtrema (XP) Prof. Fabio Kon e Prof. Alfredo Goldman Departamento de Ciência da.

Apresentações semelhantes


Apresentação em tema: "Copyleft AgilCoop1 Desenvolvimento Á gil de Software com Programa ç ão eXtrema (XP) Prof. Fabio Kon e Prof. Alfredo Goldman Departamento de Ciência da."— Transcrição da apresentação:

1 Copyleft AgilCoop1 Desenvolvimento Á gil de Software com Programa ç ão eXtrema (XP) Prof. Fabio Kon e Prof. Alfredo Goldman Departamento de Ciência da Computação IME / USP 3/2001 a 3/3/2008

2 12:17 Copyleft AgilCoop2 / 55 Novos ventos no mundo do Desenvolvimento de Software l Sociedade demanda l grande quantidade de sistemas/aplicações l software complexo, sistemas distribuídos, heterogêneos l requisitos mutantes (todo ano, todo mês, todo dia) l Mas, infelizmente, l não há gente suficiente para desenvolver tanto software com qualidade.

3 12:17 Copyleft AgilCoop3 / 55 Problemas l Com metodologias de desenvolvimento l Supõem que é possível prever o futuro l Pouca interação com os clientes l Ênfase em burocracias (documentos, formulários, processos, controles rígidos, etc.) l Avaliação do progresso baseado na evolução da burocracia e não do código l Com software l Grande quantidade de erros l Falta de flexibilidade

4 12:17 Copyleft AgilCoop4 / 55 Como resolver esse impasse? l Melhores Tecnologias l Padrões de Projeto (reutilização de idéias) l Componentes (reutilização de código) l Middleware (aumenta a abstração) l Melhores Metodologias l Métodos Ágeis (o foco desta palestra) l outras... (abordadas, p.ex., na disciplina ES)

5 12:17 Copyleft AgilCoop5 / 55 Metodologias de Desenvolvimento de Software OO l Tradicionais l Comunidade de Engenharia de Software l IEEE/ACM ICSE l p.ex., Carnegie-Mellon SEI l RUP, CMMi, MPS.br, etc. l Ágeis l Comunidade de POO l ACM OOPSLA l p.ex. Illinois, Beck, Cockburn, Jeffries, Cunningham… l XP, Crystal, Scrum, etc.

6 12:17 Copyleft AgilCoop6 / 55 Métodos Ágeis de Desenvolvimento de Software l Movimento iniciado por programadores experientes e consultores em desenvolvimento de software. l Questionam e se opõem a uma série de mitos/práticas adotadas em abordagens tradicionais de Engenharia de Software e Gerência de Projetos. l Manifesto Ágil: Assinado por 17 desenvolvedores em Utah em fevereiro/2001.

7 12:17 Copyleft AgilCoop7 / 55 O Manifesto do Desenvolvimento Ágil de Software Indivíduos e interações são mais importantes 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.

8 12:17 Copyleft AgilCoop8 / 55 Princípios do Manifesto Ágil l Objetivo: satisfazer o cliente entregando, rapidamente e com freqüência, sistemas com algum valor. l Entregar versões funcionais em prazos curtos. l Estar preparado para requisitos mutantes. l Pessoal de negócios e desenvolvedores juntos. l Troca de informações através de conversas diretas.

9 12:17 Copyleft AgilCoop9 / 55 Principais Métodos Ágeis l Neste projeto nos concentraremos em : l Programação eXtrema (XP) l Outros métodos ágeis interessantes: l Crystal (uma família de métodos) l Scrum l Lean l Feature-driven Development l etc.

10 12:17 Copyleft AgilCoop10 / 55 A família Crystal de Métodos l Criada por Alistair Cockburn l l Editor da série Agile Software Development da Addison-Wesley.

11 12:17 Copyleft AgilCoop11 / 55 Classificação de Projetos de Desenvolvimento de Software Número de pessoas envolvidas Criticalidade (defeitos causam perdas de...) Comfort (C) Essential money (E) Life (L) +20%... Prioridade para responsabilidade legal ,000 C6C20C40C100C200C500C1000 D6D20D40D100D200D500D1000 E6E20E40E100E200E500E1000 L6L20L40L100L200L500L1000 Prioridade para Produtividade & Tolerância Discretionary money (D)

12 12:17 Copyleft AgilCoop12 / 55 Escopo da Família Crystal Red C6C20 C40 C80 D6D20D40 D80 E6E20E40 E80 Clear Yellow Orange L6L20L40 L80

13 12:17 Copyleft AgilCoop13 / 55 Principais Características da Família Crystal l Filosofia básica: l ênfase em comunicação l leve nos produtos gerados (evitar peso morto) l Princípios: l Precisamos de menos produtos intermediários se possuímos: l canais de comunicação informal ricos e rápidos l entrega freqüente de código funcionando l uso dos pontos fortes das pessoas (conversas, olhar a sua volta, interagir com outros) l estar ciente dos pontos fracos das pessoas (baixa disciplina, falta de cuidado)

14 12:17 Copyleft AgilCoop14 / 55 Adaptação da Metodologia l Em cada caso, escolha a metodologia mais leve possível que pode fazer o que você precisa. l Quanto maior o projeto (número de pessoas), maior burocracia será necessária e pior será a produtividade. l Reflection Workshops ao final de cada fase.

15 12:17 Copyleft AgilCoop15 / 55 Oficinas de Reflexão (Reflection Workshops) l Perguntas: l O que aprendemos na última fase (p.ex. mês)? l O que podemos fazer de uma forma melhor? l Resultado: l pôster Tentar testes automatizados multas para interrupções escrita pareada de testes Manter reuniões com cliente programação pareada Problemas muitas interrupções erros no código entregue

16 12:17 Copyleft AgilCoop16 / 55 Mais perguntas na reflexão l O que fizemos de bom e de ruim? l Quais são as nossas prioridades? l O que mantivemos de mais importante? l O que podemos mudar para a próxima vez? l O que podemos adicionar/tirar? l Após 2 ou 3 versões incrementais, a metodologia deve começar a convergir para uma metodologia tolerável para o projeto.

17 12:17 Copyleft AgilCoop17 / 55 Scrum Definição informal: Estratégia em um jogo de rugby onde jogadores colocam uma bola quase perdida novamente em jogo através de trabalho em equipe.

18 12:17 Copyleft AgilCoop18 / 55 Scrum l Jeff Suttherland l l Ken Schwaber l l Conferências l OOPSLA 96, PLoP 98 l Inspiração l Desenvolvimento Iterativo e Incremental em empresas (DuPont, Honda, etc) nos anos 80

19 12:17 Copyleft AgilCoop19 / 55 Programação eXtrema XP l Metodologia de desenvolvimento de software aperfeiçoada nos últimos 7 anos. l Ganhou notoriedade a partir da OOPSLA2000. l Nome principal: Kent Beck.

20 12:17 Copyleft AgilCoop20 / 55 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.

21 12:17 Copyleft AgilCoop21 / 55 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

22 12:17 Copyleft AgilCoop22 / 55 Premissas Básicas do Modelo Tradicional l É necessário fazer uma análise de requisitos profunda e detalhada antes de projetar 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.

23 12:17 Copyleft AgilCoop23 / 55 O que está por trás deste modelo? Custo de mudanças requisitos desenho testes análise implementação produção

24 12:17 Copyleft AgilCoop24 / 55 E se a realidade hoje em dia fosse outra? Custo de mudanças tempo

25 12:17 Copyleft AgilCoop25 / 55 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).

26 12:17 Copyleft AgilCoop26 / 55 E essa é a nova realidade ! (pelo menos em muitos casos) l Orientação a Objetos: facilita e cria oportunidades para mudanças. l Técnicas de Refatoração. 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.

27 12:17 Copyleft AgilCoop27 / 55 A Quem se Destina XP? l Grupos de 2 a 10 [20] programadores l Projetos de 1 a 36 meses l De 1000 a linhas de código l Papéis: l Programadores (foco central)(sem hierarquia) l Treinador ou Técnico (coach) l Acompanhador (tracker) l Cliente

28 12:17 Copyleft AgilCoop28 / 55 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 No início se dizia: l Ou você é 100% eXtremo ou não é eXtremo. Não dá prá ser 80% XP. l XP is like teenage sex. l Hoje não é mais necessariamente assim.

29 12:17 Copyleft AgilCoop29 / 55 As 12 Práticas de XP (primeira edi ç ão) 1.Planejamento 2.Fases Pequenas 3.Metáfora 4.Design Simples 5.Testes 6.Refatoração 7.Programação em Pares 8.Propriedade Coletiva 9.Integração Contínua 10.Passo sustent á vel 11.Cliente junto aos desenvolvedores 12.Padronização do código

30 12:17 Copyleft AgilCoop30 / 55 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 / não valorize o medo (Embrace change) l Alta qualidade do código

31 12:17 Copyleft AgilCoop31 / 55 As 4 Variáveis do Desenvolvimento de Software Tempo Custo Qualidade Escopo (foco principal de XP)

32 12:17 Copyleft AgilCoop32 / 55 Um Projeto XP l Fase de Exploração l duração: alguns dias a poucos meses. l termina quando a primeira versão do software é enviada ao cliente. 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.

33 12:17 Copyleft AgilCoop33 / 55 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. l Seleciona um cartão de história contendo uma tarefa claramente relacionada a uma característica (feature) desejada pelo cliente.

34 12:17 Copyleft AgilCoop34 / 55 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 Projeto (design) l Integração

35 12:17 Copyleft AgilCoop35 / 55 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.

36 12:17 Copyleft AgilCoop36 / 55 Testes l Fundamento mais importante de XP. l É o que dá segurança e coragem ao grupo. l Testes de unidades (Unit tests) l escritos pelos programadores para testar cada elemento do sistema (e.g., cada método em cada caso). l Testes de funcionalidades (Functional tests) l escritos pelos clientes para testar a funcionalidade do sistema.

37 12:17 Copyleft AgilCoop37 / 55 Testes l Testes das unidades do sistema l Tem que estar sempre funcionando a 100%. l São executados várias vezes por dia. l Executados à noite automaticamente. l Testes das funcionalidades l Vão crescendo de 0% a 100%. l Quando chegam a 100% acabou o projeto.

38 12:17 Copyleft AgilCoop38 / 55 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 sincronia). l Comentários sempre que necessários. l Comentários padronizados. l Programação Pareada ajuda muito!

39 12:17 Copyleft AgilCoop39 / 55 Programação em Pares 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 (gambiarras) na frente do seu par. l Pareamento de acordo com especialidades.Exemplos: l Sistema Multimídia Orientado a Objetos Aplica ç ão Web com alto n í vel de seguran ç a

40 12:17 Copyleft AgilCoop40 / 55 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!

41 12:17 Copyleft AgilCoop41 / 55 Refatoração (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

42 12:17 Copyleft AgilCoop42 / 55 Exemplos de Refatoração 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 raizQuadrada(float x) raiz(float x, int n)

43 12:17 Copyleft AgilCoop43 / 55 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).

44 12:17 Copyleft AgilCoop44 / 55 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.

45 12:17 Copyleft AgilCoop45 / 55 Tracker (Acompanhador) l A consciência do time. l Coleta estatísticas sobre o andamento do projeto. Alguns exemplos: Número de histórias definidas e implementadas. Número de unit tests. Número de testes funcionais definidos e funcionando. Número de classes, métodos, linhas de código l Mantém histórico do progresso. l Faz estimativas para o futuro.

46 12:17 Copyleft AgilCoop46 / 55 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.

47 12:17 Copyleft AgilCoop47 / 55 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 (muito raro).

48 12:17 Copyleft AgilCoop48 / 55 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.

49 12:17 Copyleft AgilCoop49 / 55 As 12 Práticas de XP (primeira edi ç ão) 1.Planejamento 2.Fases Pequenas 3.Metáfora 4.Design Simples 5.Testes 6.Refatoramento 7.Programação em Pares 8.Propriedade Coletiva 9.Integração Contínua 10.Passo sustent á vel 11.Cliente junto aos desenvolvedores 12.Padronização do código

50 12:17 Copyleft AgilCoop50 / 55 Práticas de XP l As práticas foram refatoradas (veja l Mas a idéia é exatamente a mesma l Novas práticas interessantes: Conserte XP quando a metodologia quebrar. Mova as pessoas. Client Proxy (by Klaus)

51 12:17 Copyleft AgilCoop51 / 55 Nossas experiências Laborat ó rio de Programa ç ão eXtrema l desde 2001: 7 turmas, ~24 projetos Implanta ç ão em algumas empresas Assembl é ia Legislativa do Estado de São Paulo l 3 projetos: 1. Recursos humanos 2. Legislativo 3. Portal

52 12:17 Copyleft AgilCoop52 / 55 Conclusão l Quase todo mundo pode fazer XP. l Mas todo mundo pode aprender com ela.

53 12:17 Copyleft AgilCoop53 / 55 Características Comuns dos Métodos Ágeis l Coloca o foco l Na entrega freqüente de sub-versões do software [funcionando] para o cliente. l Nos seres humanos que desenvolvem o software. l Retira o foco de l Processos rígidos e burocratizados. l Documentações e contratos detalhados. l Ferramentas que são usadas pelos seres humanos.

54 12:17 Copyleft AgilCoop54 / 55 Maiores Informações No IME: Fora do IME:

55 12:17 Copyleft AgilCoop55 / 55 Nas próximas aulas… 1. Refatoração 2. Testes 3. Planejamento ágil l teoria l prática


Carregar ppt "Copyleft AgilCoop1 Desenvolvimento Á gil de Software com Programa ç ão eXtrema (XP) Prof. Fabio Kon e Prof. Alfredo Goldman Departamento de Ciência da."

Apresentações semelhantes


Anúncios Google