« 5.0 Subsystem Interfaces | Main | 3.0 Level of Abstraction »

June 05, 2004

2.0 CIM, PIM, PSM, TS, & PM

Alas, MDA is still evovling and the specifications are still sometimes vague of the definitions of things. The basic breakdown I find useful is:

Computation Independent Model (CIM): a specification model. It is a model because it has a more rigorous semantics than things like natural language specifications. I usually think of it as a white-box specification of requirements. For example, a CIM might break down requirements from a systems engineering viewpoint for individual subsystems. The ATLAS test test specification language (IEEE Std 716) is a good example of a CIM implementation. So I see the CIM as a formal SRS.

Platform Independent Model (PIM): an abstract solution model for functional requirements expressed purely in problem space terms. Because it deals only with functional requirements there is no need for it to incorporate any sort of implementation design decisions. Traditionally this has been an OOA model, at least in the translation methodologies (some OO methodologies don't provide a fully executable solution during OOA).

Platform specific Model (PSM): a solution model that resolves both functional and nonfunctional requirements. Because it deals with nonfunctional requirements it is necessarily dependent upon specific platform technologies and mechanisms (3GL, OS, libraries, interoperability infrastructure, server resources, etc.). Traditionally this as been an OOD model that was elaborated from an OOA model by incorporating platform-dependent decisions. MDA is more flexible and includes OOP models (3GL code) and even object code in an R-T/E environment as PSM variants. (Typically translation skips the OOD equivalent PSM and goes directly to the OOP equivalent PSM.)

Transformation Specification (TS): This is a formal specification of how a transformation from one meta-model to another is mapped. MDA is quite vague at present on what can be in here; apparently anything that will help the transformation will do. However, in elaboration it is usually manifested as an interface description language used to define how two tools (e.g., an OOD modeling tool and an OOPL editor) may interact. In a translation environment it is usually manifested in the form of a rules set for optimization against nonfunctional requirements. I generally think of it in terms of describing a set of rules and policies that control the transformation.

Platform Model (PM): This is esentially a model of the specific computing environment. It characterizes technologies, infrastructures, and paradigms that control implementation for a PSM. Again, MDA is a bit vague about limiting what goes in here. However, I find it useful to think of the PM as a structural model of the computing environment that compliments the more dynamic TS view.

Posted by HS in MDA in general | Permalink