From ec3ba95a83f79ceb69fd36441f8f3039e6edbb6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Fern=C3=A1ndez=20Noriega?= Date: Sat, 6 Apr 2024 20:57:52 +0200 Subject: [PATCH] Updates --- images/Context Diagram.png | Bin 12997 -> 12044 bytes images/Generated Questions API (WhiteBox).png | Bin 15597 -> 0 bytes images/Whitebox overall system.png | Bin 11893 -> 10902 bytes images/questions API (WhiteBox).png | Bin 0 -> 16531 bytes index.html | 236 +++++++----------- 5 files changed, 85 insertions(+), 151 deletions(-) delete mode 100644 images/Generated Questions API (WhiteBox).png create mode 100644 images/questions API (WhiteBox).png diff --git a/images/Context Diagram.png b/images/Context Diagram.png index 167280f9abd8cb72f38ab863841149fc4bea3c6b..6371b3c4e42141bba76cbdfd5e2343483b8b3b90 100644 GIT binary patch literal 12044 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 literal 12997 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 diff --git a/images/Whitebox overall system.png b/images/Whitebox overall system.png index c3889ef882696aa2ea51a32c7c03ba635348fbfe..73396d15cc3fc1687f5aafec4412163aa139f23a 100644 GIT binary patch literal 10902 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 Nv4YBjLOGLw{{S+4+EM@j diff --git a/images/questions API (WhiteBox).png b/images/questions API (WhiteBox).png new file mode 100644 index 0000000000000000000000000000000000000000..627739c8c0f1433adec46aa9d545a2629168749c GIT binary patch literal 16531 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 T
  • 8. Cross-cutting Concepts
  • 9. Architecture Decisions
  • @@ -609,7 +608,18 @@

    1.1. Requirements Overview

    -

    The functional requirements have been grouped into the different microservices the web application will have.

    +

    The functional requirements are the following: +* The application must be accesible through the web +* Users must be able to register into the system +* Users must be able to see data about their past games (score, correct/wrong answers, number of questions answered…​) +* Questions must be automatically generated from Wikidata. +* Questions must be answered before some specific time. +* Each question must have one right answer and several incorrect ones or distractors. Both the right answer and the distractors should be automatically generated. +* The system must give access to the information about the users through an API. +* The system must give access to information about the generated questions through an API.

    +
    +
    +

    The functional requirements have been grouped into the different microservices the web application will have:

    1.1.1. User and Authorization Services

    @@ -620,16 +630,7 @@

    1.1.1. User and Authorization Services
    1. -

      Register.

      -
    2. -
    3. -

      Delete the account.

      -
    4. -
    5. -

      Update the account.

      -
    6. -
    7. -

      Recover the password.

      +

      Register

    @@ -639,87 +640,60 @@

    1.1.1. User and Authorization Services
    1. -

      Log in.

      -
    2. -
    3. -

      Log out.

      +

      Log in

    + +

    + +
    +

    1.1.2. Ranking Service

    +
    +
    1. -

      A user can retrieve the following information from the User service

      +

      A user can retrieve the following information from the Ranking service

      1. -

        Name.

        +

        Points scored

      2. -

        Email.

        +

        Number of questions answered

      3. -

        Profile picture.

        +

        Correct answers

      4. -

        Questions answered.

        +

        Incorrect answers

    2. -

      The system must be able to manage the user’s access to the system.

      +

      The system must be able to manage the user’s access to the system

    -

    1.1.2. Question Service

    +

    1.1.3. Question Service

    1. -

      The Question service retrieves questions generated from wikidata.

      -
    2. -
    3. -

      A user can retrieve the following information from the Question service

      -
      -
        -
      1. -

        Select a category.

        -
      2. -
      3. -

        Select a difficulty.

        -
      4. -
      5. -

        Select a question.

        -
      6. -
      7. -

        Select an answer.

        -
      8. -
      -
      -
    4. -
    5. -

      Questions must be stored in a database.

      -
    6. -
    7. -

      The database used is MongoDB.

      -
    8. -
    9. -

      Questions are classified by

      +

      The question service provides the following functionallities

      1. -

        Category.

        +

        Generate a random question from a given category with 4 options

      2. -

        Difficulty.

        +

        Validate the answer and update the score accordingly

    10. -
    11. -

      The questions should be selected randomly.

      -
    @@ -907,44 +881,28 @@

    2. Architecture Constraints

    -

    Privacy (by SOLID)

    -

    The web application must be able to save in a secure and persistence way.

    - -

    GitHub

    It will be used to coordinate the projects work, tracks changes and manage workflow.

    -

    Time

    -

    The web application will be developed along this course, that means our time is limited and we require an efficient time management.

    +

    Documentation

    +

    In order to keep it clean, efficient and simple, it will follow Arc42 method and be deployed to be able to look at it at any time.

    -

    Documentation

    -

    In order to keep it clean, efficient and simple it will follow Arc42 method.

    +

    Deployment

    +

    The project has to be deployed when a release is made

    Time

    Since the project will be done in this semester our time is limited, and we need to stick to the deadlines and manage our time in an efficient way.

    -

    Code

    -

    The code requires a small description of what it does. In addition, we must build it in a clean way and that is easy to expand and can adapt to changes in an easy way.

    +

    Testing

    +

    We need to have a good coverage of unitary testing (80%+) and some acceptance testing covering all the webapp functionallity

    -

    Test

    -

    The test has to be correctly tested in order to accomplish the desired behavior.

    - - -

    Node.js

    -

    Open-source, cross-platform JavaScript runtime environment and library for running web applications outside the client’s browser.

    - - -

    Ruby

    -

    Dynamic, open source programming language with a focus on simplicity and productivity.

    - - -

    JavaScript

    -

    Programming language that allows you to implement complex features on web page.

    +

    Wikidata

    +

    It has to be used for the question generation.

    @@ -1011,9 +969,15 @@

    3.1. Business Context

    +
    +

    The player is the only actor in the main system, which is the one that makes use of the different APIs that will be described later. +The player can initially interact with the authentication system to either register or login and then, by playing the game, the question +service will be triggered for either generating the questions or validating the player’s answer. The player can also access data about +the past games of all users in a ranking.

    +
    -Context Diagram +Context Diagram
    @@ -1049,7 +1013,7 @@

    3.1. Business Context

    - + @@ -1176,6 +1140,10 @@

    5. Building Block View

    +
    +

    The system is based on having a player interact with a GUI which makes use of different APIs that hold most of the +important functionallity

    +

    5.1. Whitebox Overall System

    @@ -1218,7 +1186,7 @@

    5.1. Whitebox Overall System

    -Whitebox overall system +Whitebox overall system
    @@ -1247,8 +1215,8 @@

    5.1. Whitebox Overall System

    - - + + @@ -1343,7 +1311,11 @@

    5.2. Level 2

    -

    5.2.1. Generated Questions API (White Box)

    +

    5.2.1. questions API (White Box)

    +
    +

    This is the Component that holds the functionallity for the main purpose of the webapp: Allowing players to see questions and +answer them, getting a consequent score update.

    +
    @@ -1353,7 +1325,7 @@

    5.2.1. Generated Questions API (Whit

    -Generated Questions API (WhiteBox) +questions API (WhiteBox)
    @@ -1378,8 +1350,8 @@

    5.2.1. Generated Questions API (Whit

    - - + + @@ -1767,11 +1739,7 @@

    8. Cross-cutting Concepts

    -

    8.1. Domain model and terminology

    - -
    -
    -

    8.2. Microservice based system

    +

    8.1. Microservice based system

    Different business functionallities will be developed in different independent services. This will ensure that if one of them fails, the rest are still working (For example, @@ -1783,7 +1751,7 @@

    8.2. Microservice based system

    -

    8.3. Gateway service routing

    +

    8.2. Gateway service routing

    We will use a speciallized service that will route the requests to the corresponding service, acting as a single entry point for the application. Requests to the services are much simpler as only the api base @@ -1844,65 +1812,31 @@

    9. Architecture Decisions

    Manages data of users, both registration/login data and their past scores

    Generated Questions API

    questions API

    Manages generation of questions from Wikidata

    Main window in which questions are shown and can be answered by the player. The latter can also see past scores.

    Generated Questions API

    In charge of generating the questions

    questions API

    In charge of generating the questions and validating the answer

    UsersAPI

    GenQuestsService

    Receives different petitions regarding the generation of questions and responds accordingly.

    question-service

    Receives different petitions regarding the generation of questions and validation of answers and responds accordingly.

    wikibase-sdk

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

    Constraints

    Explanation

    Title

    Web Server Platform: A Comprehensive Overview

    Context

    Choosing the right web server platform involves balancing technical requirements, stakeholder preferences, user considerations, and project constraints. It’s a critical decision that impacts performance, security, user experience, and project success. Achieving alignment across these factors is essential for making an informed choice.

    Decision

    Oracle Cloud

    Status

    Proposed

    Consequences

    We need to suppoort the web application with the leasr cost possible

    What we have to decideOptions/Proposals - ReasoningStatusDecision - Reasoning
    - ---- + - - - - - - - - - - - - - - - - - - + + + + - - + + + +

    Constraints

    Explanation

    Title

    FrontEnd: What users see

    Context

    Choosing the right web server platform involves balancing technical requirements, stakeholder preferences, user considerations, and project constraints. It’s a critical decision that impacts performance, security, user experience, and project success. Achieving alignment across these factors is essential for making an informed choice.

    Decision

    JavaScript and React

    Status

    Proposed

    Which cloud service provider to use for deploying the webapp

    Oracle Cloud - We have access to a VM with this provider with 24/7 free activity

    Decided

    Oracle Cloud - All advantages

    Consequences

    It is important that the developers are used or can get used to the proposed lenguage with ease so its easier to mantain the code and for future developers to understand it.

    Which technologies are we going to use for developing the front end

    React - It is a modern framework which is easy to learn and provides usefull predefined components that save time

    Decided

    React - We have a reference already implemented and its capabilities are what we need

    @@ -2128,7 +2062,7 @@

    11. Risks and Technical Debts

    -Risk +Risk/Technical debt Why it exists Severity - Explanation Possible solutions