(57)【特許請求の範囲】
【請求項１】
バグ実績数を開発規模で割ったバグ密度実績値をソフトウェアの版毎に記憶する記憶手段と、
前記記憶手段から前記バグ密度実績値を読み出して指数近似し、前記ソフトウェアの版毎のバグ密度近似値を計算する近似値計算手段と、
前記バグ密度実績値を前記バグ密度近似値で割ったばらつきの対数をとった対数値を前記ソフトウェアの版毎に計算し、当該対数値の平均と標準偏差からばらつき許容最小値とばらつき許容最大値を計算するばらつき許容値計算手段と、
前記ソフトウェアの最新版の前記バグ密度近似値に次版の難易度評価値と前記ばらつき許容最小値あるいは前記ばらつき許容最大値を掛けてバグ密度指標値を計算するバグ密度指標値計算手段と、
を有することを特徴とするバグ密度指標値算出装置。
【請求項２】
前記バグ密度実績値を前記ソフトウェアの機能部毎、試験工程毎に記憶し、前記バグ密度指標値を前記ソフトウェアの機能部毎、試験工程毎に計算することを特徴とする請求項１記載のバグ密度指標値算出装置。
【請求項３】
バグ実績数を開発規模で割ったバグ密度実績値をソフトウェアの版毎に記憶する記憶手段から前記バグ密度実績値を読み出して指数近似し、前記ソフトウェアの版毎のバグ密度近似値を計算するステップと、
前記バグ密度実績値を前記バグ密度近似値で割ったばらつきの対数をとった対数値を前記ソフトウェアの版毎に計算し、当該対数値の平均と標準偏差からばらつき許容最小値とばらつき許容最大値を計算するステップと、
前記ソフトウェアの最新版の前記バグ密度近似値に次版の難易度評価値と前記ばらつき許容最小値あるいは前記ばらつき許容最大値を掛けてバグ密度指標値を計算するステップと、
を有することを特徴とするバグ密度指標値算出方法。
【請求項４】
前記バグ密度実績値を前記ソフトウェアの機能部毎、試験工程毎に記憶し、前記バグ密度指標値を前記ソフトウェアの機能部毎、試験工程毎に計算することを特徴とする請求項３記載のバグ密度指標値算出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機能拡充を重ねているソフトウェアのバグ密度指標を算出する技術に関する。
【背景技術】
【０００２】
ソフトウェア開発時の品質管理を定量的に行うために、開発規模、試験項目数、バグ検出数、試験開始からバグ検出までの時間（試験項目消化数）等を計測し、その実績値がある一定の目標値（指標値）に達することを以って、そのソフトウェアの品質の担保を判断することは従来から広く行われている。
【０００３】
その指標値として、推定残存不具合密度、不具合検出密度、テスト項目密度、不具合収束率、テストカバレッジ率などの用語は従来から知られているが、その値の算出方法は明確ではなく、各ソフトウェア開発者個人や組織のノウハウに依存するところと考えられる。
【０００４】
一般的に使用されることが多い指標値のひとつとして、バグ密度（バグ実績数／ソフトウェア開発規模）がある。これは、使用言語や処理内容が似たソフトウェアの開発時に作り込むバグの密度は大体一定であるという前提に立ち、過去の似たソフトウェア開発時のバグ密度実績値を基に、新規開発ソフトウェアのバグ密度指標値を定めるものである。例えば、機能拡充を重ねているソフトウェアの場合、次版開発時のバグ密度指標値として、過去何版かのバグ密度実績の平均値を中心に、ばらつき幅の許容値として±何パーセントかの固定値を加えた値を用いる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平４−１００１６１号公報
【特許文献２】特開平７−１４６８０６号公報
【特許文献３】特開２０００−５６９６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記の方法では、過去のどの範囲の平均値を用いるか、ばらつき幅の許容値を何パーセントにするかなどの根拠を明確にすることは難しく、指標値の目安を定めるためには経験に基づくノウハウを要することになる。
【０００７】
本発明は、上記に鑑みてなされたものであり、機能拡充を重ねているソフトウェアの品質担保を判断する定量的な指標値を算出することを目的とする。
【課題を解決するための手段】
【０００８】
第１の本発明に係るバグ密度指標値算出装置は、バグ実績数を開発規模で割ったバグ密度実績値をソフトウェアの版毎に記憶する記憶手段と、前記記憶手段から前記バグ密度実績値を読み出して指数近似し、前記ソフトウェアの版毎のバグ密度近似値を計算する近似値計算手段と、前記バグ密度実績値を前記バグ密度近似値で割ったばらつきの対数をとった対数値を前記ソフトウェアの版毎に計算し、当該対数値の平均と標準偏差からばらつき許容最小値とばらつき許容最大値を計算するばらつき許容値計算手段と、前記ソフトウェアの最新版の前記バグ密度近似値に次版の難易度評価値と前記ばらつき許容最小値あるいは前記ばらつき許容最大値を掛けてバグ密度指標値を計算するバグ密度指標値計算手段と、を有することを特徴とする。
【０００９】
上記バグ密度指標値算出装着において、前記バグ密度実績値を前記ソフトウェアの機能部毎、試験工程毎に記憶し、前記バグ密度指標値を前記ソフトウェアの機能部毎、試験工程毎に計算することを特徴とする。
【００１０】
第２の本発明に係るバグ密度指標値算出方法は、バグ実績数を開発規模で割ったバグ密度実績値をソフトウェアの版毎に記憶する記憶手段から前記バグ密度実績値を読み出して指数近似し、前記ソフトウェアの版毎のバグ密度近似値を計算するステップと、前記バグ密度実績値を前記バグ密度近似値で割ったばらつきの対数をとった対数値を前記ソフトウェアの版毎に計算し、当該対数値の平均と標準偏差からばらつき許容最小値とばらつき許容最大値を計算するステップと、前記ソフトウェアの最新版の前記バグ密度近似値に次版の難易度評価値と前記ばらつき許容最小値あるいは前記ばらつき許容最大値を掛けてバグ密度指標値を計算するステップと、を有することを特徴とする。
【発明の効果】
【００１１】
本発明によれば、機能拡充を重ねているソフトウェアの品質担保を判断する定量的な指標値を算出することができる。
【図面の簡単な説明】
【００１２】
【図１】本実施の形態におけるバグ密度指標値算出装置の構成を示す機能ブロック図である。
【図２】本実施の形態におけるバグ密度指標値算出装置の処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、本発明の実施の形態について図面を用いて説明する。
【００１４】
図１は、本実施の形態におけるバグ密度指標値算出装置の構成を示す機能ブロック図である。
【００１５】
図１に示すバグ密度指標値算出装置１は、バグ密度実績値計算部１１、バグ密度近似値計算部１２、ばらつき許容値計算部１３、バグ密度指標値計算部１４、および記憶部１５を備える。バグ密度指標値算出装置１が備える各部は、演算処理装置、記憶装置等を備えたコンピュータにより構成して、各部の処理がプログラムによって実行されるものとしてもよい。このプログラムはバグ密度指標値算出装置１が備える記憶装置に記憶されており、磁気ディスク、光ディスク、半導体メモリ等の記録媒体に記録することも、ネットワークを通して提供することも可能である。以下、各部について説明する。
【００１６】
記憶部１５は、機能拡充を重ねているソフトウェアの各版における、開発規模、バグ実績数、バグ密度実績値、および難易度評価値を記憶する。
【００１７】
開発規模はソフトウェアの規模を示す。本実施の形態では、ソフトウェアの機能部（例えば、呼処理機能部、保守機能部等）毎に分計する。
【００１８】
バグ実績数は検出されたソフトウェアの不具合の数を示す。本実施の形態では、試験工程（例えば、結合試験、総合試験等）毎、機能部毎に分計する。
【００１９】
バグ密度実績値は、バグ実績数を開発規模で割った値である。バグ実績数で分計した機能部／試験工程に対応させる。
【００２０】
難易度評価値は、ソフトウェアの開発難易度を反映した数値である。ソフトウェア開発者へのヒアリング結果から予想する。バグ実績数で分計した機能部／試験工程に対応させて設定する。本実施の形態では、最初の版の難易度評価値を１とし、開発が難しい時には＋、易しい時には−に補正する。具体的な補正値は経験から得られる。
【００２１】
バグ密度実績値計算部１１は、ソフトウェアの版毎に、バグ実績数と開発規模を記憶部１５から読み出し、バグ実績数を開発規模で割ってバグ密度実績値を計算し、バグ密度実績値を記憶部１５に記憶させる。
【００２２】
バグ密度近似値計算部１２は、記憶部１５に記憶されたバグ密度実績値を指数近似して、ソフトウェアの版毎のバグ密度近似値を計算する。バグ密度実績値が０の版は近似計算の基とする値の対象外とする。
【００２３】
ばらつき許容値計算部１３は、バグ密度実績値をバグ密度近似値で割ったばらつきの対数を取った対数値の平均と標準偏差からばらつき許容最小値とばらつき許容最大値を計算する。具体的には、ソフトウェアの版毎に、記憶部１５からバグ密度実績値を読み出してバグ密度近似値計算部１２が計算したバグ密度近似値で割ってばらつきを計算し、ばらつきの対数を計算した上で、全ての版（バグ実績数が０の版は除く）の対数値を基に平均μと標準偏差σを計算する。そして、（μ−σ）の指数を計算した値をばらつき許容最小値、（μ＋σ）の指数を計算した値をばらつき許容最大値とする。ばらつきの幅を±σではなく、例えば±２σあるいは±０．５σ等としてもよい。ばらつきの幅を広くあるいは狭くするかは経験から得られる。本実施の形態では目安として±σを用いる。なお、対数と指数を計算する際の底は同一、例えば自然対数の底とする。
【００２４】
バグ密度指標値計算部１４は、バグ密度近似値計算部１２が計算した開発完了済の最新版のバグ密度近似値と最新版の次の版の難易度評価値を掛けた値に、ばらつき許容最小値を掛けることにより次版におけるバグ密度指標許容最小値を計算し、ばらつき許容最大値を掛けることにより次版におけるバグ密度指標許容最大値を計算する。
【００２５】
また、入力部２は、版毎、機能部／試験工程毎の、開発規模、バグ実績数、および難易度評価値を入力し、記憶部１５に記憶させる。バグ密度実績値は、バグ密度実績値計算部１１が計算して記憶部１５に記憶させる。
【００２６】
出力部３は、バグ密度指標値計算部１４が計算した次版における機能部／試験工程毎のバグ密度指標値（バグ密度指標許容最小値、バグ密度指標許容最大値）を出力する。次版のバグ密度実績値がバグ密度指標許容最小値からバク密度指標許容最大値までの範囲に収まることを以って、ソフトウェアの品質担保を判断する。
【００２７】
次に、バグ密度指標値算出装置１の処理の流れについて説明する。
【００２８】
図２は、バグ密度指標値算出装置１の処理の流れを示すフローチャートである。
【００２９】
まず、バグ密度実績値計算部１１が記憶部１５から各版のバグ実績数と開発規模を読み出し、バグ実績数を開発規模で割ってバグ密度実績値Ｘ（ｉ）を計算する（ステップＳ１１）。ここでｉは版数を示し、ｍ（最古の版）≦ｉ≦ｎ（開発完了済の最新の版）を満たす。なお、必ずしもｍ＝１でなくてもよい。
【００３０】
続いて、バグ密度近似値計算部１２がｍ≦ｉ≦ｎの範囲のバグ密度実績値Ｘ（ｉ）を基に指数近似により各版のバグ密度近似値Ｘ’（ｉ）を計算する（ステップＳ１２）。バグ密度近似値を計算する際に、バグ実績数が０となる版ｊ、つまりＸ（ｊ）＝０となる版ｊは対象外とする。対象外とした版ｊのバグ密度近似値Ｘ’（ｊ）も知ることができる。
【００３１】
また、ばらつき許容値計算部１３がｍ≦ｉ≦ｎの範囲のばらつきＣ（ｉ）＝Ｘ（ｉ）／Ｘ’（ｉ）を計算し（ステップＳ１３）、ばらつきＣ（ｉ）の対数値ｌｎ［Ｃ（ｉ）］の平均μと標準偏差σを計算する（ステップＳ１４）。このときもバグ実績数が０の版は対象外とする。
【００３２】
そして、次版ｎ＋１における、ばらつき許容最小値Ｃｍｉｎ（ｎ＋１）とばらつき許容最大値Ｃｍａｘ（ｎ＋１）を計算する（ステップＳ１５）。ばらつき許容最小値Ｃｍｉｎ（ｎ＋１）とばらつき許容最大値Ｃｍａｘ（ｎ＋１）はそれぞれ、Ｃｍｉｎ（ｎ＋１）＝ｅｘｐ（μ−σ）、Ｃｍａｘ（ｎ＋１）＝ｅｘｐ（μ＋σ）で計算する。
【００３３】
最後に、バグ密度指標値計算部１４が最新版ｎのバグ密度近似値Ｘ’（ｎ）と次版ｎ＋１の難易度評価値Ｄ（ｎ＋１）とばらつき許容最小値Ｃｍｉｎ（ｎ＋１）、ばらつき許容最大値Ｃｍａｘ（ｎ＋１）から次版ｎ＋１のバグ密度指標許容最小値Ｚｍｉｎ（ｎ＋１）とバグ密度指標許容最大値Ｚｍａｘ（ｎ＋１）を計算する（ステップＳ１６）。バグ密度指標許容最小値Ｚｍｉｎ（ｎ＋１）とバグ密度指標許容最大値Ｚｍａｘ（ｎ＋１）はそれぞれ、Ｚｍｉｎ（ｎ＋１）＝Ｘ’（ｎ）×Ｄ（ｎ＋１）×Ｃｍｉｎ（ｎ＋１）、Ｚｍａｘ（ｎ＋１）＝Ｘ’（ｎ）×Ｄ（ｎ＋１）×Ｃｍａｘ（ｎ＋１）で計算する。
【００３４】
次に、バグ密度実績値に指数近似を用いることができる理由について説明する。
【００３５】
機能拡充を重ねているソフトウェアの場合、ソフトウェア開発者が異なっていても、ノウハウを引き継いだ組織が、一般的に、検出したバグについてその都度、水平展開・歯止めを施すことを繰り返すことから、ノウハウが継続的に蓄積され、試験工程における検出バグ密度は平均的には版数が進むに連れて減少傾向を示すものと考えられる。ただし、版によっては開発内容の難易度に差があり、難しい開発の場合にはバグ密度が上がり、易しい開発の場合にはバグ密度が下がるものと考えられる。
【００３６】
ここで、ある版ｉにおけるバグ密度実績値Ｘ（ｉ）に対するその次の版ｉ＋１におけるバグ密度実績値Ｘ（ｉ＋１）の比をＤ（ｉ＋１）＝Ｘ（ｉ＋１）／Ｘ（ｉ）と定義し、Ｘ（ｉ＋１）について移項すると、Ｘ（ｉ＋１）＝Ｘ（ｉ）×Ｄ（ｉ＋１）となる。ｉ＝０の時のＸ（０）を定数Ａと置くと、Ｘ（１），Ｘ（２），・・，Ｘ（ｉ）は以下となる。
【００３７】
Ｘ（１）＝Ｘ（０）×Ｄ（１）＝Ａ×Ｄ（１）
Ｘ（２）＝Ｘ（１）×Ｄ（２）＝Ａ×Ｄ（１）×Ｄ（２）
・
・
Ｘ（ｉ）＝Ｘ（ｉ−１）×Ｄ（ｉ）＝Ａ×Ｄ（１）×Ｄ（２）・・・×Ｄ（ｉ）
【００３８】
Ｄ（ｉ）が常に一定の値Ｄであった場合には、Ｘ（ｉ）＝Ａ×Ｄｉ、つまり、版毎に異なるＤ（ｉ）をその相乗平均値Ｄで近似するとバグ密度実績値Ｘ（ｉ）は指数関数で近似できる。０＜Ｄ＜１のときＸ（ｉ）は版が進むに連れて０に近づく。
【００３９】
Ｄ（ｉ）の意味は、版毎の開発内容の難易度に対応するものと解釈でき、Ｄ（ｉ＋１）＝１のとき、Ｘ（ｉ＋１）＝Ｘ（ｉ）、つまり、版ｉ＋１は版ｉと比べて難しくも易しくもなく、バグ密度は同じであると理解できる。機能拡充を重ねているソフトウェアの場合、現実的にはＤは１に近く１よりも小さい値、例えば、０．９程度になることが観測できる。
【００４０】
次に、ばらつきの許容幅の算出について説明する。
【００４１】
バグ密度実績値が指数関数で近似できることから、版毎のバグ密度実績値のばらつきは正規分布ではなく、対数正規分布に従うと考えることができる。版数ｉにおけるバグ密度実績値Ｘ（ｉ）のバグ密度近似値Ｘ’（ｉ）に対するばらつきＣ（ｉ）をＣ（ｉ）＝Ｘ’（ｉ）／Ｘ（ｉ）とする。ばらつきＣ（ｉ）は、対数正規分布に従うと考えられることから、Ｃ（ｉ）の対数値ｌｎ［Ｃ（ｉ）］の平均μと標準偏差σを計算し、ｅｘｐ（μ−σ）をばらつき許容最小値、ｅｘｐ（μ＋σ）をばらつき許容最大値と考えることができる。
【００４２】
統計学で、正規分布では、平均μと標準偏差σとで示す範囲内に入る標本の度数は、μ±σで全体の約２／３、μ±２σで全体の約１９／２０であることが知られている。許容幅をより広くあるいは狭くする場合は、許容幅の基にする値を±σではなく、例えば±２σあるいは±０．５σ等とする。
【００４３】
次に、機能拡充をかさねているソフトウェアのバグ密度指標値算出方法について、本発明による方法と従来から一般的に使用されている従来方法とを比較する。
【００４４】
従来方法では、過去何版かのバグ密度実績値の平均値を中心に、ばらつきの許容幅として±何パーセントかの固定値を加えた値をバグ密度指標値として用いる。以下、従来方法について具体的に説明する。
【００４５】
過去ｋ版のバグ密度実績値の平均値Ｘ”（ｎ）は以下の式で表される。
【００４６】
Ｘ”（ｎ）＝（Ｘ（ｎ−ｋ＋１）＋・・・＋Ｘ（ｎ）））／ｋ
【００４７】
ばらつきの許容幅を±εとすると、次版ｎ＋１におけるバグ密度指標許容最小値Ｙｍｉｎ（ｎ＋１）、バグ密度指標許容最小値Ｙｍａｘ（ｎ＋１）は以下の式で表される。
【００４８】
Ｙｍｉｎ（ｎ＋１）＝Ｘ”（ｎ）×Ｄ（ｎ＋１）×（１−ε）
Ｙｍａｘ（ｎ＋１）＝Ｘ”（ｎ）×Ｄ（ｎ＋１）×（１＋ε）
【００４９】
従来方法では、ｋを如何に取るかということに理論的根拠は無く、簡便性を考慮して例えば「５」等と決められる場合が多い。一般的に、バグ密度実績値Ｘ（ｉ）は版数ｉが進むに連れて減少する傾向があるため、ｋを大きく取るほどバグ密度指標値を高く算出することになる。逆に、ｋを小さく取るほど直近のバグ密度実績値に近い値を算出することになるが、その場合、直近の版のバグ密度実績値の平均からのずれが大きかった場合、例えば直近の版の難易度が極端に難しかったり易しかったりした場合、そのずれの影響を大きく受けることになる。
【００５０】
本発明による方法では、バグ密度実績値がわかっている版を基にバグ密度を指数近似で算出するので、上記の問題点が解消される。
【００５１】
また、従来方法では、εを如何に設定するかということに理論的根拠は無く、過去の実績からのノウハウや、簡便性を考慮して例えば「３０％」等と決められる場合が多い。設定したεが妥当であるか否かは、次版の結果が出てから見直しの要否を検討する必要がある。また、バグ密度実績値のばらつきは正規分布よりも対数正規分布に従っているため、相加平均を中心に大小均等にばらつき許容幅を設定すると、最大値側に厳しい許容値となる。逆に、最大値側にあわせて許容幅を設定すると、許容最小値が負の値（意味のない値）となる場合もある。
【００５２】
本発明による方法では、統計学的手法を用いており、例えば、Ｃｍｉｎ（ｎ＋１）＝ｅｘｐ（μ−σ）、Ｃｍａｘ（ｎ＋１）＝ｅｘｐ（μ＋σ）とした場合、次版のバグ密度実績値は、難易度評価をしていない状態で、約２／３の確率でバグ密度指標の許容範囲内に収まることが期待できる。また、許容最小値が負の値となることもない。
【００５３】
以上説明したように、本実施の形態によれば、バグ密度近似値計算部１２がバグ密度実績値を指数近似してバグ密度近似値を計算し、ばらつき許容値計算部１３がバグ密度実績値をバグ密度近似値で割って各版のばらつきを求め、ばらつきの対数値の平均と標準偏差からばらつき許容最小値とばらつき許容最大値を計算し、バグ密度指標値計算部１４が最新版のバグ密度近似値に次版の難易度評価値とばらつき許容最小値、ばらつき許容最大値をそれぞれ掛けて次版のバグ密度指標値を計算することにより、機能拡充を重ねているソフトウェアの次版開発時の試験工程におけるソフトウェアの品質担保を判断する定量的な指標値を算出することできる。本発明による指標値の算出は、従来から一般的に使用される方法よりも、算出のためのノウハウを要さず、精度を期待できる。
【符号の説明】
【００５４】
１…バグ密度指標値算出装置
１１…バグ密度実績値計算部
１２…バグ密度近似値計算部
１３…ばらつき許容値計算部
１４…バグ密度指標値計算部
１５…記憶部
２…入力部
３…出力部
【図１】
0005749214.tif 000002
【図２】
0005749214.tif 000003