プログラムの差分情報を用いた デバッグ手法の評価実験
Download
Report
Transcript プログラムの差分情報を用いた デバッグ手法の評価実験
プログラムの差分情報を用いた
デバッグ手法の評価実験
田原靖太† 寺口正義‡ 松下誠† 井上克郎†*
†大阪大学大学院基礎工学研究科
‡日本アイ・ビー・エム 東京基礎研究所
*奈良先端科学技術大学院大学情報科学研究科
研究の背景
ソフトウェア保守作業 → 既存のソフトウェアに対し
て様々な変更を加える
変更していない機能に欠陥が生じた場合,
そのデバッグ作業は容易ではない
プログラムの差分情報を利用したデバッグ手法
DMET(Debugging METhod)の提案
DMETに基づくデバッグ支援システム
DSUS(Debugging Support System)の構築
DMET,DSUSの概略
デバッグ手法DMET
既存のソフトウェアに変更を加えた際,変更していない
機能に欠陥が生じた場合を想定
欠陥の原因となるプログラム差分を特定
デバッグ支援システムDSUS
DMETに基づいて,ソフトウェア保守における一連の
デバッグ作業を支援
DMETが特定したプログラム差分を強調表示
研究の目的
DMETが実際のソフトウェア保守作業に対して有効
であるかは評価されていない
DMETの実際のソフトウェア保守作業への有効性
を2段階の実験によって評価する
実際にソフトウェア保守作業を行い,デバッグの対象と
なるプログラムを収集
DMETを利用することでデバッグ時間が短縮されるかど
うかを調べる
デバッグ手法DMET(前提)
バージョン管理システムを利用
ソフトウェアに対する様々な変更を管理
実行可能ファイルもバージョン管理の対象
全テストに正しい動作をする基準バージョンが存在
テストツールを利用
→ テストの自動化
デバッグ手法DMET(構成)
1.テスト
開始
欠陥の原因を含むバージョン間を
特定
2.表示
1によって特定されたバージョン間の
差分を最新バージョン上で表示
全て成功
テスト
欠陥の発見
表示
3.反映
最新バージョン上での修正内容を
過去のバージョンに反映
修正
反映
DMETでは,1~3の工程を全てのテスト
に成功するまで繰り返す
終了
デバッグ支援システムDSUSの特徴
DMETが特定したプログラ
ム差分を強調表示
テスト,バージョンの登録・
取り出しをシステム内部で
行う
評価実験
実験の流れ
デバッグ対象となる欠陥を含むプログラムの収集
(仕様変更作業)・・・・・・・・・・・・・・・・・・・・・ 実験A
DSUSを用いたデバッグ作業・・・・・・・・・・・・ 実験B
準備するもの
対象プログラムと仕様書,被験者への仕様変更要求
テストデータ
• 機能追加前のプログラムに対するテストデータ
• 追加機能が正常に働いているかを検証するテストデータ
実験手順
実験A
仕様書の変更を基準バージョンのプログラムに反映
変更していない機能に欠陥が生じたプログラムを収集
実験B
被験者をDMETを利用するグループと利用しないグルー
プに分ける
実験Aで欠陥が作り込まれたプログラムをデバッグ
作業に要した時間を計測
実験Aの結果
変更していない機能に欠陥が作り込まれたプログラム
が3つ得られた(これらのプログラムをX,Y,Zとする)
そのうちX,Yの2つがDMETによって特定されたバー
ジョン間の差分に欠陥の原因があった
欠陥のあったプログラム
プログラム
バージョン数
テスト回数 特定バージョン間
X
28
25
1.3-1.4
あり
Y
91
10
1.81-1.88
あり
Z
72
70
1.1-1.46
なし
原因
実験Bの結果(1/2)
120
DMET利用なし
DMET利用あり
平 100
均
所 80
要
時 60
間
( 40
分
) 20
平均所要時間(分)
X
Y
Z
DMET利用なし
60.0
103.0
10.6
DMET利用あり
39.8
27.2
39.4
DMET特定部分に欠陥原因
があったプログラムX, Yで
作業時間が短縮
0
X
Y
プログラム
Z
実験Bの結果(2/2)
DMETによって特定された部分に欠陥の原因があったX,Yの
プログラムのデバッグに要した時間の平均値の差を検定した結
果,有意な差が見られた
DMETによって特定された差分に欠陥の原因がある場合は
DMETを用いた方が効率よくデバッグを行える
平均所要時間(分)
X,Y,Zの和
X,Yの和
DMET利用なし
60.0
103.0
DMET利用あり
39.8
27.2
考察(1/2)
プログラムZではDMET利用によって所要時間
が増加
理由
プログラムZの欠陥はDMETが想定していない事例
(必要な変更をしなかったことによって起きた欠
陥)であった
このため,DMETが欠陥原因の特定結果が正しくな
かった
正しくない結果に利用者が混乱した
考察(2/2)
特定結果が正しいかどうかをある程度予測する
ことは可能
DMETによって特定されたバージョン間とその幅を
見る
特定結果が疑わしい例
• バージョン間の幅が大きすぎる
• 基準バージョンとの差分を特定している
プログラム
バージョン数
Z
72
テスト回数 特定バージョン間
70
1.1-1.46
原因
なし
まとめ
デバッグ手法DMETは,特定したバージョン間
の差分に欠陥の原因がある場合は,実際のプロ
グラム保守作業に有効である
DMETでは想定されていない事例がある
すべての欠陥に対して正しく欠陥の原因を特定する
ことはできない
正しく特定できなかった時は,作業時間が増大
正しく特定できていないことをある程度予測できる
今後の課題
特定結果が疑わしい場合に、システムが利用者
にその旨を提示
DMETによって正しく欠陥の原因を特定できる
割合を調査