はじめに
今回も、応用情報技術者試験の過去問を解いていきます。
今回のテーマは、ソフトウェア信頼度成長モデル(Software Reliability Growth Model:SRGM)とゴンペルツ曲線です。
ソフトウェアのテストをしていると、最初から最後まで同じペースでバグが発見されるとは限りません。
最初はあまり見つからず、テストが進むと多くのバグが発見され、さらにテストが進むと新しく見つかるバグが少なくなっていくことがあります。
こうしたバグの検出状況を数理的に捉えて、収束状況などを判断するために利用されるものがソフトウェア信頼度成長モデルです。
今回は、その代表的なモデルの一つである「ゴンペルツ曲線」について見ていきます。
問題
ソフトウェア信頼度成長モデルの一つであって、テスト工程においてバグが収束したと判定する根拠の一つとして使用するゴンペルツ曲線はどれか。

画像引用元:IPA 独立法人 情報処理推進機構 応用情報技術者試験 過去問
解答
解答:ウ
解説
今回の問題で最も重要なのは、
「ゴンペルツ曲線=S字型」
と覚えることです。
テスト項目を消化していったときの累積誤り検出数を考えてみます。
大まかには、次のように変化します。
| テスト段階 | 累積誤り検出数の変化 | 状況のイメージ |
| 初期 | 緩やかに増加 | テスト開始直後で検出数がまだ少ない |
| 中盤 | 増加が大きくなる | テストが進み、多くのバグが検出される |
| 後半 | 再び増加が緩やかになる | 新たに検出されるバグが少なくなる |
ポイントは最後の部分です。
テストを続けても新たに発見されるバグが少なくなれば、累積誤り検出数の曲線は徐々に横ばいに近づいていきます。
このような曲線の変化は、バグがどの程度収束しているかを判断する材料の一つになります。
IPAの品質評価資料でも、信頼度成長曲線は横軸に日付・テスト時間・テスト項目数など、縦軸に累積欠陥数を取り、ゴンペルツモデルなどで近似して、欠陥の収束率や残存欠陥数の予測などに使用すると説明されています。
したがって、S字型になっている「ウ」が正解です。
各選択肢を見てみよう
ア:後半ほど急激に増える
アは、テストが進めば進むほど、累積誤り検出数の増加ペースが大きくなっています。
これでは後半になってもバグの検出ペースが増え続けているため、ゴンペルツ曲線の特徴とは異なります。
不正解です。
イ:直線的に増える
イは、テスト項目を消化するほど、ほぼ一定の割合で累積誤り検出数が増えています。
最後まで同じペースで増え続けているため、収束していくS字型のゴンペルツ曲線ではありません。
不正解です。
ウ:S字型
ウは、
緩やか → 急増 → 緩やか
という変化をしています。
これがゴンペルツ曲線の特徴です。
後半では累積誤り検出数の増加が小さくなり、一定値へ近づいていきます。
正解です。
エ:最初に急増して、その後緩やかになる
エは、テスト開始直後から累積誤り検出数が大きく増え、その後は徐々に増加が緩やかになっています。
一見すると「最後に収束しているから正解では?」と思ってしまいそうですが、ゴンペルツ曲線で重要なのはS字型であることです。
エには、初期の緩やかな増加から中盤の急増へ移る部分がありません。
したがって、不正解です。
問題の用語解説
ソフトウェア信頼度成長モデル(SRGM)とは
ソフトウェア信頼度成長モデル(SRGM)は、テストの進行に伴ってバグがどのように検出されていくかを数理的に表し、ソフトウェアの信頼性を評価・予測するためのモデルです。
IPAの資料では、主にテスト工程で用いられ、累積欠陥データの傾向から総欠陥数を推定するものと説明されています。
例えば、
- 最終的な累積バグ数の予測
- 残存バグ数の予測
- バグの収束状況の把握
- テスト終了などを検討する際の判断材料
として活用できます。
ただし、信頼度成長曲線だけを見て、
「もうバグは残っていない!」
と断定できるわけではありません。
あくまで品質やテスト終了を判断するための材料の一つと考えることが重要です。
ゴンペルツ曲線とは
ゴンペルツ曲線は、S字型をした成長曲線の一種です。
一般的には次のような式で表現されます。
ただし、今回の問題を解くために数式を暗記する必要はありません。
試験対策では、
ゴンペルツ曲線 → S字型
という対応を覚えておくことが重要です。
ソフトウェア品質の分野では、累積欠陥データを近似して、最終的な欠陥数などを予測するためのモデルとして利用されます。IPAも、信頼度成長曲線の近似モデルとしてゴンペルツモデルを挙げています。
累積誤り検出数とは
累積誤り検出数とは、テスト開始から現在までに検出されたバグの合計数です。
例えば、各段階で次のようにバグが見つかったとします。
| テスト段階 | 新しく発見したバグ | 累積誤り検出数 |
| 1 | 2件 | 2件 |
| 2 | 5件 | 7件 |
| 3 | 8件 | 15件 |
| 4 | 3件 | 18件 |
| 5 | 1件 | 19件 |
後半になるにつれて新しく発見されるバグが減っているため、累積誤り検出数の曲線も徐々に横ばいへ近づいていきます。
「累積」なので、基本的には値そのものが減るのではなく、増加のペースが小さくなるところがポイントです。
体系的位置づけ
今回の問題は、大きく見るとソフトウェア品質管理・テストに関係する問題です。
学習上は、次のように整理すると理解しやすいでしょう。
テクノロジ系
└─ 開発技術
└─ ソフトウェア開発管理技術
└─ ソフトウェア品質管理
└─ ソフトウェア信頼度成長モデル
└─ ゴンペルツ曲線
IPAの応用情報技術者試験シラバスは、試験で必要となる知識・技能を体系的に整理した学習指針として公開されています。なお、シラバスは技術動向などに応じて更新されるため、最新情報はIPA公式サイトで確認するのがおすすめです。
今回の問題の重要ポイント
今回、試験対策として特に覚えておきたいのは次の3点です。
① ゴンペルツ曲線はS字型
まずはこれです。
緩やか → 急増 → 緩やか
この形を覚えておけば、今回のようなグラフ選択問題には対応しやすくなります。
② 縦軸は「累積」のバグ数
累積誤り検出数なので、バグが修正されたからといってグラフが下がるわけではありません。
注目するのは、
「どのくらいの勢いで増えているか」
です。
後半で増加ペースが小さくなり、曲線が横ばいに近づいていくことが重要です。
③ 収束=バグがゼロ、ではない
ここは理解しておきたいポイントです。
曲線が収束してきたからといって、
「すべてのバグを発見した」
と証明されたわけではありません。
信頼度成長曲線から最終累積欠陥数や残存欠陥数などを予測し、品質やテスト終了を判断するための材料として利用します。
まとめ
今回の問題では、ソフトウェア信頼度成長モデルの一つであるゴンペルツ曲線について問われました。
正解は、
ウ:S字型の曲線
です。
試験対策としては、
ゴンペルツ曲線
↓
S字型
↓
緩やか → 急増 → 緩やか
↓
後半で累積バグ数が横ばいに近づく
↓
バグの収束状況を判断する材料になる
という流れで覚えておくと分かりやすいです。
また、
「収束してきた=バグが完全になくなった」ではない
ことにも注意しましょう。
ゴンペルツ曲線は難しそうな名前ですが、この問題で必要なのは意外とシンプルです。
「ゴンペルツが出てきたら、まずS字を思い出す」
これを押さえておきましょう。

コメント