However, this narrow scope makes it hard to reuse a DSL for a new set of requirements (see the “Reusing and Adapting Domain-Specific Languages” sidebar). We’ve developed two ways to improve reusability and decrease language reuse errors for DSLs and DSL compositions. First, a DSL can incorporate variability and codified configuration rules to enable its refinement for multiple domains. Second, we use software product line (SPL) techniques to codify the usage rules for a DSL composition’s constituent DSLs, the concerns that the DSLs cover, and the variations in DSL usage. Codifying these concepts provides developers with a map of how to correctly modify and reuse DSLs and DSL compositions across projects. Although previous research (see the “Related Research in Software Product Lines and DomainSpecific Languages” sidebar) provides a good starting point for addressing DSL reusability challenges, it has limitations. First, researchers have extensively studied SPL techniques in the context of software but not in the context of DSL design. So, we need new methodologies to codify how we can use SPL techniques to manage DSL refinement and composition adaptation. Although some researchers have applied SPL techniques to individual DSLs,2 they haven’t yet extrapolated generalized methodologies for applying these techniques to arbitrary DSLs. Moreover, they haven’t applied SPL variability management techniques to DSL composition and reuse. In this article, we present a general methodology for using feature models to manage DSL and DSL composition reuse.
[1]
Markus Voelter.
A Family of Languages for Architecture Description
,
2008
.
[2]
Douglas C. Schmidt,et al.
Automated Diagnosis of Product-Line Configuration Errors in Feature Models
,
2008,
2008 12th International Software Product Line Conference.
[3]
Danilo Beuche,et al.
Variability management with feature models
,
2004,
Sci. Comput. Program..
[4]
Don S. Batory,et al.
Feature Models, Grammars, and Propositional Formulas
,
2005,
SPLC.
[5]
M Mernik,et al.
When and how to develop domain-specific languages
,
2005,
CSUR.
[6]
D. Batory,et al.
Scaling step-wise refinement
,
2003,
IEEE Transactions on Software Engineering.
[7]
Srini Srinivasan,et al.
NAOMI - An Experimental Platform for Multi-modeling
,
2008,
MoDELS.