From 4599e75e5b1b25d0cc6173b57ca8bb0f254e1ee9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gerson=20Suny=C3=A9?= <sunye@atlanmod.org>
Date: Wed, 8 Nov 2023 15:07:52 +0100
Subject: [PATCH] Add more tips to premilinary design document

---
 .../developement/examples/dc-global.puml      | 19 ++--
 .../developement/pages/composants.adoc        | 89 ++++++++++---------
 2 files changed, 59 insertions(+), 49 deletions(-)

diff --git a/trivial-doc/modules/developement/examples/dc-global.puml b/trivial-doc/modules/developement/examples/dc-global.puml
index 6d25565..b277f2b 100644
--- a/trivial-doc/modules/developement/examples/dc-global.puml
+++ b/trivial-doc/modules/developement/examples/dc-global.puml
@@ -1,6 +1,10 @@
 @startuml
 
 package "My System" {
+interface Web1
+interface Web2
+interface Lobby
+
 [GameServer]
 
 [LobbyServer]
@@ -12,12 +16,17 @@ package "My System" {
 [Client web 2]
 }
 
-[GameServer] -- [LobbyServer]
 
-[Client web 1] -- [MiddlewareClient1]
-[Client web 2] -- [MiddlewareClient2]
+[LobbyServer] -up-() Lobby
+
+[GameServer] --( Lobby
+MiddlewareClient1 --( Lobby
+MiddlewareClient2 --( Lobby
+
+[Client web 1] --() Web1
+Web1 )-- [MiddlewareClient1]
 
-MiddlewareClient1 -- [LobbyServer] : Websocket
-MiddlewareClient2 -- LobbyServer: Websocket
+[Client web 2] --() Web2
+Web2 )-- [MiddlewareClient2]
 
 @enduml
\ No newline at end of file
diff --git a/trivial-doc/modules/developement/pages/composants.adoc b/trivial-doc/modules/developement/pages/composants.adoc
index 64fb0e5..a54feac 100644
--- a/trivial-doc/modules/developement/pages/composants.adoc
+++ b/trivial-doc/modules/developement/pages/composants.adoc
@@ -26,7 +26,7 @@ include::example$dc-global.puml[]
 @startuml
 left to right direction
 
-component Server {
+component A as "Component A" {
     portin "WebSockets" as cws
     portout "HTTP" as sws
 }
@@ -46,7 +46,7 @@ Required  )-- cws
 * Serveur :
 
 .Quelques exemples
-* Créé tous les objets relatifs au jeu : les joueurs, les cartes, les merveilles et les initialises.
+* Créé tous les objets relatifs au jeu : les joueurs, les cartes, les merveilles et les initialise.
 * Gère les connections au serveur et les pseudos
 * Lorsque tous les joueurs sont prêts, lance la partie et distribue au client ce dont il a besoin : Merveille, cartes au tour 1
 * À chaque tour, il reçoit la liste suivante : Le paquet de cartes non jouées, la carte jouée/déposée sur la merveille/défossée,
@@ -59,6 +59,20 @@ le nombre d'argent à ajouter au joueur
 
 ==== Interface A
 
+[TIP]
+====
+Utilisez la notation UML pour spécifier la signature de chaque operation de l'interface.
+
+====
+
+[WARNING]
+====
+* La syntaxe de la notation UML est différente de celle de Java{nbsp}!
+* Les types de base sont  différents aussi{nbsp}! Par exemple, `int`, `float`, `bool` ne sont pas des types UML.
+* Si les paramètres sont multivalués (par ex. ensemble, séquence, etc.) utilisez les cardinalités: `names : String [1..4]`
+* `List<>`, `Set<>`, etc. ne sont pas des types UML.
+====
+
 [plantuml]
 ....
 interface A {
@@ -66,6 +80,8 @@ interface A {
 }
 ....
 
+TIP: Si nécessaire, utilisez le langage OCL pour spécifier les pré et post-conditions des opérations.
+
 .Contraintes sur les operations
 [source, ocl]
 ----
@@ -102,14 +118,38 @@ post:
 Description de ses responsabilités et de ses interfaces
 ====
 
+=== Interface C
+[plantuml]
+....
+interface GameServer {
+connect(pseudo: String, password: String, ip: String, port: Integer):Boolean
+createGame(numberOfPlayers : Integer): Integer
+join(gameId : Integer): Integer
+notifyPlayersReady(): String
+chooseRole(role: String, playerId: Integer)
+resist(numberOfPawns: Integer)
+playPlaceCard(playerId: Integer, cardName: String)
+playHuntCard(cardName: String)
+letGo()
+putToken(tokenName: String, cardNames: String [0..2])
+}
+....
 
+== Interactions
 
+[TIP]
+====
+* Utilisez les diagrammes d'interaction de la notation UML pour valider les interfaces des composants.
 
-== Interactions
+* Basez-vous sur les cas d'utilisation (spécification des exigences) pour illustrer les interactions entre les différents composants
+====
 
-[note]
+[WARNING]
 ====
-Basez-vous sur les cas d'utilisation (spécification des exigences) pour illustrer les interactions entre les différents composants
+* En UML, les interactions se passent au niveau des instances.
+* Rappel:
+** Niveau classes: Classes, opérations, types, etc.
+** Niveau instances: Objets, appels d'opération, valeurs, etc.
 ====
 
 .Connexion au serveur
@@ -174,32 +214,6 @@ actor "ClientB:Client" as C2
 actor "ClientC:Client" as C3
 
 
-Serveur -> C1 : recoverWonderMe(Merveille1)
-Serveur -> C2 : recoverWonderMe(Merveille2)
-Serveur -> C3 : recoverWonderMe(Merveille3)
-Serveur -> C1 : recoverDeck(Deck1)
-Serveur -> C2 : recoverDeck(Deck2)
-Serveur -> C3 : recoverDeck(Deck3)
-
-
-Serveur -> C1 : recoverWonderLeft(Merveille3)
-Serveur -> C1 : recoverWonderRight(Merveille2)
-
-Serveur -> C1 : recoverCardPlayedLeft({})
-Serveur -> C1 : recoverCardPlayedRight({})
-
-Serveur -> C2 : recoverWonderLeft(Merveille1)
-Serveur -> C2 : recoverWonderRight(Merveille3)
-
-Serveur -> C2 : recoverCardPlayedLeft({})
-Serveur -> C2 : recoverCardPlayedRight({})
-
-Serveur -> C3 : recoverWonderLeft(Merveille2)
-Serveur -> C3 : recoverWonderRight(Merveille1)
-
-Serveur -> C3 : recoverCardPlayedLeft({})
-Serveur -> C3 : recoverCardPlayedRight({})
-
 @enduml
 ....
 
@@ -213,19 +227,6 @@ actor "Rom:Client" as C1
 actor "Ted:Client" as C2
 actor "Isma:Client" as C3
 
-C1 -> Serveur : giveUnplayedCards("Rom", PaquetCartesNonJouées1:Liste de cartes)
-C1 -> Serveur : givePlayedCard("Rom", Carte2 : Carte)
-
-C2 -> Serveur : giveUnplayedCards("Ted", PaquetCartesNonJouées2:Liste de cartes)
-C2 -> Serveur : givePlayedCard("Ted", Carte3 : Carte)
-
-C3 -> Serveur : giveUnplayedCards("Isma", PaquetCartesNonJouées3:Liste de cartes)
-C3 -> Serveur : giveDiscardedCard("Isma", Carte3 : Carte)
-C3 -> Serveur : giveMoney("Isma", 2)
-
-Serveur -> C1 : play()
-Serveur -> C2 : play()
-Serveur -> C3 : play()
 
 @enduml
 ....
-- 
GitLab