1.2 Herramientas Colaborativas - 2
1.2 Herramientas Colaborativas - 2
1.2 Herramientas Colaborativas - 2
SANTO TOMÁS
PROGRAMA ACADÉMICO: Licenciatura en Negocios Digitales
¿Qué es un control de versiones y por qué es tan importante usarlo en nuestro proyecto web? A
continuación, te lo explicamos.
La mayoría de la gente utilizamos algún sistema de control de versiones sin ser conscientes de ello.
El ejemplo más claro es al editar cualquier tipo de fichero en servicios de almacenamiento en “la
nube” como Google Drive o Dropbox.
Un software de control de versiones (VCS) es una valiosa herramienta con numerosos beneficios
para un flujo de trabajo de equipos de software de colaboración. Cualquier proyecto de software
que tiene más de un desarrollador manteniendo archivos de código fuente debe usar un VCS.
Además, los proyectos mantenidos por una sola persona se beneficiarán enormemente de su uso.
Se puede decir que no hay una razón válida para privarse del uso de un VCS en cualquier proyecto
moderno de desarrollo de software.
Características fundamentales
Resolución de conflictos
Es muy probable que los miembros del equipo tengan la necesidad de realizar cambios en el
mismo archivo de código fuente al mismo tiempo. Un VCS monitoriza y ayuda a poder resolver los
conflictos entre varios desarrolladores.
Se debe crear una instancia remota del VCS que se puede alojar de forma externa con un tercero
de confianza y con ello, se conservará una copia del código fuente.
Git: es una de las mejores herramientas de control de versiones disponible en el mercado actual.
Es un modelo de repositorio distribuido compatible con sistemas y protocolos existentes como
HTTP, FTP, SSH y es capaz de manejar eficientemente proyectos pequeños a grandes.
CVS: es otro sistema de control de versiones muy popular. Es un modelo de repositorio cliente-
servidor donde varios desarrolladores pueden trabajar en el mismo proyecto en paralelo. El cliente
CVS mantendrá actualizada la copia de trabajo del archivo y requiere intervención manual sólo
cuando ocurre un conflicto de edición.
Mercurial: es una herramienta distribuida de control de versiones que está escrita en Python y
destinada a desarrolladores de software. Los sistemas operativos que admite son similares a Unix,
Windows y macOS. Tiene un alto rendimiento y escalabilidad con capacidades avanzadas de
ramificación y fusión y un desarrollo colaborativo totalmente distribuido. Además, posee una
interfaz web integrada.
Un sistema de control de versiones (o VCS, por sus siglas en inglés), también conocido como
sistema de control de revisiones o de fuentes, es una herramienta de software que monitoriza y
gestiona cambios en un sistema de archivos. Asimismo, un VCS ofrece herramientas de
colaboración para compartir e integrar dichos cambios en otros usuarios del VCS. Al operar al nivel
del sistema de archivos, un VCS monitorizará las acciones de adición, eliminación y modificación
aplicadas a archivos y directorios. Un repositorio es un término del VCS que describe cuando un
VCS está monitorizando un sistema de archivos. En el alcance los archivos individuales de códigos
fuente, un VCS monitorizará las adiciones, eliminaciones y modificaciones de las líneas de texto
que contiene ese archivo. Entre las opciones populares de VCS del sector de software, se incluyen
Git, Mercurial, SVN y preforce.
VCS es una valiosa herramienta con numerosos beneficios para un flujo de trabajo de equipos de
software de colaboración. Cualquier proyecto de software que tiene más de un desarrollador
manteniendo archivos de código fuente debe, sin duda, usar un VCS. Además, los proyectos
mantenidos por una sola persona se beneficiarán enormemente del uso de un VCS. Se puede decir
que no hay una razón válida para privarse del uso de un VCS en cualquier proyecto moderno de
desarrollo de software.
Resolución de conflictos
Durante el ciclo de vida de un proyecto de software impulsado por equipos, es muy probable que
los miembros del equipo tengan la necesidad de realizar cambios en el mismo archivo de código
fuente al mismo tiempo. Un VCS monitoriza y ayuda en los conflictos entre varios desarrolladores.
Estas operaciones de resolución de conflictos dejan un registro de auditoría que ofrece
información sobre el historial de un proyecto.
Una vez que un VCS ha empezado a monitorizar un sistema de archivos de códigos fuente,
conserva un historial de cambios y el estado del código fuente durante el historial de un proyecto.
De esta forma, existe la posibilidad de "deshacer" o revertir un proyecto de código fuente a un
estado conocido reciente. Si se detecta un fallo en una aplicación en vivo, el código puede
revertirse rápidamente a una versión estable conocida.
Copia de seguridad externa del código fuente
Al usar un VCS de forma colaborativa, se debe crear una instancia remota del VCS para compartir
cambios entre desarrolladores. Esta instancia remota del VCS se puede alojar de forma externa
con un tercero de confianza como Bitbucket. A continuación, se convierte en una copia de
seguridad externa. En un caso desafortunado (como el del robo de un portátil), la instancia remota
del VCS conservará una copia del código fuente.
DISTRIBUCIÓN CENTRALIZACIÓN
Las herramientas del VCS se dividen en dos tipos principales de arquitectura remota. Estos tipos de
arquitectura están centralizados y distribuidos.
Cuando hablamos de los pros y los contras de cada arquitectura, la función de copia de seguridad
externa es el principal punto de debate. Un VCS centralizado cuenta con un solo punto de error,
que es la instancia remota del VCS central. Si se pierde dicha instancia, puede producir la pérdida
de datos y productividad, y se deberá sustituir por otra copia del código fuente. Si se vuelve
temporalmente no disponible, evitará que los desarrolladores envíen, fusionen o reviertan código.
Un modelo distribuido de arquitectura evita estos obstáculos manteniendo una copia total del
código fuente en cada instancia de VCS. Si se produce en el modelo distribuido cualquiera de los
casos de error centralizados antes mencionados, se puede introducir una instancia de VCS al
principal mitigando cualquier caída grave de productividad.
El VCS se puede seguir mejorado cuando se integra con una solución alojada segura de terceros,
como Bitbucket. Un VCS alojado ofrece sus propias extensiones a otras aplicaciones y servicios,
mediante integraciones como el Atlassian Marketplace. Por ejemplo, un VCS alojado con Bitbucket
podrá compartir datos del VCS con el software de seguimiento de tareas de Jira y la plataforma de
documentación de la base de conocimiento de Confluence. Esto son solo dos ejemplos, a partir de
un mundo de integraciones que puede ofrecer un VCS alojado.
Un VCS alojado ofrece herramientas ampliadas de mensajería y comunicación por foros, que
puede suponer una ayuda valiosa en la colaboración entre equipos. Estas herramientas de
mensajería permiten establecer un hilo claro de mensajes de desarrollo de código fuente línea a
línea. Las herramientas de mensajería no están restringidas a un hilo de código fuente y pueden
ser herramientas valiosas para promocionar el debate entre equipos sobre objetivos
empresariales de alto nivel relacionados con el desarrollo de código fuente.
Una organización basada en ingeniería puede utilizar un VCS alojado para monitorizar y medir
indicadores clave de rendimiento (KPI). Un VCS alojado ofrecerá información sobre la velocidad y
eficiencia con la que opera un proyecto de desarrollo de software. Un VCS alojado proporciona
herramientas para capturar mediciones como: nuevas funciones implementadas, velocidad de
creación de código, tiempo de desarrollo, fallos creados y arreglados, y mucho más.
Automatización de canalizaciones de CI o CD
Los flujos de trabajo de entrega continua se pueden crear mediante el uso de integraciones
externas de VCS alojado. Un desarrollador inicia una transacción para integrar sus ediciones de
código fuente en la base de código grande. Durante este proceso, el VCS alojado se puede
configurar con numerosas extensiones para ayudar a optimizar la revisión de código y el proceso
de entrega. Cosas como las compilaciones automatizadas, las pruebas y las implementaciones se
pueden orquestar en un sencillo archivo YAML de configuración como código.