(57)【要約】【課題】ソフトウェアの問題点を早期に高い精度で予測することを目的とする。【解決手段】品質予測装置は、ソフトウェアの過去のプログラムテスト完了時の第１テスト実績および前記ソフトウェアについて前記プログラムテストより後に行われるテストの第２テスト実績を記憶する記憶部を参照し、前記第１テスト実績および前記第２テスト実績を入力として、機械学習を行い、学習モデルを生成する学習モデル生成部と、検証対象ソフトウェアのプログラムテスト完了時のテスト結果と前記学習モデルとに基づいて、前記検証対象ソフトウェアのプログラムテスト完了時に、前記検証対象ソフトウェアについて前記プログラムテストより後に行われるテスト結果を予測する予測部と、を含む。【選択図】図１
2019106136.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアの過去のプログラムテスト完了時の第１テスト実績および前記ソフトウェアについて前記プログラムテストより後に行われるテストの第２テスト実績を記憶する記憶部を参照し、前記第１テスト実績および前記第２テスト実績を入力として、機械学習を行い、学習モデルを生成し、
検証対象ソフトウェアのプログラムテスト完了時のテスト結果と前記学習モデルとに基づいて、前記プログラムテストより後に行われるテストの前に、前記検証対象ソフトウェアについて前記プログラムテストより後に行われるテスト結果を予測する、
処理をコンピュータに実行させることを特徴とする品質予測プログラム。
【請求項２】
前記第１テスト実績の対象である前記ソフトウェアの複雑度およびメソッド数を解析し、
さらに前記複雑度および前記メソッド数を入力として前記機械学習を行い、前記学習モデルを生成する、
処理を前記コンピュータに実行させることを特徴とする請求項１記載の品質予測プログラム。
【請求項３】
前記第１テスト実績に基づいて、テストケース設定率および障害率を算出し、
さらに前記テストケース設定率および前記障害率を入力として、前記機械学習を行い、前記学習モデルを生成する、
処理を前記コンピュータに実行させることを特徴とする請求項１または２記載の品質予測プログラム。
【請求項４】
前記テストケース設定率および前記障害率についてのグラフに、前記テストケース設定率および前記障害率が正常である範囲を表示し、且つ複数の前記検証対象ソフトウェアについて予測された前記テスト結果をプロット表示する、
処理を前記コンピュータに実行させることを特徴とする請求項３記載の品質予測プログラム。
【請求項５】
前記グラフにプロット表示された何れかの前記テスト結果の指定を受け付けた場合に、該テスト結果に対応する検証対象ソフトウェアを示す情報を表示する、
処理を前記コンピュータに実行させることを特徴とする請求項４記載の品質予測プログラム。
【請求項６】
前記検証対象ソフトウェアと、予測された前記テスト結果とを対応付けて表示させる、
処理を前記コンピュータに実行させることを特徴とする請求項１記載の品質予測プログラム。
【請求項７】
前記第２テスト実績が示す前記ソフトウェアの不具合発生数に応じて設定された値を前記学習モデルに入力して得られる前記検証対象ソフトウェアに発生する不具合の確率の予測を、前記検証対象ソフトウェアおよび前記テスト結果と対応付けて表示させる、
処理を前記コンピュータに実行させることを特徴とする請求項６記載の品質予測プログラム。
【請求項８】
ソフトウェアの過去のプログラムテスト完了時の第１テスト実績および前記ソフトウェアについて前記プログラムテストより後に行われるテストの第２テスト実績を記憶する記憶部を参照し、前記第１テスト実績および前記第２テスト実績を入力として、機械学習を行い、学習モデルを生成し、
検証対象ソフトウェアのプログラムテスト完了時のテスト結果と前記学習モデルとに基づいて、前記プログラムテストより後に行われるテストの前に、前記検証対象ソフトウェアについて前記プログラムテストより後に行われるテスト結果を予測する、
処理をコンピュータが実行することを特徴とする品質予測方法。
【請求項９】
ソフトウェアの過去のプログラムテスト完了時の第１テスト実績および前記ソフトウェアについて前記プログラムテストより後に行われるテストの第２テスト実績を記憶する記憶部を参照し、前記第１テスト実績および前記第２テスト実績を入力として、機械学習を行い、学習モデルを生成する学習モデル生成部と、
検証対象ソフトウェアのプログラムテスト完了時のテスト結果と前記学習モデルとに基づいて、前記検証対象ソフトウェアのプログラムテスト完了時に、前記検証対象ソフトウェアについて前記プログラムテストより後に行われるテスト結果を予測する予測部と、
を備えることを特徴とする品質予測装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、品質予測プログラム、品質予測方法および品質予測装置に関する。
【背景技術】
【０００２】
ソフトウェア開発の工程に応じて、ソフトウェアの品質評価のための各種のテストが行なわれる。ソフトウェアの品質評価のためのテストとして、例えば、プログラムテスト、結合テストおよびシステムテストがある。結合テストは、プログラムテストの後の工程で行われ、システムテストは、結合テストの後の工程で行われる。
【０００３】
関連する技術として、プロジェクトの状況を、視覚を通じて客観的に評価できるプロジェクト管理装置に関する技術が提案されている（例えば、特許文献１を参照）。また、ソフトウェアの障害予測等の予測性能を向上させる技術が提案されている（例えば、特許文献２を参照）。また、精度よく異常を検出する品質評価システムに関する技術が提案されている（例えば、特許文献３を参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−８５２７７号公報
【特許文献２】特開２０１３−６５０８４号公報
【特許文献３】特開２０１７−１６１９９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ソフトウェアの品質は、例えば、テスト結果やテスト項目等に基づいて、評価者により評価される。従って、評価者のスキルによっては、ソフトウェアの品質評価の精度が低くなる可能性がある。
【０００６】
例えば、プログラムテストのテスト結果に問題点が内在しているにもかかわらず、テスト結果が正常であると判定された場合、後の結合テストやシステムテストで、ソフトウェアの品質に問題があることが判明することがある。
【０００７】
上記の場合、ソフトウェア開発の工程が進んでいるため、ソフトウェアに内在する問題点を特定することが難しくなる。従って、ソフトウェア開発における各種のテストについて、ソフトウェアの品質評価の問題点が早い段階で特定されることが望ましい。
【０００８】
１つの側面として、本発明は、ソフトウェアの問題点を早期に高い精度で予測することを目的とする。
【課題を解決するための手段】
【０００９】
１つの態様では、品質予測プログラムは、ソフトウェアの過去のプログラムテスト完了時の第１テスト実績および前記ソフトウェアについて前記プログラムテストより後に行われるテストの第２テスト実績を記憶する記憶部を参照し、前記第１テスト実績および前記第２テスト実績を入力として、機械学習を行い、学習モデルを生成し、検証対象ソフトウェアのプログラムテスト完了時のテスト結果と前記学習モデルとに基づいて、前記プログラムテストより後に行われるテストの前に、前記検証対象ソフトウェアについて前記プログラムテストより後に行われるテスト結果を予測する、処理をコンピュータに実行させる。
【発明の効果】
【００１０】
１つの側面によれば、ソフトウェアの問題点を早期に高い精度で予測することができる。
【図面の簡単な説明】
【００１１】
【図１】品質予測装置の一例を示す機能ブロック図である。
【図２】学習モデル生成の一例を示す図である。
【図３】学習対象データの一例を示す図である。
【図４】学習モデルを用いた品質予測の一例を示す図である。
【図５】予測結果一覧の一例を示す図である。
【図６】予測結果グラフの一例を示す図である。
【図７】学習モデル生成の一例を示すフローチャート（その１）である。
【図８】学習モデル生成の一例を示すフローチャート（その２）である。
【図９】品質予測の処理の流れの一例を示すフローチャートである。
【図１０】プロット指定処理の流れの一例を示すフローチャートである。
【図１１】品質予測装置のハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【００１２】
＜品質予測装置の一例＞
以下、図面を参照して、実施形態について説明する。図１は、品質予測装置１の一例を示す図である。品質予測装置１は、制御部２と記憶部３とを含む。また、品質予測装置１は、表示装置４および入力装置５に接続されている。表示装置４は、例えば、ディスプレイであり、入力装置５は、例えば、マウスやキーボード等である。
【００１３】
制御部２は、実施形態における各種の制御を行う。制御部２は、データ取得部１１と計算部１２と静的解析部１３と学習モデル生成部１４と予測部１５と表示制御部１６とを含む。記憶部３には、各種のデータが記憶される。学習モデル生成部１４および予測部１５には、例えば、Ｒ言語により実現されてもよい。
【００１４】
データ取得部１１は、記憶部３に記憶されているデータを取得する。計算部１２は、各種の計算を行なう。静的解析部１３は、ソフトウェアのソースコードに対して静的解析を行う。
【００１５】
実施形態では、静的解析部１３は、ソフトウェアのソースコードを解析して、該ソフトウェアのサイクロマティック数およびメソッド数を求める。サイクロマティック数は、循環複雑度とも称され、ソフトウェアの構造が複雑になるに応じて、サイクロマティック数が大きくなる。例えば、ソフトウェアのソースコードに含まれる条件分岐の数が多くなると、サイクロマティック数は大きくなる。サイクロマティック数は、複雑度の一例である。
【００１６】
学習モデル生成部１４は、教師データを用いて、機械学習を行い、学習モデルを生成する。学習モデルは、例えば、サポートベクターマシンやニューラルネットワークによる機械学習に基づいて生成されてもよい。また、サポートベクターマシンとしては、例えば、Radial basis function kernel(RBF)カーネルを利用したサポートベクターマシンが用いられてもよい。
【００１７】
予測部１５は、生成された学習モデルと検証対象ソフトウェアのプログラムテスト完了時のテスト結果とに基づいて、検証対象ソフトウェアについてプログラムテストより後に行われるテスト結果を予測する。
【００１８】
実施形態では、ソフトウェアの品質評価を行なうためのテストには、プログラムテストと結合テストとシステムテストとの３つのテストがあるものとする。ソフトウェアの品質評価を行なうためのテストは、上記の３つのテストには限定されない。結合テストはプログラムテストよりも後の工程で行われ、システムテストは結合テストよりも後の工程で行われる。プログラムテストは、単体テストまたはプログラム単体テストとも称される。
【００１９】
予測部１５は、結合テストが行なわれる前に、結合テストまたはシステムテストのテスト結果を予測する。結合テストまたはシステムテストは、プログラムテストより後に行われるテストの一例である。予測部１５は、予測結果を記憶部３に記憶する。
【００２０】
表示制御部１６は、予測部１５による予測結果を、表形式またはグラフ形式で、表示装置４に表示させる制御を行う。予測結果は、表形式やグラフ形式以外の形式で、表示装置４に表示されてもよい。
【００２１】
＜学習モデル生成の一例＞
図２を参照して、学習モデル生成の一例について説明する。プログラムテストの過去実績は、過去に行なわれたソフトウェアのテスト結果を示す実績である。実施形態では、プログラムテストの過去実績は、ソフトウェア名と開発規模ステップ数とテスト件数と不具合件数とを含む。プログラムテストの過去実績は、第１テスト実績の一例である。
【００２２】
ソフトウェア名は、ソフトウェアを特定する名称である。ソフトウェアを特定できる情報であれば、ソフトウェア名以外の情報が採用されてもよい。開発規模ステップ数は、ソフトウェアのソースコードの行数である。テスト件数は、ソフトウェアについて、過去に実施されたプログラムテストの数である。不具合件数は、発生した不具合の件数を示す。該不具合を、障害と称することがある。
【００２３】
計算部１２は、テスト率および障害率を算出する。テスト率は、開発規模ステップ数に対して、実施されたテスト数の率を示す。テスト率は、テストケース設定率やテスト項目設定率等とも称される。障害率は、開発規模ステップ数に対して、抽出された不具合（障害）の率を示す。つまり、障害率は、障害が発生した率（障害発生率）を示す。
【００２４】
例えば、テスト率は、式「テスト率＝テスト件数／（開発規模ステップ数／１０００）×テスト率基準値」により求められる。該式の場合、開発規模ステップ数は、キロステップで表される。テスト率基準値は、例えば、経験則に基づく値であり、テスト率が適正であるか否かを判定するための基準値である。
【００２５】
例えば、テスト率基準値が「９０．９」であり、前後２０％の範囲内がテスト率の適正範囲である場合、算出されたテスト率が「７２．７〜１０９．１」の範囲内であれば、ソフトウェアの品質は正常であると判定することができる。一方、算出されたテスト率が上記の範囲外であれば、ソフトウェアの品質は不良と判定することができる。
【００２６】
障害率は、例えば、式「障害率＝不具合件数／（開発規模ステップ数／１０００）×障害率基準値」により求められる。障害率基準値も、例えば、経験則に基づく値であり、障害率が適正であるか否かを判定するための基準値である。
【００２７】
例えば、障害率基準値が「９．２」であり、前後２０％の範囲内が障害率の適正範囲である場合、算出された障害率が「７．４〜１１．０」の範囲内であれば、品質は正常であると判定することができる。一方、算出された障害率が上記の範囲外であれば、ソフトウェアの品質が不良と判定することができる。
【００２８】
ただし、上記のテスト率基準値と障害率基準値との何れか一方または両方が、適正な値に設定されていない場合、ソフトウェアの品質評価の精度は低くなる。
【００２９】
静的解析部１３は、ソフトウェアのソースコードを解析して、サイクロマティック数およびメソッド数を求める。
【００３０】
学習モデル生成部１４には、プログラムテストの過去実績に含まれる複数のソフトウェアについてのソフトウェア名と開発規模ステップ数とテスト件数と不具合件数とが入力される。また、学習モデル生成部１４には、各ソフトウェアについて、計算部１２が算出したテスト率および障害率が入力される。プログラムテストの過去実績およびソースコードは、記憶部３に記憶されているものとする。
【００３１】
また、学習モデル生成部１４には、記憶部３に記憶されている過去の不具合件数実績が入力される。過去の不具合件数実績は、ソフトウェアごとの、結合テストおよびシステムテストにおいて抽出された不具合（障害）の数を示す。過去の不具合件数実績は、記憶部３に記憶されているものとする。図２では、該過去の不具合件数実績は、ＩＴ・ＳＴエラー数として表される。過去の不具合件数実績は第２テスト実績の一例である。
【００３２】
学習モデル生成部１４は、入力された各種データに基づいて、学習対象データを生成する。学習モデル生成部１４は、ソフトウェアごとの過去の不具合件数実績に基づく教師データを、ソフトウェアごとに、学習対象データに設定する。
【００３３】
結合テストおよびシステムテストにおける過去の不具合実績が「０件」である場合、学習モデル生成部１４は、対応するソフトウェアの教師データを「ＯＫ」として、学習対象データに設定する。
【００３４】
結合テストおよびシステムテストにおける過去の不具合実績が「１件」以上である場合、学習モデル生成部１４は、対応するソフトウェアの教師データを「ＮＧ」として、学習対象データに設定する。
【００３５】
図３は、教師データが付加された学習対象データの一例を示す。学習対象データは、記憶部３に記憶されるものとする。図３の例に示されるように、学習対象データには、ソフトウェアごとに、ＩＴ・ＳＴエラー数が「０件」の場合、教師データ「ＯＫ」が設定され、ＩＴ・ＳＴエラー数が「１件」以上の場合、教師データ「ＮＧ」が設定される。また、教師データ以外のデータは、上述したように、学習モデル生成部１４に入力されている。
【００３６】
図２の例に示されるように、学習モデル生成部１４は、教師データが設定された学習対象データを入力として、ＲＢＦカーネルを利用したサポートベクターマシンやニューラルネットワーク等を利用した機械学習を行い、学習モデルを生成する。生成された学習モデルは、記憶部３に記憶される。
【００３７】
上述したように、学習モデル生成部１４は、ソフトウェアごとの、プログラムテストの過去実績と、結合テストおよびシステムテストの過去の不具合実績（ＩＴ・ＳＴエラー数）とを入力とし、ＩＴ・ＳＴエラー数に基づく教師データを用いて、機械学習を行なう。これにより、予測精度の高い学習モデルを生成することができる。
【００３８】
また、学習モデル生成部１４は、ソフトウェアごとのサイクロマティック数およびメソッド数といった要素も加味した機械学習を行い、学習対象モデルを生成する。サイクロマティック数およびメソッド数は予測の精度に影響を及ぼすため、サイクロマティック数およびメソッド数も加味した機械学習が行なわれることで、より予測精度が高い学習モデルを生成することができる。
【００３９】
また、学習モデル生成部１４は、ソフトウェアごとのテスト率および障害率といった要素も加味した学習対象モデルを用いて、機械学習を行なう。テスト率および障害率は評価予測の精度に影響を及ぼすため、テスト率および障害率も加味した機械学習が行なわれることで、さらに予測精度が高い学習モデルを生成することができる。
【００４０】
学習モデル生成部１４は、ＩＴ・ＳＴエラー数に対して、不具合発生確率を設定する。ＩＴ・ＳＴエラー数は、結合テストおよびシステムテストで発生した不具合の数を示すため、該ＩＴ・ＳＴエラー数は、結合テスト時、システムテスト時に、発生する不具合（障害）の確率と相関性がある。
【００４１】
例えば、学習モデル生成部１４は、ＩＴ・ＳＴエラー数と不具合発生確率を以下のように設定してもよい。以下において、ＩＴ・ＳＴエラー数が多くなるに応じて、不具合発生確率が高くなる。
ＩＴ・ＳＴエラー数＝「０件」の場合、不具合発生確率を「５％」と設定。
ＩＴ・ＳＴエラー数＝「１件から２件」の場合、不具合発生確率を「１５％」と設定。
ＩＴ・ＳＴエラー数＝「３件」の場合、不具合発生確率を「３０％」と設定。
ＩＴ・ＳＴエラー数＝「４件」の場合、不具合発生確率を「５０％」と設定。
ＩＴ・ＳＴエラー数＝「５件」の場合、不具合発生確率を「６５％」と設定。
ＩＴ・ＳＴエラー数＝「６件」の場合、不具合発生確率を「７５％」と設定。
ＩＴ・ＳＴエラー数＝「７件」の場合、不具合発生確率を「９０％」と設定。
ＩＴ・ＳＴエラー数＝「８件以上」の場合、不具合発生確率を「１００％」と設定。
【００４２】
学習モデル生成部１４は、機械学習を行い、学習モデルを生成する。ＩＴ・ＳＴエラー数と不具合発生確率との関係も、機械学習が行なわれることにより、変化する。これにより、結合テストおよびシステムテストで、不具合が発生する確率が、高い精度で予測される。学習モデルは、不具合の発生確率の予測結果（以下、不具合予測発生確率と称する）を含む。
【００４３】
＜学習モデルを用いた品質予測の一例＞
図４の例を参照して、学習モデルを用いた品質予測の一例について説明する。所定のソフトウェアについて、プログラムテストが実施されると、テスト結果が得られる。該所定のソフトウェアは、検証対象のソフトウェア（検証対象ソフトウェア）である。
【００４４】
検証対象ソフトウェアは、プログラムテストが完了したソフトウェアであり、結合テストおよびシステムテストで不具合が発生するかを予測する対象となるソフトウェアである。
【００４５】
図４の例のうち、プログラムテスト完了時データは、検証対象ソフトウェアのプログラムテストが完了した際のテスト結果に基づくデータであり、ソフトウェア名と開発規模ステップ数とテスト件数と不具合件数とを含む。図４において、プログラムテスト完了時データは、「ＰＴ完了時データ」と表記される。
【００４６】
静的解析部１３は、検証対象ソフトウェアのソースコードを分析して、サイクロマティック数およびメソッド数を求める。計算部１２は、検証対象ソフトウェアについてのテスト結果に基づいて、上述した式を用いて、テスト率および障害率を算出する。
【００４７】
予測部１５は、上記の各種データを取得する。また、予測部１５は、記憶部３に記憶されている学習モデルを取得する。予測部１５は、検証対象ソフトウェアについての各種データと学習モデルとに基づいて、検証対象ソフトウェアについての結合テストおよびシステムテストのテスト結果を予測する。
【００４８】
生成された学習モデルの予測精度（結合テストおよびシステムテストで不具合が発生するかの予測の精度）は高い。予測部１５は、該学習モデルを用いて、検証対象ソフトウェアについての結合テストおよびシステムテストのテスト結果を予測することで、結合テストの前に、早期にソフトウェアの品質を高い精度で評価することができる。
【００４９】
予測部１５は、検証対象ソフトウェアごとに、予測結果および不具合予測発生確率を付した予測結果一覧を生成する。図５は、予測結果一覧の一例を示す図である。図５の例に示されるように、予測結果一覧には、上述した各種のデータと予測結果と不具合予測発生確率とが付されている。
【００５０】
予測部１５は、プログラムテストが完了した際に、予測結果一覧を生成する。生成された予測結果一覧は、記憶部３に記憶されるものとする。例えば、表示制御部１６は、図５の例に示される予測結果一覧を表形式で、表示装置４に表示させてもよい。
【００５１】
上記予測結果一覧が表示装置４に表示されることで、評価者に対して、高い精度の予測結果を提示することができる。該予測結果が「ＮＧ」を示す場合、対応するソフトウェアには問題点が内在している可能性が高い。
【００５２】
プログラムテストが完了した時点で、高い精度で「ＮＧ」と予測されたソフトウェアが提示されることで、評価者は、該ソフトウェアに問題点が内在している可能性が高いことを認識できる。つまり、予測結果が「ＮＧ」に対応するソフトウェアの品質が低い可能性が高いことを、結合テストよりも前の早い段階で評価者は認識できる。
【００５３】
表示制御部１６は、予測結果が「ＮＧ」である旨、および予測結果が「ＮＧ」であるソフトウェア名を強調表示して、表示装置４に表示させてもよい。例えば、表示制御部１６は、予測結果が「ＮＧ」であるソフトウェア名と、予測結果が「ＯＫ」であるソフトウェア名とを異なる色で、表示装置４に表示させてもよい。
【００５４】
上述したように、ＩＴ・ＳＴエラー数と不具合発生確率との関係について、機械学習が行なわれた不具合予測発生確率を、学習モデルは含む。予測部１５は、検証対象ソフトウェアごとに、不具合予測発生確率を予測結果一覧に付加する。
【００５５】
不具合予測発生確率が付加された予測結果一覧が、表示装置４に表示されることで、評価者は、結合テストおよびシステムテストにおいて、不具合（障害）が生じる可能性を定量的な数値として認識できる。
【００５６】
図６は、予測結果グラフの一例を示す図である。予測結果グラフは、テスト率を横軸とし、障害率を縦軸とした場合における、予測結果をプロット表示したグラフである。黒丸は、予測結果が「ＯＫ」であることを示し、「×」は、予測結果が「ＮＧ」であることを示す。
【００５７】
表示制御部１６は、表示装置４に表示されているプロットのうち、上記の「×」のプロットの指定を受け付けた場合、該「×」のプロット（予測結果が「ＮＧ」のプロット）に対応するソフトウェアを示す情報を、表示装置４に表示させてもよい。
【００５８】
例えば、評価者が、入力装置５としてのマウスを操作し、中央の象限内の「×」のプロットにマウスカーソルを合わせ、クリックする操作を行ったとする。制御部２は、該操作を受け付ける。
【００５９】
表示制御部１６は、記憶部３に記憶されている予測結果一覧を参照して、指定された「×」のプロット（操作を受け付けたプロット）に対応するソフトウェアの名称を取得し、表示装置４にソフトウェアの名称を表示させてもよい。例えば、表示制御部１６は、表示装置４に、ソフトウェアの名称をポップアップ表示させてもよい。
【００６０】
従って、結合テストおよびシステムテストにおけるテスト結果が「ＮＧ」であると予測される可能性のあるソフトウェアの名称が表示装置４に表示されるため、評価者は、テスト結果が「ＮＧ」であると予測される可能性のあるソフトウェアの名称を認識できる。
【００６１】
ここで、図６の例の予測結果グラフは、９つの象限に区分けされている。中央の象限は、テスト率基準値から前後の所定範囲内であり、且つ、障害率基準値から前後の所定範囲内である。該中央の象限は、設定率および障害率が正常である範囲の一例である。例えば、上述した例では、テスト率基準値は「９０．９」であり、障害率基準値は「９．２」である。
【００６２】
図６の例の予測結果グラフは、テスト率基準値「９０．９」を「１．０」とし、障害率基準値「９．２」を「１．０」とした場合における、予測結果をプロット表示したグラフを示す。上述したように、テスト率および障害率は、所定の範囲内であれば、品質が正常であると判定することができる。
【００６３】
図６の例の中央の象限は、品質が正常であると判定することができる象限を示す。従って、中央の象限の範囲内の全てのプロットは、本来であれば、予測結果が「ＯＫ」であることを示す黒丸になっていることが想定される。
【００６４】
この点、中央の象限の範囲内に、予測結果が「ＮＧ」を示す「×」が入っている場合、検証対象ソフトウェアは、テスト率および障害率による判定では品質が正常であるが、予測結果としては、結合テストおよびシステムテストで不具合（障害）が生じる可能性が高い。
【００６５】
例えば、プログラムテストの過去実績から得られる障害率およびテスト率に基づいて、ソフトウェアの品質評価を行うことが考えられる。ただし、テスト率基準値と障害率基準値とのうち何れか一方または両方が、適正な値に設定されない場合があり、その場合、ソフトウェアの品質評価の精度が低下する。
【００６６】
従って、図６の例に示されるように、テスト率および障害率に基づく判定では正常であることが示されるソフトウェアであっても、結合テストおよびシステムテストで不具合（障害）が生じる可能性が高いことを示す予測結果を、評価者に提示することができる。
【００６７】
＜実施形態の処理の流れの一例＞
次に、実施形態の処理の流れの一例について説明する。図７および図８は、学習モデル生成の一例を示すフローチャートである。図７のフローチャートに示されるように、データ取得部１１は、記憶部３から、複数のソフトウェアについてのプログラムテストの過去実績を取得する（ステップＳ１）。
【００６８】
計算部１２は、取得されたプログラムテストの過去実績に基づいて、各ソフトウェアについて、上述した式により、テスト率および障害率を計算する（ステップＳ２）。静的解析部１３は、記憶部３に記憶された各ソフトウェアのソースコードを静的解析し、各ソフトウェアについてのサイクロマティック数およびメソッド数を求める（ステップＳ３）。
【００６９】
データ取得部１１は、記憶部３に記憶されている過去の不具合実績から、各ソフトウェアについてのＩＴ・ＳＴエラー数を取得する（ステップＳ４）。ステップＳ１からステップＳ４の処理により、各ソフトウェアについての各種データが取得される。
【００７０】
学習モデル生成部１４は、各ソフトウェアのうち１つを選択する（ステップＳ５）。学習モデル生成部１４は、選択されたソフトウェアに対応するＩＴ・ＳＴエラー数が「０」であるかを判定する（ステップＳ６）。
【００７１】
ステップＳ６でＹＥＳの場合、ＩＴ・ＳＴエラー数が「０」であるため、選択されたソフトウェアに、教師データとして「ＯＫ」を設定する（ステップＳ７）。ステップＳ６でＮＯの場合、ＩＴ・ＳＴエラー数が１以上であるため、選択されたソフトウェアに、教師データとして「ＮＧ」を設定する（ステップＳ７）。
【００７２】
学習モデル生成部１４は、全てのソフトウェアについて、教師データの設定が終了したかを判定する（ステップＳ９）。ステップＳ９でＮＯの場合、処理は、ステップＳ５に移行する。ステップＳ９でＹＥＳの場合、処理は、「Ａ」からステップＳ１０に移行する。
【００７３】
「Ａ」以降の処理について、図８のフローチャートを参照して説明する。上述したように、学習モデル生成部１４は、ＩＴ・ＳＴエラー数に対して、学習モデルに対して、不具合発生確率を設定する（ステップＳ１０）。
【００７４】
学習モデル生成部１４は、各ソフトウェアについて、上述した各種のデータ、教師データおよび不具合発生確率を表形式（多次元配列の形式）で表した学習対象データを生成する（ステップＳ１１）。
【００７５】
学習モデル生成部１４は、学習対象データの教師データを用いて、ＲＢＦカーネルを利用したサポートベクターマシンやニューラルネットワーク等による機械学習を行い、学習モデルを生成する（ステップＳ１２）。生成された学習モデルは、記憶部３に記憶される（ステップＳ１３）。
【００７６】
次に、品質予測の処理の流れの一例について、図９のフローチャートを参照して説明する。データ取得部１１は、記憶部３から、複数の検証対象ソフトウェアのプログラムテスト完了時のテスト結果を取得する（ステップＳ２１）。
【００７７】
計算部１２は、取得されたプログラムテスト完了時のテスト結果に基づいて、各検証対象ソフトウェアについて、上述した式により、テスト率および障害率を計算する（ステップＳ２２）。
【００７８】
静的解析部１３は、記憶部３に記憶された各検証対象ソフトウェアのソースコードを静的解析し、各検証対照ソフトウェアについてのサイクロマティック数およびメソッド数を求める（ステップＳ２３）。
【００７９】
予測部１５は、取得された各検証対象ソフトウェアの各種データについて多次元配列を生成する（ステップＳ２４）。該多次元配列は、図５の例で示した予測結果一覧のうち、予測結果および不具合予測発生確率がない多次元配列である。
【００８０】
予測部１５は、生成済みの学習モデルと、ステップＳ２４で生成された多次元配列とに基づいて、各検証対象ソフトウェアの品質を予測する（ステップＳ２５）。これにより、各検証対象ソフトウェアについての予測結果が得られる。該予測結果は、上記多次元配列に付加される。
【００８１】
予測部１５は、上記多次元配列の各検証対象ソフトウェアに、上述した不具合予測発生確率を付加し、図５の例で示した予測結果一覧を生成する（ステップＳ２６）。生成された予測結果一覧は、各検証対象ソフトウェアについての予測結果を示し、予測部１５は、該予測結果一覧を、学習対象データにフィードバック（追加）してもよい。
【００８２】
ステップＳ２６で生成された予測結果一覧は、記憶部３に記憶される。表示制御部１６は、記憶部３に記憶された予測結果一覧を、表形式またはグラフ形式で表示装置４に表示させる（ステップＳ２８）。
【００８３】
次に、プロット指定処理の流れについて、図１０のフローチャートを参照して説明する。表示装置４に、予測結果グラフが表示されている際に、入力装置５としてのマウスにより、何れかのプロットの指定を制御部２が受け付ける（ステップＳ３１）。例えば、評価者が、「×」のプロットにマウスカーソルを合わせてクリックする操作を行うと、制御部２は、該操作を受け付ける。
【００８４】
表示制御部１６は、記憶部３に記憶されている予測結果一覧を参照して、指定されたプロットに対応する検証対象ソフトウェアを特定する（ステップＳ３２）。表示制御部１６は、特定された検証対象ソフトウェアを、表示装置４に表示させる（ステップＳ３３）。
【００８５】
＜品質予測装置のハードウェア構成の一例＞
次に、図１１の例を参照して、品質予測装置１のハードウェア構成の一例を説明する。図１１の例に示すように、バス１００に対して、プロセッサ１１１とRandom Access Memory(RAM)１１２とRead Only Memory(ROM)１１３とが接続される。また、該バス１００に対して、補助記憶装置１１４と媒体接続部１１５とが接続される。
【００８６】
プロセッサ１１１はＲＡＭ１１２に展開されたプログラムを実行する。実行されるプログラムとしては、実施形態における処理を行う品質予測プログラムが適用されてもよい。
【００８７】
ＲＯＭ１１３はＲＡＭ１１２に展開される品質予測プログラムを記憶する不揮発性の記憶装置である。補助記憶装置１１４は、種々の情報を記憶する記憶装置であり、例えばハードディスクドライブや半導体メモリ等が適用されてもよい。媒体接続部１１５は、可搬型記録媒体１１５Ｍと接続可能に設けられている。
【００８８】
可搬型記録媒体１１５Ｍとしては、可搬型のメモリ（例えば、光学ディスクや半導体メモリ等）が適用されてもよい。この可搬型記録媒体１１５Ｍに実施形態の処理を行う判定プログラムが記録されていてもよい。上述した制御部２は、与えられた品質予測プログラムをプロセッサ１１１が実行することにより実現されてもよい。
【００８９】
ＲＡＭ１１２、ＲＯＭ１１３、補助記憶装置１１４および可搬型記録媒体１１５Ｍは、何れもコンピュータ読み取り可能な有形の記憶媒体の一例である。これらの有形な記憶媒体は、信号搬送波のような一時的な媒体ではない。
【００９０】
＜その他＞
本実施形態および変形例は、以上に述べた実施の形態に限定されるものではなく、本実施形態および変形例の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
【符号の説明】
【００９１】
１    品質予測装置
２    制御部
３    記憶部
４    表示装置
５    入力装置
１１    データ取得部
１２    計算部
１３    静的解析部
１４    学習モデル生成部
１５    予測部
１６    表示制御部
１１１  プロセッサ
１１２  ＲＡＭ
１１３  ＲＯＭ
【図１】
2019106136.tif 000003
【図２】
2019106136.tif 000004
【図３】
2019106136.tif 000005
【図４】
2019106136.tif 000006
【図５】
2019106136.tif 000007
【図６】
2019106136.tif 000008
【図７】
2019106136.tif 000009
【図８】
2019106136.tif 000010
【図９】
2019106136.tif 000011
【図１０】
2019106136.tif 000012
【図１１】
2019106136.tif 000013