Mehr Details zur Lehrveranstaltung finden Sie in Stud.IP und TUconnect.
Inhalte
Moderne Software muss häufig auf vielen Plattformen verfügbar sein und an viele verschiedene Bedürfnisse von Nutzern und Kunden angepasst sein. Dies trifft auf Systemsoftware (z.B. Betriebssysteme), Anwendungssoftware (z.B. Textverarbeitung und Spiele) und auf komplexe Cyber-Physische Systeme (z.B. Automobile) zu. Die dadurch entstehende Konfigurationsvielfalt bringt Herausforderungen für die Entwicklung, das Testen und die Wartung solcher Systeme. Die Vorlesung Software-Produktlinien vermittelt unter anderem, wie die Konfigurierbarkeit von Systemen modelliert werden kann, welche Implementierungstechniken es erlauben erweiterbare und konfigurierbare Software zu entwickeln, und mit welchen Strategien trotz einer exponentiellen Anzahl an Varianten noch sinnvoll getestet werden kann.
Die Veranstaltung umfasst folgende Inhalte:
- Einführung zu Software-Variabilität und inhärenter Herausforderungen
- Modellierung und Analyse der angestrebten Variabilität
- Implementierung von Variabilität zur Laufzeit (z.B. Konfigurationsoptionen) und zur Compilezeit (z.B. Clone-and-Own)
- Implementierung von Software-Produktlinien:
- Implementierung von Features mit Hilfe von Conditional Compilation (z.B. Präprozessoren und Build-Systemen)
- Modulare Implementierung von Features (z.B. Komponenten, Services und Plug-Ins)
- Grenzen der Objektorientierung und Erweiterungen der Objektorientierung (z.B. Feature-Module, Aspekte)
- Entwurfsmuster für Software-Variabilität
- Vorgehensmodelle für den Einsatz und zur Entwicklung von Software-Produktlinien
- Probleme und der Umgang mit Feature-Interaktionen
- Methoden zur statischen und dynamischen Qualitätssicherung von Software-Produktlinien
- Evolution und Wartung von Software-Produktlinien
- Aktuelle Themen aus Forschung und Praxis
Lernergebnisse und Kompetenzen
Studierende sind in der Lage ...
- Grenzen traditioneller Programmiertechniken bzgl. der Entwicklung von variabler Software zu benennen.
- Modellierung, Analyse und Konfiguration von Variabilität in Software-Produktlinien zu beschreiben.
- verschiedene Implementierungstechniken für die Entwicklung von Software-Produktlinien anzuwenden.
- die Eignung von vorgestellten Programmiertechniken für unterschiedliche Entwicklungsszenarien zu bewerten.
- Techniken zur Qualitätssicherung für Software-Produktlinien und damit einhergehenden Herausforderungen zu erklären.
Methodische Umsetzung
In der Vorlesung wird ein theoretischer Überblick über Techniken zur Modellierung, Implementierung und Analyse von konfigurierbaren Systemen vermittelt. In der Übung wird dieses Wissen durch Anwendungsaufgaben weiter vertieft und das praktische Verständnis durch die Entwicklung eigener Software-Produktlinien unter Zuhilfenahme unterschiedlicher Programmiertechniken gefördert. Die zu entwickelnden Software-Produktlinien können dabei zum Teil individuell gewählt werden, so dass Studierende die Möglichkeit haben in einer für sie interessanten Domäne Programmiererfahrung zu sammeln.
Empfohlene Vorkenntnisse
Grundlegende Kenntnisse in Logik (insb. Aussagenlogik) und Softwaretechnik (insb. Vorgehensmodelle, UML Klassendiagramme, Entwurfsmuster) sowie Programmiererfahrung (z.B. in Java) werden vorausgesetzt.
Literatur
- Feature-Oriented Software Product Lines - Concepts and Implementation; Sven Apel, Don Batory, Christian Kästner, Gunter Saake; Springer, 2013
- Mastering Software Variability with FeatureIDE; Jens Meinicke, Thomas Thüm, Reimar Schröter, Fabian Benduhn, Thomas Leich, Gunter Saake; Springer, 2017