netail.net
自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.
最近のお知らせ (古いものはこちら)
2005-03-17 tdiary へ正式移動. [長年日記] ▲
_ tdiarysearch ▲
ネックだった検索まわりも,お手ごろなインタフェースの tdiarysearch を発見できたので,いちおう解決. というわけで,tdiary に正式に移行することに._ [Java]Contract4J ▲
メソッド引数宣言に対する @pre 属性,メソッドに対する @post 属性,クラスに対する @contract 属性などとして条件式をくっつけておくと,assert文として読み替えてくれるツールみたい.公式サイトを見ていたら,assert 文をそのままプログラムに書くと "contract" concern がソースと混ざってしまうね,といったことを主張していた.やりたいことも,やってることもわりと素直.
AspectJ を使って annotation をインタータイプ宣言して制約を付加するようになると,それなりに面白いと言えなくはないが,やっぱりオブジェクトなどの実行状態(コンテキスト?)を表現できないので,やっぱり何か足りない気がする.
_ [論文]デザインパターンのアスペクト指向実装の定量的評価 ▲
A. Garcia, C. Sant'Anna, E. Figueiredo, U. Kulesza, C. Lucena, A. von Staa:
Modularizing Design Patterns with Aspects: A Quantitative Study.
Proceedings of AOSD 2005, pp.3-14, Chicago, Illinois, March 2005.
デザインパターンをアスペクト指向で書くと嬉しいことがある,とは今までにも言われてきたが,それがソフトウェアの品質メトリクス的に本当のことなのかどうか調べてみようという論文.
計測方法としては,「関心事の分離されている度合い」として,デザインパターンを1つの関心事と見たときに,関心事に参加しているクラス,アスペクトの数とそれにアクセスするクラス,アスペクトの数の合計を「拡散度合い」と考えて,クラス・アスペクト単位での数,メソッド・アドバイス単位での数を調べている(小さいほど固まっている = 良い分離).また,凝集度,結合度,行数を見ている.
結果としては,良くなるものもあれば悪くなるものもある,という点ではKiczalesらの定性的な評価から極端な変化はない.
「関心事の分離されている度合い」が上がっても,その結果出てきたクラス群が強い依存関係を持っていたり,妙に行数が増えたり(実装が複雑になったり),といった結果になって,結果が良さそうなのは Observer や Mediator など一部だけに限られていた様子.まあ,何でもかんでもAOPで書いて嬉しくなるわけがないので,そこは当然だろうけど….
評価メトリクスの妥当性やら実験対象の正しさやらの問題は微妙にあるが,Separation of Concerns を無理に進めると問題が起きる可能性に言及したくなったときには引用できそう.