Fase 6: Documentación del Laboratorio y Reflexión Final
Objetivo
Crear una documentación completa para el laboratorio, detallando cada paso realizado en las fases anteriores, junto con preguntas de reflexión para evaluar el aprendizaje de los estudiantes.
Sección 1: Introducción al Laboratorio
- Título del Laboratorio
- Desarrollo de un Chat Local Cliente-Servidor con Pruebas e Integración Continua.
Descripción
- En este laboratorio, los estudiantes desarrollarán una aplicación de chat local utilizando Python. El proyecto sigue un flujo profesional, incluyendo análisis de requisitos, diseño, codificación, pruebas, y despliegue de un pipeline de integración continua con GitHub Actions.
Objetivo General
- Comprender y aplicar un flujo profesional de desarrollo de software para construir aplicaciones cliente-servidor con Python.
Sección 2: Instrucciones Prácticas
- Parte 1: Configuración Inicial
Crear el repositorio:
- Usa GitHub para crear un nuevo repositorio.
- Clona el repositorio en tu máquina local:
git clone <URL del repositorio>
- Estructura del proyecto:
Crea los siguientes directorios y archivos iniciales:
chat-project/
├── .github/
│ └── workflows/
│ └── ci.yml
├── src/
│ ├── client.py
│ ├── server.py
├── tests/
│ ├── test_client.py
│ ├── test_server.py
├── requirements.txt
├── requirements-dev.txt
├── .gitignore
└── README.md
Entorno virtual:
- Crea un entorno virtual y activa:
python -m venv venv
source venv/bin/activate # Linux/Mac
venv\Scripts\activate # Windows
Instala dependencias:
- Añade las librerías necesarias a requirements.txt y requirements-dev.txt, e instálalas:
pip install -r requirements.txt
pip install -r requirements-dev.txt
Parte 2: Codificación por Fases
Implementa las clases base:
- Define las clases ChatServer y ChatClientGUI con métodos iniciales vacíos (pass).
- Añade funcionalidades gradualmente, como se explicó en fases anteriores.
Pruebas:
- Implementa pruebas unitarias y de integración en la carpeta tests/.
Ejecuta las pruebas:
pytest tests/
Integración continua:
- Configura el pipeline de CI en GitHub Actions para validar las pruebas automáticamente.
Interfaz gráfica (opcional):
- Implementa la GUI en client.py usando Tkinter.
Sección 3: Preguntas de Reflexión
Diseño y Arquitectura:
- ¿Qué ventajas tiene dividir el proyecto en módulos (src/ y tests/)?
- ¿Cómo mejora el diseño la inclusión de docstrings en las clases y funciones?
Pruebas:
- ¿Por qué es importante incluir pruebas unitarias e integración en proyectos colaborativos?
- ¿Qué aprendiste al ejecutar y depurar tus pruebas?
Integración Continua:
- ¿Cómo asegura la CI la calidad del código en un proyecto con múltiples desarrolladores?
- ¿Qué beneficios aporta GitHub Actions en comparación con ejecutar pruebas localmente?
Desafíos Técnicos:
- ¿Qué desafíos enfrentaste al implementar la comunicación entre cliente y servidor?
- ¿Cómo los resolviste?
Sección 4: Conclusión
Resultados Obtenidos:
- Los estudiantes construyeron un sistema cliente-servidor funcional con comunicación en tiempo real.
- Implementaron pruebas automatizadas y configuraron CI, simulando un flujo profesional de desarrollo.
Lecciones Clave:
- La planificación y estructura del proyecto son esenciales para su éxito.
- La automatización de pruebas y flujos de trabajo asegura la calidad del software.
Próximos Pasos:
- Implementar características avanzadas como manejo de usuarios, historial de chat, o cifrado de mensajes.
- Extender el proyecto para que funcione a través de redes externas.
Entrega Final
Repositorio GitHub:
- Sube todo el proyecto a un repositorio en GitHub.
- Asegúrate de que el README.md incluya instrucciones claras para ejecutar la aplicación y el flujo de CI.
Evidencias:
- Capturas de pantalla de las pruebas exitosas.
- URL del repositorio de GitHub.
¡Felicidades por completar el laboratorio! 🎉