Implementierungstechniken für Software-Produktlinien
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.
Inhalte
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
Zum Nachlesen und Vertiefen empfehlen wir euch die folgenden (englischsprachigen) Bücher. Downloads sind verfügbar im Uninetz oder nach Anmeldung mit URZ-Account.
- begleitend zur Vorlesung: Feature-Oriented Software Product Lines (PDF, EPUB)
- begleitend zur Übung: Mastering Software Variability with FeatureIDE (PDF)
Organisatorisches
Die Vorlesung richtet sich Masterstudierende (6CP) an der FIN (Wahlpflichtfach in den Studiengängen INF, CV, WIF, INGIF und DE). Bachelorstudierende können gegen Ende ihres Studiums das Modul auf Antrag aus dem Master vorziehen.
- Vorlesung und Übung (2+2 SWS, 6 CP)
- Prüfungszulassung mit Votierungssystem (siehe Moodle, für Masterstudierende gibt es zusätzliche Aufgaben)
- Die Prüfung ist mündlich
- Termine und Material in der rechten Randspalte