Fundamentos de Arquitectura de Software y Sistemas Colaborativos
1. Modelo C4: Visualización de la Arquitectura de Software
| ¿Niveles del modelo C4? | Contexto, Contenedor, Componente, Código | Son 4 niveles que van de lo más general a lo más detallado. Cada nivel “abre” el anterior para ver más detalle del sistema. | Usuario → Sistema → Backend → Clases |
| ¿Nivel 1? | Contexto del sistema | Muestra quién usa el sistema y con qué otros sistemas se conecta, sin detalles internos. | Usuario usa TaskChat |
| ¿Nivel 2? | Apps, BD, interacción, dependencias | Muestra la estructura principal del sistema: frontend, backend, base de datos y cómo se comunican. Aquí entiendes la arquitectura general. | Web ↔ API ↔ DB |
| ¿Nivel 3? | Componentes, interfaces, módulos | Muestra cómo está organizado internamente el backend (servicios, módulos, lógica). | ChatService, UserService |
| ¿Nivel 4? | Código (clases, métodos) | Nivel más detallado: muestra clases, atributos y métodos del sistema. | Clase Mensaje |
| ¿Conexiones C4? | Dirección, propósito, protocolo, síncrono/asincrónico | Las flechas deben explicar qué pasa (propósito) y cómo (protocolo). No solo conectar por conectar. | “Envía datos (HTTP)” |
2. Matriz de Johansen: Clasificación de la Colaboración
| ¿Clasificaciones correctas? | Cara a cara, remota síncrona, asincrónica distribuida | El profesor suele poner 3, pero en realidad el modelo completo tiene 4 combinaciones. | Zoom, chat |
| ¿Cuántas combinaciones existen? | 4 combinaciones | Se basa en 2 variables: espacio (mismo/distinto lugar) y tiempo (mismo/distinto tiempo) → 2×2 = 4 | N/A |
| ¿Cuáles son las 4? |
| Es una matriz que clasifica cómo colaboran las personas según dónde están y cuándo interactúan. |
1. Reunión presencial 2. Nota en pizarra 3. Zoom 4. WhatsApp |
3. Awareness: Visibilidad en Entornos Colaborativos
| ¿Qué es awareness? | Información del entorno colaborativo | Es la capacidad de saber qué están haciendo los demás en el sistema. Clave: visibilidad. | Ver quién está conectado |
| ¿Qué técnicas permiten awareness? | Indicadores en tiempo real, notificaciones, chat | Son formas de mostrar actividad de otros usuarios dentro del sistema. | “Juan está escribiendo…” |
| ¿Qué desafíos tiene el awareness? | Tiempo real, latencia, privacidad | Problemas al implementarlo: • Que sea rápido (tiempo real) • Que no haya retraso (latencia) • No mostrar demasiada información (privacidad) | Notificaciones instantáneas |
| ¿Tipos de awareness? | Informal, social, estructura, espacio | Diferentes formas de entender la actividad: • Informal: presencia • Social: interacción • Estructura: roles • Espacio: acciones | Roles, edición de documentos |
| ¿Qué NO es awareness? | Eliminar, ocultar información | Awareness busca mostrar información, no ocultarla. | N/A |
| ¿Qué elementos forman el awareness? | Identidad, ubicación, actividad, acciones/cambios, objetos, intenciones, habilidades | Son los datos que permiten entender el comportamiento del usuario dentro del sistema. | Ver quién es, qué hace, dónde está |
4. API / Backend: Comunicación y Lógica
| ¿Qué es API? | Interfaz de comunicación | Es el medio por el cual una app se comunica con el backend (no hace la lógica fuerte). | Enviar mensaje |
| ¿Qué es backend? | Procesa lógica y datos | Es el cerebro del sistema, donde se ejecutan procesos y se guardan datos. | Guardar mensajes |
| Diferencia | API comunica / Backend ejecuta | API = Puerta Backend = Sistema interno | N/A |
| ¿API Gateway? | Centraliza acceso, seguridad, control | Es un punto único que controla todas las solicitudes al sistema. | Filtro |
| Tipos de API | REST, GraphQL, WebSocket, gRPC | Son diferentes formas de comunicación según necesidad (simple, flexible, tiempo real, alta velocidad). | API login |
5. Metodología Scrum
| Resultado Sprint | Incremento de producto | Siempre debe salir un producto funcional al final del sprint. | App funcionando |
| Roles | PO, Scrum Master, Developers | PO decide qué hacer, Scrum Master guía, Devs construyen. | N/A |
| Eventos | Sprint, Daily, Review, Retrospective, Planning | Son actividades que organizan el trabajo iterativo. | N/A |
| Pilares | Transparencia, Inspección, Adaptación | Base del control empírico en Scrum. | N/A |
| Valores | 5 valores Scrum | Cultura del equipo: Compromiso, Coraje, Foco, Apertura y Respeto. | N/A |
6. CSCW y Sistemas Colaborativos (SC)
| ¿Qué es CSCW? | Disciplina | Es un campo de estudio, no una herramienta. Estudia cómo las personas colaboran usando tecnología. | N/A |
| ¿Qué es Groupware? | Herramienta colaborativa | Software que permite trabajar en grupo. | WhatsApp, Trello |
| Principios SC | Comunicación, coordinación, colaboración | Son las bases de cualquier sistema colaborativo. | Trabajo en equipo |
7. Arquitectura y Componentes
| ¿Qué es arquitectura? | Alto nivel, mantenible, calidad | Es el diseño estructural del sistema (cómo se organiza y funciona). | Estructura app |
| ¿Qué es componente? | Interactúa mediante interfaces | Parte del sistema que cumple una función específica y se comunica con otras. | Servicio chat |
| Actividad 3 | C4, Miro, Scrum, Trello | Integra TODO lo aprendido (arquitectura + colaboración). | Tu proyecto |
Resumen de Conceptos Clave
| 🟣 Tema | 🔑 Clave | 🧠 Qué significa / recordar | 💡 Ejemplo |
| C4 | 4 niveles | Contexto → Contenedor → Componente → Código | Usuario → Sistema → Backend → Clases |
| Nivel 2 | Apps + DB | Estructura del sistema (frontend, backend) | Web ↔ API ↔ DB |
| Nivel 3 | Componentes | Partes internas del backend | ChatService |
| Conexiones | Dirección + propósito + protocolo | Flechas deben explicar acción | “Envía datos HTTP” |
| Johansen | 4 combinaciones | Espacio (lugar) + tiempo | Reunión / chat |
| Mismo lugar-tiempo | Presencial | Reunión | |
| Distinto lugar-tiempo | Remoto asincrónico | ||
| Awareness | VISIBILIDAD | Saber qué hacen otros | “Está escribiendo” |
| Elementos | Usuario + actividad + contexto | Identidad, ubicación, acciones, etc. | Ver usuario activo |
| Tipos (Dourish) | 4 tipos | Informal, social, estructura, espacio | Roles |
| Temporalidad | 2 tipos | Sincrónico (tiempo real) / Asincrónico (historial) | Chat vs historial |
| Desafíos | 3 claves | Tiempo real, latencia, privacidad | Notificaciones |
| API | Comunicación | Interfaz que conecta sistemas | Enviar mensaje |
| Backend | Lógica | Procesa datos y reglas | Guarda info |
| Componente | Interfaces | Se comunica con otros | Servicio |
| Diferencia | API ≠ Backend | API comunica / Backend ejecuta | N/A |
| API Gateway | Punto único | Controla acceso y seguridad | Filtro |
| Tipos API | 4 | REST, GraphQL, WebSocket, gRPC | API login |
| Scrum | Incremento | Resultado del sprint | Producto funcional |
| Roles | PO, SM, Devs | PO = backlog | N/A |
| Eventos | 5 | Sprint, Daily, Review, Retro, Planning | N/A |
| Pilares | 3 | Transparencia, Inspección, Adaptación | N/A |
| Valores | 5 | Compromiso, Enfoque, Apertura, Respeto, Coraje | N/A |
| CSCW | Disciplina | Estudia colaboración | N/A |
| Groupware | Herramienta | Software colaborativo | |
| SC | 3 principios | Comunicación, Coordinación, Colaboración | Equipo |
| Arquitectura | Diseño | Estructura del sistema | App |
| Componente | Interfaces | Se comunica con otros | Servicio |
