Page tree

Softwaretechnik 2 (ST2)

ST2 ist eine Veranstaltung im 4. Semester des Informatik Bachelor. Diese Seite (mit den entsprechenden Unterseiten) wird fortlaufend aktualisiert. Es wäre also sinnvoll, wenn Sie die Seite bookmarken. 

Bitte registrieren Sie sich schon einmal in ILIAS unter https://ilias.th-koeln.de/ilias.php?ref_id=1471469&cmdClass=ilobjcoursegui&cmd=edit&cmdNode=w4:l6&baseClass=ilRepositoryGUI, wenn Sie die Veranstaltung im SS20 besuchen wollen. Auf ILIAS werden die Vorlesungsskripte zur Verfügung gestellt. 

ST2 und Corona

Aufgrund der Corona-Krise findet die Vorlesung bis auf Weiteres als Zoom-Webinar statt: https://zoom.us/j/857961948. Nähere Information zum Webinar finden Sie hier. 

Auch das Praktikum wird komplett umgestellt, auf eine Gitlab-basierte Einreichung von Praktikumslösungen. Damit fallen die Praktikumsgruppen weg - jede*r Teilnehmer*in liefert eine individuelle Lösung ab. Näheres siehe unten unter "Praktikum"

Inhalte dieser Seite

Ziel der Veranstaltung

Die Veranstaltung ST2 versucht Sie mit grundlegenden Überlegungen der Software-Architektur von komplexen Systemen vertraut zu machen. Im Praktikum wird dabei 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 icheine Softwarearchitektur für eine gegebene Aufgabenstellung(*) iterativ konzipieren und mit gängigen Tools umsetzen,
indem ich
  1. passende Architekturstile für mein IT-System prüfe und dann eine gängige Schichtenarchitektur auswähle,
  2. mein Domain Model mit Hilfe der Domain-Driven-Design (DDD) Building Blocks konzipiere und mit Hilfe von Spring JPA umsetze, 
  3. meine Aggregates als REST Level 2 API für die Kommunikation mit Umsystemen und Clients verfügbar mache, und dies mit Spring Web MVC umsetze, 
  4. die Transaktionen und Zustandsübergänge meiner Domäne passend modelliere und als REST Level 3 APIs mit HATEOAS bereitstelle, 
  5. den UI Layer gemäß aktueller Web-, Mobil- und sonstiger Clienttechnologie konzipiere,
  6. mein IT-System in eine nach bestimmten Prinzipien, z.B. Microservices, strukturierte IT-Landschaft mittels asynchroner Kommunikation integriere,
so dass ich

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

Anmerkungen

(*) Wir gehen von einer "normal komplexen", in der Praxis häufig vorkommenden Aufgabenstellung aus. In unserem Fall wird es eine ECommerce-Plattform sein. 

Zeitplan und Inhalt der Vorlesungen

Wie Sie dem Stundenplan entnehmen können, gibt es jetzt zwei reguläre Vorlesungs-Zeitschlitze: Di 9:00 - 10:45 und Mi 9:00 - 10:45. Ich werde diese Zeitschlitze nutzen, um den Stoff der Veranstaltung geblockt darzustellen. D.h. es wird Wochen geben, wo sowohl Di wie Mi Vorlesungen sind, und dann wird es Pausen geben (Wochen ohne Vorlesung). 

Dieser Zeitplan ist aufgrund der augenblicklichen Lage etwas "wackelig" - prüfen Sie also bitte regelmäßig hier an dieser Stelle auf Updates. Ich kommuniziere Änderungen auch über den Discord-Channel.

Die Einwahldaten zu den Vorlesungen und Hinweise zu Zoom sind hier verlinkt. Sie sind für alle Vorlesungen gleich. (Sobald die Hochschule eine "offizielle" Webkonferenz-Lösung anbieten kann, werde ich von meiner eigenen Lösung dahin wechseln. Dann wird sich dieser Link noch einmal ändern, dann aber auch wieder stabil für alle Vorlesungen gelten.)

     DatumThemaMInhalt (Details)Skripte, Videos
1Di, 31.3., 9:00 - 11:00


0) Einführung, Orga, Praktikum

M0
  • Ziele der Vorlesung
  • Zeitplan
  • Bewertung
  • Organisation des Praktikums
  • Vorstellung Meilenstein 0
  • Einführung Git

keine Folien (alle Infos auf dieser Webseite)

Video

2Mi, 1.4.,
9:00 - 11:00



1) Architekturstile


  • Was ist ein Architekturstil?
  • Regelbasierter Architekturstil
  • Beispiel: Quasar

Folien

Video

3Di, 14.4., 9:00 - 11:00
  • Vergleich von Architekturstilen: wie entscheidet man?
  • Beispiele: Pipes & Filters, Shared Repository
  • Im Vergleich: Schichtenarchitektur, hexagonale Architektur

4Mi, 15.4., 9:00 - 11:00





2) Domain Model


  • Einführung in Domain-Driven Design (DDD)
  • Taktische vs. strategische Architektur
  • Schichtenmodell im DDD
  • Entities 
  • Value Objects
  • Aggregates

5Di, 21.4., 9:00 - 11:00M1
  • Grundprinzipien von Spring: Dependency Injection und andere elementare Patterns
  • Praktische Einführung in Spring
  • ORM-Mapping mit Spring

6Mi, 22.4., 9:00 - 11:00
  • Sonderfälle 
  • Fragen
  • Wiederholung

7Di, 5.5., 9:00 - 11:00



3) Aggregates als REST Level 2 API

M2
  • REST-Prinzipien
  • REST Maturity Levels 0 - 2
  • REST-Endpunkte mit Spring Web MVC implementieren
  • Postman als Testing-/Dev-Tool

8Mi, 6.5., 9:00 - 11:00
  • Guter Stil bei REST
  • Erkennung von Aggregates
  • Fragen 
  • Wiederholung

9Di, 19.5., 9:00 - 11:00



4) Transaktionen als REST Level 3

M3
  • REST Maturity Level 3
  • HATEOAS
  • Umsetzung in Spring

10Mi, 20.5., 9:00 - 11:00
  • Modellierung von Zustandsübergängen als DDD Services und Entities
  • Fragen 
  • Übungen

11Di, 9.6.,
9:00 - 11:00


5) UI Layer


  • Einführung in UI-Technologie
  • Model-View-Controller: Observer-Pattern, MVC-Pattern
  • Web-Architekturen (Klassische Web-Architektur, AJAX, SPA)

12Di, 16.6., 9:00 - 11:00




6) Integration von IT-Systemen


  • Orchestrierung / SOA vs. Choreographie / Microservices
  • Kernfähigkeit einer Service-orientierte Architektur (SOA): Umsetzung von Geschäftsprozessen
  • Drei zentrale Bestandteile der Orchestrierung

13Di, 23.6., 9:00 - 11:00
  • Strategische DDD-Architektur (Bounded Context)
  • Motivation für Microservices
  • Technische Voraussetzungen

14Di, 30.6., 9:00 - 11:00
  • Asynchrone Kommunikation via Messaging in einer Microservice-Architektur

15Di, 7.7., 9:00 - 11:00Optional: Wiederholung, Fragen zur Klausur


Skripte und Videos

Die Skripte der Vorlesungen (= PDFs der Folien) sind spätestens kurz nach der Vorlesung auf ILIAS zu finden und in der obigen Tabelle verlinkt. Solange wir bei Webinaren bleiben müssen, schneide ich diese mit und stelle Sie Ihnen auf Vimeo als streambares Video zur Verfügung (ebenfalls dann oben verlinkt). 

Praktikum

Das Praktikum besteht aus vier Meilensteinen (M0 - M3). Es deckt die wesentlichen Teile des Vorlesungsstoffes ab, indem es Aufgaben mit einem konzeptionellen Lernanteil in einer praktischen Implementierung verlangt. Alle organisatorischen Details finden Sie auf dieser Unterseite (Anmeldung, Abgabezeiten, Kontaktinformation der Betreuer, etc.)

Die Meilensteine decken jeweils die folgenden Vorlesungsteile ab. In der Tabelle sind auch die Ausgabe- und Abgabetermine angezeigt. 

MeilensteinVorlesungsteilAusgabeAbgabe
M0- (Wiederholung und Auffrischung der Inhalte aus AP2, um sicherzustellen, dass die nachfolgenden Programmieraufgaben bewältigt werden können)31.03.20.4.
M1Domain Model (DDD Building Blocks, Spring JPA)21.4.11.5.
M2Aggregates als REST Level 2 API (DDD Building Blocks, REST-Prinzipien, Spring Web MVC)12.5.1.6.
M3Transaktionen als REST Level 3 (DDD Services, REST Level 3, Spring Data REST)2.6.23.6.

Organisation und detaillierte Inhalte des Praktikums

Alles Weitere zum Praktikum finden Sie auf den folgenden Unterseiten. Die Seiten für die genaue Beschreibung der Meilensteine M0 - M3 werden nach und nach im Laufe der Veranstaltung gefüllt.