netail.net
自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.
最近のお知らせ (古いものはこちら)
2004-09-24 古い日記からの変換データ [長年日記] ▲
_ [論文] メタクラスの互換性問題 ▲
Noury Bouraqadi-Saadani, Thomas Ledoux, Fred Rivard:Metaclass Composability.Composability Workshop held in conjunction with ECOOP 96.
前に読んだ OOPSLA の論文でのメタクラスの互換性問題について述べていた論文.
Upward Compatibility は,親クラスがメタクラス情報にアクセスしているとき,子クラスは自分自身のメタクラスにアクセスすることになるが,このときにメタクラス同士は直接関係ないので困ったことになる(直接は関係なくてもメタクラス間できちんと関係を維持しないといけない)という問題.
Downward Compatiblity はメタクラス間の継承関係が,クラス側に影響を及ぼしてしまう問題.
また,複数のメタクラスを同時に使うときにはそれらを合成するメカニズムが必要である(たとえば多重継承など…).
で,この人たちは,メタクラスからのインスタンス生成(self.new)とクラスからのメタクラス取得(self.class)とがベース・メタレベル間を移動する瞬間なので,そこを Metapipe というポイントとして何らかの取り扱いをすればよさそうでは,という提案をしている.
AOP的な文脈に置き換えられるかな?と思ったのだが,アスペクトの動作をメタレベルへの移動ととらえられないことはないかもしれないが,アスペクトの中でベースレベルに「降りる」移動のほうがいつなのか,というのは明確には言いづらいのかも.
_ [論文] オブジェクト指向対応の差分計算アルゴリズム ▲
Taweesup Apiwattanapong, Alessandro Orso, Mary Jean Harrold:A Differencing Algorithm for Object-Oriented Programs.Proceedings of the 12th ACM SIGSOFT Symposium on the Foundations of Software Engineering (FSE 2004),Newport Beach, CA, USA, November, 2004.
言語のsemanticsまで考慮した diff を作りましょうという話.クラスおよびインタフェースの対応をとって,メソッド単位の対応をとって,メソッドの中身では制御フローグラフのノード間の対応を取る.
クラスは基本的にはパッケージ名まで含めた名前比較だが,メソッド単位ではシグネチャを優先しつつ,名前だけでの対応も作る.メソッドの中身は,制御フローグラフをベースに比較する.
制御フローグラフでは,メソッド呼び出し文ごとに,dynamic binding の結果でどのメソッドに行くか分岐情報を持ったようなグラフを作っている.で,Hammock という Signle Entry Single Exit な部分グラフを見つける.要は,メソッド内の制御フローで,「どんな条件でも必ず通過するノード」を識別して,その部分を「Hammock Node」という集約された形に置き換える.で,それを繰り返していって全体の簡略化された制御構造を取り出す.あとは Hammock Node 間の類似度とかで計るみたい.
従来のマッチングアルゴリズムに比べると,マッチするノード数はだいぶ増えているらしい.時間は,20000ノードぐらいのプログラムで5分かそこらなので,そこそこの時間はかかるみたい.
わりとアルゴリズムの計算量とかについても述べていてかなり真面目で,よさそうな論文.diff について引用することはないと思うが,この人たちの Hammock のアイディアは(もっと前の論文で出ているものだが)どこかで使うことになるのかも.
_ [論文] feature 実装位置の特定作業 ▲
ICSM のどれかの研究で引用されてて,なぜか放置してた論文のメモ.
Chen, K. and Rajlich, V.:Case Study of Feature Location Using Dependence Graph.Proceedings of the 8th International Workshop on Program Comprehension (IWPC 2000), pp.241-249, 10-11 June 2000.
ASDG (Abstract System Dependence Graph) を使って,特定の機能を実装したソースコード位置を特定するfeature location の支援には,グラフを展開しながら閲覧するという形のツールが必要だろう,グラフ全体を把握しつつグラフの一部だけを見ていくのがいい,といった種類のことを言っている論文.
実際にはグラフが大きくなりすぎるので,頂点の集約とか何か色々な工夫が必要なのだろうけれど.最終的に生データ(ソースコード)に近づいていくことになると思うのだが,ソースコードに近づくほどグラフよりもソースコードのほうが理解が早くなったりしないのだろうか.
_ [PptWatch] PptWatch: Point 発表時間計測ツール ▲
もういい加減ハンドルである意味がなくなってきたので大学のサイトで公開することに.http://sel.ist.osaka-u.ac.jp/~t-isio/pptwatch.html
人柱募集中とか書いたりすると誰も使ってくれなさそうなので,使い方だけ書いて置いておくことにする.
_ [hyCalendar] 0.8.6 向け機能追加 ▲
次バージョン向けに,久々にコーディング.とりあえず昨日から5,6時間かけて実装したのは次の通り.他にどこまで組み込むかは未定.
・表示ツールバーの日付入力ボックスなど,一部でIME無効化.・装飾文字列の情報が,ハイパーリンク文字列の後で消えてしまう問題を修正.・「ハイパーリンク対象文字列も装飾文字列の効果に従う」オプションを追加.・フリーメモ,TODOエリアを最小化すると,復帰しないことがある問題を修正.・右クリックからのポップアップで [この日付に色を塗る] メニューを追加.・右クリックからのポップアップで [この日付の色をパレットに抽出] メニューを追加.・ファイル保存後も「元に戻す」を有効に設定.・[表示]メニューに,フリーメモ,TODOリストを追加.・[終了時のウィンドウ位置を保存する]を[終了時のウィンドウレイアウトを保存する]に変更. 有効なときはフリーメモ,TODOリストの表示状態を保存する.