Sichere und effiziente Softwareproduktlinien
Zusammenfassung der Projektergebnisse
In vielen Industriezweigen wie der Automobilindustrie ist die Verwendung von Produktlinientechnologie weit verbreitet und äußerst erfolgreich. Inspiriert von diesem Erfolg gewinnen Produktlinien auch in der Softwareindustrie zunehmend an Bedeutung. Bei der Entwicklung von Produktlinien ist das Hauptziel die systematische Wiederverwendung von Softwareartefakten (Features) zur weitestgehend automatisierten Generierung von Softwareprodukten bzw. Softwaresystemen auf Basis von Kundenwünschen. Wenn Softwaresysteme automatisch aus Einzelteilen (Features) generiert werden stellt sich die Frage, ob die generierten Systeme korrekt sind. In Systemen mit vielen Features kann ein Entwickler typischerweise nicht das Verhalten von allen Features gleichzeitig detailliert kennen, was zu (ungewollten) Wechselwirkungen zwischen Features führen kann (Feature-Interaktionen). Typprüfung, Testen und Verifikation sind erprobte Methoden um Softwarefehler aufzudecken. Im Kontext von Produktlinien stoßen diese Methoden jedoch durch die oft exponentielle Anzahl von Systemvarianten an ihre Grenzen. Aus einem System mit 33 optionalen und unabhängigen Features kann schon für jeden Menschen auf dem Planeten eine eigene Systemvariante generiert werden. Jedes Variante zu generieren und separat zu prüfen ist damit praktisch unmöglich. Weiterhin stellt sich die Frage nach der optimalen Systemvariante für ein bestimmtes Anwendungsszenario. In vielen konfigurierbaren Systemen ist der Einfluss von Features auf die Systemeffizienz nicht oder nur grob bekannt („Feature A sollte das System beschleunigen wenn Situation X oft eintritt.“). Aufgrund solcher Informationen ist es oft schwierig, die optimale Systemvariante für ein gegebenes Anwendungsszenario zu bestimmen. Zudem ist es durch die hohe Variantenanzahl in konfigurierbaren Systemen nicht möglich, die Effizienz aller Systemvarianten einzeln zu testen. Die konkreten Ziele des Projekts SAFESPL waren: • die Korrektheitsprüfung von Produktlinien zu verbessern, • die Effizienz von Systemvarianten praktikabel zu bestimmen und zu optimieren, • Interaktionen zwischen Features einer Produktlinie aufzudecken sowie deren Struktur zu untersuchen und • ein formales Verständnis von Variabilität, Features und Feature-Interaktionen zu entwickeln. Im Projekt SAFESPL wurden zur Erreichung dieser Ziele verschiedene Techniken zur Korrektheitsprüfung von Produktlinien und zur automatischen Bestimmung von effizienten Konfigurationen erforscht. Dazu haben wir insbesondere die Rolle von Feature-Interaktionen für Korrektheits- und Effizienzaspekte untersucht und modelliert. Weiterhin haben wir unsere Erkenntnisse über Produktlinienanalyse auf andere Bereiche (z. B. Analyse von ANDROID-Apps) übertragen, um dort effiziente Analysen zu realisieren. Konkret liegen folgende Ergebnisse aus SAFESPL vor: • Techniken und Werkzeuge zur effizienten Analyse von Produktlinien mit realistischen Konfigurationsräumen • Techniken und Werkzeuge zur Vorhersage und Optimierung von nicht-funktionalen Eigenschaften von Produktlinien mit realistischen Konfigurationsräumen • Modelle zur Repräsentation, Analyse und Vorhersage von Feature-Interaktionen • Modelle zum Vergleich und zur Kombination von Analysestrategien für Produktlinien • Empirische Studien (Daten, Auswertungen, Experimententwürfe, etc.) und Ergebnisse zu Stärken und Schwächen von Analysestrategien für Produktlinien und zur Rolle von Feature-Interaktionen in diesem Zusammenhang.
Projektbezogene Publikationen (Auswahl)
-
Predicting Performance via Automated Feature-Interaction Detection. In Proceedings of the International Conference on Software Engineering (ICSE), pages 167–177. IEEE, 2012
N. Siegmund, S. Kolesnikov, C. Kästner, S. Apel, D. Batory, M. Rosenmüller, and G. Saake
-
Scalable Analysis of Variable Software. In Proceedings of the European Software Engineering Conference and the International Symposium on the Foundations of Software Engineering (ESEC/FSE), pages 81–91. ACM, 2013
J. Liebig, A. von Rhein, C. Kästner, S. Apel, J. Dörre, and C. Lengauer
-
Strategies for Product-Line Verification: Case Studies and Experiments. In Proceedings of the International Conference on Software Engineering (ICSE), pages 482–491. IEEE, 2013
S. Apel, A. von Rhein, P. Wendler, A. Größlinger, and D. Beyer
-
Variability-Aware Performance Prediction: A Statistical Learning Approach. In Proceedings of the International Conference on Automated Software Engineering (ASE), pages 301–311. IEEE, 2013
J. Guo, K. Czarnecki, S. Apel, N. Siegmund, and A. Wasowski
-
A Classification and Survey of Analysis Strategies for Software Product Lines. ACM Computing Surveys, 47(1):6:1–6:45, 2014
T. Thüm, S. Apel, C. Kästner, I. Schaefer, and G. Saake
-
Cost-Efficient Sampling for Performance Prediction of Configurable Systems. In Proceedings of the International Conference on Automated Software Engineering (ASE), pages 342–352. IEEE, 2015
A. Sarkar, J. Guo, N. Siegmund, S. Apel, and K. Czarnecki
-
Morpheus: Variability-Aware Refactoring in the Wild. In Proceedings of the International Conference on Software Engineering (ICSE), pages 380–391. IEEE, 2015
J. Liebig, A. Janker, F. Garbe, S. Apel, and C. Lengauer
-
Performance-Influence Models for Highly Configurable Systems. In Proceedings of the European Software Engineering Conference and the International Symposium on the Foundations of Software Engineering (ESEC/FSE), pages 284–294. ACM, 2015
N. Siegmund, A. Grebhahn, S. Apel, and C. Kästner
-
Presence-Condition Simplification in Highly Configurable Systems. In Proceedings of the International Conference on Software Engineering (ICSE), pages 178–188. IEEE, 2015
A. von Rhein, A. Grebhahn, S. Apel, N. Siegmund, D. Beyer, and T. Berger
-
Using Bad Learners to find Good Configurations. In Proceedings of the European Software Engineering Conference and the International Symposium on the Foundations of Software Engineering (ESEC/FSE), pages 257–267. ACM, 2017
V. Nair, T. Menzies, N. Siegmund, and S. Apel