From 058a525261bbaf400d1357352817df49563cea8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20D=C3=ADaz=20N=C3=BA=C3=B1ez?= Date: Sat, 17 Feb 2024 15:45:30 +0100 Subject: [PATCH] Updates --- images/Deployment diagram.png | Bin 68298 -> 0 bytes images/Docker Container Setup.png | Bin 68751 -> 0 bytes images/Sequence diagram 1.png | Bin 20231 -> 17641 bytes images/Sequence diagram 2.png | Bin 29156 -> 27342 bytes images/Sequence diagram 3.png | Bin 20497 -> 18411 bytes images/Sequence diagram 4.png | Bin 18055 -> 16022 bytes images/Sequence diagram 5.png | Bin 25483 -> 21630 bytes images/Sequence diagram 6.png | Bin 27657 -> 23898 bytes images/Technical Context Diagram.png | Bin 68462 -> 0 bytes images/Whitebox Overall System.png | Bin 67871 -> 6514 bytes index.html | 660 ++++++++++----------------- 11 files changed, 243 insertions(+), 417 deletions(-) delete mode 100644 images/Deployment diagram.png delete mode 100644 images/Docker Container Setup.png delete mode 100644 images/Technical Context Diagram.png diff --git a/images/Deployment diagram.png b/images/Deployment diagram.png deleted file mode 100644 index d6314adb624cb4cbec7666ff3c5ca31eaf7f2c74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68298 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 a6ErjKOuzJP%<(HOmqyGkicMYBZ diff --git a/images/Docker Container Setup.png b/images/Docker Container Setup.png deleted file mode 100644 index a9e3d21f94cd08cfd838c5614e080600da771765..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68751 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 -
  • 4. Solution Strategy - -
  • +
  • 4. Solution Strategy
  • 5. Building Block View
    • 5.1. Whitebox Overall System
    • @@ -475,12 +468,12 @@

      arc42 T
    • 6. Runtime View
    • 7. Deployment View @@ -491,14 +484,9 @@

      arc42 T

    • 8. Cross-cutting Concepts
    • 9. Architecture Decisions
    • @@ -592,25 +580,6 @@

      1. Introduction and Goals (wiq_es04b) -
      -

      WIQ es un juego desarrollado por HappySw para:

      -
      -
      -
        -
      • -

        Desafiar a los fans de "Saber y ganar"

        -
      • -
      • -

        Aprender a realizar trabajos en equipo

        -
      • -
      • -

        Aprobar la asignatura de "Arquitectura del SW"

        -
      • -
      • -

        Mejorar como ingenieros del software

        -
      • -
      -

      1.1. Requirements Overview

      @@ -636,40 +605,9 @@

      1.1. Requirements Overview

      Further Information
      -

      See Introducdction and Goals in the arc42 documentation.

      -
      -
      - -
      -

      Esta aplicacion web inspirada en el famoso programa español "Saber y ganar" consiste en un minijuego de preguntas y respuestas -en el cual se le pregunta al jugador una precunta y se la ofrecen 4 posibles respuestas de las cuales solo una es la correcta.

      -
      -
      -
        -
      • -

        El jugador deberá registrarse con un nombre

        -
      • -
      • -

        El jugador deberá responder a la pregunta en un tiempo límite

        -
      • -
      • -

        Si no responde se le contara como respuesta erronea

        -
      • -
      • -

        Cada respuesta correcta otorga puntos

        -
      • -
      • -

        Opcional, se podra guardar la puntuación en un ranking

        -
      • -
      +

      See Introduction and Goals in the arc42 documentation.

      -
      -

      Para todos aquellos televidentes de "Saber y ganar" que querian participar en el programa, esta aplicacion es la idonea para -probar su conocimiento.

      -
      -

      La aplicación genera las preguntas automáticamente con la ayuda de Wikidata (la página que da soporte a wikipedia y muchas otras wikias) -para así tener constantemente actualizadas las preguntas en lugar de almacenarlas en una base de datos.

      @@ -702,37 +640,6 @@

      1.2. Quality Goals

      - ----- - - - - - - - - - - - - - - - - - - - - - - - - -
      AtributoMotivacion

      1

      Eficiencia

      El acceso, creación de preguntas y desplazamiento entre ellas deberá ser rápido para garantizar satisfacción del usuario.

      2

      Usabilidad

      La aplicación deberá ser atractiva para todo público fan del programa original además de aportar una gran variedad en las preguntas.

      3

      Mantenimiento

      La aplicación deberá garantizar su fácil ampliación y modificación para otorgar nuevas características a los usuarios

      1.3. Stakeholders

      @@ -775,31 +682,27 @@

      1.3. Stakeholders

      --+++ + - - - - - - - - - - + + + - - + + +
      Role/NameContact Expectations

      HappySw

      Empresa desarrolladora de la palicación que quiere ganar dinero con su desarrollo y reconocimiento a nivel español

      RTVE

      Cadena de television española que contrató el desarrollo para promocionar su programa

      Alumnos uniovi

      Desarrolladores de la aplicacion que quieren aprobar la asignatura

      <Role-1>

      <Contact-1>

      <Expectation-1>

      Profesores de ArquiSoft

      Evaluadores del desarrollo del programa y version final que quieren aprobar a sus alumnos

      <Role-2>

      <Contact-2>

      <Expectation-2>

      @@ -834,30 +737,6 @@

      2. Architecture Constraints

      -
      -
        -
      • -

        Programming Language Restriction: -The system must be implemented using Java as the primary programming language.

        -
      • -
      • -

        Mandatory Usage of WikiData API: -The WikiData API must be utilized as an integral part of the system, and interactions with WikiData are obligatory for data retrieval and integration.

        -
      • -
      • -

        Web Frontend Requirement: -The system must include at least one web frontend, and it is mandatory for deployment.

        -
      • -
      • -

        Freedom in Database Selection: -There are no imposed restrictions on the choice of the database. Teams have the freedom to select a suitable database technology based on project requirements.

        -
      • -
      • -

        No Company Policy Constraints: -There are no specific constraints or restrictions related to company policies. Teams have the flexibility to make decisions aligned with project goals.

        -
      • -
      -
      @@ -921,26 +800,11 @@

      3.1. Business Context

      -
      -
      -Deployment diagram -
      +
      +

      <Diagram or Table>

      -
      -
        -
      • -

        User: Represents users who interact with the application to play games or view their history.

        -
      • -
      • -

        System (QuestionGame): The main system that hosts the game logic and manages user interactions.

        -
      • -
      • -

        WikiData: Component used to retrieve data from Wikidata and automatically generate questions.

        -
      • -
      • -

        Database: Stores system information, such as user data, generated questions, game history, etc.

        -
      • -
      +
      +

      <optionally: Explanation of external domain interfaces>

      @@ -962,81 +826,19 @@

      3.2. Technical Context

      -
      -
      -Technical Context Diagram +
      +

      <Diagram or Table>

      +
      +

      <optionally: Explanation of technical interfaces>

      -
      -
        -
      • -

        User Agent: Represents the web or mobile interface used by users.

        -
      • -
      • -

        QuestionGame server: The server-side components, including the Frontend, QuestionGame logic, User’s API, and Question’s API.

        -
      • -
      • -

        HTTPS: Represents the communication channels, with HTTPS being the protocol used for secure communication.

        -
      • -
      • -

        Question Generation: Represents the means used for question and answers generation.

        -
      • -
      • -

        Database: Represents whichever system used for data persistence.

        -
      • -
      • -

        To be decided: Indicates that specific details about the channels and protocols are yet to be determined.

        -
      • -
      +
      +

      <Mapping Input/Output to Channels>

      -
      -

      3.2.1. Input/Output Mapping Table

      - ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      ComponentInput/OutputChannel/Protocol

      User’s API

      User registration, game history

      HTTPS

      Question’s API

      Question data retrieval

      HTTPS

      Frontend

      User interactions, game display

      HTTPS

      Database

      User data, game history, questions

      Specific database driver

      WikiData

      Data for question generation

      HTTP

      -

      4. Solution Strategy

      @@ -1081,36 +883,9 @@

      4. Solution Strategy

      -
      -

      4.1. Technological Decisions

      -
      -

      Programming Language: [Language] will be used for system development due to [reasons]. -Frontend Framework: [Framework] will be adopted for frontend development due to [reasons]. -Database: [Database] was selected as the storage engine due to [reasons].

      -
      -
      -
      -

      4.2. System Decomposition

      -
      -

      The [pattern] architecture pattern will be followed for structuring the system, dividing it into modules/classes responsible for [responsibilities].

      -
      -
      -
      -

      4.3. Quality Goals

      -
      -

      Performance: A quick system response will be sought, especially during question generation and gameplay. -Security: Security measures will be implemented to protect user information and ensure the integrity of generated questions.

      -
      -
      -
      -

      4.4. Organizational Decisions

      -
      -

      Development Methodology: [Methodology] will be adopted for project management, facilitating collaboration and iterative delivery.

      -
      -

      5. Building Block View

      @@ -1201,17 +976,17 @@

      5.1. Whitebox Overall System

      -Whitebox Overall System +Whitebox Overall System
      Motivation
      -

      El propósito de esta whitebox es proporcionar una visión clara, sencilla y sin entrar en detalles de cómo el sistema WIQ interactúa con el servicio -externo de Wikidata para obtener los datos necesarios para generar preguntas. Al presentar esta interacción de manera clara, -los stakeholders pueden comprender fácilmente cómo se integra el sistema WIQ con fuentes externas de datos y cómo se utiliza esa -información para cumplir con los requisitos del sistema relacionados con la generación automática de preguntas.

      +

      The purpose of this whitebox is to provide a clear, simple overview without delving into details of how the WIQ system interacts +with the external Wikidata service to obtain the necessary data for question generation. By presenting this interaction clearly, +stakeholders can easily understand how the WIQ system integrates with external data sources and how that information is used to +fulfill system requirements related to the automatic generation of questions.

      Contained Building Blocks
      @@ -1223,22 +998,22 @@

      5.1. Whitebox Overall System

      -Nombre -Descripción +Name +Description

      User

      -

      Representa al usuario que interactúa con la aplicación WIQ.

      +

      It represents the user interacting with the WIQ application.

      WIQ

      -

      Representa la aplicación principal WIQ.

      +

      It represents the main WIQ application.

      Wikidata

      -

      Servicio externo utilizado por WIQ para obtener datos y generar preguntas.

      +

      External service used by WIQ to obtain data and generate questions.

      @@ -1513,50 +1288,50 @@

      6. Runtime View

      -

      6.1. Autenticación del usuario

      +

      6.1. User Authentication

      -Sequence diagram 1 +Sequence diagram 1
      -

      6.2. Generación de una pregunta

      +

      6.2. Question Generation

      -Sequence diagram 2 +Sequence diagram 2
      -

      6.3. Usuario responde una pregunta

      +

      6.3. User Responds to a Question

      -Sequence diagram 3 +Sequence diagram 3
      -

      6.4. Usuario consulta su historial

      +

      6.4. User Checks their History

      -Sequence diagram 4 +Sequence diagram 4
      -

      6.5. Acceso a la información de los usuarios a través de un API

      +

      6.5. Access to User Information via an API

      -Sequence diagram 5 +Sequence diagram 5
      -

      6.6. Acceso a la información de las preguntas generadas a través de un API

      +

      6.6. Access to Generated Questions Information via an API

      -Sequence diagram 6 +Sequence diagram 6
      @@ -1566,62 +1341,139 @@

      7. Deployment View

      +
      +
      -

      The deployment strategy for our game, which leverages the Wikidata API to dynamically generate questions, is built around a Docker-based infrastructure. This approach allows for the encapsulation of our Java Spring Boot application within a Docker container, simplifying deployments across different environments (development, testing, and production) while ensuring consistency and isolation.

      +
      Content
      +

      The deployment view describes:

      +
      +
      +
        +
      1. +

        technical infrastructure used to execute your system, with infrastructure elements like geographical locations, environments, computers, processors, channels and net topologies as well as other infrastructure elements and

        +
      2. +
      3. +

        mapping of (software) building blocks to that infrastructure elements.

        +
      4. +
      +
      +
      +

      Often systems are executed in different environments, e.g. development environment, test environment, production environment. In such cases you should document all relevant environments.

      -
      -

      7.1. Infrastructure Level 1

      -

      Our application is containerized using Docker, enabling us to deploy the entire stack as a single .jar file that includes the web server. This method ensures that our application can be easily moved across environments or scaled up as needed without significant changes to the infrastructure.

      +

      Especially document a deployment view if your software is executed as distributed system with more than one computer, processor, server or container or when you design and construct your own hardware processors and chips.

      -

      Overview Diagram: -The infrastructure features a single Docker container that hosts the Java Spring Boot application. This container communicates with external services, such as the Wikidata API, to fetch data in real-time and generate game questions.

      +

      From a software perspective it is sufficient to capture only those elements of an infrastructure that are needed to show a deployment of your building blocks. Hardware architects can go beyond that and describe an infrastructure to any level of detail they need to capture.

      -
      Motivation::
      -

      The primary motivation behind using Docker for deployment is to streamline the development and deployment processes. By containerizing the application, we reduce discrepancies between environments, making it easier to develop, test, and deploy with confidence.

      +
      Motivation
      +

      Software does not run without hardware. +This underlying infrastructure can and will influence a system and/or some +cross-cutting concepts. Therefore, there is a need to know the infrastructure.

      +
      +
      +
      Form
      +

      Maybe a highest level deployment diagram is already contained in section 3.2. as +technical context with your own infrastructure as ONE black box. In this section one can +zoom into this black box using additional deployment diagrams:

      -
      Quality and/or Performance Features::
      • -

        Portability: Docker containers can run on any system that has Docker installed, reducing environment-specific bugs.

        +

        UML offers deployment diagrams to express that view. Use it, probably with nested diagrams, +when your infrastructure is more complex.

      • -

        Scalability: While we start with a single container, the setup can be easily scaled using Docker Compose or Docker Swarm if the need arises.

        +

        When your (hardware) stakeholders prefer other kinds of diagrams rather than a deployment diagram, let them use any kind that is able to show nodes and channels of the infrastructure.

        +
      • +
      +
      +
      +
      Further Information
      +

      See Deployment View in the arc42 documentation.

      +
      +
      +
      +
      +

      7.1. Infrastructure Level 1

      +
      +
      +
      +

      Describe (usually in a combination of diagrams, tables, and text):

      +
      +
      +
        +
      • +

        distribution of a system to multiple locations, environments, computers, processors, .., as well as physical connections between them

      • -

        Efficiency: Docker utilizes resources more efficiently than traditional VMs, allowing for faster startup times and lower overhead.

        +

        important justifications or motivations for this deployment structure

      • -

        Web Server/Application (.jar file): Packaged within a Docker container, it includes all necessary dependencies to run independently across any Docker-supported platform.

        +

        quality and/or performance features of this infrastructure

      • -

        External APIs (e.g., Wikidata API): Accessed over the network, these APIs provide dynamic content for the game.

        +

        mapping of software artifacts to elements of this infrastructure

      +
      +

      For multiple environments or alternative deployments please copy and adapt this section of arc42 for all relevant environments.

      +
      +
      +
      +
      +

      <Overview Diagram>

      +
      +
      +
      +
      Motivation
      +
      +

      <explanation in text form>

      +
      +
      Quality and/or Performance Features
      +
      +

      <explanation in text form>

      +
      +
      Mapping of Building Blocks to Infrastructure
      +
      +

      <description of the mapping>

      +
      +
      +

      7.2. Infrastructure Level 2

      +
      +
      +
      +

      Here you can include the internal structure of (some) infrastructure elements from level 1.

      +
      -

      At this level, we describe the Docker container configuration that encapsulates our application.

      +

      Please copy the structure from level 1 for each selected element.

      +
      +
      -

      7.2.1. Docker Container

      +

      7.2.1. <Infrastructure Element 1>

      -

      Our Docker container is built from a Java base image, which is then layered with our application’s .jar file. This setup encapsulates the entire runtime environment required for our application.

      +

      <diagram + explanation>

      -
      -
      -Docker Container Setup
      -
      Figure 1. Diagram: Docker Container Setup::
      +
      +

      7.2.2. <Infrastructure Element 2>

      +
      +

      <diagram + explanation>

      -
      Explanation:_
      -

      This diagram illustrates the internal structure of our Docker container. It shows the Java Spring Boot application, including the embedded web server, packaged as a .jar file. The application interacts with external APIs, like the Wikidata API, to retrieve data necessary for generating game questions. The containerized approach ensures that the application can be deployed consistently across any environment that supports Docker.

      +

      …​

      +
      +
      +
      +

      7.2.3. <Infrastructure Element n>

      +
      +

      <diagram + explanation>

      @@ -1631,87 +1483,124 @@

      7.2.1. Docker Container

      8. Cross-cutting Concepts

      +
      +
      -

      The following concepts provide a foundation for the design and implementation of the trivia game project, which utilizes the Wikidata API for dynamic question generation and employs a hexagonal architecture for its Java Spring Boot application.

      +
      Content
      +

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

      -
      -

      8.1. Domain Model

      -
      -

      The domain model for our game includes entities such as Question, Category, Player, and GameSession. These are crucial for representing the game’s data and logic. The model serves as the basis for interactions within the application and between the application and the database.

      +
      +
        +
      • +

        models, especially domain models

        +
      • +
      • +

        architecture or design patterns

        +
      • +
      • +

        rules for using specific technology

        +
      • +
      • +

        principal, often technical decisions of an overarching (= cross-cutting) nature

        +
      • +
      • +

        implementation rules

        +
      • +
      -
      Explanation:
      -

      The Question entity encapsulates details of the trivia questions. Category classifies these questions into various topics. Player represents users and their interactions with the game, while GameSession maintains the state of play, including scores and progress.

      -
      +
      Motivation
      +

      Concepts form the basis for conceptual integrity (consistency, homogeneity) of the architecture. +Thus, they are an important contribution to achieve inner qualities of your system.

      -
      -

      8.2. Hexagonal Architecture

      -

      Our application is structured using hexagonal architecture principles, which prioritize the separation of core logic from peripheral concerns like user interface and external API interactions.

      +

      Some of these concepts cannot be assigned to individual building blocks, e.g. security or safety.

      -
      Explanation:
      -

      This architecture facilitates the creation of a flexible and maintainable codebase. It allows for easy adaptation to changes in external services or user interface technologies without impacting the application’s core logic.

      -
      +
      Form
      +

      The form can be varied:

      -
      -

      8.3. Java Persistence API (JPA) for Data Management

      -
      -

      We use JPA for data persistence to abstract and handle all database operations, allowing for a more streamlined and object-oriented approach to data handling.

      +
      +
        +
      • +

        concept papers with any kind of structure

        +
      • +
      • +

        cross-cutting model excerpts or scenarios using notations of the architecture views

        +
      • +
      • +

        sample implementations, especially for technical concepts

        +
      • +
      • +

        reference to typical usage of standard frameworks (e.g. using Hibernate for object/relational mapping)

        +
      • +
      -
      Explanation:
      -

      JPA enables us to map our domain objects to the database schema with ease, providing a clear layer of abstraction that simplifies data persistence and retrieval while ensuring our application remains agnostic of the underlying database technology.

      +
      Structure
      +

      A potential (but not mandatory) structure for this section could be:

      +
      +
        +
      • +

        Domain concepts

        +
      • +
      • +

        User Experience concepts (UX)

        +
      • +
      • +

        Safety and security concepts

        +
      • +
      • +

        Architecture and design patterns

        +
      • +
      • +

        "Under-the-hood"

        +
      • +
      • +

        development concepts

        +
      • +
      • +

        operational concepts

        +
      • +
      -
      -

      8.4. Logging with Log4j and System.out

      -

      For monitoring runtime behavior and troubleshooting, the project utilizes Log4j and System.out for logging. While Log4j offers more sophisticated logging capabilities, System.out is used for straightforward, immediate console output.

      +

      Note: it might be difficult to assign individual concepts to one specific topic +on this list.

      -
      -
      Explanation:
      -

      Log4j is configured to capture various levels of output, which can be directed to multiple destinations such as console, files, or even remote logging servers. For simplicity and immediacy during development or less complex deployment scenarios, System.out is employed for logging output directly to the console.

      +
      +
      +Possible topics for crosscutting concepts
      -
      -

      8.5. Security

      -

      Security is a key concern, ensuring that user data and game integrity are protected. We implement standard security practices at various levels within the application.

      +
      Further Information
      +

      See Concepts in the arc42 documentation.

      -
      -
      Explanation:
      -

      This includes securing the web layer with Spring Security, encrypting sensitive data, and protecting against common web vulnerabilities.

      -

      8.6. Performance Optimization

      -
      -

      Performance optimization is considered in all aspects of the application, from the efficient design of the domain model to the configuration of the persistence layer.

      -
      +

      8.1. <Concept 1>

      -
      Explanation:
      -

      We ensure that database interactions are efficient through JPA’s caching and lazy loading. Queries are optimized to fetch only the necessary data, minimizing response times and resource utilization.

      +

      <explanation>

      -

      8.7. Continuous Integration and Continuous Deployment (CI/CD)

      +

      8.2. <Concept 2>

      -

      The project adheres to CI/CD practices, facilitating automated testing, building, and deployment processes which contribute to the robustness and reliability of the application.

      +

      <explanation>

      -
      Explanation:
      -

      Our CI/CD pipeline automates the process of integrating code changes, building the application, running tests, and deploying the Dockerized application, ensuring consistent and reliable delivery of updates.

      +

      …​

      -

      8.8. Scalability

      -
      -

      Designing for scalability, the application can accommodate an increasing number of users and interactions without performance degradation.

      -
      +

      8.3. <Concept n>

      -
      Explanation:
      -

      Scalable solutions such as Docker containers allow the application to be deployed in a distributed environment, where resources can be adjusted based on demand.

      +

      <explanation>

      @@ -1894,57 +1783,6 @@

      11. Risks and Technical Debts

      - ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      PriorityRisk/DebtDescription

      High

      Migration to Java

      -

      migration from the current project language, JavaScript (JS), to Java

      -

      Medium

      IDE Configuration

      -

      Version compatibility, extensions and other preferences to work perfectly without conflicts

      -

      Medium

      Database

      -

      discuss which database is best for the project

      -

      Low

      Docker

      -

      Know how docker works, what it is for, how it is used and what its alternatives could be.

      -

      Low

      Microservices

      -

      Research about microservices and what they can contribute to the project

      -
      @@ -2000,24 +1838,12 @@

      12. Glossary

      -

      wikiData

      -

      A collaborative platform that provides structured data for Wikimedia projects, including Wikipedia.

      - - -

      IDE (Integrated Development Environment)

      -

      A software application that provides comprehensive facilities to programmers for software development.

      - - -

      Docker

      -

      An open-source platform designed to automate the deployment of applications inside lightweight, portable containers.

      - - -

      Microservices

      -

      An architectural style that structures an application as a collection of small, independent services.

      +

      <Term-1>

      +

      <definition-1>

      -

      API (Application Programming Interface)

      -

      A set of protocols and tools for building software applications, allowing them to communicate with each other.

      +

      <Term-2>

      +

      <definition-2>

      @@ -2027,7 +1853,7 @@

      12. Glossary