Skip to content

Commit

Permalink
revision documentacion
Browse files Browse the repository at this point in the history
  • Loading branch information
yagonavajas committed May 3, 2024
1 parent d06f64d commit 52f942f
Show file tree
Hide file tree
Showing 8 changed files with 81 additions and 94 deletions.
1 change: 0 additions & 1 deletion docs/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

39 changes: 18 additions & 21 deletions docs/src/01_introduction_and_goals.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -3,48 +3,45 @@ ifndef::imagesdir[:imagesdir: ../images]
[[section-introduction-and-goals]]
== Introducción y Objetivos 🎇

El proyecto de WIQ 04D es un proyecto desarrollado en la asignatura Arquitectura del Software. Consiste en la creación de una aplicación web al estilo "Saber y Ganar". Es decir, es un juego de preguntas de cultura general generadas de forma automática con ayuda de Wikidata, una base de conocimiento que puede ser leída y editada por humanos y por máquinas.
El proyecto WIQ 04D es un desarrollo en el marco de la asignatura de Arquitectura del Software, que consiste en la creación de una aplicación web similar al estilo de "Saber y Ganar". Este es un juego de preguntas de cultura general que se generan automáticamente con la ayuda de Wikidata, una base de conocimientos accesible tanto para humanos como para máquinas.

Los desarrolladores de la aplicación son Zohaib Akhtar Kausar, Yago Navajas González y Santiago López Laso.

=== Requisitos Funcionales

****
* Los usuarios deberán iniciar sesión en la página; esto servirá para tener registro de una serie de parámetros, como puede ser las veces que se ha jugado.
* Se podrán responder preguntas autogeneradas y se mostrará si han acertado o fallado, así como la respuesta correcta.
* Los usuarios deben iniciar sesión en la página, lo cual permitirá registrar parámetros como la cantidad de veces que han jugado.
* Se podrán responder preguntas autogeneradas y se indicará si las respuestas son correctas o incorrectas, junto con la respuesta correcta.
* Las preguntas deberán ser respondidas dentro de un tiempo límite.
* Las preguntas seguirán la misma estructura: 1 pregunta correcta y 3 incorrectas, generadas automáticamente.
* Los usuarios podrán consultar datos sobre sus cuentas, como las veces que han jugado o el número de preguntas que han acertado o fallado.
* Existirá un ranking que ordenará a los 10 mejores jugadores según una métrica determinada.
* Se podrá acceder a los servicios de la aplicación a través de una API REST
* Las preguntas seguirán la estructura de una pregunta correcta y tres incorrectas, generadas automáticamente.
* Los usuarios podrán consultar datos sobre sus cuentas, como la cantidad de veces que han jugado y el número de preguntas acertadas o falladas.
* Habrá un ranking que clasificará a los 10 mejores jugadores según una métrica determinada.
* Se podrá acceder a los servicios de la aplicación a través de una API REST.
****

=== Atributos de Calidad

[options="header",cols="1,2,2"]
|===
| Prioridad | Objetivo | Descripción
| 1 | Usabilidad | Todos los usuarios deben poder usar la aplicación sin tener en cuenta sus limitaciones.
| 2 | Rendimiento | Los tiempos entre operaciones han de ser asumibles, aun teniendo varios usuarios usando la aplicación a la vez.
| 3 | Seguridad | Los datos sensibles de los usuarios deben estar restringidos al mismo usuario.
| 4 | Mantenibilidad | El código y documentación de la aplicación ha de estar conformado de tal forma que sea factible hacer cambios y ampliaciones en la aplicación.
| 5 | Portabilidad | La aplicación web es compatible con los navegadores web más utilizados (Chrome, Firefox, Safari, Edge).
| 1 | Usabilidad | La aplicación debe ser accesible y fácil de usar para todos los usuarios, independientemente de sus limitaciones.
| 2 | Rendimiento | Los tiempos de respuesta deben ser adecuados, incluso con múltiples usuarios accediendo a la aplicación simultáneamente.
| 3 | Seguridad | Los datos sensibles de los usuarios deben estar protegidos y accesibles únicamente para cada usuario.
| 4 | Mantenibilidad | El código y la documentación de la aplicación deben estar organizados de manera que faciliten futuras modificaciones y ampliaciones.
| 5 | Portabilidad | La aplicación web debe ser compatible con los navegadores más utilizados como Chrome, Firefox, Safari y Edge.
|===


=== Stakeholders

[options="header",cols="1,2,2"]
|===
|Role/Name|Contact|Expectations
| Rol/Nombre | Contacto | Expectativas
| Equipo de Desarrollo | Yago Navajas González +
Zohaib Akhtar Kausar +
Santiago López Laso | Los estudiantes que llevarán a cabo el desarrollo de la aplicación. Serán los encargados de la arquitectura, la documentación y la codificación.
| Profesores | Jose Emilio Labra Gayo | Supervisores de los avances y encargados de evaluar la aplicación final y el desarrollo de la misma.
| Usuario | Jugador de la aplicación | Personas que puedan interactuar tanto con el registro de usuarios como con el juego en sí y completar correctamente una partida.
| HappySw | Empresa responsable | Empresa contratada, cuyo trabajo será el desarrollo del juego de la mano del equipo de desarrollo.
| Wikidata | Proveedor de la información de las preguntas | Si la aplicación tiene éxito, para Wikidata es publicidad gratis. Por tanto, le interesa este proyecto.
Santiago López Laso | Estudiantes encargados del desarrollo de la aplicación, incluyendo la arquitectura, la documentación y la codificación.
| Profesores | Jose Emilio Labra Gayo | Supervisores de los avances y encargados de evaluar la aplicación final y su desarrollo.
| Usuarios | Jugadores de la aplicación | Personas que interactuarán con el registro de usuarios y el juego, y deberán ser capaces de completar una partida correctamente.
| HappySw | Empresa responsable | Empresa contratada para colaborar en el desarrollo del juego junto al equipo de desarrollo.
| Wikidata | Proveedor de la información para las preguntas | Interesado en el éxito de la aplicación como forma de obtener publicidad gratuita.
| RTVE | Empleador | Interesados en la creación del juego e impulsores de su desarrollo.
|===
12 changes: 6 additions & 6 deletions docs/src/02_architecture_constraints.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ ifndef::imagesdir[:imagesdir: ../images]
== Restricciones de arquitectura ⛔
[options="header",cols="1,2"]
|===
|Restricción|Descripción
|Wikidata|Se debe usar Wikidata para obtener la información de las preguntas. El número de consultas en un tiempo específico es la mayor limitación de la API, junto con la disponibilidad de los datos. Esto puede afectar a tiempos de carga, por ejemplo.
|Git|Conflictos al realizar trabajo por separado por parte de más de un miembro sobre un mismo recurso.
|GitHub|La falta de experiencia puede conducir a problemas en la gestión del proyecto así como en su despliegue y lo que ello conlleva.
|Integración continua/despliegue continuo (CI/CD)|Restricciones en la configuración de pipelines de CI/CD para automatizar las pruebas, compilaciones y despliegues de la aplicación en el servidor Docker, lo que podría afectar la velocidad y la frecuencia de las entregas de nuevas características o correcciones de errores.
|===
| Restricción | Descripción
| Wikidata | El uso de Wikidata para obtener información para las preguntas es obligatorio. Las principales limitaciones de esta API incluyen el número máximo de consultas por unidad de tiempo y la disponibilidad de datos, lo que puede repercutir en los tiempos de carga.
| Git | Posibilidad de conflictos cuando varios miembros del equipo trabajan simultáneamente en el mismo recurso, requiriendo una gestión cuidadosa de las ramificaciones y fusiones.
| GitHub | La falta de experiencia con GitHub puede conducir a problemas en la gestión del proyecto y en el despliegue del mismo, impactando la eficacia del trabajo en equipo y la entrega de resultados.
| Integración continua/despliegue continuo (CI/CD) | Restricciones en la configuración de pipelines de CI/CD pueden limitar la capacidad para automatizar pruebas, compilaciones y despliegues en un servidor Docker, afectando la velocidad y frecuencia de actualizaciones y correcciones.
|===
19 changes: 9 additions & 10 deletions docs/src/04_solution_strategy.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,17 @@ ifndef::imagesdir[:imagesdir: ../images]

=== Decisiones tecnológicas

* Se usará la biblioteca de JavaScript React para facilitar la implementación de la interfaz.
* Se usará una arquitectura basada en microservicios para los diferentes componentes del proyecto como la generación de preguntas o el registro de usuarios en el sistema.
* Para el alojamiento de la página web se usará una máquina virtual Azure con el crédito de estudiante proporcionado.
* Se usará GitHub Actions para el despliegue del proyecto, pero de forma automática en vez de desplegarlo todo a mano. Cabe destacar que también están implementados unos tests para asegurar el correcto despliegue del proyecto.
* Se harán pruebas de usabilidad para comprobar la usabilidad de la aplicación.
* Se harán pruebas de carga para comprobar el rendimiento de la aplicación.
* Se utilizará la biblioteca de JavaScript, React, para facilitar la implementación de la interfaz de usuario.
* Se adoptará una arquitectura basada en microservicios para los diferentes componentes del proyecto, como la generación de preguntas y el registro de usuarios.
* Para el alojamiento de la página web, se utilizará una máquina virtual de Azure aprovechando el crédito para estudiantes proporcionado.
* Se empleará GitHub Actions para el despliegue automático del proyecto, complementado con tests para asegurar su correcta ejecución.
* Se realizarán pruebas de usabilidad para verificar la facilidad de uso de la aplicación.
* Se efectuarán pruebas de carga para evaluar el rendimiento de la aplicación.

=== Decisiones organizativas

* Este grupo (wiq_es04d) ha sido formado a partir de un grupo ya existente (wiq_es04c) pasando de 5 integrantes a 3. Se ha decidido volver al proyecto inicial cuando se dio la situación de ruptura del grupo para empezar de 0.
* Este grupo (wiq_es04d) se formó a partir de un grupo preexistente (wiq_es04c), reduciendo su tamaño de cinco a tres integrantes. Se decidió retomar el proyecto inicial tras la disolución del grupo anterior, empezando de cero.

* No existe una división clara entre las funcionalidades que desempeña cada usuario, todos hacen de todo.

* Se realizará al menos una reunión a la semana en clase para organizar y llevar recuento del trabajo realizado y que será lo siguiente en lo que se va a trabajar. Se pueden realizar reuniones adicionales fuera de clase.
* No se ha establecido una división clara de roles específicos; todos los integrantes participan en todas las áreas.

* Se llevará a cabo al menos una reunión semanal en clase para organizar y revisar el progreso del trabajo, así como planificar las siguientes tareas. Se podrán realizar reuniones adicionales fuera del horario de clase.
16 changes: 6 additions & 10 deletions docs/src/06_runtime_view.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,15 @@ ifndef::imagesdir[:imagesdir: ../images]
[[section-runtime-view]]
== Vista de Ejecución 📽️


=== Escenario de Ejecución 1
Jugar una partida cuando la base de datos tiene suficientes preguntas. El proceso de mostrar una pregunta y procesar la respuesta se repite para cada pregunta de la partida. En este escenario se asume que son 3 preguntas por partida.
La pregunta "n" es la última pregunta.
Este escenario describe el proceso de jugar una partida cuando la base de datos cuenta con suficientes preguntas disponibles. El proceso implica mostrar una pregunta y procesar la respuesta del usuario. Esto se repite para cada una de las 3 preguntas en la partida. La pregunta "n" representa la última pregunta de la serie.

[plantuml,"Sequence diagram",png]

image::Diagrama de secuencia plantuml 1.png["Diagrama de secuencia 1"]

image::Diagrama de secuencia plantuml 1.png["Diagrama de secuencia 1", width="600", height="400"]

=== Escenario de Ejecución 2
Jugar una partida cuando la base de datos no tiene suficientes preguntas.
Antes de "acceder al juego", la ejecución es la misma que el escenario de ejecución 1.
A partir de "mostrar primera pregunta", la ejecución es la misma que el escenario de ejecución 1.
Este escenario aborda una partida cuando la base de datos no tiene suficientes preguntas.
Hasta el momento de "acceder al juego", la ejecución sigue el mismo flujo que el escenario de ejecución 1.
Desde "mostrar primera pregunta", la ejecución continúa conforme al escenario de ejecución 1.

image::Diagrama de secuencia plantuml 2.png["Diagrama de secuencia 2"]
image::Diagrama de secuencia plantuml 2.png["Diagrama de secuencia 2", width="600", height="400"]
29 changes: 13 additions & 16 deletions docs/src/08_concepts.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -5,45 +5,42 @@ ifndef::imagesdir[:imagesdir: ../images]

=== Experiencia de Usuario

La Experiencia de Usuario en nuestra aplicación es la impresión general que los usuarios tienen al interactuar con ella. Se refiere a cómo se sienten y qué piensan cuando utilizan nuestra aplicación web. Esto incluye aspectos como la facilidad para registrarse o iniciar sesión, o lo intuitivo que es el juego de preguntas.
La Experiencia de Usuario en nuestra aplicación refleja la impresión general que los usuarios tienen al interactuar con ella. Se refiere a cómo se sienten y qué piensan al utilizar nuestra aplicación web, incluyendo aspectos como la facilidad para registrarse, iniciar sesión y lo intuitivo del juego de preguntas.

Para nuestra aplicación, la Experiencia de Usuario significa comprender profundamente las necesidades y expectativas de nuestros usuarios. Siguiendo la regla de "Keep It Simple Stupid" (KISS), hemos diseñado cada aspecto de la interfaz para que sea lo más sencillo y directo posible, facilitando una experiencia efectiva y agradable. Esto implica asegurar que la navegación sea intuitiva, que la información esté presentada de manera clara y accesible, que las acciones sean fáciles de realizar y que el sistema responda de manera rápida y confiable a las interacciones del usuario.
Para nuestra aplicación, la Experiencia de Usuario implica comprender profundamente las necesidades y expectativas de nuestros usuarios. Siguiendo la regla de "Keep It Simple Stupid" (KISS), hemos diseñado cada aspecto de la interfaz para que sea lo más sencillo y directo posible, facilitando una experiencia efectiva y agradable. Esto implica asegurar que la navegación sea intuitiva, que la información esté clara y accesible, que las acciones sean fáciles de realizar y que el sistema responda de manera rápida y confiable a las interacciones del usuario.

Nos esforzamos por crear una experiencia de usuario cómoda y accesible, donde cada detalle esté cuidadosamente diseñado para brindar una experiencia fluida y satisfactoria. Nuestro objetivo es ofrecer un juego entretenido y funcional, manteniendo siempre la simplicidad en cada elemento.
Nos esforzamos por crear una experiencia de usuario cómoda y accesible, donde cada detalle está cuidadosamente diseñado para brindar una experiencia fluida y satisfactoria. Nuestro objetivo es ofrecer un juego entretenido y funcional, manteniendo la simplicidad en cada elemento.

=== Arquitectura

Utilizaremos una arquitectura basada en microservicios para mantener la independencia entre las distintas partes de la aplicación. Esta estructura ofrece una arquitectura flexible y modular, con beneficios significativos en términos de escalabilidad, flexibilidad tecnológica, agilidad en el desarrollo, resistencia a fallos y mantenimiento del software.

Utilizaremos una arquitectura basada en microservicios para mantener la independencia entre las distintas partes de la aplicación. Esta estructura ofrece una arquitectura flexible y modular, con beneficios significativos en términos de escalabilidad, flexibilidad tecnológica, agilidad en el desarrollo, resistencia a fallos y facilidad de mantenimiento.

=== Desarrollo

En el desarrollo de nuestra aplicación, nos centramos en varios aspectos para garantizar su eficacia:

* Mantenibilidad del código: Escribimos nuestro código de manera clara y organizada, siguiendo las mejores prácticas de desarrollo, para facilitar su mantenimiento y futuras actualizaciones.
En el desarrollo de nuestra aplicación, nos centramos en varios aspectos clave para garantizar su eficacia:

* Automatización de pruebas: Implementamos pruebas automatizadas para garantizar que nuestra aplicación funcione correctamente en diferentes situaciones y escenarios. Esto nos ayuda a identificar y corregir errores de manera oportuna, manteniendo la calidad del software.
* **Mantenibilidad del código:** Escribimos nuestro código de manera clara y organizada, siguiendo las mejores prácticas de desarrollo para facilitar su mantenimiento y futuras actualizaciones.

* Integración continua: La implementación exitosa de CI/CD proporciona un camino continuo hacia la entrega de software de alta calidad, permitiendo la automatización de pruebas, integración y despliegue, agilizando así el ciclo de vida del desarrollo y garantizando una entrega rápida y confiable de valor al cliente.
* **Automatización de pruebas:** Implementamos pruebas automatizadas para asegurar que nuestra aplicación funcione correctamente bajo diferentes situaciones y escenarios. Esto nos ayuda a identificar y corregir errores de manera oportuna, manteniendo la calidad del software.

* Optimización de rendimiento: Nos esforzamos por mejorar el rendimiento de nuestra aplicación, optimizando el tiempo de carga, la velocidad de respuesta y el consumo de recursos.
* **Integración continua:** La implementación exitosa de CI/CD proporciona un camino continuo hacia la entrega de software de alta calidad, permitiendo la automatización de pruebas, integración y despliegue, agilizando así el ciclo de vida del desarrollo y garantizando una entrega rápida y confiable de valor al cliente.

En resumen, en el desarrollo de nuestra aplicación nos esforzamos por mantener un código mantenible, implementar pruebas automatizadas, lograr una integración continua eficiente y optimizar el rendimiento. Esto nos permite ofrecer una aplicación confiable y de alta calidad a nuestros usuarios.
* **Optimización de rendimiento:** Nos esforzamos por mejorar el rendimiento de nuestra aplicación, optimizando el tiempo de carga, la velocidad de respuesta y el consumo de recursos.

=== Gestión del proyecto

En la gestión de nuestro proyecto, nos enfocamos en garantizar un entorno de producción estable y eficiente:

* Gestión de infraestructura: Utilizamos una máquina virtual de Azure para administrar la infraestructura de nuestra aplicación, garantizando así su disponibilidad y un rendimiento óptimo.
* **Gestión de infraestructura:** Utilizamos una máquina virtual de Azure para administrar la infraestructura de nuestra aplicación, garantizando su disponibilidad y rendimiento óptimo.

* Gestión de versiones: Gestionamos las versiones utilizando etiquetas (tags) en nuestro proyecto de GitHub, que luego se despliegan en la máquina virtual, asegurando actualizaciones controladas y sin interrupciones en el servicio.
* **Gestión de versiones:** Gestionamos las versiones utilizando etiquetas (tags) en nuestro proyecto de GitHub, que luego se despliegan en la máquina virtual, asegurando actualizaciones controladas y sin interrupciones en el servicio.

* Desarrollo del equipo: Nuestro equipo ha progresado en el proyecto mediante el autoaprendizaje de las tecnologías utilizadas. Esto garantiza una comprensión profunda de la aplicación y contribuye a mantener un entorno operativo eficiente.
* **Desarrollo del equipo:** Nuestro equipo ha progresado en el proyecto mediante el autoaprendizaje de las tecnologías utilizadas, garantizando una comprensión profunda de la aplicación y manteniendo un entorno operativo eficiente.

=== Seguridad

Nos comprometemos a proteger la información personal y sensible de nuestros usuarios, así como a prevenir vulnerabilidades que puedan comprometer su seguridad mientras utilizan nuestra aplicación web, dentro de nuestras capacidades y conocimientos.

Para ello, implementamos medidas de seguridad como la encriptación de datos y la autenticación de usuarios mediante contraseñas.

Queremos que nuestros usuarios se sientan seguros y protegidos mientras utilizan nuestra aplicación.
Queremos que nuestros usuarios se sientan seguros y protegidos mientras utilizan nuestra aplicación.
Loading

0 comments on commit 52f942f

Please sign in to comment.