Conception détaillée
1. Travail à réaliser
- Objectif
-
Spécification détaillée des composants: leur structure (diagramme de classes de conception), ainsi que le comportement de chaque opération fournie par le composants. Le comportement peut-être décrit en utilisant les diagrammes d’activité, d’interaction, les machines d’état, ainsi que OCL.
- Moyens
-
Appliquez les concepts vus en cours: design patterns, principes GRASP, bonnes pratiques, etc.
3. Réponses aux exigences non-fonctionnelles
Expliquez dans cette section les réponses aux différentes exigences non-fonctionnelles spécifiées. |
3.1. Concurrence
Pour gérer la concurrence, nous allons utiliser des threads ainsi que des mécanismes de verrouillage. Cela permettra de garantir la cohérence des données lors des accès simultanés.
3.2. Performance
Pour garantir les performances du jeu, nous allons mettre en oeuvre des mécanismes de mise en cache au niveau du serveur. Les données fréquemment utilisées seront stockées en mémoire pour réduire le temps d’accès à la base de données. Nous optimiserons aussi toutes les requêtes.
3.3. Interopérabilité
L’interopérabilité sera assurée en respectant les standards et protocoles définis. Les communications entre le client et le serveur utiliseront le protocole WebSocket. Les échanges de données entre le client et la base de données se feront via JDBC, garantissant ainsi une interopérabilité avec différents systèmes de base de données.
3.4. Portabilité
Le client web sera développé en TypeScript avec le framework Angular, ce qui garantit une compatibilité avec les principaux navigateurs web tels que Firefox, Chrome, Safari, et Edge.
3.5. Sécurité
TODO! |
3.5.1. Exigence de sécurité
Notre système doit être sécurisé, même si nous ne manipulons pas des données sensibles. Pour cela nous devons vérifier l’identité de l’utilisateur.
N’ayant pas à nous occuper de l’authentification de l’utilisateur nous admettons que le système s’occupant de cela est correct et lui-même sécurisé. Nous admettons également que, quelle que soit la plateforme utilisée (web, logiciel, application) le service d’authentification sera le même pour tous.
3.6. Maintenabilité
La maintenabilité sera assurée en suivant les bonnes pratiques de développement, en respectant les conventions de codage Java et TypeScript définies. L’utilisation de frameworks bien établis tels que Spring Boot pour le serveur et Angular pour le client facilitera la compréhension du code et la gestion des évolutions. De plus, la documentation du code sera rédigée en Asciidoc pour permettre une compréhension claire et rapide du fonctionnement du système.
3.7. Interface utilisateur
L’interface utilisateur sera conçue en suivant les principes du design centré sur l’utilisateur.
3.9. Interface ou protocoles de communication
La communication entre le client et le serveur se fera via des connexions WebSocket. Ce protocole bidirectionnel permettra une interaction en temps réel, essentielle pour un jeu de société en ligne. La sécurité de la communication sera assurée par le protocole WebSocket sécurisé (WSS).
3.10. Correction
La correction du système sera assurée par la mise en oeuvre de tests unitaires et de tests d’intégration. Les tests unitaires vérifieront le bon fonctionnement des différentes parties du code, tandis que les tests d’intégration s’assureront que toutes les composantes interagissent correctement. Un processus de bug report sera aussi mis en place, avec la possibilité pour les utilisateurs de signaler tout problème rencontré.
4. Patrons logiciels utilisés
Décrivez dans cette partie les patrons logiciels utilisés pour mettre en œuvre l’application. |
5. Choix techniques - Distribution des processus
Explicitez les différents choix techniques et les réponses technologiques aux différentes contraintes que le système implique. |
Pour cela nous allons donc vous présenter l’environnement général de développement puis énoncer les 4 contraintes que nous avons déterminées de notre logiciel.
Nous avons fais le choix d’utiliser comme environnement de travail l’IDE eclipse. Pour la raison que nous connaissons tous très bien cette environnement, ce qui nous permet d’avoir tous le même environnement de développement.
Également, cette IDE permet la gestion d’un projet maven ce qui nous sera parfaitement adapté.
Voici les 4 contraintes que nous avons déterminées :
-
L’interface graphique.
-
La communication vers la base de données.
-
La communication entre les machines.
-
La sécurité.