ソフトウェア・シンポジウム 2024 in 長崎

マルチモデル推測に基づいたソフトウェア信頼性予測精度の向上に向けて
呉 敬馳, 土肥 正, 岡村博之
広島大学先進理工系科学{ d220580, dohi, okamu}@hiroshima-u.ac.jp
要旨

ウェア信頼性研究の歴史の中でも際立って多くのモデルが提案されてきた [1, 2, 6, 7, 16, 17, 19, 28, 29]. 十分な量

本稿ではマルチモデル推測に基づいて，組合せソフトのソフトウェアバグ検出データが得られているという条

ウェア信頼性モデルにおける候補モデルの重みを決定す件の下で, これらのデータに適合するモデルを求める問る問題について考察する．この問題は約 30 年間ソフト

題はさほど困難である訳ではないが, 過去に観測された

ウェア信頼性研究において積み残されてきた課題であり,

少数標本データから予測性能を含む汎化能力の高いモデ

これまでに理論的に妥当な方法が確立されていなかった．

ルを獲得することは必ずしも容易ではない. このようなここでは，赤池ウェイトと呼ばれる統計量を用いて，情傾向は, NHPP のような数理モデルだけでなく, 深層学

報理論的かつ頻度論的観点から，複数の候補モデルを平習やアンサンブル学習のような機械学習モデルを用いて均化することでソフトウェア信頼性の予測精度の向上を予測を行ったとしても変わることはない.

試みる．実際のバグ検出データに基づいた数値例においソフトウェアバグ検出数の予測精度を向上させる取組て，通常の赤池情報量基準 (AIC) を最小にする単一モ

みのひとつに, 組合せソフトウェア信頼性モデルがある.

デルを用いて予測するよりも，組合せソフトウェア信頼

NHPP モデルのような候補モデルを複数用いることで過去のバグ検出データへの適合性の情報を活用し, 将来検出されるであろうソフトウェアバグ数を推測するために用いられる. 初期において, Lyu and Nikora [11–13] とNikora et al. [15] は, 複数の候補モデルの線形結合によって予測モデルを構築する方法を提案しているが, 各候補
モデルのランク（相対順位）を合理的に決定することが出来ないという課題があった. 後に, Su and Huang [24]やその後の一連の研究 [21–23] において, 多層パーセプ
トロン型 3 層ニューラルネットワークにおける活性関数としてシグモイド関数を用いる代わりに, 異なる NHPP
モデルの平均値関数を代入し, ニューロンの結合荷重を重み係数とみなすことで各候補モデルのランクを決める
方法を提案している. 残念ながら, 上記のようなヒュー
リスティックな方法で候補モデルのランクを矛盾なく決定することは出来ないばかりか, 得られたソフトウェア
検出バグ数の予測値にも統計的な説得力は見受けられな
い. よって, 組合せソフトウェア信頼性モデルの解法は,
約 30 年の長きに渡り積み残されてきた課題であったことに注意すべきである.

性モデルを適用する方が安定した予測性能を与えることが示される．

1. 緒言
ソフトウェアの定量的な品質評価の中でも, ソフトウェ
ア信頼性は最も基本的かつ重要な属性であることはよく知られており, 定量的なソフトウェア信頼性評価指標としてソフトウェア信頼度を予測する問題がある. ここで,ソフトウェア信頼度とは, 既定の条件下である定められた期間中に, ソフトウェアバグに起因するシステム障害が発生しない確率として定義される. 通常, ソフトウェア
信頼性モデルと呼ばれる数理モデルに基づいて, ソフト
ウェアバグ検出データのようなテスト工程で観測される統計データからソフトウェア信頼度を予測する [10]. 中
でも, 非同次ポアソン過程 (Non-homogeneous Poisson

Process; NHPP) によるソフトウェア信頼性モデルの記
述は, その数学的取り扱いの簡便さや統計推論の容易さから有効であるとされており, 過去 50 年間に渡るソフト

102

SEA

ソフトウェア・シンポジウム 2024 in 長崎

本稿では, 近年, 統計的推測の分野で中心的な役割を演

表 1: 代表的な NHPP に基づいたソフトウェア信頼性

じるマルチモデル推測 [5] の考え方に基づいて，組合せ

モデル.

ソフトウェア信頼性モデルにおける候補モデルの重みを理論的に決定する問題について考察する．ここでは，赤累積分布関数Λ(t; θ), θ ∈ (a, α) = (a, b, c)

池ウェイトと呼ばれる統計量（例えば, [8] を参照）を用Exp [6]Λ(t; θ) = a(1 − e−bt )∫ t b b−1 −csΛ(t; θ) = a 0 c s Γ(b)e ds
(
)b )
(
c
Λ(t; θ) = a 1 − t+c

いて，情報理論的かつ頻度論的観点から，複数の候補モ
デルを平均化する Model Averaging の考え方を用いて,

Gamma [28, 29]

ソフトウェア信頼性の予測精度の向上を試みる．実際のPareto [1]

バグ検出データに基づいた数値例において，通常の赤池
情報量基準 (AIC) を最小にする単一モデルを用いて予TruncNormal [19]測するよりも，組合せソフトウェア信頼性モデルを適用する方が安定した予測性能を与えることが示される．

LogNormal [2, 19]

2. ソフトウェア信頼性モデル

TruncLogist [16](t)−F (0)
Λ(t; θ) = a F 1−F(0) ,∫(s−c)2−∞− 2b2
1
F (t; α) = √2πbedst∫(s−c)2−∞1e− 2b2 ds
Λ(t; θ) = a √2πblog(t)α)−F (0;α) ,Λ(t; θ) = a F (t;1−F(0;α)
1
F (t; α) =
− t−c
1+e

システムテストにおいて, 時刻 t (≥ 0) までに検出されLogLogist [7]るソフトウェアバグの累積件数を N (t) とし, 平均値関数∫tΛ(t; θ) = 0 λ(x; θ)dx の非同次ポアソン過程 (NHPP)

TruncEVMax [17]に従うものと仮定する. すなわち, N (t) の確率関数が以LogEVMax [17]下のように与えられるものとする.

{Λ(t; θ)}n e−Λ(t;θ )
. (1)
n!

TruncEVMin [17]式 (1) の Λ(t; θ) = E[N (t)] は NHPP の平均値関

LogEVMin [17]Pr{N (t) = n | N (0) = 0} =λ(t; θ) はソフトウェア強度関数と呼ばれ, 通常は Λ(t; θ) = ωF (t; α), λ(t; θ) = af (t; α) のように仮定される. ここで, θ ∈ (a, α) は強度関数に含まれる非負値実数パラメータ, a (> 0) はテスト前にソフトウェア内に残存する総期待バグ数を表す実数パラ
メータ, F (t; α) と f (t; α) = dF (t; α)/dt は各ソフ
トウェアバグが検出されるまでの時間の累積分布関数(F (0; α) = 0, F (∞; α) = 1) と確率密度関数である.
定量的なソフトウェア信頼性評価尺度として, ソフト
ウェア信頼度がある. ソフトウェア信頼度は, 時刻 t でシステムテストを終えた後, リリース後の任意の時間間
隔 u でバグに起因するソフトウェア障害が発生しない
確率として定義され, NHPP の仮定の下で以下のように求められる.

b1

Λ(t; θ) = alog(t)−cb1+e−F (t;α)−F (0;α)Λ(t; θ) = a 1−F (0;α) ,F (t; α) = e−e

− t−c
b

−

log(t)−c−log(t)−cbbΛ(t; θ) = ae−eα)−F (0;α) ,Λ(t; θ) = a F (t;1−F
(0;α)
− t−c
F (t; α) = e−e bΛ(t; θ) = ae−e数,

R(u | t) = e−{Λ(t+u;θ )−Λ(t;θ )} .

累積分布関数 F (t; α) の違いに他ならない. 表 1 は従前
までに知られている代表的な NHPP モデルを表しており, 典型的な 11 種類の連続形累積分布関数に対応していることが分かる. これらの NHPP モデルのパラメータ
推定機能は, SRATS (Software Reliability Assessment

Tool on Spreadsheet) [20] に実装されている.
一旦, 平均値関数が仮定されると, ソフトウェアバ
グ検出データから未知パラメータ θ ∈ (a, α) を統計的に推定する必要がある. 各テスト時刻 ti (i =1, 2, . . . , n) においてそれぞれ xi 個の累積バグ数が観測されているとき, 最終観測時刻 t = tn までの累積
検出バグ数を表すグループデータ（不完全データ）は
x = {(t1 , x1 ), (t2 , x2 ), . . . , (tn , xn )} のように与えられる. このソフトウェアバグ検出データに対する対数尤度(2)

ソフトウェア信頼性理論において, これまでに数多くの

NHPP に基づいたソフトウェア信頼性モデルが提案されており、その主な違いはソフトウェアバグ検出時間の

103

SEA

ソフトウェア・シンポジウム 2024 in 長崎

3. 組合せソフトウェア信頼性モデル

関数は, 式 (1) よりlnL(θ; x) =n∑{(xi − xi−1 )ln [Λ (ti ; θ) − Λ (ti−1 ; θ)]

先にも述べたように, AIC を最小にするソフトウェア

i=1−ln [(xi − xi−1 )!]} − Λ(tn ; θ)

信頼性モデルが常に予測期間中の PMAE を最小にする(3)

保障はないため, 予測性能に関するモデル選択基準の効のように求めることが出来る. 最尤推定法とは, 式 (3)用は限定的となる. また, システムテストを終えた別のの対数尤度関数を最大にするパラメータ（最尤推定値）

ソフトウェア製品のバグ検出データを用いて PMAE を最小にするようなソフトウェア信頼性モデルを同定した

θ̃ = arg max lnL(θ; x)(4)としても, その候補モデルが他のソフトウェア製品の信を求める問題に帰着され, 何らかの最適化アルゴリズム

頼性評価に適用出来る保障はなく, モデルの（適合性でを用いてテスト期間中に観測されたバグ検出データからはなく）予測性能を如何に高めるかがソフトウェア信頼モデルパラメータを推定する.

性理論における未解決の難題である. 表 1 で列挙した典θ

しかしながら, 仮定された平均値関数がソフトウェア

型的なソフトウェア信頼性モデルにおいても, 指数形モ

バグ検出過程を支配する真のモデルであるとは限らない

デル [6], 遅延 S 字形モデル [28], 習熟 S 字形モデル [16]ため, 複数の候補モデルから観測データに最も適合したなど典型的な（期待値の意味での）信頼度成長曲線のパモデル（平均値関数もしくはバク検出時間累積分布関数）

ターンが存在することは経験的に知られているが, 予測を選択する必要がある. 最も基本的なモデル選択法とし期間内にどの成長曲線のパターンが生じるかを事前に知ることは出来ない. そこで, 複数のソフトウェア信頼性て赤池情報量基準 (AIC) [3] がある. AIC は

AIC = −2lnL(θ̃; x) + 2ϕモデルの候補モデルの加重平均を用いて予測を行う, 組(5)

合せソフトウェア信頼性モデルが提案されている.

Lyu and Nikora [11] は 3 つの代表的なソフトウェア信
頼性モデルの加重平均を予測モデルに用いる組合せソフ
トウェア信頼性モデルを提案し, いくつかの典型的な信頼度成長曲線のパターンを考慮することで予測性能が向上する場合があることを示している. 今, M (= 1, 2, . . .)種類のモデルがソフトウェア信頼性モデルの候補として与えられ, j (= 1, 2, . . . , M ) 番目の NHPP モデルの平均値関数とモデルパラメータをそれぞれ Λj (t; θ j ) とおく.
組合せソフトウェア信頼性モデルの発想は, 各候補モデ∑M
ル j に対する重み ωj ( j=1 ωj = 1, j = 1, 2, . . . , M )が与えられたとき, 総期待累積バグ数を表わす平均値関数をのように定義される. ここで, lnL(θ̃; x) は最大対数尤度であり, ϕ は任意パラメータ数を表すモデル次元である.
AIC が小さいモデルが最も観測データに適合したモデ
ルとみなされる. しかしながら, 観測時間経過後の将来における時間間隔 u において, AIC を最小にするソフト
ウェア信頼性モデルが常に予測性能が高いとは限らない.
ソフトウェアバグ検出データ x を観測した後に, 将来の時刻 tn+k (k = 1, 2, . . .) において累積バグ数
xn+1 , xn+2 , . . . , xn+k を予測することを考える. 予測
時刻を挟んだ過去と将来における N (t) の確率法則が同一である保証はないが，通常，頻度論的推論では簡便のため, 最尤推定値 θ̃ を平均値関数 Λ(t; θ) に代入し, 時刻
tn+k (k = 1, 2, . . .) における値を予測するプラグイン予測が用いられる. また，予測性能を測る評価尺度のひとつとして, 予測絶対誤差 (PMAE) がある. ソフトウェアバグ
検出データ x を観測した後, 将来時刻 tn+k (k = 1, 2, . . .)での累積バグ数 xn+1 , xn+2 , . . . , xn+k が事後的に与えられたとき, PMAE は∑n+k|Λ(ti ; θ̃) − xi |PMAE = i=n+1(6)kで定義され, k は予測期間長と呼ばれる. むろん, いくつかの候補モデルの中で PMAE を最小にするソフトウェ
ア信頼性モデルを予測時点で知ることは不可能である.

Λ(t; θ) =M∑ωj Λj (t; θ j ), θ = {θ j ; j = 1, 2, . . . M }

j=1

(7)
のように仮定することである. これにより, 異なる成長曲線の出現パターンの割合を重み係数によって表現することが可能となり, ωj の値が大きいモデルは予測において高いランクが与えられることを意味する.
Abdel-Ghaly et al. [1] は予測精度を向上させるために, 複数の候補モデルに対する予測器を用意し, これらのモデルの線形結合をメタ予測器として用いること提唱しているが, 重み係数を適切に推定する方法については論じ

104

SEA

ソフトウェア・シンポジウム 2024 in 長崎ていない. Lyu and Nikora [11] では, NHPP とは異なるている訳ではなく, しかも NHPP の確率法則とは全く確率過程（同次マルコフ連鎖）や異なる推論原理（ベイズ

無関係な方法であることに変わりはない．上術のような推定）が混在した M = 7 種類のソフトウェア信頼性モデ理由から, 組合せソフトウェア信頼性モデルにおける重ルを仮定し, 等価な重み係数 ωj = 1/7 (j = 1, 2, . . . , 7)

み係数の決定法は, 未だに解決されてはおらず，かつそを持つ組合せソフトウェア信頼性モデルを考えている.

れが通常の単一モデルのプラグイン予測よりも有効であ

各モデルパラメータの推定法について論文中では具体的ることすら検証されていない．次節では，モデル平均化に言及されておらず，最小二乗法に基づいて各モデルパアプローチ (Model Averaging Approach) と呼ばれるマ

ラメータ θ j (j = 1, 2, . . . , 7) を推定したものと推察されルチモデル推測の中でも, モデル選択基準 AIC に特化

る. さらに文献 [12, 15] では, 重み係数を経験的に決めした頻度論的方法に着目し，組合せソフトウェア信頼性る方法，算術平均の代わりに平均値関数の中央値になるモデルの重み係数を合理的に推定する方法を提案する.

よう重み係数を調整する方法, prequential likelihood に

4. モデル平均化アプローチ

基づいて動的に重み係数を決定する方法を提案し, これらの予測器を CASE ツールとして実装している. 以上の一連の研究の概要は, 文献 [13] でまとめられている.

モデル選択基準である AIC 自体がデータの関数であ

上述の既存研究の問題点は, ソフトウェア信頼性モデるため, AIC 自身も確率変数であることは明らかである.

ルの基本的な前提となる確率法則を全く無視して累積バ

よって, モデル選択に起因する不確定性は常につきまとグ数の平均値だけに着目している点である. ソフトウェ

い, 最小となる AIC の値に近い他の候補モデルとの差

ア信頼度を推定する際にベースとなる検出バグ数のポアを如何に解釈するかは重要な問題である. Akaike [4] は

ソン性を考慮していないため，合理的な統計的推論とみ数に シグモイド関数の代わりに平均値関数 Λj (t; θ j ) を−AIC/2 が期待対数尤度の漸近的不偏推定量であることから, これを指数関数に乗じた exp(−AIC/2) は最尤推定法によって推定したモデルの尤度とみなすことが出来ることを指摘している. さらに, 複数のモデルの存在を前提にしたマルチモデル推測において, 最小 AIC 値と各候補モデルの AIC 値との差に基づくモデルの相対的な確からしさを尤度と関連付けて評価する方法を提案している. 情報量基準 AIC に関するサーベイは文献 [8]を参照されたい. 以下では, Burnham and Anderson [5]によるモデル平均化アプローチをソフトウェア信頼性モ
デルに適用することを考える.
M (= 1, 2, . . .) 種類の NHPP モデル Λj (t; θ j ) (j =1, 2, . . . , M ) に対する AIC 値を AICj によって表し, 候
補モデルの中で最小 AIC 値を AICmin とする. 各候補
モデルと最小 AIC モデルにおける相対的な比較は代入し, 各ニューロンの結合荷重を重み係数とみなすこ∆AICj = AICj − AICmin

なすことは困難である．一方, 既存研究とは異なり, す
べての候補モデルが NHPP に従う仮定の下で, ポアソ
ン過程の加法性から, 式 (7) を平均値関数にもつ NHPPの最尤推定値を求めることが考えられるかもしれない.
しかしながら, 式 (7) を式（3）に代入した対数尤度関数は高次元で, 非線形かつ多峰性をもつ複雑な関数となる
ことから, この制約付き最適化問題を安定的に解くことは極めて困難である. さらに, 最尤推定値として求められた重み係数がモデルのランクを正しく表現できる正当な理由が見当たらない点にも注意すべきである.
このような組合せソフトウェア信頼性モデルの重み係数を決定する方法として, Su and Huang [24] は多層
パーセプトロン型 3 層ニューラルネットワークの活性関とで ωj を動的に決定する方法を提案している. このアイ(8)によって表現されるため, exp(−∆AICj /2) が候補モデ

デアはいくつかの研究者によって議論され, リカレント

ル j の近似尤度を示すことから, AIC 値の差を標準化

型ニューラルネットワークへの拡張 [23], 不完全デバッ

した

グモデルへの適用 [21], 粒子群最適化 (Partial Swarm

Optimization) を利用した探索アルゴリズムの適用 [22]などが考えられてきた. しかしながら，これらの方法は，一見して組合せソフトウェア信頼性モデルの重み係数を
誤差逆伝搬アルゴリズムで推定しているように見えるが,各候補モデルの重要度を示す重み係数の統計的推論をし105

exp(−∆AICj /2)
ωj = ∑M
l=1 exp(−∆AICl /2)(9)は候補モデルの相対的な確からしさを表す指標となり,∑M
赤池ウェイトと呼ばれる. ここで, j=1 ωj = 1 である.
赤池ウェイトは候補モデルのランクを表す標準化された重要度としてみなすことが可能であり, 式 (7) にこれ

SEA

ソフトウェア・シンポジウム 2024 in 長崎

表 2: データセット.
Data Set

Total number of bugs

Testing length (day/week/month)

SourceNature of software system

DS1
DS2
DS3
DS4
DS5
DS6
DS7
DS8

54
38
120
61
66
58
368
80

17
14
19
12
20
33
100
59

SYS2 [14]SYS3 [14]Release2 [27]Release3 [27]
DS1 [18]
DS2 [18]
Github [30]Github [31]Real time command and control system
Real time command and control system
Tandem software system
Tandem software system
Embedded application for printerEmbedded application for printerRetro video game emulation for macOS
A simple web-based tool for Spriting and Pixel art

表 3: テスト段階初期 (20%) における赤池ウェイトの推定値.

DS1

Exp(0.19) TruncEVMin(0.09) TruncLogist(0.09) TruncNormal(0.09) TruncEVMax(0.09)
LogEVMin(0.08) LogLogist(0.08) Gamma(0.08) LogNormal(0.08) LogEVMax(0.08) Pareto(0.07)

DS2

Gamma(0.11) TruncNormal(0.11) LogNormal(0.11) TruncLogist(0.11) LogLogist(0.11)
TruncEVMax(0.11) LogEVMax(0.11) TruncEVMin(0.11) LogEVMin(0.11) Exp(0.00) Pareto(0.00)

DS3

Exp(0.18) Gamma(0.11) LogEVMin(0.11) LogLogist(0.11) LogNormal(0.09) LogEVMax(0.07)
Pareto(0.07) TruncEVMax(0.07) TruncLogist(0.06) TruncNormal(0.06) TruncEVMin(0.06)

DS4

Exp(0.21) Gamma(0.08) TruncNormal(0.08) LogNormal(0.08) TruncLogist(0.08) LogLogist(0.08)
LogEVMax(0.08) TruncEVMin(0.08) LogEVMin(0.08) Pareto(0.08) TruncEVMax(0.08)

DS5

LogNormal(0.15) LogLogist(0.15) TruncEVMax(0.15) Gamma(0.14) LogEVMax(0.14)
LogEVMin(0.09) TruncLogist(0.09) TruncNormal(0.08) TruncEVMin(0.02) Exp(0.00) Pareto(0.00)

DS6

LogEVMax(0.13) LogNormal(0.13) LogLogist(0.12) Gamma(0.12) TruncEVMax(0.12)
LogEVMin(0.09) Exp(0.08) TruncNormal(0.07) TruncLogist(0.07) TruncEVMin(0.05) Pareto(0.03)

DS7

TruncNormal(0.53) TruncLogist(0.34) LogEVMin(0.13) TruncEVMax(0.00) LogLogist(0.00)
TruncEVMin(0.00) Gamma(0.00) LogNormal(0.00) LogEVMax(0.00) Exp(0.00) Pareto(0.00)

DS8

LogEVMax(0.17) Pareto(0.16) LogNormal(0.16) LogLogist(0.15) LogEVMin(0.14) Gamma(0.13)
Exp(0.04) TruncEVMax(0.01) TruncLogist(0.01) TruncEVMin(0.01) TruncNormal(0.01)

5. 数値実験を代入した平均値関数をもつ NHPP は, ランク付けされた複数の候補モデルを融合して, 将来における推測を行う予測器として機能することが期待出来る. また, 観

ここでは, 表 2 に示すような 8 種類のグループデータ

測されているバグ検出データから, ωj の値をチェックすを用いて, 各データセットの 20%, 50%, 80%が観測さるだけでどのバグ検出時間分布の形状が寄与しているかれた時点で残りのテスト期間（80%, 50%, 20%）で検出を把握することが可能となり, 指数形モデル [6], 遅延 S

されるソフトウェアバグ数を予測することを考える. 候

字形モデル [28], 習熟 S 字形モデル [16] のような関数の補モデルとして表 1 で与えられる M = 11 種類の代表形状だけに着目した曖昧な候補モデルの選択をする必要的な NHPP モデルを仮定する. まず，各予測時点におがない（表 1 の 11 種類のモデルはすべて指数形もしくいて AIC を最小にする最も過去データへの適合性が高は S 字形曲線を示すことは, 累積分布関数の形状から自いモデルをひとつだけ選択 (miminum AIC model) し，明である）.

それを将来の予測に用いる. 次に，事後的にすべてのデータが観測された状況で PMAE を最小にするモデル

106

SEA

ソフトウェア・シンポジウム 2024 in 長崎

表 4: テスト段階中期 (50%) における赤池ウェイトの推定値.

DS1

TruncLogist(0.22) TruncEVMin(0.20) TruncNormal(0.16) TruncEVMax(0.12) LogEVMin(0.07)
LogLogist(0.07) Gamma(0.06) LogNormal(0.05) LogEVMax(0.03) Exp(0.00) Pareto(0.00)

DS2

LogEVMax(0.33) LogNormal(0.19) LogLogist(0.13) Gamma(0.10) LogEVMin(0.07)
TruncEVMax(0.06) TruncLogist(0.03) TruncNormal(0.03) Exp(0.03) TruncEVMin(0.02) Pareto(0.01)

DS3

Exp(0.23) TruncEVMin(0.10) LogEVMin(0.09) TruncNormal(0.09) Gamma(0.09) TruncLogist(0.09)
LogLogist(0.09) TruncEVMax(0.09) Pareto(0.08) LogNormal(0.03) LogEVMax(0.01)

DS4

TruncEVMin(0.20) TruncLogist(0.20) TruncNormal(0.18) TruncEVMax(0.17) LogEVMin(0.06)
LogLogist(0.05) Gamma(0.05) Exp(0.04) LogNormal(0.02) LogEVMax(0.01) Pareto(0.01)

DS5

LogEVMax(0.80) LogNormal(0.09) LogLogist(0.09) Gamma(0.01) LogEVMin(0.00)
TruncEVMax(0.00) Exp(0.00) TruncLogist(0.00) Pareto(0.00) TruncNormal(0.00) TruncEVMin(0.00)

DS6

LogNormal(0.12) Gamma(0.12) LogEVMin(0.12) LogLogist(0.12) LogEVMax(0.12)
TruncEVMax(0.09) TruncNormal(0.09) TruncEVMin(0.09) TruncLogist(0.09) Exp(0.04) Pareto(0.01)

DS7

LogLogist(1.00) LogNormal(0.00) LogEVMax(0.00) Gamma(0.00) TruncEVMax(0.00)
LogEVMin(0.00) TruncLogist(0.00) TruncNormal(0.00) TruncEVMin(0.00) Exp(0.00) Pareto(0.00)

DS8

Gamma(0.31) LogEVMin(0.30) LogLogist(0.29) LogNormal(0.07) LogEVMax(0.03)
Exp(0.00) Pareto(0.00) TruncEVMax(0.00) TruncLogist(0.00) TruncEVMin(0.00) TruncNormal(0.00)
階，後期段階において累積バグ数を予測した際の振舞い(minimum PMAE model) との比較を行う．通常, どの候補モデルが PMAE を最小にするかは予測時点では分からないので, minimum PMAE model の PMAE の値
は常に予測性能の最良値 (PMAE の下限値）を与える
ことに注意されたい. これに対して, 11 種類のすべての候補モデルを仮定した上で赤池ウェイトを求め，組合せ
ソフトウェア信頼性モデルによって予測値を求めたモデ
ルを AIC weight と表記する.
表 3〜5 では，データセットの各予測段階において, 組
合せソフトウェア信頼性モデルを適用した際の赤池ウェ
イトの推定値を求めた結果を示す. 10% 以上の重み係数を示したモデルを太字で記載している. これらの結果より，組合せソフトウェア信頼性モデルを構成する代表的な候補モデルの種類と重み係数の値は各データセットにおいて大きく異なっており，必ずしも全ての候補モデル
を予測に用いる必要はないことが分かる. すなわち，赤池ウェイトを算出することで候補モデルの相対順位を知ることが出来るだけでなく，赤池ウェイトが極めて小さい（ほぼゼロの値をとるような）予測に不要なモデルを自動的に排除することが可能となる．
次に，図 1 において，DS1 のテスト初期段階，中期段を表わす. 初期テスト段階では，事後的に最良の予測モデルである minimum PMAE model と比べて, minimum

AIC model と Akaike weight の予測精度は極端に低く，特に AIC を最小にするモデルを選択しても将来検出されるであろうバグ数を精度よく予測することは容易ではな
いことがわかる．テスト中期段階では，minimum AIC
model は累積バグ数を過小評価し，Akaike weight は逆に過大評価する傾向にあった. テスト後期段階において
は，minimum AIC model と Akaike weight の予測結果
はほぼ同様であることが読み取れる.
表 6 では, 各データセットにおいて, minimum PMAE
model, minimum AIC model, Akaike weight を PMAEの観点から比較した結果を表わす. ここで括弧内は, 表 1の候補モデルの中での最良モデルを表わしている. 黄色
で色付けした箇所は PMAE の観点から全く等価な予測性能を表わしている. まず，minimum PMAE model とminimum AIC model を比較すると，黄色で色付けされた箇所を除き minimum AIC model の PMAE の値は常に大きいが，PMAE の値で 1 程度の大きさしか違わないケースが 24 件中 9 件あった．これより，約半数程

107

SEA

ソフトウェア・シンポジウム 2024 in 長崎

表 5: テスト段階後期 (80%) における赤池ウェイトの推定値.

DS1

TruncLogist(0.35) TruncNormal(0.24) LogEVMin(0.14) TruncEVMax(0.12) LogLogist(0.07)
Gamma(0.04) TruncEVMin(0.03) LogNormal(0.00) LogEVMax(0.00) Exp(0.00) Pareto(0.00)

DS2

LogEVMax(0.27) LogNormal(0.15) Exp(0.14) LogLogist(0.08) Pareto(0.06) Gamma(0.06)
LogEVMin(0.05) TruncEVMax(0.05) TruncLogist(0.05) TruncNormal(0.05) TruncEVMin(0.05)

DS3

TruncEVMin(0.26) TruncNormal(0.20) TruncLogist(0.18) TruncEVMax(0.11) Exp(0.09)
LogEVMin(0.04) Gamma(0.04) Pareto(0.03) LogLogist(0.03) LogNormal(0.01) LogEVMax(0.01)

DS4

TruncEVMin(0.46) TruncLogist(0.23) TruncNormal(0.20) TruncEVMax(0.05) LogEVMin(0.02)
Gamma(0.01) Exp(0.01) LogLogist(0.01) LogNormal(0.00) Pareto(0.00) LogEVMax(0.00)

DS5

LogEVMax(0.40) LogNormal(0.19) Pareto(0.08) Exp(0.08) LogLogist(0.06) LogEVMin(0.05)
Gamma(0.04) TruncEVMax(0.03) TruncLogist(0.03) TruncNormal(0.02) TruncEVMin(0.02)

DS6

TruncEVMin(0.14) TruncLogist(0.12) LogEVMin(0.11) TruncNormal(0.11) LogLogist(0.11)
Gamma(0.11) LogNormal(0.10) TruncEVMax(0.10) LogEVMax(0.08) Exp(0.00) Pareto(0.00)

DS7

LogEVMax(1.00) LogNormal(0.00) LogLogist(0.00) Gamma(0.00) LogEVMin(0.00) Pareto(0.00)
Exp(0.00) TruncLogist(0.00) TruncEVMax(0.00) TruncNormal(0.00) TruncEVMin(0.00)

DS8

Gamma(0.33) LogEVMin(0.32) LogLogist(0.30) LogNormal(0.03) LogEVMax(0.01) Exp(0.01)
Pareto(0.00) TruncEVMax(0.00) TruncLogist(0.00) TruncEVMin(0.00) TruncNormal(0.00)

度の割合で minimum AIC model と minimum PMAE

づいて，予測精度の比較を行い, 通常の赤池情報量基準

model の予測性能は大きく違わないと言える．一方で，minimum PMAE model と minimum AIC model 共に,
最良の候補モデルはデータによって大きく異なっていることから，すべての候補モデルのモデルパラメータを推定した後に AIC に基づいたモデル選択を行う必要がある．一方，本稿で提案する組合せソフトウェア信頼性モ
デルを適用した場合，表 6 中の赤字で記載した 24 ケー
ス中, 14 ケースにおいて minimum AIC model よりも高い予測性能を示すことがわかった．これにより，赤池
ウェイトを用いて候補モデルの重みを決定する組合せソ
フトウェア信頼性モデルの予測性能の有効性が示される.

(AIC) を最小にする単一モデルを用いて予測するよりも，組合せソフトウェア信頼性モデルを適用する方が安定した予測性能を与えることを実証した．
ここで述べた赤池ウェイトに基づいた方法は, マルチ
モデル推測におけるモデル平均化アプローチのひとつであり, 修正情報量基準 AICc [25] やベイズ型情報量基準
BIC (Bayesian Information Criterion) [26] など他の情報量基準に基づいたアプローチを考えることも可能である. マルチモデル推測の汎用的な有効性を示すためには,モデルランクの決定法についてさらに検証する必要があると考えられる.
また, 候補モデルとして一体どれだけの数と種類のモデルを準備すれば推定性能が向上するかについて, 詳細に検討する必要がある. SRATS [20] で実装されている
ように, 最適化アルゴリズムを工夫することで複数の候補モデルに対する最尤推定を行うコストはかなり低い.
よって, 多くの候補モデルに基づいた組合せソフトウェ
ア信頼性モデルを列挙すればよいと考えるかもしれない
が, 一方で, 過去データへの適合性が高い同質的なモデルだけを集めたとしても, 将来における不確実性を安定的

6. 結論
本稿ではマルチモデル推測に基づいて，組合せソフト
ウェア信頼性モデルにおける候補モデルの重みを決定する問題について考察した．特に, 組合せソフトウェア信
頼性モデルにおける重み係数の決定に赤池ウェイトと呼ばれる統計量を活用し，複数の候補モデルを平均化する
ことでソフトウェア信頼性を予測する方法を提案した．

8 つの実プロジェクトで観測されたバグ検出データに基

108

SEA

ソフトウェア・シンポジウム 2024 in 長崎

minimum PMAE model
minimum AIC model
Akaike weight
DS1

50

minimum PMAE model
minimum AIC model
Akaike weight
DS1

60
50

40

minimum PMAE model
minimum AIC model
Akaike weight
DS1

50
40

40
30

30

30

20
10
0

20

20

10

10
1

2

3

4

5

6

7

8

9 10 11 12 13 14 15 16 170(a) Early testing phase.

1

2

3

4

5

6

7

8

9 10 11 12 13 14 15 16 170(b) Middle testing phase.

1

2

3

4

5

6

7

8

9 10 11 12 13 14 15 16 17(c) Late testing phase.

図 1: 期待累積バグ数の予測値の振舞い (DS1).
表 6:

PMAE に基づいた予測性能の比較.
Early Software Testing Phase (20%)

Data Set

minimum PMAE model

minimum AIC model

AIC weight

DS1
DS2
DS3
DS4
DS5
DS6
DS7
DS8

4.17 (TruncLogist)
5.40 (Pareto)
17.98 (LogEVMin)
31.02 (Pareto)
14.25 (Pareto)
15.43 (Exp)54.07 (LogNormal)
29.49 (Pareto)

23.88 (Exp)13.85 (Gamma)
31.23 (Exp)32.30 (Exp)17.90 (LogNormal)
25.43 (LogEVMax)
82.76 (TruncNormal)
29.70 (LogEVMax)

15.97
13.69
26.63
33.45
17.86
26.87
82.01
29.99

Middle Software Testing Phase (50%)
Data Set

minimum PMAE model

minimum AIC model

AIC weight

DS1
DS2
DS3
DS4
DS5
DS6
DS7
DS8

2.28 (TruncNormal)
5.60 (Pareto)
1.50 (TruncEVMin)
5.70 (Pareto)
18.02 (Pareto)
4.00 (Gamma)
22.53 (LogEVMax)
2.56 (Pareto)

3.63 (TruncLogist)
7.14 (LogEVMax)
20.39 (Exp)46.87 (TruncEVMin)
18.55 (LogEVMax)
4.53 (LogNormal)
37.05 (LogLogist)
5.58 (Gamma)

7.06
7.68
16.83
34.74
18.66
4.38
37.05
5.81

Last Software Testing Phase (80%)
Data Set

minimum PMAE model

minimum AIC model

AIC weight

DS1
DS2
DS3
DS4
DS5
DS6
DS7
DS8

0.44 (LogEVMax)
0.57 (LogEVMin)
0.48 (TruncNormal)
0.21 (TruncNormal)
1.97 (LogEVMax)
2.40 (TruncEVMin)
4.78 (LogEVMax)
1.50 (Pareto)

4.03 (TruncLogist)
0.79 (LogEVMax)
1.87 (TruncEVMin)
1.06 (TruncEVMin)
1.97 (LogEVMax)
2.40 (TruncEVMin)
4.78 (LogEVMax)
1.83 (Gamma)

3.91
0.58
1.33
0.14
2.37
7.01
4.78
1.84

109

SEA

ソフトウェア・シンポジウム 2024 in 長崎[8] 小西貞則 (2019), 情報量基準 AIC の統計科学に果たしてきた役割, 統計数理, vol. 67, pp. 193–214.

に捉えることは困難であるように思われる. そこで, 出
来る限り多様な候補モデルを列挙した上でモデルクラスのクラスタリングを行い, 真に予測に必要な候補モデル[9] S. Li, T. Dohi and H. Okamura (2022), Burrtype NHPP-based software reliability models andtheir applications with two type of fault countdata, Journal of Systems and Software, vol. 191,
p. 111367.

を選定することが重要であると考えられる. 例えば, 最近 Li et al. [9] は, 表 1 で示す寿命分布を表現する代表的なバグ検出時間累積分布関数よりも, Burr 分布とその周辺クラスに属する分布関数を用いてソフトウェアバグ予測を行う方が予測性能が高いことを実証している.

[10] M. R. Lyu (ed.) (1996), Handbook of Software
Reliability Engineering, McGraw-Hill, New York.

参考文献[11] M. R. Lyu and A. P. Nikora (1991), A heuristic
approach for software reliability prediction: The
equally weighted linear combination model, Proceedings of The 2nd IEEE International Symposium
on Software Reliability Engineering (ISSRE-1991),
pp. 172–181, IEEE CPS.

[1] A. A. Abdel-Ghaly, P. Y. Chan and B. Littlewood(1986), Evaluation of competing software reliability
predictions, IEEE Transactions on Software Engineering, vol. SE-12, pp. 950–967.
[2] J. A. Achcar, D. K. Dey, M. Niverthi (1998), A
Bayesian approach using nonhomogeneous Poissonprocesses for software reliability models, Frontiers in Reliability, A. P. Basu, S. K. Basu and S.
Mukhopadyyay (eds.), pp. 1–18, World Scientiﬁc,
Singapore.

[12] M. R. Lyu and A. P. Nikora (1991), Software reliability measurements through combination models: approaches, results, and a CASE tool, Proceedings of The 15th IEEE Annual International
Computer Software and Applications Conference(COMPSAC-1991), pp. 577–584, IEEE CPS.

[3] H. Akaike (1973), Information theory and an extension of the maximum likelihood principle, Proceedings of The 2nd International Symposium on Information Theory, B. N. Petrov and F. Caski (eds.),
Akadimiai Kiado, pp. 267–281, Budapest.

[13] M. R. Lyu and A. P. Nikora (1992), Applying
reliability models more eﬀectively, IEEE Software,
vol. 9, pp. 43–42.

[4] H. Akaike (1978), On the likelihood of a time seriesmodel, The Statistician, vol. 27, pp. 217–235.

[14] J. D. Musa (1979), Software Reliability Data,
Technical Report in Rome Air Development Center, New Jersey.

[5] K. P. Burnham and D. R. Anderson (2002), Model
Selection and Multimodel Inference: A Practical
Information-theoretical Approach, Springer-Verlag,
New York.

[15] A. P. Nikora, M. R. Lyu and T. M. Antczak(1992), A linear combination software reliability
modeling tool with a graphically-oriented user interface, Proceedings of The 2nd Symposium on Assessment of Quality Software Development Tools,
pp. 21–31, IEEE CPS.

[6] A. L. Goel and K. Okumoto (1979),
Timedependent error-detection rate model for software
reliability and other performance measures, IEEE
Transactions on Reliability, vol. R-28, pp. 206–211.

[16] M. Ohba (1984), Inﬂection S-shaped software reliability growth model, Stochastic Models in Reliability Theory, S. Osaki and Y. Hatoyama (eds.),
pp. 144–162, Springer, Berlin/Heidelberg.

[7] S. S. Gokhale and K. S. Trivedi (1998), Log-logistic
software reliability growth model, Proceedings of
The 3rd IEEE International High-Assurance Systems Engineering Symposium (HASE-1998), pp.
34–41, IEEE CPS.

110

SEA

ソフトウェア・シンポジウム 2024 in 長崎[17] K. Ohishi, H. Okamura and T. Dohi (2009), Gompertz software reliability model: Estimation algorithm and empirical validation, Journal of Systems
and Software, vol. 82, pp. 535–543.

els, Journal of Systems and Software, vol. 80, pp.
606–615.
[25] N. Sugiura (1978), Further analysis of the data by
Akaike’s information criterion and the ﬁnite corrections, Communications in Statistics, vol. A7, pp.
13–26.

[18] H. Okamura, Y. Etani, and T. Dohi (2011) Quantifying the eﬀectiveness of testing eﬀorts on software fault detection with a logit software reliability
growth model, Proceedings of Joint Conference ofThe 21st International Workshop on Software Measurement and The 6th International Conference on
Software Process and Product Measurement, pp.
62–68, IEEE CPS.

[26] G. Schwarz (1978), Estimating the dimension ofa model, Annals of Statistics, vol. 6, pp. 461–464.
[27] A. Wood (1996), Predicting software reliability,
IEEE Computer, vol. 29, pp. 69–77.
[28] S. Yamada, M. Ohba and S. Osaki (1983), Sshaped reliability growth modeling for software error detection, IEEE Transactions on Reliability,
vol. R-32, pp. 475–484.

[19] H. Okamura, T. Dohi and S. Osaki (2013), Software reliability growth models with normal failure
time distributions, Reliability Engineering and System Safety, vol. 116, pp. 135–141.

[29] M. Zhao and M. Xie (1996), On maximum likelihood estimation for a general non-homogeneous
Poisson process, Scandinavian Journal of Statistics, vol. 23, pp. 597–607.

[20] H. Okamura and T. Dohi (2013), SRATS: software reliability assessment tool on spreadsheet (Experience Report), Proceedings of The 2013 IEEE
24th International Symposium on Software Reliability Engineering (ISSRE 2013), pp. 100–107, IEEE
CPS.

[30] https://github.com/OpenEmu/OpenEmu,
Feb. 2012 to Sept. 2020.

from[31] https://github.com/piskelapp/piskel/, from Sept.
2012 to Jul. 2018.

[21] P. Rani and G. S. Mahapatra (2018), Neural network for software reliability analysis of dynamicallyweighted NHPP growth models with imperfect debugging, Software: Testing, Veriﬁcation and Reliability, vol. 28, p. e1663.
[22] P. Rani and G. S. Mahapatra (2019), A novel approach of NPSO on dynamic weighted NHPP model
for software reliability analysis with additional fault
introduction parameter, Heliyon, vol. 5, p. e02082.
[23] P. Roy, G. S. Mahapatra, P. Rani, S. K. Pandey
and K. N. Dey (2014), Robust feedforward andrecurrent neural network based dynamic weighted
combination models for software reliability prediction, Applied Soft Computing, vol. 22, pp. 629–637.
[24] Y.-S. Su and C.-Y. Huang (2007), Neural-networkbased approaches for software reliability estimation using dynamic weighted combinational mod-111

SEA