Automatisierung der Synchronisation von Software-Varianten
Covid-19 Information:
Das Semesterprojekt findet statt und ist zunächst als Präsenzveranstaltung geplant. Details hierzu werden an alle über Agnes registrierten Teilnehmer*innen versendet.
Wann und Wo
Semesterprojekt: Mittwoch, 9-13 Uhr, RUD 25, 4.112
Wer
Dozent: Alexander Schultheiß
Beschreibung und Aufbau der Lehrveranstaltung
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.