diff --git a/trivial-doc/modules/development/pages/composants.adoc b/trivial-doc/modules/development/pages/composants.adoc
index e383ff47b7f9ab87a3a53fb935efc2ecd2d7237c..38c175b666e6711d08a10205299747929568a6aa 100644
--- a/trivial-doc/modules/development/pages/composants.adoc
+++ b/trivial-doc/modules/development/pages/composants.adoc
@@ -20,7 +20,7 @@ include::example$dc-global.puml[]
 
 .Un autre exemple
 
-== Composant A
+== Composant 1
 
 [plantuml]
 ....
@@ -39,27 +39,26 @@ interface Required
 
 
 sws --() Provided
-Required  )-- cws
+Required  ()-- cws
 @enduml
 ....
 
-=== Responsabilités du Composant A
+=== Responsabilités du Composant 1
 
-* Serveur :
+* Serveur : PlayerServer
 
 .Quelques exemples
-* 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,
-le nombre d'argent à ajouter au joueur
-* Une fois que tout le monde a envoyé son jeu, envoie à chaque client : ses nouvelles cartes, les cartes jouées depuis le début de la partie de son voisin de gauche et de droite
-* Gère les tours de la partie
-* Définit le joueur gagnant
+* 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)
+-
 
 === Interfaces fournies
 
-==== Interface A
+==== Interface A : GameDesk
 
 [TIP]
 ====
@@ -79,24 +78,77 @@ Utilisez la notation UML pour spécifier la signature de chaque operation de l'i
 ....
 include::example$sober.config[]
 
-interface A << Interface >> {
-    operationA(a: String, b: Integer): Boolean
+GameDesk << Interface >> {
+
+    joinGame(gameID : String, userID : String): Boolean
+    getGameStatus(gameID : String) : String
+    joinGame(userID : String) : Boolean
+    joinSpecialGame(userID : String, gameID : STring) : Boolean
+    startRound(userID : String) : String
+    connect(pseudo : String, password : String, ip : String, port : Integer) : Boolean
+    createGame(numberOfPlayers : Integer): String
 }
 ....
 
 TIP: Si nécessaire, utilisez le langage OCL pour spécifier les pré et post-conditions des opérations.
 
-.Contraintes sur les operations
+.Contraintes sur joinGame
 [source, ocl]
 ----
-context A::operationA(a: String, b: Integer): Boolean
-pre: a.size() > 3
+context A::joinGame(gameID : String, userID : String): Boolean
+pre: gameID <> null
+     userID <> null
+post:
+-- Pas de postconditions
+----
+
+.Contraintes sur getGameStatus
+[source, ocl]
+----
+context A::getGameStatus(gameID : String) : String
+pre: gameID <> null
+     user.isConnected == true
+     user.isPlayed == true
+post:
+-- Pas de postconditions
+----
+
+.Contraintes sur joinGame
+[source, ocl]
+----
+context A::joinGame(userID : String) : Boolean
+pre: userID <> null
+     user.isConnected() == true
+     user.isPlayed() == false
 post:
 -- Pas de postconditions
 ----
 
+.Contraintes sur joinSpecialGame
+[source, ocl]
+----
+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
+----
+
+.Contraintes sur startRound
+[source, ocl]
+----
+context A::startRound(userID : String) : String
+pre: userID <> null
+     user.isConnected() == true
+     user.isPlayed() == false
+post:
+-- Pas de postconditions
+----
 
-==== Interface B
+==== Interface B : GameManagement
 
 [plantuml]
 ....
@@ -104,8 +156,8 @@ post:
 'skinparam CircleColor blue
 'skinparam CircledCharacterFontColor blue
 
-interface C as "C" << (I, White) Interface >> {
-    operation(a: String, b: Integer): Boolean
+GameManagement << Interface >> {
+    createAccoount(email: String, prenom: String, nom: String, birthday : String, mdp : String): Boolean
 }
 ....
 
@@ -120,29 +172,64 @@ post:
 
 
 == Composant B
+[plantuml]
+....
+include::example$sober.config[]
+@startuml
+left to right direction
 
-[note]
-====
-Description de ses responsabilités et de ses interfaces
-====
+InitializerGameServer as "Component B" {
+    portin "WebSockets" as cws
+    portout "HTTP" as sws
+}
+
+interface Provided
+
+interface Required
+
+
+sws --() Provided
+Required  ()-- cws
+@enduml
+....
+
+=== Responsabilités du Composant 1
+
+* Serveur : IntializerGameServer
+
+.Quelques exemples
+* 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
+
+=== Interfaces fournies
 
 === Interface C
 [plantuml]
 ....
 include::example$sober.config[]
 
-interface GameServer << Interface >> {
-    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])
+GameManagement << Interface >> {
+
+    registerPlayer(username: String, password: String): boolean
+    createBoard():void
+    createPawn(numberPlayer : Integer):void
+    addPlayer(userID : String) : Boolean
+    deletePlayer(username: String): boolean
+    startGame(): void
+    endGame(): void
+    resetRound(): void
+    addQuestion(question: Question): boolean
+    addAnswer(answer: Answer): boolean
+    initialiseQuestions():ArrayList<String>
+    initialiseAnswers():ArrayList<String>
+    createAccount(username: String, password: String): boolean
+    notifyGameStarted(): String
 }
+
 ....
 
 == Interactions