5W-3

プログラムの差分情報を用いたデバッグ手法の評価実験
田原靖太 yy

寺口正義 z

松下誠 y

井上克郎 yz
大阪大学大学院基礎工学研究科
日本アイ・ビー・エム 東京基礎研究所
奈良先端科学技術大学院大学情報科学研究科

1 はじめにデバッグ作業における欠陥原因の特定を効率よく行うための手法として，が提案され，それに基づいたデバッグ支援システムの構築が行われている．
は，ソフトウェアに対して変更を行った際，変更前のプログラムは正常に動作していたが，変更を行った結果，変更していない機能に欠陥が発見された場合のデバッグ作業を支援する手法である．これを用いることにより，効率の良いデバッグを行うことが期待できる．

DMET(Debugging METhod)

DSUS(Debugging SUpport System)[1][2] DMET

DMET

DSUS

本研究では，の有効性を評価するため，を用いて実際に被験者に保守作業を行ってもらい，作業に要した時間を計測するという実験を行った．その結果，によって欠陥の原因が正しく特定された場合は，を用いることによりデバッグ時間が短縮されることを確認できた．

DMET
DMET

本稿では，正常に動作していた変更前のプログラムを基準バージョンと呼ぶことにする．なお，ここでいうバージョンとは，開発作業の進行と共に変化するプロダクトのある状態を指す．

2 デバッグ手法 DMET の概要

DMET[2]提案されたデバッグ手法
は，バージョン管理システム，テストツールの利用を前提としている．
はテスト手法，表示手法，反映手法の つからDMET

3構成されており，これらの繰り返しによって，デバッグ作業におけるテスト作業から修正作業を支援する．それぞれの手法の概要を以下に示す．
テスト手法：欠陥の原因を含むバージョン間の差分を特定する．
では，ソースコードだけではなく，実行可能ファイルもバージョン管理の対象とするため，テストのたびにコンパイルを行う必
要はない．

DMET

表示手法：特定された差分を，ソースプログラムの最新バージョン上で強調表示する．これに基づいて利用者は最新バージョン上で修正作業を行う．
反映手法：最新バージョン上で行った修正作業の内容を，過去のバージョンに反映する．これを行わなければ，以降のテスト作業を効率良く続けることができない．
デバッグ支援システム
は，バージョン管理シDSUS
ステム，テストツールに加え，DMET に基づく処理を自動的に行う機能を備えた開発環境を提供する．

3 評価実験

Program Deltay Yasutaka

Tahara,z Masayoshi

Teraguchi,y Makoto

Mat-y Katsuro Inouey Graduate School of Engineering Science, Osaka University
z Tokyo Research Laboratories, IBM Japan Graduate School of Information Science, Nara Institute of Scisushita andence and Technology

DMET

ソフトウェア保守作業におけるの有効性を評価するため，大阪大学大学院基礎工学研究科情報数理系専攻の学生人に対して 段階の実験 実験実験を行った．実験 では，被験者はソフトウェ
アに機能を追加する作業を行った．これにより，機能追加の際に欠陥が作り込まれたプログラムを収集した．
実験 では，被験者は実験 で欠陥が作り込まれたプログラムのデバッグ作業を行った．実験 では，

10B)
B

2

A

(A,AB
10人の被験者を 5 人ずつ 2 つのグループ G1(a1,...,a5),
G2(b1,...,b5) に分け，G1 の被験者のみ DMET を用いて実験を行い，2 つのグループ間でデバッグに要した時間を比較した．
準備3.2

[4]

酒屋問題
に対する仕様書と，それに対応する基準バージョンのプログラムを用意する．さらに，基準バージョンのプログラムが仕様書の通りに動作することを確認するためのテストデータを用意

A(T1, ..., T8)した．実験 においては，被験者に行ってもらう仕様変更 機能追加 を用意し，変更後のプログラムが仕様書の通りに動作することを確認するためのテストデー
タを用意した．

()(T'1, ..., T'4)

3.3
An Experimental Evaluation of the Debugging Method with概要

3.1

手順A

実験 では，まず被験者に酒屋問題の仕様書，基準バージョンのプログラムリスト，仕様書の変更を与える．被験者は，仕様書の変更を基準バージョンのプロT'1 T'4グラムに反映させ，〜のテストデータに対して正しい出力が得られた時点で終了する．

A

B

被験者全員が実験 を終了した段階で実験 に移る．実験 では，実験 での機能追加によって基準バージョンでは正常に働いていた機能に欠陥が作られたプログラムをデバッグの対象とする．

BA

B

G1

実験 では，与えられた各プログラムに対して，の被験者はの機能を利用し， の被験者はの機能を用いずにデバッグ作業を行う．具体的な手順は，まず被験者は与えられたプログラムのテストを行う．次(a1, ... ,a5) DSUS DMET
G2
(b1, ... ,b5) DSUS DMETにテスト結果に基づいてデバッグ作業を行う．作業は，〜〜の全テストデータに対して正しい出力が得られた時点で終了する．実験 では，最初のテストからデバッグの完了までに要した時間を計測する．

T1 T8, T'1 T'4
3.4

B

結果

A

実験 では，基準バージョンでは正常に働いていた機能に欠陥が作られたプログラムが 個得られた こ
れらをとする ．このうちの 個のプログ
ラムはによって特定されたバージョン間の差分に欠陥の原因が含まれていることがわかった．また，
実験 において，各被験者〜〜がの各プログラムのデバッグに要した時間に関するデー
タを表 に示す．

X,Y,Z
DMET

3X,Y 2)B((a1 a5, b1 b5) X,Y,Z1

3.5

分析・評価

DMET により強調表示される部分に欠陥の原因があるプログラム X，Y について考える．この 2 つのプ
ログラムのデバッグに要した時間の平均を見ると，G1
では 67.0 分，G2 では 163.0 分となった．この結果に対し有意水準 5%で平均値の差の検定を行ったところ，有意な差があることがわかった．したがって，DMETにより強調表示される部分に欠陥の原因がある場合は，がデバッグ作業に有効であることが確認された．

DMET

DMET
Z
G1 39.4

逆に，欠陥の原因がにより強調表示される部分にないプログラム について，デバッグに要した時間の平均を見ると， では分， では分と，を利用しない方が平均時間は短くなった．
また， つのプログラムのデバッグに要した平均時間は，
では分，では分となった．平G2したものと考えられる．

DMET

DMET

ここでは，を用いた場合，を用いない場合に比べてプログラム のデバッグに時間がかかっ

Z

DMET

Z

DMET

Z

DSUS

DMET

5 まとめ
本研究では，プログラムの差分情報を利用したデバッグ手法が有効であるかを調べるための実験を行った．その結果，によって特定されたバージョン間の差分に欠陥の原因が含まれる場合は，がデバッグ作業に有効であることが確認できた．今後の課題としては，デバッグ対象プログラムの数を増やすことで，によって欠陥の原因を正しく特定できる割合を実験的に調査することが挙げられる．

DMET

DMETDMETDMET1:B(表実験 の結果 単位：分DMET を利用するグループ G1a1a2a3a4a5
X
37665 3853
Y2559
14 1622Z6057
34 2125
合計122 122 113 75 100
XY の和626579 5475)

DMET を利用しないグループ G2b1b2b3b4b5
X66
20 117 5245Y171
87 120 17 120Z
2051558
合計
257 112 252 74 173
XY の和
237 107 237 69 165

平均39.8
27.2
39.4
106.4
67.0
平均60.0
103.0
10.6
173.6
163.0

10.6

DMET3
G1 106.4 G2 173.6
均時間を見ると G1 の方が G2 よりもデバッグに要した時間が 67.2 分短くなっているが，平均値の差の検定を有意水準 5%で行った結果，有意な差を見ることができなかった．これは，プログラム Z での結果が影響4 考察た原因について考える．
プログラム の欠陥の原因は，変数の初期化忘れという，が想定していない「変更を加えなかったことによる欠陥」であった．このため，はプログ
ラム の欠陥の原因を正しく特定することができなかった．しかし，このような場合でも，はによって定められたアルゴリズムに従って特定された範囲を表示するため，被験者が混乱してデバッグ時間の増大につながったと考えられる．

参考文献[1] 寺口正義：\バージョン間の差分を利用したデバッグ支援システムの構築"，大阪大学大学院基礎工学研究科修士学位論文, 2000.2.
[2] 寺口正義，松下誠，井上克郎：\バージョン間の差分を利用したデバグ手法の提案", 電子情報通信学会技術研
究報告 SS99-52, pp.17-24, 2000.1.
[3] 田原 靖太, \バージョン間の差分を利用したデバッグ手法の実験的評価," 大阪大学基礎工学部情報科学科 特別研究報告, 2000.3.
[4] 山崎利治：\共通問題によるプログラム設計技法解説"，
情報処理学会誌，25,9,p.934,1984.