Gestión de versiones
La gestión de versiones
es un aspecto muy importante a tener en cuenta en el ciclo de vida de desarrollo del software y se recomienda definir
las políticas de versionado de forma temprana, en las primeras instancias de planificación del proyecto.
La gestión de versiones es el proceso de realizar el seguimiento y control de las diferentes versiones de los
artefactos de software o ítems de configuración y los sistemas de los cuales forman parte. No solamente
aplica al código, aplica a cualquier artefactos generado durante el proceso de desarrollo: diseño,
pruebas, requisitos, planes, documentos, etc.
Es especialmente importante para el caso del código fuente, ya que debe asegurar que los cambios realizados
por distintos desarrolladores a estas versiones no interfieran entre sí. También puede verse como el proceso de
gestión de líneas de código (codelines) y líneas
base.
La línea principal (mainline) es una secuencia de versiones del sistema desarrolladas a partir de una línea base
original.
Herramientas para la gestión de versiones
La definición de una herramienta para la gestión de las versiones de código (que a su vez oficia de repositorio del
proyecto) es muy importante. Resulta prácitamente imposible realizar una correcta gestión de versiones del
sistema de forma manual. Utilizar una herramienta es prácticamente una necesidad.
Existen básicamente dos tipos de herramientas o sistemas para la gestión de versiones:
-
Sistema centralizado: existe un repositorio único que contiene todas las versiones de los componentes de
software.
-
En este modelo todas las funciones de control de versiones ocurren en un servidor compartido.
-
Si dos desarrolladores tratan de cambiar un mismo archivo al mismo tiempo, y sin un mecanismo de acceso,
uno podraí sobreescribir el trabajo del otro.
-
Se basa en: File locking y Version Merging
-
Sistema distribuido: múltiples versiones del repositorio de componentes existe al mismo tiempo.
-
Tienen un enfoque de manejo de versiones entre pares (peer-to-peer).
-
En lugar de existir un repositorio en el cual sincronizan clientes, aquí las computadoras sincronizan entre
sí.
-
No hay una copia canónica del código.
-
Las operaciones más comunes (commit, revertir cambios, ver historial) son más rápidas.
-
Menor riesgo de pérdida de datos.
Dependiendo de la tecnología, existen diversas herramientas que se pueden adquirir. Ejemplos de estas herramientas
pueden ser: Git (distribuido), Subversion (centralizado), CVS (centralizado) y otras.
Definición de una política de versionado
La numeración de las versiones de los incrementos de software permiten expresar de forma normalizada las modificaciones
existentes entre las distintas versiones, indicando los cambios que se han producido entre una versión y la siguiente.
Existen distintas técnicas para la numeración de versiones, lo deseable es que cada organismo defina la suya. A
continuación presentamos una sugerencia para esta definición.
La numeración de una versión es una notación numérica compuesta por tres números (y un cuarto opcional) separados
por puntos con la siguiente notación:
major.minor.revision[.entrega]
Cada uno de estos números tienen el siguiente significado:
-
major: indica la versión principal del software, consistiendo en un conjunto de funcionalidades concretas
que son recogidas y cubiertas en dicha versión.
-
minor: indican funcionalidad menor cubierta en la versión de software entregada.
-
revision: se modifican cuando hay revisiones de código ante fallos de la aplicación.
-
entrega: este dígito tiene el objetivo de llevar la cuenta del número de veces que una entrega se rechaza,
por incumplimiento de algún requisitos de la gestión de entregas o del proyecto.
Otro ejemplo de política de versionado (en este caso para la herramienta Git) se puede encontrar en el siguiente enlace.
|