You are on page 1of 37

Control de versiones,

configuracin y cambios

CVERSION-1

Control de versiones, configuracin y cambios

Contenido

Evolucin del software


Control de versiones
Control de configuracin
Control de cambios
Repositorio. Almacenamiento eficiente
Ejemplos de herramientas

CVERSION-

Control de versiones, configuracin y cambios

Evolucin del software

Durante el desarrollo

El desarrollo del software siempre es progresivo,


incluso en el ciclo de vida en cascada
El desarrollo evolutivo consiste, precisamente, en
una evolucin controlada (ciclo de vida espiral,
prototipos evolutivos)

Durante la explotacin

Durante la fase de mantenimiento se realizan


modificaciones sucesivas del producto
CVERSION-

Control de versiones, configuracin y cambios

Control de versiones

Motivo: evolucin

El software cambia con el tiempo, por diversas razones


Es necesario controlar esta evolucin
Suele ser necesario recuperar versiones antiguas

Concepto de versin (revisin)

Versin es la Forma particular que adopta un objeto


en un contexto dado
Desde el punto de vista de evolucin, es la forma
particular de un objeto en un instante dado. Se suele
denominar revisin
CVERSION-

Control de versiones, configuracin y cambios

Control de configuracin

Concepto de configuracin

Un sistema software comprende distintos


componentes, que evolucionan individualmente
Hay que garantizar la consistencia del conjunto del
sistema
Una configuracin es una combinacin de
versiones particulares de los componentes que
forman un sistema consistente
Desde el punto de vista de evolucin, es el conjunto
de las versiones de los objetos componentes en un
instante dado
CVERSION-

Control de versiones, configuracin y cambios

Control de cambios

Lnea base

Llamaremos lnea base a una configuracin


operativa del sistema software
La evolucin del sistema puede verse como
evolucin de la lnea base

Concepto de cambio

Un cambio es el paso de una versin de la lnea


base a la siguiente
Puede incluir modificaciones del contenido de algn
componente, y/o modificaciones de la estructura del
sistema, aadiendo o eliminando componentes
CVERSION-

Control de versiones, configuracin y cambios

Variantes

Configuraciones alternativas

Un sistema software puede adoptar distintas formas


(configuraciones) dependiendo del lugar donde se
instale. Por ejemplo, dependiendo de la plataforma que
la soporta (mquina + S.O.), o de las funciones
opcionales que haya de realizar o no
Una variante es una versin de un componente (o de
la configuracin global) que evoluciona por separado
Las variantes representan una variacin espacial,
mientras que las revisiones representan una variacin
temporal
CVERSION-

Control de versiones, configuracin y cambios

Repositorio

Almacenamiento de versiones

Es habitual centralizar el almacenamiento de los


componentes de un mismo sistema, incluyendo las
distintas versiones de cada componente. Este almacn
comn se denomina repositorio
El repositorio permite ahorrar espacio de
almacenamiento, evitando guardar por duplicado
elementos comunes a varias versiones o configuraciones
El repositorio facilita el almacenar informacin de la
evolucin del sistema (historia), y no slo de los
componentes en s
A veces se confunde el trmino 'repositorio' con el de
'lnea base'

CVERSION-

Control de versiones, configuracin y cambios

Grafo de evolucin

Revisiones sucesivas de un componente


1

CVERSION-

Control de versiones, configuracin y cambios

Variantes
4.1

2.1

1.1

1.2

2.2

1.3

2.3

1.4

3.1

3.2

TRONCO: Variante principal, p.ej. 1.1-1.2...


RAMAS: Variantes secundarias, p.ej: 2.1..., 3.1...
DELTA: Cambios de una revisin respecto a la anterior
Delta 3.2 = (3.1 3.2)

CVERSION-

Control de versiones, configuracin y cambios

Propagacin de cambios
3.1

2.1

1.1

2.2

1.2

Diff-Merge / Patch:

3.2

2.3

1.3

3.
3
2.4

1.4

1.5

2.4 = 2.3 + 1.5 - 1.4


3.3 = 3.2 + 1.5 - 1.4
CVERSION-

Control de versiones, configuracin y cambios

Fusin de variantes
3.1

2.1

1.1

2.2

1.2

3.2

2.3

1.3

4.1

4.2

1.4

Igual que propagacin de cambios: 4.1 = 3.2 + 2.3 - 2.3


(o bien de forma manual)
CVERSION-

Control de versiones, configuracin y cambios

Tcnicas de almacenamiento

Deltas directos

1.1

1.2

1.2

1.3

2.1

1.3

2.1

1.4

2.2

1.4

1.5

1.5

2.2

CVERSION-

Control de versiones, configuracin y cambios

Tcnicas de almacenamiento

Deltas inversos (RCS)


1.1

1.1

1.2

1.2

2.1

1.3

2.1

1.3

2.2

1.4

1.4

1.5

2.2

CVERSION-

Control de versiones, configuracin y cambios

Tcnicas de almacenamiento

Marcado selectivo (SCCS)


x x x
x x x
<<1.3,1.2
y y y
>>
<<1.2
z z z
z z z
>>
x x x
<<1.3
t t t
>>
x x x
x x x

x x
x x
y
z z z
z z z
x x

x x
x x

CVERSION-

Control de versiones, configuracin y cambios

Control de configuracin

Evolucin de un sistema

Aadir componentes
Suprimir componentes
Modificar componentes

Evolucin temporal (revisiones)


Evolucin espacial (variantes)

CVERSION-

Control de versiones, configuracin y cambios

Ejemplo de evolucin de configuracin


Rev. 4

Rev. 3

Rev. 2

Rev. 1

CVERSION-

Control de versiones, configuracin y cambios

Problema de coherencia de versiones


Rev. 4

C2
A2

E1
D2

Rev. 3
B2
Rev. 2

C1

D1

A1
Rev. 1

B1

CVERSION-

Control de versiones, configuracin y cambios

Problema de coherencia de versiones


Rev. 4

A2

Rev. 3

A2

Rev. 2
Rev. 1

C2

D2

B2

C1

D2

A1

B2

C1

D1

A1

B1

C1

D2

CVERSION-

Control de versiones, configuracin y cambios

Modelo ortogonal de versiones


2.3
1.1

2.1

var
ia

Z
nte

1.2

2.2

1.2

1.1

1.1 1.3 3

1.1

1.1

1.1

revisiones

componentes

Ejemplo de nombrado uniforme: B-X-3


B 1.2

CVERSION-

Control de versiones, configuracin y cambios

Tcnicas de nombres en configuraciones

Control de configuracin

Nombres simblicos o tags

control de versiones + nombrado global


Usados por RCS. Una versin de un componente
puede tener varios nombres lgicos (p.ej: Linux 2.0,
Linux 2.1, Win2K 1.0 ...)

Versiones de directorios

Ejemplos: CVS, ClearCase. La configuracin se


organiza mediante una jerarqua de directorios, cuyo
contenido evoluciona
CVERSION-

Control de versiones, configuracin y cambios

Desarrollo mediante cambios sucesivos

Evolucin de la lnea base

Cambio 2

A2

B2

A1

B1

Lnea base
Cambio 1

C1

D1

E1

CVERSION-

Control de versiones, configuracin y cambios

Desarrollo mediante cambios sucesivos

Evolucin de la lnea base

Lnea base
Cambio 2

A2

B2

Cambio 1

A1

B1

C1

D1

E1

CVERSION-

Control de versiones, configuracin y cambios

Desarrollo mediante cambios sucesivos

Evolucin de la lnea base

Cambio 3

E3

D1

E1

F3

Lnea base
Cambio 2

A2

B2

Cambio 1

A1

B1

C1

CVERSION-

Control de versiones, configuracin y cambios

Desarrollo mediante cambios sucesivos

Evolucin de la lnea base

Lnea base
E3

Cambio 3
Cambio 2

A2

B2

Cambio 1

A1

B1

C1

D1

F3

E1

CVERSION-

Control de versiones, configuracin y cambios

Desarrollo simultneo de cambios

Cambios 2 y 3 en desarrollo

Cambio 2

Cambio 3
A2

B2

A1

B1

E3

D1

E1

F3

Lnea base
Cambio 1

C1

CVERSION-

Control de versiones, configuracin y cambios

Desarrollo simultneo de cambios

Cambio 2 integrado

Cambio 3

E3

D1

E1

F3

Lnea base
Cambio 2

A2

B2

Cambio 1

A1

B1

C1

CVERSION-

Control de versiones, configuracin y cambios

Desarrollo simultneo de cambios

Cambio 3 actualizado

Cambio 3

E3

D1

E1

F3

Lnea base
Cambio 2

A2

B2

Cambio 1

A1

B1

C1

CVERSION-

Control de versiones, configuracin y cambios

Desarrollo simultneo de cambios

Cambio 3 integrado

Lnea base
E3

Cambio 3
Cambio 2

A2

B2

Cambio 1

A1

B1

C1

D1

F3

E1

CVERSION-

Control de versiones, configuracin y cambios

Cambios simultneos de un componente

Cambios 2 y 3 en desarrollo

Cambio 2

Cambio 3
A2

B2

A1

B1

D2

D3

E3

D1

E1

F3

Lnea base
Cambio 1

C1

CVERSION-

Control de versiones, configuracin y cambios

Cambios simultneos de un componente

Cambio 2 integrado

D3

Cambio 3

E3

F3

Lnea base
Cambio 2

A2

B2

Cambio 1

A1

B1

D2
C1

D1

E1

CVERSION-

Control de versiones, configuracin y cambios

Cambios simultneos de un componente

Cambio 3 actualizado
D3 = D3 + D2 - D1

D3

Cambio 3

E3

F3

Lnea base
Cambio 2

A2

B2

Cambio 1

A1

B1

D2
C1

D1

E1

CVERSION-

Control de versiones, configuracin y cambios

Cambios simultneos de un componente

Cambio 3 integrado

Lnea base
D3

Cambio 3
Cambio 2

A2

B2

Cambio 1

A1

B1

E3

F3

D2
C1

D1

E1

CVERSION-

Control de versiones, configuracin y cambios

Ciclo de vida de cambios (Aegis)


Anular

Nuevo cambio

Esperando
desarrollo
Anular

Inicio desarrollo

En desarrollo
Fin desarrollo

Rechazo
En revisin
Anular
Rechazo

Revisin aceptada

Esperando
integracin
En
integracin

Integracin
aceptada

Completado

CVERSION-

Control de versiones, configuracin y cambios

Control de versiones: herramienta RCS


rlog
co

fichero

fichero,v

RO

co -l

RW

ci

fichero

CVERSION-

Control de versiones, configuracin y cambios

Control de configuracin: herramienta CVS


add edit remove
checkout

(update)

commit
abort

CVSROOT

CVERSION-

Control de versiones, configuracin y cambios

Control de cambios: herramienta Aegis


Directorio
de cambio

Directorio de
integracin

Directorio
de cambio

Directorio de
lnea base

Repositorio
(historia)

CVERSION-

You might also like