Skip to content

Use Case Diagram

Een use-case-diagram wordt voornamelijk gebruikt in software engineering om de requirements van een systeem in kaart te brengen.

Het doel van het use-case-diagram is om een grafisch overzicht te geven van de functionaliteiten van een systeem in termen van actoren, hun bedoeling uitgedrukt als usecases en de onderlinge relaties tussen deze usecases.

Een bekend voorbeeld met actoren, use cases en relaties staat hier onder (bron: Wikipedia/Kishorekumar 62, CC BY-SA 3.0 https://creativecommons.org/licenses/by-sa/3.0, via Wikimedia Commons)
Use Case Diagrammen in mermaid

Mermaid is een markdown extensie die het mogelijk maakt om diagrammen te maken in markdown. Dit is een voorbeeld van een use case diagram in mermaid.

De code:

graph LR

    %% Define use cases
    OF[Order Food]
    OW[Order Wine]
    SF[Serve Food]
    CF[Cook Food]
    SW[Serve Wine]
    EF[Eat Food]
    DW[Drink Wine]
    PFF[Pay for Food]
    PFW[Pay for Wine]


    %% Actor to use case relationships
    Waiter --"receive order" --> OF
    Waiter --> SF
    Waiter --"facilitate payment"--> PFF
    Client --"place order"--> OF
    Client --> EF
    Client --"pay"--> PFF
    Cashier --"accept payment"--> PFF
    Chef --> CF
    Chef --"confirm order"--> OF

    OW -.->|"extend"| OF
    SW -.->|"extend {if wine was ordered}"| SF
    DW -.->|"extend {if wine was served}"| EF
    PFW -.->|"extend {if wine was consumed}"| PFF

    %% Define actors
    Waiter([fa:fa-user Waiter])
    Chef([fa:fa-user Chef])
    Client([fa:fa-user Client])
    Cashier([fa:fa-user Cashier])

wordt omgezet in:

graph LR

    %% Define use cases
    OF((Order Food))
    OW((Order Wine))
    SF((Serve Food))
    CF((Cook Food))
    SW((Serve Wine))
    EF((Eat Food))
    DW((Drink Wine))
    PFF((Pay for Food))
    PFW((Pay for Wine))


    %% Actor to use case relationships
    Waiter --"receive order" --> OF
    Waiter --> SF
    Waiter --"facilitate payment"--> PFF
    Client --"place order"--> OF
    Client --> EF
    Client --"pay"--> PFF
    Cashier --"accept payment"--> PFF
    Chef --> CF
    Chef --"confirm order"--> OF

    OW -.->|"extend"| OF
    SW -.->|"extend {if wine was ordered}"| SF
    DW -.->|"extend {if wine was served}"| EF
    PFW -.->|"extend {if wine was consumed}"| PFF

    %% Define actors
    Waiter([fa:fa-user Waiter])
    Chef([fa:fa-user Chef])
    Client([fa:fa-user Client])
    Cashier([fa:fa-user Cashier])

Mermaid ondersteund helaas geen echt UML diagrammen. In het voorbeeld hierboven is een “flow-chart” gebruikt om het diagram te maken.

Een usecase beschrijft een systeem vanuit het gebruikersperspectief. Het beschrijft de actor, de initiator van de interactie, en het systeem zelf als een opeenvolging van eenvoudige stappen. Elke usecase op zichzelf is een complete serie van zogenaamde “events”, beschreven vanuit het standpunt van de actor. In bovenstaande afbeelding worden 7 use case getoond. Elke use case bestaat uit een aantal stappen/events en de use case is klaar als de stappen zijn afgerond.

Actor

Een actor is een rol die een gebruiker van het systeem kan aannemen. Een actor kan een persoon zijn, maar ook een ander systeem. Een actor kan meerdere rollen hebben. In het diagram wordt de actor weergegeven als een poppetje.

Initiator

De initiator is de actor die de use case start. De initiator is niet altijd de actor die de use case uitvoert.

Use case

Een use case is een beschrijving van een reeks van stappen die een actor uitvoert om een bepaald doel te bereiken.

Extends

Een use case kan een andere use case uitbreiden. Dit wordt aangegeven met een pijl met een open driehoek en een onderbroken lijn. De use case die uitgebreid wordt staat aan het einde van de pijl. De use case die uitbreidt staat aan het begin van de pijl.

Oefening: Use Case Diagram

Maak een use case diagram voor:

  • een systeem dat een gebruiker in staat stelt om een boek te lenen bij een bibliotheek.
  • online een kaartje kopen voor een concert.
  • Een google search query uitvoeren. Houdt rekening met het google verdienmodel.

Verder leren: