2017 Fiscal Year Research-status Report
ブレイクポイントを用いないデバッグを可能とする捜査地図デバッガの実現
Project/Area Number |
15K12009
|
Research Institution | Nara Institute of Science and Technology |
Principal Investigator |
久米 出 奈良先端科学技術大学院大学, 情報科学研究科, 助手 (10301285)
|
Project Period (FY) |
2015-04-01 – 2019-03-31
|
Keywords | プログラム実行の地図化 / デバッガ / GUI / 内面分析 / トレース / 動的解析 / ソフトウェア工学 |
Outline of Annual Research Achievements |
デバッグ時に於ける診断者の作業と発話記録から内面の分析を実施し、内面分析の結果に基づいて既存のデバッガの機能やユーザインタフェイスに関する問題点を洗い出した。さらにデバッガを評価する新しい実験手法を考案した。この実験手法では実験のために用意したプログラムの実行が失敗する過程をデータ化する事によって、被検者の内面的な思考の適切性を評価する事が可能となる。これによってデバッガの支援の効力がより詳細に評価出来るようになる事が期待される。本研究では特に Java プログラムのデバッガを対象としている。 問題点の洗い出しに従ってデバッガの機能とユーザインタフェイスの仕様を決定した。本デバッガはプログラムの実行履歴を用いる事によって従来のデバッガの機能的な制約を解消する。また「地図化」と我々が呼ぶ可視化表現を用いてプログラム実行を抽象化する。 従来の Java デバッガでは行単位でプログラムの実行を制御せざるを得ないため、命令文中の式の値等細かい粒度での実行の追跡が困難であった。地図化によってより粒度の細かい命令文や式の単位で実行を表示する事が可能となる。さらに個別の命令文や式に対して従来のデバッガよりも多様な注意喚起情報の表示や操作を受け付ける事が可能になる。これにより診断作業の大幅な効率化が期待出来る。 我々のインタフェイスを実装するためには、プログラムで実行されるバイトコード命令を行単位ではなく、Java 文法で定義された命令文や式の単位で対応付ける必要がある。しかしながら、こうした対応付けはコンパイラによるバイトコード生成に大きく依存する事が避けられない。そのためデバッガ単独による問題解決は困難であるとされている。この古典的な問題の解決は本研究のみならず多くのデバッガの利便性を大きく向上させる契機となると確信するものである。(この問題解決のために本研究の期間は一年延長されている)
|
Current Status of Research Progress |
Current Status of Research Progress
4: Progress in research has been delayed.
Reason
研究を遂行する上で不可欠であるが解決が困難である技術的問題に遭遇し、それによって研究の進捗に大きな影響を受けた。この技術的問題とはソースコード上でプログラムの実行を対応付ける問題である。一般にこの対応付けはコンパイラの提供する情報に大きく依存しており、それが対応付けを実現する際の大きな制約となっている。よってこの制約を越えた表現の実装は極めて困難であり、究極的にはデバッガを単独ではなくコンパイラと併わせて開発するしかないとされている。(Jonathan B. Rosenberg, "How Debuggers Work: Algorithms, Data Structures, and Architecture", John Wiley & Sons, Inc., 1996) 本研究を遂行する中で二つの理由で Java コンパイラが課す制約を越える技術が必要である事が明らかとなった。一つ目は上記【研究実績の概要】で説明した「地図化」によるプログラム実行の表現を実現するためである。二つ目はデバッガの評価実験で、被検者の内面的な思考の適切性を評価するために用いるデータを生成するためである。後者のデータは不具合を含むプログラムとそれを修正したプログラムのソースコードと実行の差分(障害が発生するものと正常に実行が終了する過程の違い)の対応付けが必要となる。ここで Java コンパイラが課す制約がこの対応付けの障害となる事が明らかになったのである。 Java コンパイラはソースコードに直接関連する情報として(ソースコードの)ファイル名、行番号、変数名しか提供しない。これらの情報は上記の二つの問題の解決には不十分である。よって現実的に実施可能な方法でこの問題を解決する事が必要となったのである。
|
Strategy for Future Research Activity |
【現在までの進捗状況】で述べたように、我々は Java コンパイラが課す制約を越えてプログラム実行とソースコードを対応付ける技術を開発する事が必要となった。限られた時間と労力で問題を解決するためには、例えば我々が必要とする情報を提供するように Java コンパイラを改良する、というような「根本的な」解決は現実的ではない。コンパイラへの依存は避けられなくとも、デバッガの評価実験を可能とする程度でかつ現実的な時間と労力で可能な解決手法が必要である。 平成29年度に我々は、現実的な解決手法の糸口を探るべく多数の Java プログラムをコンパイルし、生成されたバイトコードを調査した。調査に必要なプログラムは自作した。こうした調査の結果と過去のトレース生成技術の開発で培った我々の知見より、現実的な解決手法の実現する見込みを得るに至った。これに従って研究期間を一年延長し、この問題を解決した上でデバッガとその評価手法の開発を再開する予定である。 我々が実現しようとする手法は Java のソースコードの変換と動的解析を組み合わせたものである。これらは上記のバイトコード調査に基づいており、そのため発見的手法であると共にコンパイラへの依存が避けられないという性質を有している。 本年度では本手法の実装を進めると共に実用規模のJava プログラムに適用する事によってその有効性を評価する予定である。時間と労力の制約より対応付けの完全性を求めないが、対応付けが失敗した事例を集めて評価する仕組みを実装に組込む予定である。
|
Causes of Carryover |
【今後の研究の推進方策】で述べたように、本研究はデバッガの開発の遅延のために一年間研究期間を延長している。開発が遅延したために昨年度予定していた実験のうち、地図化を実装したデバッガを利用したものは実施出来なかった。これらの実験とその成果発表のための経費が次年度使用額として生じた次第である。 今年度は引き続き開発を進め、実験の実施を目指す。その進捗によっては開発の一部を外部に委託する事も検討する。
|