We began this chapter saying that metamodels, methodologies and endeavours are all expressed as models, and that a language to represent them needs to be found. Chapter 1, at the same time, established that methodologies must serve as “templates” from which endeavours can be obtained, and metamodels, in turn, must be able to generate methodologies and also represent, to a certain extent, endeavours (Section 1.2.3). Conversely, metamodels themselves need to be defined. The traditional approach here is to introduce a metametamodelling layer that supports the various metamodels. In other words, a high-level model for which the SUS is metamodels. Such a metametamodel would contain a minimal set of concepts from which could be generated metamodels. Of course, this could rapidly become an infinite regression, so the OMG, for example, state that the metametamodel (M3 in their terminology) is its own metamodel, thus introducing ambiguity [18]. As an alternative, and one that supports the non-linear (linguistic versus ontological) hierarchies proposed in [5] and discussed in detail in Chapter 4, Figure 2.21 suggests that there should be a modelling infrastructure, seen as orthogonal to the metalevel hierarchy, that supports modelling at any “abstraction level”. This is called the Xome7 Modelling Infrastructure, or XMIS (see Figure 2.22, which also shows the chain of representation relationships between the various software engineering domains). Since the three domains are connected by strong representation relationships, it is expected that using the same modelling language will ease the generation of models in one domain from models in the source domain whenever it is necessary. In this scenario, a different modelling language would require a mapping layer between domains.
Source: Gonzalez-Perez, 2005, copyright IEEE Computer Society. Reproduced by permission
This section focuses on describing the XMIS approach, as a prelude to the following chapters.
As we have seen above, the XMIS [16; 18] establishes an infrastructure modelling language, i.e., a generic, domain-independent language that is capable of representing models in different domains, from metamodels to methodologies and endeavours. Metamodels and methodologies can be seen as languages as well, since they are used to express other models (metamodels to express methodologies and methodologies to express endeavours), and therefore the expressive power of XMIS focuses on structure rather than dynamics. XMIS uses a very basic set of object-oriented concepts plus a few extra elements, such as powertypes, that extend the object-oriented paradigm beyond its usual boundaries.
Since XMIS provides a formal underpinning to all modelling domains, it is important that the concepts, although generally well known at a low precision level, are clearly defined. The type-level modelling elements used by XMIS are:
As well as type-level elements, XMIS makes tight definitions of several instance-level modelling elements:
The basic modelling elements enumerated in the previous section can express a wide range of object-oriented models, but cannot solve the categorization problems exposed in Section 2.3. To this purpose, the following modelling elements are introduced formally in the context of XMIS as:
As an infrastructure language, XMIS is not explicitly used by an individual creating a model. For example, a methodologist putting together a methodology would use the metamodel as an explicit language to express the methodology, not XMIS; if the metamodel included a class TaskKind, for example, the methodology would include instances of this class, thus being expressed in terms of the metamodel rather than XMIS. Notice, however, that TaskKind is a class, and that its instance in the methodology is an object; class and object are notions defined by XMIS. This is how XMIS works, by establishing the foundational ideas on which higher-level models are built. In Chapter 3, we demonstrate more uses of the XMIS infrastructure in various application areas.