Control de versiones,
configuración y cambios
CVERSION-1
Control de versiones, configuración y cambios
Contenido






Evolución del software
Control de versiones
Control de configuración
Control de cambios
Repositorio. Almacenamiento eficiente
Ejemplos de herramientas
CVERSION-2
Control de versiones, configuración y cambios
Evolución 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 evolución controlada (ciclo de vida espiral,
prototipos evolutivos)
Durante la explotación

Durante la fase de mantenimiento se realizan
modificaciones sucesivas del producto
CVERSION-3
Control de versiones, configuración y cambios
Control de versiones

Motivo: evolución




El software cambia con el tiempo, por diversas
razones
Es necesario controlar esta evolución
Suele ser necesario recuperar versiones antiguas
Concepto de versión (revisión)


“Versión” es la Forma particular que adopta un
objeto en un contexto dado
Desde el punto de vista de evolución, es la forma
particular de un objeto en un instante dado. Se
suele denominar “revisión”
CVERSION-4
Control de versiones, configuración y cambios
Control de configuración

Concepto de configuración




Un sistema software comprende distintos
componentes, que evolucionan individualmente
Hay que garantizar la consistencia del conjunto del
sistema
Una “configuración” es una combinación de
versiones particulares de los componentes que
forman un sistema consistente
Desde el punto de vista de evolución, es el
conjunto de las versiones de los objetos
componentes en un instante dado
CVERSION-5
Control de versiones, configuración y cambios
Control de cambios

Línea base



Llamaremos “línea base” a una configuración
operativa del sistema software
La evolución del sistema puede verse como
evolución de la línea base
Concepto de cambio


Un “cambio” es el paso de una versión de la línea
base a la siguiente
Puede incluir modificaciones del contenido de
algún componente, y/o modificaciones de la
estructura del sistema, añadiendo o eliminando
componentes
CVERSION-6
Control de versiones, configuración 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 (máquina + S.O.), o de las funciones
opcionales que haya de realizar o no
Una “variante” es una versión de un componente
(o de la configuración global) que evoluciona por
separado
Las variantes representan una variación espacial,
mientras que las revisiones representan una
variación temporal
CVERSION-7
Control de versiones, configuración 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 almacén
común 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 información de la
evolución del sistema (historia), y no sólo de los
componentes en sí
A veces se confunde el término 'repositorio' con el de
'línea base'
CVERSION-8
Control de versiones, configuración y cambios
Grafo de evolución

Revisiones sucesivas de un componente
1
2
3
4
CVERSION-9
Control de versiones, configuración 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 revisión respecto a la anterior
Delta 3.2 = (3.1  3.2)
CVERSION-10
Control de versiones, configuración y cambios
Propagación 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-11
Control de versiones, configuración y cambios
Fusión 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 propagación de cambios: 4.1 = 3.2 + 2.3 - 2.3
(o bien de forma manual)
CVERSION-12
Control de versiones, configuración y cambios
Técnicas de almacenamiento

Deltas directos
1.2
1.1
1.2
1.3
1.3
1.4
1.4
2.1
2.1
1.5
1.5
2.2
2.2
CVERSION-13
Control de versiones, configuración y cambios
Técnicas de almacenamiento

Deltas inversos (RCS)
1.1
1.2
1.1
1.3
1.2
1.4
1.3
2.1
2.1
1.4
1.5
2.2
2.2
CVERSION-14
Control de versiones, configuración y cambios
Técnicas 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-15
Control de versiones, configuración y cambios
Control de configuración

Evolución de un sistema





Añadir componentes
Suprimir componentes
Modificar componentes
Evolución temporal (revisiones)
Evolución espacial (variantes)
CVERSION-16
Control de versiones, configuración y cambios
Ejemplo de evolución de configuración
Rev. 4
A
C
D
Rev. 3
A
B
C
D
Rev. 2
A
B
C
D
Rev. 1
A
B
C
E
CVERSION-17
Control de versiones, configuración 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-18
Control de versiones, configuración 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-19
Control de versiones, configuración y cambios
Modelo ortogonal de versiones
2.3
1.1
2.1
Z
4
1.2
2.2
1.2
1.1
1.1
1.3
3
1.1
1.1
2
Y
1.1
1
X
A
B
C
D
revisiones
E
componentes
 Ejemplo de nombrado uniforme: B-X-3  B
1.2
CVERSION-20
Control de versiones, configuración y cambios
Técnicas de nombres en configuraciones

Control de configuración 


Nombres simbólicos o “tags”


control de versiones + nombrado global
Usados por RCS. Una versión de un componente
puede tener varios nombres lógicos (p.ej:
“Linux 2.0”, “Linux 2.1”, “Win2K 1.0” ...)
Versiones de directorios

Ejemplos: CVS, ClearCase. La configuración se
organiza mediante una jerarquía de directorios,
cuyo contenido evoluciona
CVERSION-21
Control de versiones, configuración y cambios
Desarrollo mediante cambios sucesivos

Evolución de la línea base
Cambio 2
A2
B2
A1
B1
Línea base
Cambio 1
C1
D1
E1
CVERSION-22
Control de versiones, configuración y cambios
Desarrollo mediante cambios sucesivos

Evolución de la línea base
Línea base
Cambio 2
A2
B2
Cambio 1
A1
B1
C1
D1
E1
CVERSION-23
Control de versiones, configuración y cambios
Desarrollo mediante cambios sucesivos

Evolución de la línea base
Cambio 3
D
E3
D1
E1
F3
Línea base
Cambio 2
A2
B2
Cambio 1
A1
B1
C1
CVERSION-24
Control de versiones, configuración y cambios
Desarrollo mediante cambios sucesivos

Evolución de la línea base
Línea base
E3
Cambio 3
Cambio 2
A2
B2
Cambio 1
A1
B1
C1
D1
F3
E1
CVERSION-25
Control de versiones, configuración y cambios
Desarrollo simultáneo de cambios

Cambios 2 y 3 en desarrollo
Cambio 2
Cambio 3
A2
B2
A1
B1
D
E3
D1
E1
F3
Línea base
Cambio 1
C1
CVERSION-26
Control de versiones, configuración y cambios
Desarrollo simultáneo de cambios

Cambio 2 integrado
Cambio 3
D
E3
D1
E1
F3
Línea base
Cambio 2
A2
B2
Cambio 1
A1
B1
C1
CVERSION-27
Control de versiones, configuración y cambios
Desarrollo simultáneo de cambios

Cambio 3 actualizado
Cambio 3
D
E3
D1
E1
F3
Línea base
Cambio 2
A2
B2
Cambio 1
A1
B1
C1
CVERSION-28
Control de versiones, configuración y cambios
Desarrollo simultáneo de cambios

Cambio 3 integrado
Línea base
E3
Cambio 3
Cambio 2
A2
B2
Cambio 1
A1
B1
C1
D1
F3
E1
CVERSION-29
Control de versiones, configuración y cambios
Cambios simultáneos de un componente

Cambios 2 y 3 en desarrollo
Cambio 2
Cambio 3
A2
B2
A1
B1
D2
D3
E3
D1
E1
F3
Línea base
Cambio 1
C1
CVERSION-30
Control de versiones, configuración y cambios
Cambios simultáneos de un componente

Cambio 2 integrado
D3
Cambio 3
E3
F3
Línea base
Cambio 2
A2
B2
Cambio 1
A1
B1
D2
C1
D1
E1
CVERSION-31
Control de versiones, configuración y cambios
Cambios simultáneos de un componente

Cambio 3 actualizado
D3’ = D3 + D2 - D1
D3’
Cambio 3
E3
F3
Línea base
Cambio 2
A2
B2
Cambio 1
A1
B1
D2
C1
D1
E1
CVERSION-32
Control de versiones, configuración y cambios
Cambios simultáneos de un componente

Cambio 3 integrado
Línea base
D3’
Cambio 3
Cambio 2
A2
B2
Cambio 1
A1
B1
E3
F3
D2
C1
D1
E1
CVERSION-33
Control de versiones, configuración y cambios
Ciclo de vida de cambios (Aegis)
Anular
Nuevo cambio
Esperando
desarrollo
Anular
Inicio desarrollo
En desarrollo
Fin desarrollo
Rechazo
En revisión
Revisión aceptada
Anular
Rechazo
Esperando
integración
En
integración
Integración
aceptada
Completado
CVERSION-34
Control de versiones, configuración y cambios
Control de versiones: herramienta RCS
rlog
co
fichero,v
RO
fichero
co -l
RW
ci
fichero
CVERSION-35
Control de versiones, configuración y cambios
Control de configuración: herramienta CVS
add edit remove
checkout
(update)
commit
abort
CVSROOT
CVERSION-36
Control de versiones, configuración y cambios
Control de cambios: herramienta Aegis
Directorio
de cambio
Directorio de
integración
Directorio
de cambio
Directorio de
línea base
Repositorio
(historia)
CVERSION-37
Descargar

Gestión de versiones, configuración y cambios