Descargar

Control de versiones, configuración y cambios

Enviado por Pablo Turmero


    edu.red

    Contenido

    Evolución del software Control de versiones Control de configuración Control de cambios Repositorio. Almacenamiento eficiente Ejemplos de herramientas

    edu.red

    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

    edu.red

    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”

    edu.red

    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

    edu.red

    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

    edu.red

    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

    edu.red

    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'

    edu.red

    (Gp:) 1 (Gp:) 2 (Gp:) 3 (Gp:) 4

    Grafo de evolución Revisiones sucesivas de un componente

    edu.red

    (Gp:) 1.1 (Gp:) 1.2 (Gp:) 1.3 (Gp:) 1.4 (Gp:) 2.1 (Gp:) 2.2 (Gp:) 2.3 (Gp:) 3.1 (Gp:) 3.2 (Gp:) 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

    edu.red

    (Gp:) 1.1 (Gp:) 1.2 (Gp:) 1.3 (Gp:) 1.4 (Gp:) 2.1 (Gp:) 2.2 (Gp:) 2.3 (Gp:) 3.1 (Gp:) 3.2 (Gp:) 1.5 (Gp:) 2.4 (Gp:) 3.3

    2.4 = 2.3 + 1.5 – 1.4 3.3 = 3.2 + 1.5 – 1.4 “Diff-Merge” / ”Patch”: Propagación de cambios

    edu.red

    (Gp:) 1.1 (Gp:) 1.2 (Gp:) 1.3 (Gp:) 1.4 (Gp:) 2.1 (Gp:) 2.2 (Gp:) 2.3 (Gp:) 3.1 (Gp:) 3.2 (Gp:) 4.1 (Gp:) 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

    edu.red

    (Gp:) 1.1 (Gp:) 1.2 (Gp:) 1.3 (Gp:) 1.4 (Gp:) 1.5 (Gp:) 2.1 (Gp:) 2.2 (Gp:) 1.2 (Gp:) 1.3 (Gp:) 1.4 (Gp:) 1.5 (Gp:) 2.1 (Gp:) 2.2

    Técnicas de almacenamiento Deltas directos

    edu.red

    (Gp:) 1.2 (Gp:) 1.3 (Gp:) 1.4 (Gp:) 1.1 (Gp:) 2.1 (Gp:) 2.2 (Gp:) 1.2 (Gp:) 1.3 (Gp:) 1.4 (Gp:) 1.1 (Gp:) 2.1 (Gp:) 2.2 (Gp:) 1.5

    Técnicas de almacenamiento Deltas inversos (RCS)

    edu.red

    x x x x x x x x x x

    x x x x x

    x x x x x x x x x x Técnicas de almacenamiento Marcado selectivo (SCCS)

    edu.red

    Control de configuración Evolución de un sistema Añadir componentes Suprimir componentes Modificar componentes Evolución temporal (revisiones) Evolución espacial (variantes)

    edu.red

    Ejemplo de evolución de configuración (Gp:) A (Gp:) A (Gp:) A (Gp:) A (Gp:) B (Gp:) B (Gp:) B (Gp:) C (Gp:) C (Gp:) C (Gp:) C (Gp:) D (Gp:) D (Gp:) D (Gp:) E (Gp:) Rev. 1 (Gp:) Rev. 2 (Gp:) Rev. 3 (Gp:) Rev. 4

    edu.red

    Problema de coherencia de versiones A1 A2 B2 B1 C1 C2 D2 D1 E1 Rev. 1 Rev. 2 Rev. 3 Rev. 4

    edu.red

    Problema de coherencia de versiones (Gp:) A1

    Rev. 1 Rev. 2 Rev. 3 Rev. 4 (Gp:) A2

    (Gp:) A2

    (Gp:) A1

    (Gp:) B2

    (Gp:) B2

    (Gp:) B1

    (Gp:) C1

    (Gp:) C1

    (Gp:) C1

    (Gp:) C2

    (Gp:) D1

    (Gp:) D2

    (Gp:) D2

    (Gp:) D2

    edu.red

    Modelo ortogonal de versiones (Gp:) A (Gp:) B (Gp:) C (Gp:) D (Gp:) E (Gp:) componentes (Gp:) 1 (Gp:) 2 (Gp:) 3 (Gp:) 4 (Gp:) revisiones (Gp:) X (Gp:) Y (Gp:) Z (Gp:) variantes

    ? 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

    edu.red

    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

    edu.red

    Desarrollo mediante cambios sucesivos Evolución de la línea base (Gp:) A1 (Gp:) B1 (Gp:) C1 (Gp:) D1 (Gp:) E1 (Gp:) A2 (Gp:) B2 (Gp:) Cambio 1 (Gp:) Cambio 2 (Gp:) Línea base

    edu.red

    Desarrollo mediante cambios sucesivos Evolución de la línea base (Gp:) A1 (Gp:) B1 (Gp:) C1 (Gp:) D1 (Gp:) E1 (Gp:) A2 (Gp:) B2 (Gp:) Cambio 1 (Gp:) Cambio 2 (Gp:) Línea base

    edu.red

    Desarrollo mediante cambios sucesivos Evolución de la línea base (Gp:) A1 (Gp:) B1 (Gp:) C1 (Gp:) D1 (Gp:) E1 (Gp:) A2 (Gp:) B2 (Gp:) Cambio 1 (Gp:) Cambio 2 (Gp:) Línea base (Gp:) D (Gp:) E3 (Gp:) F3 (Gp:) Cambio 3

    edu.red

    Desarrollo mediante cambios sucesivos Evolución de la línea base (Gp:) A1 (Gp:) B1 (Gp:) C1 (Gp:) D1 (Gp:) E1 (Gp:) A2 (Gp:) B2 (Gp:) E3 (Gp:) F3 (Gp:) Cambio 1 (Gp:) Cambio 2 (Gp:) Línea base (Gp:) Cambio 3

    edu.red

    Desarrollo simultáneo de cambios Cambios 2 y 3 en desarrollo (Gp:) Cambio 1 (Gp:) Cambio 2 (Gp:) Línea base (Gp:) A1 (Gp:) B1 (Gp:) C1 (Gp:) D1 (Gp:) E1 (Gp:) A2 (Gp:) B2 (Gp:) D (Gp:) E3 (Gp:) F3 (Gp:) Cambio 3

    edu.red

    Desarrollo simultáneo de cambios Cambio 2 integrado (Gp:) Cambio 1 (Gp:) Cambio 2 (Gp:) Línea base (Gp:) A1 (Gp:) B1 (Gp:) C1 (Gp:) D1 (Gp:) E1 (Gp:) A2 (Gp:) B2 (Gp:) D (Gp:) E3 (Gp:) F3 (Gp:) Cambio 3

    edu.red

    Desarrollo simultáneo de cambios Cambio 3 actualizado (Gp:) Cambio 1 (Gp:) Cambio 2 (Gp:) Línea base (Gp:) A1 (Gp:) B1 (Gp:) C1 (Gp:) D1 (Gp:) E1 (Gp:) A2 (Gp:) B2 (Gp:) D (Gp:) E3 (Gp:) F3 (Gp:) Cambio 3

    edu.red

    Desarrollo simultáneo de cambios Cambio 3 integrado (Gp:) Cambio 1 (Gp:) Cambio 2 (Gp:) Línea base (Gp:) A1 (Gp:) B1 (Gp:) C1 (Gp:) D1 (Gp:) E1 (Gp:) A2 (Gp:) B2 (Gp:) E3 (Gp:) F3 (Gp:) Cambio 3

    edu.red

    Cambios simultáneos de un componente Cambios 2 y 3 en desarrollo (Gp:) Cambio 1 (Gp:) Cambio 2 (Gp:) Línea base (Gp:) A1 (Gp:) B1 (Gp:) C1 (Gp:) D1 (Gp:) E1 (Gp:) A2 (Gp:) B2 (Gp:) D3 (Gp:) E3 (Gp:) F3 (Gp:) Cambio 3 (Gp:) D2

    edu.red

    Cambios simultáneos de un componente Cambio 2 integrado (Gp:) Cambio 1 (Gp:) Cambio 2 (Gp:) Línea base (Gp:) A1 (Gp:) B1 (Gp:) C1 (Gp:) D1 (Gp:) E1 (Gp:) A2 (Gp:) B2 (Gp:) D3 (Gp:) E3 (Gp:) F3 (Gp:) Cambio 3 (Gp:) D2

    edu.red

    Cambios simultáneos de un componente Cambio 3 actualizado (Gp:) D3’ = D3 + D2 – D1 (Gp:) Cambio 1 (Gp:) Cambio 2 (Gp:) Línea base (Gp:) A1 (Gp:) B1 (Gp:) C1 (Gp:) D1 (Gp:) E1 (Gp:) A2 (Gp:) B2 (Gp:) D3’ (Gp:) E3 (Gp:) F3 (Gp:) Cambio 3 (Gp:) D2

    edu.red

    Cambios simultáneos de un componente Cambio 3 integrado (Gp:) Cambio 1 (Gp:) Cambio 2 (Gp:) Línea base (Gp:) A1 (Gp:) B1 (Gp:) C1 (Gp:) D1 (Gp:) E1 (Gp:) A2 (Gp:) B2 (Gp:) E3 (Gp:) F3 (Gp:) Cambio 3 (Gp:) D2 (Gp:) D3’

    edu.red

    (Gp:) Esperando desarrollo (Gp:) En integración (Gp:) Completado (Gp:) En desarrollo (Gp:) Anular (Gp:) Anular (Gp:) Anular (Gp:) En revisión (Gp:) Esperando integración (Gp:) Nuevo cambio (Gp:) Inicio desarrollo (Gp:) Fin desarrollo (Gp:) Revisión aceptada (Gp:) Rechazo (Gp:) Rechazo (Gp:) Integración aceptada

    Ciclo de vida de cambios (Aegis)

    edu.red

    Control de versiones: herramienta RCS (Gp:) fichero,v (Gp:) fichero (Gp:) fichero (Gp:) RO (Gp:) RW (Gp:) co -l (Gp:) co (Gp:) ci (Gp:) rlog

    edu.red

    Control de configuración: herramienta CVS (Gp:) CVSROOT (Gp:) add (Gp:) remove (Gp:) checkout (Gp:) commit (Gp:) (update) (Gp:) edit (Gp:) abort

    edu.red

    Control de cambios: herramienta Aegis (Gp:) Directorio (Gp:) de (Gp:) cambio (Gp:) Directorio (Gp:) de (Gp:) cambio (Gp:) Directorio de (Gp:) integración (Gp:) Directorio de (Gp:) línea base (Gp:) Repositorio (Gp:) ( (Gp:) historia)