Skip to content

Commit

Permalink
Merge pull request #223 from Arquisoft/final-documentation
Browse files Browse the repository at this point in the history
Final documentation
  • Loading branch information
Pelayori authored Apr 27, 2024
2 parents b74b104 + e71f686 commit de42162
Show file tree
Hide file tree
Showing 4 changed files with 80 additions and 56 deletions.
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

0 comments on commit de42162

Please sign in to comment.