Clustering Method of Function Call Dependency Graphs for Idioms Retrieval on Software

あらまし プログラム開発者はライブラリを利用する際,マニュアルや実例を参照し,その利用法を調べる. マニュアルには利用例が示されているが,典型的な例のみであり,すべての組合せが示されていない.また,既 存のソフトウェアから文字列検索により検索する場合では,多くの検索結果が得られ,必要な情報を選択するこ とが困難である.我々はライブラリの利用において他のライブラリとの組合せが特に重要であると考え,依存関 係によるライブラリの組合せを表現する関数呼出依存グラフを提案した [14].本論文では,既存のソフトウェア から抽出した関数呼出依存グラフ群からライブラリの組合せを検索した結果を分類と順位付けを行う手法を提 案し,実装した.本システムを用いて実際に FreeBSD の/usr/src/usr.sbinにある平均 1,500 行のソフトウェア 152 個を対象に利用頻度の高いライブラリ関数に対して関数呼出依存グラフの分類及び順位付けを行った.その 結果,実際によく利用されているライブラリ関数の組合せが得られた.また,平均約 40 個の関数呼出依存グラ フから平均 5 個のカテゴリーに分類することができた. キーワード ソフトウェア再利用,ソフトウェア検索,イディオム,類似度,クラスタリング

[1]  Qing Zhang,et al.  CVSSearch: searching through source code using CVS comments , 2001, Proceedings IEEE International Conference on Software Maintenance. ICSM 2001.

[2]  Michael W. Godfrey,et al.  Semantic grep: regular expressions + relational abstraction , 2002, Ninth Working Conference on Reverse Engineering, 2002. Proceedings..

[3]  Amir Michail Browsing and searching source code of applications written using a GUI framework , 2002, ICSE '02.