関心事指向アーキテクチャモデリング環 境 Concern-oriented Architecture Modeling Environment 九州工業大学大学院情報工学府 情報科学専攻 鵜林研究室 M1 佐藤 友紀 1.

Slides:



Advertisements
Similar presentations
ソフトウェア工学 知能情報学部 新田直也. オブジェクト指向パラダイムと は  オブジェクト指向言語の発展に伴って形成され てきたソフトウェア開発上の概念.オブジェク ト指向分析,オブジェクト指向設計など,プロ グラミング以外の工程でも用いられる.  ソフトウェアを処理や関数ではなくオブジェク.
Advertisements

OWL-Sを用いたWebアプリケーションの検査と生成
メタモデル記述を用いた成果物間の依存関係追跡手法
Web アプリをユーザー毎に カスタマイズ可能にする AOP フレームワーク
blanco Framework ご紹介 DB版
Riding the Design Wave II
表計算ソフトで動作するNEMUROの開発
Dynamic AOPと その実装手法について
Myoungkyu Song and Eli Tilevich 発表者: 石尾 隆(大阪大学)
情報伝播によるオブジェクト指向プログラム理解支援の提案
SSR 産学戦略的研究フォーラム 平成26年度調査研究グループ 「大規模複雑な自己適応システムの 適応進化制御手法に関する調査研究」 研究成果 田原 康之 電気通信大学 2015/3/31.
AspectScope によるアスペクトとクラスのつながりの視覚化
BPMN(Business Process Modeling Notation)
リファクタリングのための 変更波及解析を利用した テスト支援ツールの提案
同期的にアドバイスを活性化できる分散動的アスペクト指向システム
UML入門 UML PRESS vol.1 より 時松誠治 2003年5月19日.
ユーザ毎にカスタマイズ可能な Web アプリケーション用のフレームワークの実装
アスペクト指向プログラミングを用いたIDSオフロード
効率的なJava Dynamic AOPシステムを実現する Just-in-Time weaver
アスペクト指向プログラミングと Dependency Injection の融合
遠隔ポイントカット - 分散アスペクト指向プログラミング のための言語機構
AOP言語への 織り込みインターフェイスの導入 A Weaving-Interface for AOP Languages
契約に基づいたアスペクト指向リファクタリングの検証
チーム FSEL 立命館大学情報理工学部 ソフトウェア基礎技術研究室
ソフトウェア工学 知能情報学部 新田直也.
UMLメタモデルの変更に対応した ダイアグラム間整合性検証環境の 自動生成手法
コードクローンに含まれるメソッド呼び出しの 変更度合の分析
識別子の命名支援を目的とした動詞-目的語関係の辞書構築
その他の図 Chapter 7.
組込みシステムの外部環境分析のためのUMLプロファイル
関心事ごとに視点を切り替えて プログラムを編集できる 統合開発環境の提案と実装
理学部 情報科学科 指導教官 千葉 滋 助教授 学籍番号 03_03686 内河 綾
統合開発環境のための アスペクト指向システム
ユーザ毎にカスタマイズ可能な Webアプリケーションの 効率の良い実装方法
只見町 インターネット・エコミュージアムの「キーワード」検索の改善
AspectScope による アスペクト指向プログラ ミングの支援
アスペクト指向に基づく 拡張可能な MDAモデルコンパイラ
横断的関心事に対応したオブジェクト指向言語GluonJとその織り込み関係の可視化ツール
豊富な情報を基にした pointcut を記述できるアスペクト指向言語
オブジェクト指向言語論 第八回 知能情報学部 新田直也.
プログラミング言語論 第十四回 理工学部 情報システム工学科 新田直也.
クラスのインターフェース やその振る舞いに及ぼすアスペクトの影響の解析と可視化
アスペクト指向言語のための 独立性の高いパッケージシステム
アスペクト指向言語のための 独立性の高いパッケージシステム
pointcut に関して高い記述力を持つ アスペクト指向言語 Josh
シナリオを用いたレビュー手法PBRの追証実験 - UMLで記述された設計仕様書を対象として -
契約による クラスとアスペクト間の 影響解析
プログラムの織り込み関係を可視化するアウトラインビューの提案と実装
拡張可能なアスペクト指向モデリングにおける織り合わせの検証
プログラミング言語論 第十三回 理工学部 情報システム工学科 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
オブジェクト指向言語論 第十二回 知能情報学部 新田直也.
分散 Java プログラムのための アスペクト指向言語
Josh : バイトコードレベルでのJava用 Aspect Weaver
統合開発環境によって表現された 言語機構によるコードのモジュール化
IDE を活用した言語機構に頼らないコード再利用のためのモジュール化
同期処理のモジュール化を 可能にする アスペクト指向言語
設計情報の再利用を目的とした UML図の自動推薦ツール
様々なAOPメカニズムをモデル化する パラメータ化インタプリタ
アスペクト指向言語のための視点に応じた編集を可能にするツール
プログラムの差分記述を 容易に行うための レイヤー機構付きIDEの提案
状況に応じて適切な 例外処理が行なえる アスペクト指向分散環境実験の 支援ツール
統合開発環境のための プログラミング言語拡張 フレームワーク
開発者との対話を活かした 横断的構造の表現
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
オブジェクト指向メトリクスを用いた 開発支援に関する研究 --- VC++とMFCを用いた開発を対象として ---
プログラム理解のための 付加注釈 DocumentTag の提案
GluonJ を用いたビジネスロジックからのデータベースアクセスの分離
Josh : バイトコードレベルでのJava用 Aspect Weaver
Presentation transcript:

関心事指向アーキテクチャモデリング環 境 Concern-oriented Architecture Modeling Environment 九州工業大学大学院情報工学府 情報科学専攻 鵜林研究室 M1 佐藤 友紀 1

研究の概要  モデルレベルから 関心事指向を用いた実装を実現す る これまでに研究されてきた 関心事指向の AOP 言語 [ASE2007] コードレベル 更に進めて モデルレベル 2

3 発表の流れ 1. 問題意識 2. 関心事指向プログラミングによる解 決 3. モデリング開発環境 ccModeler 4. 実装方法 5. 関連研究 6. まとめ

問題意識 4

 オブジェクト指向プログラミング ( OOP:Object-Oriented Programming )  アスペクト指向プログラミング (AOP : Aspect-Oriented Programming)  OOP で分離できなかった関心事を分離する  ロギング処理のような関心事を 1 つのモジュール に! 5 アスペクト指向プログラミング AOP の欠点とは … ?

6 AOP の問題点 1 図形(点と線)を描画するプログラム 図形の描画、移動があれば画面を更新 update  簡易図形エディタの例  エディタの概要 LinePoint void set(){ } void moveBy(){ } void set(){ } void moveBy(){ } void update(){ } Display アスペクト アドバイス Display ポイントカット pointcut change(): execution(void set()) || execution(void moveBy()) ; before : change() { update(); } 織り込み Display.update() ; 横断的関心事

7 AOP の問題点 2  画面の更新が行われているか ポイントカット Display Point set() moveBy() Line set() moveBy() 基本的 横断的 アスペクト 問題点 関心事は、状況によって基本的にも横断的にもなる アスペクトの再利用は必ずしも可能ではない アドバイス update() 基本的 アスペクト ポイントカット Logging 横断的 アドバイス log() ?

関心事指向プログラミングによる解 決 8

関心事指向プログラミング 1  ccJava ( AOP 言語)  関心事を全てクラスとして記述  関心事を織り合わせて、合成を行う  従来の問題点を解決  基本的・横断的の切り替えが可能  再利用性が高い  有用性  予期せぬ織り込みの防止  → 公開した箇所だけが、織り込みの対象 [ASE2007] OK! 9

10 関心事指向プログラミング 2  織り込みインタフェース  「基本的」「横断的」切り替えを可能にする ccJava イメージ図 [ASE2007]  ccJava 構成要素  クラス  織り込みインタフェース  weave ステートメント 織り込みに関する仕様をポイントカットで 記述 public w_interface wDisplay{ pointcut draw():execution(void update()); import before(), after() returning :draw(); export draw(); } ccJava コード 他から織り込める ポイントを公開 織り込みに使える メソッドを公開 draw() log() weave{ ・ ・ ・ connect(port1:wDisplay.draw, port2:wLine.change){ after() returning:port2{port1.proceed();}} connect(port1:wLogging.log, port2:wDisplay.draw){ after() returning:port2{port1.proceed();}} } wDisplay wLine wLogging Line set() moveBy() Display Logging update() log()

11 研究の目的  ccJava の考え方を、モデリング環境に拡 張  関心事ベースの設計支援  織り込みの適用範囲の視覚化  関心事やアーキテクチャの再利用 関心事を全てコンポーネントとして扱う 織り込みには関連を用いる 関心事ベースのモデリング開発環境 ccModeler を提案

 最終的に ccModeler が目指すところ 研究の位置付け 12 wLine Line set() Display update() moveBy() ccJava コード wDisplay アーキテクチャのモデリング 設計したモデルの検証 検証後のモデルからのコード生成 今回は、アーキテクチャのモデリングを行う部分を作成

モデリング開発環境 ccModeler 13

モデリング開発環境 ccModeler モデル駆動開発 ccGenerator ccJavaAspectJ ccEditor ccJava の概念を取り入れたモデル Component-and-Connector アーキテクチャを採用 → 関心事をコンポーネント、合成をコネクタで表現 ccGenerator モデルから ccJava のコード生成を行う 14

15 簡易図形エディタのモデル全体像 関心事 織り込みインタフェース ポイントカット リスト 織り込み線

public w_interface wDisplay{ pointcut draw():execution(void update()); import before(), after() returning :draw(); export draw(); } ccJava コード 織り込みインタフェース  Component 表示  例: Display 織り込みインタフェース 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 21 EMF GMF ツール定義モデル 生成 Class Connect … ドメインモデ ル (メタモデ ル) グラフ定義モデ ル … ccEdito r Rectangle Connection マッピング定義モデ ル + OCL による制約の定 義 メタモデルを定義 使用する図形を定義 各モデルの対応 21

22 実装方法 3  ccModeler のメタモデルの一部 織り込み インタフェース 関心事 メタモデルで表現できない制約は OCL で補っている

関連研究 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 24 どちらも AspectJ に基づいた考え方 ccModeler は関心事指向のモデリング環境である

まとめ 25

まとめ  cc Java の織り込みインタフェースのメ カニズムを、モデルで表現  Component-and-Connector アーキテク チャ  モデルからコード化までの実現 26

今後の課題  モデルベースの検証  モデルが設計者の意図通りかを自動判定  作成したアーキテクチャが要求を反映しているか  モデルに不正確さや曖昧さがないか  現在は OCL によりモデルの文法を簡易的にチェック 形式手法を利用したモデル検証を検討中 27

終 28