モデルによるソフトウェア信頼性評価
ソフトウェア開発工程は一般に
- 要求仕様定義
- 設計
- コーディング
- テスト
- 運用・保守
といった段階に分けることができます.現在,ソフトウェア開発における問題の多くはテスト工程にあると言われています.その要因として
- ソフトウェアの品質(ソフトウェアが要求仕様どおりに動作すること)はテスト工程でいかにバグ(フォールト)を取り除くかにかかっている.
- テストには時間・労力・人件費など非常に多くのコストがかかる.
- バグを 100% 除去することは不可能に近い.
などが挙げられますが,これらに対する決定的な改善方法(管理手法)がないのも現状です.
テスト工程における管理手法の一つとして,ソフトウェア信頼性モデルを用いた工程管理があります.これは,元来,部品の品質管理に用いられてきた統計技術をソフトウェア開発に応用する試みであり,ソフトウェアのテスト工程においては障害発生データからソフトウェアの品質を評価し,その評価に基づいた工程管理を行います.
ソフトウェアテスト工程において,ある時刻までに発見される累積のフォールト数を記録するとき,テストの進捗度に伴ってフォールトの発見が収束していく傾向があることが知られています.ソフトウェア信頼性モデルはこの現象に注目します.
以下の仮定を設けます.
- ソフトウェアテスト中に障害が発生した場合,その原因となるフォールトは瞬間的に発見・除去される.
- プログラム中に含まれる初期フォールト数は有限であり,その数はポアソン分布に従う.
- フォールトはそれぞれ独立かつ時間に関してランダムに発見され,各々のフォールト発見時間はある確率分布に従う.
このとき,ソフトウェアテストの進捗に伴って発見されるフォールト数のふるまいは,非同次ポアソン過程と呼ばれる確率過程によって表されます.ソフトウェア信頼性モデルは,現在までに発見されているフォールトデータに非同次ポアソン過程を当てはめること(パラメータ推定)によって,将来に発見されるフォールトの数の予測や現在までに約何パーセントのフォールトが取り除かれているかと言ったことを評価します(信頼性評価).
また,フォールトが発見される時刻がどのような統計的性質があるか(何分布に従うか)によって,数多くのソフトウェア信頼性モデルが存在します.もちろん,予測精度や評価指標は信頼性モデルに依存するので,どのモデルが一番よくデータに合っているかを判断する必要があります(モデル選択).
パラメータ推定
ソフトウェアのテスト工程において信頼性評価を行うためには,観測されたフォールトデータに合うようにモデルのパラメータを推定する必要があります.学術的なソフトウェア信頼性理論で最もよく利用されるパラメータ推定法は最尤法と呼ばれる手法であり,これを適用することでデータにモデルをフィットさせることができます.最尤法では通常,暫定的な値から,よりフィットするパラメータを見つけていく繰り返し手順を行うことになります.
モデル選択
ソフトウェア信頼性評価では,通常複数のモデルに対してパラメータ推定を行い,それらの中で最も適合性の高いものを選択します.選択する際の目安としては適合性と呼ばれ,統計理論に基づいて幾つかの尺度が定義されています.代表的な尺度としては AIC (Akaike's Information Criterion), BIC (Bayesian Information Criterion), KS (Kolmogorov-Smirnov) 統計量,平均二乗誤差(MSE: Mean Square Error)などがあります.これらはいずれも,小さい値をとるモデルがより適合していることを示しているため,通常はこれらの指標が最も小さくなるモデルを選びます.
信頼性評価
推定されたパラメータおよび選択されたモデルを用いて,ソフトウェアの信頼性を評価します.代表的な評価尺度は「ソフトウェア信頼度関数」と呼ばれ,先の時刻において,次のフォールトが発見される確率を表す曲線です.これは,ハードウェアにおける「信頼度関数」と対応しています.また,次のフォールトが発見されるされるまでの期待時間(予測時間)を表す MTBF (Mean Time Between Failures) も,ハードウェアにおける MTBF と対応しています.
ソフトウェア独自の尺度としては,すべてのフォールトが除去された確率を表す「Fault-Free 確率」や,残っている(発見されていない)フォールトの期待数(予測数)を表す「残存フォールト」がある.