TY - JOUR
T1 - Exploration of modularity and reusability of domain-specific languages: an expression DSL in MetaMod
AU - Sutii, A.M.
AU - van den Brand, M.G.J.
AU - Verhoeff, T.
PY - 2018/1/1
Y1 - 2018/1/1
N2 - Language-oriented programming (LOP) advocates a way of creating software systems that starts from the development of a domain-specific language (DSL). The DSL is geared towards solving computational problems in a particular domain. Developers then use the DSL to express configurations, rules, algorithms or knowledge for this particular domain at higher levels of abstraction than those achievable with a general-purpose programming language. Achieving the vision of LOP requires methods to ease the creation and the reuse of DSLs. One of the most likely technologies to achieve the vision of LOP are the projectional language workbenches because of the flexibility they add in DSL notation and DSL modularity. Modularity, in particular, is a key factor in easing the creation and reuse of DSLs. We have previously designed a new method and associated meta-tools, called MetaMod, for the creation of modular and reusable DSLs. The goal in this article is to demonstrate what the advantages of MetaMod are in terms of creating modular and reusable DSLs compared to the state-of-the-art projectional language workbench Jetbrains MPS. To this end, we took a comprehensive expression language, the iets3 expression DSL written in Jetbrains MPS, and redefined a fragment of it in MetaMod; we use part of this reimplemented expression language as a running example in the article. This allowed us to make a better comparison with creating DSLs in MPS. Moreover, in the process, we also highlighted the main features of MetaMod concerning modularity and reuse. As a result of the comparison we underline the main advantage that MetaMod brings in the implementation of modular and reusable DSLs, that is, the possibility to create smaller, more conceptually cohesive DSLs. This makes DSLs more fit for reuse. Furthermore, we present an extensive overview of related work regarding features of language tools for creating modular and reusable DSLs.
AB - Language-oriented programming (LOP) advocates a way of creating software systems that starts from the development of a domain-specific language (DSL). The DSL is geared towards solving computational problems in a particular domain. Developers then use the DSL to express configurations, rules, algorithms or knowledge for this particular domain at higher levels of abstraction than those achievable with a general-purpose programming language. Achieving the vision of LOP requires methods to ease the creation and the reuse of DSLs. One of the most likely technologies to achieve the vision of LOP are the projectional language workbenches because of the flexibility they add in DSL notation and DSL modularity. Modularity, in particular, is a key factor in easing the creation and reuse of DSLs. We have previously designed a new method and associated meta-tools, called MetaMod, for the creation of modular and reusable DSLs. The goal in this article is to demonstrate what the advantages of MetaMod are in terms of creating modular and reusable DSLs compared to the state-of-the-art projectional language workbench Jetbrains MPS. To this end, we took a comprehensive expression language, the iets3 expression DSL written in Jetbrains MPS, and redefined a fragment of it in MetaMod; we use part of this reimplemented expression language as a running example in the article. This allowed us to make a better comparison with creating DSLs in MPS. Moreover, in the process, we also highlighted the main features of MetaMod concerning modularity and reuse. As a result of the comparison we underline the main advantage that MetaMod brings in the implementation of modular and reusable DSLs, that is, the possibility to create smaller, more conceptually cohesive DSLs. This makes DSLs more fit for reuse. Furthermore, we present an extensive overview of related work regarding features of language tools for creating modular and reusable DSLs.
KW - Ddomain-specific languages
KW - Expression language
KW - Language workbenches
KW - Language-oriented programming
KW - Model-driven engineering
KW - Modularity
KW - Reuse
UR - http://www.scopus.com/inward/record.url?scp=85026315366&partnerID=8YFLogxK
U2 - 10.1016/j.cl.2017.07.004
DO - 10.1016/j.cl.2017.07.004
M3 - Article
SN - 1477-8424
VL - 51
SP - 48
EP - 70
JO - Computer Languages, Systems and Structures
JF - Computer Languages, Systems and Structures
ER -