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