Software systems are linguistic artefacts. Designing, implementing and using them requires languages. In general, the concepts provided by a language help us to structure a subject of interest. Apparently, not every (technical) language is suited for every purpose. For software development, however, it is still common to use general-purpose modeling languages (GPMLs) that provide basic concepts such as “Class”, “Attribute” etc. only. As a consequence, using a GPML requires the construction of a system from scratch, which does not only demand a remarkable effort but jeopardizes system quality. Domain-specific languages (DSLs) are supposed to overcome this unsatisfactory situation. DSLs exist as domain-specific implementation languages or domain-specific modelling languages. They are based on reconstructions of technical languages that are especially suited to describe certain aspects of a selected domain. To benefit from DSMLs it is essential that the specification of new DSML and respective editors are effectively supported. Furthermore the transformation from models to code has to be accounted for.
Enterprise models integrate models of the corporate information system (e.g. component models, architecture models, object models) with models of the organizational action system (e.g. business process models, goal models).
For this purpose, enterprise modelling makes use of an integrated set of DSML. Thus, an enterprise model provides a comprehensive conceptual foundation for designing and using systems.
Currently, most meta-modelling environments used for defining DSML are based on the rigid MOF architecture, which poses serious limitations both on the expressiveness of languages and the integration of a software system with its conceptual foundation. The XMF/XModeler toolset is an integrated technology for constructing models and modelling languages which can be used in a wide range of system engineering applications. Different from most existing programming languages, XMF is based on the “golden braid” metamodel. Smalltalk as a prominent example of another language that is also based on the “golden braid” architecture is limited by the fact that a metaclass can be instantiated into one class only, hence, the respective abstraction is useless for defining metamodels of languages. XMF enables multiple levels of classification and treats classes on any classification level as objects. Therefore, it is possible to use a common representation of code and models. In addition to that XMF serves as a meta-language that facilitates the specification of further languages which can be executed in the runtime system of XMF.
Fundamental language concepts of the XMF type system are specified in the XCore meta-model, which uses the golden-braid principle for setting up initial patterns for building larger systems. The idea behind the golden-braid principle is to intertwine the notions of classes and objects in a way that every object is on the one hand created by means of a class description (that creates an object through instantiation), on the other hand, a class description is encapsulated as an object.
This means, class descriptions are special objects, which themselves can be instantiated from classes. From this relationship, the notion of meta-classes for classes arises, which are supported as native language features by XMF.
Both the graphical and textual features of the XMF language are made available through the XModeler modelling environment, which provides an integrated set of model editing tools and model execution facilities. In this environment, modeling languages can be defined, new models can be created, and existing models can be executed and queried using XOCL evaluation expressions.