fastpan-variability-analyzer: statistical performance analysis for variability-aware software models
This project provides variability-aware performance analyzer implementations integrated with the fastpan project performance analyzer project.
Attention: This project is a work in progress and as such, the API is unstable and may change anytime. For recent changes refer to the change log.
Define a dependency to this project using JitPack:
<dependency>
<groupId>com.github.DECLARE-Project</groupId>
<artifactId>fastpan-variability-analyzer</artifactId>
<version>v0.0.2</version>
</dependency>
Make sure to define the JitPack repository:
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
Download the latest release from the GitHub releases.
- Check out this project from source.
- Hop on a shell and run
mvn clean install
. You may also do this from your favorite IDE. - You may export this project as standalone JAR library including all required dependencies by running
mvn clean package
. The JAR file is then created in/target/*.jar
.
The decision tree analyzer is an implementation of the approach described by Guo et al, 2013:
GUO, Jianmei, et al. Variability-aware performance prediction: A statistical learning approach. In: Automated Software Engineering (ASE), 2013 IEEE/ACM 28th International Conference on. IEEE, 2013. S. 301-311.
You can easily implement an analysis using the DecisionTreeAnalyzer
as follows:
PerformanceAnalyzer<> delegateAnalyzer;
JavaSparkContext sparkContext;
// the decision tree is built using a single score, thus we'll need to define an
// objective that is able to provide an answer to the question we have
DecisionTreeObjective objective = (result) -> {
return result.<ServiceTime>getMetric("modelElement", ServiceTime.class)
.map(serviceTime -> serviceTime.getServiceTime().getMilliseconds());
};
// analyze
DecisionTreeAnalyzer analyzer = new DecisionTreeAnalyzer(delegateAnalyzer, objective, sparkContext);
DecisionTreeContext ctx = analyzer.setupAnalysis(systemProvider, configurationProvider);
ctx.analyze();
// use analysis results to predict unseen configurations
Map<Configuration<FEATURE>, Double> predictions = ctx.predict(configurationProvider);
// access the model directly
ctx.getModel();
To release a new version, run the following commands:
mvn release:prepare
mvn release:perform -Darguments="-Dmaven.javadoc.skip=true"
Open a PR :-)
See all changes made to this project in the change log. This project follows semantic versioning.
This project is licensed under the terms of the MIT license.
Project created and maintained by Fabian Keller in the scope of his master's thesis.