CVERSION-1 Control de versiones, configuración y cambios.

37
CVERSION-1 Control de versiones, configuración y cambios

Transcript of CVERSION-1 Control de versiones, configuración y cambios.

Page 1: CVERSION-1 Control de versiones, configuración y cambios.

CVERSION-1

Control de versiones, configuración y cambios

Page 2: CVERSION-1 Control de versiones, configuración y cambios.

CVERSION-2

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

Page 3: CVERSION-1 Control de versiones, configuración y cambios.

CVERSION-3

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

Page 4: CVERSION-1 Control de versiones, configuración y cambios.

CVERSION-4

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”

Page 5: CVERSION-1 Control de versiones, configuración y cambios.

CVERSION-5

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

Page 6: CVERSION-1 Control de versiones, configuración y cambios.

CVERSION-6

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

Page 7: CVERSION-1 Control de versiones, configuración y cambios.

CVERSION-7

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

Page 8: CVERSION-1 Control de versiones, configuración y cambios.

CVERSION-8

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'

Page 9: CVERSION-1 Control de versiones, configuración y cambios.

CVERSION-9

Control de versiones, configuración y cambios

1 2 3 4

Grafo de evolución

Revisiones sucesivas de un componente

Page 10: CVERSION-1 Control de versiones, configuración y cambios.

CVERSION-10

Control de versiones, configuración y cambios

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

Page 11: CVERSION-1 Control de versiones, configuración y cambios.

CVERSION-11

Control de versiones, configuración y cambios

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” / ”Patch”:

Propagación de cambios

Page 12: CVERSION-1 Control de versiones, configuración y cambios.

CVERSION-12

Control de versiones, configuración y cambios

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 de forma manual)

Fusión de variantes

4.1 = 3.2 + 2.3 - 2.3

Page 13: CVERSION-1 Control de versiones, configuración y cambios.

CVERSION-13

Control de versiones, configuración y cambios

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

Page 14: CVERSION-1 Control de versiones, configuración y cambios.

CVERSION-14

Control de versiones, configuración y cambios

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)

Page 15: CVERSION-1 Control de versiones, configuración y cambios.

CVERSION-15

Control de versiones, configuración y cambios

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)

Page 16: CVERSION-1 Control de versiones, configuración y cambios.

CVERSION-16

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)

Page 17: CVERSION-1 Control de versiones, configuración y cambios.

CVERSION-17

Control de versiones, configuración y cambios

Ejemplo de evolución de configuración

A

A

A

A

B

B

B C

C

C

C D

D

D

E

Rev. 1

Rev. 2

Rev. 3

Rev. 4

Page 18: CVERSION-1 Control de versiones, configuración y cambios.

CVERSION-18

Control de versiones, configuración y cambios

Problema de coherencia de versiones

A1

A2

B2

B1

C1

C2

D2

D1

E1

Rev. 1

Rev. 2

Rev. 3

Rev. 4

Page 19: CVERSION-1 Control de versiones, configuración y cambios.

CVERSION-19

Control de versiones, configuración y cambios

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

Page 20: CVERSION-1 Control de versiones, configuración y cambios.

CVERSION-20

Control de versiones, configuración y cambios

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.1

1.2

1.1

2.1

2.2

2.3

1.1 1.1 1.1 1.3

Page 21: CVERSION-1 Control de versiones, configuración y cambios.

CVERSION-21

Control de versiones, configuración y cambios

Técnicas de nombres en configuraciones

Control de configuración control de versiones + nombrado global

Nombres simbólicos o “tags” 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

Page 22: CVERSION-1 Control de versiones, configuración y cambios.

CVERSION-22

Control de versiones, configuración y cambios

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

Page 23: CVERSION-1 Control de versiones, configuración y cambios.

CVERSION-23

Control de versiones, configuración y cambios

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

Page 24: CVERSION-1 Control de versiones, configuración y cambios.

CVERSION-24

Control de versiones, configuración y cambios

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

Page 25: CVERSION-1 Control de versiones, configuración y cambios.

CVERSION-25

Control de versiones, configuración y cambios

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

Page 26: CVERSION-1 Control de versiones, configuración y cambios.

CVERSION-26

Control de versiones, configuración y cambios

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

Page 27: CVERSION-1 Control de versiones, configuración y cambios.

CVERSION-27

Control de versiones, configuración y cambios

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

Page 28: CVERSION-1 Control de versiones, configuración y cambios.

CVERSION-28

Control de versiones, configuración y cambios

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

Page 29: CVERSION-1 Control de versiones, configuración y cambios.

CVERSION-29

Control de versiones, configuración y cambios

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

Page 30: CVERSION-1 Control de versiones, configuración y cambios.

CVERSION-30

Control de versiones, configuración y cambios

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

Page 31: CVERSION-1 Control de versiones, configuración y cambios.

CVERSION-31

Control de versiones, configuración y cambios

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

Page 32: CVERSION-1 Control de versiones, configuración y cambios.

CVERSION-32

Control de versiones, configuración y cambios

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

Page 33: CVERSION-1 Control de versiones, configuración y cambios.

CVERSION-33

Control de versiones, configuración y cambios

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’

Page 34: CVERSION-1 Control de versiones, configuración y cambios.

CVERSION-34

Control de versiones, configuración y cambios

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

Ciclo de vida de cambios (Aegis)

Page 35: CVERSION-1 Control de versiones, configuración y cambios.

CVERSION-35

Control de versiones, configuración y cambios

Control de versiones: herramienta RCS

fichero,v

ficheroficheroRO RW

co -lco

ci

rlog

Page 36: CVERSION-1 Control de versiones, configuración y cambios.

CVERSION-36

Control de versiones, configuración y cambios

Control de configuración: herramienta CVS

CVSROOT

add remove

checkout

commit

(update)

edit

abort

Page 37: CVERSION-1 Control de versiones, configuración y cambios.

CVERSION-37

Control de versiones, configuración y cambios

Control de cambios: herramienta Aegis

Directoriode cambio

Directoriode cambio

Directorio deintegración

Directorio delínea base

Repositorio(historia)