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

2017 年度 実施状況報告書

ブレイクポイントを用いないデバッグを可能とする捜査地図デバッガの実現

研究課題

研究課題/領域番号 15K12009
研究機関奈良先端科学技術大学院大学

研究代表者

久米 出  奈良先端科学技術大学院大学, 情報科学研究科, 助手 (10301285)

研究期間 (年度) 2015-04-01 – 2019-03-31
キーワードプログラム実行の地図化 / デバッガ / GUI / 内面分析 / トレース / 動的解析 / ソフトウェア工学
研究実績の概要

デバッグ時に於ける診断者の作業と発話記録から内面の分析を実施し、内面分析の結果に基づいて既存のデバッガの機能やユーザインタフェイスに関する問題点を洗い出した。さらにデバッガを評価する新しい実験手法を考案した。この実験手法では実験のために用意したプログラムの実行が失敗する過程をデータ化する事によって、被検者の内面的な思考の適切性を評価する事が可能となる。これによってデバッガの支援の効力がより詳細に評価出来るようになる事が期待される。本研究では特に Java プログラムのデバッガを対象としている。
問題点の洗い出しに従ってデバッガの機能とユーザインタフェイスの仕様を決定した。本デバッガはプログラムの実行履歴を用いる事によって従来のデバッガの機能的な制約を解消する。また「地図化」と我々が呼ぶ可視化表現を用いてプログラム実行を抽象化する。
従来の Java デバッガでは行単位でプログラムの実行を制御せざるを得ないため、命令文中の式の値等細かい粒度での実行の追跡が困難であった。地図化によってより粒度の細かい命令文や式の単位で実行を表示する事が可能となる。さらに個別の命令文や式に対して従来のデバッガよりも多様な注意喚起情報の表示や操作を受け付ける事が可能になる。これにより診断作業の大幅な効率化が期待出来る。
我々のインタフェイスを実装するためには、プログラムで実行されるバイトコード命令を行単位ではなく、Java 文法で定義された命令文や式の単位で対応付ける必要がある。しかしながら、こうした対応付けはコンパイラによるバイトコード生成に大きく依存する事が避けられない。そのためデバッガ単独による問題解決は困難であるとされている。この古典的な問題の解決は本研究のみならず多くのデバッガの利便性を大きく向上させる契機となると確信するものである。(この問題解決のために本研究の期間は一年延長されている)

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

4: 遅れている

理由

研究を遂行する上で不可欠であるが解決が困難である技術的問題に遭遇し、それによって研究の進捗に大きな影響を受けた。この技術的問題とはソースコード上でプログラムの実行を対応付ける問題である。一般にこの対応付けはコンパイラの提供する情報に大きく依存しており、それが対応付けを実現する際の大きな制約となっている。よってこの制約を越えた表現の実装は極めて困難であり、究極的にはデバッガを単独ではなくコンパイラと併わせて開発するしかないとされている。(Jonathan B. Rosenberg, "How Debuggers Work: Algorithms, Data Structures, and Architecture", John Wiley & Sons, Inc., 1996)
本研究を遂行する中で二つの理由で Java コンパイラが課す制約を越える技術が必要である事が明らかとなった。一つ目は上記【研究実績の概要】で説明した「地図化」によるプログラム実行の表現を実現するためである。二つ目はデバッガの評価実験で、被検者の内面的な思考の適切性を評価するために用いるデータを生成するためである。後者のデータは不具合を含むプログラムとそれを修正したプログラムのソースコードと実行の差分(障害が発生するものと正常に実行が終了する過程の違い)の対応付けが必要となる。ここで Java コンパイラが課す制約がこの対応付けの障害となる事が明らかになったのである。
Java コンパイラはソースコードに直接関連する情報として(ソースコードの)ファイル名、行番号、変数名しか提供しない。これらの情報は上記の二つの問題の解決には不十分である。よって現実的に実施可能な方法でこの問題を解決する事が必要となったのである。

今後の研究の推進方策

【現在までの進捗状況】で述べたように、我々は Java コンパイラが課す制約を越えてプログラム実行とソースコードを対応付ける技術を開発する事が必要となった。限られた時間と労力で問題を解決するためには、例えば我々が必要とする情報を提供するように Java コンパイラを改良する、というような「根本的な」解決は現実的ではない。コンパイラへの依存は避けられなくとも、デバッガの評価実験を可能とする程度でかつ現実的な時間と労力で可能な解決手法が必要である。
平成29年度に我々は、現実的な解決手法の糸口を探るべく多数の Java プログラムをコンパイルし、生成されたバイトコードを調査した。調査に必要なプログラムは自作した。こうした調査の結果と過去のトレース生成技術の開発で培った我々の知見より、現実的な解決手法の実現する見込みを得るに至った。これに従って研究期間を一年延長し、この問題を解決した上でデバッガとその評価手法の開発を再開する予定である。
我々が実現しようとする手法は Java のソースコードの変換と動的解析を組み合わせたものである。これらは上記のバイトコード調査に基づいており、そのため発見的手法であると共にコンパイラへの依存が避けられないという性質を有している。
本年度では本手法の実装を進めると共に実用規模のJava プログラムに適用する事によってその有効性を評価する予定である。時間と労力の制約より対応付けの完全性を求めないが、対応付けが失敗した事例を集めて評価する仕組みを実装に組込む予定である。

次年度使用額が生じた理由

【今後の研究の推進方策】で述べたように、本研究はデバッガの開発の遅延のために一年間研究期間を延長している。開発が遅延したために昨年度予定していた実験のうち、地図化を実装したデバッガを利用したものは実施出来なかった。これらの実験とその成果発表のための経費が次年度使用額として生じた次第である。
今年度は引き続き開発を進め、実験の実施を目指す。その進捗によっては開発の一部を外部に委託する事も検討する。

  • 研究成果

    (4件)

すべて 2017

すべて 雑誌論文 (1件) (うち査読あり 1件) 学会発表 (3件)

  • [雑誌論文] A Graph Partitioning Approach for Efficient Dependency Analysis using a Graph Database System2017

    • 著者名/発表者名
      Kazuma Kusu, Izuru Kume, and Kenji Hatano
    • 雑誌名

      International Journal on Advances in Networks and Services

      巻: vol. 10, no. 3&4 ページ: 82-91

    • 査読あり
  • [学会発表] デバッグ作業者の内面分析支援を目的とした障害発生過程の実体化手法2017

    • 著者名/発表者名
      久米 出, 中村 匡秀, 新田 直也, 柴山 悦哉
    • 学会等名
      日本ソフトウェア科学会大会 第34回大会
  • [学会発表] Analyzing execution traces of failed programs for materializing chain of infection2017

    • 著者名/発表者名
      Izuru Kume, Masahide Nakamura, Naoya Nitta, Etsuya Shibayama
    • 学会等名
      2nd International Conference on Big Data, Cloud Computing, and Data Science Engineering (BCD 2017)
  • [学会発表] A Node Access Frequency based Graph Partitioning Technique for Efficient Dynamic Dependency Analysis2017

    • 著者名/発表者名
      Kazuma Kusu, Izuru Kume, Kenji Hatano
    • 学会等名
      The Ninth International Conferences on Advances in Multimedia (MMEDIA 2017)

URL: 

公開日: 2018-12-17  

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

Powered by NII kakenhi