© 2004-2006 manuel colladoversiones-1 control de versiones, configuración y cambios vcs: version...
TRANSCRIPT
© 2004-2006 Manuel Collado
Versiones-1
Control de versiones, configuración y cambios
VCS: Version Control System
SCM: Software Configuration Management
CMS: Configuration Management System
© 2004-2006 Manuel Collado
Versiones-2
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-3
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-4
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-5
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-6
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-7
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-8
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-9
1 2 3 4
Grafo de evolución Revisiones sucesivas de un componente
© 2004-2006 Manuel Collado
Versiones-10
1.1 1.2 1.3 1.4
2.1 2.2 2.3
3.1 3.2
4.1
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)
Variantes
© 2004-2006 Manuel Collado
Versiones-11
1.1 1.2 1.3 1.4
2.1 2.2 2.3
3.1 3.2
1.5
2.4
3.3
2.4 = 2.3 + 1.5 - 1.43.3 = 3.2 + 1.5 - 1.4
“Diff-Merge”:
Propagación de cambios
© 2004-2006 Manuel Collado
Versiones-12
1.1 1.2 1.3 1.4
2.1 2.2 2.3
3.1 3.2
4.1 4.2
Igual que propagación de cambios(o bien, no hay que hacer nada especial)
Fusión de variantes
© 2004-2006 Manuel Collado
Versiones-13
1.1 1.2 1.3 1.4 1.5
2.1 2.2
1.2 1.3 1.4 1.5
2.1 2.2
Técnicas de almacenamiento Deltas directos
© 2004-2006 Manuel Collado
Versiones-14
1.2 1.3 1.41.1
2.1 2.2
1.2 1.3 1.41.1
2.1 2.2
1.5
Técnicas de almacenamiento Deltas inversos (RCS)
© 2004-2006 Manuel Collado
Versiones-15
x x x x xx x x x x
<<1.3,1.2y y y y
>><<1.2
z z z z z zz z z z z z
>>x x x x x
<<1.3t t t
>>x x x x xx x x x x
Técnicas de almacenamiento Marcado selectivo (SCCS)
© 2004-2006 Manuel Collado
Versiones-16
Control de configuración Evolución de un sistema
Añadir componentes Suprimir componentes Modificar componentes
Evolución temporal (revisiones) Cambio a lo largo del tiempo
Evolución espacial (variantes) Versiones simultáneas
© 2004-2006 Manuel Collado
Versiones-17
A
A
A
A
B
B
B C
C
C
C D
D
D
E
Rev. 1
Rev. 2
Rev. 3
Rev. 4
Ejemplo de evolución de configuración
© 2004-2006 Manuel Collado
Versiones-18
Problema de coherencia de versiones
A1
A2
B2
B1
C1
C2
D2
D1
E1
Rev. 1
Rev. 2
Rev. 3
Rev. 4
© 2004-2006 Manuel Collado
Versiones-19
Problema de coherencia de versiones
A1Rev. 1
Rev. 2
Rev. 3
Rev. 4 A2
A2
A1
B2
B2
B1 C1
C1
C1
C2
D1
D2
D2 D2
© 2004-2006 Manuel Collado
Versiones-20
Modelo ortogonal de versiones
A B C D E
componentes
1
2
3
4
revisiones
XY
Zvariantes
Ejemplo de nombrado uniforme: B-X-3 B 1.2
1.2
1.1
1.21.1
2.1
2.2
2.3
1.2 1.1
1.1
1.1
1.1
1.1
1.2
1.1
1.1
1.2
1.2
1.2
---
---
------
---
© 2004-2006 Manuel Collado
Versiones-21
Técnicas de nombres en configuraciones Traducción externa
Usar un control de versiones, añadiendo el mecanismo adecuado para nombrar globalmente las versiones de componentes de una configuración dada
Nombres simbólicos (“tags”) 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-22
A1 B1 C1 D1 E1
A2 B2
Cambio 1
Cambio 2
Línea base
Desarrollo mediante cambios sucesivos
Evolución de la línea base
© 2004-2006 Manuel Collado
Versiones-23
A1 B1 C1 D1 E1
A2 B2
Cambio 1
Cambio 2
Línea base
Desarrollo mediante cambios sucesivos
Evolución de la línea base
© 2004-2006 Manuel Collado
Versiones-24
Desarrollo mediante cambios sucesivos
Evolución de la línea base
A1 B1 C1 D1 E1
A2 B2
Cambio 1
Cambio 2
Línea base
D E3 F3Cambio 3
© 2004-2006 Manuel Collado
Versiones-25
Desarrollo mediante cambios sucesivos
Evolución de la línea base
A1 B1 C1 D1 E1
A2 B2
E3 F3
Cambio 1
Cambio 2
Línea base
Cambio 3
© 2004-2006 Manuel Collado
Versiones-26
Desarrollo simultáneo de cambios Cambios 2 y 3 en desarrollo
Cambio 1
Cambio 2
Línea base
A1 B1 C1 D1 E1
A2 B2 D E3 F3
Cambio 3
© 2004-2006 Manuel Collado
Versiones-27
Desarrollo simultáneo de cambios Cambio 2 integrado
Cambio 1
Cambio 2
Línea base
A1 B1 C1 D1 E1
A2 B2
D E3 F3Cambio 3
© 2004-2006 Manuel Collado
Versiones-28
Desarrollo simultáneo de cambios Cambio 3 actualizado
Cambio 1
Cambio 2
Línea base
A1 B1 C1 D1 E1
A2 B2
D E3 F3Cambio 3
© 2004-2006 Manuel Collado
Versiones-29
Desarrollo simultáneo de cambios Cambio 3 integrado
Cambio 1
Cambio 2
Línea base
A1 B1 C1 D1 E1
A2 B2
E3 F3Cambio 3
© 2004-2006 Manuel Collado
Versiones-30
Cambios simultáneos de un componente
Cambios 2 y 3 en desarrollo
Cambio 1
Cambio 2
Línea base
A1 B1 C1 D1 E1
A2 B2 D3 E3 F3
Cambio 3
D2
© 2004-2006 Manuel Collado
Versiones-31
Cambios simultáneos de un componente
Cambio 2 integrado
Cambio 1
Cambio 2
Línea base
A1 B1 C1 D1 E1
A2 B2
D3 E3 F3Cambio 3
D2
© 2004-2006 Manuel Collado
Versiones-32
Cambios simultáneos de un componente
Cambio 3 actualizado
D3’ = D3 + D2 - D1
Cambio 1
Cambio 2
Línea base
A1 B1 C1 D1 E1
A2 B2
D3’ E3 F3Cambio 3
D2
© 2004-2006 Manuel Collado
Versiones-33
Cambios simultáneos de un componente
Cambio 3 integrado
Cambio 1
Cambio 2
Línea base
A1 B1 C1 D1 E1
A2 B2
E3 F3Cambio 3
D2
D3’
© 2004-2006 Manuel Collado
Versiones-34
Ejemplos de herramientas
SCCS (Source Code Control System) Control básico de versiones, original de UNIX
RCS (Revision Control System) Herramienta similar, GNU
CVS (Concurrent Version System) Control de configuración, cambios simultáneos
Subversion Similar a la anterior, más moderna
Gnuarch, etc.
© 2004-2006 Manuel Collado
Versiones-35
fichero,v
ficheroficheroRO RW
co -lco
ci
rlog
Control de versiones: herramienta RCS
© 2004-2006 Manuel Collado
Versiones-36
Control de configuración: herramienta CVS
CVSROOT
add remove
checkout
commit
(update)
edit
abort
© 2004-2006 Manuel Collado
Versiones-37
Ciclo de vida de cambios: Aegis
Esperando desarrollo
En integración
Completado
En desarrollo
Anular
Anular
Anular
En revisión
Esperando integración
Nuevo cambio
Inicio desarrollo
Fin desarrollo
Revisión aceptada
Rechazo
RechazoIntegraciónaceptada
© 2004-2006 Manuel Collado
Versiones-38
Control de cambios: herramienta Aegis
Directoriode cambio
Directoriode cambio
Directorio deintegración
Directorio delínea base
Repositorio(historia)