VariaMos is a web-based tool that utilizes micro services to enable the specification of product lines by means of multi-language modeling approach and the reasoning on these products and product lines by means of a generic and multi-solver approach.
VariaMos manages the creation of projects at the two key levels of software product line engineering: domain engineering and application engineering.
Thus, at the VariaMos allows specifying domain assets at the domain level, and system and context assets at the application level. These assets are represented through different views that can be federated through various mechanisms: traceability, binding, zooming, etc. These views are instances of the engineering languages that are (i) already available in the tool or (ii) created by the stakeholders.
To enable users to create their own engineering languages in a straightforward manner, VariaMos propose a graphical and a JSON-based strategy to define the concrete and the abstract syntax of the new languages, and it also allows specifying its operational semantics using CLIF as a pivot language. These languages are then used to represent the domain engineering assets in a way that they can be analyzed, verified, simulated, configured, and federated to create static and dynamic software product lines. All these reasoning operations are user-specified and can be defined at the level of each language (therefore available on all its instances) or customized and tailored to support specific reasoning tasks needed for a given model type. These operations, defined in our pivot language, are automatically transformed into the languages of a wide variety of solvers allowing to solve a great variety of problems (SAT, linear programming, constraint programming, logic programming, etc.). Thus, the VariaMos framework enables the execution of user-defined operations (specified at the language level) over the models created by the user, which permits satisficing different types of modeling and reasoning expectations.
The VariaMos Framework is therefore dynamically extendable to new modeling languages, interdependencies among the languages, operations over the instances of the languages, and solvers to execute these operations, which greatly increases its usefulness in both teaching and industrial use cases.
We updated our Java stand-alone version to provide a web-based tool.
Look at the Wiki. In this place you will find useful documentation for developers and contributors.