自動プログラム修正

どんな研究?

プログラムが期待通りに動作するか確認するためにテストを実装・実行しますが,テストが失敗した場合,開発者は多大な労力をかけてデバッグする必要があります.自動プログラム修正(生成・検証手法)は,(1) 欠陥のあるプログラムを変異させ修正候補を生成し,(2)修正候補が適切に欠陥を除去しているかテスト実行することで検証します.このようにして,開発者の人手を要せず,全自動で欠陥プログラムのデバックを実現します.

何がわかる?

生成・検証による自動プログラム修正手法では,(1)効果的に欠陥を除去するプログラム変異操作と(2)膨大な数の修正候補から効率的に修正プログラムを特定する探索方法を開発する必要があります.本研究では,ミューテーション解析・レポジトリマイニング・機械学習といった先端技術を応用し,実用性の高い自動プログラム修正の実現を目指しています.

研究内容

生成:ミューテーション解析では,テストの欠陥検出能力を測定するために,開発者の典型的な欠陥をプログラムに埋め込みます.この埋込操作は,欠陥除去にも利用できることが知られています.本研究では,より効果的に欠陥を除去するために,オープンソースのソフトウェアレポジトリから開発者による実際の欠陥修正をマイニングし,既存の埋込操作を再設計します.

検証:たとえ小さなプログラムでも,膨大な数の修正候補が生成される可能性があります.そこで本研究では,修正候補の検証結果から修正プログラムの情報(プログラムコードの複雑度など)を機械学習し,修正候補がテストをパスするか予測するモデルを構築します.この予測モデルを利用することで,修正候補の探索を最適化し,実用的な時間内で修正プログラムを特定します.

連絡先

前澤悠太:maezawa@nii.ac.jp