Abstract
With the growing use of domain-specific languages (DSL) in industry, DSL design and implementation goes far beyond an activity for a few experts only and becomes a challenging task for thousands of software engineers. DSL implementation indeed requires engineers to care for various concerns, from abstract syntax, static semantics, behavioral semantics, to extra-functional issues such as runtime performance. This paper presents an approach that uses one metalanguage per language implementation concern. We show that the usage and combination of those metalanguages is simple and intuitive enough to deserve the term mashup. We evaluate the approach by completely implementing the non-trivial fUML modeling language, a semantically sound and executable subset of the Unified Modeling Language (UML).
Similar content being viewed by others
Notes
The concrete syntax is achieved thanks to a full compatibility with all EMF-based tools for concrete syntax, such as the de facto standards EMFText (see http://www.emftext.org) and XText (see http://www.eclipse.org/Xtext/).
This is one definition in the community. For some researchers, “metamodel” sometimes referred to abstract syntax plus static semantics.
In Scala, the classes and traits inheritance hierarchy forms a directed acyclic graph (DAG). The term linearization refers to the algorithm used to “flatten” this graph for the purposes of resolving method lookup priorities, constructor invocation order, binding of super, etc. The linearization defines the order in which method lookup occurs. We refer the interested reader to [17] for an exhaustive explanation of the Scala’s class linearization mechanism.
cf. http://gemoc.org.
References
Schmidt, D.C.: Model-driven engineering. IEEE Comput. 39(2), 25–31 (2006)
Hutchinson, J., Whittle, J., Rouncefield, M., Kristoffersen, S.: Empirical assessment of MDE in industry. In: International Conference on Software Engineering (ICSE), pp. 471–480. ACM (2011)
Ghosh, D.: DSLs in Action. Manning Publications Co., Greenwich (2010)
Fowler, M.: Domain-Specific Languages. Addison-Wesley Professional, Reading (2010)
Mernik, M.: Formal and Practical Aspects of Domain-Specific Languages: Recent Developments. IGI Global (2013)
Markus, V., Sebastian, B., Christian, D., Birgit, E., Mats, H., Kats, L.C.L., Visser, E., Wachsmuth, G.: DSL Engineering—Designing, Implementing and Using Domain-Specific Languages. dslbook.org, (2013)
Borras, P., Clément, D., Despeyroux, T., Incerpi, J., Kahn, G., Lang, B., Pascual, V.: Centaur: the system. ACM SIGPLAN Notices 24(2), 14–24 (1989)
Tolvanen, J.-P., Rossi, M.: MetaEdit+: defining and using domain-specific modeling languages and code generators. In: Companion of the 18th Annual ACM SIGPLAN Conference OOPSLA, pp. 92–93. ACM (2003)
Cook, S., Jones, G., Kent, S., Wills, A.C.: Domain-Specific Development with Visual Studio Dsl Tools. Addison-Wesley Professional, Reading (2007)
Clark, T., Sammut, P., Willans, J.: Applied Metamodelling—A Foundation for Language Driven Development, 2nd edn. (2008)
Krahn, H., Rumpe, B., Volkel, S.: Monticore: modular development of textual domain specific languages. In: Objects, Components, Models and Patterns, vol. 11 of LNBI, pp. 297–315. Springer, Berlin (2008)
Kats, L.C.L., Visser, E.: The spoofax language workbench: rules for declarative specification of languages and ides. ACM SIGPLAN Notices 45, 444–463 (2010)
Voelter, M., Solomatov, K.: Language modularization and composition with projectional language workbenches illustrated with MPS. In: van den Brand, M., Malloy, B., Staab, S. (eds.) Third International Conference on Software Language Engineering (SLE 2010). Lecture Notes in Computer Science. Springer, Berlin (2010)
Object Management Group, Inc.: Meta Object Facility (MOF) 2.0 Core Specification (2006)
Object Management Group, Inc.: UML Object Constraint Language (OCL) 2.0 Specification (2003)
Jézéquel, J.-M., Barais, O., Fleurey, F.: Model driven language engineering with kermeta. In: Fernandes, J.M., Lämmel, R., Visser, J., Saraiva, J. (eds.) Summer School on Generative and Transformational Techniques in Software Engineering (GTTSE’09), vol. 6491 of Lecture Notes in Computer Science, pp. 201–221. Springer, Berlin (2011)
Odersky, M., Altherr, P., Cremet, V., Dragos, I., Dubochet, G., Emir, B.., McDirmid, S., Micheloud, S., Mihaylov, N., Michel, S., Spoon, L., Stenman, E., Zenger, M.: An Overview of the Scala Programming Language, 2nd edn. Technical report (2006)
Kiczales, G., Lamping, J., Mendhekar, A., Maeda, C., Lopes, C.V., Loingtier, J.-M., Irwin, J.: Aspect-oriented programming. In: European Conference on Object-Oriented Programming (ECOOP 1997), pp. 220–242 (1997)
Clifton, C., Leavens, G.T.: Multijava: Modular open classes and symmetric multiple dispatch for Java. In: International Conference on Object-Oriented Programming, Systems, Languages & Applications (OOPSLA), pp. 130–145 (2000)
Object Management Group, Inc.: Semantics of a Foundational Subset for Executable UML Models (fUML), v1.0 (2011)
Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley Professional, Reading (1995)
Muller, P.-A., Fleurey, F., Jézéquel, J.-M.: Weaving executability into object-oriented meta-languages. In: International Conference on Model Driven Engineering Languages and Systems (MoDELS), vol. 3713 of Lecture Notes in Computer Science, pp. 264–278. Springer, Berlin (2005)
Combemale, B., Crégut, X., Garoche, P.-L., Thirioux, X.: Essay on semantics definition in MDE. An instrumented approach for model verification. J. Softw. 4(9), 943–958 (2009)
Meyer, B.: Eiffel: The Language. Prentice-Hall, Inc., Englewood Cliffs (1992)
Harel, D., Rumpe, B.: Meaningful modeling: what’s the semantics of “semantics”? Computer 37(10), 64–72 (2004)
Steinberg, D., Budinsky, F., Paternostro, M., Merks, E.: EMF: Eclipse Modeling Framework, 2nd edn. Addison-Wesley, Reading (2008)
Shonle, M., Lieberherr, K., Shah, A.: XAspects: an extensible system for domain-specific aspect languages. In: Companion of the 18th Annual ACM SIGPLAN Conference OOPSLA, pp. 28–37. ACM (2003)
Hundt, R.: Loop Recognition in C++/Java/Go/Scala
Liskov, B.H., Wing, J.M.: A behavioral notion of subtyping. ACM Trans. Program. Lang. Syst. 16, 1811–1841 (1994)
Odersky, M.: Contracts for scala. In: First international conference on Runtime verification (RV’10), pp. 51–57. Springer, Berlin (2010)
Hilbert, D.: Ueber die stetige Abbildung einer Line auf ein Flächenstück. Mathematische Annalen, 38 (1891)
Harrison, W.H., Ossher, H., Tarr, P.L.: General composition of software artifacts. In: Software Composition (SC 2006), pp. 194–210 (2006)
Apel, S., Kastner, C., Lengauer, C.: Featurehouse: Language-independent, automated software composition. In: International Conference on Software Engineering (ICSE), pp. 221–231 (2009).
Dinkelaker, T., Eichberg, M., Mezini, M.: An architecture for composing embedded domain-specific languages. In: International Conference on Aspect-Oriented Software Development (AOSD), pp. 49–60. ACM (2010)
Van Wyk, E., de Moor, O., Backhouse, K., Kwiatkowski, P.: Forwarding in attribute grammars for modular language design. In: 11th International Conference on Compiler Construction (CC 2002), pp. 128–142. Springer, (2002)
Henriques, P.R., Pereira, M.J.V., Mernik, M., Lenic, M., Gray, J., Hui, W.: Automatic generation of language-based tools using the LISA system. Softw. IEE Proc. 152(2), 54–69 (2005)
Van Wyk, E., Bodin, D., Gao, J., Krishnan, L.: Silver: an extensible attribute grammar system. Sci. Comput. Program. 75(1–2), 39–54 (2010)
Ekman, T., Hedin, G.: The jastadd system—modular extensible compiler construction. Sci. Comput. Program. 69, 14–26 (2007)
Rebernak, D., Mernik, M., Wu, H., Gray, J.: Domain-specific aspect languages for modularising crosscutting concerns in grammars. IET Softw. 3(3), 184–200 (2009)
Fowler, M.: Language workbenches: The killer-app for domain specific languages. Accessed online from: http://www.martinfowler.com/articles/languageWorkbench.html (2005)
Voelter, M.: From programming to modeling-and back again. Softw. IEEE 28(6), 20–25 (2011)
Klint, P.: A meta-environment for generating programming environments. ACM Trans. Softw. Eng. Methodol. (TOSEM) 2(2), 176–201 (1993)
Cordy, J.R., Halpern, C.D., Promislow, E.: Txl: a rapid prototyping system for programming language dialects. In: International Conference on Computer Languages (ICCL), pp. 280–285 (1988)
Sztipanovits, J., Karsai, G.: Model-integrated computing. IEEE. Comput. 30(4), 110–111 (1997)
Renggli, L., Gîrba, T., Nierstrasz, O.: Embedding languages without breaking tools. In: European Conference on Object-Oriented Programming (ECOOP 2010), vol. 6183 of Lecture Notes in Computer Science, pp. 380–404. Springer, Berlin (2010)
Author information
Authors and Affiliations
Corresponding author
Additional information
Communicated by Prof. Robert France.
The authors gracefully thank all present and past members of the Triskell team at IRISA and Inria for their contributions to the ideas and tools behind the Kermeta language workbench. A special thanks to André Fonseca (former Master student in the team) who worked on the Kermeta-based implementation of fUML.
Rights and permissions
About this article
Cite this article
Jézéquel, JM., Combemale, B., Barais, O. et al. Mashup of metalanguages and its implementation in the Kermeta language workbench. Softw Syst Model 14, 905–920 (2015). https://doi.org/10.1007/s10270-013-0354-4
Received:
Revised:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10270-013-0354-4