Requirements

The requirements are divided into different priorities, whose meaning should be clear from the following table:

PRIORITY DESCRIPTION
+ The requirement must be fulfilled in any case so that the product can be accepted.
0 The fulfillment of the requirement is optional and therefore not necessarily a prerequisite for acceptance, but would have a very positive effect on the product.
- The fulfillment of the requirement is also optional and therefore not a prerequisite for the acceptance.

Functional requirements

This section contains all requirements that specify the basic actions of the software system.

Game type

ID FR1
PRIORITY +
DESCRIPTION QualityQuest shall be a 2D Visual-Novel-RPG.
EXPLANATION The PlayerAudience makes decisions over the PlayerCharacter in a fictional, high-fantasy world of a software engineer. The PlayerAudience plays the game only through StoryFlowDecisions, comparable to a Visual Novel in which the PlayerAudience can actively decide on certain parts of the story.

Game presentation

ID FR2
PRIORITY +
DESCRIPTION QualityQuest shall be a visual-based 2D RPG.
EXPLANATION This means that QualityQuest shall not be a purely text-based game, but text may be an element of the visual appearance of the game.

NewTec branding

ID FR3
PRIORITY +
DESCRIPTION QualityQuest shall display the NewTec logo clearly visible at any given time.
EXPLANATION -

Game language

ID FR4
PRIORITY +
DESCRIPTION The main language of QualityQuest shall be German.
EXPLANATION The majority of the to be used in-game language shall be german, but typical software engineering terms that are not german, but are commonly used in the german language, do not need to be translated.

Game language options

ID FR5
PRIORITY 0
DESCRIPTION QualityQuest should support multiple languages.
EXPLANATION -

Music

ID FR6
PRIORITY -
DESCRIPTION QualityQuest may be accompanied by a suitable musical background to enhance the player experience.
EXPLANATION -

Sound effects

ID FR7
PRIORITY 0
DESCRIPTION QualityQuest should emphasize important events of the StoryFlow with sound effects.
EXPLANATION -

Game content

ID FR8
PRIORITY +
DESCRIPTION QualityQuest shall tell a story which mainly consists of typical elements of the software engineering profession.
EXPLANATION -

StoryFlow

ID FR9
PRIORITY +
DESCRIPTION The story of QualityQuest shall be non-linear.
EXPLANATION The story shall contain elements where the PlayerAudience needs to make a StoryFlowDecision. Depending on the decision, the StoryFlow shall continue in different StoryBranches.

Influence on the StoryFlow by the player

ID FR10
PRIORITY +
DESCRIPTION The PlayerAudience shall influence the selection of StoryBranches by means of StoryFlowDecisions.
EXPLANATION -

Participation of a larger PlayerAudience

ID FR11
PRIORITY +
DESCRIPTION QualityQuest shall have the option to let a larger audience participate in StoryFlowDecisions by means of online voting.
EXPLANATION The online voting feature is directly embedded into the game, together with an offline backup in case the server can't be used.

Random element of StoryFlow control

ID FR12
PRIORITY +
DESCRIPTION The selection of a StoryBranch after a StoryFlowDecision shall be generated randomly.
EXPLANATION Randomness can be either determined through ZeroRandomness or DiceRandomness.

Visualizing the randomness

ID FR13
PRIORITY +
DESCRIPTION If the selection of a StoryBranch after a StoryFlowDecision is generated with DiceRandomness, QualityQuest shall display a clear visualization of the randomization process.
EXPLANATION -

Character status values

ID FR14
PRIORITY +
DESCRIPTION The PlayerCharacter shall have all of the following PlayerCharacterStatusValue: Programming, Analytics, Communication, Partying.
EXPLANATION -

Selecting a character

ID FR15
PRIORITY +
DESCRIPTION At the start of the game the PlayerAudience shall choose a PlayerCharacter from a selection of 4 possible PlayerCharacters via online voting.
EXPLANATION -

Presentation of character status values

ID FR16
PRIORITY +
DESCRIPTION QualityQuest shall display a PlayerCharacterStatusBox with all PlayerCharacterStatusValues at all times.
EXPLANATION -

Portrait of the PlayerCharacter

ID FR17
PRIORITY +
DESCRIPTION QualityQuest shall display a portrait of the PlayerCharacter as part of the PlayerCharacterStatusBox all the time.
EXPLANATION -

Character levelling

ID FR18
PRIORITY +
DESCRIPTION The PayerCharacter shall level up and level down its PlayerCharacterStatusValues based on events or StoryFlowDecisions.
EXPLANATION -

Visual presentation of PlayerCharacter status changes

ID FR19
PRIORITY +
DESCRIPTION The change of PlayerCharacterStatusValues of the PlayerCharacter shall be highlighted visually.
EXPLANATION -

Acoustic presentation of PlayerCharacter status changes

ID FR20
PRIORITY 0
DESCRIPTION The change of PlayerCharacterStatusValues of the PlayerCharacter should be highlighted acoustically.
EXPLANATION -

Operating system

ID FR21
PRIORITY +
DESCRIPTION QualityQuest shall run on Microsoft Windows 10 operating system.
EXPLANATION -

Pause Game

ID FR22
PRIORITY +
DESCRIPTION The moderator shall have the possibility to pause the game with the PauseButton.
EXPLANATION -

PauseButton location

ID FR23
PRIORITY +
DESCRIPTION The PauseButton shall be around the upper right corner.
EXPLANATION -

Moderator game control

ID FR24
PRIORITY +
DESCRIPTION Once the Moderator-Client established the connection to the ServerLogic, the moderator shall have the option to start or interrupt the game at any time.
EXPLANATION -

Connection Timeout

ID FR25
PRIORITY +
DESCRIPTION If the Moderator-Client or ServerLogic does not react to each others messages, the connection shall be timed out by the WebSocket.
EXPLANATION This serves as a failsafe, in case of corrupted messages or connection loss.

ServerLogic connection loss

ID FR26
PRIORITY +
DESCRIPTION If a Moderator-Client or PlayerAudience-Client loses its connection to the ServerLogic, its GUID shall be stored in the ServerLogic. In this case, the respective client can reconnect to the ServerLogic to participate in the game again.
EXPLANATION -

Data exchange file format

ID FR27
PRIORITY +
DESCRIPTION The file format for data exchange between Moderator-Client and ServerLogic shall be JSON.
EXPLANATION -

PlayerAudience-Client GUID

ID FR28
PRIORITY +
DESCRIPTION Every PlayerAudience-Client shall be assigned a GUID in the form of a SignalR connectionId.
EXPLANATION This ensures the following points:

  • The SignalR-Hub can ensure a PlayerAudience-Client can't vote several times per vote.
  • The ServerLogic can count the amount of PlayerAudience-Clients connected.
  • The SignalR-Hub can keep exact track of every active PlayerAudience-Client.

Offline-Mode condition

ID FR29
PRIORITY +
DESCRIPTION If any of the following conditions apply:

  • The server is not functional
  • The network infrastructure slows down significantly
  • The connection between Moderator-Client and Server is problematic
the Moderator shall continue the game offline.
EXPLANATION -

Offline-Mode transition

ID FR30
PRIORITY +
DESCRIPTION The Offline-Mode must ensure a smooth transition between online and offline and shall be able to step in at any time.
EXPLANATION -

Network protocol violation

ID FR31
PRIORITY +
DESCRIPTION If the Moderator-Client does not adhere to the network protocol 3 times in a row, the connection to the Moderator-Client shall be terminated.
EXPLANATION This ensures that it is not easily possible to tinker with the game through an altered client.

Unique voting option identifier

ID FR32
PRIORITY +
DESCRIPTION Every voting option shall be assigned a unique voting option identifier in form of a GUID.
EXPLANATION -

Game-relevant ServerLogic logging

ID FR33
PRIORITY +
DESCRIPTION Data that is needed for the general course of the game or for communication between clients and server shall be logged by the ServerLogic.
EXPLANATION Relevant data is:

  • The Moderator-Client GUID
  • Online-Session key

General ServerLogic logging

ID FR34
PRIORITY +
DESCRIPTION The most important and communication relevant operations of the ServerLogic shall be logged on the server side for debugging reasons.
EXPLANATION The general data logged by the ServerLogic is neither integral nor personal user data.

ServerLogic log deletion

ID FR35
PRIORITY +
DESCRIPTION Game-relevant logs shall be cleared under following circumstances:

  • No Moderator-Client has been connected to the ServerLogic in the last 30 minutes.
  • A new Online-Session is being started.
  • An ongoing Online-Session is being closed.
EXPLANATION This ensures that no user-specific data is being saved on server side longer than it has to be.

ServerLogic access-password

ID FR36
PRIORITY +
DESCRIPTION The ServerLogic shall require a password to connect to it through a Moderator-Client.
EXPLANATION -

Encryption of integral data

ID FR37
PRIORITY +
DESCRIPTION Integral data shall be hashed and salted on the server side.
EXPLANATION An example for integral data is, but is not limited to being, the ServerLogic access-password.

Online-Mode

ID FR38
PRIORITY +
DESCRIPTION If the Moderator-Client is connected to a server, and the moderator is not currently playing in Offline-Mode, the game shall be in Online-Mode.
EXPLANATION -

Offline-Mode

ID FR39
PRIORITY +
DESCRIPTION If the Moderator-Client is not currently playing in Online-Mode, the game shall be in Offline-Mode.
EXPLANATION -

Moderator-Client GUID

ID FR40
PRIORITY +
DESCRIPTION The Moderator-Client shall be assigned a GUID by the ServerLogic.
EXPLANATION The GUID serves to identify as the Moderator-Client during on-going communication with the ServerLogic.

PlayerAudience-Client count

ID FR41
PRIORITY 0
DESCRIPTION The ServerLogic should keep count of the number of PlayerAudience-Clients being connected to the ServerLogic.
EXPLANATION -

PlayerAudience-Client count live update

ID FR42
PRIORITY 0
DESCRIPTION The ServerLogic should inform the Moderator-Client in 3 seconds intervals about the amount of PlayerAudience-Clients connected to the ServerLogic, as long as the game didn't start yet.
EXPLANATION -

Online-Session permanence

ID FR43
PRIORITY +
DESCRIPTION An Online-Session shall persist until one of the following conditions apply:

  • The Moderator-Client intentionally disconnects from the ServerLogic.
  • A new Online-Session is started by the moderator.
  • The Moderator-Client has not communicated with the ServerLogic in the last 30 minutes.
EXPLANATION -

Multiple Moderator-Clients

ID FR44
PRIORITY +
DESCRIPTION If a Moderator-Client connects to the ServerLogic while another Moderator-Client is already connected to the ServerLogic, then a new, separate Online-Session shall be started and both Moderator-Clients shall stay connected.
EXPLANATION -

Voting-Timer stop on pause

ID FR45
PRIORITY +
DESCRIPTION The Voting-Timer shall pause when the Moderator-Client initializes a pause.
EXPLANATION -

Communication during pauses

ID FR46
PRIORITY +
DESCRIPTION Communication between Moderator-Client and ServerLogic, and between PlayerAudience-Clients and ServerLogic shall persist during the pause.
EXPLANATION -

PlayerAudience connection method

ID FR47
PRIORITY +
DESCRIPTION The PlayerAudience shall be able to join an Online-Session using a dynamically generated session key, provided by the ServerLogic.
EXPLANATION -

PlayerAudience connection option

ID FR48
PRIORITY +
DESCRIPTION The PlayerAudience shall be provided with an URL, at the start of the Online-Session, to be able to connect to the ServerLogic.
EXPLANATION -

Additional PlayerAudience connection options

ID FR49
PRIORITY 0
DESCRIPTION The PlayerAudience should also be provided with a QR code, at the start of the Online-Session, to be able to connect to the ServerLogic.
EXPLANATION -

Pause menu

ID FR50
PRIORITY +
DESCRIPTION The pause menu shall pop-up after the PauseButton has been pressed.
EXPLANATION -

Pause menu contents

ID FR51
PRIORITY 0
DESCRIPTION The pause menu should display the following elements:

  • A banner that reads "Pause"
  • A button to unpause the game
  • The PlayerAudience connection method
  • All PlayerAudience connection options
EXPLANATION -

Vote indexing procedure

ID FR52
PRIORITY +
DESCRIPTION The procedure used for indexing the different voting options shall be GUIDs.
EXPLANATION -

Cryptographic hashing procedure

ID FR53
PRIORITY +
DESCRIPTION The hashing procedure used for cryptographic purposes shall be SHA-256.
EXPLANATION -

SessionKey format

ID FR54
PRIORITY -
DESCRIPTION The SessionKey shall consist of six uppercase, alphanumerical characters.
EXPLANATION For example: F8G21Z or 8IB2P4
Key-Pattern: @"[A-Z0-9]{6}"

PlayerAudience-Client count display

ID FR55
PRIORITY +
DESCRIPTION The PlayerAudience-Client count shall be displayed in the Moderator-Client, as long as the PlayerAudience-Client count is transmitted to the Moderator-Client.
EXPLANATION For example: F8G21Z or 8IB2P4

Multi-Game support

ID FR56
PRIORITY -
DESCRIPTION The ServerLogic may support several Online-Sessions at the same time.
EXPLANATION -

ServerLogic persistence

ID FR57
PRIORITY +
DESCRIPTION The ServerLogic shall not crash or terminate a session upon receiving a faulty message or faulty data.
EXPLANATION -

PlayerAudience-Client content

ID FR58
PRIORITY +
DESCRIPTION The PlayerAudience-Client shall contain the following pages and links:

  • A landing page for cookies and Terms of Service.
  • A main homepage that turns into the game.
  • A link to the NewTec website.
  • A link to the Github Repository.
  • An about page.
  • A Terms of Service page.
EXPLANATION -

PlayerAudience-Client cookies and Terms of Service

ID FR59
PRIORITY +
DESCRIPTION The PlayerAudience-Client shall inform the user about cookies and Terms of Service.
EXPLANATION -

PlayerAudience-Client landing page

ID FR60
PRIORITY +
DESCRIPTION The PlayerAudience-Client shall display a cookies and Terms of Service pop-up which the user needs to consent to.
EXPLANATION -

PlayerAudience-Client wrong SessionKey feedback

ID FR61
PRIORITY 0
DESCRIPTION The user should receive instant feedback upon entering a faulty SessionKey into the PlayerAudience-Client.
EXPLANATION -

PlayerAudience-Client error logging

ID FR62
PRIORITY 0
DESCRIPTION Errors caused by faulty communication between PlayerAudience-Client and ServerLogic should be logged.
EXPLANATION -

PlayerAudience-Client persistent connection

ID FR63
PRIORITY +
DESCRIPTION The connection between PlayerAudience-Client and ServerLogic shall be persistent.
EXPLANATION -

ASP.NET and SignalR

ID FR64
PRIORITY +
DESCRIPTION The ServerLogic and PlayerAudience-Client shall use ASP.NET and SignalR for the implementation of the website and the persistent connection.
EXPLANATION -

PlayerAudience-Client statistics display

ID FR65
PRIORITY -
DESCRIPTION The PlayerAudience-Client may display the voting results of the last poll.
EXPLANATION -

PlayerAudience-Client language

ID FR66
PRIORITY +
DESCRIPTION The main language of the PlayerAudience-Client shall be English.
EXPLANATION -

Additional PlayerAudience-Client languages

ID FR67
PRIORITY -
DESCRIPTION The PlayerAudience-Client may support the german language.
EXPLANATION -

Supported desktop browser

ID FR68
PRIORITY +
DESCRIPTION The PlayerAudience-Client shall work on the following desktop browser:

  • Mozilla Firefox 85
  • Google Chrome 88
  • Safari 14
EXPLANATION -

Additional supported desktop browser

ID FR69
PRIORITY -
DESCRIPTION The PlayerAudience-Client may work on the following desktop browser:

  • Microsoft Edge 88
  • Opera 72
  • Internet Explorer 14
EXPLANATION -

Supported mobile browser

ID FR70
PRIORITY +
DESCRIPTION The PlayerAudience-Client shall work on the following mobile browser:

  • Mozilla Firefox Mobile 81
  • Google Chrome 88
  • Safari 14
EXPLANATION -

Additional supported mobile browser

ID FR71
PRIORITY -
DESCRIPTION The PlayerAudience-Client may work on the following mobile browser:

  • Microsoft Edge: Web Browser 46
  • Opera Mobile 61
EXPLANATION -

PlayerAudience-Client colour scheme

ID FR72
PRIORITY +
DESCRIPTION The colour scheme of the PlayerAudience-Client shall roughly resemble the colour scheme of the NewTec website.
EXPLANATION -

PlayerAudience-Client NewTec branding

ID FR73
PRIORITY +
DESCRIPTION The NewTec logo shall be clearly visible on the homepage of the PlayerAudience-Client.
EXPLANATION -

Webpage live updating

ID FR74
PRIORITY +
DESCRIPTION The PlayerAudience-Client shall support the functionality to live update the HTML/CSS/JS of a webpage without reloading the site.
EXPLANATION -

PlayerAudience-Client data filtration

ID FR75
PRIORITY +
DESCRIPTION The backend of the PlayerAudience-Client shall filter incoming data from the PlayerAudience-Clients and discard anything out of order or format.
EXPLANATION -

Moderator veto

ID FR76
PRIORITY -
DESCRIPTION The moderator may be able to veto the PlayerAudience.
EXPLANATION The moderator can use a special UI element of the Moderator-Client to veto the decision of the PlayerAudience.

Moderator-Client statistics display

ID FR77
PRIORITY +
DESCRIPTION The Moderator-Client shall display the voting results of the last poll in form of a bar graph.
EXPLANATION -

Moderator-Client winning option display

ID FR78
PRIORITY +
DESCRIPTION The Moderator-Client shall display the winning option of the last poll in a separate colour.
EXPLANATION -

Moderator-Client error display

ID FR79
PRIORITY +
DESCRIPTION Errors caused by faulty communication between Moderator-Client and ServerLogic shall be displayed by the Moderator-Client.
EXPLANATION -

Tied winning options

ID FR80
PRIORITY +
DESCRIPTION If two or more voting options receive the same number of votes, one of these options shall be randomly selected as the winning option.
EXPLANATION -

Sound options

ID FR81
PRIORITY +
DESCRIPTION The Moderator-Client shall support that one can set the audio options independently of each other.
EXPLANATION -

SessionKey generator limit

ID FR82
PRIORITY +
DESCRIPTION If the ServerLogic can't generate a new SessionKey, that is not currently used by another session, after 16 tries, the ServerLogic shall close all connections that use the last generated SessionKey and assign that SessionKey to the new session only.
EXPLANATION With 2.176.782.336 possible combinations for a SessionKey, the chance of this happening is close to 0 and only serves as a fail-save.

Non-functional Requirements

This section specifies the non-functional requirements for the software system.

Documents to be delivered

ID NFR1
PRIORITY +
DESCRIPTION A Technical Specification, which comprises use case diagrams, use case descriptions and a static view of the software architecture and Software Design Specification for each software component, which describes both the static and the dynamic view shall be delivered.
EXPLANATION -

In-code documentation style

ID NFR2
PRIORITY +
DESCRIPTION The source code shall be documented by means of XML comment documentation generation provided by Visual Studio 2019.
EXPLANATION -

In-code documentation content

ID NFR3
PRIORITY +
DESCRIPTION All of the following source code elements shall be documented: Constants, variables and defines. Classes and class members. Methods and method signatures, including return values. Functions and function signatures, including return values.
EXPLANATION -

Documentation style for diagrams

ID NFR4
PRIORITY +
DESCRIPTION All documentation diagrams shall follow the UML standard.
EXPLANATION -

Delivery of UML diagrams

ID NFR5
PRIORITY +
DESCRIPTION All UML diagrams shall be delivered in the form of a diagram and a PlantUML link.
EXPLANATION -

Adherence to project Coding Styleguide

ID NFR6
PRIORITY 0
DESCRIPTION The software code should adhere to the code quality rules and .NET API usage rules Microsoft recommends.
EXPLANATION -

Adherence to Clean Code Principles

ID NFR7
PRIORITY +
DESCRIPTION The software code shall adhere to Grade 1 (Red) of the Clean Code Principles.
EXPLANATION -

Target audience

ID NFR8
PRIORITY +
DESCRIPTION QualityQuest shall address a target audience of university students with interest in a SW engineering career.
EXPLANATION -

Playing time

ID NFR9
PRIORITY +
DESCRIPTION The complete story of QualityQuest shall be playable in a time frame of 15 to 20 minutes.
EXPLANATION -

Playing fun

ID NFR10
PRIORITY 0
DESCRIPTION The story of QualityQuest should be humorous.
EXPLANATION -

Player motivation

ID NFR11
PRIORITY +
DESCRIPTION The audience of QualityQuest shall be encouraged to follow the story by motivational elements.
EXPLANATION Motivational elements could be for example rewards, achievement & level upgrades.

Deliverable artefacts

ID NFR12
PRIORITY +
DESCRIPTION Documentation, Source Code and a running version of QualityQuest shall be delivered to NewTec.
EXPLANATION -

Type of delivery

ID NFR13
PRIORITY +
DESCRIPTION All deliverable artifacts shall be delivered digitally.
EXPLANATION The delivery can be by depositing the deliverable artefacts in a public version control system. Documents should be delivered in HTML/CSS.

Deadline

ID NFR14
PRIORITY +
DESCRIPTION The deadline for the final delivery is 2021-04-28.
EXPLANATION -

Open source development

ID NFR15
PRIORITY -
DESCRIPTION The Source Code of QualityQuest may be published open source under CreativeCommons CC BY-NC 4.0 license terms.
EXPLANATION -

Stand-alone game

ID NFR16
PRIORITY +
DESCRIPTION QualityQuest shall be a stand-alone game.
EXPLANATION The final binaries shall include everything that is needed to run the game. Any possibly needed frameworks have to be included in the delivery. The installation of additional frameworks or libraries is not acceptable.

Programming language

ID NFR17
PRIORITY +
DESCRIPTION QualityQuest shall be programmed in C#.
EXPLANATION -

Development environment

ID NFR18
PRIORITY +
DESCRIPTION Both the source code and the build solution of QualityQuest shall be buildable in one of the following development environments: Microsoft Visual Studio 2019, Microsoft Visual Studio Code.
EXPLANATION -

Usage of online voting solutions

ID NFR19
PRIORITY -
DESCRIPTION A self-made online voting solution shall be created by the team in order to implement the requirements of the tool and ensure the compatibility as optimal as possible.
EXPLANATION -

Amount of supported connections

ID NFR20
PRIORITY +
DESCRIPTION The Server shall allow up to 200 PlayerAudience-Clients to connect to the game via the network.
EXPLANATION -

Non-exclusive Moderator-Client connection

ID NFR21
PRIORITY 0
DESCRIPTION The ServerLogic should allow a multitude of Moderator-Clients to connect to the ServerLogic at any given time.
EXPLANATION -

Game Engine

ID NFR22
PRIORITY +
DESCRIPTION As a game engine the project shall use Unity.
EXPLANATION The license conditions of the game engine allow the source code of QualityQuest to be open source. The license conditions of the game engine allow the usage of the game engine without license fees. The license conditions of the game engine allow the usage of QualityQuest as intended by NewTec without license fees.

Communication security

ID NFR23
PRIORITY +
DESCRIPTION The safe communication between Moderator-Client and the ServerLogic shall be guaranteed through WebSocket and HTTPS.
EXPLANATION -

Postgame statistics

ID NFR24
PRIORITY 0
DESCRIPTION The Moderator-Client should display postgame statistics at the end of the Online-Session.
EXPLANATION -

Postgame statistic contents

ID NFR25
PRIORITY 0
DESCRIPTION The postgame statistics should display which option was voted how often.
EXPLANATION -

Unit test coverage

ID NFR26
PRIORITY +
DESCRIPTION Moderator-Client, PlayerAudience-Client and ServerLogic shall have a 60% unit test coverage.
EXPLANATION -

Integration test coverage

ID NFR27
PRIORITY +
DESCRIPTION The Moderator-Client shall have a 60% integration test coverage.
EXPLANATION -

Multiple endings

ID NFR28
PRIORITY 0
DESCRIPTION The Moderator-Client should have three different endings, depending on the performance of the PlayerAudience.
EXPLANATION -