diff --git a/images/Level2.png b/images/Level2.png new file mode 100644 index 00000000..7360072d Binary files /dev/null and b/images/Level2.png differ diff --git a/images/Sequence diagram.png b/images/Sequence diagram.png deleted file mode 100644 index c5e1de84..00000000 Binary files a/images/Sequence diagram.png and /dev/null differ diff --git a/images/historial.png b/images/historial.png new file mode 100644 index 00000000..c8a50728 Binary files /dev/null and b/images/historial.png differ diff --git a/images/juega.png b/images/juega.png new file mode 100644 index 00000000..3e5a228a Binary files /dev/null and b/images/juega.png differ diff --git a/images/whiteBox5.1.png b/images/whiteBox5.1.png new file mode 100644 index 00000000..40cc0c08 Binary files /dev/null and b/images/whiteBox5.1.png differ diff --git a/index.html b/index.html index c94964a2..6ccd49f6 100644 --- a/index.html +++ b/index.html @@ -458,20 +458,25 @@

arc42 T
  • 3.2. Technical Context
  • -
  • 4. Solution Strategy
  • +
  • 4. Solution Strategy + +
  • 5. Building Block View
  • 6. Runtime View
  • 7. Deployment View @@ -482,20 +487,19 @@

    arc42 T

  • 8. Cross-cutting Concepts
  • 9. Architecture Decisions
  • @@ -784,446 +788,183 @@

    3.2. Technical Context

    4. Solution Strategy

    -

    Elaboramos una aplicacíon en la que los usuarios pueden registrarse para jugar, donde en cada juego tendran que responder varias preguntas, de distintas categorias, donde se guardará -un ranking con la máxima puntuación del usuario y se podrá comparar con otros usuarios, también tendra una sección que indique su promedio de aciertos y en que categoría acierta más preguntas.

    +

    We developed an application in which users can register to play, where in each game they will have to answer several questions, from different categories, where it will be saved +A ranking with the maximum score of the user and can be compared with other users, it will also have a section that indicates their correct guess and in which category they get the most questions right.

    -
    Tecnologías usadas para llevar a cabo:
    +
    Technologies used to carry out:
    +
    +

    4.1. Design

    -
    Diseño
    -

    La página web diseñada está compuesta por un frontend en React, un backend en Node.js y está documentada usando Asciidoc. Cada usuario tendrá su propia cuenta donde se guardará su información. Las decisiones relacionadas con el diseño se detallan en el punto 9.

    -
    -
    -
    Seguridad
    -

    Garantizamos la seguridad del usuario

    -
    -
    -
    Testabilidad
    -

    Se realizarán pruebas para cada parte individual de la aplicación, garantizando así el correcto funcionamiento de los diferentes modulos tanto individualmente como de forma conjunta.

    -
    -
    -
    Interfaz
    -

    La interfaz gráfica será elegida entre todos los miembros del equipo, aportando cada uno algún boceto o idea, los cuales serán puestos en común y se decidirá cual se ajusta mejor a la apicación esperada y que elementos de dichos bocetos resultan más adecuados. -Para ello se tendrá en cuenta la usabilidad y las necesidades de los difentes tipos de usuarios.

    -
    -
    -
    -
    -
    -

    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.

    +

    The designed website is composed of a frontend in React, a backend in Node.js and is documented using Asciidoc. Each user will have their own account where their information will be saved. Design-related decisions are detailed in point 9.

    -
    -

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

    +
    +

    4.2. Security

    -
    Form
    -

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

    -
    -
    -
    -Hierarchy of building blocks +

    We guarantee the safety of the user

    +
    +

    4.3. Testability

    -

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

    +

    Tests will be carried out for each individual part of the application, thus ensuring the correct operation of the different modules both individually and together.

    -
    -

    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.

    +
    +

    4.4. Interface

    -

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

    +

    The graphical interface will be chosen among all the members of the team, each one contributing a sketch or idea, which will be shared and it will be decided which best fits the expected performance and which elements of these sketches are most suitable. +This will take into account the usability and needs of different types of users.

    -
    -
    Further Information
    -

    See Building Block View in the arc42 documentation.

    +
    +
    +

    5. Building Block View

    +

    5.1. Whitebox Overall System

    -
    -
    -

    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.

      -
    • -
    -
    -
    -
    -
    -

    <Overview Diagram>

    -
    -
    -
    -
    Motivation
    -
    -

    <text explanation>

    -
    -
    Contained Building Blocks
    -
    -

    <Description of contained building block (black boxes)>

    -
    -
    Important Interfaces
    -
    -

    <Description of important interfaces>

    -
    -
    +

    The code is broken down in a structured way by levels, in which the internal dependencies of each element are taught. The system is divided into Whitebox and Blackbox.

    -
    +
    -
    -

    Insert your explanations of black boxes from level 1:

    +Hierarchy of building blocks
    -
    -

    If you use tabular form you will only describe your black boxes with name and -responsibility according to the following schema:

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

    Actors

    Description

    <black box 1>

     <Text>

    Admin

    You have access to the entire app and can manage it to make it work properly.

    <black box 2>

     <Text>

    User

    It’s the one that interacts directly with the app.

    -
    -

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

    -
    -
    -

    <Interface(s)>

    -
    -
    -

    <(Optional) Quality/Performance Characteristics>

    -
    -
    -

    <(Optional) Directory/File Location>

    -
    -
    -

    <(Optional) Fulfilled Requirements>

    -
    -
    -

    <(optional) Open Issues/Problems/Risks>

    -
    -
    -
    -

    5.1.2. <Name black box 2>

    -
    -

    <black box template>

    -
    -
    -
    -

    5.1.3. <Name black box n>

    -
    -

    <black box template>

    -
    -
    -
    -

    5.1.4. <Name interface 1>

    -
    -

    …​

    -
    -
    -
    -

    5.1.5. <Name interface m>

    - -
    -

    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

    -
    -
    -
    -
    -

    5.2.1. White Box <building block 1>

    -
    -
    -
    -

    …​describes the internal structure of building block 1.

    -
    -
    -
    -
    -

    <white box template>

    -
    -
    -
    -

    5.2.2. White Box <building block 2>

    -
    -

    <white box template>

    -
    -
    -

    …​

    -
    -
    -
    -

    5.2.3. White Box <building block m>

    -
    -

    <white box template>

    -
    -
    +

    5.2. Blackbox Overall System

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

    Name

    Description

    Interface

    The interface with which the user interacts

    WikiData

    Provide the questions that will be used in the app

    MongoDB

    Store user data

    -

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

    -
    +

    5.3. Level 2

    +
    -
    -

    Specifies the internal structure of building block x.1.

    -
    -
    -
    -
    -

    <white box template>

    -
    -
    -
    -

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

    -
    -

    <white box template>

    +Hierarchy of building blocks
    -
    -

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

    -

    <white box template>

    +
    Motivation
    +

    In this diagram we can see the decided microservices that will provide all the operations necessary for the +application to work properly.

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

    Name

    Description

    Game Service

    It is the microservice that will be in charge of the correct functioning of the game and calculate the user’s score.

    UserData Service

    It is the microservice that provides the necessary user data.

    Authetification Service

    It’s a microservice that users use to sign in to your app.

    Question Service

    It is the microservice that will generate the questions through the WikiData API.

    -

    6. Runtime View

    -
    -
    -
    -
    Contents
    -

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

    -
    -
    -
      -
    • -

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

      -
    • -
    • -

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

      -
    • -
    • -

      operation and administration: launch, start-up, stop

      -
    • -
    • -

      error and exception scenarios

      -
    • -
    -
    -
    -

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

    -
    +
    +

    6.1. <The user plays>

    -
    Form
    -

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

    -
    -
    -
      -
    • -

      numbered list of steps (in natural language)

      -
    • -
    • -

      activity diagrams or flow charts

      -
    • -
    • -

      sequence diagrams

      -
    • -
    • -

      BPMN or EPCs (event process chains)

      -
    • -
    • -

      state machines

      -
    • -
    • -

      …​

      -
    • -
    +

    The user starts a game, and the game uses the questions service to run it.

    -
    -
    Further Information
    -

    See Runtime View in the arc42 documentation.

    +
    +
    +Hierarchy of building blocks
    -

    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.2. <The user looks at their history>

    -

    It is possible to use a sequence diagram:

    +

    The user checks their scores and statistics.

    -Sequence diagram +Hierarchy of building blocks
    -
    -
    -

    6.2. <Runtime Scenario 2>

    - -
    -
    -

    6.3. …​

    - -
    -
    -

    6.4. <Runtime Scenario n>

    @@ -1325,17 +1066,7 @@

    7.1. Infrastructure Level 1

    Motivation
    -

    <Simple structure of how the different parts of the application would work>

    -
    -
    Quality and/or Performance Features
    -
    -

    <We will have a link to wikidata that will be where we get the different questions, in addition a registration and persistence layer of user and registration data, finally they will be united in the link layer and this will be the one that is directly related to the application>

    -
    -
    Mapping of Building Blocks to Infrastructure
    -
    -

    <Quiestion Generator: give us the questions posible answers - User service: All the options that users needs - Register: create new acounts or login with one>

    +

    As we can see, this would be the initial diagram of how the classes would relate to each other. We have, in the first place, the 'app' class that is related to 'link', which in turn is related to the different parts of the app.

    @@ -1353,24 +1084,39 @@

    7.2. Infrastructure Level 2

    -

    7.2.1. <Infrastructure Element 1>

    +

    7.2.1. APP

    -

    <diagram + explanation>

    +

    "App": It is the part with which the user interacts. This part would be responsible for providing the visual interface and using the rest of the created classes.

    -

    7.2.2. <Infrastructure Element 2>

    +
    -

    <diagram + explanation>

    +

    "Link" is the part of the application that connects the rest of the parts. This will facilitate the use of the different parts of the application in the App section.

    +
    +
    +

    7.2.3. REGISTER

    -

    …​

    +

    "Register" is the part of the application that handles user registration and login. It’s very important as it’s the first thing a potential user will encounter when they visit our page.

    -

    7.2.3. <Infrastructure Element n>

    +

    7.2.4. USER SERVICE

    -

    <diagram + explanation>

    +

    "User service" is the part of the application that generates the various services within the application to the user, such as a ranking, correctly answered questions, and so on.

    +
    +
    +
    +

    7.2.5. QUESTION GENERATOR

    +
    +

    "Question generator" is the part of the application that, using the data from Wikidata and some pre-created templates, generates the questions and possible answers of the application.

    +
    +
    +
    +

    7.2.6. WIKIDATA

    +
    +

    Wikidata” is the API that you will use to obtain the data for the questions. Wikidata is a free and collaborative database that can be read and edited by both humans and machines. It provides a common source of certain types of data that can be used by Wikimedia projects.

    @@ -1480,89 +1226,91 @@

    8. Cross-cutting Concepts

    -

    8.1. <User Interface >

    +

    8.1. User Interface

    -

    <A user interface is the space where a human and a computer or device communicate and exchange information.>

    +

    A user interface is the space where a human and a computer or device communicate and exchange information

    -

    8.2. <Ergonomics >

    +

    8.2. <Ergonomics >

    -

    <Ergonomics is the science of designing and arranging workplaces, products, and systems to fit and adapt to the people who use them. Ergonomics aims to improve comfort, efficiency, and safety by considering human physical and psychological needs and limitations. >

    +

    Ergonomics is the science of designing and arranging workplaces, products, and systems to fit and adapt to the people who use them. Ergonomics aims to improve comfort, efficiency, and safety by considering human physical and psychological needs and limitations.

    -

    8.3. <Internationalization >

    +

    8.3. Internationalization

    -

    <Internationalization is the practice of designing and developing applications that can support multiple languages, formats, and conventions>

    +

    Internationalization is the practice of designing and developing applications that can support multiple languages, formats, and conventions

    -

    8.4. <Security >

    +

    8.4. Security

    -

    <Security is a broad term that can refer to different aspects of protection, resilience, or prevention of harm. >

    +

    Security is a broad term that can refer to different aspects of protection, resilience, or prevention of harm.

    -

    8.5. <Safety >

    +

    8.5. Safety

    -

    <Is the state of being protected from danger or harm.>

    +

    Is the state of being protected from danger or harm.

    -

    8.6. <Build, Test, Deploy >

    -
    -

    ← Build: This stage involves compiling, validating, and packaging the source code into executable or deployable artifacts. -- Test: This stage involves running various tests, such as unit tests, integration tests, and regression tests, to ensure the quality and functionality of the software. -- Deploy: This stage involves delivering or releasing the software to the target environment, such as a server, a cloud platform, or a user device. >

    -
    -
    -
    -

    8.7. <Code Generation >

    -
    -

    <Code generation is the process of creating executable or deployable code from various sources of information, such as natural language, images, or other code.>

    +

    8.6. Build, Test, Deploy

    +
    +
      +
    • +

      Build: This stage involves compiling, validating, and packaging the source code into executable or deployable artifacts.

      +
    • +
    • +

      Test: This stage involves running various tests, such as unit tests, integration tests, and regression tests, to ensure the quality and functionality of the software.

      +
    • +
    • +

      Deploy: This stage involves delivering or releasing the software to the target environment, such as a server, a cloud platform, or a user device.

      +
    • +
    -

    8.8. <Migration >

    +

    8.7. Code Generation

    -

    <Migrating from one software application or platform to another, such as switching from a legacy system to a modern one, or from a local server to a cloud service.>

    +

    Code generation is the process of creating executable or deployable code from various sources of information, such as natural language, images, or other code.

    -

    8.9. <Configurability >

    +

    8.8. Migration

    -

    <Configurability is the ability to modify or customize something, especially in computing, electronics, or de>

    +

    Migrating from one software application or platform to another, such as switching from a legacy system to a modern one, or from a local server to a cloud service.

    -

    8.10. <Administration >

    +

    8.9. Configurability

    -

    <The process or activity of managing, directing, or organizing something or someone>

    +

    Configurability is the ability to modify or customize something, especially in computing, electronics, or devices

    -

    8.11. <Management >

    +

    8.10. Administration

    -

    <Management is the process of organizing and directing the resources of a business or organization to achieve its goals. >

    +

    The process or activity of managing, directing, or organizing something or someone

    -

    8.12. <Disaster-Recovery >

    +

    8.11. Management

    -

    <Is the process of restoring the functionality and data of software applications after a disaster, such as a natural calamity, a cyberattack, or a human error.>

    +

    Management is the process of organizing and directing the resources of a business or organization to achieve its goals.

    -

    8.13. <Architecture and design patterns >

    +

    8.12. Disaster-Recovery

    -

    <Architecture and design patterns are concepts that help software developers and architects design and build software systems that are efficient, scalable, and maintainable>

    +

    Is the process of restoring the functionality and data of software applications after a disaster, such as a natural calamity, a cyberattack, or a human error.

    -

    8.14. <Concept >

    +

    8.13. Architecture and design patterns

    -

    <explanation>

    +

    Architecture and design patterns are concepts that help software developers and architects design and build software systems that are efficient, scalable, and maintainable

    @@ -1972,7 +1720,7 @@

    12. Glossary