MDE - Model Driven Engineering

PL
Data dodania: 2011-10-07, Autor: Jacek Jankowski, Dodał: Karol, Wyświetleń: 288

Tematem artykułu mają być techniki modelowania oparte na modelach. Brzmi to troszkę przewrotnie – powinienem napisać Inżynieria Oparta o Modele. W skrócie IOM (zawsze chciałem wymyślić nowy skrót). Poniżej natomiast będę się starał rozszyfrować takie skróty, jak :

  • MBD – Model Based Development
  • MDA - Model Driven Architecture
  • MDD - Model Driven Development
  • MDE - Model Driven Engineering
  • MDSE - Model Driven Software Engineering

Skupię się w ramach tego tekstu głównie na MDE – ciekawym rozszerzeniu idei MDA na inne etapy wytwarzania oprogramowania. Ale zacznijmy od początku…

1. Co to jest MBD?

MBD – Model Based Development, czyli tworzenie (czegoś…, tutaj chodzi o oprogramowanie) w oparciu o modele. Myślę, że pod tym pojęciem każdy może rozumieć coś innego i wcale to nie oznacza, że ktoś by się mylił! Jest to tak szeroko używane sformułowanie, iż nie sposób jednoznacznie je opisać. No ale spróbuję…;)

Powinienem zacząć od pewnej historii… No może raczej „teraźniejszości”…;) Zawsze istniało napięcie między prowadzeniem procesu modelowania oraz procesem wytwarzania oprogramowania. Zazwyczaj modelowanie i wytwarzanie są oddzielnymi procesami, prowadzonymi przez różne osoby. Często też takie podejście kończy się katastrofą… Jak do tego dochodzi?

Zazwyczaj jest tak, iż na początku projekt wymaga zaplanowania, analizy… Wynikiem tego procesu, który często jest bardzo czasochłonny, jest pewna specyfikacja (zwykle w przesławnym języku UML). Dokument ten z kolei jest traktowany w późniejszym etapie przez wytwórców systemu raczej jako luźne wskazówki niż precyzyjną specyfikację, bądź też nie jest ona do końca zrozumiała, lub też jest źle interpretowana… Także wybranie platformy zmusza wytwórców do poświęcenia pięknej architektury na rzecz pożądanej wydajności oraz integralności. Nawet najmądrzej przeprowadzone zmiany w implementacji powodują nie możność odtworzenia samego modelu projektowego bądź biznesowego (mówię tu o procesie reinżynierii).

Dlatego wydawałoby się, że podejście MBD jest zbyt wysoce idealistyczne (na pewno nie można o nim powiedzieć praktyczne…) w tym „podzielonym” świecie… Jednak grupa OMG, która jest przeciwna podziałom, postanowiła zmienić sytuację… Pojawia się inicjatywa MDA…

2. Co to jest MDA?

No właśnie… Nie jest tu moim zadaniem opisywanie MDA(o tym pisałem już w innym artykóle), jednak krótko przypomnę najważniejsze… Co to jest MDA (... wg OMG ...), Model Driven Architecture? OMG głosi wszem i wobec, iż jest to :

  • krok milowy w kierunku MBD, wytwarzania oprogramowania bazującego na modelach…
  • Że jest to nowa strategia wytwarzania dużych systemów przemysłowych…
  • Że MDA jest podejściem, według którego UML byłby językiem programowania…

Brzmi nieźle! Przypomnę jeszcze kilka ważnych dalej informacji.. (... Hmmm ... Brnijmy dalej ...)

  • Głównym celem MDA jest tworzenie oprogramowania w oparciu o modele biznesowe (przypadki użycia) oraz separacja modelu na model niezależny od platformy i model zależny od platformy.
  • Wyróżniono 4 modele (poziomy) w MDA:
    • 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 – generacja kodu.
  • Dwa podstawowe typy modeli systemu informatycznego, to:
    • PIM – Platform Independent Model.
    • PSM – Platform Specific Model.

Modele stworzone w ramach PIM odpowiadają za dostarczenie specyfikacji ogólnej struktury, jak również funkcjonalności oferowanej przez projektowany system informatyczny. Na tym poziomie nie wprowadza się żadnych elementów specyficznych dla danej technologii, w której może być budowany system informatyczny. Modele wchodzące w skład PIM budowane są na podstawie notacji UML.

Modele stworzone w ramach PSM zawierają szczegóły związane z implementacją poszczególnych podsystemów zdefiniowanych w PIM. Szczegóły implementacyjne zawarte w PSM są na tyle dokładne, że na ich podstawie można generować kod dla konkretnej, wybranej wcześniej technologii. Modele w ramach PSM tworzy się poprzez iteracyjne uszczegóławianie modelu aplikacji stworzonego w czasie pracy nad PIM o elementy zdefiniowane w ramach konkretnej technologii. Na etapie prac związanych z definiowaniem PSM następuje więc proces transformacji pewnego standardowego zbioru elementów które były wykorzystywane do definiowania PIM na elementy występujące w danej platformie, na którą chcemy wyprodukować nasz system informatyczny. W trakcie dokonywania transformacji modelu PIM w model PSM następuje stopniowe zmniejszanie poziomu abstrakcji pojęć, którymi się posługujemy.

A czy to naprawdę działa? Jak wygląda użycie architektury MDA w wytwarzaniu oprogramowania w rzeczywistości? Tu pojawia się MDD…

3. Co to jest MDD?

MDD - Model Driven Development, czyli użycie architektury MDA w wytwarzaniu oprogramowania naprawdę ma miejsce!! (..może będzie o tym kiedyś artykuł..)

4. Co to jest MDE (MDSE)?

Co to jest MDE - Model Driven Engineering (MDSE - Model Driven Software Engineering)? Czym więcej jest MDE od MDA?

Tą część artykułu oparłem o dokument “Model Driven Engineering” by Marcus Alanen, Johan Lilius, Ivan Porres and Dragos Truscan

Model Driven Engineering (MDE) stawia czoła trudnemu do uchwycenia problemu wytwarzania systemów poprzez promocję wykorzystania modeli jako głównych artefaktów do konstrukcji i utrzymywania oprogramowania. Użycie terminu MDE zostało po raz pierwszy użyte przez Pana Kenta i prawdopodobnie zostało wyniesione z inicjatywy Model Driven Architecture (MDA) grupy OMG.

Jak już pisałem, MDA bazuje na idei modeli niezależnych od platformy (PIM) , modeli opisu (PDM – platform description models), które mogą być realizowane przy użyciu różnych środowisk oraz języków programowania do modeli zależnych od platformy (PSM). MDE można rozumieć jako szersze pojęcie. MDE ma aspiracje do objęcia całego cyklu wytwarzania oprogramowania. MDE odnosi się do wszystkich modeli i zadań od początku projektu do jego końca.

Wydaje się, że wizja OMG dotycząca MDA, oczywiście poprawna, jest tylko jednym z możliwych scenariuszy w procesie MDE. Transformacja PIM na PSM może być niezbędna w kontekście MDE, ale także transformacja PIM na PIM może być tak samo potrzebna. Podstawowa koncepcja opowiadająca za MDE jest taka, że wszystkie artefakty wygenerowane w trakcie cyklu wytwarzania oprogramowania powinny być reprezentowane przy użyciu wspólnego języka modelowania (nasuwa się pytanie, w jakim ?? ). W konsekwencji proces wytwarzania oprogramowania może być widziany jako proces transformacji jednego modelu w inny model, aż będzie mógł być wykorzystany poza środowiskiem wytwórczym. Jeśli tylko zastosujemy transformacje PIM na PSM jak wymaga tego MDA zamiast bardziej generalnego podejścia, możemy pominąć ważne elementy i w rezultacie może stać się nie możliwe dostarczenie rozwiązania do szerszego problemu.

Aktualny standard OMG prezentuje statyczne oraz strukturalne spojrzenie na modele. Definiuje kilka standardowych języków modelowania, definiuje jaki model jest właściwy dla danego języka, jak przechowywać model w XMI. Jednakże nic nie wspomina o sposobie tworzenia samych modeli, nic nie mówi o ewolucji modeli. Może to być spowodowane samą polityką OMG, grupy, która nie wspiera żadnej specyficznej technologii (w końcu UML jest dla każdego…)

Podsumowując…

Model Driven Engineering (MDE) jest jak na razie tylko pewną ideą… Ideą, w której wszystkie artefakty wygenerowane w trakcie cyklu wytwarzania oprogramowania powinny być reprezentowane przy użyciu wspólnego języka modelowania. W takim wypadku proces wytwarzania oprogramowania mógłby być widziany jako proces transformacji jednego modelu w inny model, aż do osiągnięcia rozwiązania.. Really cool…:

5. Literatura

 


Aby dodawać komentarze musisz być zalogowany!


Kontakt

Jeśli chcesz się z nami skontaktować napisz na adres: info(at)binboy.org lub odwiedź nasz profil na Facebooku!

O Nas

Serwis binboy.org to kopalnia wiedzy dla wszystkich z branży IT, w szczególności dla programistów i webmasterów. To duży zbiór kursów programowania, tutoriali, darmowych ebooków, setki kodów źródłowych itp.

Bądź w kontakcie

Panel użytkownika

Zaloguj się do panelu użytkownika.
Nie masz konta? Zarejestruj się!
Zapomniałeś hasła?