(57)【要約】【課題】  被検査プログラムの作動に於ける指定現象を発生する入力シナリオを探索するプログラム検査装置に於いて、開発プロセスに於いて適していない入力シナリオによるシミュレーションの実行頻度を低減し、検証工数及び時間の低減を図ること。【解決手段】  本発明の装置は、入力シナリオを用いた被検査プログラムのコンピュータ・シミュレーションの実行による結果出力値と指定現象の発生に相当する結果出力値の値域との距離に相当するロバスト値と、入力シナリオに対する使用者による指定現象の発生の有無の探索の要求が高くなるほど又は入力シナリオの現実に発生する可能性が高くなるほど小さくなるペナルティ値との各々の増大と共に増大する目的関数が最適化処理によって小さくなるように、入力シナリオの変更とシミュレーション演算とを反復実行し、ロバスト値が０以下となったときの入力シナリオを指定現象を発生するものとして検出する。【選択図】        図１
2018190230.tif 000002
【特許請求の範囲】
【請求項１】
プログラムの作動に於ける指定現象を発生する入力シナリオを探索するプログラム検査装置であって、
設定されたパラメータに基づいて入力シナリオを生成する入力シナリオ生成手段と、
前記入力シナリオを用いて前記プログラムのコンピュータ・シミュレーションを実行し結果出力値を出力するシミュレーション実行手段と、
前記結果出力値を定義する空間に於ける、前記指定現象の発生に相当する前記プログラムの実行により算出される結果出力値の値域である指定現象結果出力値域と前記シミュレーション実行手段により出力された前記結果出力値との間の距離が長くなるほど大きくなるロバスト値を決定するロバスト値算出手段と、
前記入力シナリオに対する使用者による前記指定現象の発生の有無の探索の要求が高くなるほど又は前記入力シナリオの現実に発生する可能性が高くなるほど小さくなるペナルティ値を決定するペナルティ値決定手段と、
前記ロバスト値と前記ペナルティ値との各々の増大と共に増大する目的関数が小さくなるように最適化処理によって前記パラメータを再設定するパラメータ再設定手段と、
を含み、
前記入力シナリオ生成手段による前記再設定されたパラメータを用いた入力シナリオの生成、前記シミュレーション実行手段による結果出力値の出力、前記ロバスト値決定手段によるロバスト値の決定、前記ペナルティ値決定手段によるペナルティ値の決定及び前記パラメータ再設定手段によるパラメータの再設定が反復実行され、前記ロバスト値が０以下となったときの入力シナリオが指定現象を発生する入力シナリオとして検出される装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ・プログラム又はソフトウェアの検査を行う装置に係り、より詳細には、コンピュータ・プログラム又はソフトウェアによる不具合現象などの任意の指定された現象（指定現象）の発生の有無を検査するとともに、その指定現象を発生する入力（テストパターン又は入力シナリオ）を検出又は探索するための装置に係る。
【背景技術】
【０００２】
コンピュータ技術の進歩により、現在、多くの装置や機械器具は、コンピュータ制御によって作動される。かかるコンピュータ制御に於いては、典型的には、装置や機械器具の作動を決定するコンピュータ・プログラム又はソフトウェア（以下、単に、「プログラム」と称する。）が、装置や機械器具に搭載されるコンピュータに実装され、或る入力が装置又は機械器具に対して為されると、ＣＰＵが、プログラムに従って、その入力に対応する出力を算定する演算処理を実行し、算定された出力に対応してアクチュエータ等の部位が駆動されることとなる。従って、コンピュータ制御される装置や機械器具が確実に正常に作動するためには、プログラムの装置又は機械器具の制御用コンピュータへの実装に際して、プログラム内のデバッグやエラー検証を行っておくことは勿論のこと、装置又は機械器具に与えられ得る任意の入力に対して、コンピュータ制御による装置又は機械器具の作動に於ける不具合現象、例えば、ハンチング、値の急変（動作量の急変など）、値の所定の範囲外への逸脱、といった現象が発生しないように、プログラムを調製しておくことが必要である。この点に関し、人の作業で不具合現象の有無を検出するテストは、工数が膨大であり、且つ、思考の抜け漏れによって、不具合現象の見逃しが生ずる懸念が存在する。そこで、従前より、プログラムの実装に際して、上記の如き、装置又は機械器具の作動に於ける不具合現象の発生のないことの確認をコンピュータで行う技術が種々提案されている。
【０００３】
そのようなコンピュータを用いて、検査されるべきプログラムによる不具合現象の有無を検出するテストを行う例として、例えば、非特許文献１や特許文献１〜３に於いては、検査されるべきプログラムにテストパターンを入力してプログラムをシミュレーションにて実行して結果出力を解析する動的テストの手法が開示されている。これらの動的テストでは、端的に述べれば、まず、不具合現象に相当するプログラムの結果出力値の値域が特定され、次いで、テストパターンとして、入力シナリオ、即ち、仮想的な時系列の入力信号、を用いたプログラムのシミュレーションの実行により得られた結果出力値が、不具合現象に相当する値域に近づくように、入力シナリオを変化させる処理（かかる処理は、「最適化処理」と称される。）を行いながら、プログラムの実行による結果出力値の算出が反復して実行される。そして、或る入力シナリオに対して、不具合現象に相当する値域に入る結果出力値が算出されたときには、そのプログラムは、不具合現象が発生し得ると判定されるとともに、その入力シナリオが不具合現象を発生するパターンであると特定され、結果出力値が不具合現象に相当する値域に最も近づいたときでも、不具合現象に相当する値域に入らない場合には、そのプログラムは、不具合現象が発生せず、不具合現象を発生する入力シナリオが存在しないと判定される。また、テストパターンとして入力シナリオを構成し、検査対象となるプログラムへ入力して、プログラムを実行し、その実行による結果の状態と、期待される結果の状態とを比較してプログラムの評価判定する技術も知られている（例えば、特許文献４、５）
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−００２３７０
【特許文献２】特開２０１５−１９７８６８
【特許文献３】特開２０１５−１９７８６９
【特許文献４】特開２００５−３１６７１０
【特許文献５】特開２０１３−１０９７１９
【非特許文献】
【０００５】
【非特許文献１】ツールズ・アンド・アルゴリズム・フォー・ザ・コンストラクション・アンド・アナリシス・オブ・システムズ  レクチャー・ノーツ・イン・コンピュータ・サイエンス、６６０５巻  ２０１１年  ２５４−２５７ページ、アンピュリディ他４名（Tools  and  Algorithms  for  the  Construction  and  Analysis  of  Systems  Lecture  Notes  in  Computer  Science  Volume  6605,  2011,  pp254-257  S-TaLiRo:  A  Tool  for  Temporal  Logic  Falsification  for  Hybrid  Systems,  Yashwanth  Annpureddy,  Che  Liu,  Georgios  Fainekos,  Sriram  Sankaranarayanan）
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記の非特許文献１等にて提案されている如きプログラムの動的テスト手法は、サーチベーステスト（ＳＢＴ）とも称され、既に触れた如く、最適化処理にて、結果出力値が、指定現象の発生に相当する結果出力値の値域（指定現象結果出力値域）に近づくように入力シナリオを変化させながら、プログラムのシミュレーションを自動的に反復することにより、指定現象を生ずる入力シナリオの探索が網羅的に達成できることとなる。かくして、ＳＢＴは、制御ソフトウェアの開発の効率向上や不具合現象の見逃しの削減を狙った、開発中の制御システムの仕様の検証のために有利に用いられるツールとして注目されている。
【０００７】
しかしながら、上記の如きＳＢＴの最適化処理に於いては、プログラムのシミュレーションの結果出力値を指定現象結果出力値域に近づけるための入力シナリオの変更が、結果出力値と指定現象結果出力値域との関係のみを参照して実行され、シミュレーションに使用される入力シナリオの各々の「適切さ」、例えば、各入力シナリオの現実での起こり易さなど、を考慮せずに、入力シナリオの探索を行うようになっており、このことにより、検証工数又は時間が増大してしまうこととなっていた。より具体的に述べれば、従前のＳＢＴに於ける最適化処理では、或る入力シナリオによるプログラムのシミュレーションの実行後、（結果出力値を定義する空間に於ける）今回の結果出力値と指定現象結果出力値域の境界との間の距離（ロバスト値）が算出され、そのロバスト値が更に小さくなるように、新たな入力シナリオが生成され、それを用いたシミュレーションが実行される。その場合の新たな入力シナリオの生成に於いては、その入力シナリオが実世界では起こり得ないもの、或いは、探索から除外したいもの（指定現象が生ずるか否かが既知のシナリオなど）であるか否かなどは考慮されておらず、従って、そのような開発プロセスに於いて適していない入力シナリオや指定現象が発生するか否かの検証があまり必要でない入力シナリオも生成される場合があった。そして、通常、プログラムのシミュレーションの実行には或る程度の時間を要するところ、前記のような、開発プロセスに於いて適していない、謂わば、探索に無用な若しくは然程に重要でない入力シナリオをも含めて使用してプログラムのシミュレーションの反復実行が為されることとなるので、その分、多大な工数と時間とが、指定現象を与える入力シナリオ或いは検証の重要性の高い条件を有する入力シナリオを探索するまでに必要となってしまう場合があった。また、従前のＳＢＴに於いては、上記の如く、最適化処理で生成されてシミュレーションに使用される入力シナリオの「適切さ」を考慮する構成が設けられておらず、入力シナリオに対して積極的に任意の制約や条件を設定できるように構成されていないので、或る特定の条件下、例えば、プログラム検査の実施者又はプログラム検査装置の使用者の探索の要求の高い入力シナリオの条件下、での入力シナリオの探索を重点的に実行するといったことも困難となっている。
【０００８】
かくして、本発明の一つの課題は、上記の如き従前のＳＢＴの状況を鑑み、入力シナリオを用いて被検査プログラムを実行して得られた結果出力値が、不具合現象などの或る指定された現象（指定現象）の値域に近づくように、最適化処理によって、入力シナリオを変更しながら、プログラムを反復実行して、指定現象の有無の検査或いは指定現象を発生する入力シナリオの探索又は検出ができるプログラム検査装置であって、被検査プログラムのシミュレーションに使用される入力シナリオの「適切さ」をも評価できるように、最適化処理の構成を改良し、実世界では起こり得ない入力シナリオなど、開発プロセスに於いて適していない入力シナリオによるシミュレーションの実行頻度が低減され、これにより制御プログラムの検証工数及び時間の低減が図られる新規なプログラム検査装置を提供することである。
【課題を解決するための手段】
【０００９】
本発明によれば、上記の課題は、プログラムの作動に於ける指定現象を発生する入力シナリオを探索するプログラム検査装置であって、
設定されたパラメータに基づいて入力シナリオを生成する入力シナリオ生成手段と、
前記入力シナリオを用いて前記プログラムのコンピュータ・シミュレーションを実行し結果出力値を出力するシミュレーション実行手段と、
前記結果出力値を定義する空間に於ける、前記指定現象の発生に相当する前記プログラムの実行により算出される結果出力値の値域である指定現象結果出力値域と前記シミュレーション実行手段により出力された前記結果出力値との間の距離が長くなるほど大きくなるロバスト値を決定するロバスト値決定手段と、
前記入力シナリオに対する使用者による前記指定現象の発生の有無の探索の要求が高くなるほど又は前記入力シナリオの現実に発生する可能性が高くなるほど小さくなるペナルティ値を決定するペナルティ値決定手段と、
前記ロバスト値と前記ペナルティ値との各々の増大と共に増大する目的関数が小さくなるように最適化処理によって前記パラメータを再設定するパラメータ再設定手段と、
を含み、
前記入力シナリオ生成手段による前記再設定されたパラメータを用いた入力シナリオの生成、前記シミュレーション実行手段による結果出力値の出力、前記ロバスト値決定手段によるロバスト値の決定、前記ペナルティ値決定手段によるペナルティ値の決定及び前記パラメータ再設定手段によるパラメータの再設定が反復実行され、前記ロバスト値が０以下となったときの入力シナリオが指定現象を発生する入力シナリオとして検出される装置によって達成される。
【００１０】
上記の構成に於いて、「指定現象」とは、典型的には、既に触れた如き、ハンチング、値の急変（動作量の急変など）、値の所定の範囲外への逸脱、などの、プログラムの作動に於いて望ましくない不具合現象であるが、本発明の構成に於いては、指定現象が必ずしも不具合現象でなくてもよく、任意に指定される現象であって、プログラムの結果出力値に於いてその指定現象の発生に相当する値域が定義できる現象であってよいことは理解されるべきである。「パラメータ」とは、プログラムへ入力として与えられる「入力シナリオ」、即ち、仮想的な時系列データを決定する任意の変数であってよく、プログラムの検査（入力シナリオの探索）の最初に於いては、任意の初期値が設定され、その後に於いては、上記の如く「パラメータ再設定手段」により変更されることとなる。「ロバスト値」とは、上記のＳＢＴに於ける「ロバスト値」と同様であってよく、結果出力値が定義される空間に於ける指定現象結果出力値域（指定現象の発生に相当するプログラムの実行により算出される結果出力値の値域）とシミュレーション実行手段により出力された結果出力値との間の距離そのもの或いは距離が長くなるほど増大する指標値であってよい。「ペナルティ値」とは、生成されてシミュレーションの実行に使用される入力シナリオの各々の「適切さ」を考慮するために、本発明に於いて初めて導入される指標値であり、上記の如く、入力シナリオに対する使用者による指定現象の発生の有無の探索の要求が高くなるほど、或いは、入力シナリオの現実に発生する可能性が高くなるほど、小さくなる値として定義される。「最適化処理」とは、上記のＳＢＴに於いて、ロバスト値を最小にするよう「パラメータ」を変更する最適化処理と略同様であるところ、本発明に於いては、上記の如く、ロバスト値とペナルティ値との各々の増大と共に増大する「目的関数」、例えば、ロバスト値とペナルティ値との積若しくは線形和、が小さくなるように「パラメータ」を変更する処理である。そして、上記の如く、本発明の装置に於いては、パラメータを用いた入力シナリオの生成と、シミュレーションの実行による結果出力値の出力と、結果出力値のロバスト値と入力シナリオのペナルティ値とのそれぞれの決定と、ロバスト値とペナルティ値から決定される目的関数を小さくするためのパラメータの再設定とが、逐次的に反復実行され、その過程に於いて、結果出力値のロバスト値が０以下となった場合には、結果出力値が指定現象結果出力値域内に包含され、指定現象が発生したことに相当するので、その結果出力値を与えた入力シナリオが指定現象を発生する入力シナリオとして検出されることとなる。パラメータを用いた入力シナリオの生成と、結果出力値のロバスト値の決定と、パラメータの再設定（即ち、最適化処理）とは、上記のＳＢＴに於いて利用されている如き任意のアルゴリズムにて達成可能である。また、前記の反復実行される一連の処理は、任意に設定される終了条件が成立するまで継続されてよい。終了条件としては、例えば、ロバスト値が０以下になるまで又は最小となるまで、ペナルティ値が所定値以下になるまで又は最小となるまで、入力シナリオの探索数が所定数に達するまで、任意に設定された検査時間が達成されるまで、使用者が終了を要求するまで、などであってよい。
【００１１】
上記の本発明の装置の作動によれば、最適化処理が、結果出力値の評価を表すロバスト値だけでなく、入力シナリオの「適切さ」の程度を表す指標値、即ち、入力シナリオの評価を表すペナルティ値も小さくなる方向へ実行され、これにより、上記の反復実行される一連処理の過程で生成される入力シナリオは、指定現象結果出力値域により近くなる結果出力値を与える方向（ロバスト値が小さくなる方向）に変化するだけでなく、「適切さ」の程度が高くなる方向（ペナルティ値が小さくなる方向）に変化していくことが期待されることとなる。そうすると、ペナルティ値が大きい入力シナリオ、即ち、探索に無用な若しくは然程に重要でない入力シナリオが生成される可能性が低くなり、ペナルティ値が小さい、即ち、開発プロセスに於いてより適した入力シナリオがより多く生成されて、そのような入力シナリオを用いた検証が重点的に実行されることとなる。特に、入力シナリオの「適切さ」として、入力シナリオの現実での発生のし易さを指標とし、入力シナリオが現実に発生し易いほど、そのペナルティ値が小さくなるように設定した場合には、現実に発生し易い入力シナリオが重点的に生成され、指定現象が発生するか否かの検証に用いられることとなる。
【００１２】
本発明で初めて導入されるペナルティ値は、後の実施形態の欄に於いて、より具体的に例示される如く、入力シナリオの各々の「適切さ」の程度が高いほど、例えば、入力シナリオの現実に発生する可能性が高くなるほど、値が増大する指標値（後で適切度又は現実度などと称される。）が、種々の態様のいずれかにて、まず算定され、その指標値に基づいて、入力シナリオに対する使用者による指定現象の発生の有無の探索の要求が高いほど、値が小さくなる重み付け関数などを用いて算出されてよい。上記の本発明の実施の形態に於いて、入力シナリオの評価を考慮するためのペナルティ値決定手段は、入力シナリオの、プログラムのシミュレーションに使用される「適切さ」を評価する指標値を与える入力シナリオ評価手段と、その指標値に基づいてペナルティ値を算出するペナルティ値算出手段とから構成されていてよい。入力シナリオ評価手段に於いては、（過去に）実際に発生したデータ（実データ）、例えば、車両の走行制御プログラムの場合には、車両の操縦入力の実際のデータ（アクセルペダル踏込み操作、ブレーキペダル踏込み操作、ハンドル操作などの時系列データ）、から抽出される任意の特徴量と、これに対応するシミュレーションに使用される入力シナリオから抽出される特徴量とを比較して、入力シナリオの現実に発生し得る度合又は確率が見積もられ、評価のための指標値として利用されるようになっていてよい。一つの実施形態としては、実データから抽出される任意の多次元特徴量（例えば、所定時間枠内に於ける単位時間毎の入力信号の大きさの時系列データなど）の分布マップを作成し、そのマップに於いて、入力シナリオの多次元特徴量のマップ上での位置から、所定の範囲内にある、入力シナリオの特徴量に近い実データの特徴量の数などを計数して、その値を入力シナリオの現実に発生し得る度合として算出する、といった態様が考えられる。そして、ペナルティ値算出手段は、入力シナリオ評価手段の算出した指標値に任意の重み付けをしてペナルティ値を算出するようになっていてよい（ペナルティ値が大きくなるほど、それを与える入力シナリオに近い入力シナリオが生成され難くなる。）。そして、ペナルティ値決定手段に於いて、使用者が重点的に探索を行いたい条件の入力シナリオのペナルティ値は低く設定され、或いは、使用者が探索が不要であると考える条件の入力シナリオのペナルティ値は高く設定されるようにペナルティ値の算出条件が変更できるようになってよい。ペナルティ値の算出条件の設定は、入力シナリオ評価手段の算出した指標値からペナルティ値を算出する重み付け関数の形状を適宜変更することなどによって達成されてよい。
【発明の効果】
【００１３】
かくして、上記の本発明に於いては、被検査プログラムの作動に於ける指定現象を発生する入力シナリオの探索に於いて、入力シナリオの「ペナルティ値」という新規な概念を導入して、シミュレーションに使用される入力シナリオの各々の「適切さ」が考慮されるように、新しい入力シナリオを生成する最適化処理を実行することとなる。かかる構成により、開発プロセスに於いて適していない入力シナリオや検証があまり必要でない入力シナリオが生成されてシミュレーションが実行される頻度が低減され、制御プログラムの検証と指定現象を発生する入力シナリオの探索のための工数及び時間の低減が図られることとなる。また、「ペナルティ値」の決定条件を適宜変更するだけで、実世界では起こり得ない条件での入力シナリオの探索を回避することが可能となり、或いは、プログラム検査の実施者又はプログラム検査装置の使用者の探索の要求の高い条件下での入力シナリオの探索を重点的に実行できることとなるので、プログラム検証作業の更なる効率化、プログラムの開発工数の低減、プログラム及び制御品質の更なる向上が期待される。
【００１４】
本発明のその他の目的及び利点は、以下の本発明の好ましい実施形態の説明により明らかになるであろう。
【図面の簡単な説明】
【００１５】
【図１】図１（Ａ）は、本発明によるプログラム検査装置を模式的に表した図であり、図１（Ｂ）は、その内部の処理部の構成をブロック図の形式で表した図である。なお、図中、矢印は、情報の流れを示している。
【図２】図２（Ａ）は、本発明のプログラム検査装置に於いて結果出力値から決定されるロバスト値について説明する図である。図２（Ｂ）、（Ｃ）、（Ｄ）は、それぞれ、ＳＢＴの最適化処理に於ける入力値、出力値、ロバスト値又は目的関数の変化の態様を説明する模式的なグラフ図である。
【図３】図３は、本発明のプログラム検査装置の入力シナリオ評価部に於いて入力シナリオの「適切度」として「現実度」を算出するために、予め準備される現実度算出用マップの調製過程を模式的に説明する図である。図３に於いては、例として、車両の走行制御プログラムのシミュレーションに利用される入力シナリオとして、アクセル開度率とブレーキ油圧値の時系列データを用いた場合が示されている。図３（Ａ）は、入力シナリオとして利用される信号に対応する過去の実データの例を示している。図３（Ｂ）は、図３（Ａ）の実データを所定時間枠に分割した状態を模式的に表している。図３（Ｃ）は、所定時間枠毎の分割された実データに於ける特徴量を抽出する処理を説明する図であり、特に、図示の例では、単位時間毎のアクセル開度率とブレーキ油圧値を多次元の特徴量として抽出する処理を模式的に示している。図３（Ｄ）は、所定時間枠毎の抽出された多次元の特徴量の表す状態点を、多次元の特徴量が張る空間に於いて、プロットして調製された実データの特徴量分布マップを模式的に示している。
【図４】図４は、本発明のプログラム検査装置の入力シナリオ評価部に於いて、図３に於いて説明された実データの特徴量分布マップを用いて、入力シナリオ生成部に於いて生成された入力シナリオの「現実度」を算出する処理を模式的に説明する図である。図４（Ａ）は、入力シナリオ生成部に於いて生成された入力シナリオの例の模式図であり、図４（Ｂ）は、図４（Ａ）の入力シナリオから多次元の特徴量を抽出する処理を模式的に示した図である。図４（Ｃ）は、多次元の特徴量が張る空間に於ける実データの特徴量分布マップと共に、図４（Ｂ）にて得られた入力シナリオの多次元特徴量の状態点ｔをプロットした図であり、図４（Ｄ）は、入力シナリオの多次元特徴量の状態点ｔから所定半径ｒ内に存在する実データの特徴量の状態点×の数ｍを計数して現実度として算出する処理を説明する図である。
【図５】図５（Ａ）〜（Ｄ）は、本発明のプログラム検査装置のペナルティ値算出部に於いて、入力シナリオの現実度ｘからペナルティ値Ｐを算出する重み付け関数の形状の例を模式的に示した図である。
【図６】図６は、本発明によるプログラム検査装置に於ける処理をフローチャートの形式にて表した図である。
【図７】図７は、従来のＳＢＴと本発明の実施形態とのそれぞれによって、指定現象を発生する入力シナリオの探索を実行した実施例の結果の一例を示しており、図７（Ａ）は、ロバスト値ｒの推移を示し、図７（Ｂ）は、ペナルティ値Ｐの推移を示している。図７（Ｃ）は、入力シナリオの探索を２０００回実行した後に、指定現象を発生する入力シナリオとして探索された入力シナリオの例を示している。
【符号の説明】
【００１６】
１…コンピュータ本体
２…コンピュータ端末
３…モニター
４…キーボード、マウス（入力装置）
【発明を実施するための最良の形態】
【００１７】
装置の構成
本実施形態によるプログラム検査装置は、この分野で通常使われている形式のコンピュータ装置１に於けるプログラムの作動により実現されてよい（図１（Ａ））。コンピュータ装置１には、通常の態様にて、双方向コモン・バスにより相互に連結されたＣＰＵ、記憶装置、入出力装置（Ｉ／Ｏ）が装備され、記憶装置は、本発明の演算で使用する演算処理を実行する各プログラムを記憶したメモリと、演算中に使用されるワークメモリ及びデータメモリを含んでいる。また、プログラム検査の実施者又はプログラム検査装置の使用者（以下、単に「使用者」と称する。）によるコンピュータ装置１への指示及び計算結果その他の情報の表示及び出力は、コンピュータ装置１に接続されたコンピュータ端末装置２を通じて為される。コンピュータ端末装置２には、通常の態様にて、モニター３とキーボード並びにマウスといった入力装置４が設けられ、プログラムが起動されると、使用者は、プログラムの手順に従ってモニター３上の表示に従って、入力装置４を用いてコンピュータ装置１に各種の指示及び入力を行うとともに、モニター３上にてコンピュータ装置１からの演算状態及び演算結果等を視覚的に確認することが可能となる。なお、図示していないその他の周辺機器（結果を出力するプリンタ、計算条件及び演算結果情報等を入出力するための記憶装置など）がコンピュータ装置１及びコンピュータ端末装置２に装備されていてよいことは理解されるべきである。コンピュータ装置１を用いて、以下に述べる各種の処理又は演算を実行する際には、通常の態様にて、各種の処理又は演算に必要なプログラムが起動され、使用者は、コンピュータ端末装置２に於いて、プログラムに於いて準備された入力手順に従って、演算に必要なデータ、演算時の計算条件その他の各種設定を入力し、演算が開始される。そして、演算の実行中又は終了後に、演算結果が、適宜、コンピュータ端末装置２を通じて出力可能となる。
【００１８】
本発明によるプログラム検査装置の各処理を実行する構成に於いては、具体的には、図１（Ｂ）に示されている如く、パラメータρを用いて、検査されるべきプログラム（被検査プログラム）へ入力される仮想的な時系列信号である入力シナリオｕを生成する入力シナリオ生成部と、入力シナリオｕを用いて被検査プログラムのシミュレーション演算を実行して、結果出力値ｙを算出する被検査プログラムシミュレーション演算実行部と、結果出力値ｙのロバスト値ｒを決定するロバスト値決定部と、入力シナリオの適切度又は現実度ｘを決定する入力シナリオ評価部と、入力シナリオの適切度又は現実度ｘから入力シナリオｕのペナルティ値Ｐを算出するペナルティ値算出部と、ロバスト値ｒとペナルティ値Ｐとからそれぞれに対して単調増加する目的関数ｆを算出する目的関数算出部と、最適化処理によって目的関数ｆが小さくなる方向に入力シナリオ生成部へ与えられるパラメータρを再設定する探索エンジン部とが設けられる。
【００１９】
上記の構成に於いて、入力シナリオ生成部へ入力されるパラメータρとは、より具体的には、例えば、被検査プログラムへ入力される信号の、所定の時点（コントロールポイント）に於ける入力値又は設定値であってよい。プログラム検査処理の初めに於いては、使用者によって任意に決定され設定されてよい。そして、入力シナリオ生成部は、コントロールポイントの値を補間して、実質的に連続な時系列信号である入力シナリオを生成するようになっていてよい。即ち、パラメータρが変更されると、入力シナリオｕも変更されることとなる。後に例示される如く、例えば、被検査プログラムが車両の走行制御プログラムであり、その入力信号として、アクセル開度とブレーキ油圧を受容するように構成されている場合、パラメータρは、所定の時点に於けるアクセル開度とブレーキ油圧のそれぞれの値であり、入力シナリオｕは、所定の時間幅に亙って実質的に連続な時系列のアクセル開度とブレーキ油圧の値となる。
【００２０】
被検査プログラムシミュレーション演算実行部は、従前のＳＢＴと同様に、コンピュータ・シミュレーションによって、入力シナリオｕを用いて被検査プログラムを実行し、その応答として、結果出力値ｙを算出するものであってよい。入力シナリオｕが時系列信号の場合、被検査プログラムのｙも典型的には時系列データとなり、時系列の出力波形が与えられることとなるが、これに限定されない（例えば、一つの入力シナリオｕに対して、有限個の結果出力値が与えられるようになっていてもよい。）。
【００２１】
ロバスト値決定部に於いて決定される「ロバスト値ｒ」は、従前のＳＢＴと同様に、結果出力値が定義される空間に於ける、指定現象結果出力値域、即ち、指定現象の発生に相当するプログラムの実行により算出される結果出力値の値域と、入力シナリオｕを用いて得られた結果出力値ｙとの距離或いは距離が長くなるほど増大する指標値であってよい。典型的には、図２（Ａ）に模式的に描かれている如く、結果出力値ｙが時系列の出力波形の形態で得られ、出力波形と指定現象結果出力値域の境界との距離がロバスト値として算出されてよい。結果出力値が指定現象結果出力値域の境界よりもその内側に入り込んだ場合には、ロバスト値は負値として定義される。後に詳細に説明される如く、「ロバスト値」は、入力シナリオｕの探索のための最適化処理に利用される。
【００２２】
入力シナリオ評価部に於いては、上記の如く、入力シナリオの「適切度」が決定される。入力シナリオの「適切度」とは、本発明にて初めて導入された概念の一つであり、「発明の概要」に於いても触れた如く、シミュレーションに供される入力シナリオの各々についての開発プロセスに於ける「適切さ」、例えば、実世界で発生し得る入力であるか否か、或いは、指定現象が発生するか否かの検証の要求の高い、又は、開発プロセスに於いて重点的に検証されるべき条件の入力であるか否かの指標値であって、本実施形態に於いては、開発プロセスに於ける適切さの度合が高いほど、大きな値となる量として定義される（別の態様として、適切さの度合が高いほど、小さな値となる量に定義されてもよい。）。入力シナリオの適切度としては、例えば、実世界での発生のし易さの程度を表す指標値が用いられてよく、その場合には、指標値は、本明細書に於いて、入力シナリオの「現実度」と称する。入力シナリオの適切度又は現実度は、端的に述べれば、開発プロセスに於ける入力シナリオの「適切さ」の評価の指標値となる。具体的な入力シナリオの適切度として現実度を決定する処理については、後述される。
【００２３】
ペナルティ値算出部では、入力シナリオ評価部に於いて決定された「適切度」又は「現実度」から「重み付け関数」を用いて「ペナルティ値」が算出される。「ペナルティ値」も、「発明の概要」に於いて触れた如く、本発明にて初めて導入された概念の一つであり、入力シナリオの各々についての開発プロセスに於ける「適切さ」の度合が高いほど小さな値として算出される。入力シナリオ評価部に於いて「現実度」が算出され、使用者が「現実度」が高いほど開発プロセスに於ける「適切さ」の度合が高いと考えて入力シナリオの探索を実行する場合には、「現実度」が高いほど「ペナルティ値」が小さくなるように重み付け関数が設定されてよい。後に詳細に説明される如く、「ペナルティ値」も、入力シナリオｕの探索のための最適化処理に利用される。
【００２４】
目的関数算出部では、上記の如く、ロバスト値決定部からのロバスト値ｒとペナルティ値算出部からのペナルティ値Ｐとから、それぞれに対して単調増加する目的関数ｆが算出される。目的関数ｆは、典型的には、「ロバスト値」と「ペナルティ値」との積ｆ＝ｒ・Ｐであってよく、又、これらの値の線形和ｆ＝ａｒ＋ｂＰ（ａ、ｂは、任意の正係数）であってもよい。
【００２５】
そして、探索エンジン部に於いては、最適化処理によって、目的関数ｆがより小さくなるように入力シナリオ生成部へ入力されるパラメータρを変更する処理（パラメータの再設定）が実行される。最適化処理自体は、従前のＳＢＴと同様に、任意の態様にて実行されてよいところ、特に、本発明の場合には、「ロバスト値」と「ペナルティ値」との関数である目的関数ｆが小さくなるようにパラメータρの変更が為されるので、「ロバスト値」だけでなく、「ペナルティ値」も小さくなる方向にパラメータρが変更されることとなり、かくして、入力シナリオとして、「適切さ」の度合がより高いものが生成されることとなる。
【００２６】
なお、上記の一連の各処理部は、コンピュータ装置１に於けるプログラムに従った演算処理によって実現されることは理解されるべきである。
【００２７】
装置の作動
（１）概要
本実施形態によるプログラム検査装置の作動に於いては、基本的には、従前のＳＢＴと同様に、パラメータρからの入力シナリオｕの生成、入力シナリオｕを用いた被検査プログラムのコンピュータ・シミュレーション演算の実行、シミュレーション演算の結果出力値を参照した最適化処理によるパラメータρの変更を反復実行して、指定現象を発生する入力シナリオｕの探索が実行される。かかる一連の処理に於いて、従前のＳＢＴの場合、既に述べた如く、入力シナリオの探索は、結果出力値と指定現象結果出力値域との関係のみに着目したロバスト値に対する最適化処理によるパラメータρの変更を通じて為され、指定現象を発生するか否かの検証の対象となる入力シナリオが、開発プロセスに於いて適したものであるか否かは考慮されていなかったので、検証の必要性又は重要性がさほどに高くない入力シナリオも生成されシミュレーション演算による検証に供されることがあった。これに対し、本実施形態の場合には、「発明の概要」の欄に於いても述べた如く、入力シナリオの「適切さ」を評価できるようにするための、「適切度」又は「現実度」並びに「ペナルティ値」という概念を導入し、検証の対象となる入力シナリオとして、開発プロセスに於いて適したものがより多く生成できるように、結果出力値のロバスト値だけでなく、入力シナリオのペナルティ値も最小化されるようにパラメータρの変更を行う最適化処理の構成を改良した。以下、本実施形態に於ける入力シナリオの「適切さ」の評価の構成と最適化処理の構成とについて説明する。
【００２８】
（２）最適化処理
従前のＳＢＴに於いて採用されている入力シナリオを生成するためのパラメータρの再設定を行う最適化処理では、この分野に於いて知られている如く、典型的には、まず、被検査プログラムの結果出力値に於ける存在の有無が検査されるべき指定現象、例えば、ハンチング、値の急変（動作量の急変など）、値の所定の範囲外への逸脱、といった不具合現象、が指定され、結果出力値を定義する空間に於いて、図２（Ａ）に例示されている如く、結果出力値に於ける指定された指定現象に相当する値域（指定現象結果出力値域）が決定される。そして、パラメータρの初期値から被検査プログラムへ与えられる入力シナリオが生成され、被検査プログラムのコンピュータ・シミュレーションによるプログラムの実行が為され、初期値に対する結果出力値が算定される。かくして算定された結果出力値は、ロバスト値決定部へ与えられ、そこに於いて、結果出力値（出力波形）と指定現象結果出力値域との距離の指標値であるロバスト値が決定され、更に、ロバスト値が最適化処理の目的関数として探索エンジン部へ送られる。探索エンジン部では、目的関数が小さくなるように、入力シナリオを生成するためのパラメータρの修正（再設定）が実行され、かくして、再設定されたパラメータρを用いた新たな入力シナリオの生成、新たな入力シナリオを用いたプログラムの実行、その結果出力値のロバスト値の算出及びパラメータρの修正の各処理が反復して実行される。
【００２９】
上記の最適化処理に於ける一連の処理によれば、最終的には、ロバスト値が０又はそれ以下となるか最小となる入力シナリオの検出又は生成が可能となる。具体的には、例えば、図２（Ｂ）〜（Ｄ）に例示されている如く、指定現象に相当する出力値が図２（Ｃ）の線ｄの挙動であるプログラムの検査に上記の最適化処理を適用する場合、初めに（この段階では、実線ｄの挙動を与える図２（Ｂ）の実線ｄの入力値は、未知である。）、任意の入力シナリオとして図２（Ｂ）の入力ａを与えると、最初に図２（Ｃ）の線ａの挙動が出力され、これにより、図２（Ｄ）のロバスト値ａが算出される。次いで、ロバスト値が得られた値（ａの値）よりも小さくなるように入力シナリオｂの生成（入力シナリオａの修正）とプログラムへの入力が為され、プログラムの実行により、図２（Ｃ）の線ｂの出力値が得られ、これにより、図２（Ｄ）のロバスト値ｂが算出される。そして、ロバスト値を更に小さくするための入力シナリオの生成と入力、プログラムの実行、ロバスト値の算出の操作が繰り返されると、入力値がｂ→ｃ→ｄと修正されるにつれて、図２（Ｃ）の線の挙動は、ｂ→ｃ→ｄと挙動ｄに近づき、従って、ロバスト値は、更に、ｂ→ｃ→ｄと変化し、最終的に、ロバスト値は、最小値ｄとなる。かかる過程に於いて、ロバスト値ｄが０又はそれ以下となれば、結果出力値である挙動は、指定現象と一致したこととなり、これにより、指定現象の発生の検出と、それを与える入力の生成が為されたこととなる。そして、ロバスト値の最小値が０より大きい場合には、結果出力値は、指定現象の値域に到達せず、被検査プログラムでは、指定現象は発生しないと判定できることとなる。
【００３０】
上記の最適化処理に於けるロバスト値の最小化の処理に於いては、結果出力値は、指定現象の値域に到達するか近づくこととなるが、その過程に於いて生成される入力シナリオｂ、ｃ、ｄの「適切さ」、例えば、実世界で発生し得るものかどうか、或いは、検証したい入力状態であるかどうかは、考慮されておらず、従って、入力シナリオｂ、ｃ、ｄに於いて、実世界で発生し得ないものや検証したい入力状態ではないものが含まれ得ることとなる。
【００３１】
そこで、本発明の実施形態に於いては、上記の最適化処理で最小化される目的関数として、ロバスト値ではなく、ロバスト値と（上に説明された）入力シナリオの「適切さ」を評価するためのペナルティ値との関数を用いられるように最適化処理の構成が修正される。「ペナルティ値」とは、既に述べた如く、入力シナリオの「適切さ」が高くなるほど、小さくなるよう定義される量であるので、目的関数が最小化される過程では、ペナルティ値がより小さくなる方向に、入力シナリオが変化していくこととなり、結果として、最適化処理が実行される毎に、より適切さの高い入力シナリオが生成され、そのような適切さの高い入力シナリオがプログラムの実行、指定現象の発生の有無の検証に供されることとなる。
【００３２】
（３）ペナルティ値の決定
（ａ）概要
上記の如く、ペナルティ値は、入力シナリオの「適切さ」が高くなるほど小さくなる定義される量である。かかるペナルティ値の決定に於いては、一つの態様として、まず、入力シナリオの各々に対して、その「適切さ」が高くなるほど大きな値となるよう定義される「適切度」を決定し、「適切度」から「ペナルティ値」が決定されるようになっていてよい。入力シナリオの「適切度」としては、既に触れた如く、入力シナリオの実世界での発生のし易さの程度を表す指標値として定義される「現実度」が用いられてよい。
【００３３】
（ｂ）現実度の算出
一つの実施の態様に於いて、入力シナリオの実世界での発生のし易さの程度を表す「現実度」は、例えば、入力シナリオに対応する入力信号データの過去の実データを利用して、以下に説明する如く、算出されてよい。
【００３４】
（ｉ）現実度算出用マップの調製
まず、入力シナリオの現実度を算出するために利用される現実度算出用マップが過去の実データを用いて調製されてよい。具体的には、図３を参照して、入力シナリオに対応する入力信号データの過去の実データが準備される。例えば、被検査プログラムが車両の走行制御プログラムであり、入力信号データとして、アクセル開度率とブレーキ油圧値とが用いられる場合には、過去の車両の走行制御に於いて得られた実際のそれらの時系列の実データが準備される（図３（Ａ））。しかる後に、時系列の実データが、典型的には、入力シナリオとして用いられるデータの時間幅と同じ幅の所定の時間枠毎に分割され（図３（Ｂ））、更に、各所定時間枠の実時系列データに於いて、単位時間毎の実データの値が特徴量として抽出される（図３（Ｃ））。例えば、図示の例では、一つの所定時間枠に於けるアクセル開度率とブレーキ油圧値の実時系列データに於いて、１１点の時点の値のそれぞれが特徴量として抽出されるので、一つの所定時間枠について２２次元の特徴量を構成することとなる。かくして、実データの所定時間枠の全てについて、特徴量の抽出がなされると、特徴量で張られる空間に於いて、各所定時間枠で抽出された特徴量が状態点としてプロットされ、かくして、実データの特徴量の分布マップが調製される（図３（Ｄ））。かかる実データの特徴量の分布マップ上の各点は、実際に発生した状態を示しているので、状態点が密集している領域は発生し易い状態であり、状態点の集まり具合が低い領域ほど、発生しにくい状態であるということが言える。
【００３５】
なお、上記の実データの特徴量の分布マップは、後に説明される入力シナリオ評価部に於ける現実度の算出に利用できるように、典型的には、予め調製されて保存されていてよい。また、実データから特徴量を抽出する態様は、図３に説明された態様に限らず、任意の態様にて実データから抽出可能な任意の量が特徴量として利用されてよい。実データからの特徴量抽出の手法としては、例えば、スパースコーディング、ウェーブレット変換、シェイプレット変換、特異スペクトル変換などが利用されてよい。各手法によって、特徴量として選択される量は、異なることとなるが、上記と同様に、実データの特徴量の分布マップの調製は一般に可能である。
【００３６】
（ii）入力シナリオの現実度の算出
入力シナリオの現実度は、概して述べれば、実データの特徴量の分布マップに於いて用いた実データの特徴量に対応する特徴量を、生成された入力シナリオから抽出し、その入力シナリオの特徴量によって与えられる状態点が実データの特徴量の分布マップに於いて何処にプロットされるかによって決定される。図４を参照して、一つの実施態様に於いては、図４（Ａ）の如き入力シナリオが生成された場合、まず、その入力シナリオから、図３（Ｃ）の場合と同様に特徴量が抽出される（図４（Ｂ））。しかる後、図４（Ｃ）に示されている如く、実データの特徴量の分布マップ上に入力シナリオの特徴量の状態点ｔをプロットし、実データの特徴量の分布に対する入力シナリオの状態点ｔとの位置関係（実データの特徴量の分布への入り込み具合）から現実度が算出されてよい。例えば、図４（Ｄ）に例示されている如く、現実度ｘの例としては、状態点ｔから半径ｒ以内の周囲に存在する実データの状態点の数ｍ（ｘ＝ｍ／ｒ）が採用されてよい（「半径近傍探索法」と称する。）。この場合、入力シナリオの状態点ｔが実データの特徴量の分布への入り込み具合が深いほど、現実度ｘがより高くなり、実際により発生し易い入力シナリオであると評価できることとなる（半径ｒは、任意に設定されてよく、例えば、ｒ＝１として、ｍ＞０であれば、有意なｘが算出できることとなる。また、ｍ＞０となるｒを探索することにより、有意なｘが算出できることとなる。）。なお、実データの特徴量の分布マップから得られる入力シナリオの現実度として用いられる指標値は、上記の演算手法の他、例えば、マハラノビス距離算出、コサイン類似度算出、カーネル密度推定等の確率密度分布による確率算出などの手法によって得られた値であってもよい。
【００３７】
入力シナリオの現実度の更に別の態様として、上記の（ｉ）、（ii）に記載の態様によらず、実データから任意の特性値、例えば、平均、分散、周波数特性などを抽出し、その実データからの特性値と、入力シナリオに於いて得られる対応する特性値との乖離量に基づいて、現実度が算出されてもよい（この場合、現実度は、特性値の乖離量が大きいほど、小さくなる値（例:1/乖離量）に定義される。）。また、入力シナリオの現実度は、実データによらず、使用者等によって設定される条件や制約によって表されてもよい。例えば、被検査プログラムが車両の走行制御プログラムである場合、自然法則に従って車両の位置、最大速度、最大加速度などの制約或いは人の行動パターンからアクセルペダルとブレーキペダルの共踏みは生じないなどの制約を設定し、そういった制約から外れる入力シナリオの現実度が低くなるように、現実度を設定するといったことが考えられる（即ち、入力シナリオの現実度は、発生し易いほど高く成るように、装置の設計により、任意に定義できるようになっていてよい。）。
【００３８】
（ｃ）その他の「適切度」の設定
入力シナリオの「適切度」としては、上記の「現実度」の他に、入力シナリオの探索から除外した条件を有する入力シナリオに対しては、小さい値が付与され、重点的に検証したい条件を有する入力シナリオに対しては、大きい値が付与されるようになっていてよい。例えば、被検査プログラムが車両の走行制御プログラムである場合、車速が１００ｋｍ／ｈ以上の挙動を重点的に探索したい場合には、かかる条件での入力シナリオの適切度を高く設定し、アクセルペダルを５０゜以上踏み込んでいる状態を探索から除外したい場合には、かかる条件での入力シナリオの適切度を低く設定するといったことが考えられる。即ち、入力シナリオの適切度は、検証・探索の要求が高いほど高く成るように、装置の設計により、任意に定義できるようになっていてよい。
【００３９】
（ｄ）ペナルティ値の算出
ペナルティ値は、上記の適切度又は現実度ｘを重み付け関数Ｐ（ｘ）へ代入して算出されるようになっていてよい。重み付け関数Ｐ（ｘ）としては、図５（Ａ）〜（Ｃ）に例示されている如く、典型的には、適切度又は現実度が大きくなるほど値が低減する形状の関数であってよく、関数の形状は、装置の設計により、任意に設定されてよい。重み付け関数Ｐ（ｘ）として適切度又は現実度が大きくなるほど値が低減する形状の関数が使用される場合には、入力シナリオの適切さ又は発生のし易さが高くなるほど、ペナルティ値が小さくなることとなる。従って、例えば、実際に頻出する条件での入力シナリオの探索を重点的に行いたい場合には、図５（Ｂ）の如く、現実度の高い発生しやすい条件のペナルティ値が特に小さくなるように関数の形状が設定される。或いは、実際には起こり得ない非現実的な入力シナリオの探索を抑制したいときには、図５（Ｃ）の如く、現実度の低い発生し得ない条件のペナルティ値が特に大きくなるように関数の形状が設定される。
【００４０】
また、別の態様として、或る範囲の現実度の入力シナリオの探索を重点的に行いたい場合、例えば、図５（Ｄ）の如く、発生し易くはないが、発生し得ないわけでもない条件の入力シナリオの探索を重点的に行いたい場合には、探索を重点的に行いたい条件の現実度ｘのペナルティ値Ｐが小さくなるよう関数の形状が設定されてもよい。なお、この場合、入力シナリオの現実度の高低が入力シナリオの「適切さ」の高低に対応しないこととなる。即ち、結局、ペナルティ値が小さいほど、入力シナリオが生成されやすくなるので、ペナルティ値を決定する重み付け関数Ｐ（ｘ）の形状を操作することによっても入力シナリオの「適切さ」の評価が達成でき、そのような場合も本発明の範囲に属することは理解されるべきである。
【００４１】
（４）ペナルティ値を用いた最適化処理
既に述べた如く、本発明の実施形態では、最適化処理に於いてロバスト値ｒとペナルティ値Ｐとの各々の増大と共に増大する目的関数が参照され、その目的関数が小さくなるようにパラメータρが変更される。目的関数としては、具体的には、既に述べた如く、積ｆ＝ｒ・Ｐ或いは線形和ｆ＝ａｒ＋ｂＰであってよい。かかる目的関数を参照した最適化処理に於いても、入力シナリオの生成と被検査プログラムのシミュレーション演算の反復実行の処理の過程で、図２（Ｄ）に例示されている如く、目的関数が小さくなる方向に、入力シナリオが変化していくことになるところ、目的関数を小さくすることは、ロバスト値ｒとペナルティ値Ｐとが小さくなることになるので、一連の反覆処理を実行する間に、結果出力値が指定現象の発生に近づくとともに、入力シナリオの「適切さ」も高くなっていくことが期待される。
【００４２】
プログラムの検査処理の流れ
図６を参照して、本発明によるプログラムの検査処理の一つの実施形態の処理の流れに於いては、まず、被検査プログラムに於いて発生の有無が検査される指定現象に相当する結果出力値の値域の設定が為される（ステップ１０：ロバスト値決定部）。かかる指定現象の結果出力値の値域の境界は、典型的には、結果出力値を定義する空間に於ける領域を画定する関数値又は数値によって定義される。次いで、入力シナリオを生成するためのパラメータρの初期値が入力され（ステップ２０）、入力シナリオ生成部に於いて、パラメータρから入力シナリオｕが生成され（ステップ３０）、入力シナリオｕは、被検査プログラムシミュレーション演算実行部と、入力シナリオ評価部とに与えられる。そして、被検査プログラムシミュレーション演算実行部では、入力シナリオを用いて、被検査プログラムのシミュレーション演算が実行され、出力波形ｙが得られ（ステップ４０）、その出力波形ｙは、ロバスト値決定部にて指定現象結果出力値域と比較され、ロバスト値ｒが決定される（ステップ５０）。一方、入力シナリオ評価部では、入力シナリオｕから上記の如く適切度又は現実度ｘが決定され、更に、ペナルティ値算出部にて、適切度又は現実度ｘからペナルティ値Ｐが算出される（ステップ６０）。
【００４３】
ロバスト値ｒとペナルティ値Ｐとが決定又は算出されると、後に説明される一連の処理の終了条件が成立するまでは（ステップ７０）、目的関数算出部にて、ロバスト値ｒとペナルティ値Ｐとから目的関数ｆが算出され（ステップ８０）、更に、探索エンジン部にて、最適化処理を実行して、目的関数ｆが小さくなるようにパラメータρが変更される（ステップ９０：パラメータρの再設定）。かかる最適化処理は、最小化される対象がロバスト値ｒではなく、目的関数ｆである点を除いて、従前のＳＢＴと同様に実行されてよい。かくして、再設定されたパラメータρが得られると、それを用いて、ステップ３０〜９０に於いて、新たな入力シナリオの生成、入力シナリオを用いたシミュレーション演算の実行及び結果出力値の算出及び結果出力値と入力シナリオ評価とが繰り返される。そして、かかる一連の処理は、終了条件が成立するまで反覆実行され、その度毎に、新たな入力シナリオが生成され、既に述べた如く、新たな入力シナリオは、ロバスト値が小さくなるように、即ち、結果出力値が指定現象結果出力値域に近づくだけでなく、その入力シナリオの「適切さ」が増すように逐次的に生成されていくこととなる。
【００４４】
上記の一連の反覆処理は、使用者の設定により或いは適当な条件が成立したときに終了されてよい（ステップ７０）。終了条件としては、下記のいずれかであってよい。
（ｉ）ロバスト値が０以下になるまで。即ち、指定現象を発生する入力シナリオを検出されるまで
（ii）ロバスト値が最小となるまで。即ち、ロバスト値＞０のままのときは、指定現象に最も近づく結果出力値を与える入力シナリオを検出するまでとなる。ロバスト値＜０のときは、結果出力値が指定現象結果出力値域に最も深く入り込む入力シナリオを検出するまでとなる。
（iii）ペナルティ値が所定値以下になるまで。即ち、入力シナリオの「適切さ」が所定の高さに到達するまで。
（iv）ペナルティ値が最小となるまで。即ち、入力シナリオが「適切さ」が最も高くなるまで。
（ｖ）入力シナリオの探索数が所定数に達するまで。
（vi）任意に設定された検査時間が達成されるまで。
（vii）使用者が終了を要求するまで。
【００４５】
実験例
実験例として、アクセル開度とブレーキ油圧とを入力とする車両の走行制御プログラムを被検査プログラムとし、上記に説明された本実施形態による一連の処理を用いて、所定の走行状態を指定現象として発生する入力シナリオ（アクセル開度とブレーキ油圧の組）の探索を行った。図７は、本実施形態による入力シナリオの探索と従来法による入力シナリオの探索（ペナルティ値を考慮していない場合）とをそれぞれ２０００回実行した場合の、ロバスト値、ペナルティ値のそれぞれの推移と、最終的に得られた入力シナリオを例示したものである。同図を参照して、ロバスト値（図７（Ａ））については、従来法の場合も本実施形態の場合も、探索回数が増えるほど低減していく一方、ペナルティ値（図７（Ｂ））については、従来法の場合には、殆ど変化しないのに対し、本実施形態の場合には、探索回数が増えるほど低減していくことが観察された。即ち、本実施形態の処理によれば、入力シナリオの探索を繰り返すほど、入力シナリオの適切さが増していくことが示された。実際、最終的に得られた入力シナリオ（図７（Ｃ））を比較すると、従来法の場合も本実施形態の場合も指定現象（下段）は同様に発生しているところ、入力シナリオ（上段、中段）については、従来法の場合には、現実には起こり難いアクセルペダルとブレーキペダルの共踏み状態が生じているのに対し、本実施形態の場合には、アクセルペダルとブレーキペダルの共踏み状態が殆ど生じておらず、より現実的な入力シナリオが得られた。かくして、本実施形態によれば、より現実的な入力シナリオによる被検査プログラムの検証が可能となることが示された。
【００４６】
かくして、上記の本発明の実施形態によれば、被検査プログラムに種々の入力シナリオを入力してコンピュータ・シミュレーションにて被検査プログラムを実行して、指定現象を発生する入力シナリオの探索を行うプログラム検査装置に於いて、入力シナリオの「適切度」又は「現実度」並びに入力シナリオの「ペナルティ値」という新規な概念を導入し、シミュレーションに使用される入力シナリオの各々の「適切さ」も評価しながら、入力シナリオの探索が実行されることとなる。かかる構成によれば、開発プロセスに於いて探索の要求の高い、例えば、実世界で発生し得る入力シナリオについて探索が重点的に実行される一方、検証があまり必要でない入力シナリオが生成されてシミュレーションが実行される頻度が低減され、これにより、被検査プログラムの検証と指定現象を発生する入力シナリオの探索のための工数及び時間の低減が図られることとなる。また、特に、実データを用いて入力シナリオの「現実度」を算出し、「ペナルティ値」を算出する態様によれば、検証の対象となる入力シナリオを現実に発生し得るシナリオに重点的に絞り込むことが可能となり、より現実的な入力シナリオについて効率的にプログラム検証が実行できることとなる。
【００４７】
以上の説明は、本発明の実施の形態に関連してなされているが、当業者にとつて多くの修正及び変更が容易に可能であり、本発明は、上記に例示された実施形態のみに限定されるものではなく、本発明の概念から逸脱することなく種々の装置に適用されることは明らかであろう。
【図１】
2018190230.tif 000003
【図２】
2018190230.tif 000004
【図３】
2018190230.tif 000005
【図４】
2018190230.tif 000006
【図５】
2018190230.tif 000007
【図６】
2018190230.tif 000008
【図７】
2018190230.tif 000009