41
Gerência de Configuração: Terminologia Leonardo Gresta Paulino Murta [email protected]

Gerência de Configuração: Terminologialeomurta/courses/2010.1/gc/aula3.pdf · Leonardo Murta Gerência de Configuração: Terminologia 2 Item de configuração •Agregação de

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Gerência de Configuração: Terminologialeomurta/courses/2010.1/gc/aula3.pdf · Leonardo Murta Gerência de Configuração: Terminologia 2 Item de configuração •Agregação de

Gerência de Configuração: Terminologia

Leonardo Gresta Paulino Murta

[email protected]

Page 2: Gerência de Configuração: Terminologialeomurta/courses/2010.1/gc/aula3.pdf · Leonardo Murta Gerência de Configuração: Terminologia 2 Item de configuração •Agregação de

Leonardo Murta Gerência de Configuração: Terminologia 2

Item de configuração

• Agregação de hardware e/ou software que será passível de gerência de configuração e tratado como um elemento único

• Tipos de ICs

– Produtos de trabalho do projeto

– Produtos de trabalho de processos

• Exemplos: plano de GC, requisitos, modelos, código-fonte, etc.

Page 3: Gerência de Configuração: Terminologialeomurta/courses/2010.1/gc/aula3.pdf · Leonardo Murta Gerência de Configuração: Terminologia 2 Item de configuração •Agregação de

Leonardo Murta Gerência de Configuração: Terminologia 3

Item de configuração

• A seleção de ICs deve levar em conta princípios como acoplamento e coesão

• ICs com alto acoplamento tornam complexo o processo de construção

– Muitas dependências para outros ICs

• ICs com baixa coesão tornam o processo de desenvolvimento complexo

– Vários desenvolvedores concorrendo para modificar o IC

• GCS é altamente beneficiada por sistemas com arquitetura corretamente definida

Page 4: Gerência de Configuração: Terminologialeomurta/courses/2010.1/gc/aula3.pdf · Leonardo Murta Gerência de Configuração: Terminologia 2 Item de configuração •Agregação de

Leonardo Murta Gerência de Configuração: Terminologia 4

Item de configuração

Sistema

Subsistema

Procedimento

Módulo

Gran

ularid

ade

Grossa

Fina

Comando Parágrafo

Seção

DocumentoPrograma

Perspectiva: Desenvolvimento Gerencial

Linha

Arquivo

Diretório

Processo

Necessid

ade d

e ferramen

tas

Menor

Maior

Page 5: Gerência de Configuração: Terminologialeomurta/courses/2010.1/gc/aula3.pdf · Leonardo Murta Gerência de Configuração: Terminologia 2 Item de configuração •Agregação de

Leonardo Murta Gerência de Configuração: Terminologia 5

Item derivado

• Item de configuração que pode ser obtido a partir de outro item de

configuração (item fonte)

• Exemplo

– Os itens de configuração que compõem o código-fonte são itens fonte

para o programa executável, que é item derivado

• Estratégias

– Versionamento do item derivado

– Documentação do processo de derivação (roteiro, ferramentas,

ambiente, etc.)

Page 6: Gerência de Configuração: Terminologialeomurta/courses/2010.1/gc/aula3.pdf · Leonardo Murta Gerência de Configuração: Terminologia 2 Item de configuração •Agregação de

Leonardo Murta Gerência de Configuração: Terminologia 6

Construção (building)

• Processo de compilação do sistema a partir dos

itens fonte para uma configuração alvo

• Utiliza arquivo de comandos que descreve como

deve ocorrer a construção

• Exemplo: makefile, build.xml, pom.xml

• Os arquivos de comandos também devem ser

considerados itens de configuração

Page 7: Gerência de Configuração: Terminologialeomurta/courses/2010.1/gc/aula3.pdf · Leonardo Murta Gerência de Configuração: Terminologia 2 Item de configuração •Agregação de

Leonardo Murta Gerência de Configuração: Terminologia 7

Versões

• Instâncias de um mesmo item de configuração que diferem entre si em algo (sinônimo: revisões)

• Variantes: versões funcionalmente equivalentes, mas projetadas para ambientes de hardware ou software distintos

Page 8: Gerência de Configuração: Terminologialeomurta/courses/2010.1/gc/aula3.pdf · Leonardo Murta Gerência de Configuração: Terminologia 2 Item de configuração •Agregação de

Leonardo Murta Gerência de Configuração: Terminologia 8

Versões

[Pressman, 1997] ICs, versões e variantes

Variantes

ICs

Versões

IC

1.0

IC

1.1

IC

1.2

IC

1.1.1

IC

1.1.2

IC

1.3

IC

2.0

IC

1.4

IC

2.1

A1 A2 A3

A4’ A4’’

Page 9: Gerência de Configuração: Terminologialeomurta/courses/2010.1/gc/aula3.pdf · Leonardo Murta Gerência de Configuração: Terminologia 2 Item de configuração •Agregação de

Sistema de Gerência de Configuração

Gerência de Configuração: Terminologia 9

Versão 1

Versão 2

Versão 3

Versão 5

Versão 5

Leonardo Murta

Page 10: Gerência de Configuração: Terminologialeomurta/courses/2010.1/gc/aula3.pdf · Leonardo Murta Gerência de Configuração: Terminologia 2 Item de configuração •Agregação de

Controle de versões

Gerência de Configuração: Terminologia 10

Repositório

Item de Configuração

Como armazenar?

Como permitir colaboração?

Leonardo Murta

Page 11: Gerência de Configuração: Terminologialeomurta/courses/2010.1/gc/aula3.pdf · Leonardo Murta Gerência de Configuração: Terminologia 2 Item de configuração •Agregação de

O Repositório

• Local onde os ICs são armazenados– Armazena o histórico do projeto– Controle na entrada e saída de ICs– Poucos por projeto (normalmente, somente um)

• Utiliza diferentes mecanismos de armazenamento– Versionamento completo– Versionamento de diferenças (delta)

• Utiliza diferentes mecanismos de controle de concorrência– Pessimista– Otimista– Misto

• Permite a geração de diferentes relatórios– Por item de configuração– Por modificação

Gerência de Configuração: Terminologia 11Leonardo Murta

Page 12: Gerência de Configuração: Terminologialeomurta/courses/2010.1/gc/aula3.pdf · Leonardo Murta Gerência de Configuração: Terminologia 2 Item de configuração •Agregação de

Leonardo Murta Gerência de Configuração: Terminologia 12

Mecanismos de armazenamento

• Versionamento completo– Demanda grande espaço em disco

– Permite rápida recuperação dos ICs

• Versionamento de diferenças– Reduz o espaço requerido em disco

– Qualquer versão pode ser derivada a partir da aplicação dos deltas sobre a versão base

– Pode demandar grande carga de processamento para recuperar ICs

– Tipos existentes: forward, reverse e in-line

Page 13: Gerência de Configuração: Terminologialeomurta/courses/2010.1/gc/aula3.pdf · Leonardo Murta Gerência de Configuração: Terminologia 2 Item de configuração •Agregação de

Leonardo Murta Gerência de Configuração: Terminologia 13

Mecanismos de armazenamento

v.3

v.2

v.1

Completo

delta 12

v.1

Forward

delta 23

delta 32

v.3

Reverse

delta 21

In-line

v.1 v.2/3

v.1/2 v.3

Page 14: Gerência de Configuração: Terminologialeomurta/courses/2010.1/gc/aula3.pdf · Leonardo Murta Gerência de Configuração: Terminologia 2 Item de configuração •Agregação de

Leonardo Murta Gerência de Configuração: Terminologia 14

Controle de concorrência• Controle de concorrência pessimista

– Somente um desenvolvedor pode modificar o IC em um dado momento– Custo zero de junção de trabalho– Ausência de paralelismo no desenvolvimento

• Controle de concorrência otimista– Vários desenvolvedores pode modificar um mesmo IC ao mesmo tempo– Alto custo de junção de trabalho no caso de ICs complexos (e.g.: IC binários)– Permite paralelismo no desenvolvimento

• Controle de concorrência otimista com notificação– Permite que qualquer desenvolvedor saiba quem mais está modificando o IC– Bom custo/benefício entre controle otimista e pessimista

Page 15: Gerência de Configuração: Terminologialeomurta/courses/2010.1/gc/aula3.pdf · Leonardo Murta Gerência de Configuração: Terminologia 2 Item de configuração •Agregação de

Controle de concorrência

Gerência de Configuração: Terminologia 15

m.3

m.2

m.1

Pessimista

junção

m.1

Otimista Misto

m.2 m.3

junção

m.1 m.2 m.3

Leonardo Murta

Page 16: Gerência de Configuração: Terminologialeomurta/courses/2010.1/gc/aula3.pdf · Leonardo Murta Gerência de Configuração: Terminologia 2 Item de configuração •Agregação de

Relatórios

Leonardo Murta Gerência de Configuração: Terminologia 16

Item de Configuração

Versão

1

*

Modificação

*

1

Arquivo 5Versão 1Versão 2Versão 4

Modificação 4Arquivo 2Arquivo 5Arquivo 7

Page 17: Gerência de Configuração: Terminologialeomurta/courses/2010.1/gc/aula3.pdf · Leonardo Murta Gerência de Configuração: Terminologia 2 Item de configuração •Agregação de

Leonardo Murta Gerência de Configuração: Terminologia 17

Espaço de trabalho

• Local onde o usuário pode fazer seu trabalho de forma isolada

– Armazena um momento específico do projeto

– Controle sobre quando sincronizar com o repositório

– Muitos por projeto (normalmente, um ou mais por

desenvolvedor)

– Sinônimo: caixa de areia (sandbox)

Page 18: Gerência de Configuração: Terminologialeomurta/courses/2010.1/gc/aula3.pdf · Leonardo Murta Gerência de Configuração: Terminologia 2 Item de configuração •Agregação de

Leonardo Murta Gerência de Configuração: Terminologia 18

Configuração

• Um conjunto de versões de ICs, onde existe somente uma versão selecionada para cada IC do conjunto

• Uma configuração pode ser vista como um IC composto de outros ICs

• Exemplos– Configuração do sistema

– Configuração do processo

– Configuração do módulo X

– Configuração dos requisitos do sistema

– Configuração do código fonte

Page 19: Gerência de Configuração: Terminologialeomurta/courses/2010.1/gc/aula3.pdf · Leonardo Murta Gerência de Configuração: Terminologia 2 Item de configuração •Agregação de

Leonardo Murta Gerência de Configuração: Terminologia 19

Configuração x versão

Configuração Versão

IC composto IC primitivo

IC

• Genericamente

– O sistema S é composto pelos arquivos X, Y e Z

• Concretamente

– A configuração 5 do sistema S é composta pela versão 2 do arquivo X, versão 4 do arquivo Y e versão 6 do arquivo Z

Page 20: Gerência de Configuração: Terminologialeomurta/courses/2010.1/gc/aula3.pdf · Leonardo Murta Gerência de Configuração: Terminologia 2 Item de configuração •Agregação de

Leonardo Murta Gerência de Configuração: Terminologia 20

Rótulo (label)• Mecanismo usado para identificar uma configuração

– As diversas versões de ICs marcadas com um rótulo constituem uma configuração

do sistema

• Permite identificar níveis de qualidade dos ICs

• Sinônimo: etiqueta (tag)

1.1

1.2

1.3

AloMundo.java

1.1

1.2

1.3

BemVindo.java

1.1

1.2

build.xml

1.1

1.2

Usuario.java

RECUSADA

ACEITA

Rótulos

Page 21: Gerência de Configuração: Terminologialeomurta/courses/2010.1/gc/aula3.pdf · Leonardo Murta Gerência de Configuração: Terminologia 2 Item de configuração •Agregação de

Leonardo Murta Gerência de Configuração: Terminologia 21

Configuração x versãoIC composto

Conf. 1

Conf. 2

Conf. 3

IC primitivo 1 IC primitivo 2 IC primitivo 3

V.1

V.2

V.3

V.4

V.1

V.2

V.1

V.2

V.3

Page 22: Gerência de Configuração: Terminologialeomurta/courses/2010.1/gc/aula3.pdf · Leonardo Murta Gerência de Configuração: Terminologia 2 Item de configuração •Agregação de

Leonardo Murta Gerência de Configuração: Terminologia 22

Baseline

• Configuração revisada e aprovada que serve como base para uma

próxima etapa de desenvolvimento e que somente pode ser

modificada via processo formal de GCS

• São estabelecidas ao final de cada fase de desenvolvimento:

análise (functional), projeto (allocated) e implementação (product)

• Momento de criar: balanceamento entre controle e burocracia

Page 23: Gerência de Configuração: Terminologialeomurta/courses/2010.1/gc/aula3.pdf · Leonardo Murta Gerência de Configuração: Terminologia 2 Item de configuração •Agregação de

Leonardo Murta Gerência de Configuração: Terminologia 23

Baseline

• Check-out: processo de requisição de modificações, aprovação e cópia de um item de configuração do repositório

• Check-in: processo de revisão, aprovação e cópia de um item de configuração para o repositório

• A atualização de uma baseline consiste em check-out seguido de modificações e check-in

Page 24: Gerência de Configuração: Terminologialeomurta/courses/2010.1/gc/aula3.pdf · Leonardo Murta Gerência de Configuração: Terminologia 2 Item de configuração •Agregação de

Leonardo Murta Gerência de Configuração: Terminologia 24

Baseline

Tarefas de

engenharia

de software

ICs

Revisões

técnicas

formais

ICs

modificados

Controle

de GCICs

ICs

aprovados

extraídos

ICs

armazenados

[Pressman, 1997] Processo de atualização de configurações de referência

Page 25: Gerência de Configuração: Terminologialeomurta/courses/2010.1/gc/aula3.pdf · Leonardo Murta Gerência de Configuração: Terminologia 2 Item de configuração •Agregação de

Leonardo Murta Gerência de Configuração: Terminologia 25

Baseline (níveis de controle)

Coordenação c/ auditoria

Controle

Informal:•Pré baseline•Sem requisição•Sem aprovação•Sem verificação•Ágil•Ad-hoc

Formal:•Pós baseline•Com requisição•Com aprovação•Com verificação•Burocrático•Planejado

Nível de controle

Page 26: Gerência de Configuração: Terminologialeomurta/courses/2010.1/gc/aula3.pdf · Leonardo Murta Gerência de Configuração: Terminologia 2 Item de configuração •Agregação de

Baseline (níveis de controle)

Requisito 1 Análise ProjetoBaseline 1:

•An. Req. 1

Requisito 2 Análise Projeto

Tempo

Req. Análise Projeto Análise Projeto Análise Projeto

1 Inform. - Formal Inform. Formal Formal

2 - - Inform. - Formal Inform.

Baseline 2:•An. Req. 1•Pr. Req. 1•An. Req. 2

Leonardo Murta Gerência de Configuração: Terminologia 26

Page 27: Gerência de Configuração: Terminologialeomurta/courses/2010.1/gc/aula3.pdf · Leonardo Murta Gerência de Configuração: Terminologia 2 Item de configuração •Agregação de

Leonardo Murta Gerência de Configuração: Terminologia 27

Liberação (release)

• Substantivo: Versão disponibilizada para um propósito específico

• Verbo: Notificação formal e distribuição de uma versão aprovada

• Importante

– Toda liberação é uma versão

– Nem toda versão é uma liberação

• Em alguns casos liberações podem ser desenvolvidas em paralelo (time to market)

• Exemplos

– Liberação para testes de sistema

– Liberação para homologação

– Liberação para entrega ao cliente

Page 28: Gerência de Configuração: Terminologialeomurta/courses/2010.1/gc/aula3.pdf · Leonardo Murta Gerência de Configuração: Terminologia 2 Item de configuração •Agregação de

Leonardo Murta Gerência de Configuração: Terminologia 28

Exemplo de liberações

1.1

1.2

1.3

1.4

1.5

AloMundo.java

1.1

1.2

1.3

1.4

1.5

BemVindo.java

1.1

1.2

build.xml

1.1

1.2

1.3

Usuario.java

rel_1-0-0

rel_1-0-1

rel_1-1-0

1.6

Rótulos

HEAD

Page 29: Gerência de Configuração: Terminologialeomurta/courses/2010.1/gc/aula3.pdf · Leonardo Murta Gerência de Configuração: Terminologia 2 Item de configuração •Agregação de

Leonardo Murta Gerência de Configuração: Terminologia 29

Ramos (branches)

• Versões que não seguem a linha principal de desenvolvimento

• Fornecem isolamento para o processo de desenvolvimento

– Ramos usualmente são migrados à linha principal de desenvolvimento

– A migração pode ser complicada no caso de isolamento longo

• O espaço de trabalho de um desenvolvedor pode ser visto como um ramo

– Extremamente isolado (ramos são compartilhados por outras pessoas)

– Que reside no cliente (ramos residem no servidor)

– Que são momentâneos (ramos são históricos)

– Que são temporários (ramos são permanentes)

Page 30: Gerência de Configuração: Terminologialeomurta/courses/2010.1/gc/aula3.pdf · Leonardo Murta Gerência de Configuração: Terminologia 2 Item de configuração •Agregação de

Leonardo Murta Gerência de Configuração: Terminologia 30

Exemplo de ramo

1.2

AloMundo.java

1.2

BemVindo.java

1.1

build.xml

1.1

Usuario.java

rel_1-0-0

Rótulo

remendos_rel_1-0-0

1.2.2.1 1.2.2.1 1.1.2.1 1.1.2.1

Ramo

... ... ... ...

Page 31: Gerência de Configuração: Terminologialeomurta/courses/2010.1/gc/aula3.pdf · Leonardo Murta Gerência de Configuração: Terminologia 2 Item de configuração •Agregação de

Leonardo Murta Gerência de Configuração: Terminologia 31

Junção• Processo de migração de

– Espaços de trabalho

– Ramos

• É necessário inclusive em desenvolvimento seqüencial (check-out reservado) quando são utilizados ramos

• Algoritmos automáticos se dividem em duas categorias– Genéricos (servem para qualquer linguagem)

– Específicos (levam em conta a estrutura semântica da linguagem)

Page 32: Gerência de Configuração: Terminologialeomurta/courses/2010.1/gc/aula3.pdf · Leonardo Murta Gerência de Configuração: Terminologia 2 Item de configuração •Agregação de

Leonardo Murta Gerência de Configuração: Terminologia 32

Junção• As ferramentas de GCS usualmente utilizam algoritmos

genéricos

– 2-way merge

– 3-way merge

Linha 1Linha 2Linha 3

Linha 1’Linha 2

<Linha 1> ou <Linha 1’>?Linha 2<Linha 3> ou nada?

Linha 1Linha 2Linha 3

Linha 1’Linha 2

Linha 1’Linha 2Linha 3

Linha 1Linha 2

Page 33: Gerência de Configuração: Terminologialeomurta/courses/2010.1/gc/aula3.pdf · Leonardo Murta Gerência de Configuração: Terminologia 2 Item de configuração •Agregação de

Leonardo Murta Gerência de Configuração: Terminologia 33

Exemplo de junção

1.1 1.2 1.3 1.4 1.5BemVindo.java

1.2.2.1 1.2.2.2

2

1

1.6

1.6 = 1.2 + 1 + 2

• A junção é efetuada para cada artefato do ramo

• São levadas em consideração todas as modificações desde o ancestral em comum

Page 34: Gerência de Configuração: Terminologialeomurta/courses/2010.1/gc/aula3.pdf · Leonardo Murta Gerência de Configuração: Terminologia 2 Item de configuração •Agregação de

Leonardo Murta Gerência de Configuração: Terminologia 34

Exemplo de junção (incremental)

1.2 1.3 1.4 1.5

AloMundo.java

1.2.2.1 1.2.2.2

2

1

1.6

• O que fazer quando o ramo continua evoluindo mesmo depois da junção?

1.7 1.8

3

1.2.2.3 1.2.2.4

4

Page 35: Gerência de Configuração: Terminologialeomurta/courses/2010.1/gc/aula3.pdf · Leonardo Murta Gerência de Configuração: Terminologia 2 Item de configuração •Agregação de

Leonardo Murta Gerência de Configuração: Terminologia 35

Exemplo de junção (incremental)

1.2 1.3 1.4 1.5

AloMundo.java

1.2.2.1 1.2.2.2

2

1

1.6 1.7 1.8

3

1.9

1.2.2.3 1.2.2.4

4

1.9 = 1.6 + 3 + 4

rel_1-0-1 rel_1-0-2

HEAD

BASE

Page 36: Gerência de Configuração: Terminologialeomurta/courses/2010.1/gc/aula3.pdf · Leonardo Murta Gerência de Configuração: Terminologia 2 Item de configuração •Agregação de

Leonardo Murta Gerência de Configuração: Terminologia 36

Conflitos

• Situação onde não é possível executar a junção de forma automática

• Tipos– Físico (linha do arquivo)

– Lógico (sintaxe do arquivo)

– Semântico (conteúdo do arquivo)

• O suporte atual concentra no nível físico!

• Exemplos de conflitos físicos– Alterações em paralelo de uma mesma linha

– Remoção e alteração em paralelo de uma mesma linha

– Adições de linhas em paralelo na mesma região do arquivo

Page 37: Gerência de Configuração: Terminologialeomurta/courses/2010.1/gc/aula3.pdf · Leonardo Murta Gerência de Configuração: Terminologia 2 Item de configuração •Agregação de

Leonardo Murta Gerência de Configuração: Terminologia 37

Conflitos no vi

Page 38: Gerência de Configuração: Terminologialeomurta/courses/2010.1/gc/aula3.pdf · Leonardo Murta Gerência de Configuração: Terminologia 2 Item de configuração •Agregação de

Leonardo Murta Gerência de Configuração: Terminologia 38

Conflitos no Eclipse

Page 39: Gerência de Configuração: Terminologialeomurta/courses/2010.1/gc/aula3.pdf · Leonardo Murta Gerência de Configuração: Terminologia 2 Item de configuração •Agregação de

Leonardo Murta Gerência de Configuração: Terminologia 39

Conflitos no NetBeans

Page 40: Gerência de Configuração: Terminologialeomurta/courses/2010.1/gc/aula3.pdf · Leonardo Murta Gerência de Configuração: Terminologia 2 Item de configuração •Agregação de

Leonardo Murta Gerência de Configuração: Terminologia 40

Conflitos no JBuilder

Page 41: Gerência de Configuração: Terminologialeomurta/courses/2010.1/gc/aula3.pdf · Leonardo Murta Gerência de Configuração: Terminologia 2 Item de configuração •Agregação de

Gerência de Configuração: Terminologia

Leonardo Gresta Paulino Murta

[email protected]