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