Ga naar hoofdinhoud

Presentatie weekcasus 2

Leerdoel

Na deze uitleg kan je:

  1. twee aggregate-opties herkennen in het klassendiagram;
  2. uitleggen waarom optie 1 vaker optimistic-locking conflicts geeft;
  3. het juiste sequence diagram koppelen aan de gekozen aggregate-grens.

Casus in 1 minuut

  • Twee gebruikers reserveren bijna tegelijk een zitplaats.
  • De vraag is niet alleen "werkt het", maar ook:
    • hoeveel onnodige conflicts krijg je?
    • waar leg je de aggregate-grens?
  • We vergelijken daarom twee modelleeropties.

Stap 1 - Klassendiagram optie 1

Klassendiagram optie 1

  • Vertoning is aggregate root.
  • Zitplaats zit binnen hetzelfde aggregate.

Optie 1: gevolg voor concurrency

  • Alle wijzigingen op zitplaatsen lopen via hetzelfde aggregate.
  • Twee gebruikers die verschillende stoelen reserveren, concurreren alsnog op dezelfde versie van Vertoning.
  • Resultaat: grotere kans op optimistic-locking exception.

Stap 2 - Klassendiagram optie 2

Klassendiagram optie 2

  • Vertoning en Zitplaats zijn aparte aggregates.
  • Elke Zitplaats heeft een eigen versie.

Optie 2: gevolg voor concurrency

  • Wijzigingen op zitplaats 1 en 2 raken verschillende aggregates.
  • Daardoor kan elke wijziging apart gevalideerd en opgeslagen worden.
  • Resultaat: minder onnodige optimistic-locking conflicts.

Stap 3 - Sequence bij optie 1 (Antwoord 1)

Sequence optie 1

Stap 4 - Sequence bij optie 2 (Antwoord 2)

Sequence optie 2

Welke koppeling is correct?

  • Optie 1 klassendiagram hoort bij Sequence Antwoord 1.
  • Optie 2 klassendiagram hoort bij Sequence Antwoord 2.

Dit is de kern van de ontwerpskeuze in deze casus.