[修士論文] 外部APIへの依存の類似性に基づくプロジェクト転用可能な共変更関係の抽出

小林研M2の内野さんが修士論文を提出しました.

題目:外部APIへの依存の類似性に基づくプロジェクト転用可能な共変更関係の抽出
論文概要:

ソフトウェアが継続的に開発されることで,プログラムの規模は大きくなり開発者がそのソフトウェアの構造や依存関係を把握することは困難になる.このような状況では,ソフトウェアのバグや脆弱性の原因となりうる不完全変更が発生する.

このような課題に対応するために,版管理システムに記録するタイミングでファイルやメソッドなどプログラム要素の変更忘れ箇所を指摘する手法が研究されてきた.プログラムの依存関係解析する方法だけでなく,対象ソフトウェアプロジェクトの変更履歴における共変更関係を対象に相関ルールマイニングを適用して変更ルールを抽出する手法が複数提案されている.しかしながら既存手法は,対象ソフトウェアの変更における同時に変更されたファイル名やメソッド名を基に変更ルールを抽出しているため,他のプロジェクトに適用することができない.このため,十分な変更履歴が存在しない新しいプロジェクトでは有効な支援ができない.

そこで,本研究は同時に変更されたプログラム要素が依存する外部APIの情報を利用する方法を提案する.外部APIを使用する方法はプロジェクトに依存しないため,外部API依存の情報を用いる共変更関係はプロジェクトに依存せず,別のプロジェクトの変更推薦に利用できる.提案手法では同時変更されたメソッドが持つ外部API依存を集約してから,相関ルールマイニングに適用することにより変更忘れメソッドの推薦を実施する.外部API依存を集約方法として,外部API依存の出現回数やそれが現れたメソッドの個数などを考慮する複数方法を提案する.

本研究では提案手法の推薦精度を確認するために,OSSで公開されている1119個のAndroidプロジェクトを対象に評価実験を行った.仮想的な変更忘れを発生させ,提案手法が変更忘れ箇所を推薦する性能を評価した.実験の結果,提案した集約方法では外部APIが依存するメソッドの個数を考慮する方法が最も高い性能を持つことを確認した.またこの集約方法を用いることにより,推薦精度MRRの点で既存手法を10%程度上回ることも確認した.さらに,既存手法と提案手法の組み合わせによる提案が有効であり,推薦精度が既存手法を約55%向上させることを確認した.