研究課題/領域番号 |
25330073
|
研究種目 |
基盤研究(C)
|
研究機関 | 関西学院大学 |
研究代表者 |
石浦 菜岐佐 関西学院大学, 理工学部, 教授 (60193265)
|
研究期間 (年度) |
2013-04-01 – 2016-03-31
|
キーワード | Cコンパイラ / 算術最適化 / ランダムテスト / 期待値計算 / 不具合検出 / アセンブリの記号実行 / 二分決定グラフ / テストスイート |
研究概要 |
今年度は,期待値計算に基づくCコンパイラのランダムテスト,コードの記号実行に基づくテスト,およびテストスイートtestgen2の新規格対応の3点について研究を行った. 1.期待値計算に基づくランダムテスト生成に関しては,まず,これまでに開発したランダムテスト手法に対して,一つの式中の演算子の数を5,000程度まで増やすとともに,一つのプログラム中の式数を5,000程度にまで増やせる手法を開発した.これによって不具合検出能力を格段に向上させ,従来手法では一つも不具合を検出できなかったGCCの4.5以上のバージョンに対して多くの不具合を検出することができた.また,最新のバージョンである4.8,4.9に対しても不具合を検出することに成功し,今年度には7件の不具合をGCCプロジェクトに報告した.さらに,これまで従来のランダムテストでは難しかった浮動小数点演算を扱う手法を開発し,これによってGCCの浮動小数点演算に関する不具合を検出することもできた. これと並行して,C言語の関数呼び出しをターゲットとするランダムテストシステムの開発も行い,このシステムでもGCCの最新版における不具合を検出することに成功した.さらに,新しいランダムテストの手法として,未定義処理のない状態を維持しながら構文規則を適用してプログラムを生成する方式の開発を進め,その試作版を実装した. 2.コードの記号実行に基づくテストに関しては,MIPS用コンパイラを対象に,変数だけでなく定数を混在させる,および複数の式が扱えるようにするという拡張を行った.また,式中の演算子数を制御できるようにする実装も行った.しかし,現時点では,この手法によって新たな不具合を検出するには至っていない. 3.テストスイートtestgen2の新規格対応に関しては,C89の新たな型に対応したテストを追加し,テストスイートを完成させた.
|
現在までの達成度 (区分) |
現在までの達成度 (区分)
2: おおむね順調に進展している
理由
期待値計算に基づくCコンパイラのランダムテストに関しては, 当初の計画以上にシステムの開発が進み,しかも実際に最新版のGCCの不具合を検出するという重要な成果をあげることができた.また,当初は試行だけの予定であった関数呼び出しのテストに関しても,予定以上に進捗があり,かつ成果をあげることができた. テストスイートtestgen2に関しても,計画通りにC89規格に対応したテストスイートを完成させることができている.しかし,C90規格への対応を見据えて,一つの記述から2つのテストスイートを生成する枠組みについては,アイデアを実現に結びつけるには至らなかった. 構文規則を適用してプログラムを生成する新たなテスト生成手法,およびコードの記号実行に基づくテスト手法に関しては,いずれも計画通りに手法の開発と試作システムの実装を行うことができたが,実験の結果,従来法よりも優れた検出能力を得ることはできていない.
|
今後の研究の推進方策 |
期待値計算に基づくCコンパイラのランダムテストに関しては,今後も当初計画通りに順次拡張を行う.プログラムの生成アルゴリズムよりも最小化のアルゴリズムの開発が困難であることがわかってきたため,後者をできるだけ容易に開発する方法についての研究を優先させることについても検討する. 構文規則を適用してプログラムを生成する新たなテスト生成法に関しては,ランダムテストの適用範囲を拡張する際には必ず必要になると考えているため,短期的には成果が得られなくても整備を続ける予定である.一方,コードの記号実行に基づく方法は,消費する計算時間に対して効果が得にくいことが判明してきたため,この手法の研究を凍結して別の手法の研究に注力することも検討する. テストスイートの開発に関しては,C89規格のテストスイートの拡張でC99規格のテストスイートを開発する手法ではうまく行かないことがわかってきたため,まず,C99規格のテストスイートを単独で開発する効率的な手法について検討を進めることとする.
|
次年度の研究費の使用計画 |
本年度は現存するテストスイートの分析と整理の作業を進める計画で, これに謝金が発生する見込みだったが, ランダムテストの研究が進展し, こちらの進捗を優先することにしたため, 次年度使用額が生じた. 次年度にテストスイートの分析と整理の作業を進めるとともに, ランダムテストにより生成されるテストプログラムの分析やコード整理作業の進捗に使用する計画である.
|