Your SlideShare is downloading. ×
0
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Eclipse Modeling QVT
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Eclipse Modeling QVT

930

Published on

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

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
930
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
9
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. EclipseのM2M変換 QVTo  を中心として     田中   ビューファイブ  LLC
  • 2. アジェンダ •  MDA  における  M2M  変換の位置づけ  •  OMG  M2M  標準  •  Eclipse  Modeling  Project  における M2M  実装   –  QVT   –  ATL   –  Xtend  2.0
  • 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. 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. Eclipse  Modeling  Project  における   M2M  実装   主要プロジェクト hYp://www.eclipse.org/projects/project.php?id=modeling.mmt
  • 6. Eclipse  Modeling  Project  における   M2M  実装 •  ATL   –  大島さんに説明をお願いしました  •  QVTr  or  QVTd  (+  QVTc)   –  Xtext  ベースの  Editor  の実装がほぼ出来ています(今後の計画につ いては後ほど)   –  これ以外に独ikv++  technologies社公開のmedini  QVTが知られていま す(メンテナンス状況が不明ですが問題なく動作します)  •  QVTo   –  現状で充分使えるレベルにあると思います  •  その他   –  Epsilon   –  VIATRA2   –  Xtend2
  • 7. M2M •  ここからは 「QVTo  をメインに」 三つの  QVT  +α   についてお話します   –  QVT  OperaHons   •  Eclipse  Modeling  QVTo   –  QVT  RelaHons   •  Eclipse  Modeling  QVTd   •  ikv++  technologies  medini  QVT   –  QVT  Core   •  Eclipse  Modeling  QVTd  
  • 8. QVT  :三つの言語 •  RelaHons   –  ハイレベルでのパターンマッチング(MOFモデル 間:Eclipseではecoreファイル間)  •  Core   –  ローレベルでのパターンマッチング  •  OperaHonal  Mappings   –  手続き型言語のように記述  補足) Black  Box  実装も含めることが出来ます
  • 9. QVT  :三つの言語 •  現状について   –  言語が三つある理由:標準化時に各種提案が マージされたため   –  トレースモデル(実装)を利用するため   OperaHonal  Mappings  が  RelaHon  に依存   –  Eclipse  Project  で実績があるのは  OperaHonal   Mappings   –  Eclipse  外の  Project  では medini  QVT  (RelaHon)   が実績有  
  • 10. QVT  OperaHons •  QVTo  の特徴   –  変換のための命令を並べる   –  OCL  を利用(QVTrも同様)  
  • 11. QVT  OperaHons •  Eclipse  QVTo  のインストール   –  Eclipse  Modeling  Package  をインストール   –  Help  の  Install  Modeling  Components  (次ページ) より  OperaHonal  QVT  を選択して  Finish   –  指示に従いインストールを済ませ  Eclipse  をリス タート
  • 12. QVT  OperaHons •  Eclipse  QVTo  の設定について   –  作成した QVTo  プロジェクトの属性   •  QVT  Sedngs  -­‐>  Metamodel  Mappings   •  ここに変換で使うメタモデルを登録   –  Run  ConfiguraHons   •  OperaHonal  QVT  Interpreter  の配下にプロジェクトごと に構成情報を登録   –  変換モジュールへのパス情報   –  トレースファイルのパス情報   –  変換前後ファイル(xmi形式)のパス情報
  • 13. QVT  OperaHons •  簡単な例題(標準仕様A.2.1)  <眺めるだけ>   –  Book  To  PublicaHon   •  Book(タイトル、章[*])  そして 章(章タイトル、章ページ 数)   •  PUB(タイトル、総ページ数)
  • 14. 星と空 星と空 第1章 星   ページ数 10 ジ 全300ペー
  • 15. QVT  OperaHons •  モデルデータの準備   –  メタモデル(Book,  PUB)作成   •  Ecore  Tools  を利用(前のスライド)   –  モデル作成(bookModel.xmi:テスト用)   •  EMF  の  Dynamic  Instance  作成機能を利用(簡単なモ デルの場合など)   •  本格的に作成するには   –  EMF,  GMF,  GMF/EuGENia  などを利用
  • 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. 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. QVT  OperaHons •  プロジェクト構造の例(自由です)
  • 19. QVT  OperaHons •  Families2Persons:  Families metamodels  フォルダへ
  • 20. QVT  OperaHons •  Families2Persons:  Persons metamodels  フォルダへ
  • 21. QVT  OperaHons •  Families2Persons:  FamilyModel.xmi source_model  フォルダに   作成します
  • 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. QVT  OperaHons 1/3
  • 24. QVT  OperaHons 2/3
  • 25. QVT  OperaHons 3/3
  • 26. QVT  OperaHons •  プロジェクトの属性
  • 27. Run  ConfiguraHon  の例 QVT  OperaHons
  • 28. QVT  OperaHons お待たせしました
  • 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. QVT  OperaHons •  modeltype   –  メタモデルデータの指定方法   •  workspace内のリソースを直接指定   – PlaKorm:/resource/プロジェクト名/…/xxx.ecore   •  一旦  eclipse  にリソースを登録しそれを参照   – Persons(‘hYp://persons’)   –  where  の利用   •  where  {self.objects()[Package]-­‐>size()>=1}
  • 31. QVT  OperaHons •  main()   –  引数無しの  main()  がエントリーポイントとなる   –  通常はモデルデータの入力があり、そこからルー ト要素ないし特定の型の要素を取り出し変換対 象とする   •  rootObjects()[model  element  type]   •  objects()[model  element  type]  
  • 32. QVT  OperaHons •  本格的な例題: Uml  to  Rdbms   –  QVT  標準の付録にあるモデル変換例   –  分量があるため大筋の説明にとどめます  
  • 33. QVT  OperaHons SimpleUML  metamodel  の中身をグラフィカルに  表示
  • 34. QVT  OperaHons RDB  metamodel  の中身  をグラフィカルに表示  
  • 35. QVT  OperaHons 変換対象の SimpleUML  モデルデータ
  • 36. QVT  OperaHons •  Eclipse  環境での操作   –  File  -­‐>  New  -­‐>  Example  -­‐>   –  OperaHonal  QVT  TransformaHon  -­‐>  SimpleUML  to   RDB  TransformaHon  Project  を選択   –  これで  UML  から  RDB  へのサンプル変換プロジェ クトが読み込まれます   –  プロジェクトに含まれるファイルから “Simpleuml_To_Rdb.qvto”  をダブルクリック等で 開いて下さい (QVTo  ファイル)
  • 37. QVT  OperaHons •  おおまかな変換ロジック(1)   –  modeltype  の宣言   –  transformaHon  の宣言(入出力指定)   –  uml(変換対象のUMLモデルデータ)からModelを 抜き出しRDBのModelに対応付け   –  Model  に含まれる  Package(ネストしたものも含 む)を取り出す  
  • 38. QVT  OperaHons •  おおまかな変換ロジック(2)   –  Package  に含まれる  persistent  な  Class  を  Table   に対応付け –  Table  に  PK  を設定   –  Table  に  FK  を設定   –  Table  に  Column  を設定   –  Column  の項目属性を設定   –  …  
  • 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. 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. QVTr/QVTc  の現状 QVT  DECLARATIVE
  • 42. 多方向・ declaraHve  変換言語 言語要素 一方向・ declaraHve  変換言語 一方向・ declaraHve   変換言語 一方向・  imperaHve  変換言語 hYp://wiki.eclipse.org/M2M/ QVT_DeclaraHve_Languages
  • 43. QVT  DeclaraHve •  現状   –  エディタ完成直前+ QVTi  実行エンジン作業中  •  今後の計画   –  ベーシックな QVTc  実行 for  Kepler  (2013年6月)   –  ベーシックな QVTr  実行  for  Kepler+1   –  最適化実行エンジン for  Kepler+2   –  補足)   •  git://github.com/arcanefoam/qvtMustus   •  近いうちに  eclipse  に移すとのこと
  • 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. QVT  DeclaraHve •  参考情報   –  “Current  status  of  QVTd?”   •  Juno  Modeling  Package  ベースで QVTd,  QVTc  のエディ タを動作させる件について  Forum  でのやり取り   •  hYp://www.eclipse.org/forums/index.php/t/452424/  
  • 46. QVT  DeclaraHve •  グラフィカル記法   –  標準に規定があり  Eclipse  Modeling  Project  に  UMLX  とい うプロジェクトもあったが現在活動なし OMG  QVT1.1  よりの引用  Figure  A.4  Class  To  Table  relaHon
  • 47. QVT  DeclaraHve •  medini  QVT   –  URL  hYp://projects.ikv.de/qvt   –  ikv++  technologies  社の公開する QVT  RelaHons   ツールで  EPL  ライセンス   –  グラフィカルデバッガやエディタを備える   –  非商用であれば自由に利用可能   –  商用については別途問い合わせ要(国内に取り 扱っている会社が2社有)  
  • 48. QVT  DeclaraHve •  medini  QVT  のインストール   –  Downloads  ページの指示に従う   •  hYp://projects.ikv.de/qvt/downloads   •  確実にインストール出来るのは  Indigo  版までの模様   •  Mac  の場合は  Indigo  版  Modeling  Tools  のインストー ル後にアップデートサイトを利用
  • 49. QVT  DeclaraHve •  設定について   –  メタモデルは  Eclipse  IDE  の  Preference  に  QVT   Metamodels  という項目があり、そこに設定   –  その他は  Run  ConfiguraHon  に設定
  • 50. QVT  DeclaraHve •  Preference  例
  • 51. QVT  DeclaraHve •  Run  ConfiguraHon  例
  • 52. QVT  DeclaraHve •  メタモデル(基本的に同じもの) Families Persons
  • 53. QVT  DeclaraHve fn  が式の右側にくる   のが特徴
  • 54. QVT  DeclaraHve やはり同じような  Query  機能が必要
  • 55. QVT  DeclaraHve •  QVT  DeclaraHve  のまとめ   –  Eclipse  Modeling  Project  から利用出来るのはエ ディタのみ   –  モデル変換(実行)を行うには medini  QVT  他を用 いる必要がある  
  • 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. QVT  Core OMG  QVT  A.3.1  UML  to  RDBMS  Mapping  より一部引用(1/2)
  • 58. QVT  Core OMG  QVT  A.3.1  UML  to  RDBMS  Mapping  より一部引用(2/2)
  • 59. QVT  Core •  (前の方のスライドで述べた通り)次期  Eclipse   (Kepler)  と同期して QVTc  の実行可能版が出てくる 予定   –  現時点では評価困難であり、Kepler  リリースを待ち実装 内容を再度確認してはどうでしょう  
  • 60. Xtext •  Xpand/Xtend1.0   –  この時代は Xtend(1.0)  が  M2M  に対応する機能 とされていた   –  参考   •  Xpand  を用いた簡易  M2M  の実績有   •  内容的には次項のXtend2.0を用いた記述に近い
  • 61. Xtext •  Xtend2.0   –  現在の Xtext  では Xtend  (2.0)  を利用   –  記述にあたり多少抽象レベルは上がるものの、モデ ル変換を  Java  で記述するのに近い   –  作成するコード類   •  モデル変換のロジック(Xtend)   •  ワークフローコンポーネント(java)   •  ワークフロー(mwe2)   –  試行しましたが(残念ながら)まだ動作に至らず
  • 62. Eclipse  Modeling  外で最近進展のみられる興味深い活動事例 OUTSIDE  ECLIPSE  MODELING
  • 63. モデルベースの興味深い活動 hYp://www.genmymodel.com
  • 64. モデルベースの興味深い活動 hYp://mbeddr.wordpress.com
  • 65. 最後に •  次回:2ヶ月後くらい?   –  どなたか EclipseCon  に参加される方おられますか  •  次回の話題   –  Eclipse    Modeling  Projectのどれか   –  エンタプライズ系   –  組込み系  •  会場:10名程度が入る会議室で充分でしょうか?   –  無料でIT勉強会に使える場所もあるようですが、利用 経験のある方ご感想を聞かせください

×