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.

Application Design (AD), SS24

Application Design (AD) beschäftigt sich mit Patterns und Architekturstilen, um größere und verteilte Softwaresysteme bauen zu können. Besonderes Augenmerk liegt auf den Konzepten des Domain-Driven-Design (DDD). Der Kurs wird im Block in Form von Workshops durchgeführt, bei denen wir inhaltlich diskutieren und Sie an einer durchgehenden Programmieraufgabe arbeiten. Jede:r Teilnehmer:in bekommt ein individuelles Repo, in dem die Aufgabenstellung beschrieben ist.

Studiengang und Modulbeschreibung
Code & Context (Bachelor) (siehe auch Modulbeschreibung auf der Studiengangs-Seite)
Zeitraum und zeitliche Organisation der Veranstaltung
15.04.2024 - 26.04.2024. Organisiert als Blockkurs mit definierten Präsenzzeiten. Siehe unten für die genauen Daten.
Ort der Veranstaltung
Die Veranstaltung findet in Präsenz statt. In Ausnahmefällen (aber nur wenn explizit für den Tag kommuniziert) weichen wir auf eine Remote-Option (Videokonferenz) aus. Wenn mehrere Räume angegeben sind, dann schauen schauen Sie bitte bei dem jeweiligen Zeitschlitz oder Workshoptag nach (siehe unten auf dieser Seite), welcher Raum an welchem Tag genutzt wird. Falls auf dieser Seite keine Angaben sind, prüfen Sie bitte die sonstigen Kommunikationkanäle für diese Veranstaltung (z.B. Discord).
Raum: 423 (Code & Context, Standort Köln Mülheim, Schanzenstr. 28)
Videokonferenz-Link: https://th-koeln.zoom.us/j/67099191709?pwd=Z2RyU2wwNTkxMmJuWkM2TU92cGtOdz09 (nur in Ausnahmefällen und wenn explizit vorher für den Tag kommuniziert)
ILIAS/ILU-Kurs zur Veranstaltung
https://ilu.th-koeln.de/ilias.php?baseClass=ilrepositorygui&ref_id=356943
Anmeldung zur Veranstaltung
Für alle Kurse, so auch für diesen, müssen Sie sich zu Semesterbeginn über PSSO anmelden, und Sie müssen sich einmal vorab mit Ihrer campusId bei unserem Git-Server einloggen, sonst kann Ihnen kein Repo zugewiesen werden (siehe auch nächster Punkt "Git-Repo für die durchgehende Programmieraufgabe in der Verstanstaltung"). Die Deadline ist 12.04.2024.
Git-Repo für die durchgehende Programmieraufgabe in der Verstanstaltung
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.)
Miro Board für Gruppenarbeiten, Notizen und Modellieren während des Kurses
Im Kurs können Sie dieses Board nutzen.
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 coco. 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

Als Software-Entwickler:in kann ich effizient und nachhaltig Softwareapplikationen erstellen,

indem ich ...

  • in einer bewussten, kriteriengestützten Entscheidung das beste Werkzeug (Sprache, Tool, Methode, Framework) für die aktuelle Aufgabe auswähle,
  • bekannte Paradigmen, Technologien, Patterns und Architekturstile für den Entwurf und die Umsetzung eines Softwaresystems nutze,
  • diese problembezogen und pragmatisch anzupasse,,

damit ich digitale Produkte mit hohem Softwareanteil schnell und mit Blick auf spätere Weiterentwicklung herstellen kann.

Aufgabenstellung

Application Design ist Teil des Gesamtmoduls “Coding Software 2”, das sich aus insgesamt vier Kursen zusammensetzt:

  1. Clean Code (Schimmel)
  2. Application Design (Bente)
  3. Agile Team Coding (Schimmel)
  4. Advanced Clients (Faubel)

Dieser Kurs baut explizit auf den Inhalten des Kurses “Clean Code” auf, und führt diese weiter. Sie beschäftigen sich damit, ein größeres Backend für eine Anwendung zu entwickeln. Dabei arbeiten Sie nach modernen Prinzipien des Software-Designs, insbesondere des Domain-Driven-Designs (DDD), wie es aktueller Stand in der Industrie ist.

Wir implementieren ein Backend für eine eCommerce-Plattform. Die Anforderungen sind in Ihrem Repo beschrieben. In diesem Kurs Application Design bekommt jede:r von Ihnen ein individuelles Git-Repo und muss eine eigene Lösung erstellen. Sie sollen ausdrücklich diskutieren und zusammenarbeiten, aber plumpes Copy/Paste (mit Ändern der Individualisierung) ist nicht erlaubt (siehe auch unten). Die Aufgabenstellung ist in Ihrem Repo beschrieben, das Sie zu Beginn des Kurses zugewiesen bekommen.

Ihr Repo enthält auch Tests, die Ihre Lösung erfüllen muss. Die Tests gliedern sich in folgende Teile:

  1. Funktionaler Umfang - sind die geforderten Features korrekt umgesetzt?
  2. Test zu Domain Primitives
  3. DDD-Prinzipien - sind die Konzepte des Domain-Driven-Designs (nach den in diesem Kurs geforderten Konventionen) korrekt umgesetzt?
  4. Ausgewählte SOLID-Prinzipien, insbesondere Zykelfreiheit bzw. Anwendung des Dependency Inversion Principle
  5. Ausgewählte Clean-Code-Regeln
  6. Basistests, die sicherstellen, dass die Tests aus (3) und (4) nicht umgangen werden

Diese Tests sind grün, wenn Ihre Lösung korrekt ist. Sie können beliebig oft pushen, um die Tests zu erfüllen. Die Bewertung erfolgt am Ende des Kurses auf Basis der Anzahl der grünen Tests, sowie der aktiven Beteiligung am Kurs.

Regeln für die Veranstaltung

Die Bearbeitung der Kurs-Inhalte und die Bewertung erfolgt auf der Basis einer durchlaufenden Programmieraufgabe, für die jede:r von Ihnen ein individuelles Git-Repo bekommt. Für den Umgang mit dieser Aufgabe, aber auch für den Umgang mit Ihren Kommilitonen und mit uns als Betreuern gelten die nachfolgenden Regeln. Bitte lesen Sie diese sorgfältig durch und halten Sie sich daran.

Teilnahme in Präsenz

Die Veranstaltung ist als Präsenzveranstaltung konzipiert, und lebt davon, dass während der gemeinsamen Zeit in der Schanzenstraße eine Menge Diskussionen stattfinden - nicht nur zwischen Betreuern und Studierenden, sondern auch mit den Studierenden untereinander. Man trifft sich, um gemeinsam an der Programmieraufgabe zu arbeiten, um Fragen zu diskutieren, um sich gegenseitig zu helfen und um sich auszutauschen. Dazwischen gibt es moderierte Diskussionen (z.B. Retrospektiven, Übungen, …) und Inhaltsimpulse (Folien, Live-Coding, …) durch die Betreuer.

Wir erwarten daher, dass Sie an den Präsenztagen anwesend sind. Sollten Sie einmal verhindert sein, dann bitten wir darum, eine kurze Nachricht zu schreiben. Die aktive Teilnahme (in Form von Diskussionsbeträgen, Helfen von Kommilitonen, Fragen stellen, …) ist ein wichtiger Bestandteil der Veranstaltung und wird auch bewertet (siehe Benotung).

Einige Inhaltsimpulse, insbesondere Live-Coding, werden wir versuchen aufzuzeichnen und dann zur Verfügung zu stellen, damit man sich das noch einmal in Ruhe anschauen kann. Es ist aber ausdrücklich keine Hybrid-Veranstaltung, in der jeder Impuls und jede Diskussion auch remote zugänglich ist.

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 entsprechende Konsequenzen nach sich (Bewertung mit 5,0 und Übergabe an den Prüfungsausschuss). Das gilt sowohl für “Kopierer:in” wie auch für “Urheber:in” einer solchen Lösung. Wer seine Lösung weitergibt, riskiert also ebenfalls die Wertung der Veranstaltung als Täuschungsversuch.

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.

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.

Benotung (auf Basis von Punkten zwischen 0 und 3)

NotenbestandteilGewicht0 Punkte1 Punkt2 Punkte3 Punkte
Funktionaler Umfang40% der entsprechenden Tests grün33% der entsprechenden Tests grün67% der entsprechenden Tests grün100% der entsprechenden Tests grün
Domain Primitives2
DDD Konventionen20% der entsprechenden Tests grün33% der entsprechenden Tests grün, und mindestens 0,75 Punkte in 'Funktionaler Umfang' (*).67% der entsprechenden Tests grün, und mindestens 0,75 Punkte in 'Funktionaler Umfang' (*).100% der entsprechenden Tests grün, und mindestens 0,75 Punkte in 'Funktionaler Umfang' (*).
Clean-Code-Regeln1
SOLID / Zykelfreiheit0Nicht beide Zykelfreiheits-Tests grün--Beide Zykelfreiheits-Tests grün, mit Zusatzbedingungen (**).
Basistests-(müssen alle grün sein, sonst werden 'DDD Konventionen', 'Clean-Code-Regeln' und 'SOLID / Zykelfreiheit' jeweils mit 0 Punkten gewertet.)
Beteiligung an fachlichen Diskussionen und Interaktionen im Gesamtprojekt1Der/die Studierende hat sich so gut wie nicht an Interaktionen im Gesamt-Projektteam beteiligt.Der/die Studierende war unterdurchschnittlich und nur bei wenigen Anlässen an Interaktionen im Gesamt-Projektteam beteiligt.Der/die Studierende war durchschnittlich stark im Gesamt-Projekt sichtbar (Anleitung anderer, Hilfestellungen, Beiträgen zu fachlichen Diskussionen etc). Der/die Studierende ist außergewöhnlich stark im Gesamt-Projekt sichtbar gewesen, durch Anleitung anderer, Hilfestellungen, Beiträgen zu fachlichen Diskussionen und ähnlichem.

Insgesamt sind max. 30 Punkte zu erreichen. Eine 1,0 gibt es ab 27,5 Punkten, eine 4,0 ab 6 Punkten. Notenstufen dazwischen werden entsprechend interpoliert. 0 Punkte bei ‘Funktionaler Umfang’ führen automatisch zu einer 5,0. Alle Aspekte werden individuell bewertet.

(*) Zusatzbedingung für die Gewichtung der Punkte in ‘DDD Konventionen’ und ‘Clean-Code-Regeln’:

  • Zwischen 0,75 und 1,5 erreichten Punkten bei ‘Funktionaler Umfang’ wird die Punktzahl zusätzlich linear zwischen 0% und 100% gewichtet, um der Tatsache Rechnung zu tragen, dass Konventionen bei wenig Code leichter einzuhalten sind. Ab 1,5 Punkten in ‘Funktionaler Umfang’ werden die Konventions-Punkte voll gezählt.

(**) Zusatzbedingungen 3 Punkte bei Zykelfreiheit:

  • mindestens 0,75 Punkte in ‘Funktionaler Umfang’.
  • Tests in ‘DDD Konventionen’ grün
  • Tests testImpactOfStockCorrectionToOneShoppingCart und testImpactOfStockCorrectionToSeveralShoppingCarts grün (Name kann aufgrund Individualisierung variieren)
  • Tests testRemoveProductThatIsInStock und testRemoveProductThatIsInShoppingCartOrOrder grün (Name kann aufgrund Individualisierung variieren)

Workshops "Erste Kurswoche"

Mon 15.04.2024, 10:00 - 16:00: Kickoff & Domain Model

In diesem ersten Blocktag starten wir in die Veranstaltung, klären Organisatorisches, schauen die Programmieraufgabe an und beschäftigen und mit Domain Models.

Ort des Workshops

Raum: 423 (Code & Context, Standort Köln Mülheim, Schanzenstr. 28).

Ziel des Tages

Sie wissen, was in den zwei Wochen auf Sie zukommt, und haben Ihr Domain Model (halbwegs) fertig.

Die nachfolgenden Videos bieten zusätzliche Informationen zum Thema

Agenda

  • 10:00 - 10:30:  Programmieraufgabe
    • Loggen Sie sich in Gitlab ein (siehe Link oben auf der Seite)
    • Clonen Sie Ihr persönliches Repo (siehe Video zur Gitlab-Infrastruktur)
    • Lesen Sie sich die Aufgabenstellung durch, sammeln Sie Fragen
    • anschließend treffen wir uns wieder hier und besprechen die Unklarheiten
  • 10:30 - 11:45:  Domain Model
    • Schauen Sie sich die Videos zum Domain Model an (Einführung DDD und fachliches Datenmodell)
    • Was ist unklar? Sammeln Sie Fragen.
  • 11:45 - 12:30:  Erste Version Domain Model (= fachliches Datenmodell)
    • Gehen Sie in Untergruppen
    • Diskutieren Sie, welche Geschäftsobjekte in der Aufgabenstellung bei Ihnen auftauchen, und wie ein Domain Model aussehen könnte.
    • Nutzen Sie das Miro-Board (Link oben auf der Seite)
    • Anschließend Vergleich der Domain Models in der Gruppe
    • Hier ist das Domain-(Teil-)Modell, das wir gemeinsam in der Gruppe erarbeitet haben
  • 12:30 - 13:30:  Mittagspause
  • 13:30 - 15:00:  Entities
    • Schauen Sie sich das Video zu den Entities und Value Objects an, sowie die Videos zur Umsetzung mit JPA
    • Gehen Sie in Untergruppen
    • Besprechen Sie sich, womit Sie bei dieser Aufgabe am besten anfangen. Suchen Sie sich ein Entity aus, und wählen Sie die passende Interface-Methode zum Implementieren.
  • 15:00 - 15:45:  Organisatorisches
    • Zeitplan und Struktur der ersten und zweiten Woche (Workshops, Übungen, Videos)
    • Youtube-Channel
    • Discord als präferiertes Kommunikationsforum
    • Benotung
  • 15:45 - 16:00:  Wrapup
    • Wie hat es bis jetzt geklappt?
    • Was war gut, was ist unklar?

Aufgabe bis zum nächsten Workshop

  • Überlegen Sie, wie Sie das Domain Model dokumentieren
  • Sammeln Sie Fragen zum Stoff
  • Arbeiten Sie noch ein bisschen weiter an Ihrem Code
  • Schauen Sie schon mal die Videos weiter

Tue 16.04.2024, 10:00 - 16:00: Domain und Application Layer

In diesem zweiten Blocktag beschäftigen wir uns mit einem Schichtenmodell für Software, und bauen dies in die eigene Software ein. Darüber hinaus setzen Sie sich mit Beziehungsrichtungen auseinander.

Ort des Workshops

Raum: 423 (Code & Context, Standort Köln Mülheim, Schanzenstr. 28).

Ziel des Tages

Sie haben eine tragfähige Struktur in Ihrem Programm, und sind ein Stück mit der Programmierung weiter.

Videoaufzeichnung

Eine Videoaufzeichnung gibt es hier. (Passwort: M5vfm@=$).

Die nachfolgenden Videos bieten zusätzliche Informationen zum Thema

Agenda

  • 10:00 - 10:45:  (DDD-)Schichtenmodell in der Softwareentwicklung
    • Software wird üblicherweise in "Schichten" entwickelt. Mindestens gibt es die Trennung zwischen "Client" und "Server". Ein häufig benutztes Modell ist das 3-Schichten-Modell (UI/Client - Logik - Daten).
    • Ein moderneres, viel benutztes Schichtenmodell ist das DDD-4-Schichten-Modell - (1) UI (Presentation Layer), (2) Application Layer (APIs, Kommunikation Außenwelt), (3) Domain Layer (die eigentliche Business-Logik und die Daten, im wesentlichen Technologie-agnostisch), und (4) Infrastructure Layer (Basis-Technologien, so wie Datenbanken, Spring, ...)
    • Ich gebe einen kurzen Inhaltsimpuls, wie die Schichtenmodelle sich entwickelt haben, welche Vorteile das 4-Schichten-Modell nach DDD hat, und wie man das im Code abbilden kann.
    • Die Folien liegen hier.
  • 10:45 - 11:30:  Live Coding - wie fange ich am besten an?
    • Wir wählen uns einige der vorgegebenen "Use-Case"-Methoden zum Implementieren aus, und ich code mal einen Anfang
    • Dazu ordnen wir das in das Schichtenmodell von eben ein, um das "Big Picture" zu sehen.
    • Hier ist die Skizze fürs Big Picture, das ich vorm Coden gezeichnet habe.
  • 11:30 - 15:30:  Eigene Umsetzung (dazwischen Mittagspause)
    • Schauen Sie sich das Video zu den Entities und Value Objects an, sowie die Videos zur Umsetzung mit JPA, insbesondere auch den Beziehungen
    • Gehen Sie in Untergruppen, und arbeiten Sie an Ihrem Code
  • 15:30 - 16:00:  Wrapup
    • Abschlussrunde - Wie hat es bis jetzt geklappt? Was war gut, was ist unklar?

Aufgabe bis zum nächsten Workshop

  • Wenn Sie noch Energie haben, coden Sie noch ein bisschen weiter

Wed 17.04.2024, 10:00 - 16:00: Selbstlerntag

Nutzen Sie diesen Tag, um sich weiter mit Inhalten und mit Ihrem Code zu beschäftigen.

Thu 18.04.2024, 10:00 - 16:00: Domain Primitives

In der Aufgabenstellung gibt es mehrere Stellen, an denen Domain Primitives sehr sinnvoll sind. Damit können Sie Basis-Funktionalität verkapseln und wiederverwenden.

Ort des Workshops

Raum: 423 (Code & Context, Standort Köln Mülheim, Schanzenstr. 28).

Ziel des Tages

Sie können mit den Begriffen der Schichtenarchitektur gemäß DDD und Domain Primitives etwas anfangen.

Die nachfolgenden Videos bieten zusätzliche Informationen zum Thema

Agenda

  • 10:00 - 10:15:  Wo steht jede/r?
    • Rundlauf mit Rückmeldung zum bisherigen Vorankommen und Blockern
  • 10:15 - 10:30:  Selbsteinschätzungs-Umfrage zu Programmier-Kenntnissen
    • Diese Umfrage werde ich am Ende des Kurses noch einmal wiederholen.
    • Im besten Fall hilft das dabei, die Herausforderung durch sehr heterogene Vorkenntnisse besser in den Griff zu bekommen.
  • 10:30 - 10:45:  Domain Primitives
    • Kurze Diskussion - was sind Domain Primitives, und wofür sind sie gut?
    • Schauen Sie auch das Video dazu
  • 10:45 - 11:15:  Live Coding - Nächste Schritte
    • Wir schauen uns die Validierung von Domain Primitives an (mit Hilfe von RegEx)
    • Wie kann man ChatGPT hier sinnvoll einsetzen?
    • Was kommt dann?
  • 11:15 - 16:00:  Weiter coden
    • Wir helfen und beraten
    • Dazwischen Mittagspause

Aufgabe bis zum nächsten Workshop

  • Sind die Domain Primitives Tests grün?

Fri 19.04.2024, 10:00 - 12:30: Fragen und Diskussion

Den Freitag nutzen wir für Fragen zu offenen Punkten, und machen eine Zwischen-Retrospektive.

Ort des Workshops

Raum: 423 (Code & Context, Standort Köln Mülheim, Schanzenstr. 28).

Ziel des Tages

Fragen sind geklärt, Sie haben keine Blocker in Ihrer Arbeit.

Videoaufzeichnung

Eine Videoaufzeichnung gibt es hier. (Passwort: x1#VW?V%).

Agenda

  • 10:00 - 10:15:  Wo steht jede/r?
    • Rundlauf mit Rückmeldung zum bisherigen Vorankommen und Blockern
  • 10:15 - 10:45:  Live Coding - OK, Domain Primitives und Kunde sind drin. Was kommt als nächstes?
    • Was sind sinnvolle nächste Schritte nach Kunde und Domain Primitives?
  • 10:45 - 12:30:  Weiter coden
    • Wir helfen und beraten

Workshops "Zweite Kurswoche"

Mon 22.04.2024, 10:00 - 16:00: Catch up with Coding

Arbeiten Sie ohne direkten weiteren Input an Ihrem Code. Ich werde durch die Breakout-Räume zirkulieren und Fragen beantworten. Wenn es sinnvoll erscheint, machen wir noch eine Live-Coding-Session.

Ort des Workshops

Raum: 423 (Code & Context, Standort Köln Mülheim, Schanzenstr. 28).

Ziel des Tages

Sie sind mit Ihrem Code ein Stück weiter, und wissen, was Sie als nächstes tun möchten.

Videoaufzeichnung

Eine Videoaufzeichnung gibt es hier. (Passwort: __8g3xFqB).

Die nachfolgenden Videos bieten zusätzliche Informationen zum Thema

Agenda

  • 10:00 - 10:15:  Wo steht jede/r?
    • Rundlauf mit Rückmeldung zum bisherigen Vorankommen und Blockern
  • 10:15 - 11:30:  Erweiterung des Domain Models und nächste Schritte
    • Wir machen gemeinsam das Domain Model fertig, hier ist das Ergebnis
    • Wir schauen uns das Konzept "Aggregates" an
    • Welches Aggregate referenziert welches andere Aggregate? Wir machen eine erste Skizze.
    • Was sind sinnvolle nächste Schritte?
  • 11:30 - 16:00:  Coding und Beratung
    • Sie machen an Ihrem Code allein oder in Kleingruppen weiter
    • Ich berate in den Untergruppen
    • Dazwischen Mittagspause

Aufgabe bis zum nächsten Workshop

  • Versuchen Sie, Aggregate-weise vorzugehen

Tue 23.04.2024, 10:00 - 16:00: SOLID Principles

Wir führen die SOLID Principles als Satz von umfassend akzeptierten Architektur-Prinzipien ein. Sie wenden das auf Ihren eigenen Code an, insbesondere das "Single Responsibility Principle" (SRP) und das Das "Dependency Inversion Principle" (DIP). SRP bedeutet, dass jede Klasse, jedes Package, jedes Interface genau einen Zweck haben soll. Dadurch wird der Code verständlicher und muss seltener verändert werden. DIP beschreibt u.a. einen Weg, Zykel und Abhängigkeiten in der Software zu vermeiden. Wir analysieren, wo dies in Ihrem Code der Fall sein könnte.

Ort des Workshops

Raum: 423 (Code & Context, Standort Köln Mülheim, Schanzenstr. 28).

Ziel des Tages

Ihre Klassen und Packages haben eine sinnvolle und klar verständliche Struktur. Business Logic ist da, wo sie hingehört.

Die nachfolgenden Videos bieten zusätzliche Informationen zum Thema

Agenda

  • 10:00 - 13:30:  Coding und Beratung
    • Sie machen an Ihrem Code allein oder in Kleingruppen weiter
    • Ich berate in den Untergruppen
    • Darin Mittagspause
  • 13:30 - 14:30:  SOLID-Prinzipien
    • Videos schauen, wenn noch nicht geschehen (SOLID Übersichtsvideo, SRP, DIP)
    • Danach Fragen und Diskussion
  • 14:30 - 16:00:  Anwendung der SOLID-Prinzipien auf den eigenen Code
    • Sie schauen den eigenen Code kritisch an, wo ein Refactoring gemäß der SOLID-Prinzipien nötig ist
    • Ich berate in den Untergruppen
    • Zum Abschluss nochmal alle im Plenum

Aufgabe bis zum nächsten Workshop

  • Analysieren Sie Ihren eigenen Code, wo das SRP nicht eingehalten ist
  • Versuchen Sie, Zykel aufzulösen

Wed 24.04.2024, 10:00 - 16:00: Selbstlerntag

Nutzen Sie diesen Tag, um sich zwei praktische Coding-Videos zum Thema "SOLID" anzuschauen.

Die nachfolgenden Videos bieten zusätzliche Informationen zum Thema

Thu 25.04.2024, 10:00 - 16:00: Weitercoden, und Zykel auflösen

Wir schauen besonders auf die Zykel in Ihrem Code, und versuchen diese aufzulösen.

Ort des Workshops

Raum: 423 (Code & Context, Standort Köln Mülheim, Schanzenstr. 28).

Ziel des Tages

Ihre Klassen und Packages haben eine zykelfreie Struktur

Agenda

  • 10:00 - 11:30:  Zykel auflösen anhand eines praktischen Beispiels
  • 11:30 - 16:00:  Coding und Beratung
    • Sie machen an Ihrem Code allein oder in Kleingruppen weiter
    • Wir beraten dabei
    • Darin Mittagspause
    • Zum Abschluss nochmal alle im Plenum

Aufgabe bis zum nächsten Workshop

  • So gut wie alle (für mich machbaren) Tests grün

Fri 26.04.2024, 10:00 - 14:30: Abschluss des Kurses

An diesem letzten Kurstag machen wir ein Fazit zu den Designaspekten Ihrer Software. Was funktioniert, was ist immer noch unklar und/oder fühlt sich seltsam an? Darüber hinaus machen wir eine Abschluss-Retrospektive.

Ort des Workshops

Raum: 423 (Code & Context, Standort Köln Mülheim, Schanzenstr. 28).

Ziel des Tages

Sie wissen, wo Sie mit Ihrem eigenen Code stehen - seine Stärken und Schwächen :-).

Agenda

  • 10:00 - 12:00:  Coding und Beratung
    • Sie machen an Ihrem Code weiter
    • Wir beraten dabei
  • 12:00 - 13:00:  Mittagspause
  • 13:00 - 14:30:  Abschluss-Retrospektive
    • Wir nutzen Keep / Drop / Try

Bildquellen