slide - POSL

関心事指向アーキテクチャモデリング環境
Concern-oriented Architecture Modeling Environment
九州工業大学大学院情報工学府
情報科学専攻 鵜林研究室
M1 佐藤 友紀
1
研究の概要
コードレベル
モデルレベル
これまでに研究されてきた
関心事指向のAOP言語
[ASE2007]
更に進めて
モデルレベルから
関心事指向を用いた実装を実現する
2
発表の流れ
1.
2.
3.
4.
5.
6.
問題意識
関心事指向プログラミングによる解決
モデリング開発環境ccModeler
実装方法
関連研究
まとめ
3
問題意識
4
アスペクト指向プログラミング
オブジェクト指向プログラミング
(OOP:Object-Oriented Programming)
アスペクト指向プログラミング
(AOP:Aspect-Oriented Programming)
OOPで分離できなかった関心事を分離する
ロギング処理のような関心事を1つのモジュールに!
AOPの欠点とは…?
5
AOPの問題点 1
簡易図形エディタの例
エディタの概要
Point
横断的関心事
Line
void set(){
void set(){
Display.update()
};
Display.update()
};
void moveBy(){
織り込み
update
void moveBy(){
Display.update()
};
Display.update()
};
アスペクト
Display
void update(){
ポイントカット
pointcut change():
}
execution(void
set()) ||
execution(void moveBy()) ;
アドバイス
before : change() {
update();
}
図形(点と線)を描画するプログラム
図形の描画、移動があれば画面を更新
6
AOPの問題点 2
画面の更新が行われているか
Line
Point
set()
set()
moveBy()
moveBy()
基本的
アスペクト?
アスペクト
Display
Logging
ポイントカット
ポイントカット
アドバイス
update()
アドバイス
log()
横断的
基本的
横断的
問題点
関心事は、状況によって基本的にも横断的にもなる
アスペクトの再利用は必ずしも可能ではない
7
関心事指向プログラミングによる解決
8
関心事指向プログラミング 1
ccJava(AOP言語)
[ASE2007]
関心事を全てクラスとして記述
関心事を織り合わせて、合成を行う
従来の問題点を解決
基本的・横断的の切り替えが可能
再利用性が高い
有用性
 予期せぬ織り込みの防止
→公開した箇所だけが、織り込みの対象
9
関心事指向プログラミング 2
織り込みインタフェース
ccJava構成要素
[ASE2007]
「基本的」「横断的」切り替えを可能にする
クラス
織り込みに関する仕様をポイントカットで記述
織り込みインタフェース
他から織り込める
weave{ public w_interface wDisplay{
ポイントを公開 ・ ・ ・
pointcut draw():execution(void update());
weaveステートメント
connect(port1:wDisplay.draw, port2:wLine.change){
import before(), after() returning :draw();
織り込みに使える
メソッドを公開
after() returning:port2{port1.proceed();}}
export draw();
connect(port1:wLogging.log, port2:wDisplay.draw){
}
ccJavaコード
after() returning:port2{port1.proceed();}}
wLine
Line
}
wLogging
Logging
wDisplay
Display
set()
update()
log()
moveBy()
draw()
log()
ccJavaイメージ図
10
研究の目的
ccJavaの考え方を、モデリング環境に拡張
関心事ベースのモデリング開発環境ccModelerを提案
関心事ベースの設計支援
織り込みの適用範囲の視覚化
関心事やアーキテクチャの再利用
関心事を全てコンポーネントとして扱う
織り込みには関連を用いる
11
研究の位置付け
最終的にccModelerが目指すところ
wLine
Line
set()
wDisplay
Display
update()
moveBy()
ccJavaコード
アーキテクチャのモデリング
設計したモデルの検証
検証後のモデルからのコード生成
今回は、アーキテクチャのモデリングを行う部分を作成
12
モデリング開発環境ccModeler
13
モデリング開発環境ccModeler
•ccGenerator
モデルからccJavaのコード生成を行う
ccEditor
ccJava
AspectJ
•ccEditor
ccGenerator
ccJavaの概念を取り入れたモデル
Component-and-Connectorアーキテクチャを採用
→関心事をコンポーネント、合成をコネクタで表現
モデル駆動開発
14
簡易図形エディタのモデル全体像
関心事
織り込みインタフェース
ポイントカット
リスト
織り込み線
15
織り込みインタフェース
Component表示
 例:Display織り込みインタフェース
画面の再描画
メソッドを指定
他から織り込める
箇所として宣言
織り込めるメソッド
として宣言
public w_interface wDisplay{
pointcut draw():execution(void update());
import before(), after() returning :draw();
export draw();
}
ccJavaコード
16
関心事の合成
Connector表示
合成
weave{
・ ・ ・
connect(port1:wDisplay.draw, port2:wPoint.change){
after() returning:port2{port1.proceed();}
}
}
ccJavaコード
17
OCLによるエラーチェック
編集上のチェック
入力必要項目
属性名の重複
モデル特有のチェック
ポイントカットの宣言と指定との対応
18
実装方法
19
実装方法 1
EMF (Eclipse Modeling Framework)
モデリングフレームワーク
メタモデルが記述できる
GMF (Graphical Modeling Framework)
グラフィカルエディタのフレームワーク
メタモデルからグラフィカルなエディタを生成
20
実装方法 2
メタモデルを定義使用する図形を定義
EMF
Class
Rectangle
Connect
Connection
…
…
ドメインモデル
(メタモデル)
グラフ定義モデル
ツール定義モデル
各モデルの対応
生成
ccEditor
+OCLによる制約の定義
マッピング定義モデル
GMF
21
実装方法 3
ccModelerのメタモデルの一部
関心事
織り込み
インタフェース
織り込み
メタモデルで表現できない制約はOCLで補っている
22
関連研究
23
関連研究
AODM
Gray. et al. (2003),An Approach for Supporting
Aspect-Oriented Domain Modeling
AspectJに沿った考え方によるドメイン特化のモデリング
アスペクトの記述にはECL(Embedded Constraint
Language) という言語が必要
The Motorola WEAVR
Cottenier. et al. (2007),The Motorola WEAVER:
Model Weaving in a Large Industrial Context
どちらもAspectJに基づいた考え方
ccModelerは関心事指向のモデリング環境である
24
まとめ
25
まとめ
ccJavaの織り込みインタフェースのメカニズ
ムを、モデルで表現
Component-and-Connectorアーキテクチャ
モデルからコード化までの実現
26
今後の課題
モデルベースの検証
モデルが設計者の意図通りかを自動判定
作成したアーキテクチャが要求を反映しているか
モデルに不正確さや曖昧さがないか
現在はOCLによりモデルの文法を簡易的にチェック
形式手法を利用したモデル検証を検討中
27
終
28