開発者との対話を活かした 横断的構造の表現

Slides:



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

Web アプリをユーザー毎に カスタマイズ可能にする AOP フレームワーク
シーケンス図の生成のための実行履歴圧縮手法
アスペクト指向プログラミングに 関する十の神話
Dynamic AOPと その実装手法について
Myoungkyu Song and Eli Tilevich 発表者: 石尾 隆(大阪大学)
通信処理のカーネル内競合を 検出するアスペクト指向 カーネルレベルロガー
変数のスコープの設計判断能力 を育成するプログラミング教育
第2章 Eclipseと簡単なオブジェクト 指向プログラミング
AspectScope によるアスペクトとクラスのつながりの視覚化
リファクタリングのための 変更波及解析を利用した テスト支援ツールの提案
同期的にアドバイスを活性化できる分散動的アスペクト指向システム
ユーザ毎にカスタマイズ可能な Web アプリケーション用のフレームワークの実装
効率的なJava Dynamic AOPシステムを実現する Just-in-Time weaver
アスペクト指向プログラミングと Dependency Injection の融合
ソースコードに対する適用可能な修正手順を 可視化するリファクタリング支援手法の提案
遠隔ポイントカット - 分散アスペクト指向プログラミング のための言語機構
プログラム実行履歴を用いたトランザクションファンクション抽出手法
柳澤 佳里 (学籍番号: 03M37311) 指導教官: 千葉 滋 東京工業大学 情報理工学研究科 数理・計算科学専攻
AOP言語への 織り込みインターフェイスの導入 A Weaving-Interface for AOP Languages
契約に基づいたアスペクト指向リファクタリングの検証
細かい粒度でコードの再利用を可能とするメソッド内メソッドのJava言語への導入
細かい粒度で コードの再利用を可能とする メソッド内メソッドと その効率の良い実装方法の提案
暗黙的に型付けされる構造体の Java言語への導入
関心事ごとに視点を切り替えて プログラムを編集できる 統合開発環境の提案と実装
数理・計算科学専攻 千葉研究室 08M37315 森田 悟史 指導教員 千葉 滋 教授
理学部 情報科学科 指導教官 千葉 滋 助教授 学籍番号 03_03686 内河 綾
統合開発環境のための アスペクト指向システム
アスペクト指向言語による 例外処理の記述方法の改善
オーバレイ構築ツールキットOverlay Weaver
ユーザ毎にカスタマイズ可能な Webアプリケーションの 効率の良い実装方法
Javaプログラムの変更を支援する 影響波及解析システム
AspectScope による アスペクト指向プログラ ミングの支援
アスペクト指向に基づく 拡張可能な MDAモデルコンパイラ
プログラム動作理解支援を目的とした オブジェクトの振舞いの同値分割手法
横断的関心事に対応したオブジェクト指向言語GluonJとその織り込み関係の可視化ツール
活性化のタイミング制御の実装を分離記述可能な分散動的アスペクト指向言語
豊富な情報を基にした pointcut を記述できるアスペクト指向言語
Recoveryアドバイスをもつ アスペクト指向システム
コードクローンの動作を比較するためのコードクローン周辺コードの解析
オブジェクト指向言語論 第八回 知能情報学部 新田直也.
UMLモデルを対象とした リファクタリング候補検出の試み
クラスのインターフェース やその振る舞いに及ぼすアスペクトの影響の解析と可視化
アスペクト指向言語のための 独立性の高いパッケージシステム
アプリケーション依存の先読みが可能なO/Rマッピングツール
アスペクト指向言語のための 独立性の高いパッケージシステム
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
pointcut に関して高い記述力を持つ アスペクト指向言語 Josh
契約による クラスとアスペクト間の 影響解析
プログラムの織り込み関係を可視化するアウトラインビューの提案と実装
コーディングパターンの あいまい検索の提案と実装
拡張可能なアスペクト指向モデリングにおける織り合わせの検証
プログラミング言語論 第十三回 理工学部 情報システム工学科 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
分散 Java プログラムのための アスペクト指向言語
Josh : バイトコードレベルでのJava用 Aspect Weaver
統合開発環境によって表現された 言語機構によるコードのモジュール化
IDE を活用した言語機構に頼らないコード再利用のためのモジュール化
同期処理のモジュール化を 可能にする アスペクト指向言語
様々なAOPメカニズムをモデル化する パラメータ化インタプリタ
アスペクト指向言語のための視点に応じた編集を可能にするツール
プログラムの差分記述を 容易に行うための レイヤー機構付きIDEの提案
状況に応じて適切な 例外処理が行なえる アスペクト指向分散環境実験の 支援ツール
プログラム分散化のための アスペクト指向言語
統合開発環境のための プログラミング言語拡張 フレームワーク
エイリアス関係を考慮した Javaプログラム用静的スライシングツール
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
GluonJ を用いたビジネスロジックからのデータベースアクセスの分離
Josh : バイトコードレベルでのJava用 Aspect Weaver
Presentation transcript:

開発者との対話を活かした 横断的構造の表現 理学部 情報科学科 指導教官 千葉 滋 助教授 学籍番号 03_17286 戸部 敦 学士論文発表会

アスペクト指向 横断的関心事をモジュール化する技術 アスペクトに横断的関心事をまとめる クラスのソースコード上から横断的関心事を分離 アスペクトには実行するタイミングと実行するコードを記述 class Line impl. Shape { Point p1, p2; void setP1(int x, int y){ p1.setX(x); … class Line impl. Shape { Point p1, p2; void setP1(int x, int y){ p1.setX(x); … ポイントカット アドバイス @Glue class Update { @After(“ Display.update(); ”) Pointcut change = Pcd.call(“* Shape+.set*(..)”); … @Glue class Update { … @Glue class Update { Pointcut change = Pcd.call(“* Shape+.set*(..)”); … ジョインポイント 織り込み(Weave) GluonJ での例 学士論文発表会

横断的構造の可視化ツール アスペクト指向言語の obliviousness にまつわる問題 可視化ツールによって問題の回避を支援 ソースコード上からクラスとアスペクトの関係が読み取れない fragile pointcut 問題 クラスの変更がアスペクトの織り込みに予期しない悪影響を与える 意図しないジョインポイントが選択される問題 可視化ツールによって問題の回避を支援 class Line impl. Shape { Point p1, p2; void setP1(int x, int y){ p1.x = x; … class Line impl. Shape { Point p1, p2; void setP1(int x, int y){ p1.setX(x); … @Glue class Update { @After(“ Display.update(); ”) Pointcut change = Pcd.call(“* Shape+.set*(..)”); … 学士論文発表会

C&Y の提案 横断的構造を視覚的に表示 クラス図を用いて横断的構造を視覚化 クラスに注目した表示 アスペクトに注目した表示 選択したクラスに影響を与えるアスペクトを表示 アスペクトに注目した表示 選択したアスペクトがアドバイスを織り込むクラスを表示 クラス図を用いて横断的構造を視覚化 クラス図は含められる情報が多い 例) 使用関係、継承関係 簡易表示機能によってクラス図の複雑化を回避 学士論文発表会

クラスに注目した表示 fragile pointcut 問題の回避 Point.setX(int) に注目 クラスに影響を与えるアスペクトを表示 fragile pointcut 問題の回避 クラスの変更がアスペクトの織り込みに予期しない悪影響を与える Point.setX(int) に注目 setX() とアスペクトとの関係を表示 ジョインポイントを選択する fragile pointcut が把握できる setX() の呼び出しを選択 setX() の変更には change ポイントカットに注意 学士論文発表会

アスペクトに注目した表示 意図しないジョインポイントが選択される問題を回避 Update アスペクトに注目 アスペクトに織り込まれるクラスを表示 意図しないジョインポイントが選択される問題を回避 ワイルドカードを含むポイントカットによる選択は把握が困難 同じアドバイスが何度も実行されてしまう Update アスペクトに注目 Update に選択される ジョインポイントを表示 意図に沿ったポイントカットを記述できる このアドバイスの織り込みは不要 (Display が何度も再描画) 学士論文発表会

クラス図の複雑化を回避 C&Y では簡易表示機能を実装 必要になったときに詳細情報を表示 メンバーの非表示オプション 利用者に必要のないメンバーを非表示にできる 選択アイコン( )による織り込みの表現 アスペクトはメンバーを拡張するもの 拡張されたメンバーにはアイコンをつけて表示 必要になったときに詳細情報を表示 必要かどうかの判断は利用者に任せる 学士論文発表会

実装 アスペクト指向言語 GluonJ を対象に実装 Eclipse プラグインとして開発 プラグインのコード 7000行 内部で GluonJ の Weaver と同等の機能を実装している GEF (Graphical Editing Framework) を使用 ジョインポイントの解析に Javassist を使用 GluonJ 内で Javassist を使用しているため 学士論文発表会

デモ 学士論文発表会

関連研究 AJDT (AspectJ Development Tools) ActiveAspect [W. Coelhoら, ‘06] クラス内のアドバイスの織り込みを把握 アスペクトのプログラム全体への織り込みは表示できない 無駄なアドバイスの織り込みを把握することが困難 ActiveAspect [W. Coelhoら, ‘06] アスペクトがプログラムに与える影響を把握 クラスに注目した表示ができない fragile pointcut 問題は解決されない UML を用いたアスペクト指向の設計 [D. Steinら, ‘02] クラス図を含めた UML を使う いかに詳しく記述するかがポイント プログラムの横断的構造は表示しない 学士論文発表会

まとめと今後の課題 まとめ 今後の課題 obliviousness にまつわる問題の回避 C&Y の提案 クラスに注目した表示 fragile pointcut 問題の回避 アスペクトに注目した表示 意図しないジョインポイントが選択される問題の回避 簡易表示機能 今後の課題 動的ポイントカットの表示法について考察 ある程度大きなプログラムを C&Y で表示して検証 学士論文発表会