I’ve been struggling with the notions of what is a model, a model type, a view, a diagram etc, so I compiled a small “ontology” (using the term a bit arbitrarily). I tried to reference the MDA and MOF specifications, and for example the MDA one does give a set of definitions (see section 2.2 of the MDA spec), but no mention of diagrams and diagram types is made, so I needed to put my thoughts in order. Correct me if I’m too wrong.
I won’t go into much detail of what a model is. Relevant literature can be found here, here and elsewhere, and in general that’s a bit too big a topic to touch upon right now. So let’s just assume that we know what models are and take it from there.
Now, a metamodel, or model type, is a model that specifies models. Every model needs to “conform to” or “be an instance of” a metamodel. Saying that a model is anything that conforms to a metamodel is a cyclic definition, but if we take MOF as a starting point, it can kind of stand on its feet. A metamodel defines what (types of) entities can be in a model, how they can be related and what constraints must be satisfied by the model in order for it to be well formed.
A view of a model is a “projection” or a “facet” of it. It can be a subset of it or it can be the entire model under a different “light”. A view however does not add information to the model, the information must be already there (i.e. everyting has already been described in a metamodel and the information is present in the model itself).
Views are depicted by diagrams. Every diagram is associated with a particular view of a model, but also contains information such as placement, alignment, colors, shapes etc. Now, there exist diagram types which specify both particular views for which they are applicable as well as particular graphical rules that must be in place for the diagram to be well formed.
A bunch of diagram types, along with a metamodel, make up a graphical notation. There can also be other notations, eg textual (just replace “diagram type” with “grammar”).
Now, a slice of a model is a clear-cut subset of a model. The resulting model conforms to the same metamodel as the original model, only it contains a subset of the elements and element relations of the original model. The slice can then be depicted with the same set of views as the original model. This of course does not account for incomplete slices (where information is lost during slicing), but let’s live with that for now.
Does this make sense?