diff --git a/images/03-deployment-diagram-EN.png b/images/03-deployment-diagram-EN.png new file mode 100644 index 00000000..372e2fb7 Binary files /dev/null and b/images/03-deployment-diagram-EN.png differ diff --git a/images/03_Business_Context_Diagram.png b/images/03_Business_Context_Diagram.png new file mode 100644 index 00000000..6010a5c8 Binary files /dev/null and b/images/03_Business_Context_Diagram.png differ diff --git a/images/03_Technical_Context.png b/images/03_Technical_Context.png new file mode 100644 index 00000000..9b202551 Binary files /dev/null and b/images/03_Technical_Context.png differ diff --git a/images/05_Level_3_Diagram.png b/images/05_Level_3_Diagram.png new file mode 100644 index 00000000..4c654c43 Binary files /dev/null and b/images/05_Level_3_Diagram.png differ diff --git a/images/05_level1Diagram.png b/images/05_level1Diagram.png new file mode 100644 index 00000000..eb2fdd29 Binary files /dev/null and b/images/05_level1Diagram.png differ diff --git a/images/05_level2Diagram.png b/images/05_level2Diagram.png new file mode 100644 index 00000000..6e4ddedb Binary files /dev/null and b/images/05_level2Diagram.png differ diff --git a/images/Consult Statistics.png b/images/Consult Statistics.png new file mode 100644 index 00000000..88f68fb2 Binary files /dev/null and b/images/Consult Statistics.png differ diff --git a/images/Consult questions.png b/images/Consult questions.png new file mode 100644 index 00000000..399aa342 Binary files /dev/null and b/images/Consult questions.png differ diff --git a/images/QualityTree.png b/images/QualityTree.png new file mode 100644 index 00000000..6266b73f Binary files /dev/null and b/images/QualityTree.png differ diff --git a/images/Question generation 1.png b/images/Question generation 1.png new file mode 100644 index 00000000..1453547b Binary files /dev/null and b/images/Question generation 1.png differ diff --git a/images/Question generation 2.png b/images/Question generation 2.png new file mode 100644 index 00000000..2df4b6ee Binary files /dev/null and b/images/Question generation 2.png differ diff --git a/images/Sequence diagram.png b/images/Sequence diagram.png deleted file mode 100644 index 3f560336..00000000 Binary files a/images/Sequence diagram.png and /dev/null differ diff --git a/index.html b/index.html index c88029d7..f872609a 100644 --- a/index.html +++ b/index.html @@ -452,27 +452,40 @@

arc42 T
  • 1.3. Stakeholders
  • -
  • 2. Architecture Constraints
  • +
  • 2. Architecture Constraints + +
  • 3. System Scope and Context
  • -
  • 4. Solution Strategy
  • -
  • 5. Building Block View +
  • 4. Solution Strategy + +
  • +
  • 5. Building block view
  • 6. Runtime View
  • 7. Deployment View @@ -605,6 +618,34 @@

    1.1. Requirements Overview

    +
    +

    The WIQ web application allows users to play a game similar to the one of Saber y Ganar quiz show. This game consists on answering a number of questions with different types and subjects obtaining a prize for each question well answered. Game´s questions are automatically generated from data available in Wikidata (https://www.wikidata.org/).

    +
    +
    +
      +
    • +

      The system will have at least a web front-end which will be available and accessible through the web.

      +
    • +
    • +

      Users will be able to register to the system and obtain the historical data from their participation: number of games, questions passed and failed, times, etc ..

      +
    • +
    • +

      Questions will be automatically generated from data available in Wikidata.

      +
    • +
    • +

      Questions have to be answered before some specific time.

      +
    • +
    • +

      Each question will have one right answer and several incorrect ones or distractors. Both the right answer and the distractors should be automatically generated.

      +
    • +
    • +

      The system will give access to the information about the users through an API.

      +
    • +
    • +

      The system will give access to information about the generated questions through an API.

      +
    • +
    +

    1.2. Quality Goals

    @@ -636,6 +677,41 @@

    1.2. Quality Goals

    + + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1. Quality goals ordered by priority (from most to least important)
    Quality GoalDescription

    Satisfaction

    Users will not get repeated questions in at least a hundred questions.

    Modularity

    The application will be divided in modules so that a change on one component has minimal impact on other components.

    Testability

    The application should be able to go through different test and complete them successfully.

    Learnability

    Any user must be able to use the app with ease. The interface must remind the user to the one in Saber y Ganar quiz show.

    Time behaviour

    Users will not have to wait more than 500ms to get a new question.

    1.3. Stakeholders

    @@ -691,14 +767,34 @@

    1.3. Stakeholders

    -

    <Role-1>

    -

    <Contact-1>

    -

    <Expectation-1>

    +

    Professors

    +

    ASW module professors

    +

    Get a great project which can be evaluated and shown in their github.

    + + +

    Developers

    +

    wiq_es6c team

    +

    Carrying out a full real project using all the knowledge obtained in the degree.

    -

    <Role-2>

    -

    <Contact-2>

    -

    <Expectation-2>

    +

    Responsible company

    +

    HappySw

    +

    Development of an experimental version of the Saber y Ganar quiz show.

    + + +

    Client

    +

    RTVE

    +

    Getting a Web App to promote its famous Saber y Ganar quiz show by letting their viewers enjoy a similar experience.

    + + +

    Main beneficiaries

    +

    Public users

    +

    Having a great time playing an interesting and easy to use quiz game.

    + + +

    Side beneficiaries

    +

    Wikidata

    +

    Obtain free promotion of their application and its ease to use in multiple projects.

    @@ -733,9 +829,136 @@

    2. Architecture Constraints

    +
    +

    2.1. Technical constraints

    + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ConstraintExplanation

    OS/Browser Independence

    The project must be available to the maximum amount of users feasible. That includes support for mainstream OSs (Windows, Linux, MacOS) and browsers. (Chrome, Safari, Firefox, Edge)

    Usage of REACT

    The REACT JS framework will be used to develop the front-end of the project.

    Docker

    The application will operate within a Docker environment.

    Version Control

    In order of the project to be graded adequately, it must use GitHub as its version control system. The contributions of each team member and agreements reached must be easily traceable.

    Wikidata

    To generate questions, WikiData would be used as a knowledge base. Wikidata is a free and open knowledge base that can be read and edited by both humans and machines. Wikidata acts as central storage for the structured data of its sister Wikimedia projects, including Wikipedia, Wikivoyage, Wiktionary, Wikisource and others.

    Continuous integration and delivery

    The development must progress through frequent integration of small changes into the main branch. New features must be automatically deployed with ease. (In our case, using Docker)

    +
    +
    +

    2.2. Organizational constraints

    + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ConstraintExplanation

    Time

    The team has to complete the project during the semester.

    Team size

    The development teams must be composed of 5-7 members. In our case, the final team is composed of 6 members.

    Budget

    No budget is provided for the development, so any costs that may arise have to be covered by the development team.

    Deliverables

    Along the development process, the team must prepare deliverables set for certain dates, consisting of documentation and/or application prototypes.

    Team meetings

    In order to plan the development of the project, as well as to assign tasks and make design decisions, the team will participate in several meetings. These meetings can be done in and out of the classroom, as needed. A record must be created for every meeting, summarizing the progress made.

    Project testing

    The development team must test acceptable coverage of the project using different methods (unit testing, integration testing, acceptance testing…​ etc.)

    Knowledge

    There are many aspects of the development of this project that are foreign to some of us (usage of REACT, deployments, microsystems architecture…​ etc.) so some research is required to keep up.

    +
    +
    +

    2.3. Conventions

    + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ConstraintExplanation

    Use of English

    The totality of the project must be written in English, as to facilitate its understanding internationally.

    Programming Language conventions

    We ought to follow the conventions specific to the programming languages we’re employing.

    Documentation format

    The documentation must adhere to the Arc42 method, ensuring it is clear, simple, and effective.

    Clean code

    In order to ease the understanding and maintenance of the project, all code written must be organized, descriptive and easy to read.

    Accesibility

    The application should be user-friendly, allowing all individuals to navigate effortlessly, irrespective of any disabilities, ensuring inclusivity for all users.

    Microservices

    The application will be divided into microservices to facilitate its development.

    +

    3. System Scope and Context

    @@ -796,12 +1019,35 @@

    3.1. Business Context

    -
    -

    <Diagram or Table>

    -
    -
    -

    <optionally: Explanation of external domain interfaces>

    -
    + +++++ + + + + + + + + + + + + + + + + + + + + + + +

    Entity

    Input

    Output

    User

    App usage and experience.

    The user will introduce and send its credentials every time it creates a new account or logs into an existing one.

    WebApp

    User data and input, as well as external API calls received.

    Handled API calls, sent to their respective microservice in order to be processed and answered.

    Wikidata

    Calls to Wikidata’s REST API asking for certain data, which will be used to construct the questions.

    Said data. Its format may vary, according to the necessities of the questions generator.

    3.2. Technical Context

    @@ -822,14 +1068,10 @@

    3.2. Technical Context

    -
    -

    <Diagram or Table>

    -
    -
    -

    <optionally: Explanation of technical interfaces>

    +
    +
    +03 Technical Context
    -
    -

    <Mapping Input/Output to Channels>

    @@ -838,164 +1080,170 @@

    3.2. Technical Context

    4. Solution Strategy

    -
    -
    +
    +

    4.1. Technology Decisions

    -
    Contents
    -

    A short summary and explanation of the fundamental decisions and solution strategies, that shape system architecture. It includes

    +

    In order to develop the application and adhere to the constraints, we selected the following technologies:

    • -

      technology decisions

      +

      ReactJS: JavaScript library that streamlines the development of graphical interfaces for web applications.

      +
    • +
    • +

      TypeScript: Extension of JavaScript, bolstering it with type support for improved development.

    • -

      decisions about the top-level decomposition of the system, e.g. usage of an architectural pattern or design pattern

      +

      GitHub: Platform offering remote repository services for project development, task management, and version control.

    • -

      decisions on how to achieve key quality goals

      +

      MongoDB: A non-linear database selected to oversee storage of diverse application contents, with each microservice possessing its dedicated database.

    • -

      relevant organizational decisions, e.g. selecting a development process or delegating certain tasks to third parties.

      +

      NodeJS: Facilitates efficient management of asynchronous events, notably beneficial for scalable network applications and database administration.

      +
    • +
    • +

      Docker: Employed for seamless deployment of the application environment.

    -
    -
    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.

    +
    +

    4.2. Top-level Decomposition

    +
    +

    4.2.1. Diagramming tools

    -
    Further Information
    -

    See Solution Strategy in the arc42 documentation.

    +

    We will use PlantUML and UMLet for creating the documentation’s diagrams.

    -
    -
    -
    -
    -

    5. Building Block View

    -
    -
    -
    -
    -
    Content
    -

    The building block view shows the static decomposition of the system into building blocks (modules, components, subsystems, classes, interfaces, packages, libraries, frameworks, layers, partitions, tiers, functions, macros, operations, data structures, …​) as well as their dependencies (relationships, associations, …​)

    -
    -
    -

    This view is mandatory for every architecture documentation. -In analogy to a house this is the floor plan.

    -
    -
    -
    Motivation
    -

    Maintain an overview of your source code by making its structure understandable through -abstraction.

    +
    +

    4.3. Approaches to Achieve Top Quality Goals

    + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Quality GoalScenarioSolution Approach

    Privacy

    Users seek reassurance in the safety and privacy of their data within our app.

    Ensuring user data security and privacy within the application.

    Usability

    Seamless execution of all application functions is crucial for user satisfaction.

    Optimizing usability through the utilization of React.

    Maintainability

    Application architecture must facilitate seamless addition or modification of functionalities with minimal code changes.

    Implementing design patterns and adhering to code conventions to ensure clean and maintainable code. Additionally, prioritizing testing during development for long-term maintainability.

    Scalability

    The application’s design must accommodate changes effortlessly throughout its lifecycle.

    Employing a microservices approach to minimize code repetition and enhance understanding of application distribution, ensuring future scalability.

    +
    +

    4.4. Organizational Decisions

    -

    This allows you to communicate with your stakeholder on an abstract level without disclosing implementation details.

    +

    We’ve established the following organizational guidelines:

    -
    -
    Form
    -

    The building block view is a hierarchical collection of black boxes and white boxes -(see figure below) and their descriptions.

    +
    +
      +
    • +

      Language: Adhering to international standards, the project, encompassing code and documentation, will be developed in English as the primary language.

      +
    • +
    • +

      Issues: All deliberations will be documented as issues on GitHub.

      +
    • +
    • +

      GitHub Projects: Employing this tool, we’ll plan the application’s development process, utilizing GitHub’s integrated features for efficient project management in accordance with AGILE methodology.

      +
    • +
    -
    +
    +
    -Hierarchy of building blocks -
    -
    -

    Level 1 is the white box description of the overall system together with black -box descriptions of all contained building blocks.

    +
    Content
    +

    The building block view shows the static decomposition of the system into building blocks (modules, components, subsystems, classes, interfaces, packages, libraries, frameworks, layers, partitions, tiers, functions, macros, operations, data structures, …​) as well as their dependencies (relationships, associations, …​) +This view is mandatory for every architecture documentation. +In analogy to a house this is the floor plan. +.Motivation +Maintain an overview of your source code by making its structure understandable through +abstraction. +This allows you to communicate with your stakeholder on an abstract level without disclosing implementation details. +.Form +The building block view is a hierarchical collection of black boxes and white boxes +(see figure below) and their descriptions. +image::05_building_blocks-EN.png["Hierarchy of building blocks"] +Level 1 is the white box description of the overall system together with black +box descriptions of all contained building blocks. +Level 2 zooms into some building blocks of level 1. +Thus it contains the white box description of selected building blocks of level 1, together with black box descriptions of their internal building blocks. +Level 3 zooms into selected building blocks of level 2, and so on. +.Further Information +See Building Block View in the arc42 documentation.

    -
    -

    Level 2 zooms into some building blocks of level 1. -Thus it contains the white box description of selected building blocks of level 1, together with black box descriptions of their internal building blocks.

    -
    -

    Level 3 zooms into selected building blocks of level 2, and so on.

    -
    -
    Further Information
    -

    See Building Block View in the arc42 documentation.

    -
    -

    5.1. Whitebox Overall System

    +
    +

    5. Building block view

    +
    -

    Here you describe the decomposition of the overall system using the following white box template. It contains

    -
    -
    -
      -
    • -

      an overview diagram

      -
    • -
    • -

      a motivation for the decomposition

      -
    • -
    • -

      black box descriptions of the contained building blocks. For these we offer you alternatives:

      -
      -
        -
      • -

        use one table for a short and pragmatic overview of all contained building blocks and their interfaces

        -
      • -
      • -

        use a list of black box descriptions of the building blocks according to the black box template (see below). -Depending on your choice of tool this list could be sub-chapters (in text files), sub-pages (in a Wiki) or nested elements (in a modeling tool).

        -
      • -
      -
      -
    • -
    • -

      (optional:) important interfaces, that are not explained in the black box templates of a building block, but are very important for understanding the white box. +

      Here you describe the decomposition of the overall system using the following white box template. It contains + * an overview diagram + * a motivation for the decomposition + * black box descriptions of the contained building blocks. For these we offer you alternatives: + use one table for a short and pragmatic overview of all contained building blocks and their interfaces + use a list of black box descriptions of the building blocks according to the black box template (see below). + Depending on your choice of tool this list could be sub-chapters (in text files), sub-pages (in a Wiki) or nested elements (in a modeling tool). + * (optional:) important interfaces, that are not explained in the black box templates of a building block, but are very important for understanding the white box. Since there are so many ways to specify interfaces why do not provide a specific template for them. In the worst case you have to specify and describe syntax, semantics, protocols, error handling, restrictions, versions, qualities, necessary compatibilities and many things more. In the best case you will get away with examples or simple signatures.

      -
    • -
    +
    +

    5.1. Level 1: Overall System’s whitebox

    +
    +
    +Level 1 Diagram +
    +
    +
    +

    5.1.1. Motivation

    -

    <Overview Diagram>

    +

    This level shows how the application will work internally in generaly. The client, WebApp, access to the different services provided by the microservices which make up the program.

    -
    -
    -
    Motivation
    -
    -

    <text explanation>

    -
    -
    Contained Building Blocks
    -
    -

    <Description of contained building block (black boxes)>

    -
    -
    Important Interfaces
    -
    -

    <Description of important interfaces>

    -
    -
    +
    +

    5.1.2. Contained Building Blocks

    -

    Insert your explanations of black boxes from level 1:

    -
    -
    -

    If you use tabular form you will only describe your black boxes with name and +

    Insert your explanations of black boxes from level 1: +If you use tabular form you will only describe your black boxes with name and responsibility according to the following schema:

    @@ -1012,11 +1260,11 @@

    5.1. Whitebox Overall System

    - + - +

    <black box 1>

     <Text>

    <Text>

    <black box 2>

     <Text>

    <Text>

    @@ -1026,78 +1274,49 @@

    5.1. Whitebox Overall System

    -
    -

    5.1.1. <Name black box 1>

    + ++++ + + + + + + + + + + + + + + + + + + + + +
    NameDescription

    User

    Client of the application which will interact with it.

    WIQ App

    System developed to be used by the users. The games will be based on the information obtanined from WikiData

    WikiData

    Service external to the application from which the application questions will be obtained. Wikidata is a collaboratively edited multilingual knowledge graph hosted by the Wikimedia Foundation.

    -

    Here you describe <black box 1> -according the the following black box template:

    -
    -
    -
      -
    • -

      Purpose/Responsibility

      -
    • -
    • -

      Interface(s), when they are not extracted as separate paragraphs. This interfaces may include qualities and performance characteristics.

      -
    • -
    • -

      (Optional) Quality-/Performance characteristics of the black box, e.g.availability, run time behavior, …​.

      -
    • -
    • -

      (Optional) directory/file location

      -
    • -
    • -

      (Optional) Fulfilled requirements (if you need traceability to requirements).

      -
    • -
    • -

      (Optional) Open issues/problems/risks

      -
    • -
    -
    -
    -
    -
    -

    <Purpose/Responsibility>

    -
    -
    -

    <Interface(s)>

    -
    -
    -

    <(Optional) Quality/Performance Characteristics>

    -
    -
    -

    <(Optional) Directory/File Location>

    -
    -
    -

    <(Optional) Fulfilled Requirements>

    -
    -
    -

    <(optional) Open Issues/Problems/Risks>

    -
    +

    Here you can specify the inner structure of (some) building blocks from level 1 as white boxes. +You have to decide which building blocks of your system are important enough to justify such a detailed description. +Please prefer relevance over completeness. Specify important, surprising, risky, complex or volatile building blocks. +Leave out normal, simple, boring or standardized parts of your system

    -
    -

    5.1.2. <Name black box 2>

    -
    -

    <black box template>

    -
    -

    5.1.3. <Name black box n>

    +
    +
    -

    <black box template>

    -
    +

    …​describes the internal structure of building block 1.

    -
    -

    5.1.4. <Name interface 1>

    -
    -

    …​

    -
    -

    5.1.5. <Name interface m>

    -
    @@ -1105,81 +1324,123 @@

    5.2. Level 2

    -

    Here you can specify the inner structure of (some) building blocks from level 1 as white boxes.

    -
    -
    -

    You have to decide which building blocks of your system are important enough to justify such a detailed description. -Please prefer relevance over completeness. Specify important, surprising, risky, complex or volatile building blocks. -Leave out normal, simple, boring or standardized parts of your system

    +

    Here you describe <black box 1> +according the the following black box template: +* Purpose/Responsibility +* Interface(s), when they are not extracted as separate paragraphs. This interfaces may include qualities and performance characteristics. +* (Optional) Quality-/Performance characteristics of the black box, e.g.availability, run time behavior, …​. +* (Optional) directory/file location +* (Optional) Fulfilled requirements (if you need traceability to requirements). +* (Optional) Open issues/problems/risks

    -
    -

    5.2.1. White Box <building block 1>

    -
    +
    -
    -

    …​describes the internal structure of building block 1.

    -
    -
    -
    -
    -

    <white box template>

    +Level 2 Diagram
    -

    5.2.2. White Box <building block 2>

    +

    5.2.1. Motivation

    -

    <white box template>

    -
    -
    -

    …​

    +

    WiQ application is the general structure of a system in which users will have the possibility to play a video game implementation of the popular RTVE programme, "Saber y Ganar".

    -

    5.2.3. White Box <building block m>

    -
    -

    <white box template>

    -
    +

    5.2.2. Contained Building Blocks

    + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameDescription

    Web App

    Layer in which the user will interact directly and which will connect with the different services.

    Questions Service

    Microservice to generate the questions used by the application from WikiData

    Game Service

    Microservice that implements the quiz game

    Question Historic Service

    Microservice that stores the generated questions for later consultation

    User Statistics Service

    Microservice that stores the statistics of the games played by the user.

    Authentification Service

    Authentication microservice that allows the user to register and log in.

    5.3. Level 3

    -
    -
    -
    -

    Here you can specify the inner structure of (some) building blocks from level 2 as white boxes.

    -
    -
    -

    When you need more detailed levels of your architecture please copy this -part of arc42 for additional levels.

    -
    -
    -
    -
    -

    5.3.1. White Box <_building block x.1_>

    -
    +
    -
    -

    Specifies the internal structure of building block x.1.

    -
    -
    -
    -
    -

    <white box template>

    +Level 3 Diagram
    -

    5.3.2. White Box <_building block x.2_>

    +

    5.3.1. Motivation

    -

    <white box template>

    +

    To display the inner architecture of the different microservices, as well as how do their components interact with themselves and with other components from other microsystems. All microservices follow the MVC architectural pattern, to the exception of the questions generator service. (since it has no UI to handle)

    -

    5.3.3. White Box <_building block y.1_>

    -
    -

    <white box template>

    -
    +

    5.3.2. Contained Building Blocks

    + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameDescription

    Questions Generator

    Contains the required templates and proceedings to construct questions. In order to do so, it delegates the Wikidata querying to the Wikidata extractor. When the data is returned, the question is formulated through templates.

    Wikidata Extractor

    Handles extraction and formatting of Wikidata’s output. It’s queries must cover all necessary information in order to construct the question(s), including not only the correct response, but also believable and coherent “decoy responses”.

    Questions Historic Controller

    Receives the generated questions, and sends them to the database. Besides, it also handles recovering them from the database and sending them where they are needed. (e.g: as response from an API call, or to the UI)

    User Statistics Controller

    Receives various information about the player’s performance in the match. There, some processing may occur before storing it in the database. Also handles retrieving the information and sending it where it’s needed (e.g: as response from an API call, or to the UI).

    Game Controller

    Handles all the game’s logic; where the user input’s processing takes place. It can request questions to the Questions Microservice, and also gather user statistics, to later be set to the User Statistics Controller.

    UI for the game and statistics

    Handles appeareance and presentation. Actions taken by the user are communicated to their respective controllers, that may respond accordingly.

    @@ -1251,37 +1512,42 @@

    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.>

      -
    • -
    +

    6.1. User plays a match. Only one question batch is needed.

    +
    +
    +Question generation 1 +
    -

    It is possible to use a sequence diagram:

    +

    In circumstances in which few questions are needed for the game, it may be possible to extract all of them in a batch without affecting performance and response times. Besides, extracting them this way opens up the possibility of using multiple threads to gather the data, greatly increasing performance. However, if the querying times are too high, this strategy may cause great delays while loading the game. A possible alternative is explained below:

    +
    +
    +

    6.2. User plays a match. An example of dynamic question generation.

    -Sequence diagram +Question generation 2 +
    +
    +

    In cases where a lot of questions are needed, or wikidata querying has a great impact on performance, this alternative may prove to be convenient. By distributing the data fetching along the entire match, bottlenecks on performance will be reduced. Depending on the system load (or, optionally client device’s specifications!) batch sizes may vary, adapting to maintain responsiveness.

    -

    6.2. <Runtime Scenario 2>

    - +

    6.3. User consults its game statistics.

    +
    +
    +Consult Statistics +
    -
    -

    6.3. …​

    -
    -

    6.4. <Runtime Scenario n>

    +

    6.4. User consults questions used in games.

    +
    +
    +Consult questions +
    +
    @@ -1559,6 +1825,37 @@

    9. Architecture Decisions

    + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
    Architecture decisionsAdvantagesDisagvantanges

    Use of React

    It is the most used javascript framework and there is a lot of documentation about it.

    All of us in the team will have to learn how to use it because we have never worked with it.

    Use of JavaScript

    It is a language we have all used.

    It is a complex language that can cause us problems while other simpler languages could make our work easier.

    Use of MongoDB

    Being a non-relational database, it is easier to use. In addition, it is used by large telecommunications companies.

    Non-relational databases are the ones with which we have the least experience.

    @@ -1587,6 +1884,10 @@

    10. Quality Requirements

    +
    +

    To describe the quality requirements that the game will have, we will use quality scenarios. Quality scenarios describe +the action to be performed by the user or the system (stimulus) in order to generate a response to the interaction.

    +

    10.1. Quality Tree

    @@ -1618,6 +1919,11 @@

    10.1. Quality Tree

    +
    +
    +QualityTree +
    +

    10.2. Quality Scenarios

    @@ -1659,6 +1965,59 @@

    10.2. Quality Scenarios

    +
    +

    Quality scenarios, also known as use cases, are detailed descriptions of situations in which a user interacts with +a system and describe the expected outcomes along with the conditions of the environment in which the interaction +occurs.

    +
    + ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Quality goalMotivationUsage ScenariosPriority

    Usability

    The ease of interaction with the user should be enhanced through intuitive and simple interfaces to enhance the user experience.

    Users will be able to understand how the game works thanks to the clarity of its rules and ease of navigation.

    High

    Diversity

    The questions provided by the application will be of various topics.

    The user must correctly answer questions on different topics. This will improve the user experience and maintain the interest of the participants.

    High

    Integrity

    The game must be played without errors.

    The answer determined as correct for each question by the system shall be the one that is actually correct.

    Medium

    Interactivity

    The user must answer a series of questions in which the user must select the correct answer in each case.

    For each of the questions, the user must select the correct answer from those provided by the system.

    Medium

    Privacy

    In order to be able to play, the user must log in to the application.

    Only the user who created/owns the account will have access to it (unless he/she gives someone else his/her credentials).

    Low

    @@ -1689,6 +2048,28 @@

    11. Risks and Technical Debts

    + ++++ + + + + + + + + + + + + + + + + +
    RiskConsequence

    Knowledge of REACT

    It is a framework that no team member has used before. Therefore, we have all had to learn how to use it.

    Internal group conflicts

    Lack of free time for team members makes group work difficult.

    @@ -1744,12 +2125,28 @@

    12. Glossary

    -

    <Term-1>

    -

    <definition-1>

    +

    MongoDB

    +

    NoSQL database system that, instead of storing data in tables as a relational database does, stores data in JSON-like documents with a flexible schema.

    + + +

    REACT

    +

    Open source JavaScript library developed by Facebook to build interactive and responsive user interfaces (UI). It is one of the most popular tools for modern web application development.

    + + +

    Usability

    +

    Ease with which users can interact with a product, system or application to achieve their objectives effectively, efficiently and satisfactorily.

    + + +

    Dynamic question generation

    +

    There may be circumstances where pre-generating the questions isn’t feasible. So instead, questions can be generated while the user is playing the game and answering questions.

    + + +

    Decoy answer

    +

    For questions that offer multiple options to select the correct answer from, it will be necessary to generate believable incorrect answers, that match the topic and theme of the question. For example, when asking about the longest river in Egypt, along with the correct answer (The Nile) some other river names of the country could be chosen for alternatives.

    -

    <Term-2>

    -

    <definition-2>

    +

    Question template

    +

    General structure of a question, which can or cannot transcend topics. For example, valid templates for questions could be: "What’s the tallest mountain in <country>?" "What is <concept>?" "Who invented <x>?"