[修士論文] 前処理命令解析と変更履歴マイニングに基づくプログラム変更推薦

小林研M2の森さんが修士論文の発表を行いました.

論文題目:前処理命令解析と変更履歴マイニングに基づくプログラム変更推薦
論文概要:

プログラムを変更すると複数の依存箇所に変更が伝播する.大規模なソフトウェア開発では開発者が必要な変更箇所を全て特定することは困難な作業となる.前処理によって実行環境の差異の吸収や機能の切り替えを可能とするソフトウェアでは,前処理命令が散在するため必要な変更箇所の特定はより困難となる.この問題に対し,ソフトウェアの改版履歴を分析することで,変更が必要となる箇所を推薦する変更推薦手法が提案されている.この推薦には,同時に変更されやすい成果物間の関係を
用いるが,前処理によって変化する依存関係をうまく取り扱うことができないという問題がある.

本研究では,改版履歴の分析に基づく変更推薦の精度向上を目的とし,変更と前処理命令の関係に着目した変更支援手法を提案する.
改版履歴中で変更のあったファイルを静的解析し,変更された箇所に対する前処理命令の影響を分析する.
変更箇所と前処理命令の包含関係のみでなく,変更された関数が前処理命令の範囲内でのみ呼ばれることと,変更されたヘッダファイルが前処理命令の範囲内でのみインクルードされることも含めて解析を行う.
前処理命令の条件に使用されるマクロ変数が機能や吸収すべき差異を表すことに着目し,変更に対してマクロ変数名を属性として付与することで,前処理命令への変更情報を加味した詳細な改版履歴を生成する.
提案手法では,この改版履歴をマイニングすることで,前処理命令を考慮した共変更間の相関ルールを抽出し変更推薦を行う.

3つのOSSに対して提案手法を適用し,ファイル単位と関数単位の2種類の粒度で改版履歴を生成した.これらの改版履歴を調査し,過去の改版において前処理命令の範囲内に対する変更が頻繁に発生していることを明らかにした.提案手法により得られる相関ルールについて調査を行ったところ,前処理命令の情報が属性として付与されたルールが多く得られることと,確信度やリフト値の観点から質の高いルールが含まれていることが示された.
また,前処理命令を考慮しない従来手法と提案手法における推薦性能の比較を行った.その結果,関数単位の推薦においては,MRRの最大値を向上させることができた.
一方,ファイル単位の推薦においてはMRRとRecallがともに従来手法による結果を下回った.提案手法による属性付きのルールが正解を上位に推薦することに大きく貢献している実例を確認し,特定の状況においては推薦精度の向上に寄与することを示した.