gerência de configuração: ramificação e integraçãoleomurta/courses/2011.1/gc/aula5.pdf ·...
Post on 29-Sep-2020
3 Views
Preview:
TRANSCRIPT
Gerência de Configuração:
Ramificação e Integração
Leonardo Gresta Paulino Murta
leomurta@ic.uff.br
Leonardo MurtaGerência de Configuração: Ramificação e
Integração2
Estratégias de Ramificação
• Existem diferentes estratégias de criação de ramos, que podem ser combinadas
• A seleção correta de estratégias possibilita– Desenvolvimento/manutenção em paralelo de liberações
– Isolamento entre desenvolvedores e equipes
– Identificação das requisições de modificação que pertencem a cada baseline
– Adição ou remoção de uma requisição de modificação em uma baseline
– Customização do sistema para diferentes clientes ou plataformas
– Manutenção da integridade de baselines
Leonardo MurtaGerência de Configuração: Ramificação e
Integração3
Estratégias de Ramificação
• Estratégias de manutenção
– Caótica
– Em série
– Em cascata
• Estratégias de organização
– Por desenvolvedores
– Por subprojetos (componentes da arquitetura)
– Por requisições
– Por customizações
• Estratégias de verificação
– Contínua
– Periódica
– Pré-liberação
Leonardo MurtaGerência de Configuração: Ramificação e
Integração4
Estratégias de Ramificação• Manutenção Caótica
– Ramo principal: evolução e correções
• Usualmente praticado por organizações imaturas
• Impossibilidade de separar o que é manutenção corretiva de evolutiva
• Usuários de uma dada versão, ao reclamarem de um erro, recebem novas funcionalidades junto com a correção do erro
Sistema1.0Verif.RC1 RC2Evol. e corr.Desenv. Verif. 2.0 Evol. e corr.
1.1 1.2 2.1
Leonardo MurtaGerência de Configuração: Ramificação e
Integração5
Estratégias de Ramificação• Manutenção em série
– Ramo principal: evolução
– Ramos auxiliares: correções
• Foco
– Desenvolvimento in-house
– Cliente único (e.g.: aplicações Web)
• Dificuldade de manutenção de várias liberações em paralelo
Sistema
Rel. 11.0 1.1 1.2
Rel. 22.0 2.1
Verif. Verif.
RC1 RC2Evolução EvoluçãoDesenv.
Correção Correção Correção
Leonardo MurtaGerência de Configuração: Ramificação e
Integração6
Estratégias de Ramificação• Manutenção em cascata
– Ramo principal: correções– Ramo auxiliar: evolução
• Foco– Manutenção em paralelo de múltiplas releases
• Dificuldade de coordenar check-outs evolutivos em andamento
Rel. 1
Rel. 2
1.0 1.1 1.2
Rel. 3
2.0 2.1
RC1
RC2
Desenv. Verif.
Evolução Verif.
Evolução 3.0 3.1
Correção Correção Correção
RC3 Verif.
Correção Correção
3.2 Corr.
Leonardo MurtaGerência de Configuração: Ramificação e
Integração7
Estratégias de Ramificação• Organização por desenvolvedores
– Ramo principal: integração– Ramos auxiliares: desenvolvedores
• Permite que cada desenvolvedor possa fazer check-ins intermediários sem que os outros desenvolvedores sejam afetados
Integração
Desenvolvedor 2
Desenvolvedor 1
Leonardo MurtaGerência de Configuração: Ramificação e
Integração8
Estratégias de Ramificação• Organização por subprojetos (componentes da arquitetura)
– Ramo principal: integração
– Ramos auxiliares: projetos• Fornece baixo isolamento entre membros de um mesmo subprojeto, mas
isola a equipe do subprojeto das demais
Integração
Subprojeto 2
Subprojeto 1
Leonardo MurtaGerência de Configuração: Ramificação e
Integração9
Estratégias de Ramificação• Organização por requisições
– Ramo principal: integração
– Ramos auxiliares: requisições
• Permite que cada requisição seja identificada (change sets)
• Torna possível a remoção de uma requisição do produto
Integração
Requisição 1
RM1
Requisição 3
RM3
Requisição 2
RM2
Leonardo MurtaGerência de Configuração: Ramificação e
Integração10
Estratégias de Ramificação• Organização por customizações
– Ramo principal: integração
– Ramos auxiliares: customizações
• Seleção de variabilidade em tempo de construção usualmente é mais apropriado
Integração
Customização B
Desenv. Manutenção
Customização A1.0A
1.0B
Customização
1.0
Customização
2.0 Manutenção
2.0A
2.0B
Customização
Customização
3.0
Leonardo MurtaGerência de Configuração: Ramificação e
Integração11
Estratégias de Ramificação• Verificação contínua: toda e qualquer integração só é
efetuada após passar pela verificação
– Conceito de estado seguro
– Ramo principal sempre pronto para liberação
– Alto custo em caso de verificação não automatizada
1.0
Verif.
2.0
Verif.
Verif.
Baseline
Leonardo MurtaGerência de Configuração: Ramificação e
Integração12
Estratégias de Ramificação• Verificação periódica: as integrações são feitas de forma
não sincronizadas com verificações, e as verificações são executadas de tempos em tempos– Torna independente a atividade de verificação– Utiliza rótulo para demarcar ponto já verificado– Custo médio em caso de verificação não automatizada
1.0 2.0 Verificado
Verif.
Leonardo MurtaGerência de Configuração: Ramificação e
Integração13
Estratégias de Ramificação• Verificação pré-liberação: A verificação é executada
somente antes da liberação– Conceito de congelamento do ramo principal
– Só aceita correções durante congelamento
– Custo baixo em caso de verificação não automatizada
1.0 2.0Congelado
Verif.
Leonardo MurtaGerência de Configuração: Ramificação e
Integração14
Integração
• Processo de combinação de componentes de software e/ou
hardware no sistema como um todo
• Possíveis momento da integração
– Comando “salva” (integra um artefato)
– Comando “check-in” (integra vários artefatos)
– Junção de ramo (integra uma modificação como um todo)
• O ideal é fazer integrações de algo que faça sentido como
um todo
Leonardo MurtaGerência de Configuração: Ramificação e
Integração15
Integração
• Estratégia Push
– O desenvolvedor/testador envia para a área de integração a
contribuição
• Estratégia Pull
– O integrador busca nas áreas de desenvolvimento/testes a
contribuição
– O desenvolvedor/testador deve demarcar com rótulos o que já
está pronto para integração
Leonardo MurtaGerência de Configuração: Ramificação e
Integração16
Integração
• O sistema pode ser integrado via referência ou inclusão de componentes
• Integração via referência
– Cada componente é construído no seu próprio ambiente
– O ambiente de integração referencia as liberações dos componentes
• Integração via inclusão
– O ambiente de integração inclui os ambientes de cada componente (código fonte
dos componentes)
– A construção ocorre toda no ambiente de integração
Leonardo MurtaGerência de Configuração: Ramificação e
Integração17
Integração
• Rótulos podem ser utilizados durante o processo de integração
– Rótulo CANDIDATA: Indica que a configuração é candidata a baseline ou
liberação
– Rótulo CONSTRUÍDA: Indica que a configuração não apresentou nenhum erro de
compilação
– Rótulo VERIFICADA: Indica que a configuração passou por todas as etapas de
verificação
– Rótulo REJEITADA: Indica falha durante o processo de verificação
– Rótulo BASELINE_X: Indica uma baseline
– Rótulo LIBERAÇÃO_X: Indica uma liberação
Leonardo MurtaGerência de Configuração: Ramificação e
Integração18
Integração
• Ramos também podem ser utilizados no processo de integração
– Testes de unidade
• Espaço de trabalho ramo de desenvolvimento
– Teste de integração
• Ramo de desenvolvimento ramo de integração
– Teste de sistema
• Ramo de integração ramo de homologação
– Teste de aceitação
• Ramo de homologação ramo de produção
Leonardo MurtaGerência de Configuração: Ramificação e
Integração19
Exercício
• Descreva uma estratégia de ramificação para as necessidades a seguir
– Liste os pontos positivos dessa estratégia
– Liste possíveis pontos negativos
– Defina o que poderia ser feito para aprimorar a estratégia
• Necessidades a serem consideradas
– Manutenção de versões anteriores
– Customizações para diferentes clientes
– Diferentes sistemas que fazem uso de bibliotecas comuns
Gerência de Configuração:
Ramificação e Integração
Leonardo Gresta Paulino Murta
leomurta@ic.uff.br
top related