ReFlO is a framework to support Design by Transformation, allowing domain-experts to encode domain knowledge about how programs are build in a particular domain, and for developers to synthesize efficient program architectures, using the knowledge provide by domain-experts (see this webpage for more information about ReFlO).

Here we provide an enhanced version of ReFlO that supports extensions (increments in functionality), besides refinements and optimizations.

Extensions allow developers to incrementally add features to program architectures. Moreover, the approach used to capture knowledge about extensions allows developers to specify how to obtain a product line of program implementations.

To see ReFlO in action, watch the following screencasts!

Related Publications

Research Support


ReFlO with extensions support (v2.2.0) [~1.2 MB]


Dependencies: the following Eclipse plugins need to be installed (click on the link to see how to install the plugins):

Additionally, ReFlO with extensions support requires Eclipse 4.2.

Installation steps:

  1. Unzip the downloaded file (it should contains folders dropins and xform).
  2. Copy the files contained on folder dropins to Eclipse's dropins folder.
  3. Launch Eclipse, and create a general project, named reflo.
  4. Copy folder xform to reflo project.
  5. Go to File > Import, choose General > Preferences, and then select file xform.epf from folder xform.


eXtended ReFlO Domain Models

An eXtended ReFlO Domain Model (XRDM) encodes domain knowledge, i.e., interfaces of the domain and its implementations.

A XRDM is an enhanced version of a RDM that also encodes information about extensions.

Extensions are increments in functionality, specifying optional features of boxes. They are captured annotating the model elements.

The boxes, ports and connectors are annotated with a predicate (attribute Features Predicate) that specifies when (i.e., in the presence of which feature) the element is to be part of the models. The predicate is defined by a propositional formula, whose variables are the features. Thus, given a set of features, its RDM is obtained removing the XRDM elements for which the propositional formula evaluates to false when the variables associated with the enabled features have the value true, and the remaining have the value false.

Additionally, boxes are also annotated with tags, which specify when the behavior of a box changes in the presence of a certain feature. This info is stored on attribute Features Tags.

The XRDM is also annotated, with a feature model to specify the valid combinations of features. The feature model is sotred on attribute Feature Model.