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