Instances and the Real World
Model instances are internal representations of things in the Real World. They themselves do not and cannot exist in any direct form in reality (shades of Platonic Forms here). Instances become useful when they are interpreted or processed and expressed in some concept that is part of the system. However, all instances map directly with entities in a Real (or Imagined) World and this can be seen most clearly at M0.
The Ambiguity of Tables
Perhaps the most common way to represent instances during modeling is by means of a table. They have become standard and a useful means to clarify and visualise the relationship between a class and its set of instances.
The problem with tables is that they lie between metamodel levels, which can be confusing at times. The real difficulty is that they contain both M[n+1] information in the form of columns (table headings) and M[n] information in the form of rows (objects).
The same sort of ambiguity can also occur when talking about instances (or describing the act of populating a model with instances). This is because referring to an instance from one meta level, say M1, automatically means taking about an entity that really belongs to the next meta level down, M0.
Instances as Models or Data
Within the Matrix, collections of instances which populate a model can themselves be a model. For example, the instances listed in the Analysis of Analysis realm at M2 can themselves form a model expressed in the Real World at level M1 (Analysis of Application). The same instances can also be used to create documentation and other types of diagram.
Similarly, instances (abstractions from the Real World) which populate models at M1 can be processed and realised as actual source code in reality. This is the basis for translation and code generation in Model Compilers.
For example, instances existing in the Objects of Program Realm at M0 can be interpreted and processed to produce source code. It is information in these instances that is used to fill code templates that instantiate source code outside the model.
In summary, it is purely the way instances are instantiated (interpreted and applied) that determines whether they are models or data.
|