(58)【調査した分野】(Int.Cl.,DB名)
ソフトウェアを品質によって分類した品質グループ毎に、ソフトウェアに関する情報であるソフトウェア情報からそのソフトウェアに混入している欠陥の予測数を計算する予測ロジックを記憶した記憶装置を用い、ソフトウェアに混入している欠陥の数を予測する欠陥数予測プログラムであり、
前記記憶装置に記憶された各品質グループの予測ロジックを用いて、対象のソフトウェアについてのソフトウェア情報から、前記対象のソフトウェアが各品質グループに属する場合に混入している欠陥の予測数を計算する予測ロジック計算処理と、
対象のソフトウェアについてのソフトウェア情報から、前記対象のソフトウェアが各品質グループに属する確率を計算する確率計算処理と、
前記各品質グループについて、前記確率計算処理で計算した前記対象のソフトウェアがその品質グループに属する確率を、前記予測ロジック計算処理で計算した前記対象のソフトウェアがその品質グループに属する場合に混入している欠陥の予測数に乗じて、重み付き予測数を計算し、計算した重み付き予測数を合計して、前記対象のソフトウェアに混入している欠陥の予測数を計算する混入予測数計算処理と
をコンピュータに実行させることを特徴とする欠陥数予測プログラム。
【発明を実施するための形態】
【0016】
実施の形態1.
図1は、実施の形態1に係る欠陥数予測装置10の構成図である。
欠陥数予測装置10は、予測ロジック生成部11と、予測ロジック記憶部12と、確率計算部13と、予測ロジック計算部14と、混入予測数計算部15とを備える。
【0017】
欠陥数予測装置10の処理は、事前準備と、欠陥数予測との2つに分けられる。
事前準備に関するのが、予測ロジック生成部11と、予測ロジック記憶部12とである。事前準備では、予測ロジック生成部11が、ソフトウェアの品質によって分類した品質グループ毎に予測ロジックを生成する。そして、予測ロジック記憶部12が、予測ロジック生成部11が生成した予測ロジックを記憶する。
欠陥数予測に関するのが、確率計算部13と、予測ロジック計算部14と、混入予測数計算部15とである。欠陥数予測では、確率計算部13が、対象のソフトウェアが各品質グループに属する確率を計算する。また、予測ロジック計算部14が、予測ロジック記憶部12が記憶した各予測ロジックを用いて、対象のソフトウェアが各品質グループに属する場合に混入している欠陥の予測数を計算する。そして、混入予測数計算部15が、品質グループ毎に、予測ロジック計算部14が計算した予測数に、確率計算部13が計算した確率を乗じて、重み付きの予測数を計算し、計算した重み付き予測数を合計して、対象のソフトウェアに混入している欠陥の予測数を計算する。
【0018】
事前準備について説明する。
事前準備では、既存ソフトウェアについてのソフトウェア情報と、既存ソフトウェアに混入していた欠陥の数とに基づき、予測ロジックが生成される。
ソフトウェア情報とは、ソフトウェアに関する情報である。例えば、設計工程であれば、設計書の頁数、レビュー時間、誤り指摘数等である。また、試験設計工程であれば、試験項目数、レビュー時間、誤り指摘数等である。また、製作工程であれば、開発量、コードレビュー時間、誤り指摘数等である。試験工程であれば、試験対象量、試験項目数、誤り指摘数等である。
既存ソフトウェアに混入していた欠陥の数は、出荷後に発生した不具合から特定された欠陥の数である。混入した開発フェーズ毎に分類して集計する。
【0019】
図2は、予測ロジックの分類の説明図である。
既存のソフトウェアを品質によって分類した品質グループ毎、ソフトウェアの開発を行う開発チームとソフトウェアとの条件毎、ソフトウェアの開発工程毎に、予測ロジックが生成される。
【0020】
ここでは、品質によって分類した品質グループを、品質が良いグループと、品質が悪いグループとの2つの品質グループとしている。
ソフトウェアの開発を行う開発チームの条件とは、開発を行う開発チームの構成員の経験年数や、構成人数等であり、ソフトウェアの条件とは、画面系のソフトウェアであるか、制御系のソフトウェアであるか、通信系のソフトウェアであるか等のソフトウェアの対象や、開発に用いる言語等である。ここでは、これらの条件を、開発チーム1,2,3のどの開発チームで開発されたかとしている。
ここでは、ソフトウェアの開発工程を、外部設計工程、内部設計工程、製作工程、単体試験工程、結合試験工程としている。
【0021】
図3は、事前準備の処理を示すフローチャートである。
(S11:分類処理)
予測ロジック生成部11は、既存のソフトウェアについてのソフトウェア情報と、混入していた欠陥の数との情報の入力を受け付ける。そして、予測ロジック生成部11は、受け付けた情報を、品質グループ毎、条件毎、開発工程毎に分類する。なお、品質グループ毎、条件毎、開発工程毎に分類された各組について、受け付けた情報は回帰分析が可能な程度の件数必要である。
【0022】
なお、品質によって分類する方法としては、例えば、1KL(キロライン)当たりの出荷後の不具合の件数が閾値n件未満のソフトウェアを品質の良いグループとし、閾値n件以上のソフトウェアを品質の悪いグループとする。条件毎、開発工程毎に分類するのは、その条件に合致するソフトウェアであるか否か、その開発工程の情報であるか否かを見ればよい。
【0023】
(S12:予測ロジック生成処理)
予測ロジック生成部11は、品質グループ毎、条件毎、開発工程毎の各組について、予測ロジックを生成する。ここでは、予測ロジック生成部11は、回帰分析を用いて、各組についてソフトウェア情報から欠陥の数を予測する予測式を生成する。
【0024】
回帰分析の予測式は、線形の予測式であれば、一般的に以下の式で表される。
(予測式)目的変数=A×説明変数1+B×説明変数2+C×説明変数3+・・・+D
ここで、A,B,Cは回帰係数であり、Dは定数である。
【0025】
そこで、例えば、予測式は、工程毎に以下のようなものが考えられる。そして、回帰分析により、各予測式における回帰係数や定数を決定することができ、予測式を完成させることができる。
外部設計工程又は内部設計工程の場合
(1)混入欠陥の予測数=A×誤り指摘数+D
(2)混入欠陥の予測数=B×開発量(設計書の頁数等)+C×設計書レビュー時間+E
製作工程の場合
(3)混入欠陥の予測数=A×誤り指摘数+D
(4)混入欠陥の予測数=B×開発量(プログラムの行数等)+C×コードレビュー時間+E
単体試験工程又は結合試験工程の場合
(5)混入欠陥の予測数=A×誤り指摘数+D
(6)混入欠陥の予測数=B×試験対象量+C×試験項目数+E
なお、(1)〜(6)の予測式において、A,B,Cは回帰係数であり、D,Eは定数である。また、(1)〜(6)の予測式は一例であり、他にも様々な予測式が考えられる。
【0026】
また、混入欠陥の予測数は、外部設計工程又は内部設計工程又は製作工程であれば、設計書やコードが作成された時点において混入している欠陥の予測数である。つまり、設計書レビューやコードレビューによって欠陥が除去される前の段階における欠陥の予測数である。また、混入欠陥の予測数は、単体試験工程又は結合試験工程であれば、試験開始前の時点において混入している欠陥の予測数である。つまり、試験によって欠陥が除去される前の段階における欠陥の予測数である。
【0027】
予測ロジック生成部11は、品質グループ毎、条件毎、開発工程毎の各組について、多数の予測式から、最も予測精度が高いものを選択する。予測精度が高いものとは、回帰分析での寄与率が大きく、標準誤差が小さいものである。但し、2つ以上の変数間での相関が強い場合は、予測式が不安定になるので除外する。
【0028】
(S13:予測ロジック記憶処理)
予測ロジック記憶部12は、S12で生成された、各組についての予測式を、予測ロジックとして記憶する。
【0029】
欠陥数予測について説明する。
欠陥数予測では、事前準備で生成された予測ロジックを用いて、対象のソフトウェアに混入している欠陥の予測数が計算される。
【0030】
図4は、欠陥数予測の処理のフローチャートである。
(S21:確率計算処理)
確率計算部13は、対象のソフトウェアについてのソフトウェア情報の入力を受け付ける。そして、確率計算部13は、受け付けた情報に基づき、対象のソフトウェアが各品質グループに属する確率を計算する。ここで受け付けるソフトウェア情報は、対象の開発工程までに得られる情報である。したがって、開発工程が進むほど、受け付けるソフトウェア情報も多くなる。
【0031】
ここでは、確率計算部13は、一般的な判別分析手法を用いて、対象のソフトウェアが品質が良いグループに属する確率と、品質が悪いグループに属する確率とを計算する。一例としてマハラノビス距離を用いた計算を次に示す。
具体的には、確率計算部13は、受け付けた情報のうちの少なくとも一部を変数として、各品質グループの中心(平均値)からのマハラノビス距離を計算する。例えば、3変数の場合のマハラノビス距離D
2は、数1で定義される。
【数1】
ここで、x^,y^,z^は、品質グループの平均値である。また、Sx
2は、xの分散であり、Sy
2は、yの分散であり、Sz
2は、zの分散である。また、Sxyは、xとyの共分散であり、Sxzは、xとzの共分散であり、Syzは、yとzの共分散である。
【0032】
一般に、マハラノビス距離D
2は、カイ二乗分布に従うことが知られている。そこで、確率計算部13は、対象のソフトウェアが品質が良いグループに属する確率Raと、品質が悪いグループに属する確率Rbとを次の式で計算する。
Ra=F(Da
2,k)/(F(Da
2,k)+(F(Db
2,k))
Rb=F(Db
2,k)/(F(Da
2,k)+(F(Db
2,k))
なお、Ra+Rb=1である。
Da
2は、品質が良いグループの中心からのマハラノビス距離である。
Db
2は、品質が悪いグループの中心からのマハラノビス距離である。
kは、自由度であり、利用する変数の個数に等しい。
F(Da
2,k)は、品質が良いグループの中心からのマハラノビス距離Da
2についてのカイ二乗分布における右側確率であり、F(Db
2,k)は、品質が悪いグループの中心からのマハラノビス距離Db
2についてのカイ二乗分布における右側確率である。カイ二乗分布における右側確率とは、カイ二乗分布において、指定された点よりも右側になる確率である。
【0033】
品質が良いグループの中心からのマハラノビス距離Da
2と品質が悪いグループの中心からのマハラノビス距離Db
2との関係が、Da
2<Db
2であれば品質が良いグループに属しており、Da
2>Db
2であれば品質が悪いグループに属しているとする。事前準備で予測ロジックの生成に使用した既存ソフトウェアに対して、マハラノビス距離に基づき、品質の良いグループと品質の悪いグループとのどちらに属しているかを判定する。そして、判定した結果が、上述した出荷後の不具合の件数が閾値n件未満か否かにより既存ソフトウェアの品質を判定した結果と不一致になる割合を誤判別率とする。誤判別率は、判別分析手法の判別精度を表す。一般的に品質が良いグループと品質が悪いグループの統計的な分布の重なりが多いと誤判別率が大きくなる。誤判別率は、利用する変数の個数によっても変化する。このため確率計算部13は、開発フェーズで利用可能なソフトウェア情報の中から誤判別率が最も小さくなるソフトウェア情報の組合せを変数として選択して品質グループに属する確率を計算する。
【0034】
(S22:予測ロジック計算処理)
予測ロジック計算部14は、予測ロジック記憶部12に記憶された、対応する条件、及び、対応する開発工程についての予測ロジックであって、各品質グループについての予測ロジックを用い、対象のソフトウェアが各品質グループに属する場合に混入している欠陥の予測数を計算する。
例えば、対象のソフトウェアが開発チーム1で開発されており、現在内部設計工程である場合、開発チーム1でかつ内部設計工程についての、品質が良いグループの予測ロジック(
図2の予測式1−2)と、品質が悪いグループの予測ロジック(
図2の予測式4−2)とが用いられる。そして、内部設計工程において、対象のソフトウェアが品質が良いグループに属する場合に混入している欠陥の予測数Yaと、品質が悪いグループに属する場合に混入している欠陥の予測数Ybとが計算される。
【0035】
(S23:混入予測数計算処理)
混入予測数計算部15は、各品質グループについて、S21で計算されたその品質グループに属する確率を、S22で計算された対象のソフトウェアがその品質グループに属する場合に混入している欠陥の予測数に乗じて、重み付きの予測数を計算する。そして、混入予測数計算部15は、計算した重み付きの予測数を合計して、対象のソフトウェアに混入している欠陥の予測数を計算する。
上述した、対象のソフトウェアが開発チーム1で開発されており、現在内部設計工程である場合、内部設計工程における混入欠陥数Xは、X=Ra×Ya+Rb×Ybによって計算される。
【0036】
以上のように、実施の形態1に係る欠陥数予測装置10では、品質グループ毎、開発の条件毎、開発工程毎に、過去の実績から回帰分析等により予測ロジックが生成される。そして、生成された予測ロジックと、対象のソフトウェアが各品質グループに属する確率とを用いて、対象のソフトウェアに混入している欠陥の予測数を計算する。これにより、各開発工程において混入している欠陥の数を的確に予測することが可能である。
【0037】
また、各品質グループに属する確率を計算する際、誤判別率が小さくなるソフトウェア情報の組合せを変数として採用するため、各品質グループに属する確率の精度が高い。そのため、各開発工程において混入している欠陥の数を的確に予測することが可能である。
【0038】
なお、上記説明では、既存ソフトウェアに対してマハラノビス距離を用いて判定した結果が、出荷後の不具合の件数が閾値n件未満か否かにより既存ソフトウェアの品質を判定した結果と不一致になる確率を誤判別率とした。つまり、「誤判別率=不一致件数/既存ソフトウェアの全件数」であった。
しかし、品質の良いグループと品質の悪いグループとのそれぞれについて誤判別率を計算し、各グループの誤判別率が出来る限り小さくなるようなソフトウェア情報の組合せを変数として選択して用いるようにしてもよい。この場合、既存ソフトウェアのうち出荷後の不具合の件数に基づき品質が良いと判定された既存ソフトウェアを既存ソフトウェアAとし、品質が悪いと判定された既存ソフトウェアを既存ソフトウェアBとする。すると、「品質が良いグループの誤判別率=既存ソフトウェアAのうちマハラノビス距離により品質が悪いと判定された件数/既存ソフトウェアAの件数」である。また、「品質が悪いグループの誤判別率=既存ソフトウェアBのうちマハラノビス距離により品質が良いと判定された件数/既存ソフトウェアBの件数」である。
【0039】
また、上記説明では、各開発工程についての予測式が、その開発工程で得られるソフトウェア情報のみを入力とする例を挙げた。しかし、
図5(a)に示すように、その開発工程までに得られるソフトウェア情報であれば、他の開発工程で得られるソフトウェア情報であっても入力としてよい。これにより、より高い精度で欠陥の予測数を計算することが可能になる。つまり、製作工程における混入欠陥の予測数を計算する場合、製作工程で得られるソフトウェア情報だけでなく、外部設計工程や内部設計工程で得られるソフトウェア情報も用いてもよい。
【0040】
また、後の開発工程に進んだ後に、改めて前の開発工程で混入していた欠陥の予測数を計算しなおしてもよい。この場合、
図5(b)に示すように、後の開発工程で得られるソフトウェア情報も入力としてよい。これにより、より高い精度で欠陥の予測数を計算することが可能になる。つまり、単体試験工程の後に、製作工程における混入欠陥の予測数を計算する場合、外部設計工程や内部設計工程や製作工程で得られるソフトウェア情報だけでなく、単体試験工程で得られるソフトウェア情報も用いてもよい。
【0041】
実施の形態2.
実施の形態2では、混入している欠陥の予測数に基づき、次の開発工程へ進めるか否かの品質判定を行う方法について説明する。
実施の形態2では、実施の形態1と同じ部分については説明を省略し、実施の形態1と異なる部分について説明する。
【0042】
図6は、実施の形態2に係る欠陥数予測装置10の構成図である。
実施の形態2に係る欠陥数予測装置10は、
図1に示す実施の形態1に係る欠陥数予測装置10が備える機能に加え、残予測数計算部16と、閾値記憶部17と、残予測数判定部18とを備える。
【0043】
欠陥数予測装置10の処理は、事前準備と、欠陥数予測と、品質判定との3つに分けられる。事前準備と欠陥数予測とは、実施の形態1と同じであるため、説明を省略する。
品質判定に関するのが、残予測数計算部16と、閾値記憶部17と、残予測数判定部18とである。品質判定では、残予測数計算部16が、混入予測数計算部15が計算した欠陥の予測数から、対象の開発工程で発見された欠陥の数を減じて、対象の開発工程において残っている欠陥の予測数である残予測数を計算する。閾値記憶部17は、開発工程毎に、品質判定における閾値を記憶する。そして、残予測数判定部18は、残予測数計算部16が計算した残予測数が、閾値記憶部17が記憶した閾値以上であるか否かを判定する。
【0044】
図7は、品質判定の処理のフローチャートである。
(S31:残予測数計算処理)
残予測数計算部16は、欠陥数予測において計算された、対象の開発工程における欠陥の予測数から、対象の開発工程で発見された欠陥の数を減じて、残予測数を計算する。
対象の開発工程で発見された欠陥の数とは、例えば、外部設計工程又は内部設計工程であれば、設計書のレビューにより発見された欠陥の数である。また、製作工程であれば、コードレビューによって発見された欠陥の数である。また、単体試験工程又は結合試験工程であれば、試験によって発見された欠陥の数である。
【0045】
(S32:残予測数判定処理)
残予測数判定部18は、S31で計算された残予測数が、閾値記憶部17が対象の開発工程について記憶した閾値以上であるか否かを判定する。
残予測数が閾値以上である場合、残っている欠陥の数が多く、次の開発工程へ進む前に品質を改善する必要があると判断される。一方、残予測数が閾値未満である場合、残っている欠陥の数が少なく、次の開発工程へ進んでよいと判断される。
【0046】
なお、閾値記憶部17は、条件毎に閾値を記憶していてもよい。そして、対応する条件についての閾値を用いてもよい。また、閾値記憶部17は、品質グループ毎に閾値を記憶していてもよい。
【0047】
以上のように、実施の形態2に係る欠陥数予測装置10では、欠陥の残予測数に基づき、次の開発工程に進んでよいか否かを判定する。これにより、欠陥が多い状態で開発工程を進めることにより、後の開発工程で多くの欠陥が混入することを防止できる。その結果、品質の低下や、手戻りによる開発の遅れを防止できる。
【0048】
実施の形態3.
実施の形態3では、次の開発工程へ進む前に品質を改善する必要があると品質判定で判断された場合における残作業数の計算方法について説明する。
実施の形態3では、実施の形態2と同じ部分については説明を省略し、実施の形態2と異なる部分を説明する。
【0049】
図8は、実施の形態3に係る欠陥数予測装置10の構成図である。
実施の形態3に係る欠陥数予測装置10は、
図6に示す実施の形態2に係る欠陥数予測装置10が備える機能に加え、残作業数計算部19を備える。
【0050】
欠陥数予測装置10の処理は、事前準備と、欠陥数予測と、品質判定と、残作業数予測との4つに分けられる。事前準備と欠陥数予測と品質判定とは、実施の形態2と同じであるため、説明を省略する。
残作業数予測に関するのが、残作業数計算部19である。残作業数予測では、残作業数計算部19が、残予測数計算部16が計算した残予測数に基づき、追加で行う必要があるレビューの時間や、追加で行う必要がある試験の項目数を計算する。
【0051】
図9は、残作業数予測の処理のフローチャートである。
(S41:検出効率計算処理)
残作業数計算部19は、対象のソフトウェアのソフトウェア情報に基づき、欠陥の検出効率を計算する。
具体的には、残作業数計算部19は、対象の開発工程が外部設計工程又は内部設計工程又は製作工程であれば、その開発工程で発見された欠陥の数を、その開発工程におけるレビュー時間で除して、欠陥の検出効率として計算する。また、残作業数計算部19は、対象の開発工程が単体試験工程又は結合試験工程であれば、その開発工程で発見された欠陥の数を、その開発工程における試験項目数で除して、欠陥の検出効率として計算する。
【0052】
(S42:残作業予測処理)
残作業数計算部19は、S31で計算された残予測数を、S41で計算された欠陥検出効率で除して、残作業数を計算する。
残作業数は、対象の開発工程が外部設計工程又は内部設計工程又は製作工程であれば、追加レビュー時間である。また、残作業数は、対象の開発工程が単体試験工程又は結合試験工程であれば、追加試験項目数である。
【0053】
以上のように、実施の形態3に係る欠陥数予測装置10では、欠陥の残予測数に基づき、追加レビュー時間や追加試験項目数を計算する。これにより、追加で行う作業の目安が分かるので、正確なスケジュールを立てることが可能になる。
【0054】
実施の形態4.
以上の実施の形態では、対象のソフトウェアの開発が対象の開発工程にある場合に、その開発工程において混入している欠陥の数を予測することを想定していた。つまり、現在の開発工程が外部設計工程であれば、外部設計工程において混入している欠陥の数を予測し、現在の開発工程が製作工程であれば、製作工程において混入している欠陥の数を予測することを想定していた。そのため、予測式の入力となるソフトウェア情報は、対象の開発工程で得られる情報であった。
しかし、現在の状態のまま開発工程を進めた場合に、その後の開発工程においてどの程度の欠陥が混入するかを知りたい場合もある。実施の形態4では、現在の開発工程だけでなく、将来の開発工程における欠陥の数も予測する方法について説明する。
実施の形態4では、実施の形態3と同じ部分については説明を省略し、実施の形態3と異なる部分を説明する。
【0055】
実施の形態4に係る欠陥数予測装置10は、
図8に示す実施の形態3に係る欠陥数予測装置10と同じ構成である。
【0056】
欠陥数予測装置10の処理は、事前準備と、欠陥数予測と、品質判定と、残作業数予測との4つに分けられる。品質判定と残作業数予測とは、実施の形態3と同じであるため、説明を省略する。
【0057】
事前準備について説明する。
事前準備の処理の流れは、
図3に示す通りである。そこで、
図3に基づき事前準備の処理を説明する。
【0058】
S11の処理は、上記実施の形態で説明した通りであるため、説明を省略する。
【0059】
(S12:予測ロジック生成処理)
予測ロジック生成部11は、品質グループ毎、条件毎、開発工程毎の各組について、予測ロジックを生成する。この際、予測ロジック生成部11は、その組の開発工程において混入している欠陥の数を予測する予測ロジックだけでなく、その組の開発工程よりも後の開発工程において混入する欠陥の数を予測する予測ロジックも生成する。
【0060】
例えば、その組の開発工程が外部設計工程であれば、外部設計工程で混入している欠陥の数を予測する予測ロジックだけでなく、内部設計工程と、製作工程と、単体テスト工程と、結合テスト工程とで混入しているであろう欠陥の数を予測する予測ロジックを生成する。この際、予測ロジックの入力として用いるのは、その組の開発工程までで得られたソフトウェア情報だけである。つまり、この例では、外部設計工程までに得られたソフトウェア情報だけである。
【0061】
S13の処理は、上記実施の形態で説明した通りであるため、説明を省略する。
【0062】
欠陥数予測について説明する。
欠陥数予測の処理の流れは、
図4に示す通りである。そこで、
図4に基づき欠陥数予測の処理を説明する。
【0063】
S21の処理は、上記実施の形態で説明した通りであるため、説明を省略する。
【0064】
(S22:予測ロジック計算処理)
予測ロジック計算部14は、予測ロジック記憶部12に記憶された、対応する条件、及び、対応する開発工程についての予測ロジックであって、各品質グループについての予測ロジックを用い、対象のソフトウェアが各品質グループに属する場合に混入している欠陥の予測数を計算する。この際、予測ロジック計算部14は、対応する開発工程で混入している欠陥の数を予測する予測ロジックを用いて、対応する開発工程で混入している欠陥の予測数を計算するだけでなく、対応する開発工程よりも後の開発工程において混入する欠陥の数を予測する予測ロジックを用いて、後の開発工程において混入するであろう欠陥の予測数も計算する。
【0065】
例えば、予測ロジック計算部14は、対象の開発工程が外部設計工程であれば、外部設計工程だけでなく、内部設計工程と、製作工程と、単体テスト工程と、結合テスト工程とに関しても、欠陥の予測数を計算する。
【0066】
(S23:混入予測数計算処理)
混入予測数計算部15は、開発工程毎に、各品質グループについて、S21で計算されたその品質グループに属する確率を、S22で計算された対象のソフトウェアがその品質グループに属する場合に混入している欠陥の予測数に乗じて、重み付きの予測数を計算する。そして、混入予測数計算部15は、開発工程毎に、計算した重み付きの予測数を合計して、対象のソフトウェアに混入している欠陥の予測数を計算する。
【0067】
例えば、混入予測数計算部15は、対象の開発工程が外部設計工程であれば、外部設計工程と、内部設計工程と、製作工程と、単体テスト工程と、結合テスト工程との各開発工程について、重み付きの予測数を計算する。そして、混入予測数計算部15は、各開発工程について、重み付きの予測数を合計して、欠陥の予測数を計算する。
【0068】
以上のように、実施の形態4に係る欠陥数予測装置10では、現在の開発工程だけでなく、その後の開発工程において混入する欠陥の予測数も計算する。これにより、より適切な対処方法を事前に検討することが可能となる。
【0069】
なお、上記説明では、品質判定は実施の形態3と同じであるとした。しかし、品質判定において、現在の開発工程で混入している欠陥の予測数だけでなく、その後の開発工程で混入しているであろう欠陥の予測数も考慮して、次の開発工程へ進めるか否かの判定をしてもよい。
例えば、現在の開発工程での残予測数が閾値未満であり、かつ、その後の各開発工程についての予測数が閾値未満である場合に、次の開発工程へ進めるとしてもよい。
【0070】
また、上記説明では、現在の開発工程以降の全ての開発工程についての予測数を計算するとした。しかし、後の開発工程に関しては、一部の開発工程についてのみ予測数を計算してもよい。例えば、現在の開発工程と、その次の開発工程についての予測数のみ予測数を計算してもよい。
【0071】
実施の形態5.
実施の形態5では、上記実施の形態で説明した欠陥数予測装置10を過去のソフトウェア開発の事例に適用した場合に得られた結果について説明する。
【0072】
図10は、外部設計書及び内部設計書における欠陥混入と除去とを示す図である。
図10では、ある開発チームにおける過去のソフトウェア開発の実績データと、そのソフトウェア開発に対して欠陥数予測装置10により計算した欠陥の予測数及び残予測数とを示す。横軸が開発工程を示し、縦軸が頁数当たりの欠陥の件数を示している。
(1)の値が、外部設計工程で混入している欠陥の数を示す。(2)の値が、外部設計工程が完了した時点において残っている欠陥の数を示す。(3)の値が、内部設計工程までに混入している欠陥の数を示す。(4)の値が、内部設計工程が完了した時点において残っている欠陥の数を示す。
なお、(3)の値から(2)の値を減じた値が、内部設計工程で新たに混入した欠陥の数を表している。
【0073】
図11は、設計工程から出荷後における欠陥混入と除去とを示す図である。
図11では、ある開発チームにおける過去のソフトウェア開発の実績データと、そのソフトウェア開発に対して欠陥数予測装置10により計算した欠陥の予測数及び残予測数とを示す。横軸が開発工程を示し、縦軸がKL(キロライン)当たりの欠陥の件数を示している。
(1)の値が、外部設計工程で混入している欠陥の数を示す。(2)の値が、外部設計工程が完了した時点において残っている欠陥の数を示す。(3)の値が、内部設計工程までに混入している欠陥の数を示す。(4)の値が、内部設計工程が完了した時点において残っている欠陥の数を示す。(5)の値が、製作工程において混入している欠陥の数を示す。(6)の値が、単体試験工程を開始する時点において残っている欠陥の数を示す。(7)の値が、結合試験工程を開始する時点において残っている欠陥の数を示す。(8)の値が、出荷時点において残っている(出荷後に発見された)欠陥の数を示す。
【0074】
図10及び
図11に示すように、品質が良いグループと品質が悪いグループとでは、各開発工程における欠陥の混入や除去の数に差異がある。
また、
図10及び
図11に示すように、欠陥の実績に対して、欠陥数予測装置10による予測値が全体の実績値に非常に近い値を示している。
【0075】
図12から
図14は、内部設計工程における、予測ロジックで計算した欠陥の予測数と欠陥の実績とを示す図である。
図12では、品質によるグループ分けをしなかった場合の予測数と実績を示している。
図13では、品質が良いグループに対する予測数と実績を示している。
図14では、品質が悪いグループに対する予測数と実績を示している。
図12から
図14では、混入している欠陥の数の予測数=A×誤り指摘数+Bとしている。ここで、Aは回帰係数であり、Bは定数である。
図12から
図14に示すように、品質によるグループ分けをしなかった場合と、品質が悪いグループとでは、誤差の標準偏差はそれぞれ、約6.08と約6.32であり、ほとんど差異がなかった。これに対して、品質の良いグループでは、誤差の標準偏差は約1.09であり、他と比べて非常に高い精度であった。そのため、品質によるグループ分けを行った場合、品質によるグループ分けをしない場合よりも精度よく欠陥の予測数を計算できる。
【0076】
図15から
図17は、製作工程における、予測ロジックで計算した欠陥の予測数と欠陥の実績とを示す図である。
図15では、品質によるグループ分けをしなかった場合の予測数と実績を示している。
図16では、品質が良いグループに対する予測数と実績を示している。
図17では、品質が悪いグループに対する予測数と実績を示している。
図15から
図17に示すように、品質によるグループ分けをしなかった場合には、誤差の標準偏差は、約4.83であった。これに対して、品質の良いグループと品質の悪いグループとでは、誤差の標準偏差は、約0.82と約0.79とであった。そのため、品質によるグループ分けを行った場合、品質によるグループ分けをしない場合よりも精度よく欠陥の予測数を計算できる。
【0077】
図18は、対象の開発工程を内部設計工程とした場合に欠陥数予測装置10により得られる情報を示す図である。
ソフトウェア毎に、混入している誤りの予測数等が得られる。
回帰モデル1の内部設計混入誤り予測の欄は、予測ロジック計算部14が計算した内部設計工程で混入している欠陥の予測数を示す。このうち、予測1は品質が良いグループの場合における予測数を示し、予測2は品質が悪いグループの場合の予測数を示す。期待値は予測1と予測2との値に重み付して加算した値を示す。
内部設計の残存誤りの欄は、残予測数計算部16が計算する残予測数を示す。このうち、予測1は品質が良いグループの場合における残予測数を示し、予測2は品質が悪いグループの場合の残予測数を示し、期待値は予測1と予測2との値に重み付して加算した値を示す。また、期待値が閾値以上である場合には、その欄にハッチングが付され、残存している欠陥数が多いことが警告される。また、検出不足の欄は、期待値が閾値以上である場合に計算された、残作業(ここでは、追加レビュー時間)を示す。
【0078】
回帰モデル2の製作混入誤り予測の欄は、対象の開発工程が内部設計工程の場合に予測ロジック計算部14が計算した、製作工程で混入しているであろう欠陥の予測数を示す。このうち、予測1は品質が良いグループの場合における予測数を示し、予測2は品質が悪いグループの場合の予測数を示す。
製作の混入誤りの欄は、回帰モデル2の製作混入誤り予測の予測1と予測2とに重み付して加算した値を示す。
【0079】
品質の判別の欄は、ソフトウェアの品質が良いか悪いかに関する情報を示す。このうち、Aの確率の欄は、品質が良い確率を示す。判定の欄は、品質が良いグループ(A)に属するか、品質が悪いグループ(B)に属するかを示す。
【0080】
なお、以上の説明では、品質が良いグループと品質が悪いグループとの各グループについて予測ロジックを生成し、各予測ロジックで計算した予測数に各グループに属する確率を掛けて和をとることにより、予測数を計算した。
しかし、予測ロジックを生成するためには、各グループに属する既存ソフトウェアの情報がある程度必要である。そのため、ある条件の組については、品質が悪いグループの予測ロジックを生成できないというような場合もあり得る。このような場合には、例えば、品質が良いグループに属する確率が所定値(例えば80%)以上であれば、品質が良いグループの予測ロジックを用いて予測数を計算し、他の場合には、品質によるグループ分けをしない場合の予測ロジックを用いて予測数を計算するとしてもよい。
【0081】
また、各グループの予測ロジックが生成できる場合であっても、例えば、品質が良いグループに属する確率が所定値(例えば80%)以上であれば、品質が良いグループの予測ロジックを用いて予測数を計算し、品質が悪いグループに属する確率が所定値(例えば80%)以上であれば、品質が悪いグループの予測ロジックを用いて予測数を計算し、他の場合には、品質によるグループ分けをしない場合の予測ロジックを用いて予測数を計算するとしてもよい。
【0082】
図19は、上記実施の形態に示した欠陥数予測装置10のハードウェア構成の例を示す図である。
欠陥数予測装置10は、コンピュータである。欠陥数予測装置10の各要素をプログラムで実現することができる。
欠陥数予測装置10のハードウェア構成としては、バスに、演算装置901、外部記憶装置902、主記憶装置903、通信装置904、入出力装置905が接続されている。
【0083】
演算装置901は、プログラムを実行するCPU(Central Processing Unit)等である。外部記憶装置902は、例えばROM(Read Only Memory)やフラッシュメモリ、ハードディスク装置等である。主記憶装置903は、例えばRAM(Random Access Memory)等である。通信装置904は、例えば通信ボード等である。入出力装置905は、例えばマウス、キーボード、ディスプレイ装置等である。
【0084】
プログラムは、通常は外部記憶装置902に記憶されており、主記憶装置903にロードされた状態で、順次演算装置901に読み込まれ、実行される。
プログラムは、予測ロジック生成部11、確率計算部13、予測ロジック計算部14、混入予測数計算部15、残予測数計算部16、残予測数判定部18、残作業数計算部19として説明している機能を実現するプログラムである。
更に、外部記憶装置902にはオペレーティングシステム(OS)も記憶されており、OSの少なくとも一部が主記憶装置903にロードされ、演算装置901はOSを実行しながら、上記プログラムを実行する。
また、上記実施の形態の説明において、予測ロジック記憶部12、閾値記憶部17が記憶すると説明した情報や、予測ロジック生成部11、確率計算部13、予測ロジック計算部14、混入予測数計算部15、残予測数計算部16、残予測数判定部18、残作業数計算部19が生成する、計算する、判定する等と説明した情報等が主記憶装置903にファイルとして記憶されている。
【0085】
なお、
図19の構成は、あくまでも欠陥数予測装置10のハードウェア構成の一例を示すものであり、欠陥数予測装置10のハードウェア構成は
図19に記載の構成に限らず、他の構成であってもよい。
【解決手段】欠陥数予測装置10は、ソフトウェアを品質によって分類した品質グループ毎に、ソフトウェアに関する情報であるソフトウェア情報からそのソフトウェアに混入している欠陥の予測数を計算する予測ロジックを用いて、対象ソフトウェアについてのソフトウェア情報から、対象のソフトウェアが各品質グループに属する場合に混入している欠陥の予測数を計算する。欠陥数予測装置10は、計算した予測数に、対象のソフトウェアが各品質グループに属する確率を乗じて重み付して、重み付した予測数を合計して、混入している欠陥の予測数とする。