Cuando oímos versionado de software, pensamos en algo complicado o difícil, que solo los desarrolladores deberían saber hacer. Sin embargo, se trata de una opción con mucha utilidad tanto para los programadores como para una organización y sus usuarios.
¡Vamos a ver de qué se trata!
¿Qué es el versionado de software?
El proceso al que denominamos versionado de software hace referencia a una opción cuyo objetivo es identificar las nuevas funciones, características, y correcciones de cada actualización de un proyecto.
Así, se sobreentiende que cualquier actualización de un software debe o bien aumentar la funcionalidad de este, o corregir errores, o ambas. Sin embargo, hay otro punto fundamental en el versionado, y es que el proyecto no se modifica a un nivel esencial.
¿Son necesarias las actualizaciones?
Las actualizaciones son una parte del ciclo de vida útil de un software, y son importantes para mantener o mejorar la funcionalidad o las características de un proyecto. Por ejemplo, cuando hay una actualización en la plataforma WordPress, muchos de los desarrolladores de los plugin revisan sus herramientas para que se mantengan adaptadas a la plataforma y no surjan problemas de sincronización.
En general, existen dos tipos de versionado: el numérico y las versiones por estabilidad. En este artículo, nos centraremos en el versionado numérico.
¿Cómo se realiza una versión numérica?
Para llevar a cabo el versionado, primero hay que fijar las versiones tanto de las librerías como de los componentes utilizados en el proyecto. De esta manera, evitaremos los errores de utilización cuando estos se actualicen por su parte.
Siendo más específicos, y mediante un ejemplo, vamos a explicar cómo se hace el versionado numérico en sí.
En ocasiones, hemos visto números al lado del nombre de un programa, por ejemplo:
GestiOS 1.2.5
Vamos a denominar esos números:
- 1 o Mayor: implementa cambios que hacen el software incompatible con la versión anterior.
- 2 o Menor: añade cambios estructurales, de estética o rendimiento, pero todavía sigue siendo compatible con la versión anterior.
- 5 o Patch (Parche): se trata normalmente de correcciones, donde se mantiene la compatibilidad pero que no incluye grandes cambios.
Hay que tener en cuenta que los números que forman la versión son numéricos, nunca serán negativos y, además, son enteros. Cualquier incremento siempre se dará en 1. Por ejemplo, si queremos incrementar nuestro ejemplo tras un parche:
GestiOS 1.2.6
Además, se recomienda que la primera versión que se presenta al público comience por un Mayor de 1. Es decir, nuestra primera versión de GestiOS debería llamarse GestiOS 1.0.
En ocasiones, también encontramos un cuarto valor, que puede utilizar letras y números, por ejemplo:
GestiOS 0.2.1-RC1
Estos “RC” indican que se trata de un “Release Candidate”, es decir, que se trata de una actualización previa a la primera versión de producción. Sirven para llevar el control del número de veces que una entrega del proyecto se rechaza.
Características de las versiones
Entre las características que definen las diferentes versiones, podemos encontrar:
- Puede abarcar cambios en el sistema, en la estructura de la base de datos, en protocolos, etc.
- Incluyen información importante del proyecto.
¿Para qué sirve el versionado?
Nos gustaría destacar algunas de las funciones que cumple este versionado en torno al desarrollo de software:
- Permite identificar bugs, problemas o errores en el funcionamiento del software.
- Proporciona la hoja de ruta de una aplicación, facilitando su observación y definiendo ligeramente las siguientes actualizaciones.
- Puede devolver una aplicación a versiones y estados anteriores.
- Hace que se puedan comparar las versiones y ver las novedades de cada actualización.
- Lleva un control más estricto en equipos de trabajo.
¿Qué es un bug?
Un error o defecto en el software que hace que no funcione de forma correcta.
Softwares de control de versiones
Para facilitar el proceso, se han desarrollado los controladores de versiones, sistemas que nos permiten guardar los registros de las modificaciones que hacemos en un proyecto para poder recuperar posteriormente un estado anterior de este.
¿Suena raro? ¡Nada más lejos de la realidad! Todos utilizamos inconscientemente algún sistema de control de versiones, como, por ejemplo, cuando editamos archivos en la nube, es decir, cuando usamos programas como Word o Excel en Google Drive.
Características de un controlador de versiones
- Monitoriza y ayuda a la resolución de conflictos.
- Revierte y deshace cambios en el código fuente.
- Permite realizar una copia de seguridad externa del código.
Mejores controladores de versiones
Y ahora, al fin… hablemos de cuáles son los “ayudantes de versionado” más populares:
- Git: modelo de repositorio distribuido compatible con los protocolos más usados y que maneja eficientemente cualquier tipo de proyecto.
- CVS: modelo de repositorio cliente-servidor, que permite que varios desarrolladores trabajen en el mismo proyecto a la vez.
- Apache Subversion (SVN): modelo de repositorio cliente-servidor que versiona los directorios y sus operaciones más importantes.
- Mercurial: herramienta distribuida de versionado desarrollada en Python, específicamente diseñada para desarrolladores. Cuenta con un alto rendimiento y escalabilidad, y funcionalidades avanzadas para programadores. También posee una interfaz web integrada.
- Monotone: desarrollado en C++, es una herramienta para el versionado distribuido. Es un gran apoyo para la internacionalización y localización, y utiliza Netsync, un protocolo muy fuerte, seguro y personalizado.
- Bazaar: herramienta de versionado con repositorio distribuido y cliente-servidor. Cuenta con compatibilidad para sistemas operativos multiplataforma y permite el trabajo sin un servidor central.
- Visual Studio Team Foundation Server (TFS): producto de versionado de Microsoft, con licencia propietaria. Funciona a través de Visual Studio Team Services (VSTS).
- Helix Core: principalmente utilizada en entornos de desarrollo a gran escala.