Introdução ao Controle de Versões › ~leomurta › courses › 2012.2 › labgc ›...

Post on 28-Jun-2020

2 views 0 download

Transcript of Introdução ao Controle de Versões › ~leomurta › courses › 2012.2 › labgc ›...

Introdução ao Controle de Versões

Leonardo Murta (leomurta@ic.uff.br)

Introdução

• A Engenharia de Software...

– Abordagem disciplinada para o desenvolvimento de software

– Grande diversidade de metodologias

Leonardo Murta Introdução ao Controle de Versões 2

Introdução

• Ponto em comum nas metodologias:

– refinamentos sucessivos de artefatos

Leonardo Murta Introdução ao Controle de Versões 3

http://www.colegiosaofrancisco.com.br

Mas onde ficam esses artefatos?

Leonardo Murta Introdução ao Controle de Versões 4

Tarefas de Engenharia de

Software

Artefato novo

Repositório

Artefato modificado

Artefato

O que são repositórios?

• Repositórios – Lugar seguro onde artefatos

são depositados

– Permitem armazenamento, busca e recuperação de artefatos

– Servem como um ponto de referência

– Apóiam no aumento da memória organizacional

Leonardo Murta Introdução ao Controle de Versões 5

Gerência de Configuração

Desenvolvimento Liberação Implantação Produção

Leonardo Murta Introdução ao Controle de Versões 6

Gerência de Configuração

Gerência de configuração de software é uma disciplina para o controle da evolução de sistemas de software (Susan Dart, 1991)

Leonardo Murta Introdução ao Controle de Versões 7

Histórico

• Anos 50

– GC para produção de aviões de guerra e naves espaciais

• Anos 60 e 70

– Surgimento de GCS (S = Software)

– Foco ainda em aplicações militares e aeroespaciais

• Anos 80 e 90

– Mudança de foco (MIL EIA, IEEE, ISO, etc.)

– Surgimento das primeiras normas internacionais

– Assimilação por organizações não militares

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.

Leonardo Murta Introdução ao Controle de Versões 8

Versão

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

Leonardo Murta Introdução ao Controle de Versões 9

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

Configuração

• Um conjunto de versões de Itens de Configuração (IC), onde existe somente uma versão selecionada para cada IC do conjunto

• Uma configuração pode ser vista como a versão de 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

Leonardo Murta Introdução ao Controle de Versões 10

Leonardo Murta Introdução ao Controle de Versões 11

Etiqueta (tag) • 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: rótulo (label)

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

1.0.0

1.0.1

Etiqueta

Leonardo Murta Introdução ao Controle de Versões 12

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

Configuração x versão

Leonardo Murta Introdução ao Controle de Versões 13

IC 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

Sistema de Gerência de Configuração

Leonardo Murta Introdução ao Controle de Versões 14

Versão 1

Versão 2

Versão 3

Versão 4

Versão 5

Sistema de Gerência de Configuração

Leonardo Murta Introdução ao Controle de Versões 15

Versão 1

Versão 2

Versão 3

Versão 4

Versão 5

Sistema de Gerência de Configuração

Leonardo Murta Introdução ao Controle de Versões 16

Versão 1

Versão 2

Versão 3

Versão 4

Versão 5

Sistema de Gerência de Configuração

Leonardo Murta Introdução ao Controle de Versões 17

Artefatos

Controle de Versões

Construção e Release

Controle de Modificações

Solicitações

Sistema de Gerência de Configuração

Leonardo Murta Introdução ao Controle de Versões 18

Artefatos

Controle de Versões

Construção e Release

Controle de Modificações

Solicitações

Controle de versões

Leonardo Murta Introdução ao Controle de Versões 19

Armazenamento?

Colaboração?

Consulta?

Topologia?

Repositório

Item de Configuração

Topologia

Leonardo Murta Introdução ao Controle de Versões 20

Repositório

Espaço de Trabalho

Centralizado Distribuído

check-in /

com

mit

check-o

ut / u

pdate

Repositório

Espaço de Trabalho c

heck-in

check-o

ut / u

pdate

Repositório

Espaço de Trabalho

clo

ne / p

ull

push

Armazenamento

Leonardo Murta Introdução ao Controle de Versões 21

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

Colaboração

Leonardo Murta Introdução ao Controle de Versões 22

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

Consulta

Leonardo Murta Introdução ao Controle de Versões 23

Artefato 5

Versão 1

Versão 2

Versão 4

Modificação 4

Artefato 2

Artefato 5

Artefato 7

Artefato

Versão

1

*

Modificação

*

1

•Informações

–Identificação (número da modificação)

–Quem (autor)

–Quando (data)

–Onde (caminhos)

–Como (ação nos caminhos)

–O que (mensagem)

–Por que (número da solicitação de modificação)

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

• Características dos ramos se comparados a espaços de trabalho – compartilhados por outras pessoas (espaços de trabalho são

isolados) – residem no servidor (espaços de trabalho residem no cliente) – históricos (espaços de trabalho são momentâneos) – permanentes (espaços de trabalho temporários)

Leonardo Murta Introdução ao Controle de Versões 24

Leonardo Murta Introdução ao Controle de Versões 25

Ramos (exemplo 1) • Manutenção em série

– Ramo principal: evolução

– Ramos auxiliares: correções

Sistema

Rel. 1

1.0 1.1 1.2

Rel. 2

2.0 2.1

Verif. Verif.

RC1 RC2 Evolução Evolução Desenv.

Correção Correção Correção

Leonardo Murta Introdução ao Controle de Versões 26

Ramos (exemplo 2) • 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

Junção

• Processo de migração de

– Espaços de trabalho

– Ramos

Leonardo Murta Introdução ao Controle de Versões 27

X Y Z

A Y

<X> ou <A>? Y <Z> ou nada?

X Y Z

A Y

X Y

A Y Z

2-way merge 3-way merge

Leonardo Murta Introdução ao Controle de Versões 28

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

Introdução ao Controle de Versões 29

Exemplo (junção no Eclipse)

Leonardo Murta

Leonardo Murta Introdução ao Controle de Versões 30

Exemplo de ferramentas de controle de versões

• Livre – Git – Mercurial – Subversion

• Comercial – BitKeeper (BitMover) – ClearCase (IBM Rational) – Perforce – PVCS (Serena) – StarTeam (Borland) – Synergy/CM (Telelogic) – Team Foundation Server (Microsoft)

Introdução ao Controle de Versões

Leonardo Murta (leomurta@ic.uff.br)