Eclipse Modeling QVT

1,252 views

Published on

Eclipse Modeling 勉強会(2013.02.22)で発表した QVT に関するスライド

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,252
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
11
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Eclipse Modeling QVT

  1. 1. EclipseのM2M変換 QVTo  を中心として     田中   ビューファイブ  LLC
  2. 2. アジェンダ •  MDA  における  M2M  変換の位置づけ  •  OMG  M2M  標準  •  Eclipse  Modeling  Project  における M2M  実装   –  QVT   –  ATL   –  Xtend  2.0
  3. 3. MDA  における  M2M  変換の位置づけ •  CIM  -­‐>  PIM  -­‐>  PSM  !?   –  ComputaHon  Independent  Model  (CIM)   –  PlaKorm  Independent  Model  (PIM)   –  PlaKorm  Specific  Model  (PSM) refine refine refine M2M M2M M2T CIM PIM PSM becomes refine/refactor  もM2M適用対象
  4. 4. OMG  M2M  標準 •  Meta  Object  Facility  (MOF)  2.0  Query/View/ TransformaHon  SpecificaHon   –  1.1  版:  January  2011   –  略称:  QVT   –  URL:  hYp://www.omg.org/spec/QVT/1.1  •  M2Mのための3種類の言語を規定   –  OperaHons  <手続き的>   –  RelaHons  +  Core  <パターンマッチング>
  5. 5. Eclipse  Modeling  Project  における   M2M  実装   主要プロジェクト hYp://www.eclipse.org/projects/project.php?id=modeling.mmt
  6. 6. Eclipse  Modeling  Project  における   M2M  実装 •  ATL   –  大島さんに説明をお願いしました  •  QVTr  or  QVTd  (+  QVTc)   –  Xtext  ベースの  Editor  の実装がほぼ出来ています(今後の計画につ いては後ほど)   –  これ以外に独ikv++  technologies社公開のmedini  QVTが知られていま す(メンテナンス状況が不明ですが問題なく動作します)  •  QVTo   –  現状で充分使えるレベルにあると思います  •  その他   –  Epsilon   –  VIATRA2   –  Xtend2
  7. 7. M2M •  ここからは 「QVTo  をメインに」 三つの  QVT  +α   についてお話します   –  QVT  OperaHons   •  Eclipse  Modeling  QVTo   –  QVT  RelaHons   •  Eclipse  Modeling  QVTd   •  ikv++  technologies  medini  QVT   –  QVT  Core   •  Eclipse  Modeling  QVTd  
  8. 8. QVT  :三つの言語 •  RelaHons   –  ハイレベルでのパターンマッチング(MOFモデル 間:Eclipseではecoreファイル間)  •  Core   –  ローレベルでのパターンマッチング  •  OperaHonal  Mappings   –  手続き型言語のように記述  補足) Black  Box  実装も含めることが出来ます
  9. 9. QVT  :三つの言語 •  現状について   –  言語が三つある理由:標準化時に各種提案が マージされたため   –  トレースモデル(実装)を利用するため   OperaHonal  Mappings  が  RelaHon  に依存   –  Eclipse  Project  で実績があるのは  OperaHonal   Mappings   –  Eclipse  外の  Project  では medini  QVT  (RelaHon)   が実績有  
  10. 10. QVT  OperaHons •  QVTo  の特徴   –  変換のための命令を並べる   –  OCL  を利用(QVTrも同様)  
  11. 11. QVT  OperaHons •  Eclipse  QVTo  のインストール   –  Eclipse  Modeling  Package  をインストール   –  Help  の  Install  Modeling  Components  (次ページ) より  OperaHonal  QVT  を選択して  Finish   –  指示に従いインストールを済ませ  Eclipse  をリス タート
  12. 12. QVT  OperaHons •  Eclipse  QVTo  の設定について   –  作成した QVTo  プロジェクトの属性   •  QVT  Sedngs  -­‐>  Metamodel  Mappings   •  ここに変換で使うメタモデルを登録   –  Run  ConfiguraHons   •  OperaHonal  QVT  Interpreter  の配下にプロジェクトごと に構成情報を登録   –  変換モジュールへのパス情報   –  トレースファイルのパス情報   –  変換前後ファイル(xmi形式)のパス情報
  13. 13. QVT  OperaHons •  簡単な例題(標準仕様A.2.1)  <眺めるだけ>   –  Book  To  PublicaHon   •  Book(タイトル、章[*])  そして 章(章タイトル、章ページ 数)   •  PUB(タイトル、総ページ数)
  14. 14. 星と空 星と空 第1章 星   ページ数 10 ジ 全300ペー
  15. 15. QVT  OperaHons •  モデルデータの準備   –  メタモデル(Book,  PUB)作成   •  Ecore  Tools  を利用(前のスライド)   –  モデル作成(bookModel.xmi:テスト用)   •  EMF  の  Dynamic  Instance  作成機能を利用(簡単なモ デルの場合など)   •  本格的に作成するには   –  EMF,  GMF,  GMF/EuGENia  などを利用
  16. 16. QVT  OperaHons •  モデル変換記述   モデルタイプ定義で   メタモデルを指定 modeltype  inModel  uses  BOOKS(hYp:///BOOKS.ecore);  ① モデル変換命令と   modeltype  outModel  uses  PUB(hYp:///PUB.ecore);     そのシグニチャ ② transformaHon  Book2PublicaHonOperaHonal(in  bm:inModel,out  pm:outModel);       main()  {   エントリポイント  ③  bm.objects()[Book]-­‐>map  book2pub();     Bookオブジェクトを集め   }   book2pubを適用   mapping  inModel::Book::book2pub()  :  outModel::PublicaHon  {  ④    Htle  :=  self.Htle;   タイトルをコピーし      nbPages  :=  self.chapter-­‐>nbPages-­‐>sum();     ページ数の総和を   }   算出
  17. 17. QVT  OperaHons •  Eclipse  環境での操作(Families2Persons)   –  File  -­‐>  New  -­‐>  Project   –  Model  to  Model  TransformaHon  -­‐>  OperaHonal   QVT  Project  を選択し  Next   –  プロジェクト名(Families2Persons)を入力し  Next   –  デフォルトのまま  Next   –  “Create  arHfacts  …”  をチェックし  OperaHonal  QVT   TransformaHon  を選択し  Next   –  モジュール名(Family2PersonQVTo)を入力し   Finish  
  18. 18. QVT  OperaHons •  プロジェクト構造の例(自由です)
  19. 19. QVT  OperaHons •  Families2Persons:  Families metamodels  フォルダへ
  20. 20. QVT  OperaHons •  Families2Persons:  Persons metamodels  フォルダへ
  21. 21. QVT  OperaHons •  Families2Persons:  FamilyModel.xmi source_model  フォルダに   作成します
  22. 22. <?xml  version="1.0"  encoding="ASCII"?>  <families:FamilyModel          xmi:version="2.0"          xmlns:xmi="hYp://www.omg.org/XMI"          xmlns:xsi="hYp://www.w3.org/2001/XMLSchema-­‐instance"          xmlns:families="hYp://families2"          xsi:schemaLocaHon="hYp://families2  ../metamodels/Families.ecore">      <families  lastName="March">          <father  firstName="Jim"/>          <mother  firstName="Cindy"/>   Ecoreファイルの場所が          <sons  firstName="Brandon"/>   記録される箇所がある          <daughters  firstName="Brenda"/>   ため注意して下さい    </families>      <families  lastName="Sailor">          <father  firstName="Peter"/>          <mother  firstName="Jackie"/>          <sons  firstName="David"/>          <sons  firstName="Dylan"/>          <daughters  firstName="Kelly"/>      </families>  </families:FamilyModel>  
  23. 23. QVT  OperaHons 1/3
  24. 24. QVT  OperaHons 2/3
  25. 25. QVT  OperaHons 3/3
  26. 26. QVT  OperaHons •  プロジェクトの属性
  27. 27. Run  ConfiguraHon  の例 QVT  OperaHons
  28. 28. QVT  OperaHons お待たせしました
  29. 29. QVT  OperaHons •  ここから少し補足説明をします   –  “Model  TransformaHons  using  QVT  OperaHonal   Mappings”   •  読者として  Beginner  を想定して書かれています   •  hYp://redpanda.nl/BEP_P.J.Barendrecht.pdf   –  “Model  TransformaHon  with  OperaHonal  QVT”   •  2008年の  EclipseCon  でのチュートリアル資料   •  hYp://www.eclipsecon.org/2008/sub/aYachments/ Model_transformaHon_with_OperaHonal_QVT.pdf    
  30. 30. QVT  OperaHons •  modeltype   –  メタモデルデータの指定方法   •  workspace内のリソースを直接指定   – PlaKorm:/resource/プロジェクト名/…/xxx.ecore   •  一旦  eclipse  にリソースを登録しそれを参照   – Persons(‘hYp://persons’)   –  where  の利用   •  where  {self.objects()[Package]-­‐>size()>=1}
  31. 31. QVT  OperaHons •  main()   –  引数無しの  main()  がエントリーポイントとなる   –  通常はモデルデータの入力があり、そこからルー ト要素ないし特定の型の要素を取り出し変換対 象とする   •  rootObjects()[model  element  type]   •  objects()[model  element  type]  
  32. 32. QVT  OperaHons •  本格的な例題: Uml  to  Rdbms   –  QVT  標準の付録にあるモデル変換例   –  分量があるため大筋の説明にとどめます  
  33. 33. QVT  OperaHons SimpleUML  metamodel  の中身をグラフィカルに  表示
  34. 34. QVT  OperaHons RDB  metamodel  の中身  をグラフィカルに表示  
  35. 35. QVT  OperaHons 変換対象の SimpleUML  モデルデータ
  36. 36. QVT  OperaHons •  Eclipse  環境での操作   –  File  -­‐>  New  -­‐>  Example  -­‐>   –  OperaHonal  QVT  TransformaHon  -­‐>  SimpleUML  to   RDB  TransformaHon  Project  を選択   –  これで  UML  から  RDB  へのサンプル変換プロジェ クトが読み込まれます   –  プロジェクトに含まれるファイルから “Simpleuml_To_Rdb.qvto”  をダブルクリック等で 開いて下さい (QVTo  ファイル)
  37. 37. QVT  OperaHons •  おおまかな変換ロジック(1)   –  modeltype  の宣言   –  transformaHon  の宣言(入出力指定)   –  uml(変換対象のUMLモデルデータ)からModelを 抜き出しRDBのModelに対応付け   –  Model  に含まれる  Package(ネストしたものも含 む)を取り出す  
  38. 38. QVT  OperaHons •  おおまかな変換ロジック(2)   –  Package  に含まれる  persistent  な  Class  を  Table   に対応付け –  Table  に  PK  を設定   –  Table  に  FK  を設定   –  Table  に  Column  を設定   –  Column  の項目属性を設定   –  …  
  39. 39. QVT  OperaHons •  SimpleUML  to  RDB  Project  で使う Metamodel   ファイルについて(参考)   –  Window  -­‐>  Show  View  -­‐>  Other  から  OperaHonal  QVT   -­‐>  Metamodel  Explorer  を選択するとシステムに登録 されている metamodel  の一覧と中身を参照出来ま す(Read  only)   –  QVTo  をインストールした  Eclipse  の  plugin  フォルダー の中に  org.eclipse.m2m.qvt.oml.samples  で始まる  jar   ファイルがあり、.zip  に変更し解凍すれば、このプロ ジェクトで使う ecore  ファイル本体が現れます
  40. 40. QVT  OperaHons •  参考情報   –  QVTo  関連の各種  URLは後ほど勉強会のサイト に掲載します   –  ビルド関連で役に立つかもしれない情報   •  QVT:  command  line  execuHon   –  hYp://www.eclipse.org/forums/index.php/m/106647/   •  QVTOML/Examples/InvokeInJava   –  hYp://wiki.eclipse.org/QVTOML/Examples/InvokeInJava  
  41. 41. QVTr/QVTc  の現状 QVT  DECLARATIVE
  42. 42. 多方向・ declaraHve  変換言語 言語要素 一方向・ declaraHve  変換言語 一方向・ declaraHve   変換言語 一方向・  imperaHve  変換言語 hYp://wiki.eclipse.org/M2M/ QVT_DeclaraHve_Languages
  43. 43. QVT  DeclaraHve •  現状   –  エディタ完成直前+ QVTi  実行エンジン作業中  •  今後の計画   –  ベーシックな QVTc  実行 for  Kepler  (2013年6月)   –  ベーシックな QVTr  実行  for  Kepler+1   –  最適化実行エンジン for  Kepler+2   –  補足)   •  git://github.com/arcanefoam/qvtMustus   •  近いうちに  eclipse  に移すとのこと
  44. 44. QVT  DeclaraHve •  Eclipse  QVTd  のインストール   –  Juno  版  Eclipse  Modeling  Package  をインストール   –  Xtext  の  milestone  版(2.4.0  Mx)をインストール   –  OCL  をインストール   •  h/p://www.eclipse.org/modeling/download.php?file=/ modeling/mdt/ocl/downloads/drops/4.1.0/ I201302021655/mdt-­‐ocl-­‐Update-­‐tools-­‐I201302021655.zip   –  QVTd  をインストール   •  h/p://www.eclipse.org/downloads/download.php?file=/ mmt/qvtd/downloads/drops/0.10.0/N201302021656/ mmt-­‐qvtd-­‐incubaSon-­‐Update-­‐N201302021656.zip
  45. 45. QVT  DeclaraHve •  参考情報   –  “Current  status  of  QVTd?”   •  Juno  Modeling  Package  ベースで QVTd,  QVTc  のエディ タを動作させる件について  Forum  でのやり取り   •  hYp://www.eclipse.org/forums/index.php/t/452424/  
  46. 46. QVT  DeclaraHve •  グラフィカル記法   –  標準に規定があり  Eclipse  Modeling  Project  に  UMLX  とい うプロジェクトもあったが現在活動なし OMG  QVT1.1  よりの引用  Figure  A.4  Class  To  Table  relaHon
  47. 47. QVT  DeclaraHve •  medini  QVT   –  URL  hYp://projects.ikv.de/qvt   –  ikv++  technologies  社の公開する QVT  RelaHons   ツールで  EPL  ライセンス   –  グラフィカルデバッガやエディタを備える   –  非商用であれば自由に利用可能   –  商用については別途問い合わせ要(国内に取り 扱っている会社が2社有)  
  48. 48. QVT  DeclaraHve •  medini  QVT  のインストール   –  Downloads  ページの指示に従う   •  hYp://projects.ikv.de/qvt/downloads   •  確実にインストール出来るのは  Indigo  版までの模様   •  Mac  の場合は  Indigo  版  Modeling  Tools  のインストー ル後にアップデートサイトを利用
  49. 49. QVT  DeclaraHve •  設定について   –  メタモデルは  Eclipse  IDE  の  Preference  に  QVT   Metamodels  という項目があり、そこに設定   –  その他は  Run  ConfiguraHon  に設定
  50. 50. QVT  DeclaraHve •  Preference  例
  51. 51. QVT  DeclaraHve •  Run  ConfiguraHon  例
  52. 52. QVT  DeclaraHve •  メタモデル(基本的に同じもの) Families Persons
  53. 53. QVT  DeclaraHve fn  が式の右側にくる   のが特徴
  54. 54. QVT  DeclaraHve やはり同じような  Query  機能が必要
  55. 55. QVT  DeclaraHve •  QVT  DeclaraHve  のまとめ   –  Eclipse  Modeling  Project  から利用出来るのはエ ディタのみ   –  モデル変換(実行)を行うには medini  QVT  他を用 いる必要がある  
  56. 56. QVT  Core •  コア言語は、モデル群に対し評価可能なフラットな 変数の集合に対するパターンマッチングをサポート   –  “The  Core  language  supports  paYern  matching  over  a  flat   set  of  variables  by  evaluaHng  condiHons  over  those   variables  against  a  set  of  models.  ”  (OMG  11-­‐01-­‐01)  •  OperaHons  より  RelaHons  に近く、より詳細レベルで 使える(その分記述量が多くなる)  •  OMG文書からのサンプルコード(一部)を示す  
  57. 57. QVT  Core OMG  QVT  A.3.1  UML  to  RDBMS  Mapping  より一部引用(1/2)
  58. 58. QVT  Core OMG  QVT  A.3.1  UML  to  RDBMS  Mapping  より一部引用(2/2)
  59. 59. QVT  Core •  (前の方のスライドで述べた通り)次期  Eclipse   (Kepler)  と同期して QVTc  の実行可能版が出てくる 予定   –  現時点では評価困難であり、Kepler  リリースを待ち実装 内容を再度確認してはどうでしょう  
  60. 60. Xtext •  Xpand/Xtend1.0   –  この時代は Xtend(1.0)  が  M2M  に対応する機能 とされていた   –  参考   •  Xpand  を用いた簡易  M2M  の実績有   •  内容的には次項のXtend2.0を用いた記述に近い
  61. 61. Xtext •  Xtend2.0   –  現在の Xtext  では Xtend  (2.0)  を利用   –  記述にあたり多少抽象レベルは上がるものの、モデ ル変換を  Java  で記述するのに近い   –  作成するコード類   •  モデル変換のロジック(Xtend)   •  ワークフローコンポーネント(java)   •  ワークフロー(mwe2)   –  試行しましたが(残念ながら)まだ動作に至らず
  62. 62. Eclipse  Modeling  外で最近進展のみられる興味深い活動事例 OUTSIDE  ECLIPSE  MODELING
  63. 63. モデルベースの興味深い活動 hYp://www.genmymodel.com
  64. 64. モデルベースの興味深い活動 hYp://mbeddr.wordpress.com
  65. 65. 最後に •  次回:2ヶ月後くらい?   –  どなたか EclipseCon  に参加される方おられますか  •  次回の話題   –  Eclipse    Modeling  Projectのどれか   –  エンタプライズ系   –  組込み系  •  会場:10名程度が入る会議室で充分でしょうか?   –  無料でIT勉強会に使える場所もあるようですが、利用 経験のある方ご感想を聞かせください

×