Softwaretechnik 2 (ST2), SS22

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
28.03.2022 - 04.07.2022. 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).
Videokonferenz-Link: https://th-koeln.zoom.us/j/88910722611?pwd=cXd0RzZMTzBrR0xZRU9hRnp5MVdQQT09
Raum: 0502 (Gebäude LC6, gegenüber dem Haupteingang der Schwalbe-Arena)
ILIAS-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-Gruppe (liegt in diesem ILIAS-Kurs). Die Anmeldung ist möglich bis zum 01.04.2022. 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.st.archi-lab.io/ . Bitte loggen Sie sich unbedingt vorab einmal mit Ihrer campusId dort ein. Sonst kann das Repo Ihnen nicht automatisch zugewiesen werden.
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 unter https://discord.gg/YYNYb5whU8 beitreten. Navigieren Sie zum Channel #rollenzuweisung und klicken Sie auf st2. Dann sieht man die entsprechenden Kanäle für diese Veranstaltung.
Youtube-Kanal
Für diese Veranstaltung sind Lehrvideos auf Youtube verfügbar. Abonnieren Sie dafür am besten den Kanal ArchiLab. Die gesamten Inhalte dieser Veranstaltung sind in einer Playlist zusammengefasst.
Script
Für diese Veranstaltung ist ein Script verfügbar (in den Videos verwendete Folien als PDF, mit abschnittsweisen Links auf das entsprechende Video).

Inhalt

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 ...

damit ich eine nachhaltig wartbare Software mit passender, langlebige und änderungsfähiger Architektur erstellt habe.

Bewertung

Die Bewertung von ST2 erfolgt über die ST2-Klausur am 13.7.22 um 14:00.

Auf vielfachen Wunsch haben wir den Ort der Klausur geändert. Statt im PC-Pool der Hochschule (oder in einem Hörsaal, mit eigenem Laptop) zu schreiben, wird die Klausur von zu Hause aus 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 wäre das einfach - Kontrolle von MultiCa und Personalausweis, plus Sichtkontrolle, ob Sie es selbst sind.

Aufgrund der Remote-Situation werden wir das so machen: Sie benötigen ein Endgerät mit Webcam, mit dem Sie sich in eine Zoom-Session einwählen können. Wir werden den regulären ST2-Zoomlink dafür verwenden. Dann halten Sie (ganz ähnlich wie bei der Video-ID für eine Konto-Eröffnung) Ihre MultiCa und Ihren Personalausweis neben Ihr Gesicht in die Kamera. Wir kontrollieren dann Ihre Identität. Danach können Sie den Zoom-Call verlassen. Sie können die Klausur auf einem anderen Endgerät schreiben (z.B. Ihrem Desktop-PC). Ab 13:30 am Mi nächster Woche können Sie sich unter https://th-koeln.zoom.us/j/88910722611?pwd=cXd0RzZMTzBrR0xZRU9hRnp5MVdQQT09 einwählen. Sie gehen dann in Breakout-Rooms gemäß des Anfangsbuchstabens Ihres Nachnamens. Dort müssen Sie dann die Kamera anschalten und wir kontrollieren Ihren Ausweis (MultiCa + Personalausweis). Um 14:00 geht dann die Klausur los.

WICHTIG: Damit wir rechtlich auf der sicheren Seite sind, müssen Sie und bitte bestätigen, dass Sie das verstanden haben und umsetzen können. Bitte bestätigen Sie uns in dieser Umfrage (nur 1 Klick): https://ilias.th-koeln.de/ilias.php?ref_id=2279394&cmd=infoScreen&cmdClass=ilobjsurveygui&cmdNode=qc&baseClass=ilObjSurveyGUI

Workshops

Mon 28.03.2022, 10:00 - 12:00: 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.

Schauen Sie bitte vorab nachfolgende Videos

Agenda

Aufgabe bis zum nächsten Workshop

Nach dem Workshop bearbeiten Sie bitte Meilenstein M0.

Mon 11.04.2022, 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

Videokonferenz-Link: https://th-koeln.zoom.us/j/88910722611?pwd=cXd0RzZMTzBrR0xZRU9hRnp5MVdQQT09 .

Ziel des Tages

Sie können Clean Code und SOLID auf den eigenen Code anwenden.

Schauen Sie bitte vorab nachfolgende Videos

Agenda

Aufgabe bis zum nächsten Workshop

Nach dem Workshop bearbeiten Sie bitte Meilenstein M1.

Mon 02.05.2022, 10:00 - 17:00: Packages, Schichtenarchitektur und Domain Primitives

Es gibt verschiedene Mittel, um seinen Code so aufzubauen, dass er gut wartbar und leicht verständlich ist. Dazu gehört eine sinnvoll gewählte Package-Struktur, Schichtenarchitektur und Domain Primitives. Letzere (auch "Rich Domain Model" genannt) sind domänenspezifische Basisklassen mit Funktionalität und Validierung. Wir refactorn Beispielcode, 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 Packages, Schichten und Domain Primitives in Ihrem Code aussehen, und können das in Ihrem eigenen Code nutzen.

Schauen Sie bitte vorab nachfolgende Videos

Agenda

Aufgabe bis zum nächsten Workshop

Nach dem Workshop bearbeiten Sie bitte Meilenstein M2.

Mon 23.05.2022, 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).

Ziel des Tages

Sie wissen, wie Sie Aggregates nutzen, um REST APIs zu definieren

Schauen Sie bitte vorab nachfolgende Videos

Agenda

Aufgabe bis zum nächsten Workshop

Nach dem Workshop bearbeiten Sie bitte Meilenstein M3.

Mon 13.06.2022, 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

Videokonferenz-Link: https://th-koeln.zoom.us/j/88910722611?pwd=cXd0RzZMTzBrR0xZRU9hRnp5MVdQQT09 .

Ziel des Tages

Sie wissen, wie Sie REST APIs mit Spring Boot implementieren

Schauen Sie bitte vorab nachfolgende Videos

Agenda

Aufgabe bis zum nächsten Workshop

Nach dem Workshop bearbeiten Sie bitte Meilenstein M4.

Mon 04.07.2022, 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).

Agenda

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.

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.

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.

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.

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.

Zugehörige Videos