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!
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:
dropins
and xform
).dropins
to Eclipse's dropins folder.
reflo
.xform
to reflo
project.xform.epf
from folder xform
.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
.