Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Documentación yeray #25

Merged
merged 5 commits into from
Feb 17, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 5 additions & 18 deletions docs/src/01_introduction_and_goals.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -65,29 +65,16 @@ A table with quality goals and concrete scenarios, ordered by priorities

=== Stakeholders


[role="arc42help"]
****
.Contents
Explicit overview of stakeholders of the system, i.e. all person, roles or organizations that

* should know the architecture
* have to be convinced of the architecture
* have to work with the architecture or with code
* need the documentation of the architecture for their work
* have to come up with decisions about the system or its development

.Motivation
You should know all parties involved in development of the system or affected by the system.
Otherwise, you may get nasty surprises later in the development process.
These stakeholders determine the extent and the level of detail of your work and its results.

.Form
Table with role names, person names, and their expectations with respect to the architecture and its documentation.
****

[options="header",cols="1,2,2"]
|===
|Role/Name|Contact|Expectations
| _<Role-1>_ | _<Contact-1>_ | _<Expectation-1>_
| _<Role-2>_ | _<Contact-2>_ | _<Expectation-2>_
| Usuarios | Interacionan directamente con la aplicación | Esperamos que el usuario considere nuestra aplicación divertida, accesible y usable. Además de que las preguntas les parezcan interesantes y no repetitivas
| Equipo de desarrollo | Son las personas encargadas de realizar el proyecto | Crear una aplicación sólida y mantenible en el tiempo, aprendiendo nuevas tecnologías
| RTVE | Es la empresa contratante | Espera obtener una versión online experimental de un concurso de preguntas y respuestas similar a “Saber y Ganar”
| HappySw | Es la empresa de desarrollo de software | Que el equipo de desarrollo realice un producto extraordinario para que la empresa contratante este satisfecha con el producto final
|===
48 changes: 21 additions & 27 deletions docs/src/04_solution_strategy.adoc
Original file line number Diff line number Diff line change
@@ -1,32 +1,26 @@
ifndef::imagesdir[:imagesdir: ../images]

[[section-solution-strategy]]
== Solution Strategy


[role="arc42help"]
****
.Contents
A short summary and explanation of the fundamental decisions and solution strategies, that shape system architecture. It includes

* technology decisions
* decisions about the top-level decomposition of the system, e.g. usage of an architectural pattern or design pattern
* decisions on how to achieve key quality goals
* relevant organizational decisions, e.g. selecting a development process or delegating certain tasks to third parties.

.Motivation
These decisions form the cornerstones for your architecture. They are the foundation for many other detailed decisions or implementation rules.

.Form
Keep the explanations of such key decisions short.

Motivate what was decided and why it was decided that way,
based upon problem statement, quality goals and key constraints.
Refer to details in the following sections.


.Further Information

See https://docs.arc42.org/section-4/[Solution Strategy] in the arc42 documentation.
== Estrategia de solución
=== Decisiones Tecnológicas
* Microsoft Azure: es una plataforma de computación en la nube que ofrece servicios de infraestructura, plataforma y software como servicio, para poder administrar servicios en línea.
* MongoDB: es un sistema de bases de datos NoSQL, es decir, una base de datos orientada a documentos. Este almacena datos con formato similar JSON, que no tienen que cumplir con una estructura predefinida.
* TypeScript: es un lenguaje de programación de código abierto desarrollado y mantenido por Microsoft. Es un superconjunto tipado de JavaScript que compila a JavaScript puro y es compatible con todas las funcionalidades de este último.
* WikiData: es una base de datos libre, colaborativa y multilingüe, que sirve como una base de datos secundaria y que recopila datos estructurados para dar soporte a Wikipedia, Wikimedia Commons...
* Docker: se utiliza para hacer el despligue de la aplicación.


=== Motivaciones
Hemos escogido TypeScript por su mayor parecido a Java, ya que nuestro equipo en su mayoría lo domina. En cuanto React nos basemos en que facilmente se puede crear interfaces. El resto de tecnologías son las más óptimas y las prestablecidas, en el proyecto. Realmente estamos a la espera de los resultados de estas decisiones, ya que en su mayoría son tecnologías desconocidas para el equipo.

=== Decisiones sobre cómo alcanzar los objetivos clave de calidad
* Usabilidad: Queremos una aplicación que no cause quebraderos de cabeza al usuario, que sea simple y eficiente.
* Seguridad: Autenticación de usuarios y encriptado de contraseñas.
* Utilizaremos el patrón MVC(Modelo, Vista, Controlador: Facilita la modularidad, la reutilización y el mantenimiento del código, provocando una aplicación eficiente.

=== Decisiones organizativas:
* Reparto de tareas: Las tareas se reparten teniendo en cuenta las habilidades de cada uno de los integrantes del equipo.
* Los miembros del equipo mantenemos comunicación por Whatsaap para las dudas que surjan.
* Si un miembro del equipo tiene problemas con su tarea, entre los integrantes del grupo se resolverá.

****
92 changes: 41 additions & 51 deletions docs/src/08_concepts.adoc
Original file line number Diff line number Diff line change
@@ -1,73 +1,63 @@
ifndef::imagesdir[:imagesdir: ../images]

[[section-concepts]]
== Cross-cutting Concepts
=== Modelo de dominio
Este es el modelo inicial de nuestra aplicación, pero evolucionará con el tiempo.

----
clase Usuario{
id: String
nombre: String
fecha_registro: String
}

[role="arc42help"]
****
.Content
This section describes overall, principal regulations and solution ideas that are relevant in multiple parts (= cross-cutting) of your system.
Such concepts are often related to multiple building blocks.
They can include many different topics, such as

* models, especially domain models
* architecture or design patterns
* rules for using specific technology
* principal, often technical decisions of an overarching (= cross-cutting) nature
* implementation rules

clase Partida{
id: String
puntuación: int
preguntas: Array<Pregunta>
preguntas_acertadas: int
preguntas_falladas: int
}

.Motivation
Concepts form the basis for _conceptual integrity_ (consistency, homogeneity) of the architecture.
Thus, they are an important contribution to achieve inner qualities of your system.
clase Pregunta{
id: String
texto: String
respuestas: Array<Respuesta>
}

Some of these concepts cannot be assigned to individual building blocks, e.g. security or safety.
clase Respuesta{
id: String
texto: String
correcta: boolean
}

Usuario 1 ---> * Partida
Partida 1 ---> (5..20) Pregunta
Pregunta 1---> (2..4) Respuesta

.Form
The form can be varied:
----

* concept papers with any kind of structure
* cross-cutting model excerpts or scenarios using notations of the architecture views
* sample implementations, especially for technical concepts
* reference to typical usage of standard frameworks (e.g. using Hibernate for object/relational mapping)
=== Arquitectura principal

.Structure
A potential (but not mandatory) structure for this section could be:
Hemos decidido utilizar una arquitectura de microservicios, dividiendo la aplicación en módulos. Estos módulos a su vez, se estructurarán con el patrón MVC.

* Domain concepts
* User Experience concepts (UX)
* Safety and security concepts
* Architecture and design patterns
* "Under-the-hood"
* development concepts
* operational concepts

Note: it might be difficult to assign individual concepts to one specific topic
on this list.
=== Reglas al usar una tecnología específica:

image::08-Crosscutting-Concepts-Structure-EN.png["Possible topics for crosscutting concepts"]
Realmente no sabemos demasiado sobre las tecnologías elegigidas, con la evolución del equipo mejoraremos esta sección.


.Further Information

See https://docs.arc42.org/section-8/[Concepts] in the arc42 documentation.
****
=== Reglas de implementación

Como es un proyecto en equipo creemos que la colaboración es lo más importante, por eso hemos decidido comentar lo máximo posible nuestro propio código para que sea entendible por otras personas/compañeros de equipo.

=== _<Concept 1>_
=== Interfaz de usuario.

_<explanation>_
Queremos crear una aplicación accesible para todos los usuarios, que sea simple de entender y de jugar, que lo máximo que tengas que pensar sean las preguntas del juego.

=== Privacidad

Los usuarios se tienen que autenticar para poder utilizar la aplicación, además sus contraseñas están encriptadas.

=== _<Concept 2>_

_<explanation>_

...

=== _<Concept n>_

_<explanation>_
See https://docs.arc42.org/section-8/[Concepts] in the arc42 documentation.
****