Visualizes a set of non-dominated optimal variants (Pareto Front) and allows for exploration and trade-off analysis. Read more in the paper Visualization and Exploration of Optimal Variants in Product Line Engineering. The current version can be used outside the product line domain: various design optimization problems, architecture exploration, packaging problems are supported.
ClaferMooVisualizer is part of Clafer Tools. Read more in the paper Clafer Tools for Product Line Engineering.
- Master branch (stable and released): ClaferMooVisualizer
- Develop branch (with newest features, but not guaranteed to be stable): ClaferMooVisualizer (development)
If the demo is down or you encounter a bug, please email Michał Antkiewicz.
See clafer.org.
- Displays all the non-dominated optimal product configurations as a Bubble Front Graph (up to 4 dimensions), a Feature and Quality Matrix, a Spider Chart, and as Parallel Coordinates Chart.
- Allows to compare and analyze product configurations.
- Allows for filtering by feature and by quality range.
- Supports multiple solver backends.
ClaferMooVisualizer is a web-based application.
Its server side (implemented with Node.js) processes requests, runs the chosen back-end, and passes back its output.
The client-side is implemented using JavaScript/HTML and handles the visualization and exploration functionality.
- Alexandr Murashkin. Original developer.
- Eldar Khalilov. Developer. Upgrade to 0.4.2 (replace XML with JSON, test suites).
- Michał Antkiewicz. Research Engineer. Requirements, development, architecture, testing, technology transfer.
- Neil Vincent Redman. co-op student Jan-Apr 2013. Many improvements.
- Java Platform (JDK) v8+
- Clafer v0.4.4
- can be from the binary distribution
- Node.js Framework, v4.2.3 LTS
- Redis Server, v2:2.*
- On Ubuntu, execute
sudo add-apt-repository ppa:chris-lea/redis-server && apt-get install redis-server
- On Ubuntu, execute
- Backends' dependencies must be satisfied. See the backend installation steps below.
Core
- Download (
git clone) ClaferMooVisualizer to some directory<target directory> - Go to
<target directory>/ClaferMooVisualizerand execute
git submodule init
git submodule update
This will install the platform.
When working with a branch other then master, you need to additionally checkout that branch (e.g., develop):
git submodule foreach git checkout develop
- Go to
<target directory>/ClaferMooVisualizer/Serverand execute
npm install
This will download all the required Node.js modules.
- Install the necessary backends into some location
<bin>found onPATH. The default configuration in<target directory>/ClaferIDE/Server/Backends/backends.jsonassumes/home/clafertools040/bin.
The fastest way is to unzip a binary distribution into the folder <bin>.
See Installing Backends for detailed steps.
-
Make sure the port
8092is free, or change the value of the keyportinServer/config.json:"port" = "8092"to any free one. -
Make sure
clafer,node, andjavaare inPATHenvironment variables, so they can be executed without any path prefixes. -
Running the following commands should produce the following results or later version:
clafer --version
Clafer v0.4.4
java -version
java version 1.8.0_102
node -v
v4.2.3 LTS
-
Make sure
uploadsfolder is accessible for writing, since temporary files will be stored there. -
If you use Shell scipts (
.sh) for running, make sure the scripts haveExecutepermissions.
- To run the server in a standard mode, execute
cd <target directory>/ClaferMooVisualizer/Server/
node ClaferMooVisualizer.js
- If you use
Node Supervisorunder Linux, you can execute
cd <target directory>/ClaferMooVisualizer/Server/commons
chmod +x start.sh
./start.shThen you can go to any browser and type http://localhost:[port]/ and open any Clafer file with objectives in it.
- Choose
Mobile Phone Example (2 objectives)example in the dropdown box in the upper-left corner of the tool window. - Press
Optimizebutton right in the front of the drop down list. - The views will be populated with generated optimal instances.
All related projects are following the simultaneous release model.
The branch master contains releases, whereas the branch develop contains code under development.
When building the tools, the branches should match.
Releases from branches master are guaranteed to work well together.
Development versions from branches develop should work well together but this might not always be the case.
- Visit language's website.
- Report issues to issue tracker