SlideShare uma empresa Scribd logo
Gestão de Configuração de Software -  GCS Ágil - ES06 – Especialização em Engenharia de Software Prof.: Misael Santos (misael@gmail.com) Ago/2010
Agenda Desenvolvimento Ágil Manifesto Ágil Práticas Metodologias Ágeis XP Integração Contínua GCS Ágil Padrões de Software Conceitos Tipos de Padrões SCM Patterns Copyright © 2010 Misael Santos Gestão de Configuração de Software
Desenvolvimento Ágil O peso dos processos de software Busca pela formalização das práticas mais próximas do real Pensamento Nike (Just-Do-It) Copyright © 2010 Misael Santos Gestão de Configuração de Software
Desenvolvimento Ágil Origem dos métodos ágeis Anos 80 (Code-and-Fix) Processos unificados (UP) Processos seqüenciais e burocráticos Projeto C3 (Chrysler) Manifesto ágil Agile Alliance (http://www.agilealliance.org/) Copyright © 2010 Misael Santos Gestão de Configuração de Software
Manifesto Ágil “ Estamos evidenciando maneiras melhores de desenvolver software fazendo-o nós mesmos e ajudando outros a fazê-lo.  Através desse trabalho, passamos a valorizar: Software em funcionamento   mais que  documentação abrangente Indivíduos e interação  mais que   processos e ferramentas; Colaboração com o cliente   mais que  negociação de contratos; Responder a mudanças  mais que  seguir um plano. Ou seja, mesmo tendo valor os itens à direita, valorizamos mais os itens à esquerda.” Copyright © 2010 Misael Santos Gestão de Configuração de Software
Métodos Ágeis Extreme Programming  Scrum OpenUp Pragmatic Programming Feature Driven Development (FDD) Crystal Adaptive Software Development Dynamic Systems Development Method (DSDM) Agile Lean Development (LD) Copyright © 2010 Misael Santos Gestão de Configuração de Software
Extreme Programming (XP) Copyright © 2010 Misael Santos Gestão de Configuração de Software
Extreme Programming (XP) É formado por um conjunto de valores, princípios e práticas 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 A preocupação não é com qualidade e sim com a saúde do sistema (Kent Beck) Copyright © 2010 Misael Santos Gestão de Configuração de Software
Extreme Programming (XP) Humanidade Economia Benefício mútuo Similaridade própria Progresso Diversidade Reflexão Fluxo Oportunidade Redundância Falha Qualidade Passos-de-bebê Aceite Responsabilidade Comunicação Simplicidade Feedback Coragem Respeito Princípios Valores Copyright © 2010 Misael Santos Gestão de Configuração de Software
Extreme Programming (XP) Práticas Primárias (1) Ambiente Informativo Build de Dez Minutos Ciclo Semanal Ciclo Trimestral Desenvolvimento Orientado a Testes (TDD) Design Incremental Copyright © 2010 Misael Santos Gestão de Configuração de Software
Extreme Programming (XP) Práticas Primárias (2) Equipe Integral Folga Histórias Integração Contínua Programação em Par Sentar-se Junto Trabalho Energizado Copyright © 2010 Misael Santos Gestão de Configuração de Software
Extreme Programming (XP) Copyright © 2010 Misael Santos Gestão de Configuração de Software
Extreme Programming (XP) Práticas Corolárias (1) Análise da Raiz do Problema Base de Código Unificada Código Coletivo Código e Testes Continuidade da Equipe Contrato de Escopo Negociável Envolvimento Real do Cliente Equipes que Encolhem Implantação Diária Implantação Incremental Copyright © 2010 Misael Santos Gestão de Configuração de Software
Extreme Programming (XP) Práticas Corolárias (2) Pagar Por Uso Metáforas Refatoração ( Refactoring ) Padrões de Projeto ( Design Patterns ) 40 horas semanais Jogo do Planejamento Reuniões em Pé Padrões de Codificação Copyright © 2010 Misael Santos Gestão de Configuração de Software
Extreme Programming (XP) Agile Change Management Não devemos tratar o processo de  gestão de mudanças  como processo de  prevenção de mundaças . Aceitar bem as mudanças nos requisitos, mesmo em fases avançadas do projeto. Copyright © 2010 Misael Santos Gestão de Configuração de Software
Integração Contínua 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. Copyright © 2010 Misael Santos Gestão de Configuração de Software
Integração Contínua Integração automatizada Testes automatizados Sempre atualizar o workspace e testar antes do “Checkin” Realizar “Checkin” com frequência Copyright © 2010 Misael Santos Gestão de Configuração de Software
Integração Contínua Objetivo 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. Copyright © 2010 Misael Santos Gestão de Configuração de Software
Integração Contínua Integração Contínua Síncrona 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.  Copyright © 2010 Misael Santos Gestão de Configuração de Software
Integração Contínua Integração Contínua Síncrona  - Passos Assegurar que o projeto  compila  e todos os  testes  automatizados executam com sucesso Conquistar a vez de integrar Criar um  backup  do projeto na estação de trabalho Fazer  update  do projeto Assegurar que o software  continua compilando  e os  testes  executam com sucesso Fazer  commit  do projeto Apagar o diretório do projeto na estação de trabalho e fazer  checkout Assegurar que o software  continua compilando  e que os  testes  executam com sucesso Copyright © 2010 Misael Santos Gestão de Configuração de Software
Integração Contínua Integração Contínua Assíncrona Projetos nos quais os desenvolvedores não trabalhem juntos em uma mesma sala. Em tais casos torna-se difícil ou impossível garantir que apenas um desenvolvedor irá integrar de cada vez.  Copyright © 2010 Misael Santos Gestão de Configuração de Software
Integração Contínua Integração Contínua Assíncrona – Passos Assegurar que o projeto  compila  e todos os  testes  automatizados executam com sucesso Criar um  backup  do projeto na estação de trabalho Fazer update do projeto Assegurar que o software  continua compilando  e os  testes  executam com sucesso Fazer  commit  do projeto Realizar integração automatizada Copyright © 2010 Misael Santos Gestão de Configuração de Software
Integração Contínua Ferramentas: Hudson Continuum (Apache) CruiseControl LuntBuild Bamboo (Atlassian) Copyright © 2010 Misael Santos Gestão de Configuração de Software
Integração Contínua Ex: Continuum + Java + Maven + CVS Copyright © 2010 Misael Santos Gestão de Configuração de Software
Copyright © 2010 Misael Santos Gestão de Configuração de Software
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
GCS Ágil “ GCS Ágil” não é um oxímoro? Muitos consideram GCS como um processo pesado que impede o “trabalho real" do desenvolvimento Para muitos projetos GCS funciona bem Alguns compensam evitando ferramentas e práticas que fazem com que processo de GCS seja inerentemente limitante. Outros querem controlar e ter tantos processos de GCS que chegam a prejudicar a eles mesmos. Copyright © 2010 Misael Santos Gestão de Configuração de Software
Desperdícios no Desenvolvimento de Software Funcionalidades Extra/Não-utilizadas  (Overproduction) Trabalho parcialmente desenvolvido não liberado para a produção  (Inventory) Artefatos Intermediários/Não-Utilizados  (Extra Processing) Busca de Informações  (Motion) Defeitos não capturados pelos testes/revisões  (Defects) Espera (incluindo Espera do Cliente) Copyright © 2010 Misael Santos Gestão de Configuração de Software
O que é GCS Ágil? A aplicação pragmática de: Práticas e Princípios da Gestão de Configuração de acordo com os Valores Ágeis usando o “Pensamento Enxuto” ( Lean Thinking ) para atender as necessidades de Negócios! Copyright © 2010 Misael Santos Gestão de Configuração de Software
Requisitos da GCS Ágil Servir aos profissionais e não vice-versa! Derrubar as paredes entre a GCS & desenvolvedores para que o time todo trabalhe junto para entregar software de qualidade utilizando uma abordagem ágil Responder às mudanças ao invés de prevení-las Rastrear e coordenar o desenvolvimento ao invés de tentar controlar os desenvolvedores Se esforçar para ser transparente e automatizar o máximo possível Copyright © 2010 Misael Santos Gestão de Configuração de Software
Características da GCS Ágil GCS é uma responsabilidade do time inteiro Documentação & Rastreabilidade Enxutas Gerenciamento Agressivo de Dependências Feedback Contínuo e Visível  Sobre a Qualidade, Estabilidade e Integridade Coordenação e automação frequente + rápida Copyright © 2010 Misael Santos Gestão de Configuração de Software
Respondendo à Mudanças Gerenciar as espectativas dos interessados com comunicação próxima e poucas fronteiras  Tomadores de decisões devem estar disponíveis & acessíveis para dar respostas rápidas No início de cada iteração espectativas e prioridades são (re)definidas e (re)calibradas CCB’s devem ser chamados de “encontros de replanejamento” para evitar o estigma de tentar “controlar” as mudanças Trabalhar somente com  features  da iteração corrente Copyright © 2010 Misael Santos Gestão de Configuração de Software
Respondendo à Mudanças A autorização para os desenvolvedores realizarem mudanças precisa ser instantânea: 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) 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 Nenhuma permissão adicional deve ser requerida para a refatoração ( refactoring ) Copyright © 2010 Misael Santos Gestão de Configuração de Software
Automatização Apropriada Eventos automatizados que ocorrem frequentemente mudam raramente e requerem consistência. Eventos relacionados a builds, publicação ( deployment ), releases formais, testes automatizados, builds de integração Por que?:  Minimizar Artefatos & Espera Documentar esses procedimentos via scripts, aumenta a produtividade no desenvolvimento e diminui custos de administração Copyright © 2010 Misael Santos Gestão de Configuração de Software
As Três Builds Private Developer Build Fornece uma forma consistente para o desenvolvedor construir o software ( build ) nos confins da sua área de desenvolvimento privada Team Integration Build Sincronizar a equipe fornecendo feedback sobre a qualidade e a integridade Formal Release Build Criar pacotes implantáveis Por que? : Produtividade, previsibilidade, documentação, habilidade para a atividade de build sem comprometer a GC ou a qualidade. Copyright © 2010 Misael Santos Gestão de Configuração de Software
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
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
GCS Ágil e o Manifesto Ágil Valor 1 Individuals and Interactions over Processes and Tools Processos e ferramentas de GCS devem suportar a maneira com que você trabalha e não o contrário. “ Processos não escrevem software.  Pessoas  sim!” Copyright © 2010 Misael Santos Gestão de Configuração de Software
GCS Ágil e o Manifesto Ágil Valor 2 Working Software over Comprehensive Documentation Minimizar artefatos intermediários “ Simple-size it!” GCS pode automatizar as políticas e processos de desenvolvimento com conhecimento executável sobre o conhecimento documentado “ Automatização Apropriada” Copyright © 2010 Misael Santos Gestão de Configuração de Software
GCS Ágil e o Manifesto Ágil Valor 3 Customer Collaboration over Contract Negotiation A GCS deve facilitar a comunicação entre os interessados e ajudar a gerenciar as espectativas Copyright © 2010 Misael Santos Gestão de Configuração de Software
GCS Ágil e o Manifesto Ágil Valor 4 Responding to Change over Following a Plan GC diz respeito a facilitar mudanças, não prevení-las “ Mudanças em requisitos em fases adiantadas do ciclo de vida são vantagens competitivas SE você consegue agir sobre elas!” –  Mary Poppendieck “ Projetos ágeis não são controlados em conformidade com o planejamento mas em conformidade com valores do negócio.” 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.” –  James Highsmith “ A Mudança  não  é o inimigo – estagnação é! Não tente prevenir mudanças! Se planeje para isso!” Copyright © 2010 Misael Santos Gestão de Configuração de Software
Patterns Soluções Comprovadas Copyright © 2010 Misael Santos Gestão de Configuração de Software
Padrões de Software O que é um padrão? Um padrão é uma  solução  documentada para um  problema   recorrente  em um determinado contexto . Padrão ( Pattern )  ≠  Padronização ( Standard ) Copyright © 2010 Misael Santos Gestão de Configuração de Software
Padrões de Software Benefícios Aumentar a reutilização Documentar soluções Passar conhecimento para iniciantes Fornecer um vocabulário comum entre os desenvolvedores Aumentar a qualidade do produto ... Copyright © 2010 Misael Santos Gestão de Configuração de Software
Padrões de Software Padrões x Coleções de Padrões Padrões isolados resolvem problemas pontuais Conjuntos de padrões podem construir um sistema inteiro, preenchendo todas as lacunas de um contexto inteiro Copyright © 2010 Misael Santos Gestão de Configuração de Software
Tipos de Padrões de Software (1) Atualmente existem padrões de software para as mais diversas áreas da Engenharia de Software Existem diversas formas de classificar os Padrões de Software. Copyright © 2010 Misael Santos Gestão de Configuração de Software
Tipos de Padrões de Software (2) Quanto à fase de desenvolvimento em o padrão é aplicado Padrões de Análise ( Analisys Patterns ) Padrões de Projeto ( Design Patterns ) Erich Gamma (GoF) Padrões de Implementação ( Idioms ) Padrões de Testes ( Test Patterns ) .... Copyright © 2010 Misael Santos Gestão de Configuração de Software
Tipos de Padrões de Software (3) Quanto à Tecnologia Padrões J2EE ( Core J2EE Patterns ) Padrões para Web Padrões para XML ( XML Patterns ) Padrões para Bancos de Dados Padrões para Ajax ( Ajax Patterns ) Padrões para Interface Gráfica ( GUI Patterns ) ... Copyright © 2010 Misael Santos Gestão de Configuração de Software
Tipos de Padrões de Software (4) Quanto de Processo/Metologias  Padrões de Processo ( Process Patterns ) Padrões de Gestão de Configuração ( SCM Patterns ) Padrões de Segurança ( Security Patterns ) ... Copyright © 2010 Misael Santos Gestão de Configuração de Software
Formato dos Padrões (1) Componentes básicos de um padrão Nome Contexto A Descrição do Problema Solução Copyright © 2010 Misael Santos Gestão de Configuração de Software
Formato dos Padrões (2) Existem diversos formatos que podem conter Forças Aplicabilidade Usos Conhecidos Consequências Padrões Relacionados Intenção Racionalidade ... Copyright © 2010 Misael Santos Gestão de Configuração de Software
SCM Patterns Software Configuration Management Patterns: Effective Teamwork, Practical Integration Copyright © 2010 Misael Santos Gestão de Configuração de Software
SCM Patterns Consiste em uma Linguagem de Padrões para Gestão de Configuração de Software Copyright © 2010 Misael Santos Gestão de Configuração de Software
SCM Patterns Consiste em uma  Linguagem de Padrões  para Gestão de Configuração de Software Conjunto de Padrões que se unem  para formar um “sistema”. Copyright © 2010 Misael Santos Gestão de Configuração de Software
SCM Patterns Copyright © 2010 Misael Santos Gestão de Configuração de Software
SCM Patterns Objetivo 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.  Copyright © 2010 Misael Santos Gestão de Configuração de Software
SCM Patterns Princípio: Usar a Gestão de Configuração, especialmente o controle de versões, como parte de um ambiente de  desenvolvimento ágil . Copyright © 2010 Misael Santos Gestão de Configuração de Software
SCM Patterns Workspace-Related Patterns Private Workspace Repository Private System Build Integration Build Third Party Codeline Task Level Commit Smoke Test Unit Test Regression Test Copyright © 2010 Misael Santos Gestão de Configuração de Software
SCM Patterns Codeline-Related Patterns Mainline Active Development Line Codeline Policy Private Versions Release Line Release-Prep Code Line Task Branch Copyright © 2010 Misael Santos Gestão de Configuração de Software
Mainline Pattern Copyright © 2010 Misael Santos Gestão de Configuração de Software
Mainline Pattern Minimizar o merge e manter um número gerenciável de linhas de desenvolvimento ativas desenvolvendo sobre a Mainline. Copyright © 2010 Misael Santos Gestão de Configuração de Software
Mainline Pattern O merge pode virar uma bagunça... Copyright © 2010 Misael Santos Gestão de Configuração de Software
Mainline Pattern Solução Tenha todas as outras linhas de desenvolvimento frequentemente combinadas à linha de desenvolvimento principal Copyright © 2010 Misael Santos Gestão de Configuração de Software
Mainline Pattern Copyright © 2010 Misael Santos Gestão de Configuração de Software
Mainline Pattern Questões não resolvidas: Como manter a “Mainline” utilizável quando muitas pessoas estão trabalhando nela? ( Active Development Line ) Copyright © 2010 Misael Santos Gestão de Configuração de Software
Active Development Line Pattern Copyright © 2010 Misael Santos Gestão de Configuração de Software
Active Development Line Pattern 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”. Copyright © 2010 Misael Santos Gestão de Configuração de Software
Active Development Line Pattern Questões não resolvidas: Como identificar a linha de desenvolvimento estável? ( Codeline Policy ) Como isolar o trabalho dos desenvolvedores da “Linha de Desenvolvimento Ativa” ( Private Workspace )? … Copyright © 2010 Misael Santos Gestão de Configuração de Software
Private Workspace Pattern Copyright © 2010 Misael Santos Gestão de Configuração de Software
Private Workspace Pattern Prevenir que questões de integração distraiam você e que suas mudanças causem outros problemas desenvolvendo em uma “Área de Trabalho Privada”. Copyright © 2010 Misael Santos Gestão de Configuração de Software
Private Workspace Pattern Questões não resolvidas: Evitar inserir erros no sistema ao consolidar suas alterações no repositório ( Private System Build ) Outros padrões relacionados: Repository Third Party Codeline Copyright © 2010 Misael Santos Gestão de Configuração de Software
Repository Pattern Copyright © 2010 Misael Santos Gestão de Configuração de Software
Repository Pattern Configurar um novo workspace populando-o a partir de um “Repositório” que contém tudo o que você precisa. Copyright © 2010 Misael Santos Gestão de Configuração de Software
Repository Pattern Copyright © 2010 Misael Santos Gestão de Configuração de Software
Repository Pattern Questões não resolvidas: Organizar código de terceiros utilizando o  Third-Party Codeline. Copyright © 2010 Misael Santos Gestão de Configuração de Software
Private System Build Pattern Copyright © 2010 Misael Santos Gestão de Configuração de Software
Private System Build Pattern 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. Copyright © 2010 Misael Santos Gestão de Configuração de Software
Private System Build Pattern Semelhante ao  Integration Build , todavia alguns detalhes relacionados à release e empacotamento podem ser omitidos. Deve incluir todas as dependências Deve incluir todos os componentes dependentes da mudança Copyright © 2010 Misael Santos Gestão de Configuração de Software
Private System Build Pattern Questões não resolvidas Como saber se você não está inserindo problemas à funcionalidade? ( Smoke Test Pattern ) … Copyright © 2010 Misael Santos Gestão de Configuração de Software
Integration Build Pattern Copyright © 2010 Misael Santos Gestão de Configuração de Software
Integration Build Pattern Garanta que o seu código base sempre gere builds confiáveis fazendo uma Integração (Integration Build) periodicamente. Copyright © 2010 Misael Santos Gestão de Configuração de Software
Integration Build Pattern Copyright © 2010 Misael Santos Gestão de Configuração de Software
Integration Build Pattern Questões não resolvidas: Como garantir que a build de integração é utilizável? ( Smoke Test, Regression Test ) Copyright © 2010 Misael Santos Gestão de Configuração de Software
Third Party Codeline Pattern Copyright © 2010 Misael Santos Gestão de Configuração de Software
Third Party Codeline Pattern Administre o código de terceiros usando uma “Linha de Desenvolvimento de Terceiros”. Copyright © 2010 Misael Santos Gestão de Configuração de Software
Task Level Commit Pattern Copyright © 2010 Misael Santos Gestão de Configuração de Software
Task Level Commit Pattern Quanto trabalho deve ser feito entre cada submissão ao controle de versões? Quanto você deve esperar para commitar suas alterações? Organize as mudanças em código-fonte por unidade de trabalho “orientadas a tarefas”. Copyright © 2010 Misael Santos Gestão de Configuração de Software
Codeline Policy Pattern Copyright © 2010 Misael Santos Gestão de Configuração de Software
Codeline Policy Pattern 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. Copyright © 2010 Misael Santos Gestão de Configuração de Software
Smoke Test Pattern Copyright © 2010 Misael Santos Gestão de Configuração de Software
Smoke Test Pattern Garanta que o sistema ainda funcione depois de suas alterações executando o “Smoke Test” Teste  não  exaustivo sobre as  funcionalidades básicas  da aplicação Verificar se a aplicação não “quebra” de forma óbvia Copyright © 2010 Misael Santos Gestão de Configuração de Software
Unit Test Pattern Copyright © 2010 Misael Santos Gestão de Configuração de Software
Unit Test Pattern Verifique que um módulo ainda funciona depois das suas alterações executando um “Teste Unitário”. Copyright © 2010 Misael Santos Gestão de Configuração de Software
Unit Test Pattern Testes unitários: Deve ser automático É isolado de outros testes Testa o contrato do elemento Deve ser simples de usar: durante a codificação antes de realizar checkin após atualizar o workspace Copyright © 2010 Misael Santos Gestão de Configuração de Software
Regression Test Pattern Copyright © 2010 Misael Santos Gestão de Configuração de Software
Regression Test Pattern Garanta que código existente não piore quando implementadas melhorias executando um “Teste de Regressão” Deve ser executado para toda build de integração Smoke Tests  não testam o software exaustivamente Testes unitários ( Unit Tests ) testam as partes individualmente Copyright © 2010 Misael Santos Gestão de Configuração de Software
Regression Test Pattern Execute os testes de regressão no sistema quando você quer garantir uma certa estabilidade a ele Crie testes de regressão de casos de testes que falharam no passado (relatos de verificações de qualidade, relatos do cliente) Copyright © 2010 Misael Santos Gestão de Configuração de Software
Private Versioning Pattern Copyright © 2010 Misael Santos Gestão de Configuração de Software
Private Versioning Pattern 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. Use uma  branch , um repositório local, ferramentas próprias (níveis de promoção, cv distribuídos). Copyright © 2010 Misael Santos Gestão de Configuração de Software
Release Line Pattern Copyright © 2010 Misael Santos Gestão de Configuração de Software
Release Line Pattern Mantenha as versões liberadas sem interferir no desenvolvimento corrente estabelecendo uma “Linha de Release”. Copyright © 2010 Misael Santos Gestão de Configuração de Software
Release Line Pattern Branch Before Release Copyright © 2010 Misael Santos Gestão de Configuração de Software
Release-Prep Codeline Pattern Copyright © 2010 Misael Santos Gestão de Configuração de Software
Release-Prep Codeline Pattern 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”. Ao invés de criar uma  branch  depois da release, crie uma  branch  antes da release, permitindo que os desenvolvedores continuem trabalhando na  Mainline . Copyright © 2010 Misael Santos Gestão de Configuração de Software
Release-Prep Codeline Pattern Questões não resolvidas: Se apenas algumas pessoas estão trabalhando na próxima release, inicie uma  Task Branch  para o novo trabalho Copyright © 2010 Misael Santos Gestão de Configuração de Software
Task Branch Pattern Copyright © 2010 Misael Santos Gestão de Configuração de Software
Task Branch Pattern 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”. Crie uma ramificação para cada atividade que possa causar  mudanças significativas  sobre o sistema. Copyright © 2010 Misael Santos Gestão de Configuração de Software
Outros Padrões para GCS Merge Early and Often Merge changes from a branch to its codeline as soon as the changes on the branch are completed and tested Bill of Materials You can successfully build the software system today and need to be able to build the same version in the future Reproducible Build You’ve built the software system and created a build process, and need to know that it can be reproduced Copyright © 2010 Misael Santos Gestão de Configuração de Software
Outros Padrões para GCS Shared Object Cache Allows developers to perform local builds based on extracted files and a common set of object files. Shared-Source Escalation Maintain and support a common set of code used by more than one project. Copyright © 2010 Misael Santos Gestão de Configuração de Software
Outros Padrões para GCS Branching Policy Patterns Padrões descrevendo políticas comportamentais para estabelecer ou preservar  as características físicas ou conceituais de uma linha de desenvolvimento Branch Creation Patterns Padrões descrevendo quando criar um novo tipo de branch Branch Structuring Patterns Padrões descrevendo as colaborações entre duas ou mais branches Copyright © 2010 Misael Santos Gestão de Configuração de Software
SCM Patterns 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. Copyright © 2010 Misael Santos Gestão de Configuração de Software
Referências AMBLER, S. W.  Examining Agile Manifesto , Disponível em: http://www.ambysoft.com/essays/agileManifesto.html APPLETON, B.  Agile Configuration Management Enviroments , Chicago SPIN, Chicago, 2004. BECK K. et al.,   Manifesto for Agile Software Development ,  Disponível em: http://agilemanifesto.org/ MILFONT, C.   Agile Software Development: Princípios, valores e práticas aplicados em um estudo de caso , Sun Tech Days 2006, Fortaleza, CE, 2006. Improve IT,  Extreme Programming , Disponível em: http://www.improveit.com.br/ Copyright © 2010 Misael Santos Gestão de Configuração de Software

Mais conteúdo relacionado

PPT
GCS - Aula 06 - Gestão de Mudanças
PPT
GCS - Aula 07 - Sistemas de Controle de Versões
PPT
GCS - Aula 01 - Introdução
KEY
Continuous delivery
PPTX
04 Unified process
PDF
Plano do projeto de software SIGEM - Sistema de gestão de materiais
PDF
Gerência de configuração ágil
PDF
Phprs meetup - deploys automatizados com gitlab
GCS - Aula 06 - Gestão de Mudanças
GCS - Aula 07 - Sistemas de Controle de Versões
GCS - Aula 01 - Introdução
Continuous delivery
04 Unified process
Plano do projeto de software SIGEM - Sistema de gestão de materiais
Gerência de configuração ágil
Phprs meetup - deploys automatizados com gitlab

Mais procurados (20)

PDF
Estudo de ferramentas em Software Livre para gestão ágil de projetos de desen...
PPTX
Processos de Desenvolvimento de Software - teoria e prática
PPT
Tees Final
PDF
Introdução à Qualidade e Testes Ágeis de Software
PDF
[ServiceNow] Governança das Instâncias
PPT
Academia do Arquiteto - Implantando A.L.M. em uma semana!
PPTX
Ferramentas Livres para a Gestão de Projetos Ágeis com Scrum
PDF
Implantacao de Software
PDF
Arquitetura de Software para a Entrega Continua
PPTX
Tendências e Dicas para o Desenvolvimento de Software
PDF
Roteiro instalação p6 (8.3)
PDF
Cinco motivos para você não adotar metodologias ágeis - Rafael Prikladnicki F...
PDF
[ServiceNow] Governança das Instâncias - 3ª versão
PDF
ISO IEC 12207
DOCX
Intalação primavera
PDF
Introdução à Programação Extrema (Extreme Programming - XP)
PPTX
DevOps - Melhores práticas na plataforma microsoft
PDF
SRE - Esperança não é uma estratégia
PPTX
Modelo Incremental - Engenharia de Software
PPTX
Sistemas de controle de versão
Estudo de ferramentas em Software Livre para gestão ágil de projetos de desen...
Processos de Desenvolvimento de Software - teoria e prática
Tees Final
Introdução à Qualidade e Testes Ágeis de Software
[ServiceNow] Governança das Instâncias
Academia do Arquiteto - Implantando A.L.M. em uma semana!
Ferramentas Livres para a Gestão de Projetos Ágeis com Scrum
Implantacao de Software
Arquitetura de Software para a Entrega Continua
Tendências e Dicas para o Desenvolvimento de Software
Roteiro instalação p6 (8.3)
Cinco motivos para você não adotar metodologias ágeis - Rafael Prikladnicki F...
[ServiceNow] Governança das Instâncias - 3ª versão
ISO IEC 12207
Intalação primavera
Introdução à Programação Extrema (Extreme Programming - XP)
DevOps - Melhores práticas na plataforma microsoft
SRE - Esperança não é uma estratégia
Modelo Incremental - Engenharia de Software
Sistemas de controle de versão
Anúncio

Destaque (20)

PDF
Controle de Versão e Monitoramento de Projetos com SVN + WebSVN + StatSVN
PDF
Wine.com.br - De zero a 300 milhões de faturamento na mesma plataforma
PDF
QConSP: Vivenciando dev ops para além da automação de infraestrutura
PDF
Controle de versão com GIT
PPT
GCS - Aula 02 - Conceitos Principais
PDF
Apresentação do SAEO na Administração Pública
PDF
Workshop sistema de versionamento de código - git
PDF
[Mini-curso] Sistema de Controle de Versão
PPT
Joomla!Day Brasil 2008 - FláVio Kubota - Gsoc Version Control
PDF
Introdução ao Sistema de Controle de Versão
PPTX
Transformando a experiência dos times de DEV, OPS & BIZ nos Sistemas Financei...
PDF
Controle de Mudanças com GitHub
PDF
Vivenciando dev ops para além da automação de infraestrutura 2.0
PDF
Alm open source
PDF
Controle de versão com Git e BitBucket
PDF
Android UI Fundamentals part 1
PDF
O futuro dos WebApps com AngularJS 2.0
PPTX
Mini aula-sublime-text-git-e-github
PDF
Controle de versão utilizando git
PPTX
Sistemas de Controle de Versão
Controle de Versão e Monitoramento de Projetos com SVN + WebSVN + StatSVN
Wine.com.br - De zero a 300 milhões de faturamento na mesma plataforma
QConSP: Vivenciando dev ops para além da automação de infraestrutura
Controle de versão com GIT
GCS - Aula 02 - Conceitos Principais
Apresentação do SAEO na Administração Pública
Workshop sistema de versionamento de código - git
[Mini-curso] Sistema de Controle de Versão
Joomla!Day Brasil 2008 - FláVio Kubota - Gsoc Version Control
Introdução ao Sistema de Controle de Versão
Transformando a experiência dos times de DEV, OPS & BIZ nos Sistemas Financei...
Controle de Mudanças com GitHub
Vivenciando dev ops para além da automação de infraestrutura 2.0
Alm open source
Controle de versão com Git e BitBucket
Android UI Fundamentals part 1
O futuro dos WebApps com AngularJS 2.0
Mini aula-sublime-text-git-e-github
Controle de versão utilizando git
Sistemas de Controle de Versão
Anúncio

Semelhante a GCS - Aula 09 - GCS Ágil (20)

PDF
Programacao Extrema
PPT
GCS - Aula 03 - GCS x RUP
PPTX
XP - Extreme Programming
PDF
Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
PPT
eXtreme Programming
PDF
Métodos Ágeis - Aula02
PPT
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)
PDF
DEV-OPS para teste de software
PDF
Palestra DevOps para Teste de Software
ODP
Da Gestão 1.0 A Gestão 2.0
PPTX
Cloud Computing e Integração Contínua com o Windows Azure
PDF
WBMA2013 - Método Ágil para desenvolvimento de software confiável
PDF
ld0mg1hrlhzbyvgfiyyq-signature-d9919623d100cd87ad7553e4c50163aa9329a439464540...
PPTX
Integração contínua - Prática de desenvolvimento
PPTX
Integração Contínua
PDF
Design System: Dominando o Design at Scale
PPTX
Automatização de Ambientes CI & CD & DevOps
DOCX
Artigo corrigido
PPT
Desmistificando Agile & Scrum
PPTX
Metodologias Ágeis de Desenvolvimento de Software
Programacao Extrema
GCS - Aula 03 - GCS x RUP
XP - Extreme Programming
Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
eXtreme Programming
Métodos Ágeis - Aula02
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)
DEV-OPS para teste de software
Palestra DevOps para Teste de Software
Da Gestão 1.0 A Gestão 2.0
Cloud Computing e Integração Contínua com o Windows Azure
WBMA2013 - Método Ágil para desenvolvimento de software confiável
ld0mg1hrlhzbyvgfiyyq-signature-d9919623d100cd87ad7553e4c50163aa9329a439464540...
Integração contínua - Prática de desenvolvimento
Integração Contínua
Design System: Dominando o Design at Scale
Automatização de Ambientes CI & CD & DevOps
Artigo corrigido
Desmistificando Agile & Scrum
Metodologias Ágeis de Desenvolvimento de Software

Último (20)

PPTX
SISTEMA DE INFORMAÇÃO EM SAÚDE_UEPA.pptx
PPTX
Curso de Java 14 - (Explicações Adicionais (Classes Abstrata e Interface)).pptx
PPTX
Curso de Java 15 - (Uso de Servlets (Entendendo a Estrutura)).pptx
PPTX
Aula 18 - Manipulacao De Arquivos python
PPTX
Curso de Java 9 - (Threads) Multitarefas.pptx
PPTX
Curso de Java 11 - (Serializable (Serialização de Objetos)).pptx
PPTX
Curso de Java 5 - (Strings) Tipo de Dados.pptx
PPTX
Sistemas de Teconologias da Informação em Saúde.pptx
PPTX
21 - Lógica de Programação com Portugol.pptx
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PPTX
Curso de Java 12 - (JDBC, Transation, Commit e Rollback).pptx
PPTX
Curso de Java 10 - (IO Manipulação de Arquivos).pptx
PPTX
Curso de Java 1 - (Introdução Geral).pptx
PPT
Sistemas de Informação em Saúde Aplicada.ppt
PPTX
Curso de Java 2 - (PrimeiroPrograma, Variáveis, Tipos e Operadores.pptx
PDF
tutor eletronico para seguranca de bebes e criancas
PDF
Apple Pippin Uma breve introdução. - David Glotz
PPTX
Curso de Java 7 - (ArrayList, Collections,(Set, List, Queue, Map)).pptx
PPTX
Curso de Java 13 - (JavaEE (JSP e Servlets)).pptx
PPTX
Curso de Java 3 - (Estruturas de Controle, Decisão, Loop, Procedimento).pptx
SISTEMA DE INFORMAÇÃO EM SAÚDE_UEPA.pptx
Curso de Java 14 - (Explicações Adicionais (Classes Abstrata e Interface)).pptx
Curso de Java 15 - (Uso de Servlets (Entendendo a Estrutura)).pptx
Aula 18 - Manipulacao De Arquivos python
Curso de Java 9 - (Threads) Multitarefas.pptx
Curso de Java 11 - (Serializable (Serialização de Objetos)).pptx
Curso de Java 5 - (Strings) Tipo de Dados.pptx
Sistemas de Teconologias da Informação em Saúde.pptx
21 - Lógica de Programação com Portugol.pptx
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
Curso de Java 12 - (JDBC, Transation, Commit e Rollback).pptx
Curso de Java 10 - (IO Manipulação de Arquivos).pptx
Curso de Java 1 - (Introdução Geral).pptx
Sistemas de Informação em Saúde Aplicada.ppt
Curso de Java 2 - (PrimeiroPrograma, Variáveis, Tipos e Operadores.pptx
tutor eletronico para seguranca de bebes e criancas
Apple Pippin Uma breve introdução. - David Glotz
Curso de Java 7 - (ArrayList, Collections,(Set, List, Queue, Map)).pptx
Curso de Java 13 - (JavaEE (JSP e Servlets)).pptx
Curso de Java 3 - (Estruturas de Controle, Decisão, Loop, Procedimento).pptx

GCS - Aula 09 - GCS Ágil

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