(57)【要約】【課題】  信頼度成長モデル、レイリーモデルを用いて、リリース時以降の残存バグ数を予測する。【解決手段】  本発明は、ソフトウェア信頼度成長モデルによる推定された第１の残存バグ数と、レイリーモデルにより推定された第２の残存バグ数と、を取得し、該第１の残存バグ数と該第２の残存バグ数の差（予測乖離値）を求め、該予測乖離値をソース規模で除した予測乖離率を算出し、予測乖離率と、予め定められている許容乖離率とを比較し、該予測乖離率が該許容乖離率内であれば、予測精度が高いと判断し、該許容乖離率外であれば予測誤りの可能性があると判断し、評価結果を出力する。【選択図】  図１
2014203331.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェア信頼度成長モデルとレイリーモデルによる残存バグの値の乖離を予測するためのモデル乖離率評価装置であって、
前記ソフトウェア信頼度成長モデルによる推定された第１の残存バグ数と、前記レイリーモデルにより推定された第２の残存バグ数と、を取得し、該第１の残存バグ数と該第２の残存バグ数の差（予測乖離値）を求め、該予測乖離値をソース規模で除した予測乖離率を算出する乖離率計算手段と、
前記予測乖離率と、予め定められている許容乖離率とを比較し、該予測乖離率が該許容乖離率内であれば、予測精度が高いと判断し、該許容乖離率外であれば予測誤りの可能性があると判断する乖離率判定手段と、
前記乖離率判定手段の結果に基づいて評価結果を出力する出力手段と、
を有することを特徴とするモデル乖離率評価装置。
【請求項２】
前記出力手段は、
前記乖離率判定手段において、予測誤りの可能性があると判断された場合には、ユーザに対して残存バグ予測誤りの警告を出力する手段を出力する手段を含む
請求項１記載のモデル乖離率評価装置。
【請求項３】
ソフトウェア信頼度成長モデルとレイリーモデルによる残存バグの値の乖離を予測するためのモデル乖離率評価方法であって、
乖離率計算手段、乖離率判定手段、出力手段を有する装置において、
前記乖離率計算手段が、前記ソフトウェア信頼度成長モデルによる推定された第１の残存バグ数と、前記レイリーモデルにより推定された第２の残存バグ数と、を取得し、該第１の残存バグ数と該第２の残存バグ数の差（予測乖離値）を求め、該予測乖離値をソース規模で除した予測乖離率を算出する乖離率計算ステップと、
前記乖離率判定手段が、前記予測乖離率と、予め定められている許容乖離率とを比較し、該予測乖離率が該許容乖離率内であれば、予測精度が高いと判断し、該許容乖離率外であれば予測誤りの可能性があると判断する乖離率判定ステップと、
前記出力手段が、前記乖離率判定ステップの結果に基づいて評価結果を出力する出力ステップと、
を行うことを特徴とするモデル乖離率評価方法。
【請求項４】
前記出力ステップにおいて、
前記乖離率判定手段において、予測誤りの可能性があると判断された場合には、ユーザに対して残存バグ予測誤りの警告を出力する手段を出力する
請求項３記載のモデル乖離率評価方法。
【請求項５】
コンピュータを、
請求項１または２記載のモデル乖離率評価装置の各手段として機能させるためのモデル乖離率評価プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、モデル乖離率評価装置及び方法及びプログラムに係り、特に、試験工程で検出される欠陥（バグ）の累積値の傾向から算出される残存バグ数と、リリースしたソフトウェアの残存バグの値の乖離を予測するためのモデル乖離率評価装置及び方法及びプログラムに関する。
【背景技術】
【０００２】
情報システムが経済・社会の様々な分野で必要不可欠なものとなっている現在、信頼性の高いソフトウェア開発に対する要求が高まっている。信頼性の高いソフトウェアを開発するためには、ソフトウェア品質を定量的に評価し、残存バグ数を高い精度で予測することが、当該ソフトウェアを用いたサービスの開始の判断を適切に実施するためにも不可欠である。
【０００３】
残存バグ数を推定する方法として広く利用されているのは、試験工程で検出されるバグの累積値の傾向から残存バグ数を推定するソフトウェア信頼度成長モデル（Software Reliability Growth Model: SRGM）がある。SRGMは、試験工程で検出される欠陥（バグ）の発生事象の動的挙動を確率モデルにより表現したものであり、欠陥除去作業によりソフトウェアの信頼性が向上する。
【０００４】
SRGMを用いた手法としては、ソフトウェア信頼度成長曲線に関して、複数のモデルによる統合モデルを導出する手順がある（例えば非特許文献１参照）。
【０００５】
また、同じ動的挙動の確率モデルとして、ソフトウェア開発の全工程における摘出欠陥（バグ）数を表したレイリーモデル（Rayleigh model）がある。これは、各開発工程の欠陥除去数が経験的にレイリー分布に従うことを用いて、開発完了後（リリース後）の残存欠陥数を予測するものである。
【０００６】
離散的で測定間隔が不均一なレイリーモデルを適用する際の処理方法がある（例えば、非特許文献２参照）。ここで、レイリーモデルとは、信頼性工学の分野で広く用いられているワイブル分布の１種であり、横軸に時刻tを縦軸に時刻tにおけるバグ発見数f(t)をとった連続関数であり、ソフトウェアライフサイクル全体にわたる欠陥数の予測に経験的に適用できる。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】古山恒夫：ソフトウェア新ランド成長モデルに関する統合モデルの解析的パラメータ推定法,情報処理学会論文誌, Vol. 37, No.12 1996.
【非特許文献２】野中誠：離散的に観測された欠陥データへのレイリーモデル適用について、ソフトウェアエンジニアリングシンポジウム2010 ワークショップ論文集 情報処理学会 2010.
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記従来の方法では、ソフトウェア開発のリリースのタイミングで、上記非特許文献１，２を用いた場合、両者の予測値に乖離が発生した場合の対処において、どちらの予測値が正確であるかの判断ができない。一方、両者の平均値を選択した場合、予測誤りの値の影響を受け、正確に予測した値が影響を受け、予測誤差が悪化するという問題がある。
【０００９】
残存バグ数の予測においては、適切な品質評価モデルを複数用いることで、その信頼性を高めることが推奨されている（例えば、非特許文献３：S.H.Kan, "Metrics and Models in Software Quality Engineering (2nd Edition), Addison-Wesley Professional; (2002)）。複数のモデルによる予測が一貫していれば、予測の信頼性は高まり、逆に複数のモデルによる予測が一貫していなければ、その差異の理解、原因の確認等を行った上での総合的な判断が必要になる。ソフトウェア信頼度成長モデルとレイリーモデルは、共に一般的に行われている故障処理票などの品質管理データで評価が可能であり、特別なデータを取得する必要がないため、比較的容易に適用可能であると考えられる。このため、この両モデルによる残存バグ数の予測が、どういった条件の時に一致するのか、あるいはどのような時に不整合が発生するのかを実証的に明らかにすることは、これらのモデルを用いて残存バグ数の予測を行う際の有益である。
【００１０】
しかし、これらの複数の品質予測モデルを用いた場合の実証結果の比較は、システム開発において、個別の開発の傾向が強く、同一開発条件での比較が困難であるため、これまでの研究では十分に行われていない。実開発においては、業務仕様、システム構成、開発手順、要求定義の品質、仕様変更の有無など、品質に影響を与える様々な条件が数多く存在すると考えられるが、実開発の複数のプロジェクトでそれら様々な条件を同一とすることは基本的に困難である。
【００１１】
本発明は、上記の点に鑑みなされたもので、信頼度成長モデル、レイリーモデルを用いて、リリース時以降の残存バグ数を予測することが可能なモデル乖離率評価装置及び方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記の課題を解決するため、本発明（請求項１）は、ソフトウェア信頼度成長モデルとレイリーモデルによる残存バグの値の乖離を予測するためのモデル乖離率評価装置であって、
前記ソフトウェア信頼度成長モデルによる推定された第１の残存バグ数と、前記レイリーモデルにより推定された第２の残存バグ数と、を取得し、該第１の残存バグ数と該第２の残存バグ数の差（予測乖離値）を求め、該予測乖離値をソース規模で除した予測乖離率を算出する乖離率計算手段と、
前記予測乖離率と、予め定められている許容乖離率とを比較し、該予測乖離率が該許容乖離率内であれば、予測精度が高いと判断し、該許容乖離率外であれば予測誤りの可能性があると判断する乖離率判定手段と、
前記乖離率判定手段の結果に基づいて評価結果を出力する出力手段と、を有する。
【００１３】
また、本発明（請求項２）は、前記出力手段において、
前記乖離率判定手段の判定結果が予測誤りの可能性があると判断された場合には、ユーザに対して残存バグ予測誤りの警告を出力する手段を含む。
【発明の効果】
【００１４】
上述のように本発明によれば、まず、信頼度成長モデルにおいて試験工程のソフトウェアに含まれるバグ発生件数を予測し、レイリーモデルからリリース時以降の残存バグ数を予測することにより、リリース後のソフトウェアによる障害係数を予測することができる。
【００１５】
また、信頼度成長モデルとレイリーモデルの残存バグ予測値の、予め定められた許容値を超える予測誤りの警告を発することができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の一実施の形態におけるモデル乖離率評価装置の構成図である。
【図２】本発明の一実施の形態におけるSRGM用入力値情報の例である。
【図３】本発明の一実施の形態における信頼度成長モデルバグ数推定部から出力される残存バグ予測情報の例である。
【図４】本発明の一実施の形態におけるレイリーモデル用入力値情報の例である。
【図５】本発明の一実施の形態におけるレイリーモデル計算部から出力されるレイリーモデルによる残存バグ予測情報の例である。
【図６】本発明の一実施の形態におけるモデル乖離率評価装置の動作のフローチャートである。
【図７】本発明の一実施の形態における図６のステップ２３０の詳細処理のフローチャートである。
【図８】本発明の一実施の形態における予測誤りの指摘例（過少評価）である。
【発明を実施するための形態】
【００１７】
以下、図面と共に本発明の実施の形態を説明する。
【００１８】
図１は、本発明の一実施の形態におけるモデル乖離率評価装置の構成を示す。
【００１９】
同図に示すモデル乖離率評価装置１００は、信頼度成長モデルバグ数推定部１０、レイリーモデル計算部２０、メモリ１０１、乖離率計算部１１０、乖離率判定部１２０、出力部１３０を有する。
【００２０】
上記のメモリ１０１には、予め求められた許容乖離率が格納されている。なお、許容乖離率の計算方法を以下に示す。
【００２１】
規模あたりの予測乖離率＝（予測値−実績値）／ソース規模（KLOC）
(KLOC：Kilo Line of Code)
信頼度成長モデルバグ数推定部１０は、ユーザ端末１から図２に示すようなバグ発見時刻情報（日時）とバグ件数が入力されると、非特許文献２の技術を用いて、リリース判定時に、ソフトウェアに含まれる残存バグ数を予測し、図３に示すような残存バグ予測情報を出力する。残存バグ予測情報は、例えば、AIC（赤池情報量基準）、バグ総数予測値、残存バグ件数予測値、Fault-Free Probability、Conditional MTTF、Cumulative MTTFを含む。このうち、バグ総数予測値は、入力されたバグ毎のバグ発見時間から、最も適合度の高い信頼度成長モデルの平均値関数（バグ成長曲線）を用い、バグ発見件数の累積件数から推定された値である。
【００２２】
レイリーモデル計算部２０は、ユーザ端末１から図４に示すようなレイリーモデル用入力値情報が入力されると、非特許文献２の技術を用いて、ソフトウェア開発の設計工程から試験工程までのそれぞれの工程で発生したバグ件数と、それぞれの開発工程期間から、総バグ件数を推定することによりリリース判定時における、ソフトウェアに含まれる残存バグ数を予測し、図５に示すようなレイリーモデルによる残存バグ予測情報を出力する。当該バグ予測情報には、工程毎に、各工程の完了時点（日）、累積バグ件数推定値、バグ件数予測値、バグ件数実績値、バグ件数予測値誤差（予測値−実績値）、バグ件数予測値誤差率（予測値−実績値）／実績値（％）が含まれる。
【００２３】
乖離率計算部１１０は、信頼度成長モデルバグ数推定部１０から入力された図３に示す残存バグ予測情報と、レイリーモデル計算部２０から入力された図５に示すバグ予測情報を取得し、これらの差分から乖離率を求め、乖離率判定部１２０に出力する。
【００２４】
乖離率判定部１２０は、メモリ１０１に格納されている許容乖離率と乖離率計算部１１０で求められた乖離率を比較し、許容乖離率を超えている場合は乖離があると判断する。
【００２５】
出力部１３０は、乖離の有無を出力する、乖離率判定部１２０において乖離があると判断された場合には、補完処理や残存バグ予測誤りの警告処理等を行う。
【００２６】
図６は、本発明の一実施の形態におけるモデル乖離率評価装置の動作のフローチャートである。
【００２７】
ステップ２００）  信頼度成長モデルバグ数推定部１０は、バグ毎のバグ発見時間を取得して、最も適合度の高い信頼度成長モデルの平均値関数（バグ成長曲線）を用い、バグ発見件数の累積件数から、残存バグを推定する。具体的には、非特許文献４（岡村寛之，安藤光昭，土肥正，表計算ソフトウェアによるソフトウェア信頼線評価ツール（SRATS）の開発，電子情報通信学会論文誌（D-I），vol. J88-D-I, no.2, pp.205-214, 2005）を用いて実現することが可能である。
【００２８】
上記により、信頼度成長モデルにおいて試験工程のバグ発生件数と、発生時刻からリリース判定時に、ソフトウェアに含まれる残存バグ数を予測することにより、リリース後のソフトウェアによる障害件数（残存バグ数）を予測することができる。
【００２９】
ステップ２１０）  レイリーモデル計算部２０は、バグ情報（工程期間及び工程毎のバグ件数）を入力として、レイリーモデルによる残存バグ数を推定する。具体的には、非特許文献２の技術を用いることにより実現可能である。
【００３０】
当該ステップにより、ソフトウェア開発から設計工程から試験工程までのそれぞれの工程で発生したバグ件数と、それぞれの開発工程期間から、総バグ件数を推定することにより、リリース判定時にソフトウェアに含まれる残存バグ数を予測することにより、リリース後のソフトウェアによる障害件数（残存バグ数）を予測することができる。
【００３１】
ステップ２２０）  乖離率計算部１１０は、信頼度成長モデルバグ数推定部１０から入力された残存バグ予測情報と、レイリーモデル計算部２０から入力された残存バグ予測情報の差を計算し、予測乖離率を求める。具体的には、
予測乖離率＝予測乖離値／ソース規模（KLOC）
により、規模あたりの予測乖離率を求める。
【００３２】
ステップ２３０）  乖離率判定部１２０は、予め計算され、メモリ１０１に格納されている許容乖離率と、ステップ２２０で算出された予測乖離率とを比較し、予測精度の評価を行う。具体的には、図７に示すように、予測乖離率≦許容乖離率であれば、予測精度は高いと判定する。一方、予測乖離率＞許容乖離率であれば、許容乖離率外であるため、予測誤りが生じているとして、図８に示すような評価誤り（過少評価）の指摘を行う。図８の例では、信頼度成長モデルでは残存バグは少なく予想しているが、レイリーモデルではある程度の残存バグを予測している。実際には残存バグが残っている。このような場合に信頼度成長モデルの予測誤りを指摘することが可能である。また、双方の予測値が同様な結果を示した場合、複数の手段による予測値に同様な結果が得られたことから、残存バグ数の予測値の精度は高いと判断できる。
【００３３】
上記のように、予め許容乖離率を求めておくことにより、複数の品質評価法に基づく予測結果を、相互にチェックしその乖離値を評価することにより、予測値の過ちの判定に寄与することができる。
【００３４】
ステップ２４０）  出力部１３０は、ステップ２３０において、予測精度に問題があると判定された場合には、指摘方法として、アラームを出力することで警告を発することや、評価結果として予測誤り情報を出力する等の方法がある。
【００３５】
上記の図８に示す実績値について説明する。各開発プロジェクトの成果物の結合試験終了時の残存バグ数の実測値には、仕様策定元が実施する受入試験で、実際に摘出されたバグの数を用いる。バグをできるだけ網羅的に摘出するため、受入試験においても、総合テスト（ユーザ確認）の試験項目のみならず、発注側組織において改めて試験項目抽出を行ったユニットテスト、結合テスト相当の試験項目も全て実施する。摘出されたバグについては、仕様策定元と開発プロジェクトの両者が参加する会議の場でレビューを行い、バグとすべきかどうかについて意識合わせを行うことで正確性を高めるものとする。
【００３６】
上記の図１に示すモデル乖離率評価装置の各構成要素の動作をプログラムとして構築し、乖離率評価装置として利用されるコンピュータにインストールして実行させる、または、ネットワークを介して流通させることが可能である。
【００３７】
本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において、種々変更・応用が可能である。
【符号の説明】
【００３８】
１  ユーザ端末
１０  信頼度成長モデルバグ数推定部
２０  レイリーモデル計算部
１００  モデル乖離率評価装置
１０１  メモリ
１１０  乖離率計算部
１２０  乖離率判定部
１３０  出力部
【図１】
2014203331.tif 000003
【図２】
2014203331.tif 000004
【図３】
2014203331.tif 000005
【図４】
2014203331.tif 000006
【図５】
2014203331.tif 000007
【図６】
2014203331.tif 000008
【図７】
2014203331.tif 000009
【図８】
2014203331.tif 000010