It is common sense that the goal of any software development methodology should be obtaining a valuable, working software product. Since this final product is rarely obtainable from the initial needs statement in a single step, intermediate products are necessary. All of these products (intermediate plus final) are typically called work products, since they are commonly the outcome of work and also the input for further work. Many kinds of products may exist: documents, hardware items, models, etc. Some product kinds can be described, from the perspective of the methodology, using a high-level characterization of their properties and natural language; others, on the other hand, need a precise specification of their details in order to be useful. This is the case for models. A model, as we advanced in Section 2.2, is an organized collection of model units; we must describe each model unit in turn in order to make the model useful. Models and model units are characterized, at the metamodel level, by model kinds and model unit kinds, respectively (see Figure 2.5, where these two concepts are linked by the notion of a language).

The specification of modelling languages by defining the model unit kinds (as well as model kinds) that compose them is the usual approach taken by metamodellers, as exemplified by industry standards such as Unified Modeling Language (UML) [28; 29].

It is important to realize that a modelling language establishes the ...

Get Metamodelling for Software Engineering now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.