[学士論文] ソースコード抽象化によるAPI利用の変更パターン抽出

小林研B4の若松さんが学士特別課題研究論文(旧学士論文)を提出しました.

論文題目:ソースコード抽象化によるAPI利用の変更パターン抽出
論文概要:

近年のソフトウェア開発ではAPIを通じてライブラリを利用することが多い.しかし,APIの利用には困難が伴うことが知られている.

これらの問題を解決する手法の1つとして,APIの利用パターンを抽出する手法が提案されてきた.APIには利用する際に,メソッド呼び出しの順番や制御構造などの規則がある場合がある.API利用パターン抽出手法ではこのようなAPIの利用方法を過去に開発されたソースコードを解析することで,
ソースコードから頻出するをパターンとして抽出する.そして,APIを使用する際に適したパターンを提示することで適切なAPIの利用を支援する.これらの手法により,API利用時に発生する困難のうちドキュメントの不足やAPIの複雑さなどの問題が解決される.しかし,これらの手法ではAPIの更新により破壊的変更が入った場合に必要となるAPI利用の変更を支援することは難しい.API利用パターン抽出ではAPIの利用方法を提示するだけであるため,どのAPIを利用するよう変更すれば良いのかを知ることができない.

本研究では,ソースコードの変更履歴からAPI利用の変更パターンを抽出する手法を提案する.提案手法ではソースコードをAPI利用の特徴を読み取りやすいように抽象化し,その変更履歴からパターンを抽出することでAPI利用の変更を助けることを目指す.本研究では,従来の変更パターン抽出手法に対していくつかの拡張を行うことでこれを実現する.まず,ソースコードの抽象化をメソッド呼び出しと一部の制御構文のみを残すよう変更する.また,変更での差分に対して発生した状況を付加する.そして,API利用である可能性の低いパターンを除外するフィルターを設置する.

これらの提案手法に基づいて実装を行い,Javaのプロジェクトから実際に抽出できたパターンを分析することで各拡張の有用性の評価を行った.その結果,割合は低いもののAPI利用の変更を補助するパターンを抽出できることを確認した.また,いずれの拡張も有用なパターンの抽出に貢献していることが確認できた.