Skip to content

Commit

Permalink
Merge pull request #51 from Arquisoft/develop
Browse files Browse the repository at this point in the history
Entregable 1
  • Loading branch information
RicardoDiNu authored Feb 19, 2024
2 parents cfeab6e + 967809e commit 2adc0d7
Show file tree
Hide file tree
Showing 15 changed files with 2,755 additions and 162 deletions.
42 changes: 42 additions & 0 deletions .github/workflows/deploy-pages.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: Deploy Pages
on:
push:
branches: [ master, develop, deploy-gh-pages ]

jobs:
build-and-deploy:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2

- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.0'

- name: Install Asciidoctor and Asciidoctor-diagram
run: gem install asciidoctor asciidoctor-diagram

- name: Install Graphviz
run: sudo apt-get install graphviz

- name: Set up Node.js
uses: actions/setup-node@v1
with:
node-version: '14.x'

- name: Install npm dependencies in docs
run: cd docs && npm install

- name: Build project
run: cd docs && npm run build

- name: Deploy to GitHub Pages
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
cd docs
npx gh-pages -d build -r https://x-access-token:${GITHUB_TOKEN}@github.com/Arquisoft/wiq_es04b.git
1,904 changes: 1,904 additions & 0 deletions docs/index.html

Large diffs are not rendered by default.

387 changes: 386 additions & 1 deletion docs/package-lock.json

Large diffs are not rendered by default.

42 changes: 35 additions & 7 deletions docs/src/01_introduction_and_goals.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ ifndef::imagesdir[:imagesdir: ../images]

[[section-introduction-and-goals]]
== Introduction and Goals (wiq_es04b)

[role="arc42help"]
****
Describes the relevant requirements and the driving forces that software architects and development team must consider.
Expand All @@ -14,9 +13,14 @@ These include
* quality goals for the architecture and
* relevant stakeholders and their expectations
****
WIQ is a game developed by HappySw for:

=== Requirements Overview
* Challenging "Saber y ganar" fans
* Learning to perform teamwork
* Passing the "Software Architecture" subject
* Improving as software engineers

=== Requirements Overview
[role="arc42help"]
****
.Contents
Expand All @@ -37,10 +41,24 @@ Keep these excerpts as short as possible. Balance readability of this document w
.Further Information
See https://docs.arc42.org/section-1/[Introduction and Goals] in the arc42 documentation.
See https://docs.arc42.org/section-1/[Introducdction and Goals] in the arc42 documentation.
****

This web application, inspired by the famous Spanish TV show "Saber y ganar," consists of a mini-game of questions and answers.
In this game, the player is asked a question and presented with four possible answers, of which only one is correct.

* The player must register with a name.
* The player must answer the question within a time limit.
* If the player does not answer, it will be counted as an incorrect response.
* Each correct answer earns points.
* Optionally, the score can be saved in a ranking.

For all those "Saber y ganar" viewers who wanted to participate in the show, this application is ideal for testing their knowledge.

The application automatically generates questions with the help of Wikidata (the page that supports Wikipedia and many other wikis)
to constantly update the questions instead of storing them in a database.

=== Quality Goals

[role="arc42help"]
Expand All @@ -63,6 +81,14 @@ If you as an architect do not know how the quality of your work will be judged..
A table with quality goals and concrete scenarios, ordered by priorities
****

[options="header",cols="1,2,2"]
|===
|Nº|Atributo|Motivacion
| 1 | Efficiency | Access, creation of questions, and navigation between them should be fast to ensure user satisfaction.
| 2 | Usability | The application should be appealing to all fans of the original program while also offering a wide variety of questions.
| 3 | Manteinence | The application should ensure easy expansion and modification to provide users with new features.
|===

=== Stakeholders

[role="arc42help"]
Expand All @@ -85,9 +111,11 @@ These stakeholders determine the extent and the level of detail of your work and
Table with role names, person names, and their expectations with respect to the architecture and its documentation.
****

[options="header",cols="1,2,2"]
[options="header",cols="1,2"]
|===
|Role/Name|Contact|Expectations
| _<Role-1>_ | _<Contact-1>_ | _<Expectation-1>_
| _<Role-2>_ | _<Contact-2>_ | _<Expectation-2>_
|Role/Name|Expectations
| HappySw | A company developing the application aiming to earn money through its development and recognition at the Spanish level.
| RTVE | A Spanish television network that hired the development to promote its program.
| Uniovi students | The application developers who want to pass the subject.
| ArquiSoft teachers | The evaluators of the program development and final version who want their students to pass.
|===
16 changes: 16 additions & 0 deletions docs/src/02_architecture_constraints.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,19 @@ conventions (e.g. programming or versioning guidelines, documentation or naming
See https://docs.arc42.org/section-2/[Architecture Constraints] in the arc42 documentation.
****


- *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.
79 changes: 71 additions & 8 deletions docs/src/03_system_scope_and_context.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ See https://docs.arc42.org/section-3/[Context and Scope] in the arc42 documentat

=== Business Context


[role="arc42help"]
****
.Contents
Expand All @@ -48,9 +49,25 @@ The title of the table is the name of your system, the three columns contain the
****

**<Diagram or Table>**

**<optionally: Explanation of external domain interfaces>**
[plantuml,"Deployment diagram",png]
----
actor user
component System[
<<System>>
QuestionGame
]
component WikiData
database Database
user --> System
System --> Database
System --> WikiData
----

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

=== Technical Context

Expand All @@ -68,8 +85,54 @@ together with a mapping table showing the relationships between channels and inp
****

**<Diagram or Table>**

**<optionally: Explanation of technical interfaces>**

**<Mapping Input/Output to Channels>**
[plantuml,"Technical Context Diagram",png]
----
actor user
actor developer
database Database
node "Question Generation"{
[WikiData]
}
node "User Agent" {
[Web / Mobile]
}
node "QuestionGame server" {
[Frontend]
[QuestionGame]
[User's API]
[Question's API]
}
user --> [Web / Mobile]
[Web / Mobile] --> (Frontend): HTTPS
[Frontend] --> (QuestionGame): To decide
[QuestionGame] --> Database: Specific driver
[QuestionGame] --> WikiData: HTTP
[QuestionGame] <-- (User's API): To decide
[QuestionGame] <-- (Question's API): To decide
developer --> (User's API) : HTTPS
developer --> (Question's API) : HTTPS
----

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

==== Input/Output Mapping Table

[options="header",cols="1,2,2"]
|===
|Component|Input/Output|Channel/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
|===
17 changes: 17 additions & 0 deletions docs/src/04_solution_strategy.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -30,3 +30,20 @@ Refer to details in the following sections.
See https://docs.arc42.org/section-4/[Solution Strategy] in the arc42 documentation.
****

There are some placeholders for the decisions yet to be taken.

=== Technological Decisions
* Programming Language: Java will be used for system development because all team members are familiar with it, and we believe we can perform better using this language.
* Frontend Framework: SpringBoot will be adopted for frontend development because it allows us to deploy a web application using Java and provides numerous functionalities that greatly facilitate the implementation of project requirements, such as user authentication.
* Database: [Database] was selected as the storage engine due to [reasons].

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

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

=== Organizational Decisions
Development Methodology: GitFlow will be adopted for project management, facilitating collaboration and iterative delivery.
38 changes: 35 additions & 3 deletions docs/src/05_building_block_view.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -63,19 +63,51 @@ In the best case you will get away with examples or simple signatures.
****

_**<Overview Diagram>**_
[plantuml,"Whitebox Overall System",png]
----
actor User as User
rectangle "WIQ" {
User --> WIQ : Interacts with
}
rectangle "Wikidata" {
WIQ --> Wikidata : Requests data to generate questions
}
----


Motivation::

_<text explanation>_
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::
_<Description of contained building block (black boxes)>_
[cols="1,2" options="header"]
|===
| Name | Description

| User
| It represents the user interacting with the WIQ application.

| WIQ
| It represents the main WIQ application.

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


In progress...::
We have yet to decide the precise composition of our system so we can´t fill the rest of this section yet.


Important Interfaces::
_<Description of important interfaces>_


[role="arc42help"]
****
Insert your explanations of black boxes from level 1:
Expand Down
Loading

0 comments on commit 2adc0d7

Please sign in to comment.