About arc42
arc42, the template for documentation of software and system architecture.
Template Version 8.2 EN. (based upon AsciiDoc version), January 2023
Created, maintained and © by Dr. Peter Hruschka, Dr. Gernot Starke and contributors. See https://arc42.org.
1. Introducción y Objetivos
1.1. Descripción de los requisitos
-
Registro e Inicio de Sesión de Usuarios: Los usuarios deberán registrarse para participar en los juegos, o iniciar sesión si ya se han registrado previamente.
-
Generación de Preguntas y Respuestas: El sistema proporcionará preguntas de diversas temáticas. Se generarán automáticamente respuestas correctas e incorrectas utilizando datos de Wikidata. Cada pregunta tendrá 4 posibles respuestas.
-
Interacción con el Sistema de Pistas: Los usuarios podrán interactuar con la aplicación para obtener pistas sobre las preguntas Las pistas serán generadas de forma conversacional mediante un modelo de lenguaje (LLM), accediendo a través de una API.
-
Historial de Participación del Usuario: El sistema registrará el historial de los usuarios. Se almacenarán datos como el número de juegos jugados, preguntas acertadas y falladas, y el tiempo utilizado.
-
Límite de Tiempo para Responder: Cada pregunta tendrá un límite de tiempo determinado para ser respondida por los usuarios.
-
API de Acceso a la Información: Se ofrecerá una API documentada para acceder a la información de los usuarios y a las preguntas generadas. Esto facilitará la integración con otros servicios o plataformas.
-
Generación Automática de Contenidos: Las imágenes de las preguntas y las pistas serán generadas automáticamente utilizando datos de Wikidata. Esto garantizará la variedad y el contexto adecuado de las preguntas.
1.2. Objetivos de Calidad
Meta | Descripción |
---|---|
Rendimiento |
El sistema debe garantizar tiempos de respuesta dentro de los límites aceptables, incluso en condiciones de alta demanda. Se optimizará el uso de recursos para minimizar la latencia y mejorar la experiencia del usuario. Además, se implementarán optimizaciones de consultas para reducir la carga en los servidores y mejorar la velocidad de ejecución de las funciones más críticas. |
Escalabilidad |
El diseño del sistema debe permitir un crecimiento eficiente, asegurando que pueda manejar un aumento en la cantidad de usuarios y datos sin afectar negativamente el rendimiento. |
Seguridad |
Se establecerán medidas de seguridad para proteger los datos de los usuarios y prevenir accesos no autorizados. Se implementarán mecanismos de autenticación y estándares básicos para garantizar la integridad y privacidad de la información. |
Mantenibilidad |
El código del sistema debe ser claro, modular y bien documentado para facilitar futuras modificaciones y mejoras. Se adoptarán buenas prácticas de desarrollo, como la separación de responsabilidades, la reutilización de código y la escritura de pruebas unitarias para garantizar la estabilidad del sistema a lo largo del tiempo. Además, se fomentará el uso de herramientas de control de versiones para gestionar los cambios de manera eficiente. |
Usabilidad |
Para asegurar una experiencia de usuario óptima, el sistema contará con una interfaz intuitiva y coherente. Se priorizará un diseño claro y accesible, facilitando la navegación. Se tendrán en cuenta principios de usabilidad como la predictibilidad, la coherencia visual y la retroalimentación adecuada, de manera que cualquier usuario, independientemente de su experiencia, pueda utilizar el sistema sin dificultades. |
1.3. Stakeholders
Rol/Nombre | Contacto | Expectativas |
---|---|---|
Cliente |
RTVE |
Alta disponibilidad, seguridad y cumplimiento de normativas |
Compañía Contratada |
ChattySw |
Entrega a tiempo, dentro del presupuesto y con alta calidad |
Equipo de Desarrollo |
Andrea Acero Suárez, Ana Díez Díaz, Aitor Gómez Ogueta, Adriana Herrero González, Claudia Nistal Martínez, Javier Sanabria Miranda |
Claridad en los requisitos, apoyo continuo del cliente y herramientas adecuadas |
Usuarios |
Futuros usuarios de la aplicación |
Facilidad en el uso, rendimiento eficiente y características claras e innovadoras |
2. Restricciones de arquitectura
Para desarrollar cualquier proyecto de software, aparecen limitaciones y condiciones que debemos tener en cuenta. No tenemos total libertad ni para diseñar el sistema ni para implementarlo. Además, el nivel y la cantidad de restricciones aumentan a medida que el desarrollo evoluciona. Un ejemplo de esto es la mayor dificultad para modificar el modelo de datos a medida que pasa el tiempo.
Es importante que el arquitecto sepa cómo equilibrar los requisitos del proyecto con las restricciones del mismo. Las restricciones encontradas en nuestro proyecto han sido las siguientes:
RESTRICCIONES TÉCNICAS
Restricción | Descripción |
---|---|
Uso de un LLM |
Se utilizará un modelo de lenguaje grande (LLM) para generar automáticamente preguntas y respuestas y permitir obtener pistas. |
Wikidata |
Las preguntas y respuestas, así como las pistas, se generarán a partir de los datos de Wikidata. |
Docker |
La web deberá estar desplegada y accesible a través de la Web. |
Generación de Preguntas |
Las preguntas tendrán una respuesta correcta y varias incorrectas. Las respuestas se generarán automáticamente. |
API Usage |
Se utilizarán APIs para acceder a la información de usuarios y preguntas generadas. |
Frontend Web |
El sistema tendrá al menos un frontend web desplegado y accesible a través de la Web. |
Límite de tiempo |
Las preguntas deben ser respondidas dentro de un plazo de tiempo determinado. |
RESTRICCIONES ORGANIZATIVAS
Restricción | Descripción |
---|---|
Gestión de Usuarios |
Los usuarios podrán registrarse, iniciar sesión y revisar su historial de participación en el sistema. |
Grupos de 4-6 personas |
Grupos pequeños de alumnos para realizar el trabajo, elegidos por el profesor. |
RESTRICCIONES POLÍTICAS
Restricción | Descripción |
---|---|
Tema de la Aplicación |
La aplicación será similar al programa "Saber y Ganar", por lo que las preguntas estarán relacionadas con imágenes. |
Uso de Arc42 |
El proyecto seguirá el estándar de documentación Arc42. |
Repositorio Público |
El código fuente estará alojado en un repositorio público en GitHub, y será accesible para los miembros del equipo. |
CONVENCIONES
Restricción | Descripción |
---|---|
Convenciones de Nombres |
El nombre de la aplicación será WIChat. |
Uso de Git y Github |
Se utilizará Git como sistema de control de versiones, y el repositorio será alojado en GitHub. |
Documentación Arc42 |
Se seguirá la convención de documentación Arc42. |
3. Contexto y Alcance
3.1. Contexto de Negocio

Elemento | Descripción |
---|---|
Usuario |
El concursante que interactúa con la aplicación, juega y recibe pistas. |
Base de Datos |
Sistema de almacenamiento que guarda información relevante sobre el usuario. |
WIChat |
Aplicación web principal donde se desarrolla el juego. |
Wikidata |
Fuente de donde se extraen las preguntas, las imágenes y las respuestas. |
LLM_API |
API que integra un modelo de lenguaje que se utiliza para generar pistas dinámicas y conversacionales que ayudan al concursante a responder las preguntas. |
3.2. Contexto Técnico
3.2.1. Diagrama de Despliegue

3.2.2. Explicación de Interfaces Técnicas
Gateway
API que hace de enlace entre las distintas partes de la aplicación
Aplicación React
Aplicación web hecha con React que aporta al usuario una interfaz con la que interactuar y por medio de la cual hacer las peticiones correspondientes al backend
Base de Datos de Usuarios
Base de datos que almacena toda la información referente a los usuarios como su nombre de usuario, sus datos de logIn, su histórico de partidas, etc
Servicio de Autenticación
Interfaz que se comunica con la base de datos de usuarios a fin de comprobar si los datos introducidos de inicio de sesión se corresponden con un usuario relaciones
Servicio de Usuario
Interfaz que se comunica con la base de datos de usuarios a fin de consultar y actualizar la información referente a los usuarios y sus partidas
Servicio LLM
Servicio que, por medio de las pistas obtenidas de WikiData, procesará y responderá a las pistas que pida el usuario
API LLM
Servicio externo que nos permite acceder al modelo de lenguaje y utilizarlo
API WikiData
API del servicio web WikiData que aportará a la aplicación las imágenes para el juego, las respuestas a las mismas y las pistas que el LLM utilizará para responder a los usuarios
3.2.3. Mapeo de Canales de Entrada/salida
Canal | Entrada | Salida |
---|---|---|
Aplicación React |
Peticiones HTTP del usuario indicando sus acciones |
Responde con información a través de la interfaz. |
Gateway |
Peticiones REST de webapp para obtener datos como imágenes y respuestas o solicitar operaciones como iniciar sesión |
Respuesta con la información solicitada. |
Servicio Autenticación |
Datos de inicio de sesión de un usuario |
Consulta de comprobación de los datos de inicio de sesión |
Servicio Usuario |
Datos a consultar o insertar en la base de datos |
Consulta o inserción completa a la base de datos |
Base de Datos de Usuarios |
Instrucciones SQL para consultas o insercioes |
Resultado de las consultas o confirmación de las inserciones |
Servicio LLM |
Prompt de solicitud de pistas |
Pista generada por el modelo a partir de información de Wikidata |
API LLM |
Prompt de solicitu de pistas |
Respuesta del modelo de lenguaje generada a partir del prompt |
API Wikidata |
Solicitud de imagenes o pistas |
Imagen nueva, respuesta o pista sobre la imagen ofrecida con anterioridad |
4. Solution Strategy
5. Building Block View
5.1. Whitebox Overall System
<Overview Diagram>
- Motivation
-
<text explanation>
- Contained Building Blocks
-
<Description of contained building block (black boxes)>
- Important Interfaces
-
<Description of important interfaces>
5.1.1. <Name black box 1>
<Purpose/Responsibility>
<Interface(s)>
<(Optional) Quality/Performance Characteristics>
<(Optional) Directory/File Location>
<(Optional) Fulfilled Requirements>
<(optional) Open Issues/Problems/Risks>
5.1.2. <Name black box 2>
<black box template>
5.1.3. <Name black box n>
<black box template>
5.1.4. <Name interface 1>
…
5.1.5. <Name interface m>
5.2. Level 2
5.2.1. White Box <building block 1>
<white box template>
5.2.2. White Box <building block 2>
<white box template>
…
5.2.3. White Box <building block m>
<white box template>
5.3. Level 3
5.3.1. White Box <_building block x.1_>
<white box template>
5.3.2. White Box <_building block x.2_>
<white box template>
5.3.3. White Box <_building block y.1_>
<white box template>
6. Runtime View
6.1. <Runtime Scenario 1>
-
<insert runtime diagram or textual description of the scenario>
-
<insert description of the notable aspects of the interactions between the building block instances depicted in this diagram.>
It is possible to use a sequence diagram:

6.2. <Runtime Scenario 2>
6.3. …
6.4. <Runtime Scenario n>
7. Deployment View
7.1. Infrastructure Level 1
<Overview Diagram>
- Motivation
-
<explanation in text form>
- Quality and/or Performance Features
-
<explanation in text form>
- Mapping of Building Blocks to Infrastructure
-
<description of the mapping>
7.2. Infrastructure Level 2
7.2.1. <Infrastructure Element 1>
<diagram + explanation>
7.2.2. <Infrastructure Element 2>
<diagram + explanation>
…
7.2.3. <Infrastructure Element n>
<diagram + explanation>
8. Cross-cutting Concepts
8.1. <Concept 1>
<explanation>
8.2. <Concept 2>
<explanation>
…
8.3. <Concept n>
<explanation>
9. Architecture Decisions
10. Quality Requirements
10.1. Quality Tree
10.2. Quality Scenarios
11. Risks and Technical Debts
12. Glossary
Term | Definition |
---|---|
<Term-1> |
<definition-1> |
<Term-2> |
<definition-2> |