Softwaretechnik 2 (ST2), SS23
Die Veranstaltung ST2 versucht Sie mit grundlegenden Überlegungen beim Design und der Implementierung von komplexen Softwaresystemen vertraut zu machen. Ein besonderer Fokus liegt dabei auf den Konzepten des Domain-Driven Designs (DDD) und deren beispielhafter Umsetzung im Backend mittels Spring Boot.
- Studiengang und Modulbeschreibung
-
Informatik Bachelor
(siehe auch Modulbeschreibung auf der Studiengangs-Seite)
- Zeitraum und zeitliche Organisation der Veranstaltung
-
27.03.2023 - 14.07.2023. Organisiert als 5 Ganztages-Workshops (Montags 10:00 - 17:00). Genaue Daten und Inhalte stehen weiter unten.
- Ort der Veranstaltung
- Die Veranstaltung findet in einem Hybrid-Format statt. Bitte schauen Sie bei dem jeweiligen Zeitschlitz oder Workshoptag nach (siehe unten auf dieser Seite), ob dieser online oder in Präsenz stattfindet. Falls auf dieser Seite keine Angaben sind, prüfen Sie bitte die sonstige Kommunikation (z.B. Discord).
-
-
Raum:
0502 (Gebäude LC6, gegenüber dem Haupteingang der Schwalbe-Arena), siehe auch
detaillierte Wegbeschreibung
-
Videokonferenz-Link:
https://th-koeln.zoom.us/j/88910722611?pwd=cXd0RzZMTzBrR0xZRU9hRnp5MVdQQT09
(nur in Ausnahmefällen und wenn explizit vorher für den Tag kommuniziert)
- ILIAS/ILU-Kurs zur Veranstaltung
- https://ilias.th-koeln.de/ilias.php?ref_id=1471469&cmdClass=ilrepositorygui&cmdNode=wc&baseClass=ilrepositorygui
- Praktikum
- Das Praktikum wird über eine Folge von personalisierten und individuell für Sie generierten Git-Repos durchgeführt. Für jeden Meilenstein erhalten Sie ein neues Repo von uns. Jede*r Teilnehmer*in muss eine eigenständige Bearbeitung der Praktikumsaufgabe durchführen. Wir ermutigen Sie ausdrücklich, Ihre Lösungen in Arbeitsgruppen zu diskutieren. Ein einfaches Copy-Paste von Lösungen (unter Anpassung der Personalisierung) werten wir aber als Täuschungsversuch. Studierende, bei denen wir dieses sehen (und wir haben automatisierte Möglichkeiten, dies zu sehen) werden ohne Vorwarnung vom Praktikum ausgeschlossen. Das gilt sowohl für die Person, die kopiert hat, wie auch für die-/denjenigen, die/der die Lösung zur Verfügung gestellt hat.
-
Anmeldung
zum Praktikum
-
Bitte werden Sie Mitglied
in dieser ILIAS/ILU-Gruppe
.
(liegt
in diesem ILIAS/ILU-Kurs).
Die Deadline ist 29.03.2023.
Bitte denken Sie daran, dass Sie sich zusätzlich noch über PSSO zur Prüfung anmelden müssen. Die Anmeldefristen dafür finden Sie auf den F10-Informationsseiten der TH Köln.
- Git-Repo für das Praktikum
-
https://git.archi-lab.io/.
Bitte loggen Sie sich unbedingt vorab einmal mit Ihrer campusId dort ein. Sonst kann das Repo Ihnen nicht automatisch zugewiesen werden. (Achtung, wir sind auf einen neuen Gitlab-Server umgezogen. Wenn Sie die Veranstaltung vor einiger Zeit absolviert haben, müssen Sie sich erneut einloggen.)
- Discord-Server für schnelle Kommunikation
-
Discord hat sich als sehr effektive Plattform für den Informationsaustausch, Diskussionen und Fragen an Lehrende/Betreuer:innen erwiesen. Deshalb sollten Sie dem ArchiLab-Discord-Server beitreten unter
https://discord.gg/YYNYb5whU8.
Navigieren Sie zum Channel
#rollenzuweisung
und klicken Sie auf
st2
.
Die entsprechenden Kanäle zur Veranstaltung werden anschließend für Sie freigeschaltet.
- Youtube-Kanal
-
Für diese Veranstaltung sind Lehrvideos auf Youtube verfügbar. Abonnieren Sie dafür am besten den Kanal
ArchiLab.
Für die Videos zu dieser Veranstaltung gibt es eine
Playlist.
(Disclaimer - die Videos auf diesem Kanal sind nicht monetarisiert. Weder ich persönlich noch das Labor ArchiLab verdienen damit Geld. Wir nutzen YouTube vor allem deshalb, weil es für Studierende ein leicht zugänglicher Kanal ist. Außerdem bekommen wir als Labor an der TH Köln so auch Sichtbarkeit nach außen, was z.B. bei dem Einwerben von externen Gastvorträgen hilft.)
- Script
-
Für diese Veranstaltung ist ein Script verfügbar
(in den Videos verwendete Folien als PDF, mit abschnittsweisen Links auf das entsprechende Video).
Learning Outcome
Im ST2-Praktikum wird großer Wert darauf gelegt, das theoretische Wissen auch praktisch umzusetzen. Folgendes Learning Outcome liegt der Veranstaltung zugrunde - das sollten Sie am Ende können, wenn Sie für sich das Beste aus der Veranstaltung herausholen.
Als SW-Entwickler:in oder SW-Architekt:in kann ich ein Softwaresystem für eine gegebene Aufgabenstellung iterativ konzipieren und mit gängigen Tools implementieren,
indem ich ...
- passende Prinzipien, Patterns und Architekturstile für mein IT-System auswähle, wie etwa die SOLID-Prinzipien und die Regeln des Clean Code, und dann eine gängige Schichtenarchitektur auswähle,
- ein Rich Domain Model nach dem Ansatz des Domain-Driven-Design (DDD) in Building Blocks konzipiere und mit Hilfe von Spring JPA umsetze,
- meine Domäne(n) in Aggregates strukturiere,
- diese Aggregates als REST Level 2 API für die Kommunikation mit Umsystemen und Clients verfügbar mache, und dies mit Spring Web MVC umsetze,
damit ich eine nachhaltig wartbare Software mit passender, langlebige und änderungsfähiger Architektur erstellt habe.
Regeln für das Praktikum
Für das Praktikum gelten die nachfolgenden Regeln.
Zusammenarbeit ist gewollt, simples Copy-Paste ist ein Täuschungsversuch
Jede*r Teilnehmer*in muss eine eigenständige Bearbeitung der Praktikumsaufgabe durchführen.
Wir ermutigen Sie ausdrücklich, Ihre Lösungen in Arbeitsgruppen zu diskutieren. Ein einfaches
Copy-Paste von Lösungen (unter Anpassung der Personalisierung) werten wir aber als
Täuschungsversuch.
Wir haben die Möglichkeit, die Lösungen automatisiert zu vergleichen und “merkwürdige” Ähnlichkeiten zu
erkennen. Das Tooling vergleicht Repos paarweise und deckt Code-Ähnlichkeiten mit großer Zuverlässigkeit auf.
Ein solches Kopieren von Lösungen ist ein Betrugsversuch und zieht einen sofortigen Ausschluss aus dem
Praktikum nach sich - und zwar sowohl für den “Nehmer” wie auch für den “Spender” einer solchen Lösung.
Was geht?
Wir möchten ausdrücklich, dass Sie über Lösungen diskutieren und diese auch gern gemeinsam erarbeiten.
Das Folgende ist also ok:
- Das Modell, die Klassenstruktur und einen Algorithmus gemeinsam überlegen
- Fragen diskutieren
- Das Ergebnis dann jede/r für sich implementieren
In diesem Fall gibt unser Tooling keinen Match aus, weil Code schreiben so individuell wie Handschrift ist.
Ähnliche Klassenstrukturen sind ok, die werden nicht als Match gewertet, wenn der Code erkennbar einzeln geschrieben wurde.
Was geht NICHT?
- Arbeitsteilig arbeiten (ich mache Service A, und du machst Service B, und dann tauschen wir
die Klassen aus und passen die Individualisierung an)
- Gemeinsam im Pair Programming-Modus eine Lösung entwickeln und dann die Individualisierung anpassen
(Pair Programming ist ein guter und in der beruflichen Praxis oft genutzter Weg, um Software zu
entwickeln. Im Beruf machen das aber Entwickler:innen, die ihre Qualifikation schon praktisch bewiesen haben.
Hier möchten wir das bewusst ausschließen, damit jede/r von Ihnen sich einmal daran gewöhnt, eigenständig
komplexen Code zu schreiben.)
- ganze Lösungen kopieren und die Individualisierung anpassen (oder Lösungen weitergeben).
So etwas findet unser Tooling.
KI-Tools wie ChatGPT und Github Co-Pilot stellen gerade eine Disruption der Arbeitsweise von
Softwareentwickler*innen dar. Sie stellen mächtige Werkzeuge dar, die es ermöglichen, Code
wesentlich schneller zu schreiben. Trotzdem sind sie noch nicht so weit, dass sie die Arbeit
von Softwareentwickler*innen ersetzen können. Sie müssen also weiterhin den generierten Code
lesen und verstehen, um ihn zu verbessern. Außerdem müssen Sie die Konzepte kennen, die dem
generierten Code zugrunde liegen.
Die entsprechenden Kompetenzen kann man anhand der sogenannten
Bloom’s Revised Taxonomy einordnen.
Die Praktikumsaufgaben werden zukünftig mit einer Markierung versehen, welcher Stufe der Taxonomie
sie entsprechen. Damit Sie sich die “höheren” Kompetenzen wie etwa “Analyse” aneignen können,
müssen Sie die entsprechenden Aktivitäten auch selbst und eigenständig durchgeführt haben.
Sie dürfen diese
Tools im Praktikum auf eigene Gefahr nutzen. “Auf eigene Gefahr” bedeutet, dass wir die Nutzung
dieser Tools im Praktikum nicht kontrollieren oder einschränken werden. Wenn Sie diese Tools nutzen,
müssen Sie also die nötigen Kompetenzen mitbringen, um die generierten Lösungen zu verstehen und
sinnvoll einzusetzen.
In der Klausur wird eine Nutzung solcher Tools allerdings NICHT möglich sein (siehe unten).
Sie müssen also sicherstellen, dass Sie die Aufgabenstellungen des Praktikums auch ohne solche
Tools lösen können.
Langfristiges Ziel muss es sein, solche Tools in der Softwareentwicklung zu nutzen, und ihre
Verwendung zu erlernen. Wir möchten sie also langfristig sowohl im Praktikum wie auch in der
Klausur erlauben. Dafür müssen wir aber Praktikum und Klausur so gestalten können, dass die
“kompetente” Nutzung dieser Tools geprüft werden kann, und man nicht einfach mit “Aufgabe
in den ChatGPT-Prompt pasten” auskommt. In einer zukünftigen Lehrveranstaltung würde ich gern,
wenn es die Kapazitäten hergeben, gezielter auf diese Kompentenzen eingehen und diese KI-Tools auch
aktiv in die Lehre integrieren. Momentan ist das aus diversionen Gründen noch zu früh.
Disclaimer zur Auswertung der Repo-Daten
Wir behalten uns vor, die Daten Ihrer Commits in dieses Repo zur Lernstandskontrolle
sowie - in anonymisierter Form - für die Beforschung der eigenen Lehre (SoTL, Scholarship of Teaching
and Learning) und bei der (Weiter-)Entwicklung von Lehrunterstützungs-Tools zu verwenden.
Bewertung (Klausur)
Die Bewertung von ST2 erfolgt über die ST2-Klausur in der Prüfungsphase in Juli. Die Klausur wird im PC-Pool der Hochschule geschrieben.
Wie gewohnt erhalten Sie für die Klausur ein individualisiertes Repo, das nur Sie selbst und wir sehen können.
Vorher müssen wir Ihre Identität sicherstellen. Im Hörsaal ist das einfach - Kontrolle von MultiCa und
Personalausweis, plus Sichtkontrolle, ob Sie es selbst sind.
Die Klausur ist eine Open-Book-Klausur Closed-Book-Klausur mit Erlaubnis, bestimmte Hilfsmittel zu nutzen. Dazu zählen:
- Eigene Praktikumsmaterialien (z.B. Lösungen, die Sie im Praktikum entwickelt haben)
- Eigene Notizen (Papier oder digital, wenn Sie diese z.B. in Ihrem eigenen Repo angelegt haben)
- Die Materialien aus https://www.archi-lab.io/, allerdings weder die Videos
noch verlinkte Materialien, nur die auf der Seite direkt zugänglichen Materialien
- Noch genauer festzulegende Resourcen zum Nachschauen technischer Details zu Spring (Kandidaten sind Stackoverflow, Baeldung
und/oder die Spring-Dokumentation)
Blockiert und verboten sind:
- Kommunikation mit anderen Personen, z.B. über Discord-Chat, Telefon, SMS, WhatsApp, etc.
- Nutzung von KI-Tools wie z.B. ChatGPT oder Github Co-Pilot
Die KI-Tools sind deshalb verboten, weil sie bei den vergleichsweise kurzen und in sich abgeschlossenen
Klausuraufgaben die Kompetenz-Prüfung von Ihnen als Studierende aushebeln würden. Sollte wir einen Verstoß gegen
diese Regeln feststellen, so ist dies ein Täuschungsversuch im Sinne der Prüfungsordnung. Sie
müssen dann mit den entsprechenden Konsequenzen rechnen.
Inhalte der Klausur
Inhalt und Form der Klausur werden den Meilensteinen M0 - M4 ähneln, allerdings natürlich - wegen der begrenzten
Zeit - in deutlich komprimierter Form. Die Klausur wird aus mehreren Aufgaben bestehen, die Sie in beliebiger
Reihenfolge bearbeiten können. Die Aufgaben werden in sich abgeschlossen sein und bauen nicht aufeinander auf.
Es wird Code in der Klausur zu schreiben sein. Anders als im Praktikum wird der Code aber nicht automatisiert
getestet, sondern manuell von uns bewertet. Es wird vermutlich auch keine vordefinierten Tests in der Klausur
geben. Sie können gern selbst Tests schreiben. Bonuspunkte gibt es dafür (und für andere Extraleistungen) nur,
wenn in der Klausuraufgabe ausdrücklich vermerkt. Ihr Code muss nicht notwendig compilieren, allerdings kann
nicht compilierender Code Abzüge geben. Auch hierfür stehen die Details noch nicht fest, und ich verweise
auf die Aufgabenbeschreibungen in der Klausur.
Sie sollten davon ausgehen, dass alle Inhalte von M0 - M4 vorkommen können. Darüber hinaus werden die
wesentlichen Elemente von ST1 als bekannt und beherrscht vorausgesetzt - es kann also sein, dass Sie
z.B. mit Domain-Modellen (fachlich oder logisch) oder mit Status-Modellen umgehen müssen.
Das kann z.B. folgende Aufgabenstellungen bedeuten (Liste hat keinen Anspruch auf Vollständigkeit):
- Analyse eines Code-Fragments bezüglich Verstöße gegen Clean-Code-Regeln
- Dito für Verstöße gegen SOLID-Prinzipien
- Refactoring eines Code-Fragments, um solche Verstöße zu beheben
- Aufstellen eines einfachen Statusmodells und Umsetzung in Code
- Analyse eines Code-Fragments bezüglich sinnvoller Domain Primitives
- Implementierung von Domain Primitives
- Analyse von Aggregates anhand eines Domain Modells
- Definition von REST-Endpoints
- Festlegung von passenden REST-Returncodes für bestimmte Fehlersituationen
- Implementierung von REST-Endpoints
Workshops
Mon 27.03.2023, 10:00 - 15:30: ST2-Kickoff
Ich stelle Ihnen den Inhalt von ST2 vor und des Praktikums vor. Darüber hinaus wird der erste Meilenstein M0 vorgestellt.
Ort des Workshops
Videokonferenz-Link:
https://th-koeln.zoom.us/j/88910722611?pwd=cXd0RzZMTzBrR0xZRU9hRnp5MVdQQT09
.
Ziel des Tages
Sie kennen die Rahmenbedingungen für ST2 und können mit dem ersten Meilenstein beginnen.
Videoaufzeichnung
Eine Videoaufzeichnung gibt es
hier.
(Passwort: 4t3vj1.L).
Schauen Sie bitte vorab nachfolgende Videos
Agenda
-
10:00 - 11:00:
Organisatorisches
- Zeitplan
- Youtube-Channel
- Discord als präferiertes Kommunikationsforum
- Klausur
- Inhalt der Praktikums-Meilensteine
-
11:00 - 11:45:
Regeln fürs Praktikum (ChatGPT, Github Co-Pilot und die Bloom'sche Taxonomie)
- Neue Möglichkeiten in der Programmierung durch KI
- Was muss ich selbst als Programmierer:in zukünftig können?
- Bloom'sche Taxonomie zur Kennzeichnung von Praktikumsaufgaben
- Regeln für Praktikum und Klausur
-
11:45 - 12:30:
Mittagspause
-
12:30 - 15:30:
Übung: Ein eCommerce-System (Vorbereitung auf M0)
- In dieser Übung bereiten wir schon einmal auf den ersten Meilenstein M0 vor, in dem Sie eine ähnliche Aufgabenstellung bekommen werden. Sie werden ein einfaches eCommerce-System modellieren.
- Sie bearbeiten das in Untergruppen
Aufgabe bis zum nächsten Workshop
Nach dem Workshop bearbeiten Sie bitte
Meilenstein M0.
- In dieser Übung bereiten wir schon einmal auf den ersten Meilenstein M0 vor, in dem Sie eine ähnliche Aufgabenstellung bekommen werden. Sie werden ein einfaches eCommerce-System modellieren.
Mon 24.04.2023, 10:00 - 17:00: Clean Code & SOLID
In diesem Workshop geht es darum, die Clean Code & SOLID Prinzipien anzuwenden und Verstöße zu erkennen, sowie diese zu beheben. Dazu nutzen Sie die aus Videos bekannte Vorgehensweise.
Ort des Workshops
Raum:
0502 (Gebäude LC6, gegenüber dem Haupteingang der Schwalbe-Arena), siehe auch
detaillierte Wegbeschreibung.
Ziel des Tages
Sie können Clean Code und SOLID auf den eigenen Code anwenden.
Videoaufzeichnung
Schauen Sie bitte vorab nachfolgende Videos
Agenda
-
10:00 - 10:15:
Retrospektive zu M0
-
10:15 - 10:45:
Vorstellung von M1
-
10:45 - 11:00:
Wozu Refactoring?
- Kurze Motivation zum Thema Refactoring - wozu brauchen wir das?
- Hier liegen die Folien dazu
-
11:00 - 12:00:
Übung: Refactoring der "Bauzeichner 2.0"-Software aus dem Video nach SOLID und Clean Code
- Das im Video zu den SOLID-Prinzipien vorgestellte Beispiel der "Bauzeichner 2.0"-Software wird in dieser Übung einmal gründlich gefactored - gemäß der Prinzipien von SOLID und Clean Code.
- Wir schauen erst einmal die Checkliste für Clean Code und SOLID an
- Dann stelle ich Ihnen das "Bauzeichner 2.0"-Beispielrepo vor
- Wir machen Schritt 1 der Übung
- Sie bearbeiten einmal selbst das Beispiel
- Dann mache ich ein Live-Refactoring des Beispiels
-
12:00 - 13:00:
Mittagspause
-
13:00 - 13:45:
Schichtenarchitektur und Package-Struktur in der Praxis
- Ich gebe Ihnen einen Inhaltsimpuls zu dem Thema (da gibt es leider noch kein Video zu). Dies ist Motivation dazu, wo eigentlich die Schichtenarchitektur herkommt. Was gehört in welche Schicht? Worauf sollte man achten? Wie sieht eine sinnvolle Packagestruktur für Ihr Praktikumsbeispiel aus?
- Hier gibt's die Folien zu dem Impuls.
-
13:45 - 14:30:
Übung: Refactoring der "Bauzeichner 2.0"-Software aus dem Video nach SOLID und Clean Code
- Das im Video zu den SOLID-Prinzipien vorgestellte Beispiel der "Bauzeichner 2.0"-Software wird in dieser Übung einmal gründlich gefactored - gemäß der Prinzipien von SOLID und Clean Code.
- Wir machen Schritt 2 der Übung, mit dem Refactoring der Package-Struktur
- Abschließend code ich wieder live eine Lösung
-
14:30 - 16:30:
Übung: Refactoring der "Bauzeichner 2.0"-Software aus dem Video nach SOLID und Clean Code
- Das im Video zu den SOLID-Prinzipien vorgestellte Beispiel der "Bauzeichner 2.0"-Software wird in dieser Übung einmal gründlich gefactored - gemäß der Prinzipien von SOLID und Clean Code.
- In den Schritten 3a ... 3c der Übung beschäftigen wir uns mit den SOLID-Prinzipien
- Auch hier gibt es wieder abschließend wieder eine Live-Lösung
Aufgabe bis zum nächsten Workshop
Nach dem Workshop bearbeiten Sie bitte
Meilenstein M1.
- Das im Video zu den SOLID-Prinzipien vorgestellte Beispiel der "Bauzeichner 2.0"-Software wird in dieser Übung einmal gründlich gefactored - gemäß der Prinzipien von SOLID und Clean Code.
Mon 15.05.2023, 12:00 - 16:00: Domain Primitives
Es gibt verschiedene Mittel, um seinen Code so aufzubauen, dass er gut wartbar und leicht verständlich ist. Dazu gehören Domain Primitives (auch "Rich Domain Model" genannt). Das sind domänenspezifische Basisklassen mit Funktionalität und Validierung. Sie refactorn Ihren eigenen Praktikumscode, um passende Domain Primitives zu definieren.
Ort des Workshops
Videokonferenz-Link:
https://th-koeln.zoom.us/j/88910722611?pwd=cXd0RzZMTzBrR0xZRU9hRnp5MVdQQT09
.
Ziel des Tages
Sie wissen, wie sinnvoll gewählte Domain Primitives in Ihrem Code aussehen, und können das in Ihrem eigenen Code nutzen.
Videoaufzeichnung
Schauen Sie bitte vorab nachfolgende Videos
Agenda
-
12:00 - 12:50:
Retrospektive M1
- M1 ist der vermutlich umfangreichste und auch vielleicht anspruchsvollste Meilenstein in ST2. Ich würde daher gern mit Ihnen eine kurze Retrospektive machen.
- Wir nutzen dieses EasyRetro-Board für die Retro
-
13:00 - 14:00:
Offene Fragen zu Clean Code, SOLID, Spring, oder anderen Aspekten aus M1 und M2
- Offene Diskussion in Gruppen
- Sie können schon einmal anfangen, Ihren Code von M1 auf M2 zu refactoren
-
14:00 - 16:00:
Code Review
- Auf Anfrage mache ich schon einmal Code Reviews auf dem Stand von M1 oder dem frisch refactorten Code von M2
- (wenn es keine Freiwilligen gibt, dann picke ich zufällig Kandidaten heraus - es kommt sowieso jeder dran)
- Danach können wir die Ergebnisse in Kleingruppen diskutieren
Aufgabe bis zum nächsten Workshop
Nach dem Workshop bearbeiten Sie bitte
Meilenstein M2.
Mon 05.06.2023, 10:00 - 17:00: Aggregates als REST Level 2 API
Wir beschäftigen uns mit der Frage, was Aggregates sind - Motivation, Definition und Checkliste. In der Folge werden Aggregates genutzt, um REST APIs zu definieren.
Ort des Workshops
Raum:
0502 (Gebäude LC6, gegenüber dem Haupteingang der Schwalbe-Arena), siehe auch
detaillierte Wegbeschreibung.
Ziel des Tages
Sie wissen, wie Sie Aggregates nutzen, um REST APIs zu definieren
Videoaufzeichnung
Eine Videoaufzeichnung gibt es
hier.
(Passwort: qL5rU$p3).
Schauen Sie bitte vorab nachfolgende Videos
Agenda
-
10:00 - 10:45:
Orga und neuer Meilenstein
- geänderter Umgang mit ChatGPT und Github Copilot
- Klausur
- neuer Meilenstein
- Ausstehende Aktualisierung der automatischen Tests (insb. Entity calls Repository, Referenz per UUID statt per Objekt)
- Beta-Feature "Divekit Helper"
-
10:45 - 11:15:
Ü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.
- Gehen Sie in Kleingruppen irgendwohin, wo Sie Ruhe haben (im Raum oder in angrenzenden Räumen, es sollte genug frei sein)
- Diskutieren Sie die Aufgabe miteinander
- anschließend treffen wir uns wieder hier und vergleichen die Ergebnisse
-
11:15 - 12:30:
Übung: REST-API spezifizieren (am Beispiel eines Campus-Management-Systems CAMS)
- In dieser Übung geht es darum, für die in einer vorangegangenen Übung gefundenen Aggregates jeweils ein REST-API zu spezifizieren.
- Gehen Sie in Kleingruppen irgendwohin, wo Sie Ruhe haben
- Diskutieren Sie die Aufgabe miteinander
- anschließend treffen wir uns wieder hier und vergleichen die Ergebnisse
-
12:30 - 13:30:
Mittagspause
-
13:30 - 14:15:
Übung: Aggregates bestimmen (am Beispiel der Firma MadMaxRacing)
- In dieser Übung geht es darum, Aggregates zu identifizieren. Dazu nutzen Sie die aus Videos bekannte Checkliste.
- Wie oben, gehen Sie in Kleingruppen irgendwohin, wo Sie Ruhe haben. Diskutieren Sie die Aufgabe miteinander.
- Anschließend treffen wir uns wieder hier und vergleichen die Ergebnisse.
-
14:15 - 15:30:
Übung: REST-API spezifizieren (am Beispiel MadMax Racing)
- In dieser Übung geht es darum, für die in einer vorangegangenen Übung gefundenen Aggregates jeweils ein REST-API zu spezifizieren.
- Gehen Sie in Kleingruppen irgendwohin, wo Sie Ruhe haben
- Diskutieren Sie die Aufgabe miteinander
- anschließend treffen wir uns wieder hier und vergleichen die Ergebnisse
-
15:30 - 16:00:
Sonstiges
- Sonstige Fragen
- Schauen Sie sich den aktuellen Meilenstein M3 an
- Diskutieren Sie die möglichen Lösungen
- Die ST2-Betreuer sind vor Ort, Sie können Fragen zur Aufgabenstellung stellen
Aufgabe bis zum nächsten Workshop
Nach dem Workshop bearbeiten Sie bitte
Meilenstein M3.
Mon 19.06.2023, 10:00 - 17:00: REST-APIs mit Spring implementieren
Welche Prinzipien sollte man bei der REST-Implementierung einhalten? Wie macht man das in einem Framework wie Spring Boot? Wir machen das anhand von Programmierübungen.
Ort des Workshops
Raum:
0502 (Gebäude LC6, gegenüber dem Haupteingang der Schwalbe-Arena), siehe auch
detaillierte Wegbeschreibung.
Ziel des Tages
Sie wissen, wie Sie REST APIs mit Spring Boot implementieren
Schauen Sie bitte vorab nachfolgende Videos
Agenda
-
10:00 - 17:00:
Übung: REST-API für das "Internship Management System" implementieren
- In dieser Übung geht es darum, ein REST-API mit Hilfe von Spring Boot umzusetzen.
- Ich stelle die Aufgabe kurz vor.
- Organisieren Sie sich anschließend in Kleingruppen, diskutieren Sie die Aufgabe miteinander und schreiben Sie Code
- Für jeden Zwischenschritt treffen wir uns wieder im Hauptraum.
Aufgabe bis zum nächsten Workshop
Nach dem Workshop bearbeiten Sie bitte
Meilenstein M4.
- In dieser Übung geht es darum, ein REST-API mit Hilfe von Spring Boot umzusetzen.
Mon 03.07.2023, 10:00 - 17:00: Fragen zum Stoff und Wiederholung
In Vorbereitung auf die Klausur wiederholen wir den Stoff, der noch unklar ist
Ort des Workshops
Raum:
0502 (Gebäude LC6, gegenüber dem Haupteingang der Schwalbe-Arena), siehe auch
detaillierte Wegbeschreibung.
Agenda
-
10:00 - 10:30:
Allgemeine Hinweise zur Klausur
- Ich stelle kurz vor, was in der Klausur zu erwarten ist (siehe auch Inhalte der Klausur).
- Sie können alle Fragen zur Klausur loswerden, die Sie noch haben.
-
10:30 - 11:00:
Fragen zum Stoff
- Die Discord-Umfrage zu offenen Fragen hat das nachfolgende Bild ergeben.
- Clean-Code-Regeln (4)
- SOLID-Prinzipien allgemein (0)
- Auflösen von Zykeln mit DIP (18)
- Domain Primitives (3)
- Aggregates (0)
- REST-Design (2)
- REST-Implementierung mit Spring (24)
-
11:00 - 11:45:
Wiederholung - Vorgehen bei Zykeln
- Das Vorgehen bei Zykeln ist auf einer eigenen Infoseite nocheinmal ganz detailliert Schritt für Schritt aufgeschlüsselt.
- Wir gehen das im Detail noch einmal durch und nehmen eines Ihrer M4-Repos als Beispiel.
-
11:45 - 12:45:
Mittagspause
-
12:45 - 15:30:
Arbeit am eigenen M4-Repo, ich gehe rum und helfe
- Zykel im eigenen M4-Code analysieren und auflösen
- Probleme bei der REST-Implementierung im eigenen M4-Code finden und auflösen
-
15:30 - 16:00:
Zusammenfassung von Tipps und Anti-Patterns (optional)
- Wenn ich beim Blick in den Code Anti-Patterns finde, dann werden die noch einmal besprochen
Praktikums-Meilensteine
Das Praktikum gliedert sich in die folgenden Meilensteine. Alle Meilensteine müssen bestanden sein, um das Gesamtpraktikum zu bestehen. Die Tests eines Meilensteins müssen komplett 'grün' sein, um ihn zu bestehen. Eine Teilnahme an einem Meilenstein ist nur möglich, wenn alle vorigen Meilensteine bestanden wurden.
M0: Initiale Implementierung einer Aufgabe
In diesem Meilenstein implementieren Sie (erstmal ohne weitere Vorgaben) eine Aufgabenstellung gegen vorgegebene Unit Tests.
Der Meilenstein wird
komplett automatisch (per Unit-Tests) überprüft.
-
Ausgabe: Mon 03.04.2023,
18:00
-
Abgabe bis spätestens:
Sun 23.04.2023,
20:00
Zugehörige Videos
M1: Neue Anforderung(en) und Refactoring nach Clean Code / SOLID-Prinzipien
Es kommen eine oder mehrere neue Anforderungen dazu, und Sie entwickeln Ihre Lösung aus M0 weiter. Dazu beschäftigen Sie sich mit den Clean-Code-Regeln und den SOLID-Prinzipien und machen ein Refactoring Ihrer Lösung, so dass Ihr Code diesen Regeln genügt.
Der Meilenstein wird
teils automatisch (per Unit-Tests) überprüft, teils gibt es manuelles Feedback.
Manuelles Feedback geben wir frühestens dann, wenn die automatisch überprüften Aufgaben davor alle grün sind.
Bitte beachten Sie, dass wir
nur ein (Zwischen-)Feedback
vor der Abgabe garantieren können. Nutzen Sie also die Workshops, um Fragen zu stellen und Ihre Lösung(en) zu diskutieren.
-
Ausgabe: Mon 24.04.2023,
18:00
-
Abgabe bis spätestens:
Fri 12.05.2023,
10:00
Zugehörige Videos
M2: Domain Primitives
Sie machen ein Refactoring Ihrer Lösung, indem Sie Domain Primitives verwenden.
Der Meilenstein wird
teils automatisch (per Unit-Tests) überprüft, teils gibt es manuelles Feedback.
Manuelles Feedback geben wir frühestens dann, wenn die automatisch überprüften Aufgaben davor alle grün sind.
Bitte beachten Sie, dass wir
nur ein (Zwischen-)Feedback
vor der Abgabe garantieren können. Nutzen Sie also die Workshops, um Fragen zu stellen und Ihre Lösung(en) zu diskutieren.
-
Ausgabe: Mon 15.05.2023,
18:00
-
Abgabe bis spätestens:
Fri 02.06.2023,
10:00
Zugehörige Videos
M3: REST API Design
Sie identifizieren Aggregates in Ihrer Lösung und designen darauf aufbauend ein REST-API für wesentliche Funktionalitäten.
Der Meilenstein wird
komplett automatisch (per Unit-Tests) überprüft.
-
Ausgabe: Mon 05.06.2023,
18:00
-
Abgabe bis spätestens:
Fri 16.06.2023,
10:00
Zugehörige Videos
M4: REST-API-Implementierung
Für eine Auswahl von REST-APIs für Ihre Lösung machen Sie eine Implementierung basierend auf Spring Data JPA und Spring Web MVC.
Der Meilenstein wird
komplett automatisch (per Unit-Tests) überprüft.
-
Ausgabe: Wed 21.06.2023,
18:00
-
Abgabe bis spätestens:
Wed 05.07.2023,
10:00
Zugehörige Videos