Conception détaillée

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.

Réponses aux exigences non-fonctionnelles

Expliquez dans cette section les répondes aux différentes exigences non-fonctionnelles spécifiées.

Concurrence

Notre logiciel nécessite l’utilisation des Threads pour fonctionner, il est donc évident qu’une possible concurrence soit à prévoir de ce côté là. Les Threads pourraient ce faire concurrence entre eux.

Performance

Pour que notre jeu soit agréable à jouer, il est nécessaire d’avoir des requêtes avec un temps de retour inférieur ou égale à 500 ms. Cela permet de donner une impression de fluidité et ne pas faire patienter l’utilisateur.

Interopérabilité

Nous avons implémenté notre logiciel dans l’objectif que le projet soit maintenue et maintenable. En rendant l’implémentation flexible et interchangeable du côté client et serveur.

Portabilité

Les plus gros problèmes possible via l’implémentation du côté client sont: les support des websockets.

Pour le côté serveur on peut à nouveau parler des websockets ainsi que l’implémentation de java (minimum jdk 11).

Sécurité

Exigence de sécurité

En ce qui concerne la sécurité, on ce doit de garder l’identité de nos utilisateurs sécurisés. Les données transmises sont cependant minime et ne sont pas critiques.

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.

Maintenabilité

Durant la conception des Colons de Catane, la question de la maintenabilité fut posé. En effet, lorsque l’on souhaite réaliser un logiciel de cette ampleur, il faut prévoir l’avenir du programme et faciliter les futures implémentations. L’utilisation de patron de concetion est inévitable, plus spécifiquement le patron de conception Pont permettant de démonter et d’interchanger les différents sous-ensemble du logiciel. On peut aussi noté que le logiciel n’utilise aucun composants commerciaux à l’approvisionnement difficile dans un soucis de maintenabilité obtimium.

Interface utilisateur

L’interface utilisateur n’est pas notre priorité actuellement, elle est donc laissé à l’équipe design.

Diagrammes de Séquences

Card

Hand to Card

diagram
Figure 1. UML Diagramme Hand to Card

Client

Client to Lobby color

diagram
Figure 2. UML Diagramme Client to Lobby color

Client to Lobby ready

diagram
Figure 3. UML Diagramme Client to Lobby ready

Client to Lobby

diagram
Figure 4. UML Diagramme Client to Lobby

Game

Game to Player

diagram
Figure 5. UML Diagramme Game to Player

Player

Player to Proposition

diagram
Figure 6. UML Diagramme Player to Proposition

Player to Hand

diagram
Figure 7. UML Diagramme Player to Hand

Register

ClientWeb to LobbyManager

diagram
Figure 8. UML Diagramme ClientWeb to LobbyManager

LobbyManager to Lobby

diagram
Figure 9. UML Diagramme LobbyManager to Lobby

Interface logicielle

TODO!

Interface ou protocoles de communication

TODO!

Correction

TODO!

Patrons logiciels utilisés

Décrivez dans cette partie les patrons logiciels utilisés pour mettre en œuvre l’application.

Patron de conception "A"

TODO!

Patron architectural "B"

TODO!

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 IntelliJ IDEA. 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é.