信頼度成長曲線はなぜS字型曲線になるのか
信頼度成長曲線はなぜS字型曲線になるのか、について色々調べてみた。
以下、考えたことをラフなメモ書き。
【参考】
バグの成長曲線(ソフトウェア信頼度成長モデル)の係数の意味 - ウィリアムのいたずらの開発?日記
ソフトウェア信頼度成長モデルに基づく最適リリース問題 山田 茂
「バグの潜在期間が長いほど修正時間が短い」ソフトウェアに対する信頼度成長曲線の論文が面白い: プログラマの思索
信頼度成長曲線の書籍を図書館で借りまくったら、80~90年代の本がとても多い。
「ソフトウェア品質保証の考え方と実際―オープン化時代に向けての体系的アプローチ」も読んだが、内容は相当古い。
おそらく、信頼度成長曲線の理論は既に枯れた話なのだろう。
実際、2010年代に発行された本は、「ソフトウェア信頼性の基礎 -モデリングアプローチ-」ぐらいしかない。
色々探したら、「演習で学ぶソフトウェアメトリクスの基礎」が分かりやすかった。
【1】信頼度成長曲線はなぜS字型曲線になるのか?
指数型曲線にはならないのか?
なぜ、ゴンペルツ曲線を採用するのか?
S字型モデル、ゴンペルツ曲線を採用する場合は前提条件がある。
それは、欠陥発見率の時系列グラフでは、欠陥発見率が放物線を描くと仮定しているから。
バグ発見率は、最初はゆっくりと上昇し、最高点に達して、その後は下降してゼロに近づく。
たとえば、最初はテストするほどバグはよく見つかるし、バグをどんどん修正して解決できるので、バグ発見率は高くなる。
しかし、じきにバグはある程度摘み取られて、簡単に見つかるようなバグはなくなり、解決が難しいバグとか、非常に稀なケースでしか発生しないようなバグだけが残るので、バグを見つけにくくなる。
つまり、バグ発見率は小さくなる。
このケースでは、テスト担当者の能力は経験曲線を仮定しているように思える。
つまり、テストするほど、テスト環境やテスト手順そのものに慣れたり、このあたりにバグがあるだろうと当たりをつけたりするので、当初はテスト効率は上がっていく。
しかし、残存バグが減っていくと、難易度が高いバグしか残らないので、テスト担当者がいくら成長しても、バグ発見は頭打ちになるわけだ。
一方、指数型曲線では、欠陥発見率の時系列グラフは、逆比例、または双曲線のように寝る形を仮定している。
つまり、バグ発見率は、テスト開始直後が最も高く、テストするほど減っていき、ゼロに近づく。
このケースでは、テスト担当者はテスト対象のシステムを知り尽くしていたり、テスト担当者の能力が高いので、当初はテストでどんどんバグ出ししていく。
しかし、残存バグが減っていくと、逆比例するようにバグは発見できなくなっていく。
よって、S字型曲線を仮定する場合は、テスト担当者の成長を見込んでいる前提があると考える。
一方、指数型曲線を仮定する場合は、テスト対象システムを知り尽くしている、とか、テスト担当者の習熟度が高い、など、テストが順調に進む場合を前提していると考える。
【2】信頼度成長曲線は、なぜ収束するのか?
なぜ、バグは収束すると言えるのか?
バグはテストするほど発散するケースは考えていないのか?
信頼度成長曲線はそもそも、製造業における大量生産した製品の品質管理技法をソフトウェアに流用したものだ。
よって、大量生産製品の品質が部溜まりに達するはず、という前提を引きずっている。
信頼度成長曲線では、バグが収束する理由には前提をおいている。
よく知られている根拠は2つあると思う。
1つは、用意したテストケースを全て実施したら、そのテストケースを何度繰り返しても、バグは見つからないから、というもの。
結合テスト、システムテストで用意したテストケースを準備したら、そのテストケース数は確定している。
すると、そのテストケースを1回転やりきったら、2回目を繰り返しても、バグ修正でデグレードが起きない限り、バグは見つからないはずだ。
もう一つは、テストしてバグ修正していくうちに、残存バグが減っていくので、発見できるバグは相当減ってしまうから、というもの。
これは当たり前。
【3】信頼度成長曲線には前提条件がある。
テストケースの粒度は均一であり、品質が良いこと。
各テストケースで発見できるバグの確率は、基本は均一であること。
しかし、バグはシステムの機能にまんべんなくばらまかれている、ということまでは前提にしない。
バグの発生場所は、特定の機能に集中しているかもしれない、という状況は認める。
そうでなければ、信頼度成長曲線はS字型曲線ではなく、時系列に直線グラフになってしまうから。
| 固定リンク
「ソフトウェア工学」カテゴリの記事
- アーキテクチャ設計はベストプラクティスを参照するプロセスに過ぎないのか?~Software Processes are Software, Too(ソフトウェアプロセスもまたソフトウェアである)(2024.09.22)
- 「システムアーキテクチャ構築の原理」の感想part2~非機能要件がシステムのアーキテクチャに影響を与える観点をプロセス化する(2024.05.06)
- 「システムアーキテクチャ構築の原理」の感想(2024.05.06)
- ソフトウェア工学の根本問題から最近のソフトウェア設計を考えてみる(2024.03.03)
- マイクロサービス設計は従来のアーキテクチャ設計と何が違うのか(2024.01.02)
コメント
初めまして。
傾向を知るというのは、かなり有意義ですね。
投稿: 師子乃 | 2021/08/01 00:36