Kontakt
stefan.bente[at]th-koeln.de
+49 2261 8196 6367
Discord Server
Prof. Bente Personal Zoom
Adresse
Steinmüllerallee 4
51643 Gummersbach
Gebäude LC4
Raum 1708 (Wegbeschreibung)
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 »Restaurant-Fallbeispiel modellieren«

Für das Restaurant-Fallbeispiel aus dem ST2-Praktikum ab Sommersemester 2026 machen wir ein paar initiale Modellierungen - Fachliches Datenmodell und einige Zustandsmodelle.

Dauer
Ca. 60 min
Video(s) hierzu

Worum geht es?

Wir nutzen die Aufgabenstellung aus dem Meilenstein M0, übersetzt ins Deutsche, sodass die Individualisierung keine Rolle spielt, die Sie in Ihrem individuellen Meilenstein haben. Wir machen auch die Modellierung mit deutschen Begriffen, um es allgemein zu halten.

Die Aufgabe

Ihr Softwareentwicklungsunternehmen wurde beauftragt, ein Verwaltungssystem für ein Self-Service-Restaurant zu entwickeln. Gäste kommen herein (oder reservieren im Voraus), setzen sich an einen Tisch, checken mit der Tischnummer ein, bestellen Speisen über eine App und holen ihr Essen selbst ab. Es gibt keine Kellner. Jede Bestellung umfasst genau ein Gericht und wird von einem einzelnen Gast aufgegeben.

Das Restaurant verfügt über eine Anzahl von Tischen. Jeder Tisch hat eine Nummer und eine Sitzplatzkapazität. Die Tischnummer muss positiv sein, und die Sitzplatzkapazität muss mindestens 2 betragen. Jeder Tisch ist entweder frei oder belegt. Ein neu hinzugefügter Tisch ist frei und wird belegt, wenn ein Gast eincheckt. Wenn ein Gast auscheckt, wird der Tisch wieder frei. Das Auschecken erfolgt immer für den gesamten Tisch, d.h. alle Gäste an einem Tisch checken gemeinsam aus. Wir gehen davon aus, dass die an einem Tisch sitzenden Gäste als Gruppe handeln und dass der Gast, der auscheckt, dies im Einvernehmen für die gesamte Gruppe tut.

Der Restaurantmanager kann Tische im Softwaresystem hinzufügen oder entfernen. Ein Tisch kann nur entfernt werden, wenn er nicht belegt ist und keine aktiven Reservierungen hat.

Ein Gast kann eine Reservierung für einen bestimmten Tisch erstellen und dabei seinen/ihren Namen, die gewünschte Uhrzeit und die Gruppengröße angeben. Der Reservierung-Zeitpunkt muss in der Zukunft liegen. Die Gruppengröße darf die Sitzplatzkapazität des Tisches nicht überschreiten. Ein Tisch ist ab dem Reservierung-Zeitpunkt für 90 Minuten blockiert – innerhalb dieses Zeitfensters sind keine überlappenden Reservierungen für denselben Tisch erlaubt. (Der Einfachheit halber berücksichtigen wir keine Öffnungszeiten. Wir gehen davon aus, dass das Restaurant 24/7 geöffnet ist und Reservierungen für jeden beliebigen Zeitpunkt in der Zukunft erstellt werden können.)

Eine neu erstellte Reservierung ist aktiv. Wenn der Gast am reservierten Tisch mit der Reservierung-Nummer eincheckt, wird die Reservierung bestätigt. Der Gast kann eine aktive Reservierung jederzeit stornieren, eine bereits bestätigte jedoch nicht. (Das bedeutet, dass eine Reservierung nicht mehr storniert werden kann, wenn die Gäste bereits am Tisch sitzen.) Wenn der Gast nicht innerhalb von 30 Minuten nach dem Reservierung-Zeitpunkt am Tisch eincheckt, gilt die Reservierung als „No Show” und der Tisch wird wieder verfügbar.

Ein Gast kann auf zwei Arten an einem Tisch einchecken: ohne Reservierung (Walk-in) oder mit Reservierung. Ein Walk-in ist nur möglich, wenn ein freier Tisch vorhanden ist. Beim Walk-in wird ein Tisch ab dem Eincheck-Zeitpunkt immer für 90 Minuten blockiert. Daher ist ein Walk-in-Check-in nur möglich, wenn für diesen Tisch innerhalb der nächsten 90 Minuten keine aktive Reservierung besteht. Wenn die Gruppe fertig ist, checkt einer der Gäste aus. Danach gilt der Tisch als wieder frei. Das Auschecken ist nur erlaubt, wenn keine offenen Bestellungen für den Tisch vorliegen.

Das System erfasst Gäste nur als temporäre Sitzungsinformation. Wenn der Gast am Tisch eincheckt, erhält er/sie eine temporäre ID in der Datenbank, damit Bestellungen diesem bestimmten Gast an diesem bestimmten Tisch zugeordnet werden können. Es gibt jedoch keinen Namen oder zusätzliche Informationen (zumindest in diesem frühen Implementierungsstand unseres Systems). Gäste müssen sich auch nicht in der App registrieren, um das Restaurant zu besuchen oder eine Reservierung zu erstellen. Wenn der Gast vom Tisch auscheckt, wird seine/ihre Identität wieder aus dem System gelöscht.

Das Restaurant bietet eine Anzahl von Gerichte an. Jedes Gericht hat einen Namen, eine Beschreibung, einen Preis und ein Kennzeichen, ob für die Zubereitung ein Ofen benötigt wird. Der Name darf nicht leer sein, und der Preis muss positiv sein. Ein Gericht kann vom Manager aktiviert oder deaktiviert werden, wodurch seine Verfügbarkeit auf der Speisekarte umgeschaltet wird. Ein neu hinzugefügtes Gericht ist standardmäßig verfügbar. Nur verfügbare Gerichte können bestellt werden.

Ein eingecheckter Gast kann eine Bestellung für ein einzelnes verfügbares Gericht an seinem Tisch aufgeben. Die Bezahlung einer Bestellung muss sofort erfolgen (über die App). Die Zahlung liegt jedoch für diesen Meilenstein außerhalb des Umfangs – wir gehen davon aus, dass die Zahlung immer erfolgreich ist. Wenn eine Bestellung aufgegeben wird, beginnt die Küche mit der Zubereitung des Gerichte. Wenn das Gericht fertig ist, ruft die Küche die Tischnummer aus. Der Gast, der das Gericht bestellt hat, holt es ab. Es gibt keine Kellner, kein Servieren und keine Kontrollen – das läuft auf Vertrauensbasis, dass der richtige Gast das richtige Gericht abholt. Wenn der Gast das Gericht abgeholt hat, ist die Bestellung abgeschlossen.

Fachliches Datenmodell

Machen Sie das fachliche Datenmodell für das Restaurant-Fallbeispiel. Sie können dafür die UML-Klassendiagramme verwenden, die wir in den Videos besprochen haben. Interessant sind Klassen und Attribute sowie die Multiplizitäten der Assoziationen.

Statusmodell für “Bestellung”

Statusmodelle sind eine sehr gute Hilfe, um die Geschäftslogik zustandsbasiert umzusetzen. Wir schauen uns drei wesentliche Geschäftsobjekte für das Restaurantfallbeispiel an. Den Anfang macht die Bestellung eines Gerichts.

Statusmodell für “Reservierung”

Welche Zustände kann eine Reservierung für einen Tisch einnehmen?

Statusmodell für “Tisch”

Jetzt für die Zustände, die ein Tisch im Restaurant einnehmen kann. Achtung, es ist ein Unterschied, ob man sich per Reservierung oder per Walk-in sich an den Tisch setzt.