Skip to content

UML: Sequence diagram

Inleiding

De Unified Modelling Language(UML) heeft twee categorien voor diagrammen. Een categorie voor de structuur van je applicatie te modelleren (ontwerpen) en een categorie om het gedrag te modelleren (ontwerpen). Op deze pagina kijken we naar het Sequence Diagram om het gedrag te modelleren. Je kan dit diagram ook goed gebruiken om een code base te bestuderen en analyseren door deze te ‘reverse engineering’.

Knowledgebase - Mermaid diagrams voor o.a. UML
Mermaid - Sequence diagram syntax

Voorbeeld #1: Generiek

%% Example of sequence diagram generic
  sequenceDiagram
    Alice->>Bob: Hello Bob, how are you?
    alt is sick
    Bob->>Alice: Not so good :(
    else is well
    Bob->>Alice: Feeling fresh like a **daisy**
    end
    opt Extra response
    Bob->>Alice: Thanks for asking
    end

Voorbeeld #2: Networking Server side

%% Example of sequence diagram server side
sequenceDiagram
  Server-)+App: listen
  App-)-SocketConnectionListener: initializeServer

  rect rgba(200,200,200,0.16)
      SocketConnectionListener->>+SocketConnectionListener: handleSocketSession
      SocketConnectionListener->>RoomMessageHandler: enterRoom <player>
      RoomMessageHandler->>SocketIO: join <room>
      SocketConnectionListener->>SocketConnectionListener: emitPlayerStateChangeToAllPlayersInRoom
      SocketConnectionListener->>+RoomMessageHandler: emitPlayerStateChangeToAllPlayersInRoom
      RoomMessageHandler->>SocketConnectionListener: getPlayerById
      RoomMessageHandler->>-SocketIO: emit <message>
      SocketConnectionListener->>-SocketIO: emit <session est>
  end

  rect rgba(200,200,200,0.16)
      SocketConnectionListener-)+SocketConnectionListener: handleIncomingConnections
      SocketConnectionListener->>-SocketIO: on connection 
      SocketIO->>+SocketConnectionListener: <Inline anon function>
      SocketConnectionListener->>socket: join
      SocketConnectionListener->>SocketConnectionListener: storeSession
      SocketConnectionListener->>SocketConnectionListener: handleDisconnect
      SocketConnectionListener->>+RoomMessageHandler: handleIncomingMessages
      RoomMessageHandler->>RoomMessageHandler: handleIncomingCreateRoomMessages
      RoomMessageHandler->>RoomMessageHandler: handleIncomingEnterRoomMessages
      RoomMessageHandler->>RoomMessageHandler: handleIncomingLeaveRoomMessages
      RoomMessageHandler->>RoomMessageHandler: handleIncomingGetActiveRoomsMessages
    RoomMessageHandler->>-RoomMessageHandler: handleIncomingGetActivePlayersInRoomMessages
      SocketConnectionListener->>-socket: emit <session> <user>
  end

Voorbeeld #3: Networking Client side

%% Example of sequence diagram client side
  sequenceDiagram
    LobbyJoinOrCreateState->>SocketClient: SubscribeToDataPacket
    SocketClient->>SocketIOClientClass: EmitAsync
    SocketIOClientClass->>ITransport: SendAsync

Last update: March 12, 2024