研究課題/領域番号 |
22K11985
|
研究種目 |
基盤研究(C)
|
配分区分 | 基金 |
応募区分 | 一般 |
審査区分 |
小区分60050:ソフトウェア関連
|
研究機関 | 立命館大学 |
研究代表者 |
丸山 勝久 立命館大学, 情報理工学部, 教授 (30330012)
|
研究分担者 |
肥後 芳樹 大阪大学, 大学院情報科学研究科, 教授 (70452414)
|
研究期間 (年度) |
2022-04-01 – 2025-03-31
|
研究課題ステータス |
交付 (2022年度)
|
配分額 *注記 |
4,290千円 (直接経費: 3,300千円、間接経費: 990千円)
2024年度: 1,430千円 (直接経費: 1,100千円、間接経費: 330千円)
2023年度: 1,430千円 (直接経費: 1,100千円、間接経費: 330千円)
2022年度: 1,430千円 (直接経費: 1,100千円、間接経費: 330千円)
|
キーワード | マージ競合 / 版管理 / 自動プログラム修正 / ソフトウェア保守と進化 / ソフトウェア開発環境 / プログラム解析 / 並行開発 |
研究開始時の研究の概要 |
本研究の目的は、自動プログラム修正技術を応用することで、人間にとって面倒な振舞い競合の解決を機械によって自動的に実行できることを立証し、それに基づく競合解決システムを構築することである。そのために、テストケースの一部を探索的に除外しながら修正を試みる手法を確立する。さらに、実際に人間が行った競合解決の編集履歴を活用することで、競合解決の成功率の向上と時間短縮を達成する。
|
研究実績の概要 |
バグを含むプログラムとその振る舞いを検査するテストケースを与えて、バグを取り除いたソースコードを出力する自動プログラム修正技術を応用することで、独立に変更されたプログラムのソースコードをマージする際に発生する競合を自動的に解決する仕組みを確立し、それを実現するツールを構築する。2022年度は、主に2つの研究項目を実施した。 (1)テストケースをオラクルとして用いる探索ベースの自動プログラム修正システムは、与えられたすべてのテストケースに成功するプログラムを出力するだけである。このため、可読性や信頼性の観点から開発者にとって、受け入れられない修正プログラムが出力されることが発生する。このような修正プログラムを自動マージ結果として提供しても、開発者がそのプログラムをそのまま受け入れる可能性はきわめて低い。そこで、本研究で利用する遺伝的アルゴリズムに基づく自動プログラム修正システムにおいて、開発者が受け入れ可能なプログラムがどのような状況において出力されるのかを明らかにすることを目的とした実証的研究を行った。 (2)自動マージによって出力されるプログラムの振る舞いを検査するテストケースを選択するためには、競合する変更差分がマージ対象のソースコードやテストコードに対して影響を与える範囲を把握する必要がある。従来の静的解析ツールは、オブジェクト指向プログラムのソースコードに対する依存関係解析の能力が十分でなく、影響波及範囲を正確に把握することが困難であった。そこで、メソッドをまたがるデータフロー、動的束縛を伴うメソッド呼び出し、非構造化プログラミングに対応した、Java言語のソースコード向けのツールプラットフォームを開発した。
|
現在までの達成度 (区分) |
現在までの達成度 (区分)
2: おおむね順調に進展している
理由
2022年度の計画における研究項目は、(1)自動マージを実装したベースシステムの構築と、(2)競合する変更差分を考慮した上で除外するテストケースを推測する手法を確立することである。 研究項目(1)については、遺伝的アルゴリズムに基づく自動プログラム修正システムkGenProgを組み入れた自動マージシステムの構築を完了した。具体的には、マージ対象のソースコードに対して、競合が発生するメソッドを特定し、競合に関係する部分だけを修正対象とするようにkGenProgを改造し、マージに特化したシステムとして完成させた。また、研究項目(2)の実現に向けて、オラクルとして用いるテストケースをクラス単位ではなくメソッド単位で指定できるようにkGenProgを改造した。 研究項目(1)と(2)においてソースコードを扱う上で、従来の解析ツールで不十分な点を解決するために、従来から開発を続けているJava言語のソースコード向けの解析ツールJxPlatformの改良を行った。改良ツール(第3版)については、GitHuBで広く一般に公開した。 このように、2022年度は、ベースシステムの改善や解析ツールの改良に力を入れた。また、当初は予定していなかった、自動プログラム修正ツールの効率的な利用に関する検討を新たに実施した。その一方で、除外するテストケースを推測する手法に関する理論的な側面からの検討が不十分となった。計画の一部に不十分な点があるものの、自動マージシステムの完成に向けて開発は進んでおり、研究はおおむね順調に進展しているといえる。
|
今後の研究の推進方策 |
現時点では、kGenProgに対して2つの改造は別々に実施されている。自動マージシステムの構築という点から、今後はこれら2つの改造の統合が必要である。また、除外するテストケースを推測する手法について検討をすすめ、早急に仕組みを確立する。その上で、確立した仕組みをマージシステムに組み入れる。システムの構築が完了した後には、テストケースを除外することで開発者が受け入れ可能なマージ結果を出力できるのかどうかに関する評価実験を行い、自動マージの適用可能性と有用性を明らかにすることを目指す。 さらに、2023年度は、研究計画に基づき、実際に人間が行った競合解決時の編集履歴を収集し、競合解決パターンの整理に取り組む。当初の予定では、被験者を用意して、ソースコードに対する編集操作を収集することにしていた。その一方で、このように収集できる編集操作の数や種類は限定的である。そこで、GitHubに公開されているプロジェクトから振る舞い競合を発生させたコミットを特定し、マージ前後のソースコードから抽象構文木における差分を抽出する戦略も取り入れる。これらの差分を統計的に処理することで、競合解決パターンを自動抽出できる仕組みの確立に取り組む。
|