Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
pl:miw:miw08_hekateatl [2008/09/30 17:39]
miw
pl:miw:miw08_hekateatl [2019/06/27 15:50] (aktualna)
Linia 43: Linia 43:
  
 ====== Projekt ====== ====== Projekt ======
-==== Transformacja ​ATL ====+ 
 + 
 + 
 + 
 + 
 +==== ATL ==== 
 +ATL (ATLAS Transformation Language) to język transformacji modeli wraz zestawem narzędzi opracowanych przez ATLAS Group (INRIA & LINA). ATL pozwala wyprodukować z zestawu modeli źródłowych,​ zestaw modeli docelowych.  
 + 
 +ATL jest hybrydą programowania deklaratywnego i imperatywnego. Preferowany styl programowania to styl deklaratywny który pozwala w łatwy sposób opisać powiazania pomiędzy modelem źródłowym a docelowym. Jednkże ATL przewiduje również konstrukcje imperatywne w celu opisania wyrażeń trudnych do opracowania w sposób deklaratywny. Program ATL składa się z zestawu reguł które definiują dopasowanie elementów modelu źrodłowego do modelu docelowego 
 + 
 +Opracowane dla platformy Eclipse zintegorowane środowisko programistyczne (ATL IDE) oferuje szereg standardowych narzędzi programistycznych (podświetlanie składni, debuger itd.), które ułatwiają prace z ATL. Projkt ATL oferuje również bibliotege transformacji ATL gdzie można znaleźć ponad 100 opracowanych rozwiązań http://​www.eclipse.org/​m2m/​atl/​atlTransformations/​ 
 + 
 + 
 + 
 +==== The Model-Driven Architecture ==== 
 +MDA to metoda projektowania systemów oprogramowania. Stanowi ona zbiór wytycznych dotyczących struktury specyfikacji,​ które są wyrażone jako modele. 
 +Modele stanowią podstawowe elemetny MDA. W dziedzinie MDA model definiowany jest poprzez model modeli, tak zwany metamodel. Mówimy ze model zgodny z semantyka metamodelu odpowiada temu metamodelowi 
 + 
 + 
 +{{:​pl:​miw:​mda.jpg|:​pl:​miw:​mda.jpg}} 
 + 
 + 
 +==== Trasformacja ​ATL ====
  
 {{:​pl:​miw:​atl.jpg|:​pl:​miw:​atl.jpg}} {{:​pl:​miw:​atl.jpg|:​pl:​miw:​atl.jpg}}
  
  
-Powyższy rysunek opisuje schemat transformacji ATL. Model Ma (plik wejściowy Ecore czyli XMI) odpowiadający metamodelowi MMa (plik Ecore) jest transformowany do modelu Mb (plik wyjściowy Ecore) ​odpowiadającemu ​metamodelowi MMb (Ecore). Transformacja definiowana jest przez model Mt (plik ATL) który odpowiada metamodelowi MMt (metamodel ATL). Metamodele MMt, MMa oraz MMb muszą odpowiadać metamdelowi MMM (MOF albo Ecore)+Powyższy rysunek opisuje schemat transformacji ATL. Model Ma (plik wejściowy Ecore czyli XMI) odpowiadający metamodelowi MMa (plik Ecore) jest transformowany do modelu Mb (plik wyjściowy Ecore), który odpowiada ​metamodelowi MMb (Ecore). Transformacja definiowana jest przez model Mt (plik ATL) który odpowiada metamodelowi MMt (metamodel ATL). Metamodele MMt, MMa oraz MMb muszą odpowiadać metamdelowi MMM (MOF albo Ecore) 
 + 
 + 
 + 
 + 
 + 
 + 
 +==== Przykłady użycia ==== 
 + 
 +**DSLs coordination for Telephony** - praca przedstawia studium impelmentacji dwóch języków związanych z dziedziną telefonii: SPL(Session Processing Language) i CPL (Call Processing Language). Częścoiowo opierają się ona na tych samych słownikach. Jednakże same języki są bardzo różne i zostały zaprojektowane,​ aby być wykorzystywane przez różnych ludzi. Praca pokazuje w jak wykorzystać ATL w celu transformacji programu z jednego języka do drugiego (http://​www.eclipse.org/​m2m/​atl/​usecases/​DSLsTelephony/​) 
 + 
 +==== Transformacja ARD w ARD ==== 
 + 
 +Aby dokonać transformacji należy stworzyć metamodel ARD, odpowaidający mu model będący plikiem wejściowym do transformacji,​ oraz plik ATL opisujący transformację
  
   * Metamodel ARD (w oparciu o [[https://​ai.ia.agh.edu.pl/​wiki/​hekate:​hekate_markup_language|HML]]) - schemat   * Metamodel ARD (w oparciu o [[https://​ai.ia.agh.edu.pl/​wiki/​hekate:​hekate_markup_language|HML]]) - schemat
Linia 155: Linia 190:
 </​code>​ </​code>​
  
-  * Plik XMI do transformacji (Termostat)+  * Plik wejściowy ​XMI do transformacji (Termostat) ​odpowiadający metamodelowi ARD
 <​code>​ <​code>​
 <?xml version="​1.0"​ encoding="​ISO-8859-1"?>​ <?xml version="​1.0"​ encoding="​ISO-8859-1"?>​
Linia 266: Linia 301:
 </​code>​ </​code>​
  
 +  * Model ATL - nie wprowadza żadnych zmian w pliku wyjściowym
 +<​code>​
 +module ARD2ARD; -- Module Template
 +create OUT : Hml from IN : Hml;
 +
 +rule Element2Element {
 + from
 + s : Hml!Element
 + to
 + t : Hml!Element (
 + id <- s.id
 + )
 +}
 +rule Dep2Dep {
 + from
 + s : Hml!Dep
 + to
 + t : Hml!Dep (
 + independent <- s.independent,​
 + dependent <- s.dependent
 + )
 +}
 +rule Trans2Trans {
 + from
 + s : Hml!Trans
 + to
 + t : Hml!Trans (
 + src <- s.src,
 + dst <- s.dst
 + )
 +}
 +rule Att2Att {
 + from
 + s : Hml!Trans
 + to
 + t : Hml!Trans (
 + name <- s.name
 + )
 +}
 +rule Attref2Attref {
 + from
 + s : Hml!Trans
 + to
 + t : Hml!Trans (
 + ref <- s.ref
 + )
 +}
 +</​code>​
  
 ====== Sprawozdanie ====== ====== Sprawozdanie ======
pl/miw/miw08_hekateatl.1222789191.txt.gz · ostatnio zmienione: 2019/06/27 15:58 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0