MIN120: Fortgeschrittenes Software Engineering
Kernmodule
MIN120: Fortgeschrittenes Software Engineering
Prof. Dr. Thomas Nitsche
- Prof. Dr. Thomas Nitsche
- Prof. Dr. Nils Kopal
Master Informatik
Informatik
Deutsch
Sommersemester
1 Semester
5 ECTS
Deutsche Notenskala 1-5
4SL
Advanced Software Engineering
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.
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.
- 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äsentation eines wissenschaftlichen Papers im Bereich Software Engineering (ggfs. in einer Gruppe)
Mündliche Prüfung.
- 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