I have been poking around on the Sparx website to see if I can find some automated way of converting a class with the stereotype, i.e., one that one might have created automatically from a .df, into a regular class so that one can combine it with the associated classes which are not persisted in the database. While I haven't found that yet, I did run into the definition for an additional level of abstraction in the typical MDA transformation hierarchy. As some of you remember, the standard trio is:
CIM - Computational Independent Model
PIM - Platform Independent Model
PSM - Platform Specific Model.
Paolo Cantoni and Jim Shaw came up with an additional level which is further abstracted than the CIM, i.e., a place for models which apply regardless of the specific domain. This includes things like Collection and Container, i.e., the sorts of things that one would put in a framework. What did they call this abstraction layer? Why, Domain Independent Model, of course, .... DIM!
Paolo Cantoni and Jim Shaw came up with an additional
level which is further abstracted than the CIM, i.e.,
a place for models which apply regardless of the
specific domain. This includes things like
Collection and Container, i.e., the sorts of things
that one would put in a framework. What did they
call this abstraction layer? Why, Domain Independent
Model, of course, .... DIM!
Jokes aside, it seems to me that a such a Domain Independent Model could not really be considered an additional abstraction of the CIM (unless I'm missing something, and I don't have a lot to go on by your post). If you're referring to things like Collection, Containers, and such, then I don't think we're really talking about things that are above a computation independent level. However, I do see the notion that there is a domain-independent aspect of each of the conventional MDA levels. That is, in the CIM, PIM, and PSM levels, there could be elements which may be considered to be domain-independent in addition to elements which are certainly domain-specific.
I'll have to give this some further thought. Can you send the link to what you found? Or did you make this up?
The post where I found it mentioned was here http://www.sparxsystems.com.au/cgi-bin/yabb/YaBB.pl?board=UMLPRO;action=display;num=1151750696;start=0#0
I don't know that I would think it was as important a distinction as the other three, but it has a certain appeal to me (other than the humor) because I have thought for a long time that a given model needs a framework against which it can be generated. The CIM is a model of a particular domain, but it is likely that one will have framework entities which underly any CIM and are independent of the domain. Isn't that a higher level of abstraction? Seems like it to me.