asatoの技術的な日常日記

「成長に最大の責任をもつ者は、本人であって組織ではない。自らと組織を成長させるためには何に集中すべきかを、自らに問わなければならない」  非営利組織の経営 - ピーター・ドラッカー

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

依存の粒度、DSM、XPI などなど

アノテーションつかって、アドバイスが適用される側のコードとアスペクト側のコードの依存を軽減できる?

たとえば、実際の例:

before:
public aspect RoomBoundsChecking {

before(Room room, int x, int y) :
args(*, x, y) && this(room) && execution(void setMapCharactor(..))
{
if (x >= room.getWidth() || y >= room.getHeight() ) {
throw new IllegalArgumentException("x >= getWidth() || y >= getHeight()");
}
}
}
public class Room {
....
public void setMapCharactor(MapCharactor chara, int x, int y) {

chara.setLocation( toAbsoluteLocation(x, y) );

charactors.put(new Point(x, y), chara);
}
...
}
after:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface BoundsCheck { }


public aspect RoomBoundsChecking {

before(Room room, int x, int y) :
args(*, x, y) && this(room) &&
execution(@BoundsCheck * Room.*(..))
{
if (x >= room.getWidth() || y >= room.getHeight() ) {
throw new IllegalArgumentException("x >= getWidth() || y >= getHeight()");
}
}
}
public class Room {
....
@BoundsCheck
public void setMapCharactor(MapCharactor chara, int x, int y) {

chara.setLocation( toAbsoluteLocation(x, y) );

charactors.put(new Point(x, y), chara);
}
...
}


あと、数分で適当に考えた DSM (Design Structure Matrix):

dsm1

dsm2




色々疑問とか思ったこと:

  • アノテーションってデザインルール or XPI になってる?
  • 依存の粒度って重要かも。メソッドのシグニチャとかメソッド内部の実装とか
  • DSM のツールってどこかにないの? 手書きでやるのめんどくさい


関連しそうな文献:
Gregor Kiczales and Mira Mezini
Separation of Concerns with Procedures, Annotations, Advice and Pointcuts
European Conference on Object-Oriented Programming (ECOOP), Springer LNCS, 2005
http://www.st.informatik.tu-darmstadt.de/public/Publications.jsp


William Griswold, Kevin Sullivan, Yuanyuan Song, Macneil Shonle, Nishit Tewari, Yuanfang Cai, Hridesh Rajan,
"Modular Software Design with Crosscutting Interfaces",
IEEE Software, Special Issue on Aspect-Oriented Programming, Jan/Feb 2006.
http://www.cs.iastate.edu/~hridesh/research.shtml
スポンサーサイト

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://asatohan.blog77.fc2.com/tb.php/9-145b0517
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。