In diesem Semesterprojekt stehen zunächst die Grundlagen statischen Variabilitätsmanagement im Fokus. Ziel ist es einen breiten Überblick über die wichtigsten Techniken und Konzepte statischen Variabilitätsmanagements zu gewinnen; dazu gehören unter anderem Software-Produktlinien, Feature-Modelle, bedingte Kompilierung, Feature-Tracing, Feature-Extraction, und Change Synchronization.
Software wird oft in mehreren Varianten entwickelt werden, um alle Kundenanforderungen zu erfüllen. Diese Varianten werden häufig nach dem Clone-and-Own-Prinzip entwickelt: Eine neue Variante eines Softwaresystems wird durch Kopieren und Anpassen einer bestehenden Variante erstellt. Während Clone-and-Own sehr flexibel ist und kaum Vorabplanung benötigt, verursacht es langfristig einen hohen Wartungsaufwand, da sich die geklonten Varianten parallel weiterentwickeln. Bestimmte Änderungen - wie z. B. Fehlerkorrekturen oder Erweiterungen gemeinsamen Codes - müssen daher zwischen den Varianten propagiert werden.
Zwar existieren Techniken, um Änderungen an einer Quellcodedatei automatisch auf eine andere zu übertragen (z.B. git cherry-pick oder UNIX diff & patch), jedoch sind diese primär für die (parallele) Entwicklung verschiedener Versionen einer einzelnen Variante gedacht; sie berücksichtigen das Ausmaß der Variabilität, die durch Unterschiede im Quellcode der verschiedenen Varianten abgebildet ist, nicht. Im Seminar werden neue Techniken, welche die Synchronisation von Varianten vorantreiben, entworfen, implementiert, und validiert.
- Kursverantwortliche/r: Alexander Schultheiss