研究分担者 |
直井 徹 岐阜大学, 工学部, 助教授 (10207699)
粕谷 英人 愛知県立大学, 情報科学部, 助手 (10295579)
大久保 弘崇 愛知県立大学, 情報科学部, 助手 (40295580)
蜂巣 吉成 南山大学, 数理情報学部, 講師 (30319298)
吉田 敦 和歌山大学, システム情報学センター, 講師 (50283495)
|
研究概要 |
ソースコードにはコーディングにおけるさまざまな"ノウハウ"が埋め込まれている.我々は多くのソフトウェアで共通のボキャブラリとして利用されているライブラリ関数に着目する.そのライブラリ関数を利用するためのノウハウを抽出し,そのノウハウを容易に参照できるようにカテゴライズする手法を提案した. ライブラリ関数は他のライブラリ関数と組み合わせる事により,要求された機能を実現している.この組み合わせをライブラリ関数を利用するためのノウハウと考え,これを容易に参照するための手法を提案した.この組み合わせを表現するために,既に提案した関数呼び出し依存グラフ(FCDG)を用いる. FCDGはソースコードを抽象化した表現であり,複数のプログラムから同じグラフが抽出される.しかし,多くのプログラムから得られる同じFCDGは返り値チェックだけからなるグラフなどノードの数が少ないものが多い.これらのFCDGにはノウハウが少ない.逆に一部のプログラムからしか得られない同じFCDGは他の関数との組み合わせを表現するノード数の多いFCDGである.これは全く同じ使われ方が少ないからである. そこで,ノード数の多いFCDGを効率的に参照できるようにするために,類似したFCDGをカテゴライズする.そのために,FCDGの類似度を定義した.この類似度が高いものどうしをまとめる事により類似した利用例毎にライブラリ関数のノウハウを分類する事ができる. 実際にFreeBSDのソースツリーに対してFCDGを抽出した結果,fopenは332,socketは212,getoptは75個得られた.この中で同じグラフをまとめる事により,fopenは78個,socketは43個,getoptは22個のグラフパターンが存在した.さらに提案した類似度により,fopenは10,socketは6,getoptは4個のカテゴリに分類できた.
|