Aus einem einfachen Anforderungstext wird eine Klassenstruktur definiert und in Code überführt.
In dieser Übung geht es darum, aus einem einfachen Anforderungstext eine Klassenstruktur zu definieren und diese in Code zu überführen.
An einer Hochschule sollen digitale Klausuren ermöglicht werden. Das ist der Anforderungstext dazu:
Eine digitale Klausur wird mit einem Titel, einem Aufgabentext und einem Datum erstellt. Die
Klausur ist dann sofort zur Anmeldung für Studenten offen. Studenten können sich bis eine Woche
vor der Klausur an- und abmelden, danach nicht mehr. Studenten haben einen Namen und eine
Matrikel-Nummer.
Am Tag der Klausur wird diese manuell gestartet. Die Studierenden können nun eine Lösung
hochladen, vorausgesetzt, sie sind tatsächlich für die Prüfung angemeldet. Eine Lösung besteht
aus einem langen Text. Es ist möglich, mehrere Lösungen hochzuladen, nur die letzte wird
gespeichert. Nach 2h wird die Klausur manuell beendet, von nun an können die Studenten
keine Lösungen mehr hochladen. Solange keine Lösung korrigiert ist, kann die Klausur aber
noch einmal geöffnet werden, um mehr Zeit zu gewähren.
Nun beginnt die Korrekturphase. Für jede Lösung wird eine Note gespeichert. Sobald alle
Lösungen korrigiert sind, gilt die Klausur automatisch als abgeschlossen und die Noten werden
an das Noten-Management-System übermittelt.
Für diese Aufgabenstellung soll nun Code geschrieben werden. Dabei sind noch folgende Randbedingungen zu beachten:
Nehmt euch 10 min Zeit, um die Aufgabe zu diskutieren. Wenn ihr euch das Video zur Textanalyse angesehen haben, dann macht es bei diesem Text genauso: Streicht die Hauptwörter an, die Klassen in eurer Software sein können (beispielsweise in gelb), und dann mögliche Attribute dieser Klassen in grün.
Dann nehmt noch einmal 10 min und macht ein Domänenmodell daraus. Es kann ein UML-Diagramm sein,
muss aber nicht - es geht auch einfacher. Macht Klassen als Kästchen und Beziehungen als Pfeile dazwischen.
Pfeil von A
nach B
heißt: A kennt B, also hat ein Property vom Typ B, oder Methodenparameter vom Typ B.
Das Video zum fachlichen Datenmodell
erklärt genauer, wie man das machen kann.
Am einfachsten geht das mit dem Domänenmodell in Miro oder einem Tool wie diagrams.net (a.k.a. draw.io).
Hier ist eine einfache Textanalyse (gelb = Entities, grün = Attribute). Der ausführliche Prozess ist in dem entsprechenden Video erklärt, wenn man alle Details und Aspekte einmal durchspielen will.
Daraus kann man das folgende Domain-Modell erstellen.
Genau genommen sind das mehrere Schritte auf einmal. In den Videos ist dieser Prozess so aufgeteilt:
Will man das Ganze als UML darstellen, dann ergibt sich folgendes Bild:
Jetzt wird das Domänenmodell implementiert. Leider haben wir nicht die Zeit, dass ihr selbst eine Implementierung machen könnt. Aber wir werden das einmal live coden (oder zumindest eine erste Struktur anlegen), dann könnt ihr im Nachhinein dort nachschauen. Die Implementierung ist dann in folgendem Repo zu finden: https://gitlab.com/archi-lab/architecture-and-coding/solutions/exercise-digital-exams