From 741a3b75a732f07bd0e4c05b05e540c0d08e92b6 Mon Sep 17 00:00:00 2001 From: Gonzalo Alonso Fernandez Date: Sun, 11 Feb 2024 17:49:11 +0100 Subject: [PATCH 1/4] chore: Updating documentation. --- .gitignore | 4 +- docs/diagrams/10_Quality_Tree.puml | 23 +++++ docs/images/10_Quality_Tree.png | Bin 0 -> 27275 bytes docs/src/01_introduction_and_goals.adoc | 119 +++++++++++++++++++++++- docs/src/10_quality_requirements.adoc | 29 +++++- 5 files changed, 167 insertions(+), 8 deletions(-) create mode 100644 docs/diagrams/10_Quality_Tree.puml create mode 100644 docs/images/10_Quality_Tree.png diff --git a/.gitignore b/.gitignore index 8bbe72a8..74da9bc1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ node_modules coverage -docs/build \ No newline at end of file +docs/build +.vscode +.DS_Store \ No newline at end of file diff --git a/docs/diagrams/10_Quality_Tree.puml b/docs/diagrams/10_Quality_Tree.puml new file mode 100644 index 00000000..809e0a0d --- /dev/null +++ b/docs/diagrams/10_Quality_Tree.puml @@ -0,0 +1,23 @@ +@startuml +title Quality attributes +agent Quality +agent Security +agent Reliability +agent Transferability +agent Usability +agent "Performance Efficiency" +agent Maintainability +agent Availability +agent Compatibility +agent "Functional Suitability" + +Quality --- Security +Quality --- Reliability +Quality --- Transferability +Quality --- Usability +Quality --- "Performance Efficiency" +Quality --- Maintainability +Quality --- Availability +Quality --- Compatibility +Quality --- "Functional Suitability" +@enduml diff --git a/docs/images/10_Quality_Tree.png b/docs/images/10_Quality_Tree.png new file mode 100644 index 0000000000000000000000000000000000000000..292718bfe09fbc6b7e546a4c77987a017a674b07 GIT binary patch literal 27275 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%0D@fGIx8(e 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 literal 0 HcmV?d00001 diff --git a/docs/src/01_introduction_and_goals.adoc b/docs/src/01_introduction_and_goals.adoc index ddb2ae3d..40950d67 100644 --- a/docs/src/01_introduction_and_goals.adoc +++ b/docs/src/01_introduction_and_goals.adoc @@ -14,6 +14,7 @@ These include * quality goals for the architecture and * relevant stakeholders and their expectations **** +RTVE has hired the company HappySw, composed of students from the Oviedo School of Software Engineering, to develop a new experimental version of the quiz show Saber y Ganar. This application will be called WIQ, where users will be able to register and log in to play. The application will consist of answering questions of different types generated with Wikidata. For each question answered correctly, points will be obtained. === Requirements Overview @@ -38,9 +39,98 @@ 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. - **** +* The system will provide non-registered users with the option to sign up. +* The system will provide unidentified users with the option to log in. +* The system can only be used by registered users. +* The system will have a game mode with 9 rounds. +* In each round, the system will generate a question. +* In each round, the system will generate four answers, with only one being correct. +* The system will offer registered users access to the number of games they have played. +* The system will offer registered users access the number of questions they have answered correctly. +* The system will offer registered users access the number of questions they have answered incorrectly. +* The system will offer registered users access the time they have spent within the system. +* The system will offer registered users access the ranking of the game. +* The system will set a time limit for registered users to respond to each question. + +==== Functional Requirements +===== Users Sign up. +[none or no-bullet] +* FR-USU 1. The system will offer to an unregistered user a registration form. +* FR-USU 2. The system will request the necessary data to register the new user. +[none or no-bullet] +** FR-USU 2.1. The system will request the following data to register the new user: +[none or no-bullet] +*** FR-USU 2.1.1. Username. +*** FR-USU 2.1.2. Email address. +*** FR-USU 2.1.3. Password. +*** FR-USU 2.1.4. All data fields are mandatory. +* FR-USU 3. When any value entered by the new user is invalid, the user will receive a message notifying the error and will not be able to register. +* FR-USU 4. When all the values entered by the new user are valid, the system will check if the user is already registered in the persistence system. +[none or no-bullet] +** FR-USU 4.1. When a user with the same data is already found in the persistence system, the user will not be able to create a new account since it already exists. +** FR-USU 4.2. When no user matching the data is found in the persistence system. +[none or no-bullet] +*** FR-USU 4.2.1. The new user will be registered in the system. + +===== Users Log in. +[none or no-bullet] +* FR-ULI 1. The system must allow an unidentified user to log in. +[none or no-bullet] +** FR-ULI 1.1. The system will request the email address as the user identifier. +[none or no-bullet] +*** FR-ULI 1.1.1. The system must check that its format is valid. +*** FR-ULI 1.1.2. It is a mandatory field. +** FR-ULI 1.2. The system will request the user's password. +[none or no-bullet] +*** FR-ULI 1.2.1. It is a mandatory field. +** FR-ULI 1.3. The system will automatically validate the entered data to verify when it corresponds to a registered user account. +[none or no-bullet] +*** FR-ULI 1.3.1. When the user is not stored in the persistence system, an error message will be displayed. +*** FR-ULI 1.3.2. When the user exists in the persistence system, but the passwords do not match, a message will be displayed to the user notifying them of the error. +*** FR-ULI 1.3.3. When the user is stored in the persistence system and the passwords match, the user will be logged in. +* FR-ULI 2. The system must allow users who are logged in to log out. + +===== Data management by the user. +[none or no-bullet] +* FR-DMU 1. The system will allow all registered users to access their historical data from their participation. +[none or no-bullet] +** FR-DMU 1.1. Registered users will be able to access the number of games they have played. +** FR-DMU 1.2. Registered users will be able to access the number of questions they have answered correctly. +** FR-DMU 1.3. Registered users will be able to access the number of questions they have answered incorrectly. +** FR-DMU 1.4. Registered users will be able to access the time they have spent within the system. +** FR-DMU 1.5. Registered users will be able to access the ranking of the game. + +===== Play to WIQ. +[none or no-bullet] +* FR-PWIQ 1. The system will only allow registered users to play the WIQ game. +* FR-PWIQ 2. The game consists of nine rounds. +[none or no-bullet] +** FR-PWIQ 2.1. In each round, the system will automatically generate a question to the registered user. +** FR-PWIQ 2.2. In each round, the system will provide the registered user with four automatically generated possible answers. +** FR-PWIQ 2.3. In each round, there will always be only one correct answer. +** FR-PWIQ 2.4. The system will automatically end the game after completing the ninth round. +* FR-PWIQ 3. The registered user must respond to the question before the specified time expires. +[none or no-bullet] +** FR-PWIQ 3.1. When the specified time has not ended, and the registered user has provided an answer: +[none or no-bullet] +*** FR-PWIQ 3.1.1. The system will check if the answer is correct. +[none or no-bullet] +**** FR-PWIQ 3.1.1.1. When the answer is correct: +[none or no-bullet] +***** FR-PWIQ 3.1.1.1.1. The registered user will earn 10 points. +***** FR-PWIQ 3.1.1.1.2. When the registered user is in the ninth round, the system will end the game. +***** FR-PWIQ 3.1.1.1.3. When the registered user is not in the ninth round, the system will move to the next round. +**** FR-PWIQ 3.1.1.2. When the answer is incorrect: +[none or no-bullet] +***** FR-PWIQ 3.1.1.2.1. When the registered user is in the ninth round, the system will end the game. +***** FR-PWIQ 3.1.1.2.2. When the registered user is not in the ninth round, the system will move to the next round. +** FR-PWIQ 3.2. When the specified time has ended: +[none or no-bullet] +*** FR-PWIQ 3.2.1. When the registered user is in the ninth round, the system will end the game. +*** FR-PWIQ 3.2.2. When the registered user is not in the ninth round, the system will move to the next round. + === Quality Goals [role="arc42help"] @@ -63,6 +153,20 @@ 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,3"] +|=== +|Goal|Description +| Functional suitability | The system must fulfill its intended purpose effectively and efficiently, allowing users to register, log in, play the quiz, and access their historical data. +| Security | The system must prioritize user data security. It must implement robust authentication mechanisms for user registration and login. The API access points for user information and generated questions must be secured with proper authorization. +| Reliability | The system should be reliable in generating questions from Wikidata, ensuring that questions are accurate and diverse. The system must handle user registrations, logins, and game data storage without errors. +| Availability | The system must be available 99.99% of the time a user tries to access it. +| Maintainability | The system must be designed and implemented in a way that facilitates easy maintenance and updates. +| Performance efficiency | The system must deliver optimal performance, ensuring responsive interactions for users. The automatic generation of questions from Wikidata and the real-time gameplay must be efficient. The system must handle 20 concurrent users. +| Usability | The system must provide a user-friendly interface, making it easy for users to register, log in, and play the game. The system learning time for a user should be less than 4 hours. +| Compatibility | The system must be compatible with various web browsers and devices, ensuring a seamless experience for users regardless of their choice of platform. It has to be well-optimized for different screen sizes and functionalities. +| Transferability | The system must allow for easy transfer of user data and game-related information through its APIs. +|=== + === Stakeholders [role="arc42help"] @@ -88,6 +192,15 @@ Table with role names, person names, and their expectations with respect to the [options="header",cols="1,2,2"] |=== |Role/Name|Contact|Expectations -| __ | __ | __ -| __ | __ | __ +| RTVE | Client | __ +| HappySw | Software Development Team | __ +| Registered user | __ | __ +| Usability expert | __ | __ +| Accesibility expert | __ | __ +| Security expert | __ | __ +| Design expert | __ | __ +| DNS provider | __ | __ +| Translation team | __ | __ +| Project Manager | __ | __ +| Wikidata | __ | __ |=== diff --git a/docs/src/10_quality_requirements.adoc b/docs/src/10_quality_requirements.adoc index 68475e80..50c4cf14 100644 --- a/docs/src/10_quality_requirements.adoc +++ b/docs/src/10_quality_requirements.adoc @@ -42,10 +42,10 @@ The quality tree is a high-level overview of the quality goals and requirements: * a mind map with quality categories as main branches In any case the tree should include links to the scenarios of the following section. - - **** +image:10_Quality_Tree.png[] + === Quality Scenarios [role="arc42help"] @@ -64,10 +64,31 @@ For architects, two kinds of scenarios are important: Scenarios make quality requirements concrete and allow to more easily measure or decide whether they are fulfilled. -Especially when you want to assess your architecture using methods like -ATAM you need to describe your quality goals (from section 1.2) +Especially when you want to assess your architecture using methods like ATAM you need to describe your quality goals (from section 1.2) more precisely down to a level of scenarios that can be discussed and evaluated. .Form Tabular or free form text. **** + +==== Usage Scenarios +[options="header",cols="1,3,1"] +|=== +|Quality attribute|Scenario|Priority +| Functional suitability | Users should be able to register, log in, play the quiz, and access historical data without encountering errors or glitches. | High, Medium +| Security | User data must be securely handled. Robust authentication mechanisms should be in place for user registration and login. API access points for user information and generated questions must be secured with proper authorization. | High, High +| Reliability | The system should reliably generate accurate and diverse questions from Wikidata. User registrations, logins, and game data storage should be handled without errors. | High, Medium +| Availability | The system must be available 99.99% of the time when a user attempts to access it. | High, High +| Performance efficiency | The system must deliver optimal performance, ensuring responsive interactions for users. It should efficiently generate questions from Wikidata and handle real-time gameplay with up to 20 concurrent users. | High, High +| Usability | The system must provide a user-friendly interface, allowing users to register, log in, and play the game with a learning time of less than 4 hours. | High, Medium +| Compatibility | The system must be compatible with various web browsers and devices, providing a seamless experience for users regardless of their choice of platform. It should be well-optimized for different screen sizes and functionalities. | High, Medium +| Transferability | The system must allow for easy transfer of user data and game-related information through its APIs. | Medium, High +| Testability | The unit tests must have at least 90% coverage. | High, Medium +|=== +==== Change Scenarios +[options="header",cols="1,3,1"] +|=== +|Quality attribute|Scenario|Priority +| Maintainability | The system should be designed and implemented in a way that allows for easy maintenance and updates. | High, Medium +| Maintainability | The code of the system should be well-documented, and modular, allowing for efficient troubleshooting and modifications. | High, Medium +|=== \ No newline at end of file From 0f9af18cbb783f10704be3c01763da646fba8e7d Mon Sep 17 00:00:00 2001 From: Gonzalo Alonso Fernandez Date: Thu, 15 Feb 2024 10:40:37 +0100 Subject: [PATCH 2/4] chore: finishing documentation. --- docs/index.adoc | 4 +- docs/src/01_introduction_and_goals.adoc | 171 +----------------------- docs/src/10_quality_requirements.adoc | 65 +-------- docs/src/13_annex.adoc | 80 +++++++++++ 4 files changed, 91 insertions(+), 229 deletions(-) create mode 100644 docs/src/13_annex.adoc diff --git a/docs/index.adoc b/docs/index.adoc index 468be5fd..29cb7d6a 100644 --- a/docs/index.adoc +++ b/docs/index.adoc @@ -96,4 +96,6 @@ include::src/11_technical_risks.adoc[] // 12. Glossary include::src/12_glossary.adoc[] - +<<<< +// 13. Annex +include::src/13_annex.adoc[] diff --git a/docs/src/01_introduction_and_goals.adoc b/docs/src/01_introduction_and_goals.adoc index 40950d67..204818a8 100644 --- a/docs/src/01_introduction_and_goals.adoc +++ b/docs/src/01_introduction_and_goals.adoc @@ -2,45 +2,9 @@ ifndef::imagesdir[:imagesdir: ../images] [[section-introduction-and-goals]] == Introduction and Goals - -[role="arc42help"] -**** -Describes the relevant requirements and the driving forces that software architects and development team must consider. -These include - -* underlying business goals, -* essential features, -* essential functional requirements, -* quality goals for the architecture and -* relevant stakeholders and their expectations -**** RTVE has hired the company HappySw, composed of students from the Oviedo School of Software Engineering, to develop a new experimental version of the quiz show Saber y Ganar. This application will be called WIQ, where users will be able to register and log in to play. The application will consist of answering questions of different types generated with Wikidata. For each question answered correctly, points will be obtained. === Requirements Overview - -[role="arc42help"] -**** -.Contents -Short description of the functional requirements, driving forces, extract (or abstract) -of requirements. Link to (hopefully existing) requirements documents -(with version number and information where to find it). - -.Motivation -From the point of view of the end users a system is created or modified to -improve support of a business activity and/or improve the quality. - -.Form -Short textual description, probably in tabular use-case format. -If requirements documents exist this overview should refer to these documents. - -Keep these excerpts as short as possible. Balance readability of this document with potential redundancy w.r.t to requirements documents. - - -.Further Information - -See https://docs.arc42.org/section-1/[Introduction and Goals] in the arc42 documentation. -**** - * The system will provide non-registered users with the option to sign up. * The system will provide unidentified users with the option to log in. * The system can only be used by registered users. @@ -54,105 +18,10 @@ See https://docs.arc42.org/section-1/[Introduction and Goals] in the arc42 docum * The system will offer registered users access the ranking of the game. * The system will set a time limit for registered users to respond to each question. -==== Functional Requirements -===== Users Sign up. -[none or no-bullet] -* FR-USU 1. The system will offer to an unregistered user a registration form. -* FR-USU 2. The system will request the necessary data to register the new user. -[none or no-bullet] -** FR-USU 2.1. The system will request the following data to register the new user: -[none or no-bullet] -*** FR-USU 2.1.1. Username. -*** FR-USU 2.1.2. Email address. -*** FR-USU 2.1.3. Password. -*** FR-USU 2.1.4. All data fields are mandatory. -* FR-USU 3. When any value entered by the new user is invalid, the user will receive a message notifying the error and will not be able to register. -* FR-USU 4. When all the values entered by the new user are valid, the system will check if the user is already registered in the persistence system. -[none or no-bullet] -** FR-USU 4.1. When a user with the same data is already found in the persistence system, the user will not be able to create a new account since it already exists. -** FR-USU 4.2. When no user matching the data is found in the persistence system. -[none or no-bullet] -*** FR-USU 4.2.1. The new user will be registered in the system. - -===== Users Log in. -[none or no-bullet] -* FR-ULI 1. The system must allow an unidentified user to log in. -[none or no-bullet] -** FR-ULI 1.1. The system will request the email address as the user identifier. -[none or no-bullet] -*** FR-ULI 1.1.1. The system must check that its format is valid. -*** FR-ULI 1.1.2. It is a mandatory field. -** FR-ULI 1.2. The system will request the user's password. -[none or no-bullet] -*** FR-ULI 1.2.1. It is a mandatory field. -** FR-ULI 1.3. The system will automatically validate the entered data to verify when it corresponds to a registered user account. -[none or no-bullet] -*** FR-ULI 1.3.1. When the user is not stored in the persistence system, an error message will be displayed. -*** FR-ULI 1.3.2. When the user exists in the persistence system, but the passwords do not match, a message will be displayed to the user notifying them of the error. -*** FR-ULI 1.3.3. When the user is stored in the persistence system and the passwords match, the user will be logged in. -* FR-ULI 2. The system must allow users who are logged in to log out. - -===== Data management by the user. -[none or no-bullet] -* FR-DMU 1. The system will allow all registered users to access their historical data from their participation. -[none or no-bullet] -** FR-DMU 1.1. Registered users will be able to access the number of games they have played. -** FR-DMU 1.2. Registered users will be able to access the number of questions they have answered correctly. -** FR-DMU 1.3. Registered users will be able to access the number of questions they have answered incorrectly. -** FR-DMU 1.4. Registered users will be able to access the time they have spent within the system. -** FR-DMU 1.5. Registered users will be able to access the ranking of the game. +See the complete functional requirements in the xref:#section-annex[Annex] of the documentation. -===== Play to WIQ. -[none or no-bullet] -* FR-PWIQ 1. The system will only allow registered users to play the WIQ game. -* FR-PWIQ 2. The game consists of nine rounds. -[none or no-bullet] -** FR-PWIQ 2.1. In each round, the system will automatically generate a question to the registered user. -** FR-PWIQ 2.2. In each round, the system will provide the registered user with four automatically generated possible answers. -** FR-PWIQ 2.3. In each round, there will always be only one correct answer. -** FR-PWIQ 2.4. The system will automatically end the game after completing the ninth round. -* FR-PWIQ 3. The registered user must respond to the question before the specified time expires. -[none or no-bullet] -** FR-PWIQ 3.1. When the specified time has not ended, and the registered user has provided an answer: -[none or no-bullet] -*** FR-PWIQ 3.1.1. The system will check if the answer is correct. -[none or no-bullet] -**** FR-PWIQ 3.1.1.1. When the answer is correct: -[none or no-bullet] -***** FR-PWIQ 3.1.1.1.1. The registered user will earn 10 points. -***** FR-PWIQ 3.1.1.1.2. When the registered user is in the ninth round, the system will end the game. -***** FR-PWIQ 3.1.1.1.3. When the registered user is not in the ninth round, the system will move to the next round. -**** FR-PWIQ 3.1.1.2. When the answer is incorrect: -[none or no-bullet] -***** FR-PWIQ 3.1.1.2.1. When the registered user is in the ninth round, the system will end the game. -***** FR-PWIQ 3.1.1.2.2. When the registered user is not in the ninth round, the system will move to the next round. -** FR-PWIQ 3.2. When the specified time has ended: -[none or no-bullet] -*** FR-PWIQ 3.2.1. When the registered user is in the ninth round, the system will end the game. -*** FR-PWIQ 3.2.2. When the registered user is not in the ninth round, the system will move to the next round. === Quality Goals - -[role="arc42help"] -**** -.Contents -The top three (max five) quality goals for the architecture whose fulfillment is of highest importance to the major stakeholders. -We really mean quality goals for the architecture. Don't confuse them with project goals. -They are not necessarily identical. - -Consider this overview of potential topics (based upon the ISO 25010 standard): - -image::01_2_iso-25010-topics-EN.drawio.png["Categories of Quality Requirements"] - -.Motivation -You should know the quality goals of your most important stakeholders, since they will influence fundamental architectural decisions. -Make sure to be very concrete about these qualities, avoid buzzwords. -If you as an architect do not know how the quality of your work will be judged... - -.Form -A table with quality goals and concrete scenarios, ordered by priorities -**** - [options="header",cols="1,3"] |=== |Goal|Description @@ -168,39 +37,11 @@ A table with quality goals and concrete scenarios, ordered by priorities |=== === Stakeholders - -[role="arc42help"] -**** -.Contents -Explicit overview of stakeholders of the system, i.e. all person, roles or organizations that - -* should know the architecture -* have to be convinced of the architecture -* have to work with the architecture or with code -* need the documentation of the architecture for their work -* have to come up with decisions about the system or its development - -.Motivation -You should know all parties involved in development of the system or affected by the system. -Otherwise, you may get nasty surprises later in the development process. -These stakeholders determine the extent and the level of detail of your work and its results. - -.Form -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,1,2"] |=== |Role/Name|Contact|Expectations -| RTVE | Client | __ -| HappySw | Software Development Team | __ -| Registered user | __ | __ -| Usability expert | __ | __ -| Accesibility expert | __ | __ -| Security expert | __ | __ -| Design expert | __ | __ -| DNS provider | __ | __ -| Translation team | __ | __ -| Project Manager | __ | __ -| Wikidata | __ | __ +| RTVE | rtve@email.com | To have a new experimental version of the Saber y Ganar quiz show. +| HappySw | happysw@email.com | Develop a good application that fullfills the requirements expected by the client. +| Registered user | Unknown | To play with an entertaining and easy-to-use application. An application with which the user learn about different topics. +| Wikidata | wikid@email.com | Being able to offer service allowing people to use the data through the API. |=== diff --git a/docs/src/10_quality_requirements.adoc b/docs/src/10_quality_requirements.adoc index 50c4cf14..e670d0a8 100644 --- a/docs/src/10_quality_requirements.adoc +++ b/docs/src/10_quality_requirements.adoc @@ -2,74 +2,13 @@ ifndef::imagesdir[:imagesdir: ../images] [[section-quality-scenarios]] == Quality Requirements - - -[role="arc42help"] -**** - -.Content -This section contains all quality requirements as quality tree with scenarios. The most important ones have already been described in section 1.2. (quality goals) - -Here you can also capture quality requirements with lesser priority, -which will not create high risks when they are not fully achieved. - -.Motivation -Since quality requirements will have a lot of influence on architectural -decisions you should know for every stakeholder what is really important to them, -concrete and measurable. - - -.Further Information - -See https://docs.arc42.org/section-10/[Quality Requirements] in the arc42 documentation. - -**** - === Quality Tree - -[role="arc42help"] -**** -.Content -The quality tree (as defined in ATAM – Architecture Tradeoff Analysis Method) with quality/evaluation scenarios as leafs. - -.Motivation -The tree structure with priorities provides an overview for a sometimes large number of quality requirements. - -.Form -The quality tree is a high-level overview of the quality goals and requirements: - -* tree-like refinement of the term "quality". Use "quality" or "usefulness" as a root -* a mind map with quality categories as main branches - -In any case the tree should include links to the scenarios of the following section. -**** +This quality tree is a high-level overview of the quality goals and requirements. The Quality tree uses "quality" as a root while the rest of the quality categories will be displayed as branches. image:10_Quality_Tree.png[] === Quality Scenarios - -[role="arc42help"] -**** -.Contents -Concretization of (sometimes vague or implicit) quality requirements using (quality) scenarios. - -These scenarios describe what should happen when a stimulus arrives at the system. - -For architects, two kinds of scenarios are important: - -* Usage scenarios (also called application scenarios or use case scenarios) describe the system’s runtime reaction to a certain stimulus. This also includes scenarios that describe the system’s efficiency or performance. Example: The system reacts to a user’s request within one second. -* Change scenarios describe a modification of the system or of its immediate environment. Example: Additional functionality is implemented or requirements for a quality attribute change. - -.Motivation -Scenarios make quality requirements concrete and allow to -more easily measure or decide whether they are fulfilled. - -Especially when you want to assess your architecture using methods like ATAM you need to describe your quality goals (from section 1.2) -more precisely down to a level of scenarios that can be discussed and evaluated. - -.Form -Tabular or free form text. -**** +To obtain a measurable system response to stimulus corresponding to the various quality branches outlined in the mindmap, we will use quality scenarios. Scenarios make quality requirements concrete and allow to more easily measure or decide whether they are fulfilled. ==== Usage Scenarios [options="header",cols="1,3,1"] diff --git a/docs/src/13_annex.adoc b/docs/src/13_annex.adoc new file mode 100644 index 00000000..eae96183 --- /dev/null +++ b/docs/src/13_annex.adoc @@ -0,0 +1,80 @@ +ifndef::imagesdir[:imagesdir: ../images] + +[[section-annex]] +== Annex +=== Functional Requirements +==== Users Sign up. +[none or no-bullet] +* FR-USU 1. The system will offer to an unregistered user a registration form. +* FR-USU 2. The system will request the necessary data to register the new user. +[none or no-bullet] +** FR-USU 2.1. The system will request the following data to register the new user: +[none or no-bullet] +*** FR-USU 2.1.1. Username. +*** FR-USU 2.1.2. Email address. +*** FR-USU 2.1.3. Password. +*** FR-USU 2.1.4. All data fields are mandatory. +* FR-USU 3. When any value entered by the new user is invalid, the user will receive a message notifying the error and will not be able to register. +* FR-USU 4. When all the values entered by the new user are valid, the system will check if the user is already registered in the persistence system. +[none or no-bullet] +** FR-USU 4.1. When a user with the same data is already found in the persistence system, the user will not be able to create a new account since it already exists. +** FR-USU 4.2. When no user matching the data is found in the persistence system. +[none or no-bullet] +*** FR-USU 4.2.1. The new user will be registered in the system. + +==== Users Log in. +[none or no-bullet] +* FR-ULI 1. The system must allow an unidentified user to log in. +[none or no-bullet] +** FR-ULI 1.1. The system will request the email address as the user identifier. +[none or no-bullet] +*** FR-ULI 1.1.1. The system must check that its format is valid. +*** FR-ULI 1.1.2. It is a mandatory field. +** FR-ULI 1.2. The system will request the user's password. +[none or no-bullet] +*** FR-ULI 1.2.1. It is a mandatory field. +** FR-ULI 1.3. The system will automatically validate the entered data to verify when it corresponds to a registered user account. +[none or no-bullet] +*** FR-ULI 1.3.1. When the user is not stored in the persistence system, an error message will be displayed. +*** FR-ULI 1.3.2. When the user exists in the persistence system, but the passwords do not match, a message will be displayed to the user notifying them of the error. +*** FR-ULI 1.3.3. When the user is stored in the persistence system and the passwords match, the user will be logged in. +* FR-ULI 2. The system must allow users who are logged in to log out. + +==== Data management by the user. +[none or no-bullet] +* FR-DMU 1. The system will allow all registered users to access their historical data from their participation. +[none or no-bullet] +** FR-DMU 1.1. Registered users will be able to access the number of games they have played. +** FR-DMU 1.2. Registered users will be able to access the number of questions they have answered correctly. +** FR-DMU 1.3. Registered users will be able to access the number of questions they have answered incorrectly. +** FR-DMU 1.4. Registered users will be able to access the time they have spent within the system. +** FR-DMU 1.5. Registered users will be able to access the ranking of the game. + +==== Play to WIQ. +[none or no-bullet] +* FR-PWIQ 1. The system will only allow registered users to play the WIQ game. +* FR-PWIQ 2. The game consists of nine rounds. +[none or no-bullet] +** FR-PWIQ 2.1. In each round, the system will automatically generate a question to the registered user. +** FR-PWIQ 2.2. In each round, the system will provide the registered user with four automatically generated possible answers. +** FR-PWIQ 2.3. In each round, there will always be only one correct answer. +** FR-PWIQ 2.4. The system will automatically end the game after completing the ninth round. +* FR-PWIQ 3. The registered user must respond to the question before the specified time expires. +[none or no-bullet] +** FR-PWIQ 3.1. When the specified time has not ended, and the registered user has provided an answer: +[none or no-bullet] +*** FR-PWIQ 3.1.1. The system will check if the answer is correct. +[none or no-bullet] +**** FR-PWIQ 3.1.1.1. When the answer is correct: +[none or no-bullet] +***** FR-PWIQ 3.1.1.1.1. The registered user will earn 10 points. +***** FR-PWIQ 3.1.1.1.2. When the registered user is in the ninth round, the system will end the game. +***** FR-PWIQ 3.1.1.1.3. When the registered user is not in the ninth round, the system will move to the next round. +**** FR-PWIQ 3.1.1.2. When the answer is incorrect: +[none or no-bullet] +***** FR-PWIQ 3.1.1.2.1. When the registered user is in the ninth round, the system will end the game. +***** FR-PWIQ 3.1.1.2.2. When the registered user is not in the ninth round, the system will move to the next round. +** FR-PWIQ 3.2. When the specified time has ended: +[none or no-bullet] +*** FR-PWIQ 3.2.1. When the registered user is in the ninth round, the system will end the game. +*** FR-PWIQ 3.2.2. When the registered user is not in the ninth round, the system will move to the next round. \ No newline at end of file From 8f35335785a93a9bc4191101c9c35a4c8be8f45d Mon Sep 17 00:00:00 2001 From: Gonzalo Alonso Fernandez Date: Fri, 16 Feb 2024 18:06:25 +0100 Subject: [PATCH 3/4] Chore: Correcting errors in requirements documentation. Mainly errors related to using "will" instead of "shall". --- docs/src/01_introduction_and_goals.adoc | 28 +++++------ docs/src/10_quality_requirements.adoc | 22 ++++----- docs/src/13_annex.adoc | 65 ++++++++++++------------- 3 files changed, 57 insertions(+), 58 deletions(-) diff --git a/docs/src/01_introduction_and_goals.adoc b/docs/src/01_introduction_and_goals.adoc index 204818a8..e9370df9 100644 --- a/docs/src/01_introduction_and_goals.adoc +++ b/docs/src/01_introduction_and_goals.adoc @@ -5,18 +5,18 @@ ifndef::imagesdir[:imagesdir: ../images] RTVE has hired the company HappySw, composed of students from the Oviedo School of Software Engineering, to develop a new experimental version of the quiz show Saber y Ganar. This application will be called WIQ, where users will be able to register and log in to play. The application will consist of answering questions of different types generated with Wikidata. For each question answered correctly, points will be obtained. === Requirements Overview -* The system will provide non-registered users with the option to sign up. -* The system will provide unidentified users with the option to log in. -* The system can only be used by registered users. -* The system will have a game mode with 9 rounds. -* In each round, the system will generate a question. -* In each round, the system will generate four answers, with only one being correct. -* The system will offer registered users access to the number of games they have played. -* The system will offer registered users access the number of questions they have answered correctly. -* The system will offer registered users access the number of questions they have answered incorrectly. -* The system will offer registered users access the time they have spent within the system. -* The system will offer registered users access the ranking of the game. -* The system will set a time limit for registered users to respond to each question. +* The system shall provide non-registered users with the option to sign up. +* The system shall provide unidentified users with the option to log in. +* The system shall only be used by registered users. +* The system shall have a game mode with 9 rounds. +* In each round, the system shall generate a question. +* In each round, the system shall generate four answers, with only one being correct. +* The system shall offer registered users access to the number of games they have played. +* The system shall offer registered users access the number of questions they have answered correctly. +* The system shall offer registered users access the number of questions they have answered incorrectly. +* The system shall offer registered users access the time they have spent within the system. +* The system shall offer registered users access the ranking of the game. +* The system shall set a time limit for registered users to respond to each question. See the complete functional requirements in the xref:#section-annex[Annex] of the documentation. @@ -25,12 +25,12 @@ See the complete functional requirements in the xref:#section-annex[Annex] of th [options="header",cols="1,3"] |=== |Goal|Description -| Functional suitability | The system must fulfill its intended purpose effectively and efficiently, allowing users to register, log in, play the quiz, and access their historical data. +| Functional suitability | The system shall fulfill its intended purpose effectively and efficiently, allowing users to register, log in, play the quiz, and access their user statistics. | Security | The system must prioritize user data security. It must implement robust authentication mechanisms for user registration and login. The API access points for user information and generated questions must be secured with proper authorization. | Reliability | The system should be reliable in generating questions from Wikidata, ensuring that questions are accurate and diverse. The system must handle user registrations, logins, and game data storage without errors. | Availability | The system must be available 99.99% of the time a user tries to access it. | Maintainability | The system must be designed and implemented in a way that facilitates easy maintenance and updates. -| Performance efficiency | The system must deliver optimal performance, ensuring responsive interactions for users. The automatic generation of questions from Wikidata and the real-time gameplay must be efficient. The system must handle 20 concurrent users. +| Performance efficiency | The system must deliver optimal performance, ensuring responsive interactions for users. The automatic generation of questions from Wikidata and the real-time gameplay must be efficient. The system must handle 3000 (temporal datum) concurrent users. | Usability | The system must provide a user-friendly interface, making it easy for users to register, log in, and play the game. The system learning time for a user should be less than 4 hours. | Compatibility | The system must be compatible with various web browsers and devices, ensuring a seamless experience for users regardless of their choice of platform. It has to be well-optimized for different screen sizes and functionalities. | Transferability | The system must allow for easy transfer of user data and game-related information through its APIs. diff --git a/docs/src/10_quality_requirements.adoc b/docs/src/10_quality_requirements.adoc index e670d0a8..455cabf9 100644 --- a/docs/src/10_quality_requirements.adoc +++ b/docs/src/10_quality_requirements.adoc @@ -14,20 +14,20 @@ To obtain a measurable system response to stimulus corresponding to the various [options="header",cols="1,3,1"] |=== |Quality attribute|Scenario|Priority -| Functional suitability | Users should be able to register, log in, play the quiz, and access historical data without encountering errors or glitches. | High, Medium -| Security | User data must be securely handled. Robust authentication mechanisms should be in place for user registration and login. API access points for user information and generated questions must be secured with proper authorization. | High, High -| Reliability | The system should reliably generate accurate and diverse questions from Wikidata. User registrations, logins, and game data storage should be handled without errors. | High, Medium -| Availability | The system must be available 99.99% of the time when a user attempts to access it. | High, High -| Performance efficiency | The system must deliver optimal performance, ensuring responsive interactions for users. It should efficiently generate questions from Wikidata and handle real-time gameplay with up to 20 concurrent users. | High, High -| Usability | The system must provide a user-friendly interface, allowing users to register, log in, and play the game with a learning time of less than 4 hours. | High, Medium -| Compatibility | The system must be compatible with various web browsers and devices, providing a seamless experience for users regardless of their choice of platform. It should be well-optimized for different screen sizes and functionalities. | High, Medium -| Transferability | The system must allow for easy transfer of user data and game-related information through its APIs. | Medium, High -| Testability | The unit tests must have at least 90% coverage. | High, Medium +| Functional suitability | Users shall be able to register, log in, play the quiz, and access historical data without encountering errors or glitches. | High, Medium +| Security | User data shall be securely handled. Robust authentication mechanisms shall be in place for user registration and login. API access points for user information and generated questions shall be secured with proper authorization. | High, High +| Reliability | The system shall reliably generate accurate and diverse questions from Wikidata. User registrations, logins, and game data storage shall be handled without errors. | High, Medium +| Availability | The system shall be available 99.99% of the time when a user attempts to access it. | High, High +| Performance efficiency | The system shall deliver optimal performance, ensuring responsive interactions for users. It shall efficiently generate questions from Wikidata and handle real-time gameplay with up to 20 concurrent users. | High, High +| Usability | The system shall provide a user-friendly interface, allowing users to register, log in, and play the game with a learning time of less than 4 hours. | High, Medium +| Compatibility | The system shall be compatible with various web browsers and devices, providing a seamless experience for users regardless of their choice of platform. It shall be well-optimized for different screen sizes and functionalities. | High, Medium +| Transferability | The system shall allow for easy transfer of user data and game-related information through its APIs. | Medium, High +| Testability | The unit tests shall have at least 75% coverage. | High, Medium |=== ==== Change Scenarios [options="header",cols="1,3,1"] |=== |Quality attribute|Scenario|Priority -| Maintainability | The system should be designed and implemented in a way that allows for easy maintenance and updates. | High, Medium -| Maintainability | The code of the system should be well-documented, and modular, allowing for efficient troubleshooting and modifications. | High, Medium +| Maintainability | The system shall be designed and implemented in a way that allows for easy maintenance and updates. | High, Medium +| Maintainability | The code of the system shall be well-documented, and modular, allowing for efficient troubleshooting and modifications. | High, Medium |=== \ No newline at end of file diff --git a/docs/src/13_annex.adoc b/docs/src/13_annex.adoc index eae96183..855febbd 100644 --- a/docs/src/13_annex.adoc +++ b/docs/src/13_annex.adoc @@ -5,76 +5,75 @@ ifndef::imagesdir[:imagesdir: ../images] === Functional Requirements ==== Users Sign up. [none or no-bullet] -* FR-USU 1. The system will offer to an unregistered user a registration form. -* FR-USU 2. The system will request the necessary data to register the new user. +* FR-USU 1. The system shall allow an unregistered user to register in the application. +* FR-USU 2. The system shall request the necessary data to register the new user. [none or no-bullet] -** FR-USU 2.1. The system will request the following data to register the new user: +** FR-USU 2.1. The system shall request the following mandatory data to register the new user: [none or no-bullet] *** FR-USU 2.1.1. Username. *** FR-USU 2.1.2. Email address. *** FR-USU 2.1.3. Password. -*** FR-USU 2.1.4. All data fields are mandatory. -* FR-USU 3. When any value entered by the new user is invalid, the user will receive a message notifying the error and will not be able to register. -* FR-USU 4. When all the values entered by the new user are valid, the system will check if the user is already registered in the persistence system. +* FR-USU 3. The system shall not allow the user to be registered when any value entered by the new user is invalid. +* FR-USU 4. When all the values entered by the new user are valid, the system shall check if the user is already registered in the persistence system. [none or no-bullet] -** FR-USU 4.1. When a user with the same data is already found in the persistence system, the user will not be able to create a new account since it already exists. +** FR-USU 4.1. When a user with the same data is already found in the persistence system, the user shall not be able to create a new account since it already exists. ** FR-USU 4.2. When no user matching the data is found in the persistence system. [none or no-bullet] -*** FR-USU 4.2.1. The new user will be registered in the system. +*** FR-USU 4.2.1. The new user shall be registered in the system. ==== Users Log in. [none or no-bullet] * FR-ULI 1. The system must allow an unidentified user to log in. [none or no-bullet] -** FR-ULI 1.1. The system will request the email address as the user identifier. +** FR-ULI 1.1. The system shall request the email address as the user identifier. [none or no-bullet] *** FR-ULI 1.1.1. The system must check that its format is valid. *** FR-ULI 1.1.2. It is a mandatory field. -** FR-ULI 1.2. The system will request the user's password. +** FR-ULI 1.2. The system shall request the user's password. [none or no-bullet] *** FR-ULI 1.2.1. It is a mandatory field. -** FR-ULI 1.3. The system will automatically validate the entered data to verify when it corresponds to a registered user account. +** FR-ULI 1.3. The system shall automatically validate the entered data to verify when it corresponds to a registered user account. [none or no-bullet] -*** FR-ULI 1.3.1. When the user is not stored in the persistence system, an error message will be displayed. -*** FR-ULI 1.3.2. When the user exists in the persistence system, but the passwords do not match, a message will be displayed to the user notifying them of the error. -*** FR-ULI 1.3.3. When the user is stored in the persistence system and the passwords match, the user will be logged in. +*** FR-ULI 1.3.1. When the user is not stored in the persistence system, an error message shall be displayed. +*** FR-ULI 1.3.2. When the user exists in the persistence system, but the passwords do not match, a message shall be displayed to the user notifying them of the error. +*** FR-ULI 1.3.3. When the user is stored in the persistence system and the passwords match, the user shall be logged in. * FR-ULI 2. The system must allow users who are logged in to log out. ==== Data management by the user. [none or no-bullet] -* FR-DMU 1. The system will allow all registered users to access their historical data from their participation. +* FR-DMU 1. The system shall allow all registered users to access their historical data from their participation. [none or no-bullet] -** FR-DMU 1.1. Registered users will be able to access the number of games they have played. -** FR-DMU 1.2. Registered users will be able to access the number of questions they have answered correctly. -** FR-DMU 1.3. Registered users will be able to access the number of questions they have answered incorrectly. -** FR-DMU 1.4. Registered users will be able to access the time they have spent within the system. -** FR-DMU 1.5. Registered users will be able to access the ranking of the game. +** FR-DMU 1.1. Registered users shall be able to access the number of games they have played. +** FR-DMU 1.2. Registered users shall be able to access the number of questions they have answered correctly. +** FR-DMU 1.3. Registered users shall be able to access the number of questions they have answered incorrectly. +** FR-DMU 1.4. Registered users shall be able to access the time they have spent within the system. +** FR-DMU 1.5. Registered users shall be able to access the ranking of the game. ==== Play to WIQ. [none or no-bullet] -* FR-PWIQ 1. The system will only allow registered users to play the WIQ game. +* FR-PWIQ 1. The system shall only allow registered users to play the WIQ game. * FR-PWIQ 2. The game consists of nine rounds. [none or no-bullet] -** FR-PWIQ 2.1. In each round, the system will automatically generate a question to the registered user. -** FR-PWIQ 2.2. In each round, the system will provide the registered user with four automatically generated possible answers. -** FR-PWIQ 2.3. In each round, there will always be only one correct answer. -** FR-PWIQ 2.4. The system will automatically end the game after completing the ninth round. +** FR-PWIQ 2.1. In each round, the system shall automatically generate a question to the registered user. +** FR-PWIQ 2.2. In each round, the system shall provide the registered user with four automatically generated possible answers. +** FR-PWIQ 2.3. In each round, there shall always be only one correct answer. +** FR-PWIQ 2.4. The system shall automatically end the game after completing the ninth round. * FR-PWIQ 3. The registered user must respond to the question before the specified time expires. [none or no-bullet] ** FR-PWIQ 3.1. When the specified time has not ended, and the registered user has provided an answer: [none or no-bullet] -*** FR-PWIQ 3.1.1. The system will check if the answer is correct. +*** FR-PWIQ 3.1.1. The system shall check if the answer is correct. [none or no-bullet] **** FR-PWIQ 3.1.1.1. When the answer is correct: [none or no-bullet] -***** FR-PWIQ 3.1.1.1.1. The registered user will earn 10 points. -***** FR-PWIQ 3.1.1.1.2. When the registered user is in the ninth round, the system will end the game. -***** FR-PWIQ 3.1.1.1.3. When the registered user is not in the ninth round, the system will move to the next round. +***** FR-PWIQ 3.1.1.1.1. The registered user shall earn 10 points. +***** FR-PWIQ 3.1.1.1.2. When the registered user is in the ninth round, the system shall end the game. +***** FR-PWIQ 3.1.1.1.3. When the registered user is not in the ninth round, the system shall move to the next round. **** FR-PWIQ 3.1.1.2. When the answer is incorrect: [none or no-bullet] -***** FR-PWIQ 3.1.1.2.1. When the registered user is in the ninth round, the system will end the game. -***** FR-PWIQ 3.1.1.2.2. When the registered user is not in the ninth round, the system will move to the next round. +***** FR-PWIQ 3.1.1.2.1. When the registered user is in the ninth round, the system shall end the game. +***** FR-PWIQ 3.1.1.2.2. When the registered user is not in the ninth round, the system shall move to the next round. ** FR-PWIQ 3.2. When the specified time has ended: [none or no-bullet] -*** FR-PWIQ 3.2.1. When the registered user is in the ninth round, the system will end the game. -*** FR-PWIQ 3.2.2. When the registered user is not in the ninth round, the system will move to the next round. \ No newline at end of file +*** FR-PWIQ 3.2.1. When the registered user is in the ninth round, the system shall end the game. +*** FR-PWIQ 3.2.2. When the registered user is not in the ninth round, the system shall move to the next round. \ No newline at end of file From 2cf8ee2b8a8ca2ac61e4171099fc81b360adf16e Mon Sep 17 00:00:00 2001 From: Gonzalo Alonso Fernandez Date: Sat, 17 Feb 2024 10:15:17 +0100 Subject: [PATCH 4/4] chore: fixing the number of concurrent users in performance efficiency --- docs/src/01_introduction_and_goals.adoc | 2 +- docs/src/10_quality_requirements.adoc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/src/01_introduction_and_goals.adoc b/docs/src/01_introduction_and_goals.adoc index e9370df9..7b59875b 100644 --- a/docs/src/01_introduction_and_goals.adoc +++ b/docs/src/01_introduction_and_goals.adoc @@ -30,7 +30,7 @@ See the complete functional requirements in the xref:#section-annex[Annex] of th | Reliability | The system should be reliable in generating questions from Wikidata, ensuring that questions are accurate and diverse. The system must handle user registrations, logins, and game data storage without errors. | Availability | The system must be available 99.99% of the time a user tries to access it. | Maintainability | The system must be designed and implemented in a way that facilitates easy maintenance and updates. -| Performance efficiency | The system must deliver optimal performance, ensuring responsive interactions for users. The automatic generation of questions from Wikidata and the real-time gameplay must be efficient. The system must handle 3000 (temporal datum) concurrent users. +| Performance efficiency | The system must deliver optimal performance, ensuring responsive interactions for users. The automatic generation of questions from Wikidata and the real-time gameplay must be efficient. The system must handle N concurrent users. | Usability | The system must provide a user-friendly interface, making it easy for users to register, log in, and play the game. The system learning time for a user should be less than 4 hours. | Compatibility | The system must be compatible with various web browsers and devices, ensuring a seamless experience for users regardless of their choice of platform. It has to be well-optimized for different screen sizes and functionalities. | Transferability | The system must allow for easy transfer of user data and game-related information through its APIs. diff --git a/docs/src/10_quality_requirements.adoc b/docs/src/10_quality_requirements.adoc index 455cabf9..33d49327 100644 --- a/docs/src/10_quality_requirements.adoc +++ b/docs/src/10_quality_requirements.adoc @@ -18,7 +18,7 @@ To obtain a measurable system response to stimulus corresponding to the various | Security | User data shall be securely handled. Robust authentication mechanisms shall be in place for user registration and login. API access points for user information and generated questions shall be secured with proper authorization. | High, High | Reliability | The system shall reliably generate accurate and diverse questions from Wikidata. User registrations, logins, and game data storage shall be handled without errors. | High, Medium | Availability | The system shall be available 99.99% of the time when a user attempts to access it. | High, High -| Performance efficiency | The system shall deliver optimal performance, ensuring responsive interactions for users. It shall efficiently generate questions from Wikidata and handle real-time gameplay with up to 20 concurrent users. | High, High +| Performance efficiency | The system shall deliver optimal performance, ensuring responsive interactions for users. It shall efficiently generate questions from Wikidata and handle real-time gameplay with up to N concurrent users. | High, High | Usability | The system shall provide a user-friendly interface, allowing users to register, log in, and play the game with a learning time of less than 4 hours. | High, Medium | Compatibility | The system shall be compatible with various web browsers and devices, providing a seamless experience for users regardless of their choice of platform. It shall be well-optimized for different screen sizes and functionalities. | High, Medium | Transferability | The system shall allow for easy transfer of user data and game-related information through its APIs. | Medium, High