netail.net
自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.
最近のお知らせ (古いものはこちら)
2002-12-19 古い日記からの変換データ ▲
_ C# ▲
C Magazine のεπιστημηさんの記事で,C# の delegation の実装例が載っていた.
delegate void update(int value); event update changed; // -- update オブジェクトの集合 changed(count); // -- changed に格納された update を呼び出す // -- printer オブジェクトの print メソッドは update のシグネチャを満たす changed += new update(printer.print);
とかいう感じ.これ,感触としてはAspectual Collaboration の expected インタフェースなどとすごく近いような気がする.ちょっと感心.
2006-12-19 ▲
_ [論文] 動詞+目的語でコードを検索 ▲
David Shepherd, Zachary P. Fry, Emily Gibson, Lori Pollock, K. Vijay-Shanker: Using Natural Language Program Analysis to Locate and Understand Action-Oriented Concerns. [author's page]
Technical Report No. 2006-334 (U. of Delaware), AOSD 2007, to appear.
ソースコードとコメントから,動詞と目的語のペアからソースコードへの対応を辺としたグラフを作るという話です.On-demand remodularization …というタイトルで AOSD 2006 に出てたネタの発展形です.
基本のクエリとして動詞と目的語と1つずつ与えたら,同義語や co-located word となる動詞を推薦してくれて,選んだ動詞群と目的語群から作られる「動詞+目的語」のペアに対応するソースコードを引っ張り出してくるという手法です.対応関係は,事前に,メソッド宣言のコメントや,メソッド名とオブジェクトの変数名などから抽出しているようです.
結果として提示されるソースコードは,メソッド単位を頂点として,メソッド呼び出し関係やオーバーライド関係を辺としたグラフとしています(ツール上では,そこから実際のソースへ移動できるようです).論文のサンプルでは,かなりしっかり接続されたメソッド群が出てきているので,1つの機能を実装する一群のメソッドは同じような動詞+目的語をメソッド名ないしコメント内に持ってるみたいです.
普通のIR手法なんかだと大量に該当ソースを発見しておいてランキング上位から見ていく形式ですが,これは動詞や目的語を追加していって少数のコードから徐々に探索範囲を広げていくアプローチを取ってるようです.
適用実験では,困った例として,機能名が動詞としても名詞としても使える単語だった場合にクエリをどうするか悩んだとか,IReportCompiler という名前から "compile report" というペアを取り出すルールがなかったとか書いてました.メソッドなどの命名方法と自然言語のギャップは,英語圏の人たちでも問題なのかもしれません.
しかし,英語圏な人たちなので,ソース中のコメントなんかは普通に自然言語解析で解決できていて,ちょっと羨ましいところです.日本語のコメント入りのコードだと,どう日本語情報とソース情報の対応付けをするのか,というあたりが工夫しどころなのかもしれませんが…….