KernelHaven – An Experimentation Workbench for Analyzing Software Product Lines

Systematic exploration of hypotheses is a major part of any empirical research. In software engineering, we often produce unique tools for experiments and evaluate them independently on different data sets. In this paper, we present KernelHaven as an experimentation workbench supporting a significant number of experiments in the domain of static product line analysis and verification. It addresses the need for extracting information from a variety of artifacts in this domain by means of an open plug-in infrastructure. Available plug-ins encapsulate existing tools, which can now be combined efficiently to yield new analyses. As an experimentation workbench, it provides configuration-based definitions of experiments, their documentation, and technical services, like parallelization and caching. Hence, researchers can abstract from technical details and focus on the algorithmic core of their research problem. KernelHaven supports different types of analyses, like correctness checks, metrics, etc., in its specific domain. The concepts presented in this paper can also be transferred to support researchers of other software engineering domains. The infrastructure is available under Apache 2.0: https://github.com/KernelHaven. The plug-ins are available under their individual licenses.

[1]  Michael Goedicke,et al.  A Conceptual Framework and Experimental Workbench for Architectures , 2012, Software Service and Application Engineering.

[2]  Carl Boettiger,et al.  An introduction to Docker for reproducible research , 2014, OPSR.

[3]  Richard C. Holt,et al.  Mining Kbuild to Detect Variability Anomalies in Linux , 2012, 2012 16th European Conference on Software Maintenance and Reengineering.

[4]  Krzysztof Czarnecki,et al.  Where Do Configuration Constraints Stem From? An Extraction Approach and an Empirical Study , 2015, IEEE Transactions on Software Engineering.

[5]  Wolfgang Schröder-Preikschat,et al.  A robust approach for variability extraction from the Linux build system , 2012, SPLC '12.

[6]  Harald C. Gall,et al.  Using Docker Containers to Improve Reproducibility in Software Engineering Research , 2016, 2016 IEEE/ACM 38th International Conference on Software Engineering Companion (ICSE-C).

[7]  Z. Merali Computational science: ...Error , 2010, Nature.

[8]  Gunter Saake,et al.  A Classification and Survey of Analysis Strategies for Software Product Lines , 2014, ACM Comput. Surv..

[9]  Wolfgang Schröder-Preikschat,et al.  Efficient extraction and analysis of preprocessor-based variability , 2010, GPCE '10.

[10]  Klaus Schmid,et al.  Product Line Engineering , 2013, IEEE Software.

[11]  ApelSven,et al.  A Classification and Survey of Analysis Strategies for Software Product Lines , 2014 .

[12]  Chih Jeng Kenneth Tan Computational science , 2002, Future Gener. Comput. Syst..

[13]  Sebastian Erdweg,et al.  Variability-aware parsing in the presence of lexical macros and conditional compilation , 2011, OOPSLA '11.

[14]  Klaus Schmid,et al.  The Product Line Engineering Approach , 2007 .

[15]  Klaus Schmid,et al.  From Reproducibility Problems to Improvements: A journey , 2016, Softwaretechnik-Trends.