2014 Fiscal Year Annual Research Report
検索をベースとした大規模ソフトウェアの変更解析に関する研究
Project/Area Number |
26280025
|
Research Institution | National Institute of Advanced Industrial Science and Technology |
Principal Investigator |
森 彰 独立行政法人産業技術総合研究所, 知能システム研究部門, 研究グループ長 (30311682)
|
Co-Investigator(Kenkyū-buntansha) |
橋本 政朋 独立行政法人理化学研究所, 計算科学研究機構, 研究員 (60357770)
|
Project Period (FY) |
2014-04-01 – 2017-03-31
|
Keywords | ソフトウェア変更解析 / 木差分計算 / セマンティックウェッブ技術 / リファクタリング解析 |
Outline of Annual Research Achievements |
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のように言語が異なる場合でも、ほとんど同一の検索パターンを用いることができ、ある意味でプログラミング言語の壁を超える解析手法を提示することができた。
|
Current Status of Research Progress |
Current Status of Research Progress
1: Research has progressed more than it was originally planned.
Reason
解析の処理速度、精度ともに当初の想定を上回る実験結果を得ることができた。一般的なリファクタリングパターンの検索や、Linuxカーネルにおけるロック機構に関わる大規模なリファクタリングの同定実験にも成功するなど、当初の研究計画よりも早く所定の結果を得ることができた。
|
Strategy for Future Research Activity |
変更履歴データベースに追加されたコードクローンの情報を利用した変更パターンの検索実験を行い、ソフトウェア開発の傾向を端的に示すような指標が得られないか検討する。コード領域の自動整列を用いた検索事例にも取り組み、未知の不具合の発見や予測に役立てるための研究を行う予定である。
|
Causes of Carryover |
国際会議での発表を前提に論文の投稿を予定していたが、業務上の制約から参加することが不可能になり、投稿を取りやめたため。
|
Expenditure Plan for Carryover Budget |
今年度に外部発表をすることができなかった研究成果を取りまとめて、次年度に論文投稿を行う。採択されなかった場合でも、会議に参加し関連研究の調査を行う予定である。
|