アスペクト指向言語のための 独立性の高いパッケージシステム

Slides:



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

Web アプリをユーザー毎に カスタマイズ可能にする AOP フレームワーク
セキュリティ機構のオフロードを考慮した仮想マシンへの動的メモリ割当
通信処理のカーネル内競合を 検出するアスペクト指向 カーネルレベルロガー
柳澤 佳里* 光来 健一* 千葉 滋* *東京工業大学 情報理工学研究科 数理・計算科学専攻
OSが乗っ取られた場合にも機能するファイルアクセス制御システム
2007/1/18 山下 諒蔵 佐藤 春旗 前田 俊行 大山 恵弘 佐藤 秀明 住井 英二郎
AspectScope によるアスペクトとクラスのつながりの視覚化
ネストした仮想化を用いた VMの安全な帯域外リモート管理
リファクタリングのための 変更波及解析を利用した テスト支援ツールの提案
同期的にアドバイスを活性化できる分散動的アスペクト指向システム
ユーザ毎にカスタマイズ可能な Web アプリケーション用のフレームワークの実装
アスペクト指向プログラミングを用いたIDSオフロード
アスペクト指向プログラミングと Dependency Injection の融合
遠隔ポイントカット - 分散アスペクト指向プログラミング のための言語機構
柳澤 佳里 (学籍番号: 03M37311) 指導教官: 千葉 滋 東京工業大学 情報理工学研究科 数理・計算科学専攻
AOP言語への 織り込みインターフェイスの導入 A Weaving-Interface for AOP Languages
契約に基づいたアスペクト指向リファクタリングの検証
型付きアセンブリ言語を用いた安全なカーネル拡張
細かい粒度でコードの再利用を可能とするメソッド内メソッドのJava言語への導入
細かい粒度で コードの再利用を可能とする メソッド内メソッドと その効率の良い実装方法の提案
Xenによる ゲストOSの監視に基づく パケットフィルタリング
仮想計算機を用いて OSを介さずに行う安全な ファイルアクセス制御
暗黙的に型付けされる構造体の Java言語への導入
セキュリティ機構のオフロードを考慮した 仮想マシンのスケジューリング
関心事ごとに視点を切り替えて プログラムを編集できる 統合開発環境の提案と実装
数理・計算科学専攻 千葉研究室 08M37315 森田 悟史 指導教員 千葉 滋 教授
他のプロセスに あたえる影響が少ない 実行時ミラーリングシステム
理学部 情報科学科 指導教官 千葉 滋 助教授 学籍番号 03_03686 内河 綾
アスペクト指向言語による 例外処理の記述方法の改善
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
ユーザ毎にカスタマイズ可能な Webアプリケーションの 効率の良い実装方法
実行時情報に基づく OSカーネルのコンフィグ最小化
アスペクト指向に基づく 拡張可能な MDAモデルコンパイラ
横断的関心事に対応したオブジェクト指向言語GluonJとその織り込み関係の可視化ツール
Recoveryアドバイスをもつ アスペクト指向システム
カーネル用アスペクト指向システム KLAS
クラスのインターフェース やその振る舞いに及ぼすアスペクトの影響の解析と可視化
アプリケーション依存の先読みが可能なO/Rマッピングツール
Intel SGXを用いた仮想マシンの 安全な監視機構
アスペクト指向言語のための 独立性の高いパッケージシステム
ソフトウェア保守のための コードクローン情報検索ツール
契約による クラスとアスペクト間の 影響解析
コードクローン分類の詳細化に基づく 集約パターンの提案と評価
仮想環境を用いた 侵入検知システムの安全な構成法
プログラムの織り込み関係を可視化するアウトラインビューの提案と実装
コーディングパターンの あいまい検索の提案と実装
拡張可能なアスペクト指向モデリングにおける織り合わせの検証
仮想マシンと物理マシンを一元管理するための仮想AMT
Josh : バイトコードレベルでのJava用 Aspect Weaver
統合開発環境によって表現された 言語機構によるコードのモジュール化
IDE を活用した言語機構に頼らないコード再利用のためのモジュール化
同期処理のモジュール化を 可能にする アスペクト指向言語
仮想マシンに対する 高いサービス可用性を実現する パケットフィルタリング
様々なAOPメカニズムをモデル化する パラメータ化インタプリタ
アスペクト指向言語のための視点に応じた編集を可能にするツール
プログラムの差分記述を 容易に行うための レイヤー機構付きIDEの提案
VMリダイレクト攻撃を防ぐための 安全なリモート管理機構
状況に応じて適切な 例外処理が行なえる アスペクト指向分散環境実験の 支援ツール
統合開発環境のための プログラミング言語拡張 フレームワーク
開発者との対話を活かした 横断的構造の表現
強制パススルー機構を用いた VMの安全な帯域外リモート管理
SMP/マルチコアに対応した 型付きアセンブリ言語
プログラムの一時停止時に 将来の実行情報を提供するデバッガ
コードクローン解析に基づく デザインパターン適用候補の検出手法
回帰テストにおける実行系列の差分の効率的な検出手法
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
プログラム理解のための 付加注釈 DocumentTag の提案
GluonJ を用いたビジネスロジックからのデータベースアクセスの分離
Josh : バイトコードレベルでのJava用 Aspect Weaver
Presentation transcript:

アスペクト指向言語のための 独立性の高いパッケージシステム 理学部 情報科学科 指導教員: 千葉 滋 学籍番号: 03-03150 今吉 竜之介 asf

Javaパッケージシステム プログラムをモジュール化 する機構 外部からはパッケージの インターフェイスを通してのみ アクセス可能 × × 一貫した処理は一つの パッケージに所属 パッケージは再利用の単位 外部からはパッケージの インターフェイスを通してのみ アクセス可能 パッケージ内部の挙動を保障 パッケージ class class class class class インターフェイス class × × class class

アスペクトはパッケージの モジュール性を破壊 class class aspect アスペクトの織り込みに対する制御は存在しない アスペクトはインターフェイスを 無視することが可能 パッケージ内部のアスペクトが外部に影響を及ぼす ポイントカットが一致すれば どこにでもウィーブされる ポイントカット記述にワイルド カードが使用された場合 class class class class aspect class

規律あるアスペクトの織り込み ジョインポイントの選択に 対してパッケージ単位で 範囲を規定する × 明示すれば選択範囲を 拡大可能 × class class aspect ジョインポイントの選択に 対してパッケージ単位で 範囲を規定する パッケージ外のジョインポイントは選択不可 ワイルドカードによる誤った 選択を防ぐ 明示すれば選択範囲を 拡大可能 インターフェイスに対する アドバイス 公開ポイントカット × class class class × class aspect class アスペクトとジョインポイントが 同一パッケージ内にあれば許可 選択可能な 範囲

インターフェイスに対する アドバイス 特定のクラスメンバへの外部からのアクセス全てに作用させるアドバイス class class 特定のクラスメンバへの外部からのアクセス全てに作用させるアドバイス 外部から見ればそのアドバイスはインターフェイスと 見なせる 外部の特定のパッケージを指定することは不可 明示的に記述する必要があるため、予期せぬ 織り込みにはならない class class class × aspect aspect class 特定のクラスメンバへのアクセスを 選択するポイントカットに [&& !within(自パッケージ)]を 追記することでパッケージ外部に作用可能

公開ポイントカット 公開されたポイントカットを用いればパッケージ外部へアクセス可能 抽象アスペクトを継承する ことで親アスペクトのポイントカットを利用可能 継承したポイントカットを利用するときは親アスペクトと 同一パッケージと見なす 親として指定されるアスペクトは抽象アスペクトでなければならない 公開側も継承側も明示的な宣言が必要 class class class class class 抽象 aspect aspect class 抽象アスペクトを継承すれば 親アスペクトのポイントカットを 利用可能

実装 AspectJ言語を拡張して制限を追加 実装にはabc(AspectBench Compiler)を改造 Aspect Info Advice Weaving を拡張 AspectJ言語を拡張して制限を追加 実装にはabc(AspectBench Compiler)を改造 初期コード数:92099行 / 追加コード数:581行 abcでは、全てのジョインポイントは そこに織り込まれるアドバイスのリストを保持 織り込む直前に、そのリストにある全ての アスペクトの情報をチェック 所属パッケージ、親アスペクトの有無など パッケージ制限のルールに適していなければ、 そのアドバイスはリストから除外 全てのジョインポイントに対して同様の処理を実行 インタータイプ宣言にも同様のルールを追加

実験:AJHotDrawの移殖 パッケージ制限によるアスペクトの 情報の変化を計測 対象: AJHotDraw アスペクト指向で設計されたDrawing Tool コード数:41903行 / ファイル数:300個 パッケージ制限下でも正しく動作するようにアスペクトを修正 修正前 修正後 ・アスペクトを含むパッケージ数 ・アスペクトのファイル数 ・アドバイスの数 ・インタータイプ宣言の数 ・ウィーブの合計数 3 10 5 31 44 7 17 ・ 修正後はアスペクトの数が増加 ・ 作用するアスペクトを探す手間は 減少

実験:コンパイル時間の比較 実験環境 abcとパッケージ制限付きabcで CPU: AMD Athlon 64 2.20GHz コンパイルした際の時間を計測 ソースはAJHotDrawを使用 パッケージ制限下では コンパイルエラー 修正前のソースにはパッケージをまたぐアスペクトが存在 実験環境 CPU: AMD Athlon 64 2.20GHz メモリ: 2GB OS: Windows XP SP2 Java SDK: 1.5.0 abc: 1.2.1 abc パッケージ制限付きabc 修正前のソース 修正後のソース 42.8(s) 42.3(s) コンパイルエラー 42.5(s) ・オーバーヘッドは 約0.3% ・十分実用的な 速度

関連研究 本研究はアスペクトの選択可能なジョインポイントの 範囲を制限するアプローチ プログラムをアスペクトの進入から守るアプローチ Open Modules [Aldrich et al. ’06]、ccJava [境ら ’06] 織り込みの影響を制御するアプローチ COW [篠塚ら ’05]、Impact Analysis of Weaving [Hideaki et al. ’05] 織り込みの見せ方を改善するアプローチ XPI [William et al. ’06]、AAIF [Kiczales et al. ’05]

まとめと今後の課題 まとめ 今後の課題 規律あるアスペクトの織り込み方法を提案 明示的に選択可能な範囲を拡大する方法を提案 abc(AspectBench Compiler)を改造して実装 アスペクト指向で設計されたAJHotDrawを移殖 今後の課題 ルールの洗練 パッケージをまたぐようなクラスの継承がある場合の ジョインポイントの選択方法など ケーススタディの充実 ファイル数だけでなく、アドバイスやインタータイプ宣言が 増加する例の発見