研究課題/領域番号 |
26280025
|
研究機関 | 独立行政法人産業技術総合研究所 |
研究代表者 |
森 彰 独立行政法人産業技術総合研究所, 知能システム研究部門, 研究グループ長 (30311682)
|
研究分担者 |
橋本 政朋 独立行政法人理化学研究所, 計算科学研究機構, 研究員 (60357770)
|
研究期間 (年度) |
2014-04-01 – 2017-03-31
|
キーワード | ソフトウェア変更解析 / 木差分計算 / セマンティックウェッブ技術 / リファクタリング解析 |
研究実績の概要 |
Linuxカーネル2.6.18から2.6.39までの22個のリリースバージョンのソースコードと、Java言語向けのビルドツールであるApache Antの11から194までの184個のリリースバージョンのソースコードいついて、隣接バージョン間の差分計算を行い、解析結果をRDFデータベース化した。Linuxカーネルについては、Coccinelleと呼ばれるパーザーが出力する命令文レベルでの制御フローグラフの情報や、Nccと呼ばれるコンパイラーツールが出力するコールグラフの情報も付加した。Nccツールは、典型的な関数ポインター経由の関数呼び出しを解析することが可能であるが、開発が停止しており現在の実行環境では稼働しなかったため、不具合の修正やいくつかの改善を行った。Linuxカーネルの解析結果は、合計40億件を超えるRDFの三つ組データが生成され、これは想定通りの規模であった。
得られた変更履歴RDFデータベースに対して、局所変数の置き換えなどの細粒度のリファクタリングパターンを検索する実験を行った。RDFデータベースに対する問い合わせ言語であるSPARQLを用いて検索グラフパターンを記述して実行した結果、Linuxカーネルのように大規模なデータであっても、数秒程度で数百件規模の検索結果が得られ、これは想定を上回る処理効率であった。最も複雑なリファクタリングパターンについて、目視による結果のチェックを行ったところ、正解率は90パーセントを超え、これも想定ははるかに上回る精度であった。結果として、スケーラビリティと精度の両面で良い成果を達成することができた。研究の概要は、国際会議に投稿し採択され、口頭発表を行った。JavaとCのように言語が異なる場合でも、ほとんど同一の検索パターンを用いることができ、ある意味でプログラミング言語の壁を超える解析手法を提示することができた。
|
現在までの達成度 (区分) |
現在までの達成度 (区分)
1: 当初の計画以上に進展している
理由
解析の処理速度、精度ともに当初の想定を上回る実験結果を得ることができた。一般的なリファクタリングパターンの検索や、Linuxカーネルにおけるロック機構に関わる大規模なリファクタリングの同定実験にも成功するなど、当初の研究計画よりも早く所定の結果を得ることができた。
|
今後の研究の推進方策 |
変更履歴データベースに追加されたコードクローンの情報を利用した変更パターンの検索実験を行い、ソフトウェア開発の傾向を端的に示すような指標が得られないか検討する。コード領域の自動整列を用いた検索事例にも取り組み、未知の不具合の発見や予測に役立てるための研究を行う予定である。
|
次年度使用額が生じた理由 |
国際会議での発表を前提に論文の投稿を予定していたが、業務上の制約から参加することが不可能になり、投稿を取りやめたため。
|
次年度使用額の使用計画 |
今年度に外部発表をすることができなかった研究成果を取りまとめて、次年度に論文投稿を行う。採択されなかった場合でも、会議に参加し関連研究の調査を行う予定である。
|