Delta modeling is an approach to structured reuse within software product lines. Delta modules manifest changes associated with different configurations in realization artifacts, such as source code, by adding, modifying or removing affected elements. However, a dedicated delta language is required for each realization language, e.g., DeltaJava for Java. DeltaEcore is a tool suite for swift creation of delta languages that can seamlessly be integrated into the provided variant derivation procedure of a software product line.


General Functionality

  • Tool suite supports creation of delta languages and definition of delta-oriented software product lines with variant derivation
  • Uses EMF Ecore metamodel of source language (e.g., Xtext)
  • Supports textual and graphical source languages
  • Seamlessly integrates delta languages of various source languages
  • Provides tools for configuration and variant derivation

Delta Language Creation

  • A custom delta language is the combination of the common base delta language with a delta dialect specific to the source language
  • The common base delta language contains functionality shared by all delta languages and is provided by the tool suite
  • A delta dialect defines delta operations for the source language and has to be provided by the delta language creator

Software Product Line Definition

  • A hyper-feature model represents features and feature versions
  • Delta modules capture transformations on realization artifacts
    • Configuration delta modules enable or disable features
    • Evolution delta modules create new revisions of features
  • The delta module mapping connects features and feature versions with configuration and evolution delta modules, respectively

Variant Derivation

  • A configuration of features and feature versions is resolved to the set of relevant configuration and evolution delta modules
  • Delta modules are sorted topologically and applied in the determined sequence to transform a base variant of the software system to a target variant with the intended functionality
  • Target variant contains realization of features in selected versions