The research group Enterprise Modeling and Business Informatics has long been involved in the development of DSML and supplementing modeling methods. This work resulted in several DSML as well as languages and complementary tools without workarounds that were not only tedious, but created a serious threat to maintenance. Take, for example, a DSML for IT Management or one for process modeling. The first may include a concept such as “Printer” to specify printer models. Since IT managers may be interested in particular printer exemplars, e.g. to calculate the total number of pages printed per month, a corresponding language feature would be useful. Similarly, a language for process modeling that may include a concept “Activity” should not only allow to define properties of activity types, but also properties that apply to particular process executions, such as the starting time of an activity. However, within the traditional paradigm meta classes can describe features of their instances only, not of instances of these instances.

To address this problem, we extended our meta modeling language with “intrinsic features” (see the yellow marked attribute in the meta meta model specified with the MEMO meta modeling language below). They enable to specify features with a meta class that are to instantiated only with instances of direct instances.

The specification of the language concept “FileSystem” with the MEMO ITML illustrates the use of intrinsic features. While regular attributes like “maxFileSize” are instantiated directly and initialized with a type of file system, the intrinsic attributes like “size” apply to particular instances of a file system type, that is, there instantiation is deferred to the next level.

While intrinsic features are useful to describe knowledge that applies to instances at M0, their availability for the specification of DSML was not sufficient. First, they could not be adequately implemented with traditional object-oriented languages. As a consequence, we had to omit them with the implementation of model editors. Second, they are restricted to defer the instantiation of features by one level only.

  • Bock, A., & Frank, U. (2016). Multi-perspective Enterprise Modeling—Conceptual Foundation and Implementation with ADOxx. In D. Karagiannis, H. C. Mayr, & J. P. Mylopoulos (Eds.), Domain-specific conceptual modeling: Concepts, methods and tools (pp. 241–267). Cham: Springer.
  • Frank, U. (1994). Multiperspektivische Unternehmensmodellierung: Theoretischer Hintergrund und Entwurf einer objektorientierten Entwicklungsumgebung. München: Oldenbourg.
  • Frank, U. (2011). The MEMO Meta Modelling Language (MML) and Language Architecture: 2nd Edition (ICB Research Report No. 43).
  • Frank, U. (2011). MEMO Organisation Modelling Language (1): Focus on Organisational Structure (ICB Research Report No. 48).
  • Frank, U. (2011). MEMO Organisation Modelling Language (2): Focus on Business Processes (ICB Research Report No. 49).
  • Frank, U. (2013). Domain-Specific Modeling Languages – Requirements Analysis and Design Guidelines. In Iris Reinhartz-Berger, Aron Sturm, Tony Clark, Yair Wand, Sholom Cohen, & Jorn Bettin (Eds.), Domain Engineering: Product Lines, Conceptual Models, and Languages (pp. 133–157). Springer.
  • Overbeek, S., Frank, U., & Köhling, C. A. (2015). A Language for Multi-Perspective Goal Modelling: Challenges, Requirements and Solutions. Computer Standards & Interfaces, 38, 1–16.
  • Frank, U., Kaczmarek-Heß, M., & Kinderen, S. D. (2021). IT Infrastructure Modeling Language (ITML): A DSML for Supporting IT Management. DuEPublico: Duisburg-Essen Publications online, University of Duisburg-Essen, Germany.

Language Engineering: Core Assumptions

Research by Tony Clark and colleagues on language engineering resulted in a comprehensive meta-modelling environment that supports language engineering and executable modelling, the XModeler. A meta model called XCore and a kernel language called XOCL are defined in terms of the services offered by the VM. All other aspects of XModeler are defined in terms of XCore and XOCL.

It was in 2010, at the ER conference in Vancouver, when Tony Clark and Ulrich Frank first met. After Ulrich explained the frustration he had experienced with various programming languages he had used to implement modeling tools, Tony said the XModeler might be suited to solve most of these problems … and it was indeed. After that it did not take long until the first multi-level extension of the XModeler was created.

XModeler is a meta-modelling environment that supports language engineering and executable modelling. It combines a visual modelling environment with an integrated programming language. It does not provided specific support for assigning classes to levels. Instead, it includes an implicit notion of level, where the level of class can be determined dynamically be the number of possible instantiation steps.

  • Clark, T.; Willans, J.: Software language engineering with XMF and XModeler, in: M. Mernik (Ed.), Formal and Practical Aspects of Domain-Specific Languages: Recent Developments, IGI Global, 2012, pp. 311–340. URL
  • Clark, T.: Static meta-object protocols: towards efficient reflective object-oriented languages, in: L. Fuentes, D. S. Batory, K. Czarnecki (Eds.), Companion Proceedings of the 15th International Conference on Modularity, Málaga, Spain, March 14 – 18, 2016, ACM, 2016

All languages created with the XModeler are based on a recursive meta model named XCore. The figure below shows a slightly simplified representation of XCore. Its recursive nature enables the construction of an arbitrary number of classification levels, which is demonstrated in this video.

Background: How multiple levels of classification are enabled

XModeler provides a programming language called XOCL that can be extended with new language features. XOCL combines features from the Object Constraint Language (OCL), with an action language and features from functional programming. The semantics of XOCL is extensible because it is based on a meta-object protocol (MOP), and the syntax of XOCL is extensible through the use of syntax-classes. The XOCL language is defined below. It compiles (using a compiler written in XOCL) to VM instructions that run in terms of the data structures shown below. A small collection of kernel operations are made available in XOCL to manipulate the VM data which is otherwise hidden from the user.


Data structures used by the XModeler virtual machine

Core syntax of the XOCL language

Essential XCore bootstrap definitions

XOCL evaluation algorithm

  • Clark, T., & Willans, J. (2012). Software Language Engineering with XMF and XModeler. In M. Mernik (Ed.), Formal and Practical Aspects of Domain-Specific Languages (pp. 311–340). Information Science Reference.
  • Clark, T., Sammut, P., & Willans, J. (2008). Applied Metamodelling: A Foundation for Language Driven Development (2nd ed.). Ceteva. Retrieved from
  • Bettin, J., & Clark, T. (2010). Advanced Modelling Made Simple with the Gmodel Metalanguage. In Proceedings of the 2nd International Workshop on Future Trends of Model-Driven Development (FTMDD 2010), Funchal, Portugal.
  • Clark, T., & Willans, J. (2012). Software Language Engineering with XMF and XModeler. In M. Mernik (Ed.), Formal and Practical Aspects of Domain-Specific Languages (pp. 311–340). Information Science Reference.