• 研究課題をさがす
  • 研究者をさがす
  • KAKENの使い方
  1. 課題ページに戻る

2015 年度 実施状況報告書

ソフトウェアの欠陥発見のための逆方向シミュレーション

研究課題

研究課題/領域番号 15K11989
研究機関山形大学

研究代表者

平中 幸雄  山形大学, 理工学研究科, 教授 (40134465)

研究期間 (年度) 2015-04-01 – 2018-03-31
キーワード逆方向シミュレーション / ソフトウェア安全性検証 / 数値範囲分割 / ケース分岐シミュレーション / GPU並列処理 / MapReduce分散処理
研究実績の概要

ソフトウェアの安全性検証のため、バグや想定外動作を網羅的に検出する方法が望まれる。通常の入力条件に対するテストでは、検出できない可能性が残り、網羅的検出には条件数を無限大に増やす必要がある。そこで本研究では、異常等を意味する結果から、ソフトウェアを逆に辿って、それが発生する条件を探る方法を逆方向シミュレーションと呼び、その基本方式の確立と実現をはかることを目的としている。具体的に、静的に制御フローが確定しているJava言語のプログラムを検証対象としている。
初年度は、逆方向シミュレーションに必要な機能要素の実現と、処理時間を短縮するための並列分散処理の活用を中心的内容とした。まず、(1)Javaバイトコードごとの機能作成、(2)シミュレーション実行管理機能の実現、(3)順方向シミュレーションによる各機能の動作確認を行い、最後に(4)逆方向での分岐処理を含めたシミュレーション動作の実現を行った。
また、次年度に実施予定であったシミュレーションの高速化を実現する方法の検討も、先行して開始した。具体的には、GPUの並列処理ハードウェアを使用する方法と、多数のPCでMapReduce方式による分散処理を利用することを、それぞれプログラムを作成しながら検討した。いずれも、比較的簡単な逆方向シミュレーションで実現可能なFIRデコンボリューションで試みたが、扱う数値範囲の分割数と処理時間の関係に関する知見と効率化のアイデアが得られた。

現在までの達成度 (区分)
現在までの達成度 (区分)

2: おおむね順調に進展している

理由

本研究の目標は、Javaバイトコードを対象に、逆方向シミュレーションに必要な要素機能を作成し、プログラムの逆実行を実現すること、その上で無限ループや入力値不使用などの欠陥要因が発見可能なシミュレータを実現することである。
最初のシミュレーション要素機能については、整数処理に必要な機械語要素と最低限の制御要素について実現し、簡単なプログラムに対する逆方向シミュレーションを実現できた。無限ループ等の検出は今後の課題であるが、シミュレーション実行上の最大課題は、精度を高くして有効な結果を得るための変数数値範囲の細分化や、ループ逆流処理のために大量の分岐処理を行う必要があることである。その解決のための並列分散処理や効率化の工夫についても、進歩があった。

今後の研究の推進方策

検証可能なプログラムの範囲を拡大していきながら、機能上の課題を解決し、逆方向シミュレーションに必要となる機能、管理機能を整備していく。また、GPUによる並列処理、PC群による分散処理を組み合わせて、実際的な処理時間内に実行できることを目指す。また、外部の研究者の評価、協力を得ながら、実用的な方法として確立していきたい。

  • 研究成果

    (1件)

すべて 2015

すべて 学会発表 (1件)

  • [学会発表] Javaプログラムの逆方向解析2015

    • 著者名/発表者名
      稲船哲也,平中幸雄,武田利浩
    • 学会等名
      第14回情報科学技術フォーラム
    • 発表場所
      愛媛大学
    • 年月日
      2015-09-15 – 2015-09-15

URL: 

公開日: 2017-01-06  

サービス概要 検索マニュアル よくある質問 お知らせ 利用規程 科研費による研究の帰属

Powered by NII kakenhi