- University of Hildesheim ›
- Mathematics, Natural Sciences, Economics and Computer Science ›
- Institutes ›
- Institute of Computer Science ›
- Abteilungen ›
- Software Systems Engineering (SSE) ›
- Textual Variability Overview
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 | 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