Proyecto SO
Proyecto SO
2024
1
Índice
1. Resumen 3
2. Introducción 3
2.1. Motivación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2.1. Descripción del Problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
4. Desarrollo 6
4.1. Paso1: Descripción del caso de estudio . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4.1.1. Problemática . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4.1.2. Objetivo del caso de estudio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4.1.3. Evaluación de solución del caso de estudio . . . . . . . . . . . . . . . . . . . . . 8
4.2. Paso2: Metodologı́a de desarrollo de la solución . . . . . . . . . . . . . . . . . . . . . . 8
4.2.1. Especificación de Requerimentos para la efectividad de la guı́a . . . . . . . . . 8
4.2.2. Herramientas Complementarias . . . . . . . . . . . . . . . . . . . . . . . . . . 9
6. Proceso de Desarrollo 14
6.1. Diseño del Proceso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
7. Evaluación de Frameworks 15
8. Trabajo futuro 16
2
1. Resumen
El presente documento es una guı́a del manejo de Git y Github dirigida a un público con un en-
tendimiento medianamente técnico. Presentamos el desarrollo de software colaborativo como objetivo
principal que deseamos ejecutar de manera satisfactoria. De este modo, se presenta una perspectiva
conceptual, clara y concisa de lo que significa realizar un proyecto colaborativo. Ası́ podemos com-
prender que supone una tarea compleja, sin embargo utilizando las herramientas adecuadas, esto nos
puede facilitar de manera significativa y eficiente el desarrollo de software colaborativo.
Además, ofrecemos un amplio rango de aplicaciones donde es adecuado y provechoso usar una
herramienta de manejo de versiones como Git. El presente documento es parte de un proyecto, por
tanto también es versionado con Git y almacenado en GitHub para dar muestra de manera real cómo
es colaborar y hacer uso de estas herramientas útiles.
Por último, esta guı́a es un proyecto en desarrollo y además es parte de un proyecto ambicioso
denominado Reingenierı́a Personal y Social para la vida y Obra (RPSVO).
2. Introducción
La colaboración en proyectos de desarrollo de software ha evolucionado significativamente con el
advenimiento de plataformas como GitHub. GitHub, basado en el sistema de control de versiones
Git, se ha convertido en un pilar fundamental para desarrolladores de todo el mundo, facilitando la
colaboración, el seguimiento de cambios y la gestión de proyectos de manera eficiente.
Sin embargo, antes de sumergirnos en el mundo de Git y GitHub, es crucial comprender cómo
instalar y configurar adecuadamente el software en nuestras computadoras locales. A diferencia de
algunas herramientas de control de versiones que ofrecen interfaces gráficas intuitivas, Git se centra
en una experiencia de lı́nea de comandos, lo que puede resultar intimidante para algunos usuarios al
principio. Pero no te preocupes, en este informe te guiaremos a través del proceso de instalación y
te proporcionaremos los conocimientos necesarios para comenzar a utilizar Git y GitHub de manera
efectiva
Esta introducción brinda una visión general del tema y establece el tono para el informe, enfatizan-
do la importancia de comprender tanto Git como GitHub y cómo instalar Git en tu computadora local.
2.1. Motivación
Nuestro principal interés reside en la necesidad de organizar y documentar el proceso de desarrollo
de proyectos, i.e. en su mayorı́a de software los cuáles son complejos en sı́ mismos.
3
Podemos afirmar que el desarrollo de software significa un reto pues implica manejar correctamente
la manera en que un grupo se organizará para lograr satisfactoriamente un software con requerimientos
propuestos previamente. Para ello, Git y GitHub son herramientas que nos permitirán alcanzar dicho
objetivo. Por consiguiente, elaborar una guı́a técnica, concisa y simple que nos permita administrar y
registrar la evolución de una pieza de software es de sumo interés.
2.2. Objetivos
Elaborar una guı́a amigable y de utilidad para el usuario interesado en desarrollar un proyecto
colaborativo de software.
Dificultad para colaborar de manera eficiente: Colaborar entre miembros activos de un proyecto
puede significar una tarea tediosa si no se hace uso de un sistema centralizado. Además del con-
flicto que puede ocurrir cuando dos o más usuarios están trabajando en una misma funcionalidad
o lı́neas de código.
Seguridad y almacenamiento del proyecto: Sin un sistema de versionado seguro y aislado, los
proyectos están expuestos a la pérdida de los datos. Ası́ como también el problema de quién
modifica el software. Sin un establecimiento de roles resulta complicado confiar en la seguridad.
4
de Linux (y en particular a Linus Torvalds, el creador de Linux) a desarrollar su propia herramienta
basada en algunas de las lecciones que aprendieron mientras usaban BitKeeper. En el 2005, la relación
entre la comunidad que desarrollaba el kernel de Linux y la compañı́a que desarrollaba BitKeeper se
vino abajo y la herramienta dejó de ser ofrecida de manera gratuita. Esto impulsó a la comunidad
de desarrollo de Linux (y en particular a Linus Torvalds, el creador de Linux) a desarrollar su propia
herramienta basada en algunas de las lecciones que aprendieron mientras usaban BitKeeper. Una
cronologia antes que aparezca Git.
5
3.3. Otras Herramientas Utilizadas
Herramienta Descripción Integración con Git/GitHub
GitLab Plataforma de control Se puede conectar con GitHub.
de versiones y CI/CD
que ofrece un enfoque
integrado para el ciclo
de desarrollo.
Bitbucket Servicio de hospedaje Compatibilidad con Git y se integra
de proyectos que ofrece mediante add-ons.
control de versiones co-
laborativo.
SourceTree Interfaz gráfica para Complementa a Git.
manejar repositorios
Git que simplifica el
proceso de desarrollo.
Jenkins Servidor de automatiza- Puede extraer código de GitHub y
ción para CI/CD. ejecutar flujos de trabajo definidos.
Travis CI Servicio de integración Se integra con GitHub activando
continua para construir builds con cada push o pull request.
y probar proyectos de
software.
JIRA Herramienta de segui- Se integra con GitHub para enla-
miento de proyectos y zar seguimiento de problemas con el
problemas que ayuda en código fuente.
la gestión ágil del desa-
rrollo.
3.4. Conclusiones
Git es el gestor de código fuente que domina el panorama desde hace años y que la práctica mayorı́a
de desarrolladores y empresas utilizan hoy en dı́a. Git ofrece varias ventajas frente a otros sistemas
tradicionales:
• Sistema distribuido, sin un punto central de fallo, que permite el trabajo incluso sin conexión.
• Superrápido y ligero, optimizado para hacer operaciones de control muy rápidas.
• Crear ramas y mezclarlas es rápido y poco propenso a problemas, al contrario que en otros
sistemas tradicionales.
• La integridad de la información está asegurada gracias a su modelo de almacenamiento, que
permite predecir este tipo de problemas. En sistemas tradicionales este era un problema grave.
• Permite flujos de trabajo muy flexibles.
• El concepto de área de preparación o staging permite versionar los cambios como nos convenga,
no todo o nada.
• ¡Es gratis! y de código abierto.
4. Desarrollo
4.1. Paso1: Descripción del caso de estudio
Introducción a GitHub: Breve descripción de qué es GitHub y su importancia en el desarrollo
de software colaborativo.
6
Contexto del caso de estudio: Explica por qué elegiste el tema de la guı́a de GitHub como
caso de estudio. ¿Qué problemas o desafı́os enfrentan los desarrolladores en relación con el uso
de GitHub?
Objetivos del caso de estudio: Detalla los objetivos especı́ficos que esperas lograr al estudiar
GitHub. ¿Qué esperas aprender o mejorar al completar la guı́a de GitHub?
Público objetivo: Describe a quién está dirigido este caso de estudio. ¿Son desarrolladores
principiantes que recién están aprendiendo sobre control de versiones, o son equipos de desarrollo
que desean mejorar su flujo de trabajo con GitHub?
Metodologı́a: Si estás siguiendo una guı́a especı́fica o utilizando recursos particulares para
aprender sobre GitHub, menciona cuál es tu enfoque de estudio.
Alcance del caso de estudio: Define los lı́mites de tu estudio. ¿Qué aspectos especı́ficos de
GitHub vas a cubrir en tu informe y qué aspectos vas a dejar fuera?
Beneficios esperados: Explica por qué crees que es importante aprender sobre GitHub y cómo
esperas que este conocimiento beneficie a los desarrolladores o equipos de desarrollo.
4.1.1. Problemática
Gestión ineficiente de versiones:Muchos equipos de desarrollo luchan con la gestión de
versiones de su código, lo que puede resultar en conflictos, pérdida de cambios importantes o
dificultades para mantener un historial claro de los cambios realizados en el código.
Colaboración remota y distribuida: Con el aumento del trabajo remoto, los equipos ne-
cesitan herramientas efectivas para colaborar en proyectos de software de manera remota y
distribuida. Esto puede incluir desafı́os relacionados con la comunicación, la sincronización de
cambios y la coordinación del trabajo entre miembros del equipo ubicados en diferentes lugares.
Seguridad y cumplimiento: Garantizar la seguridad del código y cumplir con los requisitos de
cumplimiento puede ser un desafı́o para los equipos de desarrollo. Esto puede incluir preocupa-
ciones sobre la protección de datos sensibles, la gestión de acceso y permisos, y la implementación
de prácticas de seguridad en el desarrollo y despliegue de software.
7
Objetivos Especı́ficos
Enfoque gradual: La guı́a debe seguir un enfoque gradual, comenzando desde los conceptos
más básicos y avanzando de forma progresiva hacia temas más complejos. Esto permite que el
lector construya una base sólida antes de abordar conceptos avanzados.
8
Análisis de necesidades y objetivos:
- Identifica qué se espera lograr con la guı́a de GitHub y quiénes son los usuarios objetivo,
ası́ como sus necesidades especı́ficas.
Investigación y recopilación de información:
- Investiga las caracterı́sticas y mejores prácticas de GitHub, recopilando información de
fuentes confiables.
Diseño de la guı́a:
- Diseña la estructura y contenido de la guı́a, definiendo temas y subtemas, ası́ como el
formato del contenido.
Desarrollo del contenido:
- Crea el contenido de la guı́a, asegurándote de que sea claro, conciso y fácil de entender,
proporcionando ejemplos prácticos.
Revisión y retroalimentación:
- Solicita comentarios de expertos y usuarios, ajustando el contenido según sea necesario.
Desarrollo de recursos complementarios:
- Crea recursos adicionales para ayudar a los usuarios a profundizar en temas especı́ficos.
Pruebas y validación:
- Realiza pruebas exhaustivas para asegurarte de que la guı́a funcione correctamente y sea
precisa.
Lanzamiento y difusión:
- Lanza la guı́a y difúndela entre la comunidad objetivo utilizando diversos canales de
comunicación.
Evaluación y mejora continua:
- Recopila comentarios y métricas sobre el uso de la guı́a, utilizando esa información para
mejorar continuamente su contenido.
Actualización constante: Dado que Git y GitHub son herramientas en constante evolución,
la guı́a debe ser actualizada periódicamente para reflejar los cambios y nuevas caracterı́sticas
que se introduzcan en estas plataformas.
Al cumplir con estos requisitos, una guı́a de Git y GitHub puede garantizar que el lector aprenda de
manera eficiente y efectiva sobre estos temas fundamentales en el desarrollo de software.
Videos tutoriales: Crear videos cortos que acompañen a los conceptos explicados en la guı́a
puede ser muy útil para aquellos lectores que prefieren aprender a través de contenido audiovisual.
Estos videos pueden mostrar demos de cómo utilizar diferentes comandos y funciones.
9
Simuladores y sandbox: Utilizar simuladores o entornos de práctica (sandbox) donde los
lectores puedan experimentar con Git y GitHub en un entorno controlado y sin riesgos. Esto les
permite aplicar lo que aprenden de manera práctica y sin temor a cometer errores en un proyecto
real. Ejemplo: https://learngitbranching.js.org/
Al incorporar estas herramientas de aprendizaje, la guı́a de Git y GitHub se enriquecerá y proporcio-
nará una experiencia de aprendizaje más completa y efectiva para los lectores.
Se utilizará como base el modelo de aprendizaje para temas complejos, pero orientado al aprendi-
zaje autodidacta, con un enfoque práctico en la guı́a que incluya conceptos teóricos, diagramas para
visualizar la estructura, ası́ como ejemplos y ejercicios en cada lección para reforzar y verificar lo
aprendido.
Además la página web tendrá una vista experiencia e interfaz de usuario adecuada para el público
objetivo, que son estudiantes y profesionales de las áreas de computación.
Se puede visualizar cómo estarı́a conformado el inicio de la vista del curso, este fue diseñado en
figma siguiendo los principios básicos de diseño.
Los colores están basados en el público objetivo, los cuales tienen significados que impactan psi-
cológicamente en el usuario Claro, aquı́ te explico el significado de cada color en tu paleta y cómo
pueden impactar en los usuarios de tu plataforma de aprendizaje:
Background - #F1F4F8 (Gris claro): Al ser un fondo claro y discreto, facilita la concentración
y la lectura prolongada, lo que es ideal para una plataforma educativa donde los usuarios pasan
mucho tiempo aprendiendo y leyendo contenido en pantalla.
10
Primary - #007BFF (Azul brillante): Utilizarlo como el color primario capta la atención de
manera efectiva sin ser agresivo. Es ideal para botones de acciones principales, ayudando a
motivar a los estudiantes a iniciar y continuar con sus estudios.
Secondary - #8FF08A (Verde pastel): Este tono secundario puede ser usado para destacar ele-
mentos interactivos menos prioritarios pero aún importantes, como sugerencias de módulos adi-
cionales. Invita a la interacción de forma amigable y estimulante, facilitando un ambiente de
aprendizaje relajado.
Accent - #174A4A (Azul petróleo): Como color de acento, es excelente para destacar información
crı́tica o elementos de navegación en la interfaz. Proporciona un excelente contraste con el azul
primario y el verde secundario, ayudando a organizar y jerarquizar visualmente la información.
Estos colores juntos crean una paleta equilibrada que es visualmente atractiva y funcional, adecuada
para mantener la atención de los estudiantes y mejorar su experiencia de aprendizaje. La combinación
ayuda a establecer una jerarquı́a visual clara, lo cual es crucial para guiar al usuario a través de las
interacciones deseadas en la plataforma.
11
Figura 2: Diseño de la interfaz del inicio de la plataforma de aprendizaje
12
Figura 3: Diseño de la interfaz de aprendizaje (contenido)
13
Análisis de Datos
El análisis se centrará en:
6. Proceso de Desarrollo
6.1. Diseño del Proceso
El proceso se organizará de la siguiente manera:
Como parte del proceso de esta guı́a, la cual es alimentar semanalmente con información relevante
y concisa. Se creó el espacio de trajo ”Proyecto-SO-UNI”donde se encuentran los repositorios y avance
del proyecto.
14
Módulo 2: Uso Avanzado y Flujos de Trabajo en GitHub
Rendimiento y carga inicial: Es crucial que la plataforma cargue rápidamente para mejorar
la experiencia del usuario, especialmente en entornos educativos donde la atención es limitada.
7. Evaluación de Frameworks
Se evaluaron cuatro frameworks principales: React, Astro, Next.js y Remix, teniendo en cuenta
sus caracterı́sticas, ventajas y desventajas.
Dada la naturaleza educativa del proyecto y las necesidades identificadas, se recomienda utilizar
Next.js como el framework principal para desarrollar la plataforma de aprendizaje de Git y GitHub.
Aunque Remix también es una opción sólida, Next.js ofrece una combinación única de caracterı́sticas
que se alinean con los requisitos del proyecto:
15
Rendimiento y carga inicial: Next.js proporciona optimización de rendimiento integrada y
facilita la entrega de contenido estático para una carga rápida.
SEO: Aunque no es una prioridad para el proyecto, la capacidad de Next.js para optimizar el
SEO puede ser beneficiosa para futuras expansiones o para mejorar la visibilidad en buscadores
educativos.
8. Trabajo futuro
Como trabajo futuro serı́a completar la guı́a de github e implementar esto a producción en la web
para que sea abierta al público en general, además de presentarlo a la feria de proyectos como parte
del proyecto Reingenierı́a Personal y Social para la vida y Obra (RPSVO)”.
Referencias
[1] Medidas de la Complejidad del Software https://www.dit.upm.es/˜fsaez/intl/libro_
complejidad/14-medidas-de-la-complejidad-del-software.pdf
[3] freeCodeCamp. (s/f). Git and GitHub for Beginners - Crash Course. Recuperado de https:
//www.freecodecamp.org/news/git-and-github-for-beginners/
16