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

ST2 - Aktuelles

Aktuell: Abgabe MS3 um drei Tage verlängert

Am Freitag Morgen (17.7.) hat ein Bagger die Internet-Leitung zu unserem Gitlab-Server gekappt. Deshalb war dieser drei Tage (bis Mo Morgen) nicht erreichbar. Diese drei Tage geben wir Ihnen oben drauf. Der neue Abgabetermin für den MS3 ist damit Fr 24.7. Mo 27.7. eod (= 23:59). 

Nachholtermin für das ST2-Praktikum!

Wer das Praktikum im SS2020 nicht bestanden hat, hat im Zeitraum 25.9. - 16.10. noch einmal die Gelegenheit, alle Meilensteine Nachzuholen. Das Praktikum wird hierbei als ganzes wiederholt, einzelne Meilensteine können nicht wiederholt werden. Es werden alle Meilensteine auf einmal veröffentlicht, sodass Sie sich die Bearbeitungszeit selber einteilen können. Der Support durch die Mitarbeiter wird jedoch deutlich reduziert stattfinden, gehen Sie also nicht davon aus, immer zeitnah eine Antwort zu bekommen.

Sollten Sie das Praktikum nachholen wollen, so melden Sie sich bitte bis zum 24.09.2020, 23:55 Uhr in der dafür vorgesehenen Gruppe im ILIAS an: https://ilias.th-koeln.de/ilias.php?ref_id=1615959&cmdClass=ilrepositorygui&cmdNode=w4&baseClass=ilrepositorygui

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

Prüfen Sie den Zeitplan bitte regelmäßig hier an dieser Stelle auf Updates. Ich kommuniziere Änderungen auch über den Discord-Channel.

Zoom-Link für Veranstaltunghttps://th-koeln.zoom.us/j/87238393091Passwort: 420

     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 0)
2Mi, 1.4.,
9:00 - 11:00



1) Architekturstile


  • Was ist ein Architekturstil?
  • Regelbasierter Architekturstil
  • Beispiel: Quasar
3Di, 14.4., 9:00 - 11:00
  • Vergleich von Architekturstilen: wie entscheidet man?
  • Beispiele: Pipes & Filters, Shared Repository
  • Schichtenmodell im DDD
  • 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
  • Basic Building Blocks: Entities, Value Objects, Repository
  • Fragen
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
  • Grundlegende Fragen zum Thema Dependency Injection und Spring
  • Attribute und Value Objects in JPA
7Di 28.4.
  • Finalisierung desThema "Domain Model" und insbesondere "ORM mittels JPA"
  • Assoziationen in JPA
8Di, 5.5., 9:00 - 11:00






3) Aggregates als REST Level 2 API





  • Was sind Aggregates?
  • Motivation, Definition und Checkliste
  • Regeln für Aggregates
  • Abbildung mit Spring JPA
9Mi, 6.5., 9:00 - 11:00
  • Fortsetzung: Abbildung von Aggregates mit Spring JPA
  • Entities vs. Value Objekts für innere Klassen
  • Konsequenzen 
10Di, 19.5., 9:00 - 11:00M2
  • Eigenschaften von Interfaces
  • REST-Prinzipien
  • REST Maturity Levels 0 - 2
  • Postman als Testing-/Dev-Tool
11Di, 26.5., 9:00 - 10:00
  • REST-Endpunkte mit Spring Web MVC implementieren
  • Guter Stil bei REST
  • Umsetzung in Spring Web MVC
  • Fragen 
12Di, 2.6.,
9:00 - 10:00

  • Vertiefung und Fragen

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

  • REST Level 2: Umsetzung in Spring und praktische Fragen
14Di, 16.6.,
9:00 - 11:00


4) Business-Logik als REST Level 3

M3
  • REST Maturity Level 3
  • HATEOAS
  • Modellierung von Zustandsübergängen als DDD Services und Entities
15Di, 23.6., 9:00 - 11:00
  • REST Level 3 / HATEOAS: Umsetzung in Spring und praktische Fragen
16Mi, 01.07., 9:00 - 11:00


5) Architektur großer Systeme: Strategisches DDD


  • Strategische DDD-Architektur (Bounded Context, Context Map)
17Di, 7.7., 9:00 - 11:00
  • Architekturstile für große IT-Landschaften: 
    • Microservices
    • Service-Orientierte Architektur (SOA
    • Vergleich
  • Ausblick auf Klausur(en)

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 Online-Veranstaltungen bleiben müssen, schneide ich diese mit und stelle Sie Ihnen auf Vimeo als streambares Video zur Verfügung (ebenfalls dann oben verlinkt). 

Man findet auch alle Videos zu der Veranstaltung unter https://vimeo.com/channels/st2.

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)28.4.18.5.
M2Aggregates als REST Level 2 API (DDD Building Blocks, REST-Prinzipien, Spring Web MVC)22.5.18.6. ! Neu !
M3Transaktionen als REST Level 3 (DDD Services, REST Level 3, Spring Data REST)30.6.24.7.

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.