Control de versiones y configuración

Download Report

Transcript Control de versiones y configuración

Control de versiones, configuración
y cambios
VCS: Version Control System
SCM: Software Configuration Management
CMS: Configuration Management System
© 2004-2006 Manuel Collado
Versiones-1
Contenido
Evolución del software
 Control de versiones
 Control de configuración
 Control de cambios
 Repositorio. Almacenamiento eficiente
 Ejemplos de herramientas

© 2004-2006 Manuel Collado
Versiones-2
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
© 2004-2006 Manuel Collado
Versiones-3
Control de versiones

Motivo: evolución




El software cambia con el tiempo
Es necesario controlar esta evolución
Suele ser necesario recuperar versiones antiguas
Concepto de versión (revisión)


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"
© 2004-2006 Manuel Collado
Versiones-4
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
© 2004-2006 Manuel Collado
Versiones-5
Control de cambios

Línea base



Denominaremos así 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



Es el paso de una versión de la línea base a la
siguiente
Puede incluir modificaciones del contenido de algún
componente
Puede incluir modificaciones de la estructura del
sistema, añadiendo o eliminando componentes
© 2004-2006 Manuel Collado
Versiones-6
Variantes

Configuraciones alternativas



Un sistema software puede adoptar distintas formas
(configuraciones) dependiendo del lugar donde se
instale. Por ejemplo, dependiendo de la plataforma
(máquina + S.O.) que la soporta, 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
© 2004-2006 Manuel Collado
Versiones-7
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'
© 2004-2006 Manuel Collado
Versiones-8
Grafo de evolución

Revisiones sucesivas de un componente
1
© 2004-2006 Manuel Collado
2
3
4
Versiones-9
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)
© 2004-2006 Manuel Collado
Versiones-10
Propagación de cambios
3.1
2.1
1.1
2.2
1.2
“Diff-Merge”:
© 2004-2006 Manuel Collado
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
Versiones-11
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
(o bien, no hay que hacer nada especial)
© 2004-2006 Manuel Collado
Versiones-12
Técnicas de almacenamiento

Deltas directos
1.2
1.1
1.2
1.3
1.3
1.4
1.4
2.1
2.1
© 2004-2006 Manuel Collado
1.5
1.5
2.2
2.2
Versiones-13
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
© 2004-2006 Manuel Collado
1.4
1.5
2.2
2.2
Versiones-14
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
© 2004-2006 Manuel Collado
x x
x x
y
z z z
z z z
x x
x x
x x
Versiones-15
Control de configuración

Evolución de un sistema




Evolución temporal (revisiones)


Añadir componentes
Suprimir componentes
Modificar componentes
Cambio a lo largo del tiempo
Evolución espacial (variantes)

Versiones simultáneas
© 2004-2006 Manuel Collado
Versiones-16
Ejemplo de evolución de configuración
Rev. 4
A
Rev. 3
A
Rev. 2
Rev. 1
© 2004-2006 Manuel Collado
C
D
B
C
D
A
B
C
D
A
B
C
E
Versiones-17
Problema de coherencia de versiones
Rev. 4
C2
A2
E1
D2
Rev. 3
B2
Rev. 2
C1
D1
A1
Rev. 1
© 2004-2006 Manuel Collado
B1
Versiones-18
Problema de coherencia de versiones
Rev. 4
A2
Rev. 3
A2
Rev. 2
Rev. 1
© 2004-2006 Manuel Collado
C2
D2
B2
C1
D2
A1
B2
C1
D1
A1
B1
C1
D2
Versiones-19
Modelo ortogonal de versiones
2.3
Z
1.2
1.2
1.1
1.2
4
1.1
1.2
---
3
1.1
1.2
1.1
1.1
---
2
1.1
1.1 1.1
---
---
1
B
D
E
2.2
1.2
2.1
1.2
1.1
Y
X
A
---
C
revisiones
componentes
 Ejemplo de nombrado uniforme: B-X-3  B
1.2
© 2004-2006 Manuel Collado
Versiones-20
Técnicas de nombres en configuraciones

Traducción externa


Nombres simbólicos (“tags”)


Usar un control de versiones, añadiendo el
mecanismo adecuado para nombrar globalmente las
versiones de componentes de una configuración dada
Usados por RCS. Una misma versión de un
componente puede tener varios nombres o tags (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
© 2004-2006 Manuel Collado
Versiones-21
Desarrollo mediante cambios sucesivos

Evolución de la línea base
Cambio 2
A2
B2
A1
B1
Línea base
Cambio 1
© 2004-2006 Manuel Collado
C1
D1
E1
Versiones-22
Desarrollo mediante cambios sucesivos

Evolución de la línea base
Línea base
Cambio 2
A2
B2
Cambio 1
A1
B1
© 2004-2006 Manuel Collado
C1
D1
E1
Versiones-23
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
© 2004-2006 Manuel Collado
C1
Versiones-24
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
© 2004-2006 Manuel Collado
C1
D1
F3
E1
Versiones-25
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
© 2004-2006 Manuel Collado
C1
Versiones-26
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
© 2004-2006 Manuel Collado
C1
Versiones-27
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
© 2004-2006 Manuel Collado
C1
Versiones-28
Desarrollo simultáneo de cambios

Cambio 3 integrado
Línea base
E3
Cambio 3
Cambio 2
A2
B2
Cambio 1
A1
B1
© 2004-2006 Manuel Collado
C1
D1
F3
E1
Versiones-29
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
© 2004-2006 Manuel Collado
C1
Versiones-30
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
© 2004-2006 Manuel Collado
D2
C1
D1
E1
Versiones-31
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
© 2004-2006 Manuel Collado
D2
C1
D1
E1
Versiones-32
Cambios simultáneos de un componente

Cambio 3 integrado
Línea base
D3’
Cambio 3
Cambio 2
A2
B2
Cambio 1
A1
B1
© 2004-2006 Manuel Collado
E3
F3
D2
C1
D1
E1
Versiones-33
Ejemplos de herramientas

SCCS (Source Code Control System)


RCS (Revision Control System)


Control de configuración, cambios simultáneos
Subversion


Herramienta similar, GNU
CVS (Concurrent Version System)


Control básico de versiones, original de UNIX
Similar a la anterior, más moderna
Gnuarch, etc.
© 2004-2006 Manuel Collado
Versiones-34
Control de versiones: herramienta RCS
rlog
co
fichero,v
RO
fichero
© 2004-2006 Manuel Collado
co -l
RW
ci
fichero
Versiones-35
Control de configuración: herramienta CVS
add edit remove
checkout
(update)
commit
abort
© 2004-2006 Manuel Collado
CVSROOT
Versiones-36
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
© 2004-2006 Manuel Collado
Versiones-37
Control de cambios: herramienta Aegis
Directorio
de cambio
Directorio de
integración
Directorio
de cambio
Directorio de
línea base
Repositorio
(historia)
© 2004-2006 Manuel Collado
Versiones-38