EvoLine - Korrekte Evolution von Software Produktlinien
Das Projekt EvoLine ist Teil des Schwerpunktprogramms (SPP) 1593 „Design For Future – Managed Software Evolution“ der Deutschen Forschungsgesellschaft (DFG). Das SPP ist das erste Programm der DFG im Bereich Software Engineering und beschäftigt sich mit der Forschung zur Evolution von Software. In diesem Schwerpunktprogramm wurde der Antrag der Arbeitsgruppe Software Systems Engineering (SSE) der Universität Hildesheim auf Einrichtung des Forschungsprojekts EvoLine genehmigt. Das EvoLine-Projekt zielt auf die Erforschung und Verbesserung der Evolution von Produktlinien ab. Der Projektpartner der Arbeitsgruppe SSE im dreijährigen Projekt EvoLine ist die Arbeitsgruppe Softwaretechnik der Universität Bremen, deren Fokus auf dem Reengineering liegt.
EvoLine zielt auf die kontinuierliche und korrekte Evolution von Produktlinien. Eine Produktlinie ist dabei eine Menge verwandter Produkte, die auf Basis einer gemeinsamen Infrastruktur so entwickelt wird, dass insgesamt sehr verschiedene Produkte bei gleichzeitig sehr starker Wiederverwendung der Realisierung umgesetzt werden können. Eine wesentliche Herausforderung bei der Evolution von Produktlinien ist zum einen die enge Verknüpfung der einzelnen Produkte und zum anderen die längere Lebensdauer der Produktlinie im Vergleich zu einzelnen Produkten. Das Ziel des EvoLine-Projekts ist es, Methoden und Werkzeuge zur korrekten und konsistenten Evolution von Softwareproduktlinien zu entwickeln, um so eine langfristig erfolgreiche Evolution zu gewährleisten.
Im EvoLine-Projekt wird die kontinuierliche Evolution langlebiger Produktlinien vor allem im Hinblick auf eingebettete Systeme und insbesondere Industrieautomatisierungssysteme untersucht. Es wird jedoch erwartet, dass die Ergebnisse auch für viele andere Arten von Produktlinien gültig sein werden. In diesen Domänen wird Variabilität oft statisch mit Hilfe von Präprozessordirektiven umgesetzt oder durch explizite Konfigurationsvariablen definiert. Dies erschwert die Evolution natürlich sehr, da es nicht ausreicht die korrekte Evolution eines Programms zu beurteilen, sondern von allen möglichen Programmen. Dabei ist vor allem der Zusammenhang zwischen Konfigurationsmöglichkeiten (das sogenannte Variabilitätsmodell) und Programmcode zu betrachten. Bei der kontinuierlichen Evolution langlebiger Produktlinien ist daher die konsistente Weiterentwicklung von Code und Variabilitätsmodell erforderlich, um fehlerhafte Konfigurationen oder nicht mehr konfigurierbare Produkte zu vermeiden. Ziel des EvoLine-Projekts ist daher Fehler durch eine inkonsistente Evolution rechtzeitig zu identifizieren.
Die im Projekt entwickelten Methoden und Werkzeuge ermöglichen die Identifikation und Analyse evolutionsbedingter Änderungen an Code und Variabilitätsmodell über Versionsstände hinweg. Die Ergebnisse der Analysen werden detaillierte und frühzeitige Aussagen zu möglichen Problemen erlauben, die durch die beabsichtigten Änderungen entstehen können. Mit dieser Lösung wird die Langlebigkeit von Softwareproduktlinien unterstützt und der Aufwand für Fehlererkennung und -korrektur signifikant verringert.
Die Arbeitsgruppe Software Systems Engineering am Institut für Informatik der Universität Hildesheim beschäftigt sich im Rahmen des Projekts vor allem mit der Analyse des Variabilitätsmodells und der automatisierten Identifikation von Veränderungen im Rahmen der Evolution. Hierzu werden Techniken aus dem Bereich der Softwareproduktlinienentwicklung (SPLE) zur automatisierten Analyse von Konfigurationen, wie beispielsweise die Prüfung auf Fehlerfreiheit, die Ermittlung der Anzahl möglicher Produkte, usw. angewendet und für die Domäne der Industrieautomatisierungssysteme weiterentwickelt. Softwareproduktlinienentwicklung ist ein Wiederverwendungsansatz, der eine möglichst starke Automatisierung der Konfiguration und Anpassung von Produktvarianten zum Ziel hat. Dieser Ansatz reduziert sowohl die Entwicklungskosten als auch die Zeit bis zur Produkteinführung bei gleichzeitiger Verbesserung der Qualität. Die Arbeitsgruppe Software Systems Engineering erforscht moderne Methoden und Techniken, um die Softwareentwicklung effizienter und flexibler zu machen.
SPP-Website: www.dfg-spp1593.de
Laufzeit: 3 Jahre
Kontakt: Prof. Dr. Klaus Schmid
Weitere Informationen:
Das EvoLine-Projekt wird finanziert durch die Deutsche Forschungsgesellschaft (DFG) im Rahmen des Schwerpunktprogramms SPP1593: Design For Future - Managed Software Evolution.
Publikationen
Lfd. Nr. | Publikation |
---|---|
2023 | |
10. |
Christian Kröher, Lea Kristin Gerling und Klaus Schmid
(2023):
Comparing the Intensity of Variability Changes in Software Product Line Evolution
In: Journal of Systems and Software, 203.
Zusammenfassung The evolution of a Software Product Line (SPL) typically affects multiple kinds of artifacts. The intensity (frequency and amount) in which developers change variability information in them was unknown, until we introduced a fine-grained approach for the variability-centric extraction and analysis of changes to code, build, and variability model artifacts. Its application to the commits of the Linux kernel revealed that changes to variability information occur infrequently and only affect small parts of the analyzed artifacts. Further, we outlined how these results may improve certain analysis and verification tasks during SPL evolution. However, the sole analysis of a single SPL did not allow for generic conclusions. In this paper, we extend our previous work to a comparative evolution analysis of four SPLs. We provide a detailed analysis of the individual intensities of variability changes by applying our updated approach to each SPL. A comparison of these results confirms our findings of infrequent and small changes to variability information in our previous study. However, differences in the details of these changes exist, which we cannot explain solely by the characteristics of the SPLs or their development processes. We discuss their implications on supporting SPL evolution and on our previous optimization proposals. |
2019 | |
9. |
Christian Kröher, Lea Kristin Gerling und Klaus Schmid
(2019):
Identifying the Intensity of Variability Changes in Software Product Line Evolution
In:
Proceedings of the 2019 Software Engineering and Software Management Conference (SE'19) in Lecture Notes in Informatics (LNI)
Bd. P-292.
S. 105-106.
Gesellschaft für Informatik e.V. (GI).
Zusammenfassung This extended abstract summarizes the paper Identifying the Intensity of Variability Changes in Software Product Line Evolution [KGS18] published in the proceedings of the SPLC 2018 [BBB+18]. |
2017 | |
8. |
Dierk Lüdemann, Nazish Asad, Klaus Schmid und Christopher Voges
(2017):
Understanding Variable Code: Reducing the Complexity by Integrating Variability Information
In:
Lecture Notes in Informatics (LNI) - Software Engineering (SE '17)
Zusammenfassung Um die Variabilität einer Software-Produktlinien zu handhaben, wird bei Verwendung einer C-basierten Sprache oftmals der integrierte Präprozessor genutzt. Eine bereits bewährte Methode [Sn96], um Zusammenhänge zwischen Präprozessorvariablen zu erkennen, ist der Einsatz der formalen Begriffsanalyse (FCA)3. Die aus der FCA resultierenden Verbände können jedoch sehr umfangreich sein. Daher schlagen wir ein neues Verfahren für Software-Produktlinien vor, mit dem die Größe der Verbände durch Berücksichtigung des Variabilitätsmodells reduziert werden kann. Mit Hilfe dieses neuen Verfahrens wird die FCA in unserer Arbeit zum ersten mal auf den Linux-Kernel angewendet. Dieser Beitrag erschien als Vollbeitrag bei der International Conference on Software Maintenance and Evolution (ICSME) 2016 [Lü16] |
2016 | |
7. |
Sascha El-Sharkawy, Adam Krafczyk und Klaus Schmid
(2016):
Mismatched Configuration Information of Linux
Heft / Ausgabe 1/2016, SSE 1/16/E.
Software Systems Engineering, Institut für Informatik, Universität Hildesheim.
Zusammenfassung Context. Software product line engineering has been established to minimize costs and efforts, while maximizing the quality of products in a family of software products. Software product lines typically contain a variability model, which supports the derivation of permissible variants. These variability models may contain expert/domain knowledge in the form of constraints. These constraints are used during the configuration process to avoid the selection of unsupported product variants. Problem. Developers must encode their knowledge about supported product variants and restrictions, otherwise the variability model becomes ineffective or even incorrect. The initial development of the variability model as well as the evolution of the product line implementation bear the risk that model and implementation drift apart. In this report, we introduce the notion of mismatched configuration information to describe the situation if the variability model does not react the dependencies of the implementation. This may indicate an incomplete variability model or undesired dependencies between code artifacts. Solution. We discuss the impact of mismatched configuration information and show how to detect this conceptually. Subsequently, we focus on mismatched hierarchical configuration information and present an effective heuristic for their detection. These results serve as an input to complete variability models or a code review to remove undesired implementation dependencies. We discuss the application of our approach on a Linux case study. The analysis of the x86 architecture of the Linux kernel takes only around 30 minutes and revealed mismatched configuration information, which was not treated by prior work. |
6. |
Dierk Lüdemann, Nazish Asad, Klaus Schmid und Christopher Bode
(2016):
Understanding Variable Code: Reducing the Complexity by Integrating Variability Information
In:
Proceedings of the International Conference on Software Maintenance and Evolution (ICSME'16)
IEEE.
Zusammenfassung Software product lines often use preprocessor statements as a basis for representing variability, which makes understanding the artifacts rather complex. An approach that has been proposed in the past to improve the understanding of code with preprocessor statements is formal concept analysis. This approach has been applied to a number of causes in reengineering. However, the lattices constructed by this approach can become rather large and complex. Hence, any approach that helps to reduce them can be beneficial to understanding the preprocessor-dependencies contained in the code. Here, we show how consistency analysis both within code variability and between code and a variability model can be used to reduce the complexity of a lattice, supporting the analysis of product-line code. We apply our approach to Linux, one of the largest open-source product lines, and analyze both multiple versions and different architectures. We show that our approach typically leads to reductions of the concept lattice and identify situations in which the savings can be rather significant. This leads to a reduction of any efforts for followup analysis or reverse engineering. |
2015 | |
5. |
Sascha El-Sharkawy, Adam Krafczyk, Nazish Asad und Klaus Schmid
(2015):
Analysing the KConfig Semantics and Related Analysis Tools
In:
Hildesheimer Informatik-Berichte
Heft / Ausgabe 1/2015, SSE 1/15/E.
Zusammenfassung The Linux Kernel is often used as real world use case to demonstrate novel Software Product Line Engineering techniques. The large open source repository facilitates the analysis of the variability model, the instantiation process, the instantiable artefacts, and the evolution of all of them. This report focusses on the analysis of undocumented KConfig functionalities. These functions have to be considered while applying any variability management technique to the Linux Kernel. Hence, this report will contribute to a better understanding how variability is handled in KConfig files. Further, we analyse existing work, which also analysed KConfig. Based on the weak documentation of KConfig, these works contain errors. These errors threat the validity of many existing analysis of the Linux Kernel. |
4. |
Sascha El-Sharkawy, Adam Krafczyk und Klaus Schmid
(2015):
Analysing the Kconfig Semantics and Its Analysis Tools
In:
Proceedings of the 2015 ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences
S. 45-54.
ACM.
Zusammenfassung The Linux kernel is often used as a real world case study to demonstrate novel Software Product Line Engineering research methods. An important point in this is often the analysis of the Kconfig semantics. However, we detected that the semantics of Kconfig is rather unclear and has many special cases, which are not documented in its short specification. We performed a systematic analysis to uncover the correct behaviour of Kconfig and present the results, which are necessary for applying semantically correct analyses. Further, we analyse existing analysis tools of the research community whether they are aware of the correct semantics of Kconfig. These analyses can be used for improving existing analysis tools as well as decision support for selecting an appropriate tool for a specific analysis. In summary we contribute to a better understanding of Kconfig in the research community to improve the validity of evaluations based on Linux. |
2013 | |
3. |
Klaus Schmid, Rainer Koschke, Christian Kröher und Dierk Lüdemann
(2013):
Towards identifying evolution smells in Software Product Lines
In:
Stefan Sauer and Benjamin Klatt and Thomas Ruhroth (Hrsg.):
Proceedings of the 5th Workshop "Design For Future - Langlebige Softwaresysteme" (DFF)
Gesellschaft für Informatik e.V. (GI).
Zusammenfassung As more and more companies shift to a product line approach, supporting the evolution of software product lines becomes increasingly important. While today already significant work exists along the lines of quality analysis for software product lines, there is much less work that addresses the evolution scenario. In this paper, we briefly describe different categories of approaches for identifying problems in product lines. Based on this we describe a new research direction for identifying problems in product line evolution scenarios. |
2010 | |
2. | Klaus Schmid, Holger Eichelberger, Ursula Goltz und Malte Lochau (2010): Evolving Adaptable Systems: Potential and Challenges In: Proceedings of the 2nd Workshop "Design for Future |
1. | Klaus Schmid, Holger Eichelberger, Ursula Goltz und Malte Lochau (2010): Evolving Adaptable Systems: Potential and Challenges In: Softwaretechnik-Trends, 30 (2): 48-49. |