v0.3.6.1
An interactive, web-based, configurator for attributed feature models with inheritance subset of Clafer. The configurator provides a novel approach to feature configuration, whereby the configurer works with multiple correct configurations at the same time instead of working with a single configuration, making configuration steps, and resolving configuration conflicts. When working with a single configuration, the configurer is often not aware of the impact of their configuration actions, and when conflicts arise, they have great difficulty resolving the conflicts. In contrast, in ClaferConfigurator, the configurers always see only correct configurations and can explore them using filtering, ordering, highlighting of the differences, and creating more configurations on demand.
- Master branch (stable and released): Try me!
- Develop branch (with newest features, but not guaranteed to be stable): Try me!
If the demo is down or you encounter a bug, please email Michal Antkiewicz.
Clafer is a general-purpose lightweight structural modeling language developed at GSD Lab, University of Waterloo. Clafer can be used for domain modeling, product-line modeling and multi-objective optimization with respect to various one or more optimization goals.
- Provides a web based GUI for interaction with claferIG.
- Allows to compare and analyze product configurations.
- Facilitates configuration of clafer models.
The ClaferConfigurator is a web-based application. Its server side (implemented with Node.JS) only runs the chosen backend passes back its output.
The client-side is implemented using Javascript/HTML and provides configuration functionality.
- Neil Vincent Redman, co-op student Jan-Apr 2013. Main developer.
- Michał Antkiewicz, Research Engineer. Requirements, development, architecture, testing, technology transfer.
- Alexandr Murashkin, MSc. Candidate. Developer, transition to the platform, new improvements, multiple backends.
Binary distributions of the release 0.3.6.1 of Clafer Tools for Windows, Mac, and Linux,
can be downloaded from Clafer Tools - Binary Distributions. There you can get binaries for Clafer Compiler, ClaferIG and the ClaferChocoIG backend.
- Java Platform (JDK) v7+, 32bit
- Clafer v0.3.6.1
- can be from the binary distribution
- Node.JS Framework, v0.10.20
- Backends' dependencies must be satisfied. See the backend installation steps below
Core
- Download (
git clone) ClaferConfigurator to some directory<target directory> - Go to
<target directory>/ClaferConfiguratorand execute
git submodule init
git submodule update
This will install the platform
- Go to
<target directory>/ClaferConfigurator/Serverand execute
npm install
This will download all the required Node.JS modules.
- Install the necessary backends using the steps below.
Backend: ClaferIG
This assumes you use the default configuration <target directory>/ClaferConfigurator/Server/Backends/backends.json file.
- Install ClaferIG following the installation instructions.
Backend: ClaferChocoIG
This assumes you use the default configuration <target directory>/ClaferConfigurator/Server/Backends/backends.json file.
-
Install Java 7+.
-
Copy the binary of
ClaferChocoIG(claferchocoig-0.3.6.1-jar-with-dependencies.jar) into the folder<target directory>/ChocoIG.
Backend: ClaferZ3
This assumes you use the default configuration <target directory>/ClaferConfigurator/Server/Backends/backends.json file.
-
Refer to the ClaferZ3 installation requirements. This should install
Python 3,PIPandZ3. -
Install
ClaferZ3into the folder<target directory>/ClaferZ3.
-
Make sure the port
8193is free, or change the value of the keyportinServer/config.json:"port" = "8193"to any free one. -
Make sure
clafer,node,python, 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 -V
Clafer v0.3.6.1
java -version
java version 1.7.0_51
node -v
v0.10.20
-
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>/ClaferConfigurator/Server/
node ClaferConfigurator.js
- If you use
Node Supervisorunder Linux, you can execute
cd <target directory>/ClaferConfigurator/Server/commons
sh start.sh
Then you can go to any browser and type http://localhost:[port]/ and open any Clafer file with objectives in it.
- Choose
Adaptive Cruise Control Exampleexample in the dropdown box in the upper-left corner of the tool window. - Press
Compilebutton right in the front of the drop down list. - Once you see the compilation is complete, go to
Instance Generatorview and pressRunthere (the default backend isChoco-based IG (IG + MOO)). - The
Feature and Quality Matrixview should show the first 10 generated 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.
- See language's website for news, technical reports and more
- Check out a Clafer tutorial
- Try a live instance of ClaferWiki
- Try a live instance of ClaferIDE
- Try a live instance of ClaferConfigurator
- Try a live instance of ClaferMooVisualizer
- Take a look at (incomplete) Clafer wiki
- Browse example models in the test suite and MOO examples
- Post questions, report bugs, suggest improvements GSD Lab Bug Tracker. Tag your entries with
claferconfigurator(so that we know what they are related to) and withalexander-murashkinormichal(so that Alex or Michał gets a notification).