feasiPLe Logo

Forschungsprojekt feasiPLe

Feature-getriebene, aspektorientierte und modellgetriebene Produktlinienentwicklung

Transformation of Domain-Specific Languages (DSLs)

The generation of an executable product instance requires the transformation of DSLs used for the specification of the product line's solution space to a uniform implementation language. This may involve model transformations and code generation steps. Within feasiPLe we introduce a multi-staged MDSD Process that realises these transformations by the use of several intermediate stages and abstraction layers. The process results in an integrated specification of the overall system. We assume, that the used DSLs are defined by a metamodel and DSL expressions can be represented by means of a model.

Multi-Staged Product Instantiation

The instantiation of a product from a DSL-based system specification can be split into several stages which reflect the segmentation of functional, platform-specific, and contextual variability in the problem space of a product line.

In the first step functional variability points are bound. For this purpose model-to-model transformations are used that map variant independent models to variant specific models. This transformation step is configured by the functional variant model. The following step binds platform specifics. This is done again by means of model-to-model transformations which map DSL models to platform specific models. The last step generates source code for a specific target platform from the given models.

However, using multiple stages is only optional. With an adequate abstraction and a fitting variability modelling, code generation could start directly on DSL instances.

Supporting arbitrary composition systems for product line instantiation

The multitude of transformation step requires a generic tooling environment that allows for their integrated usage. To support other realisation technologies relevant within the context of feasiPLe - like graph rewrite systems, CeasarJ, or Reuseware - we introduce the abstract concept of composition steps.

Every composition step is associated with a certain composition system, e.g. model transformation, code generation, aspect weaving, or graph rewriting. A composition system describes a tool component that creates a set of output artefacts for a given set of input artefacts. For product line engineering the input artefacts are identified by the mapping of features (configuration items in the problem space) to the solution space. For the realisation of a multi-staged instantiation process, several composition steps are chained up. For the implementation of the tolling environment the following problems need to be considered:

  • To ensure the validity and efficiency of product instantiation, dependencies between composition steps need to be considered
  • Good tool support for the specification of consumed and produced artefacts is required
  • The granularity of the artefacts varies for several composition systems
  • Containment relationships between artefacts need to be considered (e.g. a model element is contained in the models file)
  • cyclic dependencies need to be detected and resolved

Back to the feasiPLe Architecture