Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Final documentation #223

Merged
merged 4 commits into from
Apr 27, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions docs/src/04_solution_strategy.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ The Model-View-Controler architecture pattern will be followed for structuring t
=== Organizational Decisions
Development Methodology: GitFlow will be adopted for project management, facilitating collaboration and iterative delivery.

* The default branch: master. This branch will only be used to create new releases and will contain the most stable version of the system.
* The development branch: develop. This branch will be used to integrate the features developed by the team and will be the basis for creating new releases. This will have the largest commit amount, and will also have a stable version that could be deployed at any time.
* The default branch: https://github.com/Arquisoft/wiq_es04b/tree/master[master]. This branch will only be used to create new releases and will contain the most stable version of the system.
* The development branch: https://github.com/Arquisoft/wiq_es04b/tree/develop[develop]. This branch will be used to integrate the features developed by the team and will be the basis for creating new releases. This will have the largest commit amount, and will also have a stable version that could be deployed at any time.
* Feature branches: These branches will be used to develop new features, and will be created from the develop branch. After the feature is developed, it will be merged into the develop branch and branch can be deleted, although we will not usually delete branches.
* Fix branches: These branches will be used to fix bugs, and will be created from the develop branch. After the bug is fixed, it will be merged into the develop branch and branch can be deleted, although we will not usually delete branches.
17 changes: 16 additions & 1 deletion docs/src/08_concepts.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,9 @@ The following concepts provide a foundation for the design and implementation of

=== Domain Model

The domain model for our game includes entities such as `Question`, `Category`, `Player`, `Role`, 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.
The domain model for our game includes entities such as https://github.com/Arquisoft/wiq_es04b/blob/master/src/main/java/com/uniovi/entities/Question.java[Question], https://github.com/Arquisoft/wiq_es04b/blob/master/src/main/java/com/uniovi/entities/Category.java[Category], https://github.com/Arquisoft/wiq_es04b/blob/master/src/main/java/com/uniovi/entities/Player.java[Player], https://github.com/Arquisoft/wiq_es04b/blob/master/src/main/java/com/uniovi/entities/Role.java[Role], or https://github.com/Arquisoft/wiq_es04b/blob/master/src/main/java/com/uniovi/entities/GameSession.java[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.

https://github.com/Arquisoft/wiq_es04b/tree/master/src/main/java/com/uniovi/entities[Source code]

[plantuml, domain-model, svg, subs="attributes", subs="methods"]
----
Expand All @@ -19,15 +20,18 @@ class Question {
- options: List<Answer>
- correctAnswer: Answer
- category: Category
- language: String
+ addOption(option: Answer): void
+ removeOption(option: Answer): void
+ getOption(index: int): Answer
+ getOptions(answer: String): Answer
+ isCorrectAnswer(answer: Answer): boolean
+ scrambleOptions(): void
+ equals(o: Object): boolean
+ hashCode(): int
+ toString(): String
+ toJson(): JsonNode
+ hasEmptyOptions(): boolean
}

class Category {
Expand All @@ -45,6 +49,8 @@ class Player {
- email: String
- password: String
- passwordConfirm : String
- multiplayerCode : Integer
- scoreMultiplayerCode : String
- roles: Set<Role>
- gameSessions: Set<GameSession>
- apiKey: ApiKey
Expand All @@ -71,9 +77,17 @@ class GameSession {
+ getDuration(): String
}

class MultiplayerSession {
- id: Long
- multiplayerCode: String
- playerScores: Map<Player, Integer>
+ addPlayer(player: Player): void
}

class Role {
- name: String
- players: Set<Player>
+ toString(): String
}

class Answer {
Expand Down Expand Up @@ -106,6 +120,7 @@ ApiKey "1" --* "1" Player
ApiKey "1" *-- "*" RestApiAccessLog
Category "1" -- "*" Question
Player "1" *-- "*" GameSession
Player "1" *-- "*" MultiplayerSession
GameSession "1" -- "*" Question : Answered Questions
GameSession "1" -- "*" Question : Questions To Answer

Expand Down
89 changes: 49 additions & 40 deletions docs/src/10_quality_requirements.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -3,64 +3,73 @@ ifndef::imagesdir[:imagesdir: ../images]
[[section-quality-scenarios]]
== Quality Requirements
=== Quality Tree
_Note: Items (1), (2), (3) in the table below repeat the higher-level quality requirements of Chapter 1.2._

[cols="4", options="header"]
[cols="3", options="header"]
|===
|Quality category |Quality |Description |Scenario
|Quality requirement |Description |Scenario

|Usability
|Ease of use
|The application shall be easy to use by the user, with intuitive functionality.
|Efficiency
|Access, creation of questions, and navigation between them should be fast to ensure user satisfaction.
|SC1

|
|Familiarity of the environment (2)
|The application should appeal to all fans of the original programme and provide a wide variety of questions.
|
|Usability
|The application should be appealing to all fans of the original program while also offering a wide variety of questions.
|SC2

|Manteinance
|The application should ensure easy expansion and modification to provide users with new features.
|SC3

|Performance
|Accuracy
|The questions in the application must be accurate, both the question and the correct answer.
|
|Availability
|Our goal is to achieve at least 95% availability, ensuring that the system is always available for users to play.
|SC4

|
|Efficiency (1)
|Accessing, creating questions and moving between questions should be fast to ensure user satisfaction.
|
|Responsiveness
|The system must be responsive, providing a good user experience for those in desktop and mobile environments.
|SC5

|
|Robustness
|The system shall function reliably in all specified environments and operating conditions.
|SC2
|Testability
|The system must facilitate the testing process(creating test cases, executing tests, analyzing results...)
|SC6

|Safety
|Integrity
|The application shall be user-friendly, with intuitive functionality.
|
|Scalability
|The ability of a system to handle increasing workload or growing demands by adapting or expanding its capacity without compromising performance.
|SC7

|Interoperability
|The system must have the ability of seamlessly communicate, exchange data, and work together effectively with different systems, applications, or components, even if they use different technologies.
|SC8

|Maintainability and support
|Maintenance (2)
|The application shall ensure that it can be easily extended and modified to provide new features to users.
|

|Cultural and Regional
|Multilingual
|The user interface texts must be able to be converted by a translation file into different languages with an ASCII character set.
|SC3
|===

=== Quality Scenarios
[cols="2", options="header"]
|===
|Identification |Scenario

|SC1
|A user who is not familiar with the application will know how to use it after a few minutes of instruction.
| SC1
| Users expect the application to load quickly and respond promptly to their interactions, ensuring a smooth and efficient user experience.

|SC2
|The application should be able to be run from any device, from a computer to a mobile phone, without losing formatting.
| SC2
| The application's user interface is designed intuitively, allowing users to navigate effortlessly and find what they need without confusion or frustration.

| SC3
| Developers can easily add new features or modify existing ones without disrupting the overall functionality of the application, ensuring its long-term maintainability.

| SC4
| Users rely on the application to be available whenever they want to play, and the system ensures a high level of uptime, minimizing downtime for maintenance or updates.

| SC5
| Whether accessed from a desktop computer or a mobile device, users expect the application to adapt seamlessly to their screen size and input method, providing a consistent experience across platforms.

| SC6
| The testing process is streamlined, allowing QA teams to efficiently create, execute, and analyze test cases, ensuring the reliability and stability of the application.

| SC7
| As user demand grows, the application scales its resources dynamically to accommodate increased traffic and maintain optimal performance levels, ensuring a consistent user experience.

| SC8
| The application seamlessly integrates with other systems, allowing for the exchange of data and functionality without compatibility issues, enhancing its overall interoperability.

|CS3
|With the appropriate translation files replacing the default language (English), all displayed and printed texts now appear in this language.
|===
26 changes: 13 additions & 13 deletions src/main/resources/templates/ranking/multiplayerRanking.html
Original file line number Diff line number Diff line change
@@ -1,26 +1,26 @@
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://thymeleaf.org">
<head th:replace="~{fragments/head}"/>
<!DOCTYPE html SYSTEM "http://www.thymeleaf.org/dtd/xhtml1-strict-thymeleaf-spring4-4.dtd">
<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<head th:replace="~{fragments/head}"></head>
<body class="d-flex flex-column min-vh-100">
<nav th:replace="~{fragments/nav}"/>

<link th:href="@{/css/multiplayer.css}" rel="stylesheet" type="text/css"/>
<canvas th:replace="~{fragments/background}"></canvas>
<nav th:replace="~{fragments/nav}"></nav>

<div class="container" style="text-align: center">
<h2 th:text ="#{multi.info}"></h2>
<code id="lobbyCode" th:text="${code}"></code>

<div class="container">
<div class="table-responsive">
<h2 th:text ="#{multi.info}"></h2>
<h3 th:text="${code}"></h3>
<ul id="playerList">
</ul>
<ul id="playerList"></ul>
</div>
</div>
<div class="text-center">

<a th:href="@{'/'}">
<button id="createBtn" type="button" class="btn btn-custom" th:text="#{multi.menu}"></button>
<button id="createBtn" type="button" class="btn btn-custom btn-block mb-2" th:text="#{multi.menu}"></button>
</a>
</div>

<footer th:replace="~{fragments/footer}"/>

</body>
</html>

Expand Down
Loading