Spécification des composants

Objectif

Découpage de la solution en composants (ou sous-systèmes), affectation des responsabilités aux composants et spécification des interfaces fournies et requises par ces composants

Moyens

Utilisez des diagrammes d’interaction (séquence, communication) pour décrire l’échange de messages entre les composants pour en déduire leurs interfaces.

1. Vue globale des composants

Diagramme de composants décrivant la solution proposée
Figure 1. Diagramme de composants décrivant la solution proposée

2. Composant 1 : PlayerServer

Un autre exemple
Figure 2. Un autre exemple

2.1. Responsabilités du Composant 1

  • Serveur : PlayerServer

Responsabilités du composant
  • Gère les connections au serveur et les pseudos

  • Récupération du pseudo du joueur connecté

  • Gestion des connexions et déconnexions des joueurs

  • Vérificaiton que le joueur connecté ne l’est pas plusieurs fois

  • Pour l’admistrateur : contrôle de l’accès aux joueurs

  • Mise à jour des informations du joueurs (victoire - perte) -

2.2. Interfaces fournies

2.2.1. Interface A : GameDesk

Diagram
Listing 1. Contraintes sur joinGame
context A::joinGame(gameID : String, userID : String): Boolean
pre: gameID <> null
     userID <> null
post:
-- Pas de postconditions
Listing 2. Contraintes sur getGameStatus
context A::getGameStatus(gameID : String) : String
pre: gameID <> null
     user.isConnected == true
     user.isPlayed == true
post:
-- Pas de postconditions
Listing 3. Contraintes sur joinGame
context A::joinGame(userID : String) : Boolean
pre: userID <> null
     user.isConnected() == true
     user.isPlayed() == false
post:
-- Pas de postconditions
Listing 4. Contraintes sur joinSpecialGame
context A::joinSpecialGame(userID : String, gameID : STring) : Boolean
pre: userID <> null
     gameID <> null
     user.isConnected() == true
     user.isPlayed() == false
     gameID.isComplete() == false
post:
-- Pas de postconditions
Listing 5. Contraintes sur startRound
context A::startRound(userID : String) : String
pre: userID <> null
     user.isConnected() == true
     user.isPlayed() == false
post:
-- Pas de postconditions

3. Composant 2 : InitializerGameServer

Diagram

3.1. Responsabilités du Composant 2

  • Serveur : IntializerGameServer

Responsabilités du composant
  • Initialiser tous les éléments de jeu

  • Création des joueurs

  • Créer les objets

  • Génération des cartes

  • Lancement de la partie

  • Faire rentrer tous les joueurs dans la partie

3.2. Interfaces fournies

3.3. Interface GamePlay

Diagram

4. Composant 3 : BoardServer

Diagram

4.1. Responsabilités du Composant 3

  • Serveur : BoardServer

Responsabilités du composant
  • Gestion du Plateau

  • Gestion des cartes

  • Appel à CardServer pour les cartes (questions/réponses)

  • Création des pions, camembert et triangle

4.2. Interfaces fournies

4.3. Interface

Diagram

5. Composant 4 : GameServer

Diagram

5.1. Responsabilités du Composant 4

  • Serveur : GameServer

Responsabilités du composant
  • Permet à un joueur de participer à un tour de jeu.

  • Récupère le score actuel d’un joueur.

  • Met à jour le score d’un joueur après chaque tour.

  • Initie un nouveau tour de jeu pour un joueur.

  • Gère le mouvement du joueur sur le plateau en fonction du résultat du dé.

  • Vérifie si la partie est terminée.

  • Annonce le vainqueur de la partie.

  • Fournit une question à poser à un joueur.

5.2. Interfaces fournies

5.3. Interface GameManagement

Diagram

5.4. Interface GamePlay

Diagram

6. Composant 5 : CardServer

Diagram

6.1. Responsabilités du Composant 5

  • Serveur : CardServer

Responsabilités du composant
  • Fournir des cartes (questions/réponses)

  • Gestion des questions

  • Gestion des réponses

  • Gestion des catégories

  • Gestion des réponses du joueur

6.2. Interfaces fournies

6.3. Interface

Diagram

6.4. Interface

Diagram

7. Interactions

Connexion au serveur
Figure 3. Connexion au serveur
Déroulement de l’initialisation du tour 1
Figure 4. Déroulement de l’initialisation du tour 1