Spécification des exigences
1. Introduction
Ce chapitre décrit les exigences du projet «Trivial Pursuit». Il suit la norme ISO/IEC/IEEE 29148-2018.
1.1. Avant-propos
L’objectif de ce document est de décrire les spécifications des exigences du projet "Trivial Pursuit" pour les étudiants en génie logiciel.
Le public visé par cette spécification comprend les développeurs potentiels de l’application, ainsi que les personnes chargées de l’évaluation technique.
1.2. Définitions, acronymes et abréviations
- Norme ISO/IEC/IEEE 29148-2018
-
Ingénierie des systèmes et du logiciel — Processus du cycle de vie — Ingénierie des exigences
- SRS
-
Software Requirements Specification, Spécification des Exigences Logicielles
Acronyme | Description |
---|---|
JDBC |
Java DataBase Connectivity |
JPA |
Java Persistence API |
SGBD |
Système de Gestion de Bases de Données |
Terme | Définition |
---|---|
WebSockets |
Protocole servant à établir des connexions TCP persistantes entre serveurs et clients |
1.3. Public visé et suggestions de lecture
Ce document est à la destination des étudiants de première année du Master Informatique de Nantes Université.
1.4. Portée du projet
Le système logiciel à produire est une version simplifiée du jeu de plateau Trivial Pursuit, qui sera désigné par le terme "Trivial Pursuit" dans le présent document.
Le système Trivial Pursuit permettra à des joueurs de différents endroits de s’affronter dans des parties courtes et intensives.
1.6. Vue d’ensemble
Le reste de ce document contient une description globale du système logiciel Trivial Pursuit (section Section 1.8, les exigences fonctionnelles spécifiques (section Section 6) et les exigences non-fonctionnelles du système (voir Section 2.
1.8. Description générale
1.8.1. Perspectives du produit
Trivial Pursuit est un jeu de plateau où plusieurs joueurs s’affrontent. Le logiciel Trivial Pursuit doit permettre aux joueurs qui sont connectés à Internet d’utiliser leurs appareils connectés pour jouer. Ainsi, "Trivial Pursuit" est une version électronique en ligne du jeu de plateau.
Bien que le système soit distribué et organisé en différents composants, les joueurs doivent le percevoir comme un seul logiciel.
La Figure 1 présente l’architecture globale préconisée du logiciel.
Il est organisé en trois nœuds logiques distincts.
Le nœud Navigateur
contient les artefacts nécessaires à l’exécution du Client Web
.
Ce client utilise des WebSockets pour communiquer avec l’artefact Serveur TP
, déployé sur le nœud Serveur
.
Le nœud Serveur
contient tous les artefacts nécessaires à la gestion de plusieurs parties du jeu.
Le Serveur TP
utilise JDBC pour interroger le SGBD
, qui stocke toutes les données du logiciel.
Le SGBD
déployé sur le nœud Database
.
Les joueurs interagissent avec le Client Web
, qui utilise le protocole les WebSockets pour communiquer avec (au maximum) un serveur de jeu.
Un Nœud Logique est une cible de déploiement qui représente une ressource informatique sur laquelle
les artefacts peuvent être déployés pour être exécutés. Plusieurs nœuds logiques peuvent s’exécuter sur un même Nœud Physique ou Dispositif. |
Trivial Pursuit sera le premier d’une ligne de produits de type "Jeu de plateau". Son architecture servira comme exemple à d’autres produits.
1.8.2. Fonctionnalités du produit
Le logiciel Trivial Pursuit doit assurer trois fonctions principales :
-
Connexion au serveur : permettre à un joueur de rejoindre un serveur pour ensuite choisir une partie.
-
Création de jeu : permettre aux joueurs de se découvrir et de commencer une partie.
-
Le jeu : permettre aux joueurs de jouer effectivement à Trivial Pursuit jusqu’à la victoire de l’un d’entre eux.
1.8.3. Caractéristiques et classes d’utilisateurs
Le logiciel Trivial Pursuit a deux classes d’utilisateurs : les joueurs et les administrateurs.
Les joueurs peuvent avoir différents niveaux : débutants, intermédiaires ou experts.
Cependant, indépendamment de leur niveau, les joueurs utilisent la même interface utilisateur pour jouer les uns contre les autres.
Les administrateurs peuvent gérer les joueurs et les parties.
2. Exigences non-fonctionnelles
2.1. Contraintes de conception et de mise en œuvre
2.1.1. Langages de programmation
- NF-Req-1
Le serveur de jeu doit être développé en Java (version ≥ 11), en utilisant le Spring Boot (version ≥ 3.0.0).
- NF-Req-2
Le client doit être développé en TypeScript (version ≥ 4.0), en utilisant le Angular Framework (version ≥ 16.0).
2.2. Langage de conception
- NF-Req-3
La documentation de développement du logiciel doit être écrite dans le format Asciidoc.
- NF-Req-4
Les diagrammes UML d’analyse, conception et mise en œuvre devront être réalisés en PlantUML.
2.3. Mise en œuvre
- NF-Req-5
Les tests dynamiques doivent utiliser JUnit Jupiter (version ≥ 5.0) et Jasmine (version ≥ 5.1.0).
- NF-Req-6
Le code doit journaliser ses principales opérations en utilisant SLF4J et TypeScript Logging.
3. Vérification
-
Les méthodes du projet doivent être vérifiées grâce aux tests unitaires, indépendamment du langage utilisé. Chaque test unitaire doit décrire clairement son intention.
-
L’interface (API) des composants ou modules doubles tests doivent être vérifiées grâce aux tests fonctionnels.
-
Les tests des composants/modules doivent être indépendants des autres composants. Des doublures de test doivent être utilisées pour assurer l’isolation des tests.
5. Exigences en matière d’interface externe
5.2. Interfaces matérielles
-
Aucune, le logiciel n’interagit pas directement avec un quelconque dispositif matériel.
6. Exigences fonctionnelles
6.1. Fonctionnalité « Joindre une partie »
6.2. Fonctionnalité « Jouer un tour »
7. Autres exigences non-fonctionnelles
7.1. Exigences de performance
- NF-Req-8
Le jeu doit être jouable, ce qui signifie que les utilisateurs doivent avoir un retour rapide de leurs actions et que les retards dus aux problèmes de communication/connexion doivent être correctement tenus.
- NF-Req-9
Le client Web doit pouvoir s’exécuter sur un ordinateur personnel doté de 4 Go de RAM.
7.3. Attributs de qualité logicielle
7.3.2. Maintenabilité
- NF-Req-10
Le logiciel doit être lisible et facile à maintenir.
- NF-Req-11
Les sources Java doivent respecter les directives de codage Google.
Les directives de codage Java peuvent être facilement vérifiées grâce à PMD |
- NF-Req-12
La source TypeScript doit respecter les directives de codage Google.
Configurez npm pour utiliser ESLint et Prettier, et forcer votre code à respecter des conventions de codage TypeScript. |
8. Liste d’exigences
Code | Titre |
---|---|
Code | Titre |
---|---|
Annexe A : Glossaire
Terme |
Description courte |
Signification |
Camembert |
Pièce mobile du plateau de jeu |
Il correspond à la position d’un joueur pendant la partie. Il contient 5 cases vides, qui sont remplies pendant la partie par des triangles de couleur différente |
Triangle |
Pièce triangulaire qui s’emboite à l’intérieur d’un camembert. |
Les triangles ont des couleurs différentes qui correspondent aux différentes catégories de question. |