Skip to main content
Log in

Mashup of metalanguages and its implementation in the Kermeta language workbench

  • Regular Paper
  • Published:
Software & Systems Modeling Aims and scope Submit manuscript

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).

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5

Similar content being viewed by others

Notes

  1. 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/).

  2. See http://portal.modeldriven.org/.

  3. See http://portal.modeldriven.org/project/foundationalUML.

  4. This is one definition in the community. For some researchers, “metamodel” sometimes referred to abstract syntax plus static semantics.

  5. https://wiki.scala-lang.org/display/SYGN/Design-by-contract.

  6. 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.

  7. See https://gforge.inria.fr/forum/forum.php?forum_id=11075.

  8. See http://www.emftext.org/index.php/EMFText.

  9. See http://www.eclipse.org/Xtext/.

  10. http://goo.gl/4RR9k.

  11. See http://code.google.com/p/simple-build-tool/.

  12. See http://scala-tools.org/mvnsites/maven-scala-plugin/.

  13. See http://www.scala-lang.org/docu/files/tools/fsc.html.

  14. cf. http://gemoc.org.

References

  1. Schmidt, D.C.: Model-driven engineering. IEEE Comput. 39(2), 25–31 (2006)

    Article  Google Scholar 

  2. 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)

  3. Ghosh, D.: DSLs in Action. Manning Publications Co., Greenwich (2010)

    Google Scholar 

  4. Fowler, M.: Domain-Specific Languages. Addison-Wesley Professional, Reading (2010)

  5. Mernik, M.: Formal and Practical Aspects of Domain-Specific Languages: Recent Developments. IGI Global (2013)

  6. 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)

  7. 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)

    Article  Google Scholar 

  8. 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)

  9. Cook, S., Jones, G., Kent, S., Wills, A.C.: Domain-Specific Development with Visual Studio Dsl Tools. Addison-Wesley Professional, Reading (2007)

  10. Clark, T., Sammut, P., Willans, J.: Applied Metamodelling—A Foundation for Language Driven Development, 2nd edn. (2008)

  11. 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)

  12. 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)

    Article  Google Scholar 

  13. 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)

  14. Object Management Group, Inc.: Meta Object Facility (MOF) 2.0 Core Specification (2006)

  15. Object Management Group, Inc.: UML Object Constraint Language (OCL) 2.0 Specification (2003)

  16. 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)

  17. 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)

  18. 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)

  19. 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)

  20. Object Management Group, Inc.: Semantics of a Foundational Subset for Executable UML Models (fUML), v1.0 (2011)

  21. Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley Professional, Reading (1995)

  22. 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)

  23. 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)

    Google Scholar 

  24. Meyer, B.: Eiffel: The Language. Prentice-Hall, Inc., Englewood Cliffs (1992)

    MATH  Google Scholar 

  25. Harel, D., Rumpe, B.: Meaningful modeling: what’s the semantics of “semantics”? Computer 37(10), 64–72 (2004)

    Article  Google Scholar 

  26. Steinberg, D., Budinsky, F., Paternostro, M., Merks, E.: EMF: Eclipse Modeling Framework, 2nd edn. Addison-Wesley, Reading (2008)

  27. 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)

  28. Hundt, R.: Loop Recognition in C++/Java/Go/Scala

  29. Liskov, B.H., Wing, J.M.: A behavioral notion of subtyping. ACM Trans. Program. Lang. Syst. 16, 1811–1841 (1994)

    Article  Google Scholar 

  30. Odersky, M.: Contracts for scala. In: First international conference on Runtime verification (RV’10), pp. 51–57. Springer, Berlin (2010)

  31. Hilbert, D.: Ueber die stetige Abbildung einer Line auf ein Flächenstück. Mathematische Annalen, 38 (1891)

  32. Harrison, W.H., Ossher, H., Tarr, P.L.: General composition of software artifacts. In: Software Composition (SC 2006), pp. 194–210 (2006)

  33. Apel, S., Kastner, C., Lengauer, C.: Featurehouse: Language-independent, automated software composition. In: International Conference on Software Engineering (ICSE), pp. 221–231 (2009).

  34. 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)

  35. 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)

  36. 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)

    Article  Google Scholar 

  37. Van Wyk, E., Bodin, D., Gao, J., Krishnan, L.: Silver: an extensible attribute grammar system. Sci. Comput. Program. 75(1–2), 39–54 (2010)

    MATH  Google Scholar 

  38. Ekman, T., Hedin, G.: The jastadd system—modular extensible compiler construction. Sci. Comput. Program. 69, 14–26 (2007)

    Article  MATH  MathSciNet  Google Scholar 

  39. 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)

    Article  Google Scholar 

  40. Fowler, M.: Language workbenches: The killer-app for domain specific languages. Accessed online from: http://www.martinfowler.com/articles/languageWorkbench.html (2005)

  41. Voelter, M.: From programming to modeling-and back again. Softw. IEEE 28(6), 20–25 (2011)

    Article  Google Scholar 

  42. Klint, P.: A meta-environment for generating programming environments. ACM Trans. Softw. Eng. Methodol. (TOSEM) 2(2), 176–201 (1993)

    Article  Google Scholar 

  43. 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)

  44. Sztipanovits, J., Karsai, G.: Model-integrated computing. IEEE. Comput. 30(4), 110–111 (1997)

    Article  Google Scholar 

  45. 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)

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Benoit Combemale.

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

Reprints 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

Download citation

  • Received:

  • Revised:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s10270-013-0354-4

Keywords

Navigation