Textual Variability Overview

Overview on Textual Variability Modeling Languages

Update as of: 15th of June 2017

This web site aims at an overview of the actual capabilities of textual variability modeling languages identified by a literature survey. This page summarizes the results of a refined analysis in [2] based on our initial work published in [1]. In particular, the refined analysis in [2] includes includes feedback provided by the authors of the individual modeling languages collected in terms of a questionnaire. The questionnaire covered the

  • The correctness of the classification of the individual variability modeling language.
  • Missing capabilities due to recently introduced features in the respective approach.
  • Missing capabilities in our classification approach, and
  • Missing variability modeling languages, which shall be considered as part of the analysis.

So, if you think, there is a language, which we should include here or if updates are necessary as the current definition of your language has changed, please let us know. Please send an Email to eichelberger (at) sse.uni-hildesheim.de.

Classification schema

We classify current textual variability modeling languages in the following five top-level dimensions:

  • D1: Capabilities of configurable elements
  • D2: Constraint support
  • D3: Configuration support
  • D4: Scalability support (variability modeling in the large)
  • D5: Language characteristics

The detailed definition of these dimensions can be found in [1, 2]. In addition, we indicate which approaches have been classified when, i.e., [1, 2] as part of the original work or a date when the respective approach has been added and classified later. In June 2017, we added a category of the access to configurable elements to D1 and a category for use of constraints for configuration except for value specification to D3.

Languages

The following criteria for inclusion of a textual variability modeling language are used, as explained in [2]. The language must be:

  • Designed for variability modeling in a product line context by domain experts with sufficient software product line background, i.e., configurable elements or constraints can be specified.
  • Described in terms of a (mostly complete) language specification.
  • Given with a scientific background and described in scientific literature (articles, papers, technical reports).
  • Independent of a specific kind of products.
  • Interpretable in an automated way such as parsing, semantic analysis, etc.

This leads to the inclusion of 

  • Feature Description Language (FDL)
  • Forfamel used in the Kumbang approach
  • Batory’s approach
  • Variability Specification Language (VSL)
  • Simple XML Feature Model (SXFM) 
  • FAMILIAR 
  • Text-based Variability Language (TVL)
  • μTVL (micro TVL) 
  • CLAss, FEature, Reference (Clafer)
  • VELVET
  • INDENICA Variability Modeling Language (IVML)

(listed in sequence of publication).

Below, we summarize the capabilities of the languages. The resulting data is a combination of: our own, analysis as described in [1, 2], additional literature we found and feedback provided by the authors of the approaches in terms of a questionnaire [2]. The tables below summarize our results in terms of the supported capabilities. We use the following notation:

  • x: direct support
  • x*: indirect support
  • x?: unclear support
  • x1: support clarified due to expert information or additional documents (specified in footnote)
  • -: no support

For approaches marked with + we received and incorporated feedback by the authors as part of the questionnaire. More detailed information including references into literature where the individual capabilities are described can be found in [2].  

D1: Properties of configurable elements

 

 

Properties of configurable elements

Type system support

classified

 

Forms of variation

Unit of variability

Attached information

Cardinalities

References

Access (Jun/17)

predefined

derived

user-defined

applies to

 

optional

alternative

multiple

extension

FDL

x

x

x

-

feature

-

x*

-

name

-

-

-

-

[1, 2]

Forfamel+

x

x

x

x

feature

attribute

x

x1

name

-

-

enums for all types2, feature2

attribute2, feature2

[1, 2]

Batory

x

x

x

-

feature

-

feature

-

name

-

-

-

-

[1, 2]

VSL+

x

x

x3

x

feature, group

parameter, user attribute

feature, group

x

(qualified) name

Boolean, Integer, Float, String

-

enum

parameter, user attribute

[1, 2]

SXFM

x

x

x4

-

feature, group

-

group

-

name

-

-

-

-

[1, 2]

FAMILIAR

x

x

x

-

feature, group

-

-

x?

(qualified) name, wildcard

Boolean, Integer, Real, String, enum, model, configuration

container

-

feature, model, configuration

[1, 2]

TVL+

x

x

x

x?

feature, group

attribute, data block

feature, group

x

(qualified) name

Boolean, Integer, Real

-

enum, struct, constant

attribute

[1, 2]

μTVL+

x

x

x*

x

feature, group

attribute

group

-

(qualified) name

Boolean, Integer

-

-

attribute

[1, 2]

Clafer+

x

x

x*

x

Clafer

feature

Clafer, feature

x

(qualified) name

Integer, String

container

enum,  Clafer as compound

feature

[1, 2]

VELVET+

x*

x

x

x

concept, feature

attribute

x*

x5

(qualified) name

Boolean, Integer, Float, String6

-

-

attribute6

[1, 2]

IVML+

x

x

x

x

decision variable

meta-attribute

x*

x

(qualified) name

Boolean, Integer, Real, String

container, typedef

enum, compound

decision variable, meta-attribute

[1, 2]

UTFM

x*

x*

x*

x*

feature

attribute

x

-

name

Boolean, Integer, Real, String

-

feature types

feature instance, attribute

Jun/17

VM

x

x

x

x

feature

attribute, tags, description block

x

-

(qualified) name, wildcard

Boolean?, Integer, Real, String

value range, (multi-)delta

enum

feature

Jun/17

Changes over [1] are based on:
1: Personal communication with Tomi Männistö, October 2014
2: http://www.soberit.hut.fi/KumbangTools/language/language-definition.txt
3: Personal communication with Mark-Oliver Reiser, January 2014
4: http://gdansk.uwaterloo.ca:8088/SPLOT/sxfm.html
5: Personal communication with Reimar Schröter, December 2013
6: http://wwwiti.cs.uni-magdeburg.de/iti_db/research/multiple/download/grammar.txt

 

D2: Constraint capabilities (x=supported, (x)=partially supported, -=not supported)

 

 

constraint expressions

cardinalities

type restriction

classified

simple dependencies

propositional

first-order

relational

arithmetic

FDL

x

-

-

-

-

-

-

[1, 2]

Forfamel+

-

x

x

x

x

x1

-

[1, 2]

Batory

-

x

-

-

-

-

-

[1, 2]

VSL+

x

x?

x?

-

x?

-

x

[1, 2]

SXFM

-

x?,2

-

-

-

-

-

[1, 2]

FAMILIAR

-

x

-

-

-

-

-

[1, 2]

TVL+

-

x

-

x

x

-

x

[1, 2]

μTVL+

x

x

-

x

x

-

-

[1, 2]

Clafer+

-

x

x3

x

x

x3

x3

[1, 2]

VELVET+

-

x

-

x4

-

-

-

[1, 2]

IVML+

-

x

x

x

x

x

x

[1, 2]

UTFM

-

x

x

x

-

-

-

Jun/17

VM

-

x

-

x

x

-

-

Jun/17

Changes over [1] are based on:
1: http://www.soberit.hut.fi/KumbangTools/language/language-definition.txt
2: http://gdansk.uwaterloo.ca:8088/SPLOT/sxfm.html
3: Personal communication with Michal Antkiewicz, August/September 2013
4: wwwiti.cs.uni-magdeburg.de/iti_db/research/multiple/download/grammar.txt

 

D3: Configuration support (x=supported, (x)=partially supported, -=not supported)

 

 

default values

value
assignment

configuration

classified

additional constraints (Jun/17)

 

partial

complete

FDL

x

-

-

-

[1, 2]

-

Forfamel+

-

x

-

x

[1, 2]

-

Batory

-

-

-

-

[1, 2]

-

VSL+

x

x

x

x

[1, 2]

-

SXFM

-

-

-

-

[1, 2]

-

FAMILIAR

-

x

x?

x

[1, 2]

-

TVL+

-

x

-

-

[1, 2]

-

μTVL+

-

x?

x1

x

[1, 2]

-

Clafer+

-

x

x

x

[1, 2]

-

VELVET+

x2

x1

x

x*

[1, 2]

-

IVML+

x

x

x

x*

[1, 2]

objective function

UTFM

-

x

x

x

Jun/17

-

VM

x*

x, grouped

x

x

Jun/17

objective function

Changes over [1] are based on:
1: Personal communication with Dave Clarke, December 2013
2: wwwiti.cs.uni-magdeburg.de/iti_db/research/multiple/download/grammar.txt

 

D4: Capabilities for large-scale modeling (-=not supported)

 

 

composition

evolution

modularity

classified

FDL

-

-

-

[1, 2]

Forfamel+

-

-

-

[1, 2]

Batory

-

-

-

[1, 2]

VSL+

variable entities

-

model, configuration

[1, 2]

SXFM

-

-

-

[1, 2]

FAMILIAR

merge, aggregate

-

-

[1, 2]

TVL+

include

-

-

[1, 2]

μTVL+

conjunction / intersection1

-

-

[1, 2]

Clafer+

inheritance2

-

-

[1, 2]

VELVET+

inheritance, superimposition, aggregation

-

superimposition3

[1, 2]

IVML+

import

model version

interface

[1, 2]

UTFM

-

-

-

June/17

VM

x?

-

-

June/17

Changes over [1] are based on:
1: Personal communication with Dave Clarke, December 2013
2: Personal communication with Michal Antkiewicz, August/September 2013
3: Personal communication with Reimar Schröter, December 2013

 

D5: Language characteristics (-=not supported)

 

 

base language

comments

predominant structure

specification

classified

 

examples

grammar

formal

FDL

-

-

tree

x

x

-

[1, 2]

Forfamel+

-

//1

declarations, tree1

x

x2

-

[1, 2]

Batory

-

-

tree

x

fragments

-

[1, 2]

VSL+

C, Java

//, /* */

graph

x

fragment

-

[1, 2]

SXFM

XML

-

tree

x

-

-

[1, 2]

FAMILIAR

FeatureIDE, (Java)

-

variables, tree

x

x3

x

[1, 2]

TVL+

C

//, /* */

graph

x

x4

x

[1, 2]

μTVL+

TVL

-

tree

x

x

x

[1, 2]

Clafer+

Alloy

//, /* */ 5

declarations, nesting

x

x6

-

[1, 2]

VELVET+

TVL

//, /* */7

tree

x

x8

-

[1, 2]

IVML+

Java, OCL

//, /* */

declarations, nesting

x

x

-

[1, 2]

UTFM

-

-

declarations, tree

x

x

-

Jun/17

VM

Java

//, /* */

tree

x

x9

-

Jun/17


Changes over [1] are based on:
1: Personal communication with Tomi Männistö, October 2014
2: http://www.soberit.hut.fi/KumbangTools/language/language-definition.txt
3: https://nyx.unice.fr/projects/familiar/wiki/manual
4: www.info.fundp.ac.be/~acs/tvl
5: Personal communication with Michal Antkiewicz, August/September 2013
6: https://raw.github.com/gsdlab/clafer/master/src/Front/clafer.cf
7: Personal communication with Reimar Schröter, December 2013
8: http://wwwiti.cs.uni-magdeburg.de/iti_db/research/multiple/download/grammar.txt
9: https://github.com/ViViD-DiverSE/VM-Source

 

 

 

References

[1] H. Eichelberger and K. Schmid. A systematic analysis of textual variability modeling languages. In Proceedings of the 17th International Software Product Line Conference (SPLC’13), pages 12–21. ACM, 2013.
[2] H. Eichelberger and K. Schmid. Mapping the design-space of textual variability modeling languages: a refined analysis, International Journal on Tools for Technology Transfer, DOI 10.1007/s10009-014-0362-x, pp 1-26, 2014.
[3] V. Weber, UTFM – a Next Generation Language and Tool for Feature Modeling, MSc thesis, University of Twente, 2014
[4] M. Alferez, J. A. G. Duarte, M. Acher, B: Baudry, Modeling Variability in the Video Domain: Language and Experience Report, [Research Report] RR-8576, 2014
[5] M. Acher, M. Alferez, J. A. G. Duarte, P. Romenteau, B: Baudry, ViViD: A Variability-Based Tool for Synthesizing Video Sequences, SPLC'14 (tool demonstration track), Sep 2014, Florence, Italy. 2014