5C-05

ログラムスライス 基づいたデバッグ支援システムの評価のための追証実験
芦田佳行

西松顯

楠本真二

井上克郎

大阪大学大学院基礎工学研究科

1 まえがき2.1

バッグ おけるフォ ルト位置特定を効率良く行うための手法としてプログラムスライス [3] が提案されている．プログラムスライスとは，プログラム内のある文のある変数 (スライシング基準) に影響を与える全ての文の集合であり，プログラムスライスを利用することでプログラムの参照範囲を限定できる．これまでに我々はプログラムスライスがフォールト位置特定に有効であることを実験的に評価した [1] ．具体的には，被験者をプログラムスライスを利用する者と利用しない者に分けてフォールト位置特定を行い，それに要した時間を比較するというものであった．本研究では，この実験の被験者数を増やし, より正確な評価を試みた．
1.1

デバッグ支援ツル

実験は大阪大学基礎工学部情報科学科の学生 6 人に対して行った．6 人の被験者は，2 つのグループ G1 とG2 にそれぞれ 3 人ずつ分け，G1 に含まれる被験者をA1,A2,A3 ，G2 に含まれる被験者を B1,B2,B3 と呼ぶ．
2.2

(F c1) 通常のデバッガと同様にプログラムのス
テップ実行，変数の参照，ブレークポイントの設定などが行える．
(F c2) 与えられたスライシング基準から静的スライスを抽出する．
対象となる言語は，次のような仕様を持つ Pascal のサブセットである．(1) 文として，代入文，条件文，繰り返し文，手続き呼出文，begin{end で囲まれる複合文を扱う．(2) 手続きの再帰呼び出しも扱う．手続きの引数には，値渡しと変数渡しの２種類がある．(3) 変数のデータ型はスカラー型のみでポインタ型は扱わない．
具体的には整数型，文字型，論理型およびそれらを要素に持つ配列型である．

実際の手順は次の通りである．
Step0

An Additional Experiment for evaluating the usefulness of debugging system using program slicing technique
Shinji Kusumoto andKatsuro Inoue
Graduate School of Engineering Science, Osaka University, 1-3
Machikaneyama, Toyonaka, Osaka, 560-8531 JAPAN.

:i = 1 とする．

:data1:i を用いてプログラム P 1:i のフォールト位置の特定を行う．
Step2 :特定したフォールトとその位置を実験監督者に申告する．
正しい場合は Step3 へ．
間違った場合には，Step1 へ戻る．
Step1

Step3i

文献 [1] で行った実験について述べる．実験の目的は，デバッグ支援ツールを使い，プログラムスライスのフォールト位置特定に対する有効性を確認することである．

Akira Nishimatsu,

実験方法

G1 に属する被験者は，P 1:1〜P 1:8 に対してツールの (F c1) と (F c2) の両方を使ってフォールト位置を特定する．G2 に属する被験者は，P 1:1〜P 1:8 に対してF c1 のみを使ってフォールト位置を特定する．

2 前回の実験

Yoshiyuki Ashida,対象プログラム

酒屋問題 [4] に対するプログラム (P 1) をデバッグの対象とする．P 1 に対して F 1:1〜F 1:8 の 8 つのフォールトを準備し，それを用いて P 1:1〜P 1:8 の 8 つのプログラムを作成した．P 1:i は F 1:i〜F 1:8 のフォールトを含んでいる．また，data1:1〜data1:8 の 8 つのテストデータがあり，data1:i を用いると F 1:i のみを発見できる．
2.3

デバッグ支援ツール [2] は大きく分けて 2 つの機能(F c1,F c2) を持つ．

被験者

2.4

:i == 8 の場合実験終了．i < 8 の場合，= i + 1 として Step1 へ戻る．

分析

G1 が全てのフォールト位置特定に要した時間は平均で 122 分 (A1:119 分，A2:128 分，A3:120 分) であり，G2 が全てのフォールト位置特定に要した時間は平均で 165 分 (B1:154 分，B2:175 分，B3:166 分) であった．このデータに対して有意水準 1%で平均値の差の検定を行うと有意な差が見られた．
また，フォールトごとに平均値の差を調べると，F 1:3 ，

1:5 ，F 1:6 の 3 つのフォールトで特に有意な差が見られた．
F

3 追証実験
3.1

実験の目的

前回の実験では，スライスを利用したグループの方がフォールト位置の特定に要した時間は少ないという結果が得られた．しかし，サンプル数は 6 人と少ないものであった．そこで本研究では，新たな被験者に同じ実験を行ってもらい，そこで得られたデータと前回の実験データを合わせて分析し，より正確な評価を行うことを目的とする．
3.2

分析

今回の実験データを前回の実験データに追加して評価する．G1 の実験データを表 1 に，G2 の実験データを表 2 にそれぞれ示す．

G1 が全てのフォールト位置特定に要した時間は平均115 分 (A1:119 分，A2:128 分，A3:120 分，A'1:127 分，A'2:102 分，A'3:93 分) ，G2 は平均 159 分 (B1:154 分，B2:175 分，B3:166 分，B'1:151 分，B'2:169 分，B'3:140分) であった．このデータに対して有意水準 1%で平均値の差の検定を行うと有意な差が見られた．
各フォールトごとに平均値の差の検定を行うと，前回の実験では F 1:3 ，F 1:5 ，F 1:6 で有意な差が見られたが，これらのフォールトに関しては，今回の実験においても同様の結果が得られた．
3.4

考察

ここでは，有意な差が出たフォールト，全く差が見られなかったフォールトについて考察する．
全く差が見られなかったフォールトは F 1:4 である．
1:4 はある必要な代入文の欠如というフォールトである．文が欠如しているフォールトの場合，文があるべき場所の周辺がプログラムスライスに含まれないことがあり，その場合はプログラムスライスがあまり有効でないと考えられる．
有意な差が見られたものは F 1:3 ，F 1:5 ，F 1:6 である．F 1:5 ，F 1:6 は，誤った出力変数に対するプログラ
ムスライスを見るだけで容易にフォールトを発見できるものであった．また，F 1:3 は関数呼び出し文が欠如しているものであった．しかし，同じような処理を行F

4 まとめ
今回，プログラムスライスがフォールト位置の特定に有効であるかを調べるための追証実験を行った．その結果，プログラムスライスを利用したグループとそうでないグループでは有意な差があることが確認できた．
表 1: G1(スライス利用)

実験方法

今回の実験は大阪大学基礎工学部情報科学科の学生 6人に対して行った．6 人の被験者を 2 つのグループに分け，A'1,A'2,A'3 の 3 人の被験者を G1 に，B'1,B'2,B'3の 3 人の被験者を G2 に含める．実験の方法は前回の実験と全く同じとした．
3.3う関数が 2 つあり，その一方に文の欠如というフォールトが含まれており，出力変数に対するプログラムスライスにその 2 つの関数が含まれるため，2 つの関数を比較することで容易にフォールトを発見できた．

A1A2A3

A'1

A'2A'3

F 1:1

312617281618

F 1:28102012167

F 1:3

15151313718

F 1:4252022241321

F 1:51426

1815209

F 1:615101015118

F 1:741287125F 1:879121377total11912812012710293

表 2: G2(スライスなし)
B1B2B3B'1

B'2B'3

F 1:1

172823405518F 1:2

101812131012

F 1:3263628312031

F 1:4

271732171118

F 1:5352541152628

F 1:6172317172115

F 1:7171675136

F 1:815126131312

total

154

175166151169140

参考文献[1] 西江，神谷，楠本，井上:\プログラムスライスに基づ くデ バッグ 支援 ツールの実験的評価" ，
ソフトウェアシンポジウム 97 予稿集, pp.142147(1997).
[2] 佐藤，飯田，井上:\プログラムの依存解析に基づくデバッグ支援ツールの試作", 情報処理学会
論文誌, Vol. 37, No.4, pp.536-545(1996).
[3] Weiser, M.:\Programmers use slices when debugging", Communications of the ACM, Vol.
25, No.7, pp. 446-452(1982).
[4] 山崎利治:\共通問題によるプログラム設計技法
解説" ，情報処理学会誌，25 ，9, p.934(1984).