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ść budowa­nia 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.

clip_image002

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:

clip_image004

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

clip_image006

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.).

clip_image008

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.

clip_image010

Rys. 5 Fragment kodu Java wygenerowanego przy pomocy transformacji UMLtoJava

Technorati Tagi: inżynieria oprogramowania,modelowanie systemów informatycznych,Rational Software Architect

1 Comment

  1. Czy ma Pan jakies ciekawe linki z opisem MDA, podstawy?

Zostaw odpowiedź

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Możesz użyć tych HTML tagów i atrybutów: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Close