研究速報
保守評価

ロセス西松

顯y

井上

対するプ ログラムスライスの実験的楠本真二 y 正員）

克郎 y（正員）

An Experimental Evaluation of Program Slicing on Software
Maintenance Process
Akira NISHIMATSUy , Nonmember, Shinji KUSUMOTOy , andKatsuro INOUEy , Members
y 大阪大学 大学院基礎工学研究科，豊中市

Graduate School of Engineering Science, Osaka University,
Toyonaka-shi, 560-8531 Japan

あらまし 本論文

はログラムスライスが実際のP1.1，P1.2，S2 に対応する 2 種類のプログラムを，そP2.1，P2.2 とする)．また，被験者 6 人を 2 つのグループ G1 と G2 に分ける．まず，G1 の被験者 (A1 ，A2，A3) が P1.1 および P1.2 を，G2(B1，B2，B3) の被験者が P2.1 および P2.2 を，それぞれスライスを用れぞれいずに保守作業を行う．次に，被験者に対してスライスの講義を行ない，実際にスライスの保守への適用例を示す事で，被験者のスライスへの理解を深める．そG1 の被験者が P2.1 及び P2.2 を，G2 の被験者
P1.1 及び P1.2 を，それぞれスライスを用いて保守作業を行う．上記のように被験者は各問題に対して 2回，全体では計 4 回の保守作業を行う．

して，が表1 実 験 概 要
Table 1 Overview of experiment

保守作業に有効であるかどうかを実験的に評価した．
実験の結果，プログラムスライスを用いた場合の方が，G1(3 人)プログラムスライスを用いない場合よりも効率よく保Exp1.1

Exp1.2

酒屋問題

予約問題

守作業が行えることが確認できた．
キワ ド

適用実験 1

プログラムスライス，保守プロセス，1.

ソフトウェア開発におけるコストの大部分は，テスト，デバッグと保守プロセスに費されている．保守プ
2. 2

ロセスの主な時間はプログ ラム理解の時間と指摘されている[6]．そのためプログラム理解を支援する方法の開発が重要となっている．プログラム理解を支援するための方法の一つとして，プログ ラムスラ イス(Program Slice，スライスと略す) を利用した手法が提案されている．スライスを用いることにより，プログラム中で変更を行うべき部分をスライスとして抽出し，スライスに含まれる部分にのみ注目することで，プログラム理解を効率良く行うことが期待される．
本論文では，文献()[3] で開発したスライシングツー

ル ツールと呼ぶ を用いて，プログラムスライスが実際の保守プロセスに有効であるかどうかを実験的に評価をした（注 1 ）．
2.
2. 1

適用実験
実験概要

1
[8]に対する仕様書 (S1) とレストランの座席予約システム
問題 (予約問題と呼ぶ) に対する仕様書 (S2) と，それぞれの仕様書に対応するプログラムを 2 種類ずつ用意する (S1 に対応する 2 種類のプログラムを，それぞれ実験の概要を表 に示す．具体的には，酒屋問題(P2.1,P2.2)(スライス利用不可)

スライス

適用実験 2

まえがき(P1.1,P1.2)(スライス利用不可)

講義

プログラム理解G2(3 人)Exp2.1Exp2.2

予約システム問題

酒屋問題(P2.1,P2.2)(スライス利用）(P1.1,P1.2)(スライス利用)

保守作業

本実験における保守作業とは被験者に対してプログ
ラムと仕様書を与え，その仕様書に対する変更要求を被験者にプログラムに対して反映してもらうというものである．ここで被験者の行う作業は，まず，与えられた仕様書の内容を理解し，プログラムがどのような(機能を実現しているのかを調べ 仕様書理解[Step1])，仕様書に書かれているある機能がプログラムのどの(部分で実現されているかを対応づける 仕様書とプログラムの対応[Step2])．仕様書を理解した後に，変更部分認識として与えられた仕様書の変更内容を理解([Step3])，変更するべきプログラムの部分を認識する (変更内容とプログラム変更部分の対応 [Step4]) ．プログラム中の変更すべき部分を認識できれば，被験者は実際にプログラムを変更する (変更 [Step5]) ．Step5 では，プログラムの編集，コンパ
し 変更内容理解

イル，変更内容が正しく実現できているかを確認する
テスト，そして，仮にフォールトが存在する場合はデバッグを行う．
2. 3

実験結果

（注 ）
：

本実験で計測するデータは 2. 2節で述べた Step2〜
Step5 に要した時間である．本来，本実験ではスライイムス抽出機能の利用により保守作業が効率良く行える

1 Control Experiment[9] であり，データ収集・分析は GQM パラダ[1] を用いた．
電子情報通信学会論文誌

II年月電子情報通信学会論文誌 '96/9 Vol. J79{B{I No. 9

Step2 の部分のみの時間を計測し，評価するべきであ加とは 元の仕様書への新たな機能の追加を実現するるが，被験者がプログラムの理解，仕様書の変更の理ものである．機能変更においては，既に存在するコー

解，プログラムの変更部分の認識を正しく行ったかど

ド から変更部分をスライスとして抽出できるが，機能(うかを正確に判断できないと考えたため 例えば，非追加においては，新たにコードを追加する必要があり，常に短い時間でプログラム理解を終了した被験者が，追加されるコード はスライス抽出時には存在しないたプログラム変更に多くの時間を費した場合，被験者のめ，変更部分認識時にはスライス抽出機能は有効ではプログラム理解が不十分である事が言える ，実際にプないと考えられる．実際に各仕様変更ごとに分析する

ログラムを正しく変更する作業までの時間を計測，評と，スライス抽出機能は予約問題においては機能の追価する事にした．

加よりも機能の変更の方がより有効であることが確認)

各仕様書の変更をプログラムへ反映させるのに要し

(: )

2

3た時間 単位 分 のデータを表 と表 に示す．
表2 酒 屋 問 題
Table 2 S1(P1.1 ，P1.2)

A1A2A3
平均

B1B2
B3
平均

P1.1
75
133
188
132.0
126
11090
108.7

P1.25089301
146.0
87
60
64
70.3

125223
489
279.0
213
170
154
179.0

B1B2
B3
平均

A1A2A3
平均

P2.1
105
99
112
105.3
44
82
78
68.0

P2.2
95
106
126
109.0
37
69
74
60.0

む す

5.

表3 予 約 問 題
Table 3 S2(P2.1 ，P2.2)

合計できた．

合計

200
205
238
214.3
81151
152
128.0

び

本研究では，スライスが実際の保守作業に有効であるかどうかを実験的に評価した．実験の結果，スライスを用いた方が，スライスを用いない場合よりも効率よく保守作業が行えることが確認できた．本実験で用意したプログラムのサイズは300〜400 行程度と小規模ではあるが，スラ イスを用いることで参照範囲を45%〜52%に限定できる (この数値は被験者が実験に)おいて抽出した典型的なスライスのサイズである ．大規模なプログラムにスライス抽出技法を適用する場合においても本実験と同様に参照範囲を限定することが3.

分析・評価でき，保守作業を効率良く行えると考えられる．

2

酒屋問題の 種類の仕様変更に要した平均時間は，

G2 では 179.0 分 (B1:213 B2:170
B3:154)，スライスを利用しなかった G1 では 279.0 分(A1:125 A2:223 A3:489) となっている．平均時間を見ると G2 の方が G1 よりも仕様変更に要した時間が 100スライスを利用した分短くなっているが，有意差（注 2 ） が見られなかった．

2

予約問題の 種類の仕様変更に要した平均時間は，

G1 では 128.0 分 (A1:81 A2:151
A3:152)，スライスを利用しなかった G2 では 214.3 分(B1:200 B2:205 B3:238) となっている．平均時間を見ると G1 の方が G2 よりも仕様変更に要した時間が約86 分短くなっており，有意差も確認できた．
スライスを利用した

4.

考察

仕様変更の内容によってスライスの有効性に差が生[4]4
如 (missing statement) には有効ではないと言われている (我々は，これらの結果を [2] において実際に確認している) ．本実験では仕様書変更要求として，機能変更と機能追加の 2 種類を用意している．機能変更とはじた事について考察する．一般にスライスは，文献で分類されている 種類のフォールトのうち，文の欠元の仕様書に既にある機能を変更するもので，機能追2()（注 ）：平均値の差の検定 ウェルチの検定 を有意水準5%で行なった [5]．

,(A)(2)(課題番号: 10139223) の補助を受けて謝辞 本研究は 一部文部省科学研究費補助金特定領域研究いる.

文

献[1] Basili, V. R. ，Caldiera, G. and Rombach，H. D., Goal
Question Metric Paradigm, in John J. Marciniak,editor, Encyclopedia of Software Engineering, vol.1,
John Wiley & Sons, pp.528-532, 1994.
[2] 西松, 楠本, 井上, \フォールト位置特定におけるプログラ
ムスライスの実験的評価", 信学技報, SS98-3, May 1998.
[3] 佐藤, 飯田, 井上, \プログラムの依存解析に基づくデバッグ支援ツールの試作", 情処学論, Vol.37, No.4, pp.536-545,
1996.
[4] 下村, \変数値エラーにおける Critical Slice に基づくバグ究明戦略", 情処学論, Vol.33, No.4, pp.501{511, 1992.
[5] 芝，渡部，石塚 編: 統計用語辞典, 新曜社, 1984.
[6] Robson, D.J et al., \Approaches to Program Comprehension", J.System Software, Vol.14, No.1, 1991.
[7] Weiser, M. ，\Program Slicing", IEEE Trans. on
Soft. Eng., Vol.10, No.4, pp. 352-357, 1984.
[8] 山崎利治, \共通問題によるプログラム設計技法解説", 情処学誌, Vol.25, No.9, p.934, 1984.
[9] Zelkowitz，M. and Wallace，D. R., \Experimentalmodels for validating technology", IEEE Software,Vol.31, No.5, pp.23-31, 1998.
（平成 5 年 10 月 25 日受付，8 年 9 月 17 日再受付）