プログラムの差分情報を用いた デバッグ手法の評価実験 田原靖太† 寺口正義‡ 松下誠† 井上克郎†* †大阪大学大学院基礎工学研究科 ‡日本アイ・ビー・エム 東京基礎研究所 *奈良先端科学技術大学院大学情報科学研究科 研究の背景 ソフトウェア保守作業 → 既存のソフトウェアに対し て様々な変更を加える 変更していない機能に欠陥が生じた場合, そのデバッグ作業は容易ではない プログラムの差分情報を利用したデバッグ手法 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によって正しく欠陥の原因を特定できる 割合を調査
© Copyright 2025 ExpyDoc