Skip to content

Provides variability-aware performance analyzers leveraging machine learning techniques.

License

Notifications You must be signed in to change notification settings

DECLARE-Project/fastpan-variability-analyzer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

fastpan-variability-analyzer: statistical performance analysis for variability-aware software models

GitHub tag Travis Coverage license

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.

Installation

Using Maven

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 a JAR

Download the latest release from the GitHub releases.

From Source

  • 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.

Usage

DecisionTreeAnalyzer

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.

[View Paper]

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();

Release

To release a new version, run the following commands:

mvn release:prepare
mvn release:perform -Darguments="-Dmaven.javadoc.skip=true"

Contributing

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.

About

Provides variability-aware performance analyzers leveraging machine learning techniques.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages