Softwaretechnik 1 (ST1)

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

ST1 - Aktuelles

Die nächste Veranstaltung ST1

Der Kickoff mit Vorstellung des Praktikums-Meilensteins M0 und mit organisatorischen Details zur Veranstaltung findet am Mo 04.10.21 ab 10:00 als Online-Veranstaltung statt. 

Format der Veranstaltung

ST1 findet in diesem Semester hybrid statt - d.h. es werden sich online- und Präsenz-Veranstaltungen abwechseln. An die Stelle einer regelmäßigen Vorlesung werden ganztägige Workshops treten (Termine siehe Tabelle unten.) 

  • Inhalte werden vorab als Videos zur Verfügung gestellt. Dafür gibt's einen eigenen Youtube-Kanal.
  • Außerdem bekommen Sie die Inhalte als PDF-Script, das dieselben Inhalte wie die Videos hat, aber mit mehr Text.
  • An den Workshoptagen (immer montags) werde ich dann mit Ihnen Übungen zu den Vorlesungsinhalten machen. Sie bearbeiten die Inhalte in Kleingruppen. Dabei können Sie ausführlich Fragen stellen. 

Montags-Workshops

Der gesamte Montag ist für ST1 als Praktikum gekennzeichnet. Wir werden das so leben, dass es nicht jeden Montag eine Veranstaltung geben wird, sondern so etwa alle 2-3 Wochen. Nach aktuellem Stand sind 7 Workshops geplant, die dann von 10:00 - ca. 17:00 dauern werden. 

Dabei können Sie als Gruppe in den reservierten Räumen arbeiten (siehe unten: 501, 2101, 2103 - unter Einhaltung der Corona-Regeln), oder Sie bleiben im Home-Office und treffen sich als virtuelle Gruppe in Discord. Das ST1-Team (Stefan Bente, Fabian Krampe) wird dann physisch und virtuell (in Discord) von Team zu Team gehen, Fragen beantworten und für Diskussionen zur Verfügung stehen.

Die Workshops werden dann immer so ablaufen: 

  • Wir treffen uns zu Anfang im größten Raum (501) bzw. unter dem obigen Zoom-Link. (Ausnahme: beim ersten Workshop am 4.10. bleiben wir komplett online). 
  • Dort stellen wir die Übung für den Tag vor und beantworten Fragen. 
  • Danach kommt die "Stillarbeit". Sie sind in 501, 2101, 2103 oder in Discord-Gruppen. 
  • Zwischendurch kommen wir wieder in 501 / im Zoom zusammen und besprechen den Zwischenstand. Genauso dann auch zum Abschluss des Tages.

Die Workshops sind thematisch an die Ausgabe der neuen Praktikums-Meilensteine gekoppelt.

Orte

In der Zeitplanung unten finden Sie die Orte, an denen die Veranstaltung stattfindet. Die Orte sind unten in der Tabelle "Zeitplan und Inhalt der Vorlesungen" referenziert.Zoom

Zoom
Discordhttps://discord.gg/YYNYb5whU8 und dann die "ST1"-Rolle wählen
501Gummersbach Campus, Raum 501 in LC6 
2101Gummersbach Campus, Raum 2101 im Hauptgebäude 
2103Gummersbach Campus, Raum 2103 im Hauptgebäude

ILIAS-Kurs

Die Inhalte und weiterführende Inhalte zur ST1-Veranstaltung im WS 21/22 finden Sie auf dieser Seite. Melden Sie sich aber trotz bitte unbedingt im ILIAS-Kurs an: https://ilias.th-koeln.de/ilias.php?ref_id=1349272&cmd=frameset&cmdClass=ilrepositorygui&cmdNode=wb&baseClass=ilrepositorygui. ILIAS nutze ich für wichtige Kommunikation an Sie. 

Youtube-Kanal 

Die ST1-Videos sind in einer eigenen Playlist unseres Youtube-Kanals zusammengefasst: https://www.youtube.com/playlist?list=PLPVAVAKfymR-K3dOWucQfRYhfBUFyuJRl.

Darüber hinaus finden Sie auch eine Menge anderer Videos zum Thema modernes Software-Design.

Script zur Veranstaltung

Zustätzlich zu den Videos wird es ausführliche Folien zu den Inhalten geben, die laufend aktualisiert werden (im Zug der Videoerstellung). Das Script finden Sie auf ILIAS immer unter diesem Link:

https://ilias.th-koeln.de/goto.php?target=file_1695656_download&client_id=ILIAS_FH_Koeln

Ergänzende Inhalte als Gitbook: Git-Tutorial, DevEnv, Einführung Java

Ergänzende Inhalte (Git-Tutorial, DevEnv, Einführung Java), die Sie für Meilenstein M0 (und die danach natürlich auch) brauchen, finden Sie hier: http://staff.pages.st.archi-lab.io/st1/learning-material/

Discord-Server

Treten Sie am besten unserem Discord-Server bei (https://discord.gg/YYNYb5whU8). Dort können Sie Fragen und Anmerkungen zu Vorlesungsinhalten und Praktikum diskutieren. Im Channel "Rollenzuweisung" einfach die ST1 Rolle wählen, um auf die ST1-Kanäle zuzugreifen.

Ziel der Veranstaltung

In der Veranstaltung ST1 lernen Sie, eine gegebene fachliche Domäne in ihren strukturellen und Verhaltens-Eigenschaften zu analysieren und diese dann in Code umzusetzen. Im Praktikum machen Sie das ganz praktisch, auch durch das Schreiben von Code. 

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

abgeleitet aus den fachlichen Anforderungen nach dem Ansatz des Domain-Driven Design das Domänenmodell für ein Softwaresystem erarbeiten und dieses Modell in Sourcecode implementieren, 

indem ich
  • in der Domain Exploration Anwendungsfälle (Use Cases) aus der Aufgabenstellung ableite und Geschäftsobjekte im Fachlichen Datenmodell als Klassendiagramm modelliere, 
  • im Structural Domain Modelling aus dem Fachlichen ein Logisches Datenmodell erarbeite, 
  • dieses dann unter Nutzung von Standards (Spring Boot, JPA) implementiere, 
  • im Dynamic Domain Modelling das Verhalten des Systems spezifizieren und in Code umsetzen,
so dass 

eine Implementierung mit passender, langlebiger, änderungsfähiger Architektur des Systems entsteht.

Zeitplan und Inhalt der Vorlesungen

Nachfolgend finden Sie die Liste der Workshops für die Veranstaltung. Zu den Workshops gibt es jeweils thematischen Unterseiten, die dann im Hauptmenu unter "ST1" verlinkt werden. 

     DatumOrtThemaMInhalt (Details)Zur Vorbereitung:
Videos / Materialien
Live-Übungen
1

04.10.2021
10:00 - 12:00


Zoom

0) Einführung

M0
  • Ziele der Vorlesung
  • Zusammenhang ST1, ST2 und FAE
  • Zeitplan
  • Bewertung
  • Organisation des Praktikums
  • Vorstellung Aufgabenstellung Meilenstein 0
  • Einführung Git, IDE / Dev Env
  • Zuordnung der Repos für MS0

keine Übungen, aber praktische Hilfestellung beim Setup des Dev Envs:

  • Discord
  • IDE
  • Git
  • Modellierungstools
2

25.10.2021
10:00 - 17:00

Start:
Zoom + 501

Dann:
501, 2101, 2103, Discord

1) Use CasesM1
  • Vorstellung Aufgabenstellung Meilenstein 1
  • Beratung zur Tool-Auswahl für die UML-Modellierung
  • Übungen zu Use Cases
  1. Identifikation und Abgrenzung von Use Cases (Textanalyse, User Happiness Test, Coffee Break Test)
  2. Wie drückt man die Beziehung zwischen zwei Use Cases am besten aus?

  3. Szenarien im Template erfassen
3

08.11.2021
10:00 - 17:00

Start:
Zoom + 501

Dann:
501, 2101, 2103, Discord

2) Fachliches Datenmodell

M2

  • Übungen zu fachlichem Glossar und Datenmodell
  • Übungen zum Abgleich der beiden
  1. Erstellung eines fachlichen Glossars aus einem gegebenen Anforderungstext
  2. Erstellung des fachlichen Datenmodells aus dem Glossar
  3. Abgleich Fachliches DM - Use Cases via CRUD-Matrix
4

29.11.2021
10:00 - 17:00

Start:
Zoom + 501

Dann:
501, 2101, 2103, Discord

3) Logisches Datenmodell

M3
  • Vorstellung Aufgabenstellung Meilenstein 2
  • Übungen zum Logischen Datenmodell
  • Fragen zu DDD
  • Taktische vs. strategische Architektur
  • Basic Building Blocks: Entities, Value Objects, Repository
  • Unterscheidung Entity - Value Object

Übung für den Workshop hier: Übung Transformation zum logischen Datenmodell

  1. Identifikation von Stamm-, Änderungs- Bestands-, Bewegungsdaten
  2. Bereinigung eines vorgegebenen Fachlichen Datenmodells
  3. Unterschied Entity - Value Object
5

13.12.2021
10:00 - 17:00

Start:
Zoom + 501

Dann:
501, 2101, 2103, Discord

4) Umsetzung via JPA

M4
  • Grundprinzipien von Spring: Dependency Injection und andere elementare Patterns
  • Praktische Einführung in Spring
  • ORM-Mapping mit Spring
  • Durchgehen von praktischen Programmieraufgaben

Hier findet sich die Übung für heute:

Workshop 11.1.21: Übung M2 (Beziehungen)

  1. Entity und Repo
  2. Umsetzung Value Object
  3. 1:1 - Assoziation
  4. 1:n - Assoziation
  5. n:m - Assoziation
6

03.01.2022
10:00 - 17:00

Start:
Zoom + 501

Dann:
501, 2101, 2103, Discord

5) Verhaltens-modellierung

Aktivitäts-diagramme
Statusdiagramme

M5
  • Fragen zu verschiedenen Verhaltens-Sichten
  • Übungen zur Erstellung der Aktivitätsdiagramme
  • Fragen zu Statusdiagrammen und zur Umsetzung in Code
  1. Erstellung Aktivitätsdiagramm, ausgehend von UC-Szenario

Übung steht hier: ST1 - Workshop M3: Aktivitätsdiagramme (25.01.21)

  1. Erstellung Zustandsdiagramm
  2. Umsetzung in Code
7

24.01.22
10:00 - 17:00

Start:
Zoom + 501

Dann:
501, 2101, 2103, Discord

Fragen, Wiederholung und Klausur-vorbereitung
Stoff der gesamten Veranstaltung
  • Offene Punkte werden vorher als Umfrage abgefragt
  • Dann gezielt Beantwortung von Fragen
  • Übungen zu den genannten offenen Punkten

Tools

Sie brauchen für die Veranstaltung (insbesondere für das Praktikum) zwei Arten von Tools. 

UML Modelling

Aus technischen Gründen setzen wir als UML-Editor UMLet voraus (wir können mittlerweile mit dem von uns entwickelten Praktikums-Tooling Divekit auch UML-Diagramme im UMLet-XML-Format automatisch prüfen). Sie müssen also UMLet für die Praktikums-Diagramme nutzen und diese Diagramme im UMLet-Format (also nicht als Grafikdatei) pushen. 

Java Development

Für die Java-Entwicklung brauchen Sie zwei Arten von Tools: 

  • Git: am besten die Git Bash
  • IDE: hier bieten sich zwei Optionen an: 
    • IntelliJ Ultimate (frei für Studierende, unsere Empfehlung)
    • Visual Studio Code

Praktikum

Das Praktikum besteht aus sechs Meilensteinen (M0 - M5). Es deckt die wesentlichen Teile des Vorlesungsstoffes ab, indem es Aufgaben mit einem konzeptionellen Lernanteil in einer praktischen Implementierung verlangt. 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)07.10.22.10. 16:00 Uhr
M1Use Cases (Domain Exploration)25.10.05.11. 16:00 Uhr
M2Fachliches Datenmodell (Domain Exploration)08.11.26.11. 16:00 Uhr
M3Logisches Datenmodell (Structural Domain Modelling)29.11.10.12. 16:00 Uhr
M4Implementierung mit JPA (Structural Domain Modelling)13.12.

03.01 16:00 Uhr

M5Verhaltensmodellierung (Dynamic Domain Modelling)03.01.21.01. 16:00 Uhr

Anmeldung

Um im Sommersemester 2021 am ST2-Praktikum teilzunehmen, sind zwei Schritte erforderlich:

  1. treten Sie der Praktikumsgruppe im ILIAS-Kurs bei
  2. Melden Sie sich einmalig unter https://git.st.archi-lab.io/ mit ihrer CampusID an - das wars

Die Deadline hierzu ist Mittwoch der 06.10. 23:59 Uhr.

Betreuungsteam

  • Fabian Krampe (fabian.krampe@th-koeln.de)
    • Ansprechpartner für technische Problem mit Gitlab oder der sonstigen Infrastruktur, sowie in Fragen der Programmierung
    • Primärer Ansprechpartner für die inhaltlichen Fragen im Praktikum 
    • erreichbar am besten über den Discord-Server, ersatzweise per Email
    • Sie dürfen gerne außerhalb "üblicher" Zeiten Fragen stellen, eine Antwort dauert dann unter Umständen nur etwas länger.
  • Stefan Bente (stefan.bente@th-koeln.de
    • Ansprechpartner für Feedback zur Veranstaltung, weitergehende Fragen / Anregungen / Wünsche, Rückfragen zu Vorlesungsinhalten
    • Erreichbar am besten Discord, wenn es um Fragen von allgemeinem Interesse geht
      • bei persönlichen Anliegen am besten per Email (antwortet in der Regel innerhalb eines Tages, sonst bitte nochmal nachfragen)
    • für weitergehende Anliegen am besten eine Sprechstunde buchen: https://calendly.com/bente/termine
  • Philipp Schmeier (philipp.schmeier@th-koeln.de)
    • Unterstützt zu "Stoßzeiten" 

Organisation des Praktikums

  • Es wird keine von uns verwaltete Praktikumsgruppen mehr geben. Jede*r Teilnehmer*in liefert eine individuelle Lösung ab. Sie sind aber herzlich eingeladen, sich selber in Lerngruppen zu organisieren.
  • Die Abnahme erfolgt durch "git push" auf unseren Gitlab Server.
  • Feste Praktikumstermine wird es ebenfalls nicht mehr geben. In den ST-Workshoptagen machen wir Übungen zu dem Stoff der Vorlesung. In der verbleibenden Zeit können Sie schon einmal anfangen, am Praktikum zu arbeiten. Das Betreuerteam ist dann verfügbar, um Fragen zu beantworten. 
  • Für den Austausch untereinander sowie Fragen an die Betreuer wurde ein Discord-Server erstellt (siehe oben). Der Beitritt ist freiwillig, allerdings (als einfachste Lösung) zu empfehlen. Wer eine Frage zum Praktikum hat und den Discord-Server nicht nutzen möchte, kann auch Jann Intveen direkt ansprechen. 

Regeln

  1. Das bestandene Praktikum ist Voraussetzung für die Teilnahme an der Klausur
  2. Das Praktikum wird nicht benotet. Man kann auch keine Bonuspunkte erwerben.
  3. Das Praktikum ist bestanden, wenn alle Meilensteine erfolgreich bestanden wurden
  4. Ein Meilenstein ist bestanden, wenn die automatisierten Tests alle bestanden wurden
  5. Sind bis zur Deadline nicht alle Tests erfolgreich, so gilt der Meilenstein (und somit das Praktikum) als nicht bestanden.
  6. Wer über Discord oder auf anderem Wege ganze Lösungen teilt, begeht einen Täuschungsversuch und wird aus dem Praktikum ausgeschlossen
  7. Sich gegenseitig zu helfen ist aber ausdrücklich erwünscht! Nutzen Sie Discord (den #praktikum Channel), um über Probleme zu diskutieren. Sie sollen einfach nur nicht Ihre eigenen Lösungen dort posten.

Individualisierung

Alle Meilensteine (M0 - M5) sind für Sie persönlich individualisiert. Lösungen können also nicht einfach zwischen den Aufgabenstellungen ausgetauscht werden.

Wie funktioniert die Praktikumsbearbeitung und Abgabe?

Lösen der Aufgabe

Um die Aufgaben erfolgreich bearbeiten zu können, muss sich der Student sein eigenes Repository lokal klonen (mit Git). Achtung: Um die Funktionalität des Projekts zu gewährleisten, sollten Sie nichts, was außerhalb des Ordners "src/main" liegt, verändern.

Testseite

Für jede/n Student*in wird eine persönliche Testseite generiert. Diese listet sämtliche Tests des Übungsprojektes auf und wird bei jeder Codeänderung aktualisiert (dauert teils mehrere Minuten). Erst wenn alle Tests auf der Testseite grün markiert sind, gilt der Meilenstein als bestanden. Anhand der Testseite ist erkennbar, wer die einzelnen Meilensteine besteht und wer nicht. Der Link zur Testseite hängt von dem jeweiligen Repository-Namen ab. Hier eine schrittweise Anleitung, wie man zur jeweiligen eigenen Testseite kommt.

  • (1) Als erstes ist es wichtig, die UUID des Projekts herauszufinden. Dazu schauen wir uns den Namen des Projekts an und kopieren die UUID aus dem Ende des Namens. Im folgenden Screenshot ist die UUID rot markiert:

SSH

Wer im Gitlab kein Passwort hinterlassen möchte, um auf das remote Repository zu pushen kann sich auch einen ssh key generieren und diesen in gitlab eintragen. Eine Anleitung hierzu findet man hier: https://docs.gitlab.com/ee/ssh/. Da sich durch Nutzung von SSH unter anderem das Protokoll ändert, muss man beim Clonen eines Repositories den Link anpassen. Normalerweise würde man ein Repository mit folgendem Befehl klonen:

git clone https://git.st.archi-lab.io/students/st1/meilenstein-0/basics_group_<uuid>

Durch Nutzung von SSH würde sich dieser Befehl zu folgendem ändern:

git clone ssh://git@git.st.archi-lab.io:22996/students/st1/meilenstein-0/basics_group_<uuid>.git