MIN120: Fortgeschrittenes Software Engineering

Kernmodule

MIN120: Fortgeschrittenes Software Engineering

Kurzporträt MIN120: Fortgeschrittenes Software Engineering
Worum geht es? Fortgeschrittenes Software Engineering behandelt Methoden und Entscheidungen für die Entwicklung komplexer Softwaresysteme. Themen sind Softwarearchitektur, Architekturentscheidungen, Clean Code, technische Schulden, Testverfahren, modellbasierte Ansätze und KI-gestützte Entwicklungswerkzeuge.
Wofür braucht man es? Die Kompetenzen werden gebraucht, um größere Softwaresysteme methodisch zu planen, zu entwerfen, zu testen und langfristig weiterzuentwickeln. Sie sind wichtig für Architekturrollen, technische Leitung, Qualitätssicherung und anspruchsvolle Entwicklungsaufgaben.
Wieso ist es interessant? Spannend ist das Modul, weil gute Software nicht nur aus funktionierendem Code besteht. Architektur, Verständlichkeit, Testbarkeit, Wartbarkeit und Entwicklungsprozesse entscheiden darüber, ob Systeme langfristig tragfähig bleiben.
Modulverantwortung

Prof. Dr. Thomas Nitsche

Lehrperson(en)
  • Prof. Dr. Thomas Nitsche
  • Prof. Dr. Nils Kopal
Verwendbarkeit

Master Informatik

Fächergruppe

Informatik

Modultyp
Wahlpflicht
Sprache

Deutsch

Angebot

Sommersemester

Dauer

1 Semester

Credits

5 ECTS

Benotung

Deutsche Notenskala 1-5

SWS

4SL

Workload
Präsenzstudium: 45 Std. Selbststudium: 90 Std.
Engl. Titel

Advanced Software Engineering

Empfohlene Voraussetzungen

Empfohlen werden auf Bachelor-Niveau erworbene Programmierkompetenzen in einer Objekt-orientierten Sprache, sowie grundlegende Kenntnisse im Bereich Software Engineering, die im Software-Pfad des Bachelor-Studiums vermittelt wurden.

Lernergebnisse / Kompetenzen
WAS

Mit erfolgreichem Abschluss des Moduls sind die Studierenden in der Lage, fortgeschrittene Methoden, Vorgehensmodelle, Standards und Arbeitsformen des modernen Software Engineerings anzuwenden und deren Chancen und Risiken zu beurteilen. Sie können die Planung, den Entwurf und die Durchführung sowie den Test und die Qualitätssicherung bei der Entwicklung komplexer Softwaresysteme übernehmen. Darüber hinaus können sie Softwarearchitekturstile und -muster zielgerichtet einsetzen und Systeme zu modellieren.

WOMIT

Die Studierenden erreichen dieses Lernergebnis, indem sie

  • fortgeschrittene Methoden, Vorgehensmodelle und Standards des Software Engineerings auf konkrete Aufgabenstellungen anwenden und hinsichtlich ihrer Eignung bewerten,
  • aktuelle Verfahren und Methoden auswählen und nutzen um wartungsfreundlichen Code zu entwickeln,
  • moderne KI- und Agenten-basierte Entwicklungsumgebungen und Prozesse einsetzen,
  • Prinzipien der Softwarearchitektur sowie Architekturstile, Architekturdokumentationen, Muster, Frameworks und Referenzarchitekturen mit standardisierten Verfahren untersuchen, bewerten und zielgerichtet einsetzen,
  • Verfahren und Systeme zum Testen von Software anwenden und deren Beitrag zur Qualitätssicherung beurteilen,
  • modellbasierte Entwicklungsansätze sowie formale Modelle und Verifikationsverfahren erproben,
  • Übungsaufgaben im Rahmen einer seminaristischen Lehrveranstaltung selbstständig und unter Einbezug ergänzender Fachliteratur bearbeiten.
WOZU

Die Studierenden nutzen diese Kompetenzen, um komplexe Softwaresysteme methodisch fundiert zu planen, zu entwerfen, zu entwickeln, zu testen und qualitätszusichern. Sie sind dadurch in der Lage, geeignete Architektur-, Modellierungs- und Entwicklungsentscheidungen zu treffen, deren Chancen und Risiken abzuschätzen und die Qualität, Nachvollziehbarkeit und Verlässlichkeit von Softwaresystemen sicherzustellen.

Inhalte
  • Forteschrittene Software-Architektur (Prinzipen, Architektur-Stile, Architekturdokumentation, Muster, Frameworks, Referenzarchitektur)
  • KI- und Agenten-basierte bzw. unterstützte Entwicklungsumgebungen wie z.B. Open Code
  • Clean Code und SOLID-Design-Framework
  • Architektur-Stile, z.B. Microservices
  • Anti Patterns, Dark Patterns
  • Technische Schulden
  • Bewertungsverfahren wie z.B. ATAM (Architecture Tradeoff Analysis Method) oder SAAM (Software Architecture Analysis Method)
  • Fortgeschrittenes Testen und Testsysteme, z.B. Test Driven Development und Behaviour Driven Development
Prüfungsvorleistung

Präsentation eines wissenschaftlichen Papers im Bereich Software Engineering (ggfs. in einer Gruppe)

Prüfungsleistung

Mündliche Prüfung.

Literatur
  • Gernot Starke: Effektive Softwarearchitekturen: Ein praktischer Leitfaden. 10. Auflage. Carl Hanser Verlag, 2024. ISBN 978-3-446-47672-1.
  • Robert C. Martin: Clean Code: A Handbook of Agile Software Craftsmanship. 2. Auflage. Addison-Wesley Professional (Pearson), 2025. ISBN 978-0-13-539857-9.
  • Mark Richards, Neal Ford: Handbuch moderner Softwarearchitektur: Architekturstile, Patterns und Best Practices. 2. Auflage. O’Reilly, 2026. ISBN 978-3-96009-277-3.
  • Maurício Aniche: Effective Software Testing: A Developer’s Guide. Manning Publications, Shelter Island, 2022. 328 Seiten. ISBN 978-1-63343-993-1.
  • Eric Evans: Domain-Driven Design: Tackling Complexity in the Heart of Software. 1. Auflage. Addison-Wesley Professional, 2003. ISBN 978-0-321-12521-7