CPSA-F · Praktische Übung · Aufgabe 1

Broken Wings – eReservation-System

Lösungsvorschlag zu den Teilaufgaben 1.01 bis 1.07: Anforderungen, Einsatz, OOA-Modell, Datenmodell, Kontextsichten, Architektur und Persistenz. Alle Diagramme liegen zusätzlich einzeln als publizierte Diagramme auf MZP vor (Links unter den Abbildungen).

1.01 Anforderungen und Architekturziele

Funktionale Anforderungen

IDAnforderungArt
F-1Flüge (eine Linie München–Timbuktu und zurück, ein Flugzeugtyp, mehrmals täglich) verwalten; Flug identifiziert über Flugnummer, eindeutig je Tag.Muss
F-2Passagiere reservieren einen Flug; das System vergibt und bestätigt eine Reservierungsnummer.Muss
F-3Eine Reservierung wird durch Ticketkauf zur festen Buchung.Muss
F-4Sitzplatzreservierung bei der Reservierung oder nachträglich.Muss
F-5Flüge einem Flugsteig zuordnen.Muss
F-6Check-in vor Abflug inkl. Aufgabe von Gepäckstücken; Bordkarte ausstellen.Muss
F-7Vielfliegerprogramm: geflogene Kilometer je Teilnehmer führen und gutschreiben.Muss
F-8Reservierung stornieren, Ticket erstatten.Kann
F-9Benachrichtigung per E-Mail/SMS (Bestätigung, Gate-Änderung).Kann
F-10Online-Check-in über Web/App; Meilenstand und Prämien einsehen.Kann
F-11Warteliste bei ausgebuchtem Flug.Kann

Nicht-funktionale Anforderungen / Qualitätsziele

IDQualitätsmerkmal (ISO 25010)Szenario / MessgrößeArt
Q-1Funktionale KorrektheitKein Sitzplatz wird doppelt vergeben, keine Reservierungsnummer doppelt; auch bei parallelen Zugriffen.Muss
Q-2Zuverlässigkeit / VerfügbarkeitReservierung und Check-in rund um die Uhr, ≥ 99,5 % im Monat; Wiederanlauf (RTO) ≤ 30 min, kein Datenverlust bestätigter Buchungen (RPO ≈ 0).Muss
Q-3PerformanceReservierung und Check-in: 95 % der Anfragen < 2 s bei 100 gleichzeitigen Nutzern.Muss
Q-4Sicherheit / DatenschutzAuthentifizierte Mitarbeiter, TLS-Transport, DSGVO-konforme Personendaten, keine Kartendaten im System (Tokenisierung beim Zahlungsdienst).Muss
Q-5BenutzbarkeitReservierung in ≤ 5 Interaktionsschritten; Check-in-Bedienung ohne Schulung.Muss
Q-6Änderbarkeit / WartbarkeitNeuer Zahlungsdienst oder neues Flughafensystem ohne Änderung der Domäne anbindbar (≤ 5 Personentage).Muss
Q-7InteroperabilitätStandardformate der Luftfahrt (IATA) für Gepäck- und Flugdaten.Kann
Q-8SkalierbarkeitErweiterung auf mehrere Linien/Flugzeugtypen ohne Neuentwurf.Kann

Abgrenzungskriterien (Nicht-Ziele)

Architekturziele

  1. Konsistenz vor Verfügbarkeit bei Buchungen (Q-1): keine Doppelvergabe, transaktionale Sicherheit.
  2. Hohe Verfügbarkeit und Datensicherheit (Q-2, Q-4).
  3. Einfachheit und Angemessenheit: eine Linie rechtfertigt keinen Microservice-Zoo.
  4. Austauschbarkeit der Nachbarsysteme über klare Schnittstellen (Q-6).

Randbedingungen (Annahmen)

Betrieb im eigenen/gemieteten Rechenzentrum, Java/Spring-Know-how im Team, Anbindung an vorhandene Flughafensysteme über vorgegebene Schnittstellen (Standardprotokolle), Einhaltung DSGVO.

1.02 Einsatz

Anwendungsbereiche und Zielgruppe

Fluggesellschaft „Broken Wings“: Buchung, Sitzplatzvergabe, Abfertigung (Check-in, Gepäck) und Vielfliegerverwaltung für die Linie München–Timbuktu. Zielgruppen: Passagiere (Endkunden), Check-in-Personal am Flughafen, Flugdisposition/Verwaltung der Airline, Vielflieger-Teilnehmer.

Betriebsbedingungen

AspektAusprägung
Physikalische UmgebungServer im Rechenzentrum (klimatisierter Serverraum); Client-Seite: Büro/Call-Center, Flughafenhalle (Check-in-Schalter, Kiosk, belebt, wechselnde Beleuchtung), Endgeräte der Passagiere unterwegs (Smartphone, Browser).
BetriebszeitServer 24×7 (Buchungen aus allen Zeitzonen); Check-in-Schalter während der Abfertigungszeiten (ca. 3 h vor jedem Abflug); Wartungsfenster nachts mit Ankündigung.
BeaufsichtigungServer unbeaufsichtigt mit automatischem Monitoring und Alarmierung (Bereitschaft); Schalter beaufsichtigt durch Personal; Kiosk-Terminals teilbeaufsichtigt (Fernwartung).
NetzInternet (Passagiere), VPN/Standleitung zu Flughäfen; Verbindungsabbruch am Schalter muss überbrückbar sein (Retry).

Beteiligte Rollen

RolleTypAufgaben / Interesse
PassagierBenutzerReservieren, Ticket kaufen, Sitzplatz wählen, Check-in, Stornieren
VielfliegerBenutzer (Spezialisierung)Zusätzlich: Meilenstand einsehen, Meilen erhalten
Check-in-MitarbeiterBenutzerCheck-in durchführen, Gepäck annehmen, Bordkarte ausgeben
FlugdisponentBenutzerFlüge anlegen, Flugsteige zuweisen, Flug abschließen
Systemadministrator / BetriebBetreiberBetrieb, Backup, Monitoring, Rollen- und Rechtevergabe
Zahlungsdienst, Flughafen-Betriebssystem, Gepäcksystem, Mail-/SMS-GatewayNachbarsystemesiehe Kontextsicht 1.05
Geschäftsleitung / Product OwnerStakeholderKosten, Nutzen, Kundenzufriedenheit
DatenschutzbeauftragterStakeholderDSGVO-Konformität der Passagierdaten
Entwicklungsteam / ArchitektStakeholderVerständlichkeit, Änderbarkeit

1.03 OOA-Modell

(a) Use Cases

Aus den Leistungsmerkmalen ergeben sich elf Use Cases, auf zwei Diagramme verteilt (Passagier-/Buchungssicht, Abfertigungs-/Betriebssicht).

Use-Case-Diagramm Passagier: Flug reservieren, Ticket kaufen, Sitzplatz reservieren, Reservierung stornieren, Meilenstand einsehen
Abb. 1: Use Cases Passagier und Vielflieger · auf MZP öffnen
Use-Case-Diagramm Abfertigung: Check-in, Gepäck, Flug planen, Flugsteig zuweisen, Flug abschließen, Meilen gutschreiben
Abb. 2: Use Cases Abfertigung und Flugbetrieb · auf MZP öffnen
UCNameAkteurKurzbeschreibung
UC-1Flug reservierenPassagierFlug wählen, Reservierungsnummer erhalten
UC-2Ticket kaufenPassagier, ZahlungsdienstReservierung wird zur festen Buchung (include: Zahlung)
UC-3Sitzplatz reservierenPassagierExtend zu UC-1, auch nachträglich möglich
UC-4Reservierung stornierenPassagierFreigabe von Platz und Sitz
UC-5Meilenstand einsehenVielfliegerGesamtkilometer anzeigen
UC-6Check-in durchführenPassagier, MitarbeiterTicket prüfen, Bordkarte ausstellen
UC-7Gepäck aufgebenPassagier, MitarbeiterExtend zu UC-6, Gepäckstücke erfassen
UC-8Flug planenFlugdisponentFlug mit eindeutiger Flugnummer je Tag anlegen
UC-9Flugsteig zuweisenFlugdisponentFlug einem Flugsteig zuordnen
UC-10Flug abschließenFlugdisponentFlug als durchgeführt markieren (include UC-11)
UC-11Meilen gutschreibenSystemStreckenkilometer allen eingecheckten Vielfliegern gutschreiben

(b) Klassendiagramm mit Design Patterns

Das Klassenmodell ist wegen der Lesbarkeit in drei Diagramme geteilt: Domänenkern, Check-in/Gepäck und Pattern-Sicht.

Klassendiagramm Kern: Flug, Flugsteig, Passagier, Vielflieger, Reservierung, Ticket, Sitzplatzreservierung
Abb. 3: Domänenkern · auf MZP öffnen
Klassendiagramm Check-in: Passagier, Ticket, CheckIn, Bordkarte, Gepäckstück, Flug
Abb. 4: Check-in und Gepäck · auf MZP öffnen
Klassendiagramm Patterns: Facade, State, Repository
Abb. 5: Design Patterns · auf MZP öffnen

Gewählte Patterns und Begründung

PatternEinsatzBegründung
StateReservierung mit Reserviert, Gebucht, StorniertDie Reservierung hat einen Lebenszyklus mit statusabhängigem Verhalten (Ticketkauf nur bei „reserviert“). Statt if/switch-Kaskaden sind Übergänge lokal und erweiterbar.
FacadeReservierungsServiceEinheitlicher Einstieg für UI/API, versteckt Domänenobjekte, Transaktionsgrenze, geringe Kopplung.
Repository (DAO)ReservierungRepository + SQL-ImplementierungEntkoppelt Domäne von der Datenbank (siehe 1.07), Testbarkeit mit In-Memory-Variante.
Observer / Domain EventsEreignis FlugAbgeschlossen löst Meilengutschrift (UC-11) und Benachrichtigung ausLose Kopplung zwischen Flugbetrieb, Vielfliegerprogramm und Benachrichtigung; neue Reaktionen ohne Änderung des Senders.
StrategyMeilenberechnung (Streckenkilometer, ggf. Statusbonus)Regeln des Vielfliegerprogramms ändern sich häufig und sind austauschbar.
GeneralisierungVielflieger als Spezialisierung von PassagierNur Teilnehmer führen ein Kilometerkonto. Alternative Rolle/Komposition ist denkbar, hier wegen Einfachheit gewählt.

1.04 Datenmodellierung

Beschreibungstechnik: relationales Schema in ER-Notation (Tabellen mit PK/FK/UQ, Fremdschlüsselkanten mit Löschregel).

Begründung: Die Daten sind stark strukturiert und beziehungsreich (Flug – Reservierung – Ticket – Check-in – Gepäck). Das ER-/relationale Modell macht Schlüssel, Kardinalitäten und Integritätsbedingungen (z. B. eindeutige Flugnummer je Datum, eindeutiger Sitz je Flug) explizit und ist direkt in DDL überführbar. Es ergänzt das UML-Klassenmodell um die persistenzrelevanten Details (Schlüssel, Constraints), die dort bewusst fehlen.

Datenmodell Teil 1: FLUGSTEIG, FLUG, RESERVIERUNG, PASSAGIER, VIELFLIEGER
Abb. 6: Datenmodell, Stammdaten und Reservierung · auf MZP öffnen
Datenmodell Teil 2: RESERVIERUNG, SITZPLATZ_RESERVIERUNG, TICKET, CHECKIN, GEPAECKSTUECK
Abb. 7: Datenmodell, Buchung, Check-in, Gepäck · auf MZP öffnen

Wesentliche Integritätsregeln

1.05 Systemüberblick: Kontextsicht

Vier Nachbarsysteme sind angenommen: Zahlungsdienst (PSP), Flughafen-Betriebssystem (Gate, Flugstatus), Gepäcksystem (BHS) und Mail-/SMS-Gateway. Die Wahl der Diagramme: Logischer Kontext als C4-Kontextdiagramm (System als Black Box, Akteure und Datenflüsse), physischer Kontext als Komponenten-/Architekturdiagramm mit Format und Protokoll an jeder Kante, Verteilungskontext als UML-Verteilungsdiagramm mit Zonen und Kanälen.

Logischer Kontext

Logischer Kontext des eReservation-Systems
Abb. 8: Logischer Kontext · auf MZP öffnen

Begründung: Ein Kontextdiagramm zeigt das System als Black Box und lenkt den Blick auf welche fachlichen Daten mit wem ausgetauscht werden; jede Kante trägt die logischen Daten, Technik bleibt außen vor.

Physischer Kontext

Physischer Kontext: Formate und Protokolle
Abb. 9: Physischer Kontext · auf MZP öffnen
SchnittstelleWasFormatProtokoll / Medium
Passagier-ClientReservierung, Ticket, Sitz, Online-Check-inJSON (OpenAPI-spezifiziert)HTTPS/REST über Internet
Check-in-TerminalCheck-in, Gepäck, Bordkarte (Barcode IATA BCBP)JSONHTTPS/REST, mTLS, VPN
Admin-UI DispositionFlüge, FlugsteigeJSONHTTPS/REST, OIDC-Token
ZahlungsdienstZahlungsauftrag/-bestätigungJSON, Kartendaten nur als TokenHTTPS/REST, TLS 1.2+
Flughafen-BetriebssystemFlugsteig, Flugstatus, geflogene kmXML (IATA AIDX)AMQP über TLS, Message-Queue
GepäcksystemGepäckdaten je GepäckstückIATA Baggage Service Message (Type B)Message-Queue/MQ
Mail-/SMS-GatewayBestätigung, Gate-ÄnderungMIME / JSONSMTP bzw. HTTPS

Verteilungskontext

Verteilungskontext mit Zonen Internet, Rechenzentrum, Flughafen
Abb. 10: Verteilungskontext · auf MZP öffnen

Begründung: Das Verteilungsdiagramm zeigt Standorte, Netzgrenzen und Kanäle (Internet, VPN) und macht Vertrauensgrenzen sichtbar; dort sind Sicherheits- und Verfügbarkeitsmaßnahmen (TLS, VPN, Standby-Datenbank) verankert. Mail-/SMS-Gateway ist aus Platzgründen im Diagramm weggelassen (Standard-Ausgangskanal HTTPS/SMTP).

1.06 Softwarearchitektur

Schichtenarchitektur mit Ports und Adaptern
Abb. 11: Schichten und Ports/Adapters · auf MZP öffnen

Architekturstil

Modularer Monolith in Schichten, Domänenkern nach Ports-and-Adapters (Hexagonal). Ein Deployment-Artefakt, intern nach fachlichen Modulen geschnitten (Flugplan, Reservierung/Buchung, Abfertigung, Vielflieger).

EntscheidungBegründungAlternative und Verwerfungsgrund
Modularer MonolithEine Linie, überschaubare Last und kleines Team (Architekturziel „Einfachheit“). Transaktionale Konsistenz ohne verteilte Transaktionen (Q-1). Einfacher Betrieb.Microservices: hoher Betriebs- und Konsistenzaufwand ohne Skalierungsbedarf.
Schichten (Präsentation, Anwendung, Domäne, Infrastruktur)Bekannt, verständlich, trennt Verantwortlichkeiten; Abhängigkeiten laufen nur nach unten, Domäne bleibt UI-frei.Reine MVC-Struktur: Fachlogik würde in Controllern verstreut.
Ports and AdaptersDomäne definiert Ports (Repository, Zahlung, Gate); Datenbank, PSP, AODB, BHS sind austauschbare Adapter (Q-6, Testbarkeit mit Mocks). Dependency Inversion.Direkte Aufrufe externer APIs aus der Domäne: starke Kopplung.
Facade / Application ServiceEine Transaktions- und Sicherheitsgrenze je Use Case.–
State, Strategy, Observer/Eventssiehe 1.03, für Lebenszyklus, Meilenregeln und lose Kopplung.–
QuerschnittskonzepteOptimistisches Locking plus Unique-Constraint (Sitzvergabe), Idempotenz bei Zahlung und Meilen, Fehlerbehandlung mit Retry und Outbox für Nachrichten an Nachbarsysteme, Authentifizierung per OIDC, rollenbasierte Autorisierung, strukturiertes Logging, Monitoring.–

Die Verteilung orientiert sich am Verteilungskontext (Abb. 10): zwei Application-Server hinter einem Load Balancer, Datenbank mit Standby. Ein Wechsel auf eine Aufteilung in Services bleibt über die Modulgrenzen später möglich.

1.07 Persistenz

Empfehlung: relationale Datenbank (z. B. PostgreSQL) mit Zugriff über Repository/DAO, JPA/Hibernate als OR-Mapper, Schemaverwaltung mit Flyway/Liquibase.

KriteriumRelationale DB (gewählt)Dokumenten-DB / NoSQLDateien / In-Memory
Konsistenz (Q-1)ACID-Transaktionen, Unique-Constraints und FK sichern Sitz- und NummernvergabeMeist schwächere Mehrdokument-TransaktionenNicht tragfähig
DatenstrukturStark vernetzt, fest strukturiert → passtEher für variable Strukturen–
AbfragenAd-hoc-SQL (Freie Plätze, Meilen, Auswertungen)Je nach Modell aufwändig–
Verfügbarkeit (Q-2)Streaming-Replikation, Standby, PITR-Backup, bekannte BetriebsmusterGut skalierbar, hier nicht nötig–
Skalierung (Q-3, Q-8)Datenmenge klein bis mittel (eine Linie) → problemlos vertikalVorteil erst bei sehr hohen Lasten–
Kosten / Know-howWeit verbreitet, Open Source, geringe LizenzkostenZusätzliches Know-how–