Zazwyczaj sporo mówi się na temat tego, że model musi być odseparowany od swojej implementacji. Oznacza to, że w pierwszej fazie modelowania nie należy zastanawiać się nad tym, jak będzie wyglądała implementacja. Dopiero po zatwierdzeniu projektu można dostosować model już do środowiska implementacji. Sprzyja to reużyciu całych fragmentów projektów. Stosując taka zasadę idealnie działa się zgodnie z MDA czyli Model Driven Architecture. Model-Driven Architecture ? to sposób budowania oprogramowania w oparciu o modele i ich transformacje.
W MDA wyróżnia się 4 poziomy (modele):
-
Computation Independent Model (CIM) (albo: domain model; vocabulary) ? model biznesowy, nie precyzujący zakresu odpowiedzialności oprogramowania
-
Platform Independent Model (PIM) ? abstrakcyjna specyfikacja systemu
-
Platform Specific Model (PSM) ? model odwzorowany na konkretne rozwiązania wybranej platformy
-
Implementation Model ? proste przełożenie decyzji z modelu platformowego
Patrząc na ten podział modelem odseparowanym od implementacji będzie model PIM, którego ideą jest zaprezentowanie rozwiązania zgodnego z wymaganiami.
PSM natomiast stanowi odwzorowanie abstrakcji zamodelowanych w PIM na konkretne rozwiązania charakterystyczne dla danej platformy lub języka programowania. Mówiąc inaczej PSM jest uszczegółowioną formą PIM lub jego konkretnym wystąpieniem.
Narzędzia CASE w różnym stopniu wspierają takie podejście. Czasem jest to wygenerowanie modelu implementacji jak ma to miejsce w narzędziach z rodziny Rational (nawiasem mówiąc w produktach Rational mówi się o Model Driven Development (MDD), który jest rozszerzoną wersją MDA) lub modelu platformy jak ma to miejsce w Enterprise Architect.
Przykład transformacji w EnterpriseArchitect można znaleźć w poście Transformacja PIM-PSM w Enterprise Architect
Na koniec należy wspomnieć, że dwukierunkowość transformacji PIM ?> PSM i PSM ?>PIM nie jest zawsze możliwa.