Presentatie weekcasus 2
Leerdoel
Na deze uitleg kan je:
- twee aggregate-opties herkennen in het klassendiagram;
- uitleggen waarom optie 1 vaker optimistic-locking conflicts geeft;
- 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
Vertoningis aggregate root.Zitplaatszit 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
VertoningenZitplaatszijn aparte aggregates.- Elke
Zitplaatsheeft 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)
Stap 4 - Sequence bij optie 2 (Antwoord 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.