Skip to content

ComAnI plug-in for analyzing the intensity of variability information changes in KBuild-based Software Product Lines

License

Notifications You must be signed in to change notification settings

CommitAnalysisInfrastructure/VariabilityChangeAnalyzer

Repository files navigation

VariabilityChangeAnalyzer

This ComAnI plug-in realizes an analyzer for identifying the intensity of variability information changes in KBuild-based Software Product Lines [1]. It actually wraps the analysis algorithm of the ComAn tool set, which is able to identify this intensity for the Linux kernel [1,2,3] and the Coreboot firmware [3]. Wrapping this algorithm as ComAnI plug-in enables its application to other software product lines, e.g., those hosted in a SVN repository instead of a Git-based one.

Main class name: net.ssehub.comani.analysis.variabilitychange.core.VariabilityChangeAnalyzer

Support:

  • Operating system: all
  • Version control system: “git” or “svn”

For more information on how to use ComAnI and its plug-ins, we recommend reading the ComAnI Guide.

Installation

Download the VariabilityChangeAnalyzer.jar file from the release directory and save it to the ComAnI plug-ins directory on your machine. This directory is the one specified as core.plugins_dir in the configuration file of a particular ComAnI instance.

Requirements:

  • The ComAnI infrastructure has to be installed to execute this plug-in as the analyzer of a particular ComAnI instance
  • If the visualization of the analysis results is desired (see configuration parameter below):
    • The R environment has to be installed and globally executable
    • The R packages Hmisc and nortest have to be installed as part of the R environment

Execution

This plug-in is not a standalone tool, but only executable as the analyzer of a particular ComAnI instance. Therefore, it has to be defined in the configuration file via its fully qualified main class name as follows:

analysis.analyzer = net.ssehub.comani.analysis.variabilitychange.core.VariabilityChangeAnalyzer

Plug-in-specific configuration parameter(s):

The name of the SPL from which the commits are analyzed. The definition of this property is optional and only necessary, if the visualization of analysis results is desired. In that case, valid values are "[Cc]oreboot" or "[Ll]inux". All other values result in an AnalysisSetupException. Hence, this property indirectly controls the visualization.

Type: optional
Default value: none
Related parameters: none
analysis.variability_change_analyzer.target_spl = <[Cc]oreboot|[Ll]inux>

The regular expressions for identifying variability model, code, and build files. The definition of all three properties is mandatory and must follow the definition of Java regular expressions. The absence of these definitions causes an AnalysisSetupException. An example is given below for each of the parameters.

Type: mandatory
Default value: none
Related parameters: none
analysis.variability_change_analyzer.vm_files_regex = <Java-Regex>

Example: analysis.variability_change_analyzer.vm_files_regex = .*/Kconfig((\\.|\\-|\\_|\\+|\\~).*)?

Type: mandatory
Default value: none
Related parameters: none
analysis.variability_change_analyzer.code_files_regex = <Java-Regex>

Example: analysis.variability_change_analyzer.code_files_regex = .*/.*\\.[hcS]((\\.|\\-|\\_|\\+|\\~).*)?

Type: mandatory
Default value: none
Related parameters: none
analysis.variability_change_analyzer.build_files_regex = <Java-Regex>

Example: analysis.variability_change_analyzer.build_files_regex = .*/(Makefile|Kbuild)((\\.|\\-|\\_|\\+|\\~).*)?

License

This project is licensed under the Apache License 2.0.

Acknowledgments

This work is partially supported by the ITEA3 project REVaMP², funded by the BMBF (German Ministry of Research and Education) under grant 01IS16042H.

A special thanks goes to the developers of KernelHaven: Adam Krafczyk, Sascha El-Sharkawy, Moritz Flöter, Alice Schwarz, Kevin Stahr, Johannes Ude, Manuel Nedde, Malek Boukhari, and Marvin Forstreuter. Their architecture and core concepts significantly inspired the development of this project. In particular, the mechanisms for file-based configuration of the infrastructure and the plug-ins as well as loading and executing individual plug-ins are adopted in this work.

References

[1] Christian Kröher, Lea Gerling and Klaus Schmid. Identifying the Intensity of Variability Changes in Software Product Line Evolution. In Proceedings of the 22nd International Systems and Software Product Line Conference, Vol. 1, pp. 54-64, ACM, 2018.

[2] Christian Kröher and Klaus Schmid. A Commit-Bases Analysis of Software Product Line Evolution: Two Case Studies. Report No. 2/2017, SSE 2/17/E, 2017.

[3] Christian Kröher and Klaus Schmid. Towards a Better Understanding of Software Product Line Evolution. In Softwaretechnik-Trends, Vol. 37:2. Gesellschaft für Informatik e.V., Fachgruppe PARS, Berlin, Germany, pp. 40–41, 2017.

About

ComAnI plug-in for analyzing the intensity of variability information changes in KBuild-based Software Product Lines

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published