The goal of this project is to develop a domain-specific language (DSL) for modeling variability. By designing and building a DSL for elaborating two flavors of variability models (basic and attributed feature models). The goal of the project is to be able to :
- Specify the abstract syntax of your DSL (with a metamodel)
- Specify the concrete syntax of your DSL (with a grammar)
- Develop model transformations for building different tools for your DSL
- Master some solvers for automatically reasoning about the semantics of your program/models written in your DSL
- Reuse and extend an abstract/concrete syntax and model transformations for a family of DSLs
- Re-engineer and manage variability of a real-world software project with your DSL
- Read and understand the scientific literature related to DSL
The grammar of the Feature Modeling DSL can be found here.
Few examples using that grammar are given here (files with *.fm extension).
A procedure for generating random feature models is available here.
The transformation into DIMACS format for interoperating with SAT4J solver (http://www.sat4j.org) can be found here.
The transformation into Minizinc format (http://www.minizinc.org) for interoperating with some CSP solvers e.g. Choco (http://www.choco-solver.org) is available here.
Examples of these two model transformations are available here (files with *.dimacs and *.mzn extensions).
The users can speciy their own configurations of a specific feature model by running the file Configurator.xtend, which prompts the user to select the features they want to be included in their configuration.
Instead of prompting the users for every possible feature, they are able to enter their choices in a command line fashion by running CommandLine.xtend .i.e. by entering the set of features they want to be included in their configuration.