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.

2. Spécification détaillée des composants

2.1. Composant: Serveur

diagram
Figure 1. Diagramme de classe du serveur

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.8. Interface logicielle

TODO!

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.

4.1. Patron de conception "A"

Nous utiliserons le patron de conception Observer pour la gestion des événements en temps réel entre le serveur et les clients. Les clients observeront les changements de l’état du serveur, notamment lors des tours de jeu, et seront notifiés en conséquence.

4.2. Patron architectural "B"

TODO!

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 :

  1. L’interface graphique.

  2. La communication vers la base de données.

  3. La communication entre les machines.

  4. La sécurité.