開発者との対話を活かした
横断的構造の表現
理学部
情報科学科
指導教官 千葉 滋 助教授
学籍番号 03_17286 戸部 敦
学士論文発表会
1
アスペクト指向
横断的関心事をモジュール化する技術
クラスのソースコード上から横断的関心事を分離
アスペクトに横断的関心事をまとめる
アスペクトには実行するタイミングと実行するコードを記述
class Line impl. Shape {
Point p1, p2;
void setP1(int x, int y){
p1.setX(x);
p1.setX(x);
…
ジョインポイント
織り込み(Weave)
アドバイス
@Glue class Update {
@After(“ Display.update(); ”)
Pointcut change =
Pcd.call(“* Shape+.set*(..)”);
…
GluonJ での例
学士論文発表会
ポ
イ
ン
ト
カ
ッ
ト
2
横断的構造の可視化ツール
アスペクト指向言語の obliviousness にまつわる問題
ソースコード上からクラスとアスペクトの関係が読み取れない
fragile pointcut 問題
クラスの変更がアスペクトの織り込みに予期しない悪影響を与える
意図しないジョインポイントが選択される問題
可視化ツールによって問題の回避を支援
class Line impl. Shape {
Point p1, p2;
void setP1(int x, int y){
p1.setX(x);
p1.x
= x;
…
@Glue class Update {
@After(“ Display.update(); ”)
Pointcut change =
Pcd.call(“* Shape+.set*(..)”);
…
学士論文発表会
3
C&Y の提案
横断的構造を視覚的に表示
クラスに注目した表示
アスペクトに注目した表示
選択したクラスに影響を与えるアスペクトを表示
選択したアスペクトがアドバイスを織り込むクラスを表示
クラス図を用いて横断的構造を視覚化
クラス図は含められる情報が多い
例) 使用関係、継承関係
簡易表示機能によってクラス図の複雑化を回避
学士論文発表会
4
クラスに注目した表示
クラスに影響を与えるアスペクトを表示
fragile pointcut 問題の回避
クラスの変更がアスペクトの織り込みに予期しない悪影響を与える
Point.setX(int) に注目
setX() とアスペクトとの関係を表示
setX() の呼び出しを選択
setX() の変更には
change ポイントカットに注意
ジョインポイントを選択する fragile pointcut が把握できる
学士論文発表会
5
アスペクトに注目した表示
アスペクトに織り込まれるクラスを表示
意図しないジョインポイントが選択される問題を回避
ワイルドカードを含むポイントカットによる選択は把握が困難
同じアドバイスが何度も実行されてしまう
Update アスペクトに注目
Update に選択される
ジョインポイントを表示
このアドバイスの織り込みは不要
(Display が何度も再描画)
意図に沿ったポイントカットを記述できる
学士論文発表会
6
クラス図の複雑化を回避
C&Y では簡易表示機能を実装
メンバーの非表示オプション
選択アイコン(
利用者に必要のないメンバーを非表示にできる
)による織り込みの表現
アスペクトはメンバーを拡張するもの
拡張されたメンバーにはアイコンをつけて表示
必要になったときに詳細情報を表示
必要かどうかの判断は利用者に任せる
学士論文発表会
7
実装
アスペクト指向言語 GluonJ を対象に実装
Eclipse プラグインとして開発
プラグインのコード 7000行
内部で GluonJ の Weaver と同等の機能を実装している
GEF (Graphical Editing Framework) を使用
ジョインポイントの解析に Javassist を使用
GluonJ 内で Javassist を使用しているため
学士論文発表会
8
デモ
学士論文発表会
9
関連研究
AJDT (AspectJ Development Tools)
クラス内のアドバイスの織り込みを把握
アスペクトのプログラム全体への織り込みは表示できない
ActiveAspect [W. Coelhoら, ‘06]
アスペクトがプログラムに与える影響を把握
クラスに注目した表示ができない
無駄なアドバイスの織り込みを把握することが困難
fragile pointcut 問題は解決されない
UML を用いたアスペクト指向の設計 [D. Steinら, ‘02]
クラス図を含めた UML を使う
いかに詳しく記述するかがポイント
プログラムの横断的構造は表示しない
学士論文発表会
10
まとめと今後の課題
まとめ
obliviousness にまつわる問題の回避
C&Y の提案
クラスに注目した表示
fragile pointcut 問題の回避
アスペクトに注目した表示
意図しないジョインポイントが選択される問題の回避
簡易表示機能
今後の課題
動的ポイントカットの表示法について考察
ある程度大きなプログラムを C&Y で表示して検証
学士論文発表会
11
© Copyright 2026 ExpyDoc