本研究では,ソフトウェアの修正および外部環境の変化に伴なう進化にかかる開発コストを削減することを目的とし,開発対象のソフトウェア,そのソフトウェアで利用している外部ライブラリやその他のオープンソースソフトウェアの開発履歴を基に,機械学習によってソフトウェアの自動修正および進化推薦する仮想開発者を継続的に進化させるためのフレームワークを構築する。また本フレームワークを用いることによって,ソフトウェアの修正や更新を自動化することによって,ソ フトウェアの開発コストの削減を目指す. 本年度は,昨年度提案した API 利用パターンを用いた自動プログラム修正手法に関して,パターン検索の予備評価を行った.API 利用パターンを用いた自動プログラム修正は,API の典型的な呼び出し列を表現する API 利用パターンに従うように修正することで,API の誤った利用方法に起因するバグを自動修正する手法である.この手法では,事前に準備された API 利用パターンのデータベースから,バグの原因箇所周辺における API の利用方法と類似する API 利用パターンを検索し,見つかったパターンに合うようにソースコードを修正する.本手法における API 利用パターン検索に用いる類似度の定義が適切かを,既存のソフトウェアの修正履歴のうち,メソッド呼び出し1つを追加することで対応可能な不具合を利用し,修正後のソースコードから API 利用パターンDBを構築し,修正前のソースコードのバグパターンをキーとして DB を検索した際の修正後ソースコードに対応するパターンの類似度を計測することによって評価した. その結果,正解パターンは類似度が高くなること,正解ではないパターンを誤検出することがわかった.また,正解パターンを含むパターンデータベースを構築することが重要であるが,それを実現することが困難であることがわかった.
|