MDA jest podejściem, w którym UML jest traktowany jako język programowania. Głównym celem MDA jest tworzenia oprogramowania w oparciu o modele biznesowe oraz separacja modelu na zależny oraz niezależny od platformy. Dzięki MDA te same rozwiązania mogą być realizowane na wielu różnych platformach. Ponadto stworzone na bazie MDA systemy mogą być łatwo integrowane oraz łączone z innymi systemami. Nic nie stoi też na przeszkodzie aby ponownie używać opracowane rozwiązania.
Wyróżnia się cztery poziomy w MDA, ale najczęściej stosowane to:
-
Platform Independent Model (PIM), który można traktować jako abstrakcyjną specyfikację systemu, gdyż nie jest na tym poziomie wskazana konkretna platforma na której zostanie osadzone tworzone rozwiązanie,
-
Platform Specific Model (PSM), który jest modelem o najniższym poziome abstrakcji, odwzorowanym na konkretne rozwiązania wybranej platformy.
Transformacje są mechanizmem pozwalającym na transformowanie modeli jednego typu w drugi, również na różnych poziomach abstrakcji.
Rational Software Architekt posiada nie tylko możliwość budowania projektów w języku UML , ale także umożliwa wygenerowanie zrębów kodu źródłowego na podstawie modelu. Te transformacje to przede wszystkim możliwości generowania szkieletów kodu systemu za pomocą metod inżynierii wprzód oraz tworzenie na podstawie kodu aplikacji równoważnej mu specyfikacji wyrażonej w języku UML (za pomocą metod inżynierii wstecz).
Celem zaprezentowania transformacji utworzyłem projektu UML o nazwie ACMETransformProject (rysunek 1). W projekcie tym umieściłem model o nazwie TransformModel wraz z diagramem klas.
Rys. 1 Tworzenie nowego projektu ACMETransformProject
Kolejnym etapem jest dodanie do stworzonego przez kreator diagramu klas w modelu TransformModel trzech klas o nazwach: Employee, PhoneNumber, Zipcode.
Następnie przy pomocy narzędzi w widoku Palette trzeba stworzyć skierowane związki asocjacji od klasy Employee do klasy PhoneNumber oraz od klasy Employee od kasy Zipcode.
Kolejnym krokiem jest dodanie do klasy PhoneNumber atrybutu prywatnego o nazwie theNumber typu String oraz operacji o nazwie isPhoneNumber przyjmującej argument typu String i zwracającej wartość typu boolean. Gotowy diagram został przedstawiony poniżej:
Rys. 2 Stworzony diagram klas zawierający związki asocjacji
Przykładowy (rys. 2) diagram klas pokazuje klasy, które można przetransformować w klasy (kod źródłowy) występujące w projekcie Java. W praktyce oznacza to przejście z modelu klas do kodu zaimplementowanego w języku Java – modelu implementacji.
Celem przekształcenia modelu na kod należy stworzyć nową transformację wybierając z menu głównego opcje Modeling > Transform > New Configuration. Nowa transformacja została nazwana ACMETransformUMLToJava.
Rys. 3 Tworzenie nowej transformacji
Transformacja jest tylko elementem konfiguracyjnym, który zawiera informacje o modelach źródłowym oraz repozytorium kodu JAVA oraz parametrach transformacji. Z tego też powodu aby przekaszłacić kod należy zaznaczyć w widoku Project Explorer trzy klasy Employee, PhoneNumber, Zipcode a następnie użyć na nich stworzonej przed chwilą transformacji. Wynik powstałych w ten sposób klas JAVA prezentuje poniższy rysunek (rysunek 4.).
Rys. 4. Efekt wykonania transformacji modelu klas w języku UML na klasy w języku Java
Ostatecznym rezultatem transformacji stały się wygenerowane na podstawie diagramu klas UML zręby kodu w języku Java.
Rys. 5 Fragment kodu Java wygenerowanego przy pomocy transformacji UMLtoJava
Czy ma Pan jakies ciekawe linki z opisem MDA, podstawy?