Kontakt
Mail: stefan.bente@th-koeln.de
Tel.: +49 2261 8196 6367
Skype: stefan.bente
Discord Server
Adresse:
Steinmüllerallee 4
51643 Gummersbach
Gebäude LC4
Raum 1708
Sprechstunde nach Vereinbarung
Terminanfrage: calendly.com Wenn Sie dieses Tool nicht nutzen wollen, schicken Sie eine Mail und ich weise Ihnen einen Termin zu.

Übung »Aggregates bestimmen (am Beispiel eines Campus-Management-Systems CAMS)«

In dieser Übung geht es darum, Aggregates zu identifizieren. Dazu nutzen Sie die aus Videos bekannte Checkliste.

Dauer
Ca. 30 min
Video(s) hierzu

Worum geht es?

Nachfolgend sehen Sie einen Ausschnitt aus einem hypothetischen “Campus Management System” (CAMS).

CAMS-Domain-Modell

  • Student und Address sollten klar sein.
  • Resume ist ein Kurz-Lebenslauf, den jede:r Student:in im System hinterlegt, falls er/sie sich für einen Studiengang bewirbt.
  • StudyProgram ist ein Studiengang. Er besteht aus Modulen (Course ). Module können Teil von mehreren Studiengängen sein (in den Gummersbacher Informatik-Studiengängen werden einige Grundvorlesungen gemeinsam für Informatik, Wirtschaftsinformatik und Medieninformatik angeboten). Teil des CAMS ist ein Modulverzeichnis.
  • Jedes Modul wird von mindestens einem:r Professor:in angeboten.
  • Teil des CAMS soll auch eine Börse für Lerngruppen (StudyGroup) sein. Eine Lerngruppe hat Treffen PlannedMeeting, die immer ein eindeutiges Thema haben müssen. Ein solches Treffen wird von einem:r Student:in organisiert.

Ihre Aufgabe

Zeichnen Sie die Aggregates im obigen Domain Model ein. Gehen Sie dabei nach der folgenden Checkliste vor (I = inneres Entity, R = Root) - nur wenn alle Bedingungen erfüllt sind, gehören R und I zum selben Aggregate.

  1. I tritt immer zusammen mit R auf. Es gibt keine Query nach I, außer zusammen mit einer Query nach R.
  2. Alle Zugriffe auf I erfolgen via R.
  3. Wenn R gelöscht wird, wird auch I gelöscht.
  4. Es kann Invarianten (immer gültige Bedingungen) in der Beziehung zwischen R und I (und ggfs. weiteren Klassen) geben. (Optionale Bedingung)

Diskutieren Sie das in Ihrer Kleingruppe.

Lösung

Es ergeben sich folgende Aggregates:

CAMS-Domain-Modell

  • A1 scheint relativ klar zu sein.
  • Ebenso A2.
  • A3 (StudyProgram) - warum nicht zusammen mit Course? Course (Fach) wird zwischen verschiedenen StudyPrograms geshared. Ein Fach kann in mehreren Studiengängen angeboten werden. Aus diesem Grund gibt es ein Modulverzeichnis, das unabhängig vom Studiengang das Editieren eines Fachs erlaubt. Damit ist die Bedingung “I tritt immer zusammen mit R auf. Es gibt keine Query nach I, außer zusammen mit einer Query nach R.” verletzt. Auch würde man ein Fach nicht notwendig löschen, wenn der Studiengang nicht mehr angeboten wird. Also sind bei jeweils eigenständige Aggregates.
  • Bei A5 (Professor) ist das ebenfalls naheliegend.