EvoLine - Correct Evolution of Software Product Lines

The EvoLine-project is part of the Priority Programme SPP1593: Design For Future – Managed Software Evolution of the DFG (German Research Foundation). The SPP is the first programme of the DFG in the domain of software engineering and focuses on the research on the evolution of software. In this SPP, the EvoLine proposal of the Software Systems Engineering (SEE) group at the University of Hildesheim was accepted. The EvoLine-project aims at the research and improvement of the evolution of product lines. The project partner of the SSE group is the Software Engineering group of the University of Bremen which focuses on reengineering.
EvoLine aims at the continuous and correct evolution of software product lines. A product line is a set of related products that is developed on the basis of a common infrastructure. This allows the derivation of different products based on heavy reuse of the realization artifacts. A mayor challenge of the evolution of product lines is the close relation between the individual products as well as the longevity of the product line in contrast to single products. The goal of the EvoLine-project is the development of methods and tools for the correct and consistent evolution of software product lines to support long-term, successful evolution.
In the EvoLine-project, the focus is on the continuous evolution of long-living product lines in the domain of embedded systems and, in particular, industrial automation systems. However, we assume that the results of the project will be applicable to other types of product lines. In this domain, variability is typically realized as static pre-processor directives or as explicit configuration variables. This complicates the evolution significantly, as it is not enough to evaluate the correct evolution of a single program, but of all possible programs. In particular, we have to consider the relation between configuration options (the so-called variability model) and the program code. Thus, the continuous evolution of long-living product lines requires the consistent further development of the code and the variability model to avoid erroneous configurations or not-configurable products. The goal of the EvoLine project is to identify errors because of inconsistent evolution.
In EvoLine, the Software Systems Engineering (SSE) group at the University of Hildesheim focuses on the analysis of the variability model the automated identification of changes in the course of evolution. For this purpose, techniques for the automated analysis of configurations known from the domain of software product line engineering (SPLE) will be applied, e.g. if the configuration is free of errors, the estimation of the number of products, etc. These techniques will be further developed for the domain of industrial automation systems. SPLE is an approach for efficient reuse of software artifacts aiming at the automation of configuration and adaptation of product variants. This approach reduces both development costs and time-to-market while increasing quality of the software artifacts. The focus of the research of the SSE group is on modern methods and techniques to achieve high efficiency and flexibility in software development.
SPP-Website: www.dfg-spp1593.de
Duration: 3 years
Contact: Prof. Dr. Klaus Schmid
Further information:
The EvoLine-project is partially supported by the DFG (German Research Foundation) under the Priority Programme SPP1593: Design For Future – Managed Software Evolution.
Publications
S/N | Publication |
---|---|
2023 | |
10. |
Christian Kröher, Lea Kristin Gerling and Klaus Schmid
(2023):
Comparing the Intensity of Variability Changes in Software Product Line Evolution
In: Journal of Systems and Software, 203.
abstract 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 and 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)
vol. P-292.
pp. 105-106.
Gesellschaft für Informatik e.V. (GI).
abstract 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 and Christopher Voges
(2017):
Understanding Variable Code: Reducing the Complexity by Integrating Variability Information
In:
Lecture Notes in Informatics (LNI) - Software Engineering (SE '17)
abstract 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 and Klaus Schmid
(2016):
Mismatched Configuration Information of Linux
number / issue 1/2016, SSE 1/16/E.
Software Systems Engineering, Institut für Informatik, Universität Hildesheim.
abstract 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 and 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.
abstract 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 and Klaus Schmid
(2015):
Analysing the KConfig Semantics and Related Analysis Tools
In:
Hildesheimer Informatik-Berichte
number / issue 1/2015, SSE 1/15/E.
abstract 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 and 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
pp. 45-54.
ACM.
abstract 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 and Dierk Lüdemann
(2013):
Towards identifying evolution smells in Software Product Lines
In:
Stefan Sauer and Benjamin Klatt and Thomas Ruhroth (ed.):
Proceedings of the 5th Workshop "Design For Future - Langlebige Softwaresysteme" (DFF)
Gesellschaft für Informatik e.V. (GI).
abstract 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 and 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 and Malte Lochau (2010): Evolving Adaptable Systems: Potential and Challenges In: Softwaretechnik-Trends, 30 (2): 48-49. |
