Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introducción
En la presente investigación se presentan la principales herramientas de desarrollo colaborativo en
software y los conceptos básicos que son necesarios para abordarlas de una forma básica.
Hoy en dı́a de existen múltiples herramientas de comunicación y colaboración remotas, tales como
foros, chats,plataformas de colaboración en tiempo real, nubes y demás. Sin embargo, en el desar-
rollo de software, principalmente en donde múltiples programadores aportan a un proyecto, se hacen
necesarias nuevas formas y metodologı́as que permitan una colaboración ágil, segura y controlada[1].
Es aquı́ en donde entran a jugar un papel importante las plataformas de desarrollo colaborativo,
tales como los sistemas de control de versiones y los repositorios remotos.
Dado esto, se hace necesario que en un curso fundamental y con un alto grado de trabajo en
equipo como lo es programación orientada objetos, se aprenda de manera básica los conceptos y
formas de colaboración remota, que permitiran el desarrollo ágil de proyectos conjuntos en posteriores
asignaturas.
1 Desarrollo
Un repositorio es un espacio de trabajo en el que se pueden almacenar y organizar datos. En el caso
del código, este se puede almacenar en un contenedor llamado repositorio que es el que se difunde y
se administra en un sistema de control de versiones. Su principal objetivo es integrar y sincronizar
el código hecho por un equipo, pero también permite albergar la documentación del desarrollo y la
promoción del código[2].
1
Son muchas las ventajas del uso de un sistema de control de versiones. Entre las cuales se encuen-
tra el poder restaurar archivos a versiones anteriores, comparar versiones, ver quién hizo cambios y
recuperar archivos borrados fácilmente[3]. Este tipo de sistemas facilita trabajar en entornos desar-
rollo de software ya que permite manipular y moverse a través de versiones del proyecto sin estar
copiando individualmente las versiones a rutas o carpetas separadas.
Existen diferentes tipos de sistemas de control de versiones, en general los más usados son lo
sistemas distribuidos. En estos, se dispone de un servidor que almacena el repositorio, de modo
que uno o más clientes puedan trabajar conjuntamente.Cada vez que un cliente hace uso de este
repositorio no solo descarga la última versión, sino que replica todo el repositorio con su historial, de
manera que si el servidor falla la información se puede recuperar de los clientes[3].
1.2 Git
Git es un sistema de control de versiones distribuido y escalable que permite un nivel de acceso com-
pleto a través de comandos[4].Fue desarrollodao por Linus Torvalds con la idea de mantener eficiencia
y confiabilidad a la hora del mantenimiento de aplicaciones de gran volumen de archivos de código[5].
2
Figure 2: Cambios en CVS
Tomada de: [3]
Casi todas las operaciones de Git son locales, esto significa que no es necesario almacenar el
repositorio en un servidor y es posible administrar todo el sistema desde la máquina local[3]. Esto
a pesar de que brinda velocidad, flexibilidad y control, hace que se necesiten de servicios remotos
adicionales si se quiere trabajar de forma colaborativa con otros programadores de manera remota.
Cuando se registan cambios en Git, solo se añade la información a la base de datos y estos se
pueden deshacer o recuperar sin peligro alguno de causar daños graves al resto de archivos.
Se inicia con un directorio de trabajo en la máquina local Figura.4, en el que se modifican los
archivos. Una vez modificados los archivos, se pasan a un área de preparación que contiene los cam-
bios que a futuro se confirmarán. Cuando el área de preparación está lista, se procede a realizar un
commit que confirma todos los cambios que están en el área de preparación[3]. De aquı́ todos los
cambios del área de preparación pasan a la base de datos de Git que se conoce como el directorio de
Git, que mantiene los cambios permanentes, con historial y listo para ser compartido a un repositorio
remoto.
En general todo el flujo de trabajo básico y demás opciones relacionadas con Git se hacen de man-
3
Figure 4: Estados en Git .Tomada de: [6]
era manual a través de comandos y la consola. Sin embargo, en los diferentes IDE’s actuales se cuenta
con opciones para realizar todo este trabajo de manera gráfica a través de botones y campos de texto.
Es importante saber que en algunas ocasiones el fusionar 2 ramas va a ser de manera directa y
rápida. Sin embargo, puede suceder que existan conflictos que impidan fusionar las ramas, como
por ejemplo, que dos ramas hayan modificado el mismo archivo en la misma lı́nea. En este caso Git
no escoge qué cambio dejar, es deber del programador solucionar el conflicto y Git brinda algunas
ayudas para localizarlos.
4
1.4 Repositorios remotos
Con un sistema de control de versiones como Git, es posible tener un control y un desarrollo ágil. Sin
embargo, si lo que realmente se quiere es colaborar y trabajar con múltiples personas es necesario
un repositorio remoto.
Un repositorio remoto no es más que un repositorio ubicado en un servidor que da acceso a todos
los colaboradores y permite un trabajo con Git[3]. Ası́, cada uno de los colaboradores puede tener su
copia del repositorio y enviar actualizaciones al repositorio remoto, para que posteriormente el resto
de colaboradores observen y actualicen sus propios repositorios con los nuevos cambios.
Existen diferentes formas de obtener un repositorio remoto, pero en general los más usados
que son casi un estándar es a través de las plataformas de GitHub y GitLab. Estas plataformas
además proveer el servicio de repositorios remotos con sus propios estándares y protocolos, ofrecen
caracterı́sticas para integracion, visualización de cambios y la comunicación del equipo.
En este trabajo se centrará la atención principalmente en GitHub, que es la plataforma más us-
ada. A pesar de esto, muchos de los conceptos que se relacionaran con GitHub y el uso de Git son
aplicables de la misma manera a GitLab.
1.4.1 GitHub
GitHub es una plataforma que permite compartir código que usa Git para el control de versiones.
Permite el trabajo colaborativo e incluye herramientas como gestor de bugs, creación de wikis,
tablones, visor de ramas y alojamiento de páginas estáticas de los proyectos[8]. En palabras simples,
se puede decir que GitHub es como una red social de código.
2 Conclusion
References
[1] J. González Barahona, J. Seoane Pascual, and G. Robles, Introducción al software libre.
Barcelona: Fundació per a la Universitat Oberta de Catalunya, 2003., 2003.
[3] S. Chacon and B. Straub, Pro Git, 2nd ed. USA: Apress, 2014.
5
[8] D. Estevez, “The git, the bad and the ugly,” hhttps://legacy.gitbook.com/book/david-estevez/
the-git-the-bad-and-the-ugly/details, 2017, accessed: 2020-06-24.