eclipse modeling projectの概要

32
Copyright ©2012. Shintaro Hosoai. All rights reserved. Eclipse Modeling Projects 概概 概概 概概概 概概概概概概概概概概概概概 012/12/7 Eclipse Modeling 概概概

Upload: shintaro-hosoai

Post on 06-May-2015

1.807 views

Category:

Technology


1 download

DESCRIPTION

2012/12/7 Eclipse Modeling勉強会の発表資料です. 発表時のものに加えて,モデリングプロジェクト下の概ね全てのプロジェクトのリストを付加しました. 一言コメントは,一応プロジェクトのDescriptionから読み取ったものですが,多々間違いもあるかもしれません.利用時は原典を参照ください(http://www.eclipse.org/projects/listofprojects.php)

TRANSCRIPT

Page 1: Eclipse modeling projectの概要

Copyright ©2012. Shintaro Hosoai. All rights reserved.

Eclipse Modeling Projects概要

細合 晋太郎北陸先端科学技術大学院大学

2012/12/7 Eclipse Modeling 勉強会

Page 2: Eclipse modeling projectの概要

物事をある観点と抽象度で捉えることモデリングって?

対象

抽象度

観点

モデル

Page 3: Eclipse modeling projectの概要

モデリングって?例えば UML では,

対象

Component Diagram

Package Diagram

Object Diagram

Deployment Diagram

Class Diagram

Composite Structure Diagram

Use Case Diagram

Activity Diagram

State Machine Diagram

Sequence Diagram

Interaction Overview Diagram

Communication Diagram

Timing Diagram

独自にモデルを作るには? → メタモデリング

Page 4: Eclipse modeling projectの概要

ドメイン分析 そのドメインで必要な観点の洗い出し 分析方法の形式化

プロセスの明示化と自動化 開発プロセスの明示化 各工程にどのようなモデルが必要か それらのモデル間はどのように変換されるか

メタモデリングのメリット

Page 5: Eclipse modeling projectの概要

モデルを構成する要素の定義が必要 モデルのためのモデル

→メタモデル

メタモデリングするには?

モデルハコ1

ハコ2

ハコ3

メタ

メタモデル箱

・名前 線src

trg

メタ?

Page 6: Eclipse modeling projectの概要

OMG のモデル駆動型開発のためのアーキテクチャ

MOF, UML, XMI,etc.. PIM/PSM

Model Driven Architecture (MDA)

メタメタモデル( MOF )メタモデル

(ここで UML 等の定義がされている)

モデル( UML の各図など,実際に書かれるもの)

Page 7: Eclipse modeling projectの概要

EMOF の実装 メタメタモデル ( の実装 ) があると,メタモデルが

作れる.メタモデルが作れると,モデルも作れる.

基盤が整うとモデル駆動開発のためのモデル入力・モデル変換・コード生成・モデル保存・比較などなどのツールが作れる.

EMF を基盤としたモデル駆動ツールのプロジェクト群

 → Eclipse Modeling Projects

Eclipse Modeling Framework

Page 8: Eclipse modeling projectの概要

Eclipse Modeling Projects

親 Project : 10傘下 Project : 62

2012/12/06 現在

Page 9: Eclipse modeling projectの概要

Eclipse Modeling Framework(EMF) Eclipse Modeling Framework Technology

(EMFT) Graphical Modeling Project Generative Modeling Technologies Model To Text ( M2T) Model Development Tools (MDT) Model to Model Transformation (MMT) Eclipse Presentation Modeling Framework 単体

Amalgamation Agent Modeling Platform Textual Modeling Framework

Eclipse Modeling Projects (Top level )

Page 10: Eclipse modeling projectの概要

Top level Project の位置付け

EMFEcore, メタモデリング基盤,モデル・メタモデル操作, Merge,

Diff, Compare , Serialize, Repository , Query , Transaction, Validation

EMFTメタモデリング支援環境, Feature,

Team

M2Tコード生成

Acceleo, JET2, Xpand

MMTモデル変換

ATL, QVT, QVTd

GMFGraphical DSLGMF*, Graphiti

モデル入力 モデル変換 コード生成

メタモデリング,モデル操作

TMFTextual DSLXtext, TCS

Page 11: Eclipse modeling projectの概要

Top level Projects 位置付け(その他)

MDT標準メタモデルとツールの提供

BPMN2 , UML2, OCL

GMTMDE プロトタイプ,研究領域

Amalgamationモデリングコンポーネントのパッケージ化,統合,ユーザビリティ

Agent Modeling Platform

エージェントベースモデリング環境

Page 12: Eclipse modeling projectの概要

EMF メタモデル作成フレームワーク. EMP の基盤

CDO メタモデルリポジトリ,モデル永続化Teneo EMF と DB の OR マッピングEMF CompareEMF Diff/Merge

モデルの比較・差分・マージ

Modeling Workflow Engine (MWE2)

モデル操作用のワークフローエンジン

Eclipse Generation Factories

EMF によるソフトウェアファクトリ. e4 のPMF →XWT 等々,高度な生成を扱う

EMF Query モデルへのクエリサポートEMF Query2 同上,条件オブジェ又は SQL Like なクエリEMF Transaction マルチスレッド, Batch, Undo/Redo

EMF Validation 制約定義, Custom Traversal Algorithms , OCL

Eclipse Modeling Framework (EMF)

Pickup

Pickup

Pickup

Pickup

Pickup

Page 13: Eclipse modeling projectの概要

メタモデル生成フレームワーク 入力

Ecore Java コード( Annotation を加えた POJO ) UML (Rational Rose 形式) XMI XML Schema

生成されるもの インタフェイスモデル 実装モデル ファクトリ プラグイン開発用のユーティリティクラス エディタプラグイン

EMF : EMF

Page 14: Eclipse modeling projectの概要

EMF : EMF

Java

UML

XML Schema

メタモデル(ecore)

genmodel

モデルエディタプラグイン

(model.editor.*)

モデル(java)

メタモデルのJava 実装(model.*)

プラグイン用の操作クラス群

(model.edit.*)

モデル(xmi)

メタモデル

モデル

他のツールで,モデル変換・コード生成・ etc に利用

① メタモデル作成

②genmodel 作成

③ モデル実装,モデル操作,エディタの生成

Page 15: Eclipse modeling projectの概要

メタモデルリポジトリとモデルの永続化 モデルを扱うためのクライアント API ,モ

デル永続化のためのサーバ API

EMF : CDO Model Repository

Page 16: Eclipse modeling projectの概要

EMF と DB の ORM(Object Relational Mapping)

Ecore から ORM のための定義を自動生成

ORM エンジン Hibernate

対応 DB : MySQL, PostgressSQL, Derby, HSQL

Eclipse Link ( EMFT:Texo プロジェクトへ移行した模様)

EMF : Teneo

Page 17: Eclipse modeling projectの概要

モデルの比較,差分,マージをサポートする.

Compare 単体で比較,差分,マージまでをサポートする.

Diff/Merge も比較・差分・マージを扱うが,現在まだインキュベーション

EMF : EMF Compare

EMF Diff/Merge

Page 18: Eclipse modeling projectの概要

EMF のモデル操作に適したワークフローエンジン.汎用的な利用も可能

DSL でワークフローを定義し,実行することで順次実行される

個々のワークは,モデル操作ではある程度標準のものが準備され, Java で独自に追加することも可能

EMF : Modeling Workflow Engine

Page 19: Eclipse modeling projectの概要

ワークフロー例

上から順次実行

一つのワークコンポーネント

ワークコンポーネント名 ( Java クラスに対応

プロパティは, set *()メソッドに対応.プロパティに値を設定した後に実行される.(例の箇所では, ~.ui/src-gen 以下を 全消去する

Page 20: Eclipse modeling projectの概要

Eclipse Modeling Framework Technology

b3 PDE の新コンポーネントシステム? p2 後継っぽい?

Doc2Model 構造ドキュメント (xlsx, docx, odt, odf...) to EMF

Ecore Tools メタモデル (Ecore) グラフィカルエディタEdapt メタモデル・モデルのマイグレーションExtended Editing Framework (EEF)

MVC ベースの拡張 Editing Framework ,Binding が使いやすそう?

EMF Client Platform

EMF 利用アプリの雛形生成

EMF Facet 既存メタモデルを変更なしに拡張EMF Store メタモデルリポジトリ,バージョン管理emfatic Ecore 用 Textual DSL

epsilon モデル操作やその他の DSL セット.盛り沢山EMF Feature Model

EMF で定義された Feature Model ( SPL )

Henshin グラフィカルな変換言語,双方向変換EMF Refactor EMF モデルのリファクタリング支援ツールEMFT Texo サバクラインフラ, EMF/JPA 永続化, Json

通信Wazaabi モデルによる UI 定義. PMF 後継?

Pickup

Pickup

Page 21: Eclipse modeling projectの概要

Ecore のグラフィカルエディタ メタモデルを作成する際に非常に便利 GMF を導入すると別バージョン?のEcore グラフィカルエディタが付属してくる

EMFT : Ecore Tools

ecoretools gmf.ecoreeditor

Page 22: Eclipse modeling projectの概要

Model Development ToolsBusiness Process Modeling and Notation (BPMN2)

OMG の Business Process Model and Notation(BPMN) の EMF 実装

eTrice ROOM 方法論のためのモデリング環境IMM Releng OMG の Information Management

MetaModel

MoDisco リバースモデリング.コード→モデルOCL (Object Constraint Language)

OMG の Object Constraint Language(OCL) 実装とツール類

Papyrus UML エディタ. Profile のサポート豊富Requirements Modeling Framework

OMG の ReqIF 実装.要求モデリングのためのツール類

Sphinx モデリング統合環境の生成支援MDT UML2 UML の EMF 実装MDT UML2 Tools UML2 も用いた UML エディタ?MDT XSD (XML Schema Definition)

XML Schema の操作ライブラリ

Pickup

Page 23: Eclipse modeling projectの概要

Model to Model Transformation

ATL モデル変換フレームワーク. QVT に近い変換言語と変換エンジン

QVT Operation OMG QVT の (部分 ) 実装QVTd (QVT Declarative)

こちらも OMG QVT の部分実装, QVT宣言言語の分離実装?

Pickup

Page 24: Eclipse modeling projectの概要

Acceleo テンプレート言語, OMG 標準に近いJava Emitter Template (JET2)

EMF 対応のテンプレート

Xpand 旧 Xtext 付属のテンプレート言語

Model To Text (M2T)

Pickup

Xtend Xtext 付属の軽量言語.コード生成,モデル変換も可能M2T外

Page 25: Eclipse modeling projectの概要

Graphical Modeling Framework(GMF) Notation

図表記用のメタモデル.ダイアグラム内の位置等の描画要素をモデルから分離する.OMG Diagram Interchange 準拠?

Graphical Modeling Framework(GMF) Runtime

Tools で生成したエディタのためのコンポーネントやユーティリティ

Graphical Modeling Framework(GMF) Tooling

旧 GMF? グラフィカルエディタ生成フレームワーク.ほぼすべての定義をモデルで行いPlugin 形式のグラフィカルエディタを生成

Graphiti EMF をベースにグラフィカルエディタを作成出来るか,かなりのコードが必要.

Graphical Modeling Project

Pickup

Pickup

Page 26: Eclipse modeling projectの概要

Ecore モデルを元に,モデルベースでグラフィカルエディタを構築

簡易なモデルであれば,比較的容易に作成できる

Graphical Modeling Framework

Page 27: Eclipse modeling projectの概要

GMF 例

Page 28: Eclipse modeling projectの概要

高機能なグラフィカルエディタを生成可能 GMF に比べ,かなりの量のコードを書く必要がある.

Xtext による DSL で, Graphiti 用のコードを生成する. Spray というプロジェクトもある.

Graphiti

Page 29: Eclipse modeling projectの概要

Textual Modeling Framework

Xtext Textual DSL 生成フレームワーク. DSL エディタからコード生成までをサポートする.生成される DSLエディタにはコード補完やハイライト等かなり高機能

Pickup

Page 30: Eclipse modeling projectの概要

Textual DSL 開発支援環境Xtext

言語定義(.xtext)

コードテンプレート(.xtend)

ソースコード

EMF 生成物

DSL メタモデル(.ecore)

DSL エディタ

メタモデルモデル

DSLモデル

ワークフローは MWE

Page 31: Eclipse modeling projectの概要

Generative Modeling Technologies (GMT)AMW – Atlas Model Weaver

メタモデル間の関係定義.比較,トレーサビリティ,アノテーション,相互運用

VIATRA2 グラフィカルなモデル変換フレームワーク

Pickup

Page 32: Eclipse modeling projectの概要

単体トッププロジェクトAmalgamation Modeling Project のためのパッケージング

システム. Help>Install Modeling Components

Agent Modeling Platform

エージェントシステムのためのモデルプラットフォーム.モデルと実行環境

EMF -IncQuery インクリメンタルクエリEMP外の EMF関連プロジェクトPresentation Modeling Framework(PMF)

Eclipse Plugin の UI 定義をモデルで行う.どうも失速気味?→ Wazzabi