情報処理学会論文誌

Vol. 50

No. 7

1716–1724 (July 2009)

Fault-prone モジュール判別におけるテスト工数割当てとソフトウェア信頼性のモデル化
柿元健†1
本 真 佑†2

門
松

田
本

暁
健

人†2
一†2

亀
楠

井
本

靖
真

高†2
二†1

ソフトウェアの信頼性確保を目的として，fault の有無を推定するモデル（faultprone モジュール判別モデル）が数多く提案されている．しかし，どのようにテスト工数を割り当てるのかといった fault-prone モジュール判別モデルの判別結果の利用方法についての議論はほとんどされておらず，信頼性確保の効果は不明確であった．そこで，本論文では，fault の有無の判別，テスト工数の割当て，ソフトウェア信頼性の関係のモデル化を行い，TEAR（Test Eﬀort Allocation and software Reliability）
モデルを提案する．TEAR モデルにより，与えられた総テスト工数の枠内で，ソフトウェア信頼性が最大となるような（モジュールごとの）テスト工数割当ての計画立案が可能となる．TEAR モデルを用いてシミュレーションを行った結果，推定される判別精度が高い，もしくは，fault 含有モジュールが少ない場合には，fault-prone モ
ジュールに多くのテスト工数を割り当てた方がよく，推定される判別精度が低い，もしくは，fault 含有モジュールを多く含む場合には，判別結果に基づいてテスト工数を割り当てるべきではないことが分かった．

the relationship among fault-prone detection, test eﬀort allocation and software
reliability. The result of simulations based on TEAR model showed that greater
test eﬀort should be allocated for fault-prone modules when prediction accuracy was high and/or when the number of faulty modules were small. On theother hand, fault-prone module detection should not be use when prediction
accuracy was small or the number of faulty modules were large.

1. は じ め に
ソフトウェア開発プロジェクトにおいて，信頼性の向上，テスト工数削減を目的としてソフトウェアモジュールの欠陥（fault）の有無を推定する（fault-prone モジュール判別）ための研究がさかんに行われてきた11),16) ．モジュールの欠陥の有無の推定には，fault-prone
モジュール判別モデルと呼ばれる，モジュールにおいて計測された規模，複雑度，継承の深さなどのメトリクス値に基づいた，線形判別分析，ロジスティック回帰分析，ニューラル
ネット，分類木などによるモデル（fault-prone モジュール判別モデル）を用いた判別がよく用いられている3),8),9),12),14),17) ．
しかし，判別方法が数多く提案され，実データを用いた判別精度の評価も行われているにもかかわらず，その多くは開発現場で採用されていない．その原因の 1 つは，判別による実質的な効果（信頼性の向上やテスト工数削減）が不明確なためである．fault-prone モ
ジュール判別によって期待される効果は，fault を含むと判定されたモジュール（fault-prone
モジュール）に重点的にテスト工数を割り当てることで，(1) 信頼性の確保と (2) 無駄なテ

Modeling of Test Eﬀort Allocation and Software Reliability
in Fault-prone Module Detection
Takeshi Kakimoto,†1 Akito Monden,†2
Yasutaka Kamei,†2 Shinsuke Matsumoto,†2
Ken-ichi Matsumoto†2 and Shinji Kusumoto†1
Various fault-prone detection models have been proposed to improve software
reliability. However, while improvement of prediction accuracy was discussed,
there was few discussion about how the models shuld be used in the ﬁeld, i.e.
how test eﬀort should be allocated. Thus, improvement of software reliability
by fault-prone module detection was not clear. In this paper, we proposed
TEAR (Test Eﬀort Allocation and software Reliability) model that represents

1716

スト工数の削減の両立である．ただし，このような効果を推定し，テスト工数を割り当てる
方法は従来知られていないため，たとえ精度の良い判別結果が得られたとしても，その有用性の程度は不明であった．
そこで本論文では，fault-prone モジュール判別の結果に基づいたテスト工数の割当てと，割当ての結果得られるソフトウェア信頼性の関係をモデル化する．このモデルを TEAR
（Test Eﬀort Allocation and software Reliability）モデルと呼ぶ．TEAR モデルにより，与えられた総テスト工数の枠内でソフトウェア信頼性が最大となるような（モジュールごと†1 大阪大学大学院情報科学研究科
Graduate School of Information and Science Technology, Osaka University†2 奈良先端科学技術大学院大学情報科学研究科
Graduate School of Information Science, Nara Institute of Science and Technology

c 2009 Information Processing Society of Japan


1717

Fault-prone モジュール判別におけるテスト工数割当てとソフトウェア信頼性のモデル化の）テスト工数割当ての計画立案が可能となる．

TEAR モデルでは，ソフトウェア信頼性の指標として，ソフトウェアの潜在 fault 数に対ルには，non-fault-prone モジュールの r 倍のテスト工数が割り当てられる．ここで，rは 1 以上の実数である．

する発見された fault 数の割合である潜在 fault 発見率を用い，テスト工数の割当てとソフ

この条件の下では，判別精度が低いほど，実際には fault を含まないモジュールにより多トウェア信頼性の関係をモデル化する．一般に，fault-prone モジュール判別結果はある程くのテスト工数を割り当てたり，fault が存在するモジュールに少ししか工数を割り当てな度の誤りを含むため，テスト工数の割当ての決定は単純ではない．仮に，fault を含まない

かったりすることとなり，信頼性の低下を招く．

と判別されたモジュール（non-fault-prone モジュール）にいっさいテスト工数を割り当て

2.2 1 モジュールにおけるテスト工数と fault 発見のモデル

なかった場合，判別が完全に正しければ問題ないが，判別誤りを含む場合には，判別を誤っ各モジュールでは，2.1 節のテスト工数割当てによって，ある確率で fault が発見される．

たモジュールの fault は発見されないためソフトウェアの信頼性の低下を招くこととなる．

一般に，モジュールに fault が含まれている場合，より多くのテスト工数を費やすほど fault

そこで，TEAR モデルでは，non-fault-prone モジュールに対しても一定のテスト工数を割の発見確率は高まる．ただし，fault が含まれていない場合は，費やしたテスト工数にかかり当てることを想定し，パラメータとして指定可能とする．

わらず fault は発見されない．ここでは，1 モジュールにおける fault の有無，テスト工数

本論文では，さらに，TEAR モデルに基づいたシミュレーションを行うことで，TEARの割当て，fault 発見確率の関係をモデル化する．

モデルを用いた fault-prone モジュール判別を効果的に活用するテスト工数の割当ての計画

本論文では，1 モジュールにおけるモデルとして，比較的単純なモデルである指数関数モ立案の方法について明らかにする．シミュレーションは，(1) 判別精度の指標の 1 つで適合デルを採用する．指数関数モデルは，ソフトウェア全体の信頼性を推定するためのソフト

率と再現率の調和平均である F1 値5),14) が異なる場合，(2) 潜在 fault を実際に含んでいる

ウェア信頼度成長モデル（SRGM: Software Reliability Growth Model）2),18) でもよく用モジュールである fault 含有モジュールの割合が異なる場合，について行う．シミュレーショ

いられており，テスト工数と fault 発見の関係を簡潔に表現できる．

ンにより，高いソフトウェア信頼性の確保に適したテスト工数の割り当て方を明らかにするあるモジュールにおける fault の発見確率を式 (1) で定義する．

ことで，fault-prone モジュール判別を効果的に活用可能となることが期待される．
以降，2 章では，TEAR モデルについて説明する．3 章では，TEAR モデルを用いたシ
ミュレーションとその結果について述べ，4 章ではシミュレーションの結果について議論する．5 章では，関連研究について述べ，最後に 6 章で本論文のまとめを述べる．

2. テスト工数割当てとソフトウェア信頼性のモデル（TEAR モデル）d(E) =

⎧
−zE
⎪
⎨ 1−e

fault を含む⎪⎩

fault を含まない(1)0

ここで，d(E) は，あるモジュールに工数 E を割り当てたときの fault 発見確率，z （小文字）は，単位工数あたりに当該モジュールの fault が発見される確率（厳密には，確率その2.1 テスト工数の割当てに関するポリシ

ものではなく，確率を決定する定数）である．この指数関数モデルでは，fault は費やした

本論文では，テスト工程としてウォーターフォール型開発の単体テスト，統合テストを対コスト（テスト工数）に対して一様の確率で発見される．

象とする．そして，パッケージやサブシステム単位ではなく，モジュール（ファイル）単位

2.3 ソフトウェア全体におけるテスト工数割当てと信頼性のモデル

での予測を対象とするため，Moser ら13) と同様に，fault の数や確率の予測ではなく，fault

式 (1) のモデルは，1 モジュールにおけるテスト工数と fault の発見との関係を表したモの有無は 2 値判別されるものとする．また，判別結果に対し，開発現場では，次のポリシにデルである．このモデルを，ソフトウェア全体における（各モジュールへの）テスト工数割

基づいてテスト工数の割当てを行うとする．

当てとソフトウェア信頼性の関係を表すモデルへと拡張する．ここでは，ソフトウェア信頼Fault を含むと判別されたモジュール（fault-prone モジュール）により多くのテスト工性の指標として，ソフトウェアの潜在 fault 数に対する発見された fault 数の割合である潜数を割り当てる．逆に，fault を含まないと判別されたモジュール（non-fault-prone モ

在 fault 発見率を用いる．

ジュール）には少しのテスト工数しか割り当てない．具体的には，fault-prone モジュー

情報処理学会論文誌

Vol. 50

No. 7

1716–1724 (July 2009)

モデル化において，図 1 のように，ソフトウェアの全モジュールの集合を M ，実際に

c 2009 Information Processing Society of Japan


1718

Fault-prone モジュール判別におけるテスト工数割当てとソフトウェア信頼性のモデル化





NC
NC
+ d(EN F ) × 1 −
NF
NF



NC 
NC
−Z×EF
−Z×EN F
= 1−e
×
+ 1−e
× 1−
NF
NF

D(EF , EN F ) = d(EF ) ×(2)

ここで，Z （大文字）は，当該ソフトウェアの残存 fault 数に対する単位工数あたりに発見される fault 数の期待値である．
式 (2) の EF ，EN F は，2.1 節のテスト工数割当てポリシから次の関係で表される．
EF : Fault-prone モジュールに割り当てるテスト工数
EN F : Non-fault-prone モジュールに割り当てるテスト工数
図 1 モジュールの関係と fault 発見確率
Fig. 1 Relationship between modules and the percentages of discoverable faults.

Eall = EF × NP + EN F × (NM − NP )(3)

EF = EN F × r(4)

ここで，Eall は全テスト工数であり，fault-prone モジュールには non-fault-prone モジュー
ルの r 倍のテスト工数が割り当てられるものとする．
式 (3) と式 (4) の連立方程式を EF と EN F について解くとfault を含むモジュールである fault 含有モジュールの集合を F ，fault-prone と判別されたモジュールである fault-prone モジュールの集合を P ，fault-prone モジュールと判別された

fault 含有モジュールである正答モジュールの集合を C とする．また，それぞれのモジュー
ル数を，全モジュール数 NM ，fault-prone モジュール数 NP ，fault 含有モジュール数 NF ，正答モジュール数 NC とする．

EF =Eall × r
NP (r − 1) + NM

EN F =Eall
NP (r − 1) + NM

(6)が得られる．

Fault-prone モジュール 1 つあたりに費やすテスト工数を EF ，non-fault-prone モジュール 1 つあたりに費やすテスト工数を EN F とすると，各モジュールにおける fault 発見確率は次のようになる．

式 (2) に，式 (5)，式 (6) を代入すると，式 (7) が得られる．

+

d(EF )• Fault 含有モジュールのうち non-fault-prone と判別されたモジュール（図 1 の F −C ）：d(EN F )

E

×r

all
− N (r−1)+N
Z
P
M

1−e

D(EF , EN F ) =• Fault 含有モジュールのうち fault-prone と判別された正答モジュール（図 1 の C ）：

×

E

all
− N (r−1)+N
Z
P
M

1−e

NC
NF
×

N F − NC
NF

(7)

式中の各記号と意味を表 1 に示す．
また，判別精度指標として，正答モジュール数 NC の代わりに，fault-prone モジュール• Fault を含まないモジュール（図 1 の M − F ）：0

判別でよく用いられる F1 値を用いて式 (7) を表すと，式 (8) となる．

したがって，それぞれの fault 発見確率で fault が発見されるモジュールの割合は，次の• d(EF ) で fault が発見されるモジュールの割合：NC /NF• d(EN F ) で fault が発見されるモジュールの割合：1 − (NC /NF )そこで，全モジュールの fault 発見率 D(EF , EN F ) は式 (2) で表される．

Vol. 50

No. 7

1716–1724 (July 2009)

E

×r

all
− N (r−1)+N
Z
P
M

1−e

D(EF , EN F ) =ようになる．

情報処理学会論文誌

(5)

+

E

all
− N (r−1)+N
Z
P
M

1−e

×





× 1−

F1
NP
1+
2
NF

F1
NP
1+
2
NF






(8)

ここで，F1 値は次式で表される．

c 2009 Information Processing Society of Japan


1719

Fault-prone モジュール判別におけるテスト工数割当てとソフトウェア信頼性のモデル化
表 1 式中の記号の意味
Table 1 The meaning of symbols in equations.

F1 =

記号

意味

D(EF , EN F )
d(E)
Eall
EF
EN F
NM
NP
NF
NC
r
Z
z

ソフトウェア全体の fault 発見率
1 モジュールあたりの fault 発見確率
全テスト工数Fault-prone 判別モジュールに費やすテスト工数
Non-fault-prone 判別モジュールに費やすテスト工数
全モジュール数
Fault-prone 判別モジュール数
Fault 含有モジュール数
正答モジュール数
Fault-prone 判別モジュールに割り当てる工数の倍率
単位工数あたりの fault 発見率
単位工数あたりに該当モジュールにおいて fault が発見される確率値は，本来は fault-prone モジュール判別実施時には未知であるが，本シミュレーションでは，過去の開発事例から推定できるものと仮定する．シミュレーション (1) では PF P i = 0.2を採用し，シミュレーション (2) では PF P i を 0.2 刻みで変化させた．また，fault-prone モ
ジュール数 NP についても何らかの値を与える必要がある．NP は fault-prone モジュール
判別モデルとモデル構築に用いたデータセットの fault 含有モジュール率（PF P i ）によって決まるため，シミュレーションにおいて妥当な値は存在しない．そのため，本論文のシミュ
レーションでは，実際に fault を含むモジュール数だけ fault-prone モジュールと予測した場合である NP /NM の値が fault 含有率 PF P i と同一の値となるように，つまり，NP はNF と同じ値とした．
また，全モジュール数 NM ，全テスト工数 Eall ，単位工数あたりに発見される fault の割合 Z については，定数としてシミュレーションを行った．全モジュール数については，

NASA/WVU で公開されているデータ15) を，全テスト工数については，情報処理推進機

2NC
N F + NP(9)

本論文では，式 (7) と式 (8) をテスト工数割当てとソフトウェア信頼性のモデル（TEAR

構（IPA）ソフトウェア・エンジニアリング・センターで収集されたデータ6) を参考にして，以下の値に決定した．

• 全モジュール数：NM = 1500（個）• 総テスト工数：Eall = 1700（人時）モデル）とする．

• 単位工数あたりに発見される fault の割合：Z = 0.5

3. シミュレーション

全モジュール数と総テスト工数の出典は異なるが，ソフトウェアの規模（ソースコード行

3.1 シミュレーションの概要

数）がともに数万ステップのデータを出典としている．また，Z = 0.5 の場合，1 モジュー

本論文では，限られたテスト工数の枠内でソフトウェア信頼性を最大とするためのテスト

ル単位で見ると，1 モジュールでの単位工数あたりに fault が発見される確率は付録 A.1 の工数割当ての計画立案の方法を明らかにするため，TEAR モデルに基づいたシミュレーショ

ように 39%である．

ンを行う．シミュレーションは，(1) 判別精度（F1 値）が異なる場合，(2) 潜在 fault を実

Fault-prone モジュール判別における代表的な評価指標としては，適合率（Precision），再際に含んでいるモジュール（fault 含有モジュール）の割合が異なる場合，について行う．

現率（Recall），F1 値があげられる5) ．これらの評価指標のうち，適合率と再現率はトレー(1)，(2) のシミュレーションを実施するにあたっては，non-fault-prone モジュールに対ドオフの関係にあるため，本シミュレーションでは，これらの調和平均の値である F1 値をして fault-prone モジュールに割り当てるテスト工数の倍率（r）を変化させて，信頼性への影響を調べる．判別精度が高い場合，non-fault-prone モジュールにはテスト工数をほと採用し，判別精度として用いる．

3.2 シミュレーション (1)：推定される判別精度が異なる場合

んど割り当てなくてもよいが，判別精度が低い場合には，non-fault-prone モジュールにも3.2.1 方テスト工数を割り当てないと多くの fault を見逃すこととなるため，最適な r を知ることがシミュレーション (1) の目的は，推定される判別精度が異なる場合の各モジュールに割り

テスト現場において必要となるためである．

TEAR モデルへの入力として，fault 含有モジュール数 NF ，または，全モジュールに対するその割合（fault 含有モジュール率 PF P i = NF /NM ）を与える必要がある．これらの情報処理学会論文誌

Vol. 50

No. 7

1716–1724 (July 2009)

法

当てるテスト工数の決定方法を明らかにすることである．そのために，判別精度（F1 値）
ごとに non-fault-prone モジュールに対する fault-prone モジュールに割り当てるテスト工数の倍率 r を変化させ，ソフトウェア全体の fault 発見率 D の変化を確かめる．

c 2009 Information Processing Society of Japan


1720

Fault-prone モジュール判別におけるテスト工数割当てとソフトウェア信頼性のモデル化

多くのテスト工数を割り当てるにつれて，fault 発見率 D の増加の度合いは次第に小さくなっている．そして，さらに多くのテスト工数を割り当てると，fault 発見率 D は低下に転じている．また，グラフの表示範囲内には表れていないが，F1 値が 0.8 の場合も，同様の結果となっている．これは，fault-prone モジュールに割り当てるテスト工数を増加させる
ことは，non-fault-prone モジュールに割り当てるテスト工数を減少させることになるため，

non-fault-prone と判定されたモジュールのうち，実際には fault 含有モジュールであった（判別を誤った）モジュールの fault 発見率が低下するためである．

3.3 シミュレーション (2)：Fault 含有モジュール率が異なる場合
3.3.1 方法

シミュレーション (2) の目的は，fault 含有モジュール率 PF P i が異なる場合の，各モジュー
ルに割り当てるテスト工数の決定方法を明らかにすることである．そのために，fault 含有
図 2 シミュレーション (1)：F1 値ごとの fault 発見率
Fig. 2 Simulation 1: Fault detection rate in each F1 value.

モジュール率ごとに fault-prone モジュールに割り当てるテスト工数の倍率 r を変化させ，
ソフトウェア全体の fault 発見率 D の変化を確かめる．

シミュレーション (1) では，パレートの法則を考慮して fault 含有モジュール率 PF P i を

シミュレーション (2) では，F1 値を（比較的精度の高いケースを想定して）0.6 とし，シ0.2，fault-prone と判定するモジュールの割合（NP /NM ）は PF P i と同じ値（0.2）とし，ミュレーション (1) と同様に正答モジュール数 NC は fault 含有モジュール率にあわせて変正答モジュール数 NC は F1 値にあわせて変化させた．

3.2.2 結果化させ，fault-prone と判定するモジュールの割合（NP /NM ）は fault 含有率 PF P i と同一の値とした．

シミュレーション (1) の結果を図 2 に示す．グラフの横軸は non-fault-prone モジュールに3.3.2 結果対する fault-prone モジュールに割り当てるテスト工数の倍率 r の値を，縦軸はソフトウェア

シミュレーション (2) の結果を図 3 に示す．グラフの横軸は r の値を，縦軸はソフトウェ

全体の fault 発見率 D を示す．r が 1 の場合は，fault-prone モジュールと non-fault-prone

ア全体の fault 発見率 D を示す．グラフ中の灰色の線は，fault-prone モジュール判別を行

モジュールに同数の工数を割り当てる．すなわち，fault-prone モジュール判別を行わない

わない場合の fault 発見率 D の値を示す．

場合のソフトウェア全体の fault 発見率である．グラフ中の灰色の線は，この fault-prone
モジュール判別を行わない場合のソフトウェア全体の fault 発見率 D の値を示す．
シミュレーション (1) の結果，判別精度が低い（F1 値が 0.2）場合には，fault-prone モ
ジュール判別を行うことで r が 1 のとき（fault-prone モジュール判別を行わない場合）よ

シミュレーション (2) の結果，fault 含有モジュール率が高い（fault 含有モジュール率が0.6，0.8）場合には，fault-prone モジュール判別を行うことで，fault-prone モジュール判
別結果に基づいた工数割当てを行わない場合よりも fault 発見率を低下させており，判別結果に基づいてテスト工数を割り当てるべきではないことを示している．

りもソフトウェア全体の fault 発見率 D が低下している．すなわち，fault-prone モジュー

一方，fault 含有モジュール率が低い場合には，fault-prone モジュールにテスト工数を多く

ル判別結果に基づいた工数割当てを行うことで，行わない場合よりも fault 発見率を低下さ割り当てることで，fault-prone モジュール判別結果に基づいた工数割当てを行わない場合よせており，判別結果に基づいてテスト工数を割り当てるべきではないことを示している．

りも fault 発見率 D は増加している．そして，シミュレーション (1) と同様に，fault-prone

一方，F1 値が 0.4，0.6 の場合には，fault-prone モジュールにテスト工数を多く割り当

モジュールにより多くのテスト工数を割り当てるにつれて，fault 発見率 D の増加の度合い

てる（r の値を大きくする）ことで，fault-prone モジュール判別を行わない場合よりもソは次第に小さくなっていき，さらに多くのテスト工数を割り当てると，fault 発見率 D は低フトウェア全体の fault 発見率 D は増加している．しかし，fault-prone モジュールにより下に転じている．

情報処理学会論文誌

Vol. 50

No. 7

1716–1724 (July 2009)

c 2009 Information Processing Society of Japan


1721

Fault-prone モジュール判別におけるテスト工数割当てとソフトウェア信頼性のモデル化られる．一方，結合テストや総合テストの段階では，残存バグ数が少なくなり fault 含有モ
ジュール率 PF P i が小さくなるため，fault-prone モジュール判別が役立つことが多くなると考えられる．
また，non-fault-prone モジュールに対して fault-prone モジュールに割り当てるテスト工数の倍率（r）は，推定される PF P i と F1 値に応じて決定する必要があることが分かった．
たとえば，本論文のシミュレーション (2) の結果においては，PF P i = 0.4，F1 値 = 0.6 であれば，r = 4 が望ましいが，より fault 含有モジュール率が低いと期待される（PF P i =0.2）場合には，r = 10 付近が望ましい．ただし，r を大きくすればするほど，推定される
fault 含有モジュール率が誤っていた場合に低下する信頼性も大きくなることから，r を小さくしてローリスクローリターンでいくか，r を高くしてハイリスクハイリターンでいくかは，（過去のプロジェクトの事例などからの）推定される fault 含有モジュール率の確から
図 3 シミュレーション (2)：Fault 含有モジュール率ごとの fault 発見率
Fig. 3 Simulation 2: Fault detection rate in each fault module rate.

しさに基づいてテスト管理者が決定する必要がある．
なお，fault-prone モジュール判別実施時には，判別精度や PF P i は未知であるため，こ4. 考

れらの値を事前に推定しておくことが重要である．判別精度は，fault-prone モジュール判察

別モデル構築に用いた過去のソフトウェア開発で計測，収集したモジュールのデータにおいシミュレーション (1) の結果より，推定される fault-prone モジュール判別の判別精度がて，交差検証法1) によって判別を実施することで推定可能である．また，fault 含有モジュー低い場合には，fault-prone モジュール判別を行うことが fault 発見率を下げることが示唆さ

ル率も同様に，過去に開発したモジュールのデータなどから推定可能であると考えられる．

れた．本論文のシミュレーションの場合では，PF P i = 0.2，つまり，全モジュールの 20%がTEAR モデルでは，厳密性よりもモデルの利便性を重視したため，各モジュールの fault

fault を含む場合，F1 値 = 0.2 程度では判別の効果がなく，F1 値 = 0.4 程度以上ならば，発見確率は一定とし，ソフトウェア全体としてパラメータ Z を設けている．より厳密なモデ

信頼性向上の効果が見込めることが示唆された．ただし，シミュレーション (2) の結果から，

ル化のためには，超指数型 SRGM のように，モジュールごとに規模などを考慮して異なる

fault 含有モジュール率 PF P i が高くなるほど，要求される F1 値も大きくなることが示唆さパラメータを与えることができるように拡張することが今後の課題となる．現状の TEAR

れ，本論文のシミュレーションの場合では，PF P i = 0.6，つまり，全モジュールの 60%がモデルにおいてこの点を補う 1 つの方法は，テスト工数の割当てにおいて，予測結果に基fault を含む場合，F1 値 = 0.6 であっても判別の効果はない．これらのことから，テスト

づいて fault-prone モジュールに non-fault-prone モジュールの r 倍の工数を割り当てた後工数割当てを行う者は，過去のプロジェクトの事例などから PF P i と F1 値を推定してからで，さらに，各モジュールの規模に応じてテスト工数を上乗せする，といった処理を行うこTEAR モデルにあてはめ，fault-prone モジュール判別結果を採用するかどうかを決定するとが考えられる．

必要がある．
シミュレーション (2) の結果からは，fault 含有モジュール率 PF P i が高い場合には，F1

5. 関 連 研 究

値が比較的高い場合であっても，判別の効果がないことが示唆された．このことから，fault-

モジュールの fault の有無を推定するための fault-prone モジュール判別モデルは数多く

prone モジュール判別に基づくテスト工数割当ては，ソフトウェア中の残存バグが少なく提案されており，線形判別分析，ロジスティック回帰分析，ニューラルネット，分類木などなった時点で実施すべきであるといえる．一般に，ソフトウェアの単体テストの段階では，がよく用いられている3),9),11),14),16),17) ．さらに，サンプリング法8) や外れ値除去12) など

数多くのバグが検出されることから fault-prone モジュール判別はあまり役立たないと考えのデータセットを操作する手法の併用も提案されている．これらの研究では，判別モデルの情報処理学会論文誌

Vol. 50

No. 7

1716–1724 (July 2009)

c 2009 Information Processing Society of Japan


1722

Fault-prone モジュール判別におけるテスト工数割当てとソフトウェア信頼性のモデル化

性能の改善，もしくは比較を目的としており，信頼性の向上やテスト工数削減といった判別

づいて行われた．また，特別研究員奨励費（課題番号：20009220）の研究助成を受けて行の効果については触れられておらず，fault-prone モジュール判別モデルの有用性は不明で

われた．

ある．

Fault-prone モジュール判別におけるソフトウェア信頼性の向上を目的とした研究として，
Khoshgoftaar ら10) ，および，Moser ら13) の研究がある．これらの研究は判別誤り（特に第 2 種の誤り）の結果生じるコスト（工数）に注目し，判別誤りをできるだけ少なくすることで，信頼性を向上させる方法を提案している．具体的には，fault-prone モジュール判別
モデルの出力値を fault-prone モジュールあるいは non-fault-prone モジュールと判定するための閾値を変化させることで，コストの最小化を試みている．これらの手法を用いること
で，fault-prone モジュール判別をより効果的に活用できると考えられるが，判別誤りを完全になくすことはできないため，判別後に TEAR モデルを用いてテスト工数の割り当て方を決定することで，さらなる信頼性の向上が実現できると考えられる．

6. お わ り に
本論文では，fault-prone モジュール判別の判別結果に基づいたテスト工数の割り当て方，割り当てた結果の効果を明らかにするために，fault の有無の判別，テスト工数の割当て，
ソフトウェア信頼性（fault 発見率）をモデル化し，TEAR モデルを構築した．また，テス
ト工数割当てとソフトウェアの信頼性（fault 発見率）の関係をシミュレーションによって明らかにした．シミュレーションの結果，以下のことが分かった．

• 推定される判別精度が高い，もしくは，fault 含有モジュールが少ない場合には，faultprone モジュールに多くのテスト工数を割り当てた方が高い信頼性が得られる．ただし，割り当てすぎるとソフトウェアの信頼性は低下する．

• 推定される判別精度が低い，もしくは，fault 含有モジュールを多く含む場合には，判別結果に基づいてテスト工数を割り当てない方が高い信頼性が得られる．
本論文では，単純なモデルである指数関数モデルを基に fault 発見率モデルを構築した．

TEAR モデルにおいて，fault 発見に関するモデルは他のモデルに置き換え可能であるため指数関数以外のモデルについても検討すること，TEAR モデルを用いて実際にテスト工数の割当てを行い，TEAR モデルの効果を確認すること，適合率と再現率を変化させてシミュレーションを行うこと，および，TEAR モデルを fault の有無を確率で出力する fault-prone
モジュール判別モデルに対応するように拡張することが今後の課題である．

参

考

文

献

1) Browne, W.M.: Cross-validation methods, Journal of Mathematical Psychology,
Vol.44, No.1, pp.108–132 (2000).
2) Goel, L.A. and Okumoto, K.: Time-dependent errordetection rate model for software reliability and other performance measures, IEEE Trans. Reliability, Vol.28,
No.3, pp.206–211 (1979).
3) Gray, R.A. and MacDonell, G.S.: Software metrics data analysis – exploring therelative performance of some commonly used modeling techniques, Empirical Software Engineering, Vol.4, No.4, pp.297–316 (1999).
4) Gyimothy, T., Ferenc, R. and Siket, I.: Empirical validation of object-oriented metrics on open source software for fault prediction, IEEE Trans. Softw. Eng., Vol.31,
No.10, pp.897–910 (2005).
5) Herlocker, L.J., Konstan, A.J., Terveen G.L. and Riedl, T.J.: Evaluating collaborative ﬁltering recommender systems, ACM Trans. Information Systems, Vol.22,
No.1, pp.5–53 (2004).
6) 独立行政法人情報処理推進機構ソフトウェア・エンジニアリング・センター：ソフト
ウェア開発データ白書 2006—IT 企業 1400 プロジェクトの定量データで示す開発の実態，日経 BP 社，東京 (2006)．
7) Kamei, Y., Monden, A. and Matsumoto, K.: Empirical evaluation of svm-based
software reliability model, Proc. 5th ACM-IEEE International Symposium on Empirical Software Engineering (ISESE2006 ), Vol.2, pp.39–41 (2006).
8) 亀井靖高， 本真佑，柿元 健，門田暁人，松本健一：Fault-Prone モジュール判別におけるサンプリング法適用の効果，情報処理学会論文誌，Vol.48, No.8, pp.2651–2662(2007).
9) Khoshgoftaar, M.T. and Allen, B.E.: Modeling software quality with classiﬁcation
trees, Recent Advances in Reliability and Quality Engineering, pp.247–270, World
Scientiﬁc (1999).
10) Khoshgoftaar, T.M., Yuan, X. and Allen, E.B.: Balancing Misclassiﬁcation Rates
in Classiﬁcation-Tree Models of Software Quality, Empirical Software Engineering,
Vol.5, No.4, pp.313–330 (2000).
11) Li, L.P., Herbsleb, J., Shaw, M. and Robinson, B.: Experiences and results frominitiating ﬁeld defect prediction and product test prioritization eﬀorts at ABB Inc.,
Proc. 28th International Conference on Software Engineering (ICSE’06 ), pp.413–
422 (2006).

謝辞 本研究の一部は，文部科学省「次世代 IT 基盤構築のための研究開発」の委託に基情報処理学会論文誌

Vol. 50

No. 7

1716–1724 (July 2009)

c 2009 Information Processing Society of Japan


1723

Fault-prone モジュール判別におけるテスト工数割当てとソフトウェア信頼性のモデル化

12) Matsumoto, S., Kamei, Y., Monden, A. and Matsumoto, K.: Comparison of outlier
detection methods on fault-proneness models, Proc. 1st International Symposiumon Empirical Software Engineering and Measurement (ESEM2007 ), pp.461–463(2007).
13) Moser, R., Pedrycz, W. and Succi, G.: A comparative analysis of the Eﬃciency ofchange metrics and static code attributes for defect prediction, Proc. 30th International Conference on Software Engineering (ICSE’08 ), pp.181–190 (2008).
14) Munson, C.J. and Khoshgoftaar, M.T.: The detection of fault-prone programs,
IEEE Trans. Softw. Eng., Vol.18, No.5, pp.423–433 (1992).
15) NASA IV&V Facility, Metrics Data Program. http://mdp.ivv.nasa.gov/16) Ohlsson, N. and Alberg, H.: Predicting fault-prone software modules in telephoneswitches, IEEE Trans. Softw. Eng., Vol.22, No.12, pp.886–894 (1996).
17) Pighin, M. and Zamolo, R.: A predictive metric based on discriminant statisticalanalysis, Proc. 19th International Conference on Software Engineering (ICSE’97 ),pp.262–270 (1997).
18) Ramamoorthy, V.C. and Bastani, B.F.: Software reliability-status and perspective,
IEEE Trans. Softw. Eng., Vol.8, No.4, pp.354–371 (1982).

付

表 2 式 (1) と SRGM の対応関係
Table 2 Relationship between equation (1) and SRGM.
本論文の式 (1)SRGM

d(E) = 1 − e−zEd(E)：fault 発見確率
E ：工数

E(t) = a(1 − e−bt )E(t)：期待発見 fault 数
t：時間
a：t = 1 における潜在 fault 数
b：単位時間あたりの fault 発見率（を決定する定数）z ：単位工数あたりに当該モジュールで fault が発見される確率（を決定する定数）は，いくら工数を費やしても fault 発見確率は向上しない．

A.2 指数型 SRGM と式 (1) の比較
指数型 SRGM と式 (1) の fault を含む場合の関係は表 2 のようになる．

SRGM，式 (1) ともに，かけたコストに対して発見される fault が算出されるが，SRGM
はソフトウェア全体を対象としているのに対して，式 (1) は 1 モジュールを対象とする．また，本論文では，モジュールの fault 数は扱わず fault の有無のみを扱うため，SRGM の潜録

在 fault 数（a）にあたる変数は 0 か 1 の 2 値をとることになる．SRGM において a = 1 とA.1 式 (1) の挙動

した場合，「期待発見 fault 数」は「fault が発見される確率」と読み替えることができるた

1 モジュールにおけるテスト工数と fault 発見確率のモデルである式 (1) において，前提
条件を次のようにした場合• あるモジュールに fault が含まれている．
• 単位工数（1 人時）あたりに当該モジュールで fault が発見される確率（z ）= 0.5• 要員は 1 人

め，本論文の式 (1) の d(E) は「fault 発見確率」としている．そして，SRGM の単位時間あたりの fault 発見率 b は，式 (1) では工数に基づくため単位工数あたりに当該モジュール
で fault が発見される確率 z としている．そのため，式 (1) は，fault の有無のみを扱うため指数型 SRGM の fault 発見数を fault 発見確率と読み替え，また，時間 t を工数 E と読
み替えたものであるといえる．

d(E) の変動は次のようになる．

(平成 20 年 7 月 30 日受付)

1 時間 d(E) = 0.39：39%の確率でモジュールの fault が検出・除去される．

(平成 21 年 4 月 3 日採録)

2 時間 d(E) = 0.63：63%の確率でモジュールの fault が検出・除去される．
3 時間 d(E) = 0.78：78%の確率でモジュールの fault が検出・除去される．
..
.

柿元

健（正会員）

平成 15 年神戸市立工業高等専門学校専攻科電気電子工学専攻修了．平成

以上のように，工数を費やすほどモジュールの fault 発見確率が向上し，そのモジュール20 年奈良先端科学技術大学院大学情報科学研究科博士後期課程修了．同の信頼性は向上する．そして，工数を費やすにつれて fault 発見確率の向上度合いは小さく

年大阪大学情報科学研究科特任助教．博士（工学）．IT スペシャリストのなる．また，単位工数（1 人時）あたりに当該モジュールで fault が発見される確率（z ）に育成，および，ソフトウェア信頼性，ソフトウェアコスト見積りの研究によって，fault 発見確率は増減する．ただし，モジュールに fault が含まれていない場合に従事．電子情報通信学会，IEEE 各会員

情報処理学会論文誌

Vol. 50

No. 7

1716–1724 (July 2009)

c 2009 Information Processing Society of Japan


1724

Fault-prone モジュール判別におけるテスト工数割当てとソフトウェア信頼性のモデル化

門田 暁人（正会員）松本 健一（正会員）

平成 6 年名古屋大学工学部電気学科卒業．平成 10 年奈良先端科学技術

昭和 60 年大阪大学基礎工学部情報工学科卒業．平成元年同大学大学院

大学院大学情報科学研究科博士後期課程修了．同年同大学助手．平成 16

博士課程中退．同年同大学基礎工学部情報工学科助手．平成 5 年奈良先年同大学助教授．平成 19 年同大学准教授．平成 15〜16 年 Auckland 大

端科学技術大学院大学助教授．平成 13 年同大学教授．工学博士．エンピ

学客員研究員．博士（工学）．ソフトウェアメトリクス，ソフトウェアプ

リカルソフトウェア工学，特に，プロジェクトデータ収集/利用支援の研

ロテクション，ヒューマンファクタの研究に従事．電子情報通信学会，日究に従事．電子情報通信学会，日本ソフトウェア科学会，ACM 各会員，

本ソフトウェア科学会，IEEE，ACM 各会員．
亀井 靖高（学生会員）

IEEE Senior Member．
楠本 真二（正会員）

平成 17 年関西大学総合情報学部卒業．平成 19 年奈良先端科学技術大昭和 63 年大阪大学基礎工学部情報工学科卒業．平成 3 年同大学大学

学院大学情報科学研究科博士前期課程修了．現在，同大学博士後期課程在院博士課程中退．同年同大学基礎工学部情報工学科助手．平成 8 年同大

籍．平成 20 年日本学術振興会特別研究員（DC2）採用，エンピリカルソ

学講師．平成 11 年同大学助教授．平成 14 年同大学情報科学研究科助教

フトウェア工学，特にソフトウェア信頼性の研究に従事．電子情報通信学

授．平成 17 年同大学教授．博士（工学）．ソフトウェアの生産性や品質の会，IEEE 各会員．

定量的評価，プロジェクト管理に関する研究に従事．電子情報通信学会，

IEEE，JFPUG，PM 各会員．
本真佑（学生会員）

平成 18 年京都産業大学理学部卒業．平成 20 年奈良先端科学技術大学院
大学情報科学研究科博士前期課程修了．現在，同大学博士後期課程在籍．
平成 21 年日本学術振興会特別研究員（DC2）採用，エンピリカルソフト
ウェア工学，特にソフトウェアメトリクスの研究に従事．電子情報通信学会，IEEE 各会員

情報処理学会論文誌

Vol. 50

No. 7

1716–1724 (July 2009)

c 2009 Information Processing Society of Japan