From 2ac987c512f57f006d701e0b831f0ccb204aa016 Mon Sep 17 00:00:00 2001 From: Alberto-Guerra Date: Mon, 19 Feb 2024 19:01:42 +0100 Subject: [PATCH] Updates --- images/03_business_context.png | Bin 0 -> 22281 bytes images/10-Quality-Tree-EN.png | Bin 0 -> 32001 bytes images/Login diagram.png | Bin 0 -> 14559 bytes images/Sequence diagram.png | Bin 11964 -> 0 bytes images/Sign Up diagram.png | Bin 0 -> 19004 bytes images/deployment-diagram.png | Bin 0 -> 41673 bytes ...l-md5-078acaf1ab3e3014bad5c17411c6342b.png | Bin 0 -> 6491 bytes ...l-md5-a213e1d1d4eb5da8be14de562a5bdaea.png | Bin 0 -> 5325 bytes ...l-md5-d1794a731ae61e9287bf391bb4bd1c00.png | Bin 0 -> 11854 bytes ...l-md5-e3ae3f4c9761ca8ab8744efa812666e2.png | Bin 0 -> 9705 bytes index.html | 1242 +++++++++++++++-- 11 files changed, 1115 insertions(+), 127 deletions(-) create mode 100644 images/03_business_context.png create mode 100644 images/10-Quality-Tree-EN.png create mode 100644 images/Login diagram.png delete mode 100644 images/Sequence diagram.png create mode 100644 images/Sign Up diagram.png create mode 100644 images/deployment-diagram.png create mode 100644 images/diag-plantuml-md5-078acaf1ab3e3014bad5c17411c6342b.png create mode 100644 images/diag-plantuml-md5-a213e1d1d4eb5da8be14de562a5bdaea.png create mode 100644 images/diag-plantuml-md5-d1794a731ae61e9287bf391bb4bd1c00.png create mode 100644 images/diag-plantuml-md5-e3ae3f4c9761ca8ab8744efa812666e2.png diff --git a/images/03_business_context.png b/images/03_business_context.png new file mode 100644 index 0000000000000000000000000000000000000000..021e1852e428f9744a80edef85564b84994b5a10 GIT binary patch literal 22281 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 z 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 Jlc7`ee*xr)m0kb< literal 0 HcmV?d00001 diff --git a/images/Login diagram.png b/images/Login diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..fe11dcd533664b71314fa7f83933789bbfec344c GIT binary patch literal 14559 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 diff --git a/images/Sign Up diagram.png b/images/Sign Up diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..288ec9225bf962b0530ec7dce238c7e14d5bc4d6 GIT binary patch literal 19004 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 -
  • 2. Architecture Constraints
  • +
  • 2. Architecture Constraints + +
  • 3. System Scope and Context
  • -
  • 4. Solution Strategy
  • +
  • 4. Solution Strategy + +
  • 5. Building Block View
  • 6. Runtime View
  • 7. Deployment View
  • 8. Cross-cutting Concepts @@ -494,7 +511,12 @@

    arc42 T
  • 10.2. Quality Scenarios
  • -
  • 11. Risks and Technical Debts
  • +
  • 11. Risks and Technical Debts + +
  • 12. Glossary
  • @@ -551,35 +573,54 @@

    arc42 T

    1. Introduction and Goals

    +
    +

    The WIQ web application is developed by HappySw for RTVE to create an experimental version of the Saber y Ganar quiz show. +The primary goal of WIQ is to provide users with an engaging platform where they can participate in quiz games, +answer questions generated from Wikidata, and win prizes.

    +
    +
    +

    This document outlines the essential requirements guiding the software architects and development team in creating WIQ.

    +
    -

    Describes the relevant requirements and the driving forces that software architects and development team must consider. -These include

    +

    Describes the relevant requirements that software architects and development team must consider. +These include +* underlying business goals, +* essential features, +* essential functional requirements, +* quality goals for the architecture and +* relevant stakeholders and their expectations

    -
    -
      +
    +
    +
    +

    1.1. Requirements Overview

    +
    +

    The system aims to fulfill the following essential requirements:

    +
    +
    +
    1. -

      underlying business goals,

      +

      Users can register and login to participate in quiz games.

    2. -

      essential features,

      +

      Questions are automatically generated from data available in Wikidata.

    3. -

      essential functional requirements,

      +

      Users receive historical data of their participation, including the number of games played, questions passed and failed, and timestamps.

    4. -

      quality goals for the architecture and

      +

      Each question must be answered within a specific time limit.

    5. -

      relevant stakeholders and their expectations

      +

      Questions consist of one correct answer and several distractors, all automatically generated.

    6. - -
    -
    +
  • +

    Access to user information and generated questions is available through an API.

    +
  • +
    -
    -

    1.1. Requirements Overview

    @@ -610,6 +651,30 @@

    1.1. Requirements Overview

    1.2. Quality Goals

    + ++++ + + + + + + + + + + + + + + + + + + +

    Quality Goal

    Description

    Reliability

    Ensure consistent and accurate question generation and user data management.

    Performance

    Optimize system response times and capacity to handle multiple user interactions simultaneously.

    Security

    Implement robust security measures to protect user data and prevent unauthorized access.

    @@ -693,14 +758,19 @@

    1.3. Stakeholders

    -

    <Role-1>

    -

    <Contact-1>

    -

    <Expectation-1>

    +

    Users

    +

    N/A

    +

    Intuitive and enjoyable quiz experience

    -

    <Role-2>

    -

    <Contact-2>

    -

    <Expectation-2>

    +

    RTVE

    +

    Project Manager

    +

    Reliable and engaging platform for users

    + + +

    HappySw Team

    +

    Development Team

    +

    Clear documentation and reliable system performance

    @@ -711,6 +781,101 @@

    1.3. Stakeholders

    2. Architecture Constraints

    +
    +

    When designing the WIQ application, there are several constraints that must be taken into consideration, as they will have a significant impact on the overall design of the application and the architectural decisions. These constraints must be considered in order to ensure that the final product meets the needs and expectations of the users and stakeholders. The following table summarizes these constraints and provides a brief explanation for each one divided into technical, organizational and political constraints.

    +
    +
    +

    2.1. Technical constraints

    + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Constraint

    Explanation

    WikiData

    Our application must generate questions automatically getting data from WikiData

    Docker

    We are using docker for the deployment.It’s a platform that allows you to package Our application and its dependencies into a standardized unit called a container.

    Azure

    Azure is a cloud computing platform where we are going to host our WIQ application

    Version control and monitoring (GitHub)

    For the WIQ application, GitHub is a useful tool for version control and collaboration among the team members working on the project. It allows easier coordination and organization of the development process, as well as keeping track of changes and contributions made by each team member.

    User Experience

    The design of the application must make its use friendly and easy

    Test coverage

    Code must meet a good test quality and coverage to ensure the expected outcome.

    +
    +
    +

    2.2. Organizational constraints

    + ++++ + + + + + + + + + + + + + + + + + + + + + + +

    Constraint

    Explanation

    Team

    The project will be done in a team composed of 7 students, so work must be assigned accordingly.

    Git-based development

    The project will be built around the Git workflow, so all tools used must be able to closely interact with this system.

    Meetings

    The project’s development process must be reflected in the minutes of each meeting that happens.

    Delivery deadlines

    There are 4 deliverables every 3 weeks that should be followed accordingly before the deployment of the application

    +
    +
    +

    2.3. Political constraints

    + ++++ + + + + + + + + + + + + + + +

    Constraint

    Explanation

    Documentation

    We are going to use AsciiDoc and follow the Arc42 template.

    Language

    The documentation and application will be developed in English.

    @@ -738,6 +903,7 @@

    2. Architecture Constraints

    +

    3. System Scope and Context

    @@ -798,12 +964,47 @@

    3.1. Business Context

    -
    -

    <Diagram or Table>

    +
    +
    +Business Context Diagram
    -
    -

    <optionally: Explanation of external domain interfaces>

    + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    PartnerInputOutput

    User

     The user interacts with the WIQ web application using the front-end of the application.

    The display of a page of the application with the questions and statistics.

    Database

     Stores relevant information of the application (users, number of games, questions passed/failed, times…).

    Retrieves the information that the application requires.

    Question generation

     Questions generated from Wikidata.

    These generated questions are sent to the application.

    Wikidata API

     Receives a query linked to the question to be asked.

    Returns the necessary information to formulate the question.

    3.2. Technical Context

    @@ -827,12 +1028,79 @@

    3.2. Technical Context

    <Diagram or Table>

    + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Component

    Technologies Used

    Front-end

    HTML, CSS, JavaScript (Svelte/React)

    Back-end

    .NET/node.js, API de Wikidata

    Database

    MongoDB

    Arquitechture

    Microservices

    Deployment and Maintenance

    Docker

    <optionally: Explanation of technical interfaces>

    <Mapping Input/Output to Channels>

    + ++++ + + + + + + + + + + + + + + + + + + + + + + +

    Component

    Functionality

    Front-end

    User interaction and results display.

    Back-end

    Logical processing, communication with external API and database.

    Database

    Data storage.

    External API

    Data query from Wikidata.

    +
    +

    In this flow: +- The user interacts with the user interface (front-end) through clicks and responses. +- The back-end processes the requests, consults the Wikidata API, and updates the screen. +- The channels are the HTTP connections between the components. +- The mapping evaluates the user’s responses in real time to provide an appropriate response.

    +
    @@ -840,6 +1108,9 @@

    3.2. Technical Context

    4. Solution Strategy

    +
    +

    This section will cover all the technological, architectural, design and organizational decisions made along the project for its appropiate development

    +
    @@ -881,9 +1152,98 @@

    4. Solution Strategy

    +
    +

    4.1. Technologies

    +
    +
      +
    • +

      React: JavaScript library for web and native user interfaces. It allows developers to create interactive web applications by breaking down the UI into reusable components. React uses a declarative approach to efficiently update and render components, resulting in faster and more maintainable code. It’s widely adopted in the industry due to its simplicity, performance, and robustness.

      +
    • +
    • +

      Svelte: modern JavaScript framework that compiles code at build time for efficient updates to the DOM. It emphasizes smaller bundle sizes and better performance, offering a simpler approach to building dynamic web applications compared to traditional frameworks like React or Vue.

      +
    • +
    • +

      Node.js: JavaScript runtime that enables running JavaScript code outside of web browsers. It’s renowned for its event-driven architecture and extensive collection of packages, making it ideal for building scalable server-side applications. ++ Express.js: Express.js, often simply called Express, is a minimalist web application framework for Node.js. It simplifies the process of building web applications by providing a robust set of features, including middleware support, routing, and templating engines. Express is known for its flexibility, simplicity, and performance, making it a popular choice for developing web applications and APIs in Node.js.

      +
    • +
    • +

      .NET: versatile developer platform for creating web, mobile, desktop, and cloud applications. It supports multiple programming languages and provides a rich set of libraries and tools for building software solutions. With built-in support for creating APIs and consuming web services, .NET makes it simple to develop and integrate with backend systems and services.

      +
    • +
    • +

      Wikidata: Wikidata provides a REST API for retrieving information related to any topic. It helps us to dynamically generate questions for our game using it from any programming language.

      +
    • +
    • +

      MongoDB: popular NoSQL database known for its flexibility and scalability. It stores data in flexible JSON-like documents and is widely used in modern web development for its simplicity and ability to handle large volumes of data.

      +
    • +
    • +

      Cucumber: Testing tool that supports Behavior Driven Development (BDD) and allows us also to comply testability quality attribute.

      +
    • +
    • +

      Arc42: framework (template) used for documenting and communicating software architectures. It provides a template for describing the architecture of a software system, covering aspects such as stakeholders, requirements, architecture decisions, components, interfaces, and quality attributes. arc42 helps teams create consistent and comprehensible architecture documentation, enabling better communication, understanding, and maintenance of software systems throughout their lifecycle.

      +
    • +
    • +

      npm: default package manager for Node.js, providing a command-line interface to install, manage, and publish JavaScript packages. With over a million packages available in its registry, npm simplifies adding functionality to Node.js projects by handling dependencies and providing tools for versioning and publishing packages.

      +
    • +
    • +

      Docker: platform that will be used for deploying our services inside containers. Containers are lightweight, portable, and self-sufficient units that contain everything needed to run an application, including the code, runtime, system tools, libraries, and settings. Docker enables developers to package their applications along with all dependencies into containers, ensuring consistency across different environments, such as development, testing, and production.

      +
    • +
    +
    +
    +
    +

    4.2. Architecture & Design

    +
    +
      +
    • +

      Microservices: is an architectural style that structures an application as a collection of loosely coupled services. Each service is independently deployable, scalable, and can be developed using different programming languages, frameworks, or databases. +In a microservices architecture, each service typically represents a specific business function or capability and communicates with other services through well-defined APIs. This enables teams to work independently on different parts of the application, allowing us to divide the work into different teams avoiding bottlenecks during production.

      +
    • +
    • +

      APIs: using microservices architecture enforces us to isolate each of the microservices and create well-defined interfaces for accesing those microservices from common gateway, reducing dependencies between services and allowing them to evolve independently. Well-defined interfaces imply not only services independance, but also team members independecance since nobody will need to wait for others for starting working themselves.

      +
    • +
    +
    +
    +

    --------------------(This could be another option if we eventually decide not to use microservices architecture)--------------------

    +
    +
    +
      +
    • +

      MVC (Model-View-Controller): is a software architectural pattern which divides an application into three interconnected components: the Model, which represents the data and business logic; the View, responsible for the presentation layer and user interface; and the Controller, acting as an intermediary between the Model and View. MVC promotes separation of concerns, making it easier to manage and maintain complex web applications by enabling developers to work on different components independently. This pattern enhances code reuse, improves testability, and facilitates scalability, contributing to the development of robust and maintainable web applications across various frameworks and programming languages.

      +
    • +
    +
    +
    +
    +

    4.3. Team Organization

    +
    +

    For developing this project we are using Github as the control version systems. +The master branch contains the final version of the product, so that every accepted pull request to master branch will be considered as a new release. +The production branch contains the work in production right now, from where everybody should create their own branch for their specific code development.

    +
    +
    +
      +
    • +

      Documentation: it must be always updated for making our work valuable and consistent.

      +
    • +
    • +

      Weekly meetings: Weekly discussions about what has been done and what needs to be done will be key for our team success.

      +
    • +
    • +

      Github: this control version systems not only allows us to share and collabortively write code, but also provides other resources such as issues and project management (kanban board) tools for organizing the work to be done. Also, wiki section allows us to save all of our minutes from each scheduled meeting.

      +
    • +
    • +

      Whatsapp: will allow us to be in constant communication for helping each other out whenever needed.

      +
    • +
    • +

      Discord: useful for making unofficial meetings and making decisions whenever is impossible for all of us to be present in an specific place.

      +
    • +
    +
    +

    5. Building Block View

    @@ -972,25 +1332,42 @@

    5.1. Whitebox Overall System

    -
    -

    <Overview Diagram>

    +
    +
    +Diagram +
    Motivation
    -

    <text explanation>

    +

    This is a basic introduction to the app, highlighting the external services it uses and how they work together.

    Contained Building Blocks
    -
    -

    <Description of contained building block (black boxes)>

    -
    -
    Important Interfaces
    -
    -

    <Description of important interfaces>

    -
    + ++++ + + + + + + + + + + + + + + + + +
    NameResponsibility

    WIQ

     It’s the main application, currently represented as a whitebox. The following sections will break it down in detail.

    WikidataAPI

     External API used as the knowledge hub.

    @@ -1058,7 +1435,201 @@

    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>

    +
    +
    +

    ==== <Name black box 2>

    +
    +
    +

    <black box template>

    +
    +
    +

    ==== <Name black box n>

    +
    +
    +

    <black box template>

    +
    +
    +

    ==== <Name interface 1>

    +
    +
    +

    …​

    +
    +
    +

    ==== <Name interface m>

    +
    +
    +
    +
    +
    +

    5.2. Level 1

    +
    +
    +
    +

    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

    +
    +
    +
    +
    +
    +Diagram +
    +
    +
    +
    +
    Motivation
    +
    +

    The reasoning behind this separation is to achieve a modular architecture with clear separation of concerns. +It also allows to expose the user management and the question generation as APIs.

    +
    +
    Contained Building Blocks
    +
    +
    + ++++ + + + + + + + + + + + + + + + + + + + + +
    NameResponsibility

    Frontend

     Represents the user interface and manages the quiz logic of the application.

    User Management

     Handles everything related to user accounts.

    Question Generator

     Generates questions from Wikidata data and sends them to the frontend.

    +
    +
    +
    Important Interfaces
    +
    +
    + ++++ + + + + + + + + + + + + + + + + + + + + +
    NameDescription

    Frontend <→ User Management

     This interface defines how the frontend communicates with the User Management Service to log in, retrieve user data, or perform actions requiring authorization.

    Question Generator <→ Frontend

     This interface defines how the Question Generator Service delivers processed questions to the frontend for display.

    Question Generator <→ Wikidata API

    This interface represents the service fetching data from the Wikidata API.

    +
    +
    +
    +

    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:

    +
    + ++++ + + + + + + + + + + + + + + + + +
    NameResponsibility

    <black box 1>

     <Text>

    <black box 2>

     <Text>

    +
    +

    If you use a list of black box descriptions then you fill in a separate black box template for every important building block . +Its headline is the name of the black box.

    +
    +
    +
    +
    +

    5.2.1. <Name black box 1>

    +
    +
    +
    +

    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>

    @@ -1078,32 +1649,33 @@

    5.1.1. <Name black box 1>

    <(optional) Open Issues/Problems/Risks>

    +
    +

    ==== <Name black box 2>

    -
    -

    5.1.2. <Name black box 2>

    <black box template>

    +
    +

    ==== <Name black box n>

    -
    -

    5.1.3. <Name black box n>

    <black box template>

    +
    +

    ==== <Name interface 1>

    -
    -

    5.1.4. <Name interface 1>

    …​

    +
    +

    ==== <Name interface m>

    +
    +
    -
    -

    5.1.5. <Name interface m>

    -
    -

    5.2. Level 2

    +

    5.3. Level 2

    @@ -1117,36 +1689,38 @@

    5.2. Level 2

    -

    5.2.1. White Box <building block 1>

    +

    5.3.1. White Box User Management Service

    -

    …​describes the internal structure of building block 1.

    +

    …​describes the internal structure of the User Management Service.

    -
    -

    <white box template>

    +
    +
    +Diagram +
    -

    5.2.2. White Box <building block 2>

    +

    5.3.2. White Box Question Generation Service

    +
    +
    -

    <white box template>

    +

    …​describes the internal structure of the Question Generation Service.

    +
    -
    -

    …​

    +
    +
    +Diagram
    -
    -

    5.2.3. White Box <building block m>

    -
    -

    <white box template>

    -

    5.3. Level 3

    +

    5.4. Level 3

    @@ -1159,7 +1733,7 @@

    5.3. Level 3

    -

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

    +

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

    @@ -1172,13 +1746,13 @@

    5.3.1. White Box <_building block x.1_

    -

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

    +

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

    <white box template>

    -

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

    +

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

    <white box template>

    @@ -1190,107 +1764,226 @@

    5.3.3. White Box <_building block y.1_

    6. Runtime View

    -
    +
    +

    6.1. User’s Login

    +
    +

    Sequence diagram for showing the process of a user logging in:

    +
    +
    +
    +Login diagram +
    +
    +
    +
    +

    6.2. User’s sign up

    +
    +

    Sequence diagram for showing the process of a user creating an account:

    +
    +
    +Sign Up diagram +
    +
    +
    +
    +

    6.3. <Runtime Scenario n>

    +
    +
    +
    +
    +
    +

    7. Deployment View

    +
    -
    Contents
    -

    The runtime view describes concrete behavior and interactions of the system’s building blocks in form of scenarios from the following areas:

    +

    Our project is configurated using GitHub actions in such a way that every release that is made will trigger some unitary and end to end test, and an attempt to deploy the application over a server. +This will allow our team to achieve continuous deployment and delivery.

    +
    +

    7.1. Quick deployment guide

    +
    +

    Using your Azure account:

    +
    +
    +
      +
    • +

      Create an Ubuntu-20.04 virtual machine from Azure www.portal.azure.com

      • -

        important use cases or features: how do building blocks execute them?

        +

        Select an available location (usually Switzerland North, Zone 1, is available)

      • -

        interactions at critical external interfaces: how do building blocks cooperate with users and neighboring systems?

        +

        Select the virtual machine "Standard B1s (1 vcpu, 1GiB of memory)"

      • -

        operation and administration: launch, start-up, stop

        +

        Set the username to azureuser

      • -

        error and exception scenarios

        +

        Allow SSH on port 22

      -
      -

      Remark: The main criterion for the choice of possible scenarios (sequences, workflows) is their architectural relevance. It is not important to describe a large number of scenarios. You should rather document a representative selection.

      -
      -
      -
      Motivation
      -

      You should understand how (instances of) building blocks of your system perform their job and communicate at runtime. -You will mainly capture scenarios in your documentation to communicate your architecture to stakeholders that are less willing or able to read and understand the static models (building block view, deployment view).

      -
      -
      -
      Form
      -

      There are many notations for describing scenarios, e.g.

      -
      +
    • +
    • +

      Configure GitHub repository secrets with the server’s information:

      • -

        numbered list of steps (in natural language)

        +

        Download the private key (.pem file) and paste all of its textual content over DEPLOY_KEY. Save the file for later configurations over SSH at the virtual machine.

      • -

        activity diagrams or flow charts

        +

        Check the public IP at Azure and paste it over DEPLOY_HOST.

      • -

        sequence diagrams

        +

        DEPLOY_USER does not need to be changed

      • -
      • -

        BPMN or EPCs (event process chains)

        +
      +
    • -

      state machines

      +

      Once the virtual machine is created and the repository is configured, go to Network Settings and add extra rules:

      +
      +
        +
      • +

        Open port number 3000 for user services

      • -

        …​

        +

        Open port number 8000 for accessing the web application

        +
        +
          +
        • +

          More services will be available in the future, so discussions will be made for additional ports supporting our services.

        -
        -
        Further Information
        -

        See Runtime View in the arc42 documentation.

        +
      • +
      +
      +
    • +
    • +

      Configure the virtual machine connecting through SSH for using Docker:

      +
      +
        +
      • +

        Use some tool for connecting to the server using SSH (PuTTY, MobaXterm…​)

        +
      • +
      • +

        Use the public IP address and the local .pem file for making the connection.

        +
      • +
      • +

        Run the following commands for preparing the virtual machine:

        +
        +
        +
        sudo apt update
        +
        +
        +
        +
        sudo apt install apt-transport-https ca-certificates curl software-properties-common
        -
        -

        6.1. <Runtime Scenario 1>

        +
        +
        +
        curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
        +
        +
        +
        +
        +
        sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
        +
        +
        +
        +
        +
        sudo apt update
        +
        +
        +
        +
        +
        sudo apt install docker-ce
        +
        +
        +
        +
        +
        sudo usermod -aG docker ${USER}
        +
        +
        +
        +
        +
        sudo curl -L "https://github.com/docker/compose/releases/download/1.28.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
        +
        +
        +
      • +
      +
      +
      +
      +
      sudo chmod +x /usr/local/bin/docker-compose
      +
      +
      +
    • +
    • +

      Make a release in GitHub:

      • -

        <insert runtime diagram or textual description of the scenario>

        +

        On the right-hand side of the main Code section of our repository, there is a section called Releases. It will be needed to add a new version following the version naming convention.

        +
      • +
      • +

        Once the release is made, some GitHub actions will be triggered, and the containers will be tested and running once everything finishes.

      • -

        <insert description of the notable aspects of the interactions between the -building block instances depicted in this diagram.>

        +

        If some test fails during the process, deployment will be automatically aborted.

      +
    • +
    +
    +
    +
    +

    7.2. Infrastructure

    -

    It is possible to use a sequence diagram:

    +

    General view of system’s infrastructure

    -Sequence diagram +deployment diagram
    -

    6.2. <Runtime Scenario 2>

    - +

    7.3. Infrastructure Level 1 - Azure Ubuntu Server

    +
    +

    The Ubuntu server allows us to have a isolated machine with the minimal required configuration and installations for running our services. +Having our server on Azure, allows us to minimize the costs of having that machine running, as well as to avoid taking care of some responsabilities such as security, availability or maintainance.

    -
    -

    6.3. …​

    -
    -

    6.4. <Runtime Scenario n>

    -
    +

    7.4. Infrastructure Level 2 - Docker

    +
    +

    Instead of having a virtual machine for running the whole application by itself, the application is splitted into different services that can be completely isolated. +Docker allows us to create containers with the minimum amount of resources needed for running that specific service, such that resources are not wasted and services that could be more used do not collapse others. Each container contains the specific docker image for running the specific service. +Each implemented service will be isolated at deploy time, so there is no need of making the services at the same programming language or following the same architectural patterns, and responses will be responded through different independent endpoints.

    +
    +

    The virtual machine will contain as many containers as services in the application.

    +
    +

    For now, the project contains: + Web application service running on port 3000 +* Gateway (middleware) service running on port 8000 +* Users and authentication services running on ports 8001 and 8002 respectively + Mongo DB server running on port 27017 + Prometheus running on port 9090 for monitoring + Grafana running on port 9091 for analytics and monitoring

    +
    +
    +
    +

    7.5. Infrastructure Level 3 - GitHub actions

    +
    +

    GitHub actions will provide us with continuous automatic delivery and integration, automating the deployment phase at each release.

    -
    -

    7. Deployment View

    -
    @@ -1345,8 +2038,9 @@

    7. Deployment View

    +
    -

    7.1. Infrastructure Level 1

    +

    7.6. Infrastructure Level 1

    @@ -1394,7 +2088,7 @@

    7.1. Infrastructure Level 1

    -

    7.2. Infrastructure Level 2

    +

    7.7. Infrastructure Level 2

    @@ -1406,13 +2100,13 @@

    7.2. Infrastructure Level 2

    -

    7.2.1. <Infrastructure Element 1>

    +

    7.7.1. <Infrastructure Element 1>

    <diagram + explanation>

    -

    7.2.2. <Infrastructure Element 2>

    +

    7.7.2. <Infrastructure Element 2>

    <diagram + explanation>

    @@ -1421,7 +2115,7 @@

    7.2.2. <Infrastructure Element 2>

    -

    7.2.3. <Infrastructure Element n>

    +

    7.7.3. <Infrastructure Element n>

    <diagram + explanation>

    @@ -1559,6 +2253,79 @@

    8.3. <Concept n>

    9. Architecture Decisions

    +
    +

    Along the process of developing the application, decisions had to be taken as problems arise. +These are the initial decicision that we have made but they change during the course of the project +The following table contains some of the design decisions that were imposed to us due to the architectural constraints:

    +
    + + ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1. Imposed decisions

    Code

    Decision

    Advantages

    Disadvantages

    ID1

    React.js or Svelte

    Quite easy to learn in comparison to other front-end libraries. Increasingly popular in the web.

    Not all of us know about its usage

    ID2

    MongoDB

    It does not need to be started manually. Free and easy to understand

    We are quite new with MongoDB.

    ID3

    Docker

    Fast deployment, ease of moving/maintaining your applications. Easy as we already have DockerFiles example

    We do not have much experience using Docker

    ID4

    PlantUML

    Allows drawing diagrams very easily, with a simple syntax.

    Does not allow as much control over the exact layout of the elements in the diagram as other tools.

    + + +++++ + + + + + + + + + + + + + + + + + + + +
    Table 2. Architectural Records
    CodeContextRecord

    ADR1

    TBD

    TBD

    ADR2

    TBD

    TBD

    @@ -1633,6 +2400,11 @@

    10. Quality Requirements

    10.1. Quality Tree

    +
    +
    +Quality Tree +
    +
    @@ -1703,6 +2475,102 @@

    10.2. Quality Scenarios

    +
    +

    Usage scenarios

    +
    + ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Quality goalMotivationUsage scenarioPriority

    Reliability

    The application must provide users with constistent performance and predictable results.

    When users access the web it must behave the same every time giving the almost equal results and response times.

    Very high

    Performance

    The application must have a reasonable response time. Slow applications are not positively popular in society.

    The application must be able to give a fast response time to the users so the game is dynamic and entertaining.

    Very high

    Security

    Our web must be secure not only to protect data but to provide a realiable solution to our users. If we can’t assure our clients the web is secure, no one will use it.

    Data will be only accessible by its owner. If a user tries to access other people’s information, the system will deny the operation, as data will be stored in a secure system.

    Very high

    Portability

    To reach the maximum number of users the application must work in the maximum number of infrastructures.

    When users access the web from different browsers and devices, it must work and provide all the possible functionalities.

    Very high

    Usability

    To make the website stand out from the competition, it must be easy to use, attract attention and be aestethic.

    When the user wants to do something in the application, he/she should be able to do it without difficulty, guided by the interface elements.

    Very high

    Testability

    All features of the application must be testable in order to verify that the web built was the one asked for.

    The unit tests passed by the developers must generate an observable output.

    High

    Availability

    The application must be available 24 hours a day all weeks.

    The user must be able to play at any time because it will be its free time.

    High

    +
    +

    Change scenarios

    +
    + ++++++ + + + + + + + + + + + + + + + + + + + + + + +
    Quality goalMotivationChange scenarioPriority

    Maintainability

    An application should be maintainable to remain usable over the years and to be able to improve functionalities and to fix misfunctionalities.

    When developers must introduce a new feature to the web, they should be able to do it without changing the software architecture.

    High

    Maintainability

    An application should be maintainable to remain usable over the years and to be able to improve functionalities and to fix misfunctionalities.

    When fixing errors and bugs on the system, developers should be able to do it without major consequences on the system.

    High

    @@ -1710,6 +2578,85 @@

    10.2. Quality Scenarios

    11. Risks and Technical Debts

    +
    +

    This section contains a list of identified risks that the project will face during its lifetime. In addition to it, each particular risk comes with a brief +self-explanatory description, the probability of its occurrence, its impact on the project and a solution on how to minimize it or mitigate it.

    +
    +
    +

    11.1. Risks

    + +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    RiskDescriptionProbabilityImpactSolution

    Complications with the project characteristics

    Almost everyone on the team has never done a project of such a size, and there may be some trouble.

    Medium

    High

    Each member will try to maximize its knowledge on some aspect of the project in the first weeks, in order to be able to be something similar to a leader in each one of the posible key aspects of the project.

    Problems with Svelte

    As a team we decided to try a new language for the front-end.

    High

    High

    The team will practice with the language to be able to do a good job when implementing the front-end.

    Problems with wikidata

    The team only used wikidata once before and not even everyone of us.

    High

    Very high

    We must read some documentation and try out some basic features to familiarize with wikidata.

    Teamwork issues

    The members of the team have never worked together. This may cause problems such as lack of communication or trust in each other’s work.

    Medium

    Medium

    We will try to keep in touch a few times a week, to see each ones progress on our tasks and we will try to build some confidence with each other throughout the development of the project as most of us met on this subject.

    Differences with technologies

    There are some members that don’t know as much in some aspects of the development

    Medium

    Low

    The members that know more on each of the aspects will help the others understand the things they could find difficult.

    Deadlines

    The project is based on some deadline days when our work is presented

    Very high

    High

    The team will follow the planification of the project to avoid problems on each one of the deadlines.

    +
    +
    +

    11.2. Technical Debts

    +
    +
    Wikidata
    +

    The day when wikidata is outdated could come, and the app could still be working. It’s quite difficult but it could happen.

    +
    +
    +
    Availability
    +

    The fact of using wikidata for retrieving the questions could mean that if the service of wikidata fails for some reason, the app would be failing as well.

    +
    @@ -1736,6 +2683,7 @@

    11. Risks and Technical Debts

    +

    12. Glossary

    @@ -1788,12 +2736,52 @@

    12. Glossary

    -

    <Term-1>

    -

    <definition-1>

    +

    WIQ

    +

    A web application where users can register and login in order to play. The game consists on answering a number of questions with different types and subjects obtaining a prize for each question well answered.

    + + +

    Wikidata

    +

    It is a collaborative, free and open knowledge base that stores structured information. It aims to provide a common source of data that can be used by Wikimedia projects and anyone else, under a public domain license.

    + + +

    Saber y ganar

    +

    It is a Spanish television quiz show. It involves contestants competing in several rounds of questions to test their knowledge in different categories.

    + + +

    Diagram

    +

    A visual representation of information, data flow, processes, or systems using symbols, shapes, and lines to illustrate relationships, connections, and concepts.

    + + +

    Front-ent

    +

    Refers to the part of a software application or website that users interact with directly. It encompasses the user interface, design elements, and functionality visible to users.

    + + +

    Back-end

    +

    The behind-the-scenes part of a software application or website responsible for handling data processing, server-side logic, and database interactions. It includes the server, database, and application logic that users do not directly interact with.

    + + +

    Microservices

    +

    An architectural approach to building software applications as a collection of small, loosely coupled services. Each service is designed to perform a specific business function and can be developed, deployed, and scaled independently.

    + + +

    Stakeholder

    +

    Individuals or groups with an interest or concern in a project, product, or organization. Stakeholders may include any party affected by or involved in the outcomes of a particular initiative.

    + + +

    Docker

    +

    A platform for developing, shipping, and running applications in containers. It allows developers to package applications and their dependencies into standardized units called containers, providing a consistent environment for software deployment across different computing environments.

    + + +

    MongoDB

    +

    A popular open-source NoSQL database management system known for its flexibility, scalability, and ease of use. It stores data in a flexible, JSON-like format called BSON and is commonly used for applications requiring high-volume data storage and real-time data processing.

    + + +

    Svelte

    +

    A modern JavaScript framework for building user interfaces. Unlike traditional frameworks that require the runtime presence of a virtual DOM, Svelte shifts the work to compile-time, resulting in highly optimized and efficient code with smaller bundle sizes.

    -

    <Term-2>

    -

    <definition-2>

    +

    API (Application programming interface)

    +

    Set of rules and protocols that allows different software applications to communicate and interact with each other. APIs define the methods and data formats that applications can use to request and exchange information. They enable developers to access the functionality of other software components or services without having to understand their internal workings. APIs are commonly used to integrate third-party services, access data from remote servers, and build modular and interoperable software systems.

    @@ -1803,7 +2791,7 @@

    12. Glossary