To specify the variability requirements of a workflow, we choose to develop a simple and dedicated formalism to relate feature models to services and workflows. The domain-specific language, called Wfamily enables one to:

  • import feature models from external files while performing some high-level operations (extraction, renaming/removal of features, etc.). For example, the user can load an existing feature model from a catalog, then extracts the sub-parts that are of interest and finally specialize the different feature models ;
  • weave feature models to specific places of the workflow. We reify the concept of pointcut, which have an unique identifier within a service. Hence users can specify for which specific pointcut of a service a feature model is attached to ;
  • constrain feature models within and across services by specifying propositional constraints. Each feature model that have been woven has an unique identifier and can be related with each other through cross-tree constraints.

Examples are available in the SVN (see MOTEUR2FAMILIAR/examples/) as well as the grammar of the language (see org.xtext.example.wfamily) and an interpreter (see fr.unice.polytech.modalis.familiar.wfamily.WfamilyLauncher? in MOTEUR2FAMILIAR/).


This document describes how to obtain the source code of Wfamily and set up your Eclipse environment. Before you start you need Eclipse:

we do not support Xtext 2.0.x

Wfamily (MOTEUR2FAMILIAR in the SVN) is dependent of the following projects:

Does it work?

Have a look at the package fr.unice.polytech.modalis.familiar.moteur2.test that contains JUnit tests. See attachment for a JUnit report. Do not forget to specify JVM options -Xmx1024M if needs be (required by FAMILIAR coz of BDDs most of the time).


org.xtext.example.fmweaver (the three Xtext projects + code related to that in MOTEUR2FAMILIAR) should be removed (old version, basically our SC'10 paper)... To avoid confusion, we should rename MOTEUR2FAMILIAR to Wfamily. About MOTEUR2 I prefer to take the branch of SI4 but it is worth to test with the main branch.