• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
GCS - Aula 09 - GCS Ágil
 

GCS - Aula 09 - GCS Ágil

on

  • 1,905 views

GCS - Aula 09 - GCS Ágil...

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.

Statistics

Views

Total Views
1,905
Views on SlideShare
1,905
Embed Views
0

Actions

Likes
1
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    GCS - Aula 09 - GCS Ágil GCS - Aula 09 - GCS Ágil Presentation Transcript

    • 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