Coder Social home page Coder Social logo

acapulco-spl / acapulco Goto Github PK

View Code? Open in Web Editor NEW
0.0 5.0 2.0 17.1 MB

Eclipse-based tool for optimal configuration of software product lines

Home Page: https://github.com/acapulco-spl/

Java 81.46% Xtend 18.40% HTML 0.14%
eclipse optimisation software-product-lines feature-configuration

acapulco's Introduction

Acapulco

Acapulco is a tool to support Product Line configuration using genetic algorithms and consistency-preserving configuration operators.

Installation

For the moment Acapulco is to be launched from an Eclipse workspace and not as an update site or similar.

Requirements

  • Java JDK 13+
  • Eclipse 2020 (4.18.0)+

In your eclipse installation, install

  • FeatureIDE framework for feature-oriented software development. Tested with version 3.8.1 and 3.9.3.
  • Xtend framework. Some acapulco source code uses Xtend instead of Java, so once you will import the acapulco plugins in the workspace, the automatic build of the source code will create some needed Java classes in the xtend-gen package of the acapulco project. Tested with version 2.31

Clone or download the Eclipse Henshin repository Eclipse Henshin. Import the plugin org.eclipse.emf.henshin.model in the Eclipse workspace. File -> Import -> General -> Projects from Folder or Archive (import only the project and not the whole folder as a project). Tested with version 1.9.0.

Clone or download this repository. Import the acapulco plugins (plugins folder of this repository) in the Eclipse workspace. File -> Import -> General -> Projects from Folder or Archive (import only the project and not the whole folder as a project). Then right click the plugin and select Run As -> Eclipse Application. A new instance of Eclipse will be opened with the Acapulco functionality.

Getting started

  • Right click a feature model (in the Package Explorer or Project Explorer) and click on Acapulco prepare. A set of resources will be generated with a message about how to perform the Acapulco launch. When launching, a window to configure the parameters for the optimization will appear. The pareto front configurations and a CSV file with their objectives' values will be generated at the end of the process.

The video below shows a demo of Acapulco.

Acapulco.Video.mp4

Optimization objectives and extensibility

  • Objectives for the optimization can be contributed through the acapulco.objective extension point.
  • Predefined generic objectives already included are: Total sum of numeric feature attributes in a CSV file, Number of features in the configuration, or Number of generated files after deriving the configuration through the Product Line.

Other resources

  • A comparison of a version of Acapulco with other two tools is available in a replication package. The first version of Acapulco is a refactoring of this other repository.

acapulco's People

Contributors

jabiercoding avatar szschaler avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

acapulco's Issues

In Acapulco Preparation, FeatureIDE functionality can be used to handle Complex Constraints

Complex constraints are removed in Acapulco Preparation. However, in some cases, complex constraints can be transformed in simple constraints. FeatureIDE functionality can be reused for this. In Feature IDE UI, when you right click a feature model, you can...

  • create a Product-Equivalent Model without Complex Constraints. The internal class is de.ovgu.featureide.fm.core.conversion.ComplexConstraintConverter.
  • Export Feature Dependency Information that uses the class de.ovgu.featureide.fm.core.analysis.mig.ModalImplicationGraph. An example of usage to get implies and excludes relations can be found in de.ovgu.featureide.visualisation.ShowFeatureRelationsGraphCommandHandler . Related publication: Krieter et al. ICSE 2018 Propagating Configuration Decisions with Modal Implication Graphs.

Provide a Command-Line Interface

As suggested by SPLC 2022 reviewer 1, "CLI command for the tool can help developers to easily integrate the tool with others"

Incorrect generated CPCOs for one case?

If we have this model

namespace MySPL

features
	MySPL {abstract}	
		optional
			A
			B
			C

constraints
	A & B => C

the Knuppel method to convert complex constraints obtain this model

namespace MySPL

features
	MySPL	
		optional
			A
			B
			C

		mandatory
			Subtree	
				mandatory
					OR0_0	
						or
							A_1_1
							B_2_1
							C_3_1

constraints
	!A_1_1 | !A
	!B_2_1 | !B
	!C_3_1 | C

Then, once the CPCOs are generated, these rules seem wrong as not(A) or not(B) is an excludes relation

Rule Act_A_1_1
Node A_1_1: false->true

and

Rule Act_A
Node A: false->true
Node A_1_1: true

It seems that the CPCO generation is interpreting !A_1_1 | !A as not(A) or A_1_1 which is A implies A_1_1. The same happens for the second constraint, while the rules for the features of the third seems correct.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.