関心事指向アーキテクチャモデリング環境
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
© Copyright 2026 ExpyDoc