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.

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
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 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 das Praktikum 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 sind erlaubt, auf eigenes Risiko

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