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:
Studierende sind in der Lage ...
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.
Grundlegende Kenntnisse in Logik (insb. Aussagenlogik) und Softwaretechnik (insb. Vorgehensmodelle, UML Klassendiagramme, Entwurfsmuster) sowie Programmiererfahrung (z.B. in Java) werden vorausgesetzt.