As an answer to this question we suggested the conception of “self-referential enterprise systems” (SRES) (Frank & Strecker 2009) . It is based on the idea to integrate an enterprise software system with a corresponding enterprise model at run-time. As a consequence, the software system would not only have access to its own conceptual foundation, but also to a representation of the context it is supposed to operate in. As a consequence, enterprise software systems would become clearly more flexible. Furthermore, users could navigate an enterprise system and a corresponding enterprise model. Thus, they should not only gain a better understanding of a system, but also be enabled to modify the system through a model that represents concepts they are familiar with. The figure below illustrates how a SRES is composed of models/components on different levels of abstraction.
Unfortunately, the implemenation of SRES with traditional object-oriented languages faces a serious limitation. These languages allow for representing only objects on M0. If a language allows for introspection, users can inspect the class of an object, too. As a consequence, it is not possible to allow for a common representation of models and code (which in turn would be a prerequisite for changing a system by changing its model), nor is it possible to integrate representations of DSMLs or Meta-DSMLs with an enterprise system. Multi-level language architectures in general, the XModelerML in particular provide a powerful foundation for the realization of SRES.