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

Post on 20-Apr-2015

15 views 1 download

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

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

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

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”

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

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

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

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'

CVERSION-9

Control de versiones, configuración y cambios

1 2 3 4

Grafo de evolución

Revisiones sucesivas de un componente

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

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

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

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

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)

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)

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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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’

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)

CVERSION-35

Control de versiones, configuración y cambios

Control de versiones: herramienta RCS

fichero,v

ficheroficheroRO RW

co -lco

ci

rlog

CVERSION-36

Control de versiones, configuración y cambios

Control de configuración: herramienta CVS

CVSROOT

add remove

checkout

commit

(update)

edit

abort

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)