信頼度成長曲線のS字曲線を描きたい

n-ozawan

皆さん、こんにちは。LP開発グループのn-ozawanです。
アマゾン熱帯雨林ではその古い土壌や激しい雨により、作物に必要なリンが不足しがちですが、サハラ砂漠からリンを含む砂が風で運ばれ、アマゾン熱帯雨林に供給されることでバランスが保たれているのだそうです。

本題です。
テスト工程にて品質管理を行う際、信頼度成長曲線で障害発生状況などを分析します。この信頼度成長曲線はS字の曲線を描くのですが、どうやって描いているのでしょうか。適当に・・・、という訳にも行きません。今回は信頼度成長曲線の描き方を調べてみました。

信頼度成長曲線

信頼度成長曲線とは?

信頼度成長曲線は、主にシステム開発におけるテスト工程で、不具合の累積発見数と、システムの品質が改善していく様子を表したグラフです。品質管理においては、このグラフからシステムに潜在する不具合の数を予測し、テストが収束に向かっているか判断します。

信頼度成長曲線はS字の曲線を描いており、序盤、中盤、終盤の3段階で分析します。

もし、実際に不具合が信頼度成長曲線とは異なる発生をしている場合は、プロジェクトに何かしらの問題が潜んでいる可能性が高いです。信頼度成長曲線はそういった問題を発見するのに役立ちます。

ゴンペルツ曲線

ゴンペルツ曲線は、S字の中でも立ち上がりと収束が非対称になりやすい形状を表現できるモデルです。序盤から中盤にかけて成長が早く、終盤にかけてはゆるやかに収束するS字曲線を描きます。

システム開発では、初期に多くのバグが発見され、中盤以降は発見ペースが鈍化します。ゴンベルツ曲線は、この「最初が早く、後半が遅い」という特徴を再現できるため、信頼度モデルでは良く使われる曲線です。

ゴンペルツ曲線の式は以下の通りです。

G (t) = K exp ( b exp ( c t ) )

Kは予想する不具合の累積件数です。bは初期の立ち上がりに影響し、値が大きいほど立ち上がりが遅くなります。cは成長(増加)の速さに影響し、値が大きいほど中盤の立ち上がりが急になります。tは時間や日数、工数などです。

過去の実績などからbcを決定するのですが、実績がない場合は手動で調整します。以下は「テストの実施日数が500日で、予想する障害件数が100件の場合」です。tは横軸になります。

シグモイド曲線

シグモイド曲線は、左右が比較的対称なS字を表現しやすいモデルです。「立ち上がりが遅い→中盤で最大→終盤で収束する」という3段階が、ある程度対称に進む状況で扱いやすいです。また、統計学や機械学習でも広く使われているロジスティック関数などにも使われています。

シグモイド曲線を使う場面は、テストの投入が計画的で、観測の粒度も安定している場合です。例えば、毎週同じ規模のテストを回し、観測される不具合の性質が大きく変わらない場合は、対称なS字が現れやすいです。そのため、まずはシグモイドで当てはめ、うまくいかないようであれば他モデルを検討する、という進め方もアリかもしれません。

シグモイド曲線の式は以下の通りです。

σ ( x ) = L 1 + e k ( t t 0 )

L は予想する不具合の累積件数です。k は成長(増加)の速さに影響し、値が大きいほど中盤の立ち上がりが急になります。t は時間や日数、工数などで、t0 は変曲点(増加率が最大になる時刻)となります。

シグモイド曲線も、過去の実績などから各係数を決定するのですが、実績がない場合は手動で調整します。以下は「テストの実施日数が500日で、予想する障害件数が100件の場合」です。tは横軸になります。

t0は実施日数の半分の250にすることで、綺麗な左右対称のS字が描けます。これを250以下にすると序盤から中盤にかけて成長するS字曲線となり、250以上にすると中盤から終盤にかけて成長するS字曲線になります。

おわりに

信頼度成長曲線はそのプロジェクトの特性に合わせて描く曲線を選択する必要があります。また、信頼度成長曲線を描く方法は他もありますので、興味ある方は調べてみてください。

ではまた。

Recommendおすすめブログ