[修士論文] 選択的インライン展開を用いた効率的なコードテンプレート抽出

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

論文題目:選択的インライン展開を用いた効率的なコードテンプレート抽出
論文概要:

ソフトウェア開発において,多くのソフトウェアはライブラリやフレームワークなどのApplicaiton Programming Interface (API) を利用する.しかし,ライブラリのドキュメントは,API の理解に十分な量のサンプルを必ずしも提供しない.この問題に対し既存のソフトウェアからAPI の出現パターンを抽出した「API 利用パターン」は開発者の支援に有効であり,多くの研究がなされている.本研究では,静的解析と系列パターンマイニングに基づく利用パターンの抽出に着目する.既存手法の多くは,API 利用コードをメソッド単位で特定しパターンを抽出する.しかしプログラム中で1 つの機能に対応するコードは複数のメソッドに分散して記述される場合がある.これらのコードは呼び出し関係を解析してインライン展開を行うことで再度集約することが可能であるが,ポリモーフィックな呼出しに対して呼び出される可能性のある組み合わせは膨大であり,全てを展開することはできない.

本研究は,複数のメソッドに分散して記述されたAPI 利用コードのパターンを抽出することを目的とし,全てのメソッドでなく,一部のメソッドを選択的にインライン展開することで,現実的な時間内でAPI 利用パターンを抽出する手法を提案する.予備調査として69 個のオープンソースソフトウェア(OSS) を対象に,選択的なインライン展開を利用する先行研究の手法の有効性を調査した.調査の結果,先行研究がインライン展開の対象とした基準は不十分であることを明らかにした.本研究では,戻り値のあるメソッドを展開の基準とし,飽和系列マイニングを利用するAPI 利用パターン抽出手法を提案する.提案手法は更に,制御構造を抽象化した要素を系列に含めることで,API の利用方法をより明確に表現することを実現する.また,制御構造つきの系列をマイニングすることによって生じる冗長な系列を効率的に取り除く方法を提案する.提案手法の評価としてこれを実装し,19 個のOSS を対象にAPI 利用パターンを抽出する実験を行った.実験の結果,分散したコードの集約には,本手法のようなポリモーフィックな呼び出しを含むメソッドの展開が必要であり,本手法は,現実的な時間で有効なパターンを抽出できることを確認した.