Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

GCS - Aula 09 - GCS Ágil

2,236 views

Published on

GCS - Aula 09 - GCS Ágil

Aspectos quanto ao conceito de GCS Ágil, práticas ágeis relacionadas à GCS e Padrões de Gestão de Configuração de Software

Disciplina de Gestão de Configuração de Software do Curso de Especialização em Engenharia de Software.

Published in: Technology
  • DOWNLOAD THAT BOOKS INTO AVAILABLE FORMAT (2019 Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://urlzs.com/UABbn } ......................................................................................................................... Download Full EPUB Ebook here { https://urlzs.com/UABbn } ......................................................................................................................... Download Full doc Ebook here { https://urlzs.com/UABbn } ......................................................................................................................... Download PDF EBOOK here { https://urlzs.com/UABbn } ......................................................................................................................... Download EPUB Ebook here { https://urlzs.com/UABbn } ......................................................................................................................... Download doc Ebook here { https://urlzs.com/UABbn } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book that can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer that is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBooks .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story That Helped Ignite a Movement,-- Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money That the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths that Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Download or read that Ebooks here ... ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Doc Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • -- DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT -- ......................................................................................................................... ......................................................................................................................... Download FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... (Unlimited)
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

GCS - Aula 09 - GCS Ágil

  1. 1. Gestão de Configuração de Software - GCS Ágil - ES06 – Especialização em Engenharia de Software Prof.: Misael Santos (misael@gmail.com) Ago/2010
  2. 2. Agenda <ul><li>Desenvolvimento Ágil </li></ul><ul><ul><li>Manifesto Ágil </li></ul></ul><ul><ul><ul><li>Práticas </li></ul></ul></ul><ul><ul><li>Metodologias Ágeis </li></ul></ul><ul><ul><ul><li>XP </li></ul></ul></ul><ul><ul><ul><li>Integração Contínua </li></ul></ul></ul><ul><li>GCS Ágil </li></ul><ul><li>Padrões de Software </li></ul><ul><ul><li>Conceitos </li></ul></ul><ul><ul><li>Tipos de Padrões </li></ul></ul><ul><li>SCM Patterns </li></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  3. 3. Desenvolvimento Ágil <ul><li>O peso dos processos de software </li></ul><ul><li>Busca pela formalização das práticas mais próximas do real </li></ul><ul><li>Pensamento Nike (Just-Do-It) </li></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  4. 4. Desenvolvimento Ágil <ul><li>Origem dos métodos ágeis </li></ul><ul><ul><li>Anos 80 (Code-and-Fix) </li></ul></ul><ul><ul><li>Processos unificados (UP) </li></ul></ul><ul><ul><li>Processos seqüenciais e burocráticos </li></ul></ul><ul><ul><li>Projeto C3 (Chrysler) </li></ul></ul><ul><ul><li>Manifesto ágil </li></ul></ul><ul><ul><li>Agile Alliance (http://www.agilealliance.org/) </li></ul></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  5. 5. Manifesto Ágil <ul><li>“ Estamos evidenciando maneiras melhores de desenvolver </li></ul><ul><li>software fazendo-o nós mesmos e ajudando outros a fazê-lo. </li></ul><ul><li>Através desse trabalho, passamos a valorizar: </li></ul><ul><li>Software em funcionamento mais que documentação abrangente </li></ul><ul><li>Indivíduos e interação mais que processos e ferramentas; </li></ul><ul><li>Colaboração com o cliente mais que negociação de contratos; </li></ul><ul><li>Responder a mudanças mais que seguir um plano. </li></ul><ul><li>Ou seja, mesmo tendo valor os itens à direita, valorizamos mais os itens à esquerda.” </li></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  6. 6. Métodos Ágeis <ul><li>Extreme Programming </li></ul><ul><li>Scrum </li></ul><ul><li>OpenUp </li></ul><ul><li>Pragmatic Programming </li></ul><ul><li>Feature Driven Development (FDD) </li></ul><ul><li>Crystal </li></ul><ul><li>Adaptive Software Development </li></ul><ul><li>Dynamic Systems Development Method (DSDM) </li></ul><ul><li>Agile Lean Development (LD) </li></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  7. 7. Extreme Programming (XP) Copyright © 2010 Misael Santos Gestão de Configuração de Software
  8. 8. Extreme Programming (XP) <ul><li>É formado por um conjunto de valores, princípios e práticas </li></ul><ul><li>Ao contrário do que os gurus pregam, o XP pode ser usado com CMM e UPs como atestam alguns estudos específicos nos últimos anos </li></ul><ul><li>A preocupação não é com qualidade e sim com a saúde do sistema (Kent Beck) </li></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  9. 9. Extreme Programming (XP) <ul><li>Humanidade </li></ul><ul><li>Economia </li></ul><ul><li>Benefício mútuo </li></ul><ul><li>Similaridade própria </li></ul><ul><li>Progresso </li></ul><ul><li>Diversidade </li></ul><ul><li>Reflexão </li></ul><ul><li>Fluxo </li></ul><ul><li>Oportunidade </li></ul><ul><li>Redundância </li></ul><ul><li>Falha </li></ul><ul><li>Qualidade </li></ul><ul><li>Passos-de-bebê </li></ul><ul><li>Aceite </li></ul><ul><li>Responsabilidade </li></ul><ul><li>Comunicação </li></ul><ul><li>Simplicidade </li></ul><ul><li>Feedback </li></ul><ul><li>Coragem </li></ul><ul><li>Respeito </li></ul>Princípios Valores Copyright © 2010 Misael Santos Gestão de Configuração de Software
  10. 10. Extreme Programming (XP) <ul><li>Práticas Primárias (1) </li></ul><ul><ul><li>Ambiente Informativo </li></ul></ul><ul><ul><li>Build de Dez Minutos </li></ul></ul><ul><ul><li>Ciclo Semanal </li></ul></ul><ul><ul><li>Ciclo Trimestral </li></ul></ul><ul><ul><li>Desenvolvimento Orientado a Testes (TDD) </li></ul></ul><ul><ul><li>Design Incremental </li></ul></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  11. 11. Extreme Programming (XP) <ul><li>Práticas Primárias (2) </li></ul><ul><ul><li>Equipe Integral </li></ul></ul><ul><ul><li>Folga </li></ul></ul><ul><ul><li>Histórias </li></ul></ul><ul><ul><li>Integração Contínua </li></ul></ul><ul><ul><li>Programação em Par </li></ul></ul><ul><ul><li>Sentar-se Junto </li></ul></ul><ul><ul><li>Trabalho Energizado </li></ul></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  12. 12. Extreme Programming (XP) Copyright © 2010 Misael Santos Gestão de Configuração de Software
  13. 13. Extreme Programming (XP) <ul><li>Práticas Corolárias (1) </li></ul><ul><ul><li>Análise da Raiz do Problema </li></ul></ul><ul><ul><li>Base de Código Unificada </li></ul></ul><ul><ul><li>Código Coletivo </li></ul></ul><ul><ul><li>Código e Testes </li></ul></ul><ul><ul><li>Continuidade da Equipe </li></ul></ul><ul><ul><li>Contrato de Escopo Negociável </li></ul></ul><ul><ul><li>Envolvimento Real do Cliente </li></ul></ul><ul><ul><li>Equipes que Encolhem </li></ul></ul><ul><ul><li>Implantação Diária </li></ul></ul><ul><ul><li>Implantação Incremental </li></ul></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  14. 14. Extreme Programming (XP) <ul><li>Práticas Corolárias (2) </li></ul><ul><ul><li>Pagar Por Uso </li></ul></ul><ul><ul><li>Metáforas </li></ul></ul><ul><ul><li>Refatoração ( Refactoring ) </li></ul></ul><ul><ul><li>Padrões de Projeto ( Design Patterns ) </li></ul></ul><ul><ul><li>40 horas semanais </li></ul></ul><ul><ul><li>Jogo do Planejamento </li></ul></ul><ul><ul><li>Reuniões em Pé </li></ul></ul><ul><ul><li>Padrões de Codificação </li></ul></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  15. 15. Extreme Programming (XP) <ul><li>Agile Change Management </li></ul><ul><ul><li>Não devemos tratar o processo de gestão de mudanças como processo de prevenção de mundaças . </li></ul></ul><ul><ul><li>Aceitar bem as mudanças nos requisitos, mesmo em fases avançadas do projeto. </li></ul></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  16. 16. Integração Contínua <ul><li>Código novo é integrado com o sistema atual em algumas horas. Na integração o sistema é “construído” e todos os testes devem ser bem sucedidos ou as mudanças serão descartadas. </li></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  17. 17. Integração Contínua <ul><li>Integração automatizada </li></ul><ul><li>Testes automatizados </li></ul><ul><li>Sempre atualizar o workspace e testar antes do “Checkin” </li></ul><ul><li>Realizar “Checkin” com frequência </li></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  18. 18. Integração Contínua <ul><li>Objetivo </li></ul><ul><ul><li>Minimizar a existência de problemas de integração no código-base do sistema. Quanto mais cedo forem descobertos, mais fácil de identificá-los e corrigí-los. </li></ul></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  19. 19. Integração Contínua <ul><li>Integração Contínua Síncrona </li></ul><ul><ul><li>Apenas um par integra seu trabalho de cada vez e outros pares só são liberados para integrar ao serem informados do término da integração corrente. </li></ul></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  20. 20. Integração Contínua <ul><li>Integração Contínua Síncrona - Passos </li></ul><ul><li>Assegurar que o projeto compila e todos os testes automatizados executam com sucesso </li></ul><ul><li>Conquistar a vez de integrar </li></ul><ul><li>Criar um backup do projeto na estação de trabalho </li></ul><ul><li>Fazer update do projeto </li></ul><ul><li>Assegurar que o software continua compilando e os testes executam com sucesso </li></ul><ul><li>Fazer commit do projeto </li></ul><ul><li>Apagar o diretório do projeto na estação de trabalho e fazer checkout </li></ul><ul><li>Assegurar que o software continua compilando e que os testes executam com sucesso </li></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  21. 21. Integração Contínua <ul><li>Integração Contínua Assíncrona </li></ul><ul><ul><li>Projetos nos quais os desenvolvedores não trabalhem juntos em uma mesma sala. </li></ul></ul><ul><ul><li>Em tais casos torna-se difícil ou impossível garantir que apenas um desenvolvedor irá integrar de cada vez. </li></ul></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  22. 22. Integração Contínua <ul><li>Integração Contínua Assíncrona – Passos </li></ul><ul><ul><li>Assegurar que o projeto compila e todos os testes automatizados executam com sucesso </li></ul></ul><ul><ul><li>Criar um backup do projeto na estação de trabalho </li></ul></ul><ul><ul><li>Fazer update do projeto </li></ul></ul><ul><ul><li>Assegurar que o software continua compilando e os testes executam com sucesso </li></ul></ul><ul><ul><li>Fazer commit do projeto </li></ul></ul><ul><ul><li>Realizar integração automatizada </li></ul></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  23. 23. Integração Contínua <ul><li>Ferramentas: </li></ul><ul><ul><li>Hudson </li></ul></ul><ul><ul><li>Continuum (Apache) </li></ul></ul><ul><ul><li>CruiseControl </li></ul></ul><ul><ul><li>LuntBuild </li></ul></ul><ul><ul><li>Bamboo (Atlassian) </li></ul></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  24. 24. Integração Contínua <ul><li>Ex: </li></ul><ul><ul><li>Continuum + Java + Maven + CVS </li></ul></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  25. 25. Copyright © 2010 Misael Santos Gestão de Configuração de Software
  26. 26. Integração Contínua 2 - Altera Servidor de IC (Continuum) Equipe Notificações (Sucesso, Falha) 3 - Build Privada 6 - Build de Integração 6.1 - Testes e Métricas 3.1 - Testes e Métricas 4 - Commit 5 – Update / Checkout Publicação de Resultados 7 - Deploy 1 – Checkout / Update Copyright © 2010 Misael Santos Gestão de Configuração de Software Repositório (CVS) Servidor de Relatórios
  27. 27. GCS Ágil <ul><li>“ GCS Ágil” não é um oxímoro? </li></ul><ul><li>Muitos consideram GCS como um processo pesado que impede o “trabalho real&quot; do desenvolvimento </li></ul><ul><li>Para muitos projetos GCS funciona bem </li></ul><ul><ul><li>Alguns compensam evitando ferramentas e práticas que fazem com que processo de GCS seja inerentemente limitante. </li></ul></ul><ul><li>Outros querem controlar e ter tantos processos de GCS que chegam a prejudicar a eles mesmos. </li></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  28. 28. Desperdícios no Desenvolvimento de Software <ul><li>Funcionalidades Extra/Não-utilizadas (Overproduction) </li></ul><ul><li>Trabalho parcialmente desenvolvido não liberado para a produção (Inventory) </li></ul><ul><li>Artefatos Intermediários/Não-Utilizados (Extra Processing) </li></ul><ul><li>Busca de Informações (Motion) </li></ul><ul><li>Defeitos não capturados pelos testes/revisões (Defects) </li></ul><ul><li>Espera (incluindo Espera do Cliente) </li></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  29. 29. O que é GCS Ágil? <ul><li>A aplicação pragmática de: </li></ul><ul><ul><li>Práticas e Princípios da Gestão de Configuração </li></ul></ul><ul><ul><li>de acordo com os Valores Ágeis </li></ul></ul><ul><ul><li>usando o “Pensamento Enxuto” ( Lean Thinking ) </li></ul></ul><ul><li>para atender as necessidades de Negócios! </li></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  30. 30. Requisitos da GCS Ágil <ul><li>Servir aos profissionais e não vice-versa! </li></ul><ul><li>Derrubar as paredes entre a GCS & desenvolvedores para que o time todo trabalhe junto para entregar software de qualidade utilizando uma abordagem ágil </li></ul><ul><li>Responder às mudanças ao invés de prevení-las </li></ul><ul><li>Rastrear e coordenar o desenvolvimento ao invés de tentar controlar os desenvolvedores </li></ul><ul><li>Se esforçar para ser transparente e automatizar o máximo possível </li></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  31. 31. Características da GCS Ágil <ul><li>GCS é uma responsabilidade do time inteiro </li></ul><ul><li>Documentação & Rastreabilidade Enxutas </li></ul><ul><li>Gerenciamento Agressivo de Dependências </li></ul><ul><li>Feedback Contínuo e Visível </li></ul><ul><ul><li>Sobre a Qualidade, Estabilidade e Integridade </li></ul></ul><ul><li>Coordenação e automação frequente + rápida </li></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  32. 32. Respondendo à Mudanças <ul><li>Gerenciar as espectativas dos interessados com comunicação próxima e poucas fronteiras </li></ul><ul><ul><li>Tomadores de decisões devem estar disponíveis & acessíveis para dar respostas rápidas </li></ul></ul><ul><ul><li>No início de cada iteração espectativas e prioridades são (re)definidas e (re)calibradas </li></ul></ul><ul><ul><li>CCB’s devem ser chamados de “encontros de replanejamento” para evitar o estigma de tentar “controlar” as mudanças </li></ul></ul><ul><ul><li>Trabalhar somente com features da iteração corrente </li></ul></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  33. 33. Respondendo à Mudanças <ul><li>A autorização para os desenvolvedores realizarem mudanças precisa ser instantânea: </li></ul><ul><ul><li>Uma vez que o desenvolvedor foi atribuído a uma tarefa, ele não deve precisar esperar para obter os itens do repositório (checkout) </li></ul></ul><ul><ul><li>Se um erro “quebra” a build ou falha no teste o desenvolvimento deve ser ágil para efetivamente repará-lo sem ter que esperar pela notificação de autorização </li></ul></ul><ul><ul><li>Nenhuma permissão adicional deve ser requerida para a refatoração ( refactoring ) </li></ul></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  34. 34. Automatização Apropriada <ul><li>Eventos automatizados que ocorrem frequentemente mudam raramente e requerem consistência. </li></ul><ul><ul><li>Eventos relacionados a builds, publicação ( deployment ), releases formais, testes automatizados, builds de integração </li></ul></ul><ul><li>Por que?: Minimizar Artefatos & Espera </li></ul><ul><ul><li>Documentar esses procedimentos via scripts, aumenta a produtividade no desenvolvimento e diminui custos de administração </li></ul></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  35. 35. As Três Builds <ul><li>Private Developer Build </li></ul><ul><ul><li>Fornece uma forma consistente para o desenvolvedor construir o software ( build ) nos confins da sua área de desenvolvimento privada </li></ul></ul><ul><li>Team Integration Build </li></ul><ul><ul><li>Sincronizar a equipe fornecendo feedback sobre a qualidade e a integridade </li></ul></ul><ul><li>Formal Release Build </li></ul><ul><ul><li>Criar pacotes implantáveis </li></ul></ul><ul><li>Por que? : </li></ul><ul><ul><li>Produtividade, previsibilidade, documentação, habilidade para a atividade de build sem comprometer a GC ou a qualidade. </li></ul></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  36. 36. The Three Builds Copyright © 2010 Misael Santos Gestão de Configuração de Software Private Build Task Developer Multi-Task Coordination Development Team Integration Build Customer / Test (V&V) Iteration / Release Release Build Type of Build Project Scale Visibility of Build
  37. 37. CMM x Ágil Copyright © 2010 Misael Santos Gestão de Configuração de Software CMM Ágil O gerenciamento desempenha um papel fundamental para o sucesso do projeto O gerenciamento é como uma função de coach , que ajuda a eliminar barreiras para o progresso do projeto O foco é na organização (empresa) O foco é no projeto ou na equipe O CMMI é amplamente benéfico, especialmente em mercados maduros Métodos Ágeis tem maior benefício em mercados emergentes ou incompreendidos O CMMI pressupõe uma visão de longo prazo O Ágil foca no curto e médio prazo O CMMI nasceu em domínios de falhas de alto custo O Ágil Floresceu em domínios de falhas de baixo custo O CMMI tem forte ênfase em “ revisar enquanto desenvolve “ Métodos Ágeis pregam o desenvolvimento simultâneo
  38. 38. GCS Ágil e o Manifesto Ágil <ul><li>Valor 1 </li></ul><ul><li>Individuals and Interactions over Processes and Tools </li></ul><ul><li>Processos e ferramentas de GCS devem suportar a maneira com que você trabalha e não o contrário. </li></ul><ul><li>“ Processos não escrevem software. Pessoas sim!” </li></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  39. 39. GCS Ágil e o Manifesto Ágil <ul><li>Valor 2 </li></ul><ul><li>Working Software over Comprehensive Documentation </li></ul><ul><li>Minimizar artefatos intermediários </li></ul><ul><li>“ Simple-size it!” </li></ul><ul><li>GCS pode automatizar as políticas e processos de desenvolvimento com conhecimento executável sobre o conhecimento documentado </li></ul><ul><li>“ Automatização Apropriada” </li></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  40. 40. GCS Ágil e o Manifesto Ágil <ul><li>Valor 3 </li></ul><ul><li>Customer Collaboration over Contract Negotiation </li></ul><ul><li>A GCS deve facilitar a comunicação entre os interessados e ajudar a gerenciar as espectativas </li></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  41. 41. GCS Ágil e o Manifesto Ágil <ul><li>Valor 4 </li></ul><ul><li>Responding to Change over Following a Plan </li></ul><ul><li>GC diz respeito a facilitar mudanças, não prevení-las </li></ul><ul><ul><li>“ Mudanças em requisitos em fases adiantadas do ciclo de vida são vantagens competitivas SE você consegue agir sobre elas!” </li></ul></ul><ul><ul><ul><ul><li>– Mary Poppendieck </li></ul></ul></ul></ul><ul><ul><li>“ Projetos ágeis não são controlados em conformidade com o planejamento mas em conformidade com valores do negócio.” </li></ul></ul><ul><ul><li>Se aceitamos a noção de mudanças & turbulência constantes então planos são úteis como guias mas não como mecanismos de controle … porque eles tendem a punir ações corretas.” </li></ul></ul><ul><ul><ul><ul><li>– James Highsmith </li></ul></ul></ul></ul><ul><li>“ A Mudança não é o inimigo – estagnação é! Não tente prevenir mudanças! Se planeje para isso!” </li></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  42. 42. Patterns <ul><li>Soluções Comprovadas </li></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  43. 43. Padrões de Software <ul><li>O que é um padrão? </li></ul><ul><li>Um padrão é uma solução documentada para </li></ul><ul><li>um problema recorrente em um determinado </li></ul><ul><li>contexto . </li></ul>Padrão ( Pattern ) ≠ Padronização ( Standard ) Copyright © 2010 Misael Santos Gestão de Configuração de Software
  44. 44. Padrões de Software <ul><li>Benefícios </li></ul><ul><ul><li>Aumentar a reutilização </li></ul></ul><ul><ul><li>Documentar soluções </li></ul></ul><ul><ul><li>Passar conhecimento para iniciantes </li></ul></ul><ul><ul><li>Fornecer um vocabulário comum entre os desenvolvedores </li></ul></ul><ul><ul><li>Aumentar a qualidade do produto </li></ul></ul><ul><ul><li>... </li></ul></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  45. 45. Padrões de Software <ul><li>Padrões x Coleções de Padrões </li></ul><ul><ul><li>Padrões isolados resolvem problemas pontuais </li></ul></ul><ul><ul><li>Conjuntos de padrões podem construir um sistema inteiro, preenchendo todas as lacunas de um contexto inteiro </li></ul></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  46. 46. Tipos de Padrões de Software (1) <ul><li>Atualmente existem padrões de software para as mais diversas áreas da Engenharia de Software </li></ul><ul><li>Existem diversas formas de classificar os Padrões de Software. </li></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  47. 47. Tipos de Padrões de Software (2) <ul><li>Quanto à fase de desenvolvimento em o padrão é aplicado </li></ul><ul><ul><li>Padrões de Análise ( Analisys Patterns ) </li></ul></ul><ul><ul><li>Padrões de Projeto ( Design Patterns ) </li></ul></ul><ul><ul><ul><li>Erich Gamma (GoF) </li></ul></ul></ul><ul><ul><li>Padrões de Implementação ( Idioms ) </li></ul></ul><ul><ul><li>Padrões de Testes ( Test Patterns ) </li></ul></ul><ul><ul><li>.... </li></ul></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  48. 48. Tipos de Padrões de Software (3) <ul><li>Quanto à Tecnologia </li></ul><ul><ul><li>Padrões J2EE ( Core J2EE Patterns ) </li></ul></ul><ul><ul><li>Padrões para Web </li></ul></ul><ul><ul><li>Padrões para XML ( XML Patterns ) </li></ul></ul><ul><ul><li>Padrões para Bancos de Dados </li></ul></ul><ul><ul><li>Padrões para Ajax ( Ajax Patterns ) </li></ul></ul><ul><ul><li>Padrões para Interface Gráfica ( GUI Patterns ) </li></ul></ul><ul><ul><li>... </li></ul></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  49. 49. Tipos de Padrões de Software (4) <ul><li>Quanto de Processo/Metologias </li></ul><ul><ul><li>Padrões de Processo ( Process Patterns ) </li></ul></ul><ul><ul><li>Padrões de Gestão de Configuração ( SCM Patterns ) </li></ul></ul><ul><ul><li>Padrões de Segurança ( Security Patterns ) </li></ul></ul><ul><ul><li>... </li></ul></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  50. 50. Formato dos Padrões (1) <ul><li>Componentes básicos de um padrão </li></ul><ul><ul><li>Nome </li></ul></ul><ul><ul><li>Contexto </li></ul></ul><ul><ul><li>A Descrição do Problema </li></ul></ul><ul><ul><li>Solução </li></ul></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  51. 51. Formato dos Padrões (2) <ul><li>Existem diversos formatos que podem conter </li></ul><ul><ul><li>Forças </li></ul></ul><ul><ul><li>Aplicabilidade </li></ul></ul><ul><ul><li>Usos Conhecidos </li></ul></ul><ul><ul><li>Consequências </li></ul></ul><ul><ul><li>Padrões Relacionados </li></ul></ul><ul><ul><li>Intenção </li></ul></ul><ul><ul><li>Racionalidade </li></ul></ul><ul><ul><li>... </li></ul></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  52. 52. SCM Patterns <ul><li>Software Configuration Management Patterns: Effective Teamwork, Practical Integration </li></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  53. 53. SCM Patterns <ul><li>Consiste em uma Linguagem de Padrões para Gestão de Configuração de Software </li></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  54. 54. SCM Patterns <ul><li>Consiste em uma Linguagem de Padrões para Gestão de Configuração de Software </li></ul>Conjunto de Padrões que se unem para formar um “sistema”. Copyright © 2010 Misael Santos Gestão de Configuração de Software
  55. 55. SCM Patterns Copyright © 2010 Misael Santos Gestão de Configuração de Software
  56. 56. SCM Patterns <ul><li>Objetivo </li></ul><ul><ul><li>Ajudar a entender como as partes de uma ambiente de desenvolvimento interagem entre si para que possamos utilizar de forma efetiva a gestão de configuração. </li></ul></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  57. 57. SCM Patterns <ul><li>Princípio: </li></ul><ul><ul><li>Usar a Gestão de Configuração, especialmente o controle de versões, como parte de um ambiente de desenvolvimento ágil . </li></ul></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  58. 58. SCM Patterns <ul><li>Workspace-Related Patterns </li></ul><ul><ul><li>Private Workspace </li></ul></ul><ul><ul><li>Repository </li></ul></ul><ul><ul><li>Private System Build </li></ul></ul><ul><ul><li>Integration Build </li></ul></ul><ul><ul><li>Third Party Codeline </li></ul></ul><ul><ul><li>Task Level Commit </li></ul></ul><ul><ul><li>Smoke Test </li></ul></ul><ul><ul><li>Unit Test </li></ul></ul><ul><ul><li>Regression Test </li></ul></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  59. 59. SCM Patterns <ul><li>Codeline-Related Patterns </li></ul><ul><ul><li>Mainline </li></ul></ul><ul><ul><li>Active Development Line </li></ul></ul><ul><ul><li>Codeline Policy </li></ul></ul><ul><ul><li>Private Versions </li></ul></ul><ul><ul><li>Release Line </li></ul></ul><ul><ul><li>Release-Prep Code Line </li></ul></ul><ul><ul><li>Task Branch </li></ul></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  60. 60. Mainline Pattern Copyright © 2010 Misael Santos Gestão de Configuração de Software
  61. 61. Mainline Pattern <ul><li>Minimizar o merge e manter um número gerenciável de linhas de desenvolvimento ativas desenvolvendo sobre a Mainline. </li></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  62. 62. Mainline Pattern <ul><li>O merge pode virar uma bagunça... </li></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  63. 63. Mainline Pattern <ul><li>Solução </li></ul><ul><ul><li>Tenha todas as outras linhas de desenvolvimento frequentemente combinadas à linha de desenvolvimento principal </li></ul></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  64. 64. Mainline Pattern Copyright © 2010 Misael Santos Gestão de Configuração de Software
  65. 65. Mainline Pattern <ul><li>Questões não resolvidas: </li></ul><ul><ul><li>Como manter a “Mainline” utilizável quando muitas pessoas estão trabalhando nela? ( Active Development Line ) </li></ul></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  66. 66. Active Development Line Pattern Copyright © 2010 Misael Santos Gestão de Configuração de Software
  67. 67. Active Development Line Pattern <ul><li>Manter uma linha de desenvolvimento em evolução rapidamente estável o suficiente para que seja útil na criação de “Linhas de Desenvolvimento Ativas”. </li></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  68. 68. Active Development Line Pattern <ul><li>Questões não resolvidas: </li></ul><ul><ul><li>Como identificar a linha de desenvolvimento estável? ( Codeline Policy ) </li></ul></ul><ul><ul><li>Como isolar o trabalho dos desenvolvedores da “Linha de Desenvolvimento Ativa” ( Private Workspace )? </li></ul></ul><ul><ul><li>… </li></ul></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  69. 69. Private Workspace Pattern Copyright © 2010 Misael Santos Gestão de Configuração de Software
  70. 70. Private Workspace Pattern <ul><li>Prevenir que questões de integração distraiam você e que suas mudanças causem outros problemas desenvolvendo em uma “Área de Trabalho Privada”. </li></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  71. 71. Private Workspace Pattern <ul><li>Questões não resolvidas: </li></ul><ul><ul><li>Evitar inserir erros no sistema ao consolidar suas alterações no repositório ( Private System Build ) </li></ul></ul><ul><li>Outros padrões relacionados: </li></ul><ul><ul><li>Repository </li></ul></ul><ul><ul><li>Third Party Codeline </li></ul></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  72. 72. Repository Pattern Copyright © 2010 Misael Santos Gestão de Configuração de Software
  73. 73. Repository Pattern <ul><li>Configurar um novo workspace populando-o a partir de um “Repositório” que contém tudo o que você precisa. </li></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  74. 74. Repository Pattern Copyright © 2010 Misael Santos Gestão de Configuração de Software
  75. 75. Repository Pattern <ul><li>Questões não resolvidas: </li></ul><ul><ul><li>Organizar código de terceiros utilizando o Third-Party Codeline. </li></ul></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  76. 76. Private System Build Pattern Copyright © 2010 Misael Santos Gestão de Configuração de Software
  77. 77. Private System Build Pattern <ul><li>Verifique se suas mudanças não “quebrarão” a build fazendo uma “integração privada do sistema” antes de consolidar as suas alterações no Repositório. </li></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  78. 78. Private System Build Pattern <ul><li>Semelhante ao Integration Build , todavia alguns detalhes relacionados à release e empacotamento podem ser omitidos. </li></ul><ul><li>Deve incluir todas as dependências </li></ul><ul><li>Deve incluir todos os componentes dependentes da mudança </li></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  79. 79. Private System Build Pattern <ul><li>Questões não resolvidas </li></ul><ul><ul><li>Como saber se você não está inserindo problemas à funcionalidade? ( Smoke Test Pattern ) </li></ul></ul><ul><ul><li>… </li></ul></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  80. 80. Integration Build Pattern Copyright © 2010 Misael Santos Gestão de Configuração de Software
  81. 81. Integration Build Pattern <ul><li>Garanta que o seu código base sempre gere builds confiáveis fazendo uma Integração (Integration Build) periodicamente. </li></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  82. 82. Integration Build Pattern Copyright © 2010 Misael Santos Gestão de Configuração de Software
  83. 83. Integration Build Pattern <ul><li>Questões não resolvidas: </li></ul><ul><ul><li>Como garantir que a build de integração é utilizável? ( Smoke Test, Regression Test ) </li></ul></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  84. 84. Third Party Codeline Pattern Copyright © 2010 Misael Santos Gestão de Configuração de Software
  85. 85. Third Party Codeline Pattern <ul><li>Administre o código de terceiros usando uma “Linha de Desenvolvimento de Terceiros”. </li></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  86. 86. Task Level Commit Pattern Copyright © 2010 Misael Santos Gestão de Configuração de Software
  87. 87. Task Level Commit Pattern <ul><li>Quanto trabalho deve ser feito entre cada submissão ao controle de versões? Quanto você deve esperar para commitar suas alterações? </li></ul><ul><li>Organize as mudanças em código-fonte por unidade de trabalho “orientadas a tarefas”. </li></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  88. 88. Codeline Policy Pattern Copyright © 2010 Misael Santos Gestão de Configuração de Software
  89. 89. Codeline Policy Pattern <ul><li>Crie uma “Política de Linhas de Desenvolvimento” para ajudar desenvolvedores a decidir onde e quando realizar o “check in” e que procedimentos devem ser seguidos antes de um checkin para cada Linha de Desenvolvimento. </li></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  90. 90. Smoke Test Pattern Copyright © 2010 Misael Santos Gestão de Configuração de Software
  91. 91. Smoke Test Pattern <ul><li>Garanta que o sistema ainda funcione depois de suas alterações executando o “Smoke Test” </li></ul><ul><li>Teste não exaustivo sobre as funcionalidades básicas da aplicação </li></ul><ul><li>Verificar se a aplicação não “quebra” de forma óbvia </li></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  92. 92. Unit Test Pattern Copyright © 2010 Misael Santos Gestão de Configuração de Software
  93. 93. Unit Test Pattern <ul><li>Verifique que um módulo ainda funciona depois das suas alterações executando um “Teste Unitário”. </li></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  94. 94. Unit Test Pattern <ul><li>Testes unitários: </li></ul><ul><ul><li>Deve ser automático </li></ul></ul><ul><ul><li>É isolado de outros testes </li></ul></ul><ul><ul><li>Testa o contrato do elemento </li></ul></ul><ul><ul><li>Deve ser simples de usar: </li></ul></ul><ul><ul><ul><li>durante a codificação </li></ul></ul></ul><ul><ul><ul><li>antes de realizar checkin </li></ul></ul></ul><ul><ul><ul><li>após atualizar o workspace </li></ul></ul></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  95. 95. Regression Test Pattern Copyright © 2010 Misael Santos Gestão de Configuração de Software
  96. 96. Regression Test Pattern <ul><li>Garanta que código existente não piore quando implementadas melhorias executando um “Teste de Regressão” </li></ul><ul><li>Deve ser executado para toda build de integração </li></ul><ul><li>Smoke Tests não testam o software exaustivamente </li></ul><ul><li>Testes unitários ( Unit Tests ) testam as partes individualmente </li></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  97. 97. Regression Test Pattern <ul><li>Execute os testes de regressão no sistema quando você quer garantir uma certa estabilidade a ele </li></ul><ul><li>Crie testes de regressão de casos de testes que falharam no passado (relatos de verificações de qualidade, relatos do cliente) </li></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  98. 98. Private Versioning Pattern Copyright © 2010 Misael Santos Gestão de Configuração de Software
  99. 99. Private Versioning Pattern <ul><li>Use o “Versionamento Privado” para permitir que que você trabalhe com alterações complexas localmente e ainda consiga tirar vantagem dos benefícios de uma sistema de controle de versões. </li></ul><ul><li>Use uma branch , um repositório local, ferramentas próprias (níveis de promoção, cv distribuídos). </li></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  100. 100. Release Line Pattern Copyright © 2010 Misael Santos Gestão de Configuração de Software
  101. 101. Release Line Pattern <ul><li>Mantenha as versões liberadas sem interferir no desenvolvimento corrente estabelecendo uma “Linha de Release”. </li></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  102. 102. Release Line Pattern <ul><li>Branch Before Release </li></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  103. 103. Release-Prep Codeline Pattern Copyright © 2010 Misael Santos Gestão de Configuração de Software
  104. 104. Release-Prep Codeline Pattern <ul><li>Estabeleca uma linha de desenvolvimento para uma nova liberação, permitindo que novos trabalhos continuem nas linhas de desenvolvimento ativas, fazendo o trabalho de estabilização sobre uma “Linha de Desenvolvimento de Preparação para Release”. </li></ul><ul><li>Ao invés de criar uma branch depois da release, crie uma branch antes da release, permitindo que os desenvolvedores continuem trabalhando na Mainline . </li></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  105. 105. Release-Prep Codeline Pattern <ul><li>Questões não resolvidas: </li></ul><ul><ul><li>Se apenas algumas pessoas estão trabalhando na próxima release, inicie uma Task Branch para o novo trabalho </li></ul></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  106. 106. Task Branch Pattern Copyright © 2010 Misael Santos Gestão de Configuração de Software
  107. 107. Task Branch Pattern <ul><li>Tenha parte da sua equipe executando uma tarefa sem forçar que o resto da equipe trabalhe em torno da mesma, usando uma “Task Branch”. </li></ul><ul><li>Crie uma ramificação para cada atividade que possa causar mudanças significativas sobre o sistema. </li></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  108. 108. Outros Padrões para GCS <ul><li>Merge Early and Often </li></ul><ul><ul><li>Merge changes from a branch to its codeline as soon as the changes on the branch are completed and tested </li></ul></ul><ul><li>Bill of Materials </li></ul><ul><ul><li>You can successfully build the software system today and need to be able to build the same version in the future </li></ul></ul><ul><li>Reproducible Build </li></ul><ul><ul><li>You’ve built the software system and created a build process, and need to know that it can be reproduced </li></ul></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  109. 109. Outros Padrões para GCS <ul><li>Shared Object Cache </li></ul><ul><ul><li>Allows developers to perform local builds based on extracted files and a common set of object files. </li></ul></ul><ul><li>Shared-Source Escalation </li></ul><ul><ul><li>Maintain and support a common set of code used by more than one project. </li></ul></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  110. 110. Outros Padrões para GCS <ul><li>Branching Policy Patterns </li></ul><ul><ul><li>Padrões descrevendo políticas comportamentais para estabelecer ou preservar as características físicas ou conceituais de uma linha de desenvolvimento </li></ul></ul><ul><li>Branch Creation Patterns </li></ul><ul><ul><li>Padrões descrevendo quando criar um novo tipo de branch </li></ul></ul><ul><li>Branch Structuring Patterns </li></ul><ul><ul><li>Padrões descrevendo as colaborações entre duas ou mais branches </li></ul></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  111. 111. SCM Patterns <ul><li>Os padrões podem não representar a melhor solução para o problema, mas apresentam uma solução comprovada para o problema em um determinado contexto, dentre muitas outras que podem existir. </li></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software
  112. 112. Referências <ul><li>AMBLER, S. W. Examining Agile Manifesto , Disponível em: http://www.ambysoft.com/essays/agileManifesto.html </li></ul><ul><li>APPLETON, B. Agile Configuration Management Enviroments , Chicago SPIN, Chicago, 2004. </li></ul><ul><li>BECK K. et al., Manifesto for Agile Software Development , Disponível em: http://agilemanifesto.org/ </li></ul><ul><li>MILFONT, C. Agile Software Development: Princípios, valores e práticas aplicados em um estudo de caso , Sun Tech Days 2006, Fortaleza, CE, 2006. </li></ul><ul><li>Improve IT, Extreme Programming , Disponível em: http://www.improveit.com.br/ </li></ul>Copyright © 2010 Misael Santos Gestão de Configuração de Software

×