Saltar la navegación

2.2.2.- Gestión de versiones y entregas.

Caso práctico

Mujer de pelo largo mirando del frente.

María ha desarrollado varias versiones del módulo de reservas de la aplicación de Gestión Hotelera. Le explica a Carlos como ha sido la evolución de cada versión del módulo, desde la primera versión, hasta la versión actual, que ella cree definitiva.

Esquema en el que se muestra la gestión de entregas del software. En verde, aparece el proceso de de desarrollo de software. Cuando se desarrolla una aplicación, se pueden generar nuevas versiones del programa, o de un módulo, clase o método. Al realizar una nueva versión, es necesario, pasarlo a “Gestión de la configuración”, para controlar que la nueva versión cumple con las especificaciones requeridas, para ellos se aplica el “Aseguramiento de la calidad”. Si hay alguna inconcruencia, la nueva versión realizada, o los elementos versionados, vuelven a la Gestión de Control de la Configuración y de ahí a “Proceso de Desarrollo de software”,  para volver a implementarl.

Las versiones hacen referencia a la evolución de un único elemento, dentro de un sistema software. La evolución puede representarse en forma de grafo, donde los nodos son las versiones y los arcos corresponden a la creación de una versión a partir de otra ya existente.

Grafo de evolución simple: las revisiones sucesivas de un componente dan lugar a una simple secuencia lineal. Esta evolución no presenta problemas en la organización del repositorio y las versiones se designan mediante números correlativos.

Variantes: en este caso, existen varias versiones del componente. El grafo ya no es una secuencia lineal, si no que adopta la forma de un árbol. La numeración de las versiones requerirá dos niveles. El primer número designa la variante (línea de evolución) y el segundo la versión particular (revisión) a lo largo de dicha variante.

La terminología que se usa para referirse a los elementos del grafo son:

  • Tronco (trunk): es la variante principal.
  • Cabeza (head): es la última versión del tronco.
  • Ramas (branches): son la variantes secundarias.
  • Delta: es el cambio de una revisión respecto a la anterior.

Propagación de cambios: cuando se tienen variantes que se desarrollan en paralelo, suele ser necesario aplicar un mismo cambio a varias variantes.

Fusión de variantes: en determinados momentos puede dejar de ser necesario mantener una rama independiente. En este caso se puede fundir con otra (MERGE).

Técnicas de almacenamiento: como en la mayoría de los casos, las distintas versiones tienen en común gran parte de su contenido, se organiza el almacenamiento para que no se desaproveche espacio repitiendo los datos en común de varias versiones.

  • Deltas directos: se almacena la primera versión completa, y luego los cambios mínimos necesarios para reconstruir cada nueva versión a partir de la anterior.
  • Deltas inversos: se almacena completa la última versión del tronco y los cambios necesarios para reconstruir cada versión anterior a partir de la siguiente. En las ramas se mantiene el uso de los deltas directos.
  • Marcado selectivo: se almacena el texto refundido de todas las versiones como una secuencia lineal, marcando cada sección del conjunto con los números de versiones que corresponde.

En cuanto a la gestión de entregas, en primer lugar definimos el concepto de entrega como una instancia de un sistema que se distribuye a los usuarios externos al equipo de desarrollo.

La planificación de la entrega se ocupa de cuándo emitir una versión del sistema como una entrega. La entrega está compuesta por el conjunto de programas ejecutables, los archivos de configuración que definan como se configura la entrega para una instalación particular, los archivos de datos que se necesitan para el funcionamiento del sistema, un programa de instalación para instalar el sistema en el hardware de destino, documentación electrónica y en papel, y, el embalaje y publicidad asociados, diseñados para esta entrega Actualmente los sistemas se entregan en discos ópticos (CD o DVD) o como archivos de instalación descargables desde la red.