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. Réponses aux exigences non-fonctionnelles

2.1. Concurrence

Il faut que le serveur puisse gérer plusieurs parties à la fois. Comme chaque partie est indépendante des autres, on n’a pas besoin de les synchroniser. Les parties seront disposées dans le serveur, et celui-ci utilisera des threads qui se partageront le travail des parties. Comme ça, on pourra gérer plusieurs parties en même temps sans problème.

2.2. Performance

Il est important que la performance soit de mise. Pour ce faire, une bonne gestion des threads, ainsi que limiter les fonctions gourmandes en énergie est primordial.

2.3. Interopérabilité

Étant donné que l’application est déployée sur le web, cela ne pose pas de problème d’interopérabilité, elle sera disponible sur n’importe quel browser.

2.4. Portabilité

L’application est portable, en effet, les interactions se font sur le navigateur web et et multiplate-forme, et le backend étant centralisé, cela ne pose pas de problème.

2.5. Sécurité

2.5.1. Exigence de sécurité

Étant donné que l’authentification des joueurs est gérée par un autre module, nous admettons que les données sensibles des utilisateurs ont déjà été sécurisés. De notre côté aucune donnée personnelle n’est à gérer.

2.6. Maintenabilité

Le projet étant bien organisé, et suivant des conventions de nommage et de structure de code rigoureux permet une meilleure maintenabilité. Ainsi qu’une documentation complète et claire ce qui permet une meilleure compréhension du code.

2.7. Interface utilisateur

L’interface utilisateur est produite avec un framework de Javascript, Angular, rendant l’interface intuitive, interactive et attrayante.

2.8. Interface logicielle

La partie de code est présentée sous forme de components ce qui rend d’autant plus compréhensible et abordable son code source. Le code source suit les bonnes conventions de codage comme par exemple instancier des classes avec leur interface, et définir aux mieux possibles les interfaces.

2.9. Interface ou protocoles de communication

L’échange d’informations entre le serveur et la base de données s’appuie sur JDBC (Java Database Connectivity), une interface standard qui facilite la communication entre une application Java et un système de gestion de base de données.

Quant à la communication entre le serveur et les clients, elle se réalisera à travers le protocole de web socket RFC 6455. Ce protocole offre des échanges bidirectionnels en temps réel, ce qui le rend particulièrement adapté aux besoins du jeu.

2.10. Correction

La fiabilité du code sera géré par l’implémentation de plusieurs tests unitaire suivant la spécification du sujet. Limiter les impacts de certains bugs impromptus sur d’autres composants.

3. Patrons logiciels utilisés

3.1. Patron de conception "A"

Nous opterons pour le modèle de conception Observer afin de faciliter la gestion des événements en temps réel entre le serveur et les clients. Les clients seront configurés pour observer les modifications d’état du serveur, particulièrement lors des tours de jeu, et seront informés en conséquence.

3.2. Patron architectural "B"

L’architecture physique retenue suivra le modèle client-serveur. Le contrôle de chaque entité est "event driven", entre ces derniers, il demeure séquentiel. Du fait que plusieurs entités peuvent être actives simultanément, le flux de contrôle global s’opère de manière concurrente.

4. Choix techniques - Distribution des processus

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 faits le choix d’utiliser comme environnement de travail l’IDE éclipse. Pour la raison que nous connaissions tout très bien cet 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é.