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
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.
We classify current textual variability modeling languages in the following five top-level dimensions:
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.
The following criteria for inclusion of a textual variability modeling language are used, as explained in [2]. The language must be:
This leads to the inclusion of
(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:
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
[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
Prof. Dr. Klaus Schmid
Institut für Informatik
AG Software Systems Engineering
Universitätsplatz 1
31141 Hildesheim
Besucheradresse:
Institut für Informatik
Samelsonplatz 1
31141 Hildesheim
Sekretariat: Raum C212 Spl
Telefon +49 5121 883-40330
Besucheradresse:
Stiftung Universität Hildesheim
Institut für Informatik
Samelsonplatz 1
31141 Hildesheim