I got into a very interesting discussion a few days ago: Where exactly can you find a PIM and a PSM in both in the MDA vision as such as well as in existing tools such as iQgen. My view on this issue is:
- A Platform Independent Model (PIM) is the starting point.
- The PIM is turned into a Platform Specific Model (PSM) by means of a transformation. This can be done either manually or automatically.
- The PSM can be transformed again, yielding an even more platform specific model - other words, a new PSM, targeting another platform.
- The final PSM is turned into code.
In “Pragmatic MDA” or “MDA light” or “MDA as it exists today” …
- A Platform Independent Model (PIM) is the starting point, although it might be called a PSM with some justification (as it will usually contain at least information to target an “abstract” platform)
- The PIM is turned into code by means of an automatic transformation.
So is there a PSM in the second approach? If so, where?
In my opinion, the PSM, if you insist on finding it, is the code itself. How can the code be a model? A model, in general, is a simulation of some concept or aspect from a specific point of view, intended to enable reasoning about it for a particular purpose. If I take the resulting code in the second approach from above, I can look at it in an IDE, the purpose being to edit in its textual form. If I read the same code into a 1:1 CASE tool such as Together, I see a visual rendering; the purpose of which might be to manipulate it visually or explain it to somebody else.