(57)【要約】      （修正有）【課題】統計的学習によるブラックボックス・ソフトウェア試験方法を提供する。【解決手段】パラメトリック・モデルに基づいて入力と出力の間の関係を決定する方法が、あるコンポーネントに関する既知の入力および対応する既知の出力を含むデータ・セットを受領する。前記データ・セットに関連するデータ型に基づいて複数の型のパラメトリック・モデルからパラメトリック・モデルを選択することによって、前記データ・セットに基づいて前記コンポーネントの機能を自動的に判別するようパラメトリック・モデルを生成する。また、前記パラメトリック・モデルが前記データ・セットに当てはまるかどうかを判定する。また、前記パラメトリック・モデルが前記データ・セットに当てはまることを判定することに応答して、前記コンポーネントに関する新たな出力を受領する。また、前記パラメトリック・モデルに基づいて前記新たな出力から新たな入力を決定する。【選択図】図３
2016152048.tif 000002
【特許請求の範囲】
【請求項１】
パラメトリック・モデルに基づいて入力と出力の間の関係を決定する方法であって：
あるコンポーネントに関する既知の入力および対応する既知の出力を含むデータ・セットを受領する段階と；
前記データ・セットに関連するデータ型に基づいて複数の型のパラメトリック・モデルからパラメトリック・モデルを選択することによって、前記データ・セットに基づいて前記コンポーネントの機能を自動的に判別するようパラメトリック・モデルを生成する段階と；
前記パラメトリック・モデルが前記データ・セットに当てはまるかどうかを判定する段階と；
前記パラメトリック・モデルが前記データ・セットに当てはまることを判定することに応答して、前記コンポーネントに関する新たな出力を受領する段階と；
前記パラメトリック・モデルに基づいて前記新たな出力から新たな入力を決定する段階とを含む、
方法。
【請求項２】
前記データ型が非プリミティブ・データ型を含み；
前記非プリミティブ・データ型を含むデータ型に基づいて前記パラメトリック・モデルとして回帰モデルが選択される、
請求項１記載の方法。
【請求項３】
前記回帰モデルが、各既知の出力について抽出正規表現を識別し、それらの抽出正規表現を合併し、一般化された正規表現を生成するよう構成された正規表現モデルを含む、請求項２記載の方法。
【請求項４】
前記回帰モデルが、前記既知の入力から前記対応する既知の出力を帰結させる動作を決定するよう構成されている動作シーケンス・ベースのモデルを含む、請求項２記載の方法。
【請求項５】
前記データ・セットからの次のデータ項目が未解析であるかどうかを判定する段階であって、前記次のデータ項目が未解析の既知の入力および対応する未解析の既知の出力を含む、段階と；
前記データ・セットからの前記次のデータ項目が解析されるのに応答して、前記パラメトリック・モデルについての制約条件を決定する段階とをさらに含む、
請求項１記載の方法。
【請求項６】
前記複数の型のパラメトリック・モデルが、線形回帰モデル、多項式回帰モデル、非線形回帰モデル、正規表現モデルまたは動作シーケンス・ベースのモデルの一つまたは複数を含む、請求項１記載の方法。
【請求項７】
前記データ・セットにおける最初のデータ項目を解析することによって前記パラメトリック・モデルについての初期モデルを生成する段階と；
前記データ・セットからの次のデータ項目が未解析であるかどうかを判定する段階であって、前記次のデータ項目が未解析の既知の入力および対応する未解析の既知の出力を含む、段階と；
前記データ・セットからの前記次のデータ項目が未解析であることに応答して、前記未解析の既知の入力を前記初期モデルに基づいて解析して、予測される出力を決定する段階と；
予測された出力が前記対応する未解析の既知の出力にマッチするかどうかを判定する段階と；
前記予測された出力が前記対応する未解析の既知の出力にマッチすることに応答して、前記データ・セットからのさらなるデータ項目が未解析であるかどうかを判定する段階とをさらに含む、
請求項１記載の方法。
【請求項８】
前記予測された出力が前記対応する未解析の既知の出力にマッチしないことに応答して、前記予測された出力と前記対応する未解析の既知の出力との間の誤り率を決定する段階と；
前記誤り率が閾値を超えるかどうかを判定する段階と；
前記誤り率が前記閾値を超えないことに応答して、前記初期モデルが、前記次のデータ項目に当てはまるよう一般化されることができるかどうかを判定する段階と；
前記初期モデルが、前記次のデータ項目に当てはまるよう一般化されることができることに応答して、前記初期モデルに関連するモデル・パラメータを、前記未解析の既知の入力および前記対応する未解析の既知の出力を組み込むよう更新する段階と；
前記データ・セットからのさらなるデータ項目が未解析であるかどうかを判定する段階とをさらに含む、
請求項７記載の方法。
【請求項９】
前記誤り率が前記閾値を超えることに応答して、前記次のデータ項目に基づく新たなモデルを選択する段階と；
前記次のデータ項目に基づいて前記新たなモデルについての新たなパラメータを生成する段階と；
前記データ・セットからのさらなるデータ項目が未解析であるかどうかを判定する段階とをさらに含む、
請求項８記載の方法。
【請求項１０】
前記予測された出力が前記対応する未解析の既知の出力にマッチしないことに応答して、前記初期モデルを一般化する段階と；
前記一般化された初期モデルが前記次のデータ項目に当てはまるかどうかを判定する段階と；
前記一般化された初期モデルが前記次のデータ項目に当てはまらないことに応答して、前記最初のデータ項目を、前記初期モデルに関連付けられているとして分類する段階と；
前記次のデータ項目を、前記新たなモデルに関連付けられているとして分類する段階とをさらに含む、
請求項９記載の方法。
【請求項１１】
特定のモデルを想定することなく入力と出力を関係付ける方法であって：
あるコンポーネントに関連する既知の入力および対応する既知の出力を含むデータ・セットを受領する段階と；
制約条件を識別する段階と；
目標への近接性に基づいて近傍データ項目を識別する段階であって、各近傍データ項目は近傍入力および対応する近傍出力を含む、段階と；
諸近傍データ項目についての諸近傍入力を平均することに基づいて、新たな入力を決定する段階と；
前記新たな入力に基づいて、対応する新たな出力を決定する段階と；
前記対応する新たな出力が前記制約条件を満たすかどうかを判定する段階と；
前記コンポーネントの機能を自動的に判別する非パラメトリック・モデルを生成する段階とを含む、
方法。
【請求項１２】
反復数を1に設定する段階と；
前記対応する新たな出力が前記制約条件を満たさないことに応答して、反復数が閾値を超えているかどうかを判定する段階と；
反復数が前記閾値を超えてないことに応答して、前記新たな入力および前記対応する新たな出力を前記データ・セットに加えて、反復数を1増すことによって、前記データ・セットを更新する段階とをさらに含む、
請求項１１記載の方法。
【請求項１３】
反復数が前記閾値を超えていることに応答して、パラメトリック・モデルを生成する段階をさらに含む、請求項１２記載の方法。
【請求項１４】
機能が未知のコードを解析する方法であって：
あるコンポーネントに関連する既知の入力および対応する既知の出力を含むデータ・セットを受領する段階と；
前記データ・セットに基づいてパラメトリック・モデルを生成することを、該生成を実行するまたはその実行を制御するようプログラムされたプロセッサ装置を使って行なう段階と；
前記パラメトリック・モデルが前記データ・セットに当てはまるかどうかを判定する段階と；
前記パラメトリック・モデルが前記データ・セットに当てはまらないことに応答して、制約条件を識別する段階と；
前記制約条件を満たす新たな入力および対応する新たな出力を、前記データ・セットの一つまたは複数のデータ項目に基づいて決定する段階と；
前記コンポーネントの機能を自動的に判別するよう非パラメトリック・モデルを生成する段階とを含む、
方法。
【請求項１５】
前記パラメトリック・モデルが前記データ・セットに当てはまることに応答して、前記制約条件に関連する新たな出力を受領する段階と；
前記パラメトリック・モデルに基づいて、記新たな出力から新たな入力を決定する段階とをさらに含む、
請求項１４記載の方法。
【請求項１６】
前記データ・セットに基づいて前記パラメトリック・モデルを生成する段階が：
前記データ・セット中の最初の項目を適用することによって初期モデルを生成する段階と；
前記データ・セットからの次のデータ項目が未解析であるかどうかを判定する段階であって、前記次のデータ項目が未解析の既知の入力および対応する未解析の既知の出力を含む、段階と；
前記データ・セットからの前記次のデータ項目が未解析であることに応答して、前記未解析の既知の入力を前記初期モデルに基づいて解析して、予測される出力を決定する段階とを含む、
請求項１５記載の方法。
【請求項１７】
予測された出力が対応する未解析の既知の出力にマッチするかどうかを判定する段階と；
前記予測された出力が前記対応する未解析の既知の出力にマッチしないことに応答して、前記予測された出力と前記対応する未解析の既知の出力との間の誤り率を決定する段階と；
前記誤り率が閾値を超えているかどうかを判定する段階と；
前記誤り率が前記閾値を超えないことに応答して、前記未解析の既知の入力および前記対応する未解析の既知の出力を組み込むよう、前記初期モデルに関連するモデル・パラメータを更新する段階と；
前記データ・セットの一部であるさらなるデータ項目が未解析であるかどうかを判定する段階とをさらに含む、
請求項１６記載の方法。
【請求項１８】
前記誤り率が前記閾値を超えていることに応答して、前記次のデータ項目に基づく新たなモデルを選択する段階と；
前記次のデータ項目に基づいて前記新たなモデルについての新たなパラメータを生成する段階と；
前記データ・セットの一部であるさらなるデータ項目が未解析であるかどうかを判定する段階とをさらに含む、
請求項１７記載の方法。
【請求項１９】
前記制約条件を満たす前記新たな入力および前記対応する新たな出力を、前記データ・セットの一つまたは複数のデータ項目に基づいて決定する段階が：
目標への近接性に基づいて近傍データ項目を識別する段階であって、各近傍データ項目は近傍入力および対応する近傍出力を含む、段階と；
諸近傍データ項目についての諸近傍入力を平均することに基づいて、前記新たな入力を決定する段階と；
前記新たな入力に基づいて、前記対応する新たな出力を決定する段階と；
前記対応する新たな出力が前記制約条件にマッチするかどうかを判定する段階とを含む、
請求項１４記載の方法。
【請求項２０】
反復数を1に設定する段階と；
前記対応する新たな出力が前記制約条件を満たさないことに応答して、反復数が閾値を超えているかどうかを判定する段階とをさらに含む、
請求項１９記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本稿で論じられる実施形態は統計的学習によるブラックボックス・ソフトウェア試験に関する。
【背景技術】
【０００２】
ソフトウェアの有効確認または検証のようなソフトウェア試験は、情報技術（IT）組織の間では日常的な活動である。たとえば、ソフトウェアは、一つまたは複数のクライアント・コンピュータ・システムにおける実行のためのデスクトップ・アプリケーションまたは一つまたは複数のサーバー・コンピュータ・システムにおける実行のためのウェブ・アプリケーションを含みうる。いずれの場合にも、ソフトウェアの品質を検証することが重要でありうる。ソフトウェアにおけるいくつかの型のエラーはユーザーにとって単にわずらわしかったり不便だったりするだけだが、他の型のエラーは、データや金銭の損失といったより深刻な問題を引き起こす可能性をはらんでいる。
【０００３】
ソフトウェア・コンポーネントは未知の機能に関連付けられることがありうる。ソフトウェア・コンポーネントに入力を加えて結果として出力が与えられても、入力の結果として対応する出力を引き起こす機能は未知であることがある。ソフトウェア・コンポーネントの機能を判別しようとするプロセスは、「ブラックボックス・ソフトウェア試験」と称されることがあり、そのソフトウェア・コンポーネントは「ブラックボックス・コンポーネント」と称されることがある。
【０００４】
ブラックボックス・コンポーネントの機能を判別することは、ブラックボックス・コンポーネントが、コードが解析のために利用可能でない独自ソフトウェア（たとえば、ソースが閉鎖されたソフトウェア）を含んでいる場合には難しいことがある。さらに、ブラックボックス・コンポーネントは、マシン依存であったり、暗号化されていたり、あるいはセキュリティ・ポリシーに基づいて利用可能でなかったりすることがある。ブラックボックス・コンポーネントの機能は、明細書からまたはランダム試験を通じて判別されうる。しかしながら、種々の試験方法論はしばしば人間の試験者に関わり、それが試験プロセスを遅くし、ソフトウェア試験に関わるコストを増大させる。さらに、ランダム試験は不正確および／または不完全な結果を生じることがある。
【０００５】
本願で特許請求される主題は、何らかの欠点を解決するまたは上記のような環境でのみ動作する実施形態に限定されない。むしろ、この背景は、本稿に記載されるいくつかの実施形態が実施されうる一つの例示的な技術分野を例解するために与えられているのみである。
【発明の概要】
【課題を解決するための手段】
【０００６】
ある実施形態のある側面によれば、パラメトリック・モデルに基づいて入力と出力の間の関係を決定する方法が、あるコンポーネントに関する既知の入力および対応する既知の出力を含むデータ・セットを受領することを含んでいてもよい。本方法は、前記データ・セットに関連するデータ型に基づいて複数の型のパラメトリック・モデルからパラメトリック・モデルを選択することによって、前記データ・セットに基づいて前記コンポーネントの機能を自動的に判別するようパラメトリック・モデルを生成することをも含む。本方法はまた、前記パラメトリック・モデルが前記データ・セットに当てはまるかどうかを判定することをも含む。本方法はまた、前記パラメトリック・モデルが前記データ・セットに当てはまることを判定することに応答して、前記コンポーネントに関する新たな出力を受領することをも含む。本方法はまた、前記パラメトリック・モデルに基づいて前記新たな出力から新たな入力を決定することをも含む。
【０００７】
実施形態の目的および利点は、少なくとも、請求項において具体的に指摘される要素、特徴および組み合わせによって、実現され、達成されるであろう。
【０００８】
以上の概括的な記述および以下の詳細な記述はいずれも例示的であり、特許請求される本発明を制約するものではないことは理解されるものとする。
【図面の簡単な説明】
【０００９】
例示的実施形態は、付属の図面の使用を通じてさらなる具体性および詳細さをもって記述され、説明される。
【図１】未知の機能をもつコンポーネントのブラックボックス試験を実行するよう構成された例示的な試験システムを表わす例示的なブロック図である。
【図２】統計的学習によるブラックボックス・ソフトウェア試験を実行する例示的装置を示す図である。
【図３】未知の機能をもつコンポーネントを試験する例示的方法のフローチャートである。
【図４Ａ】図３のコンポーネントについてのパラメトリック・モデルを生成する例示的方法のフローチャートの前半である。
【図４Ｂ】図３のコンポーネントについてのパラメトリック・モデルを生成する例示的方法のフローチャートの後半である。
【図５】特定のモデルを想定することなく図３のコンポーネントについて既知の入力と対応する既知の出力を関係付ける例示的方法のフローチャートである。
【発明を実施するための形態】
【００１０】
未知の機能をもつコンポーネントを試験し、検証するいくつかの方法が存在する。たとえば、統計的学習は、健康ケアおよび金融を含むいくつかの分野について数値モデルを生成する。しかしながら、コンポーネントは数値モデルより込み入ったデータ型を使うことがありうる。結果として、現在の統計的学習法の適用可能性は限られることがある。別の例では、プログラム合成は、ソフトウェアを試験するために明細またはデータを使う。しかしながら、プログラム合成は、ソフトウェアの未知の部分についての推定をしない。さらに別の例では、ストリング関係推定は、データからストリング動作〔演算〕の部分集合を推定する。しかしながら、ストリング動作の部分集合は、用途が限られることがあり、プログラム合成はより大きなアプリケーション中に組み込むことができないことがある。
【００１１】
これらおよび他のシステムの欠点は、本稿に記載される統計的学習によるブラックボックス・ソフトウェア試験を実行する試験システムによって克服されうる。本稿に記載される試験システムはコンピューティング装置を含んでいてもよい。たとえば、試験システムは、パーソナル・コンピュータ、ラップトップ、タブレット・コンピュータ、サーバーまたは任意のプロセッサ・ベースのコンピューティング装置を含みうる。試験システムは、メモリおよびプロセッサ装置を含んでいてもよい。プロセッサ装置は、本稿に記載される一つまたは複数の動作、たとえばそれぞれ図３、図４Ａ〜４Ｂおよび図５を参照して後述する方法３００、４００および５００の一つまたは複数の動作またはステップを実行するまたはその実行を制御するようプログラムされてもよい。試験システムの一つまたは複数の例示的実施形態は後述する。
【００１２】
試験システムは、未知の機能をもつコンポーネントに関連する既知の入力および対応する既知の出力を含むデータ・セットを受領する試験アプリケーションを含んでいてもよい。コンポーネントは、あるクラス内の関数、あるパッケージ内のクラス、モジュール、バイナリー・コード片、機械コード片、サードパーティーの、ソースが閉鎖されているライブラリ、データベース、サーバーまたはそれらの任意の組み合わせを含みうる。データ・セットは、たとえば、プリミティブ・データ型または非プリミティブ・データ型をもつデータ項目を含みうる。
【００１３】
試験アプリケーションはデータ・セットに基づいてパラメトリック・モデルを生成してもよい。これらおよび他の実装において、試験アプリケーションは、データ・セットに関連するデータ型に基づいて複数の型のパラメトリック・モデルから前記パラメトリック・モデルを選択してもよい。たとえば、試験アプリケーションは、ストリングを含むデータ・セットについてのデータ型に基づいて正規表現モデルを選択してもよい。試験アプリケーションは、データ・セットを使って統計的学習を実行して、パラメトリック・モデルを洗練してもよい。たとえば、試験アプリケーションは、データ・セットにおける第一の項目を解析することによって前記パラメトリック・モデルについての初期モデルを生成してもよい。たとえば、パラメトリック・モデルが正規表現モデルである場合、試験アプリケーションは抽出正規表現を生成してもよい。試験アプリケーションは、初期モデルに基づいて未解析の既知の入力を解析することによって、前記データ・セットからの次のデータ項目を解析してもよい。試験アプリケーションは、前記未解析の既知の入力を解析することに基づいて、前記初期モデルについてのパラメータを更新するまたは新たなモデルを生成してもよい。たとえば、正規表現モデルについては、試験アプリケーションは、抽出正規表現を改訂するまたは次のデータ項目に適用される新たな抽出正規表現を生成してもよい。
【００１４】
前記パラメトリック・モデルが前記データ・セットに当てはまらない場合、試験アプリケーションは、特定のモデルを想定することなく既知の諸入力および対応する既知の諸出力を関係付ける非パラメトリックな方法を実装してもよい。たとえば、非パラメトリックなモデルは、制約条件を識別し、該制約条件を満たす新たな入力および対応する新たな出力を、前記データ・セットの一つまたは複数のデータ項目に基づいて決定してもよい。前記非パラメトリックな方法は、目標への近接性に基づいてK個の近傍データ項目を識別し、該近傍データ項目の一部である近傍入力を平均することに基づいて新たな入力を決定し、前記新たな入力に基づいて対応する新たな出力を決定するk近傍回帰を含んでいてもよい。
【００１５】
前記対応する新たな出力は、制約条件と比較される。前記対応する新たな出力がその制約条件を満たせば、前記対応する新たな出力は受け入れられてもよい。そうでなければ、前記新たな入力および前記対応する新たな出力は前記データ・セットに加えられてもよく、K近傍回帰は更新された新たな出力が受け入れられるまでまたは逐次反復回数が閾値を超えるまで逐次反復的に実行されてもよい。
【００１６】
ブラックボックス・ソフトウェア試験を実行した結果として、未知の機能をもつコンポーネントの機能が自動的に判別されうる。さらに、試験アプリケーションは、コンポーネントの将来の状態空間についての入力を導出してもよい。試験アプリケーションは、低いオーバーヘッドでスケーラブルであり得、正確であり得、構造化されたコードおよび構造化されていないコードの両方を解析できることがあり得る。試験アプリケーションは、他のソフトウェア・アプリケーション中に組み込まれてもよく、サードパーティーのソースが閉鎖されたコードを扱ったり、サーバーの一部として機能したり、データ解析のための一般的方法として使われたりしてもよい。
【００１７】
本発明の実施形態は、付属の図面を参照して説明される。本稿における実質的に任意の複数形および／または単数形の用語の使用に関し、当業者は、コンテキストおよび／または用途に応じて適宜、複数形から単数形へおよび／または単数形から複数形へ変換しうる。さまざまな単数形／複数形の入れ替えは、明確のため、ここで明示的に述べておいてもよいであろう。
【００１８】
図１は、本稿に記載される少なくとも一つの実施形態に基づいて構成された、未知の機能をもつコンポーネントのブラックボックス試験を実行するよう構成された例示的な試験システム１００を表わす例示的なブロック図である。本稿に記載される試験システム１００はコンピューティング装置を含んでいてもよい。たとえば、試験システム１００は、パーソナル・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、サーバー・コンピュータまたは任意のプロセッサ・ベースのコンピューティング装置を含みうる。試験システム１００は、メモリおよびプロセッサ装置を含んでいてもよい。プロセッサ装置は、本稿に記載される一つまたは複数の動作、たとえばそれぞれ図３、図４Ａ〜４Ｂおよび図５を参照して後述する方法３００、４００および５００の一つまたは複数の動作またはステップを実行するまたはその実行を制御するようプログラムされてもよい。試験システム１００の一つまたは複数の例示的実施形態は後述する。
【００１９】
試験システム１００は、試験対象コンポーネント１０４のブラックボックス・ソフトウェア試験を実行して出力１０８を生成するよう構成された試験アプリケーション１０６を含んでいてもよい。試験対象コンポーネント１０４は、たとえばプロセッサ装置による実行のためのソフトウェア・プログラム、該ソフトウェア・プログラムのコード、ライブラリ、アプリケーション、スクリプトまたは他の論理または命令といった電子データを含んでいてもよい。
【００２０】
いくつかの実施形態では、試験対象コンポーネント１０４は、ソフトウェア・プログラムの完全なインスタンスを含んでいてもよい。これらまたは他の実施形態では、試験対象コンポーネント１０４はソフトウェア・プログラムの一部を含んでいてもよい。試験対象コンポーネント１０４は、中でもジャバ、C、C++、パール、スキーム、パイソンといった任意の好適な型のコンピュータ言語で書かれていてもよい。
【００２１】
いくつかの実施形態では、試験アプリケーション１０６は、入力を受領し、試験対象コンポーネント１０４を試験することから出力１０８を生成するよう構成されていてもよい。入力は、プリミティブ・データ型、非プリミティブ・データ型またはプリミティブおよび非プリミティブの両方のデータ型を含みうる。たとえば、入力は、ストリング、リスト、数などを含みうる。出力１０８は、試験対象コンポーネント１０４の機能を明かす試験ケース１１０またはバグ１１２およびセキュリティー脆弱性１１４を含んでいてもよい。これらが目標でありうる。試験アプリケーション１０６が後述するパラメトリックおよび／または非パラメトリックな方法を実行して試験ケース１１０を生成した後、試験アプリケーション１０６は、バグ１１２および／またはセキュリティー脆弱性１１４の目標を達成するために試験対象コンポーネント１０４に与えられるべき入力および／または出力を決定する。
【００２２】
いくつかの実施形態では、試験アプリケーション１０６は、制約条件の一つまたは複数の集合について、それらの制約条件を満足させることが可能であれば、一つまたは複数の解を生成しうる。いくつかの実施形態では、制約条件の集合を解くことは、該集合に含まれるすべての制約条件を満たす一つまたは複数の解を見出そうと試みることを含んでいてもよい。これらの実施形態のいくつかでは、試験アプリケーション１０６は出力１０８をもつ解を含んでいてもよい。いくつかの実施形態では、解は、試験対象コンポーネント１０４を試験するために使われてもよい。
【００２３】
図２は、本稿に記載される少なくとも一つの実施形態に基づいて構成された、統計的学習によるブラックボックス・ソフトウェア試験を実行する例示的装置２００を示している。図２の装置２００は、図１を参照して上記したブラックボックス・ソフトウェア試験システム１００によって使用されるハードウェアの例であってもよい。装置２００は、それぞれ図３、図４Ａ〜４Ｂおよび図５を参照して後述する方法３００、４００および５００の一つまたは複数のブロックを実行するようプログラムされた特殊目的のプロセッサ・ベースのコンピューティング装置を含みうる。
【００２４】
装置２００は、プロセッサ装置２２５およびメモリ２２７を含んでいてもよい。プロセッサ装置２２５は、本稿に記載される動作を実行するまたはその実行を制御するために、算術論理ユニット、マイクロプロセッサ、汎用コントローラまたは他の何らかのプロセッサまたはプロセッサ・アレイを含んでいてもよい。プロセッサ装置２２５はデータ信号を処理し、複雑命令セット・コンピュータ（CISC）アーキテクチャー、縮小命令セット・コンピュータ（RISC）アーキテクチャーまたは命令セットの組み合わせを実装するアーキテクチャーを含むさまざまなコンピューティング・アーキテクチャーを含みうる。図２は単一のプロセッサ装置２２５を示しているが、装置２００は複数のプロセッサ装置２２５を含んでいてもよい。他のプロセッサ、オペレーティング・システムおよび物理的な構成が可能でありうる。
【００２５】
メモリ２２７は、プロセッサ装置２２５によって実行されうるまたはプロセッサ装置２２５上で操作されうる命令またはデータを記憶する。命令またはデータは、本稿に記載される動作を実行するまたはその実行を制御するためにプロセッサ装置２２５によって実行されうるプログラミング・コードを含んでいてもよい。メモリ２２７は動的ランダム・アクセス・メモリ（DRAM）デバイス、静的ランダム・アクセス・メモリ（SRAM）デバイス、フラッシュ・メモリまたは他の何らかのメモリ・デバイスを含みうる。いくつかの実施形態では、メモリ２２７は不揮発性メモリまたは同様の恒久的記憶および媒体、たとえばハードディスクドライブ、フロッピー(登録商標)ディスクドライブ、コンパクトディスクROM（CD-ROM）デバイス、DVD-ROMデバイス、DVD-RAMデバイス、DVD-RWデバイス、フラッシュ・メモリ・デバイスまたはより恒久的に情報を記憶するための他の何らかの大容量記憶をも含む。
【００２６】
図示した実施形態では、メモリ２２７は図１の試験アプリケーション１０６およびシステム・データ２１０の一つまたは複数を記憶してもよい。いくつかの実施形態では、試験アプリケーション１０６は、フィールド・プログラマブル・ゲート・アレイ（FPGA）または特定用途向け集積回路（ASIC）を含むハードウェアを使って実装されてもよい。他のいくつかの実施形態では、試験アプリケーション１０６はハードウェアとソフトウェアの組み合わせを使って実装されてもよい。
【００２７】
試験アプリケーション１０６はデータ・モジュール２０２、パラメトリック・モジュール２０４および非パラメトリック・モジュール２０６を含んでいてもよい。モジュール２０２、２０４および２０６は一つのデバイス２００上に記憶されているように示されているが、モジュール２０２、２０４および２０６は、たとえば分散式データ・システムにおいて、異なるデバイスに記憶されていてもよい。
【００２８】
システム・データ２１０は、装置２００によってその機能を提供するために使用されるデータを含んでいてもよい。たとえば、システム・データ２１０は、データ・モジュール２０２によって収集されるデータ・セット、パラメトリック・モジュール２０４によって生成されるパラメトリック・モデル、未知の機能をもつコンポーネント、新たな入力および新たな出力のうちの一つまたは複数を含んでいてもよい。代替的または追加的に、システム・データ２１０は、図１を参照して上述したデータのいずれかを含んでいてもよい。装置２００のさまざまなコンポーネント（たとえばプロセッサ装置２２５およびメモリ２２７）は、バス２２０を介して互いに通信上結合されていてもよい。
【００２９】
試験アプリケーション１０６のさまざまなモジュール２０２、２０４、２０６についてここでさらに詳細に述べる。データ・モジュール２０２は概括的に、既知の入力および対応する既知の出力を含むデータ・セットを受領するよう構成されていてもよい。たとえば、データ・モジュール２０２は、未知の機能をもつコンポーネントから入力および出力データを収集することによって、履歴データを収集してもよい。
【００３０】
前記データ・セットからの既知の入力および対応する既知の出力は、プリミティブなデータ型、非プリミティブなデータ型またはプリミティブおよび非プリミティブ両方のデータ型を含んでいてもよい。たとえば、プリミティブなデータ型は、当該コンポーネントを生成するために使われるプログラミング言語に依存して、キャラクタ、整数、浮動小数点数、固定小数点数、ブーリアン、バイト、ショートなどを含みうる。非プリミティブなデータ型は、ストリング、リスト、ベクトル、ヒープ、ポインターなどを含みうる。
【００３１】
いくつかの実施形態では、複数の入力が受領されてもよい。たとえば、下記の表１は、データ・セットについての例示的な既知の入力および対応する既知の出力を含んでいる。このデータ・セットは、パラメトリック・モジュール２０４を参照して下記でより詳細に述べるストリングについての正規表現モデルにおいて使用される。データ・セット中の各行はデータ項目と称されてもよい。よって、データ項目は一つまたは複数の既知の入力および一つまたは複数の対応する既知の出力を含んでいてもよい。
【表１】
2016152048.tif 000003
【００３２】
データ・モジュール２０２は、表１の既知の入力および対応する既知の出力を組み合わせてデータ・セットを生成してもよい。データ・モジュール２０２は、該データ・セットを、メモリ２２７に記憶されたシステム・データ２１０として保存してもよい。
【００３３】
データ・モジュール２０２は、パラメトリック・モジュール２０４からおよび／または非パラメトリック・モジュール２０６からデータを受領したのちに、該データ・セットを更新してもよい。たとえば、非パラメトリック・モジュール２０６はK近傍回帰を使って新たな入力および対応する新たな出力を生成してもよい。非パラメトリック・モジュール２０６は該新たな入力および対応する新たな出力をデータ・モジュール２０２に送信してもよく、それらの新たな入力および対応する新たな出力をデータ・モジュール２０２はデータ・セットに加えてもよい。
【００３４】
パラメトリック・モジュール２０４は概括的には、データ・モジュール２０２によって受領されたデータ・セットに基づいてパラメトリック・モデルを生成するよう構成されていてもよい。パラメトリック・モジュール２０４は、データ・モジュール２０２からデータ・セットを受領しても、あるいはメモリ２２７からデータ・セットを取り出してもよい。パラメトリック・モジュール２０４は、パラメトリック・モデルが当該データ・セットに当てはまるかどうかを判定してもよい。たとえば、パラメトリック・モジュール２０４は、データ・セットからの既知の入力を使って、予測される出力を決定してもよく、予測された出力を、前記既知の入力に対応する、対応する既知の出力と比較してもよい。予測された出力が対応する既知の出力と一致したら、パラメトリック・モジュール２０４はデータ・セットからの未解析のデータ項目を解析することを、すべての既知の入力および対応する既知の出力が解析されるまで、続けてもよい。
【００３５】
予測された出力がデータ・セットからの対応する未解析の既知の出力（すなわち、上記の対応する既知の出力）と一致し続けるなら、パラメトリック・モジュール２０４は、前記パラメトリック・モデルに基づいて前記パラメトリック・モデルについての少なくとも一つの制約条件を決定してもよい。この制約条件は、前記既知の出力が対応する既知の入力に対して生成される条件を記述する。
【００３６】
予測された出力が対応する未解析の既知の出力に一致しなかったら、パラメトリック・モジュール２０４は、予測された出力と対応する未解析の既知の出力との間の誤差指標を計算してもよい。パラメトリック・モジュール２０４は、ストリング距離に基づいてコスト関数を決定することによって誤差指標を計算してもよい。パラメトリック・モジュール２０４は、ストリング値をモデル化するためにキャラクタ・レンジ・オートマトンを使い、オートマタを使ってストリング制約条件を表現し、ストリング値を前記オートマトンとマッチさせて受け入れ状態への遷移数を数えることによって距離を計算することにより、距離計算を決定してもよい。たとえば、"s.startsWith("A1")∨s.endsWith("B2")〔sはA1で始まるまたはsはB2で終わる〕は、オートマタを使ったストリング制約条件を表わす。s＝"A1"についての距離計算は0となりうる。s＝"B"についての距離計算は1でありうる。S＝"C12"についての距離計算は2でありうる。
【００３７】
正規表現についても同様に、パラメトリック・モジュール２０４は、正規表現をモデル化するためにキャラクタ・レンジ・オートマトンを使い、ストリング値をオートマトンとマッチさせて受け入れ状態への遷移数を数えることによって距離を計算することにより、距離計算を決定してもよい。表２は、上記の議論と整合する正規表現モデルについての例示的な距離計算を含んでいる。
【表２】
2016152048.tif 000004
【００３８】
パラメトリック・モジュール２０４がパラメトリック・モデルがデータ・セットに当てはまると判定したら、パラメトリック・モジュール２０４はそのパラメトリック・モデルを使って、新たな出力を与える新たな入力を決定することにより、コンポーネントの将来の挙動を解析しうる。たとえば、入力が(s0,s1)であり、出力が(s0',s1')である場合、コンポーネントの機能（f）は(s0',s1')＝f(s0,s1)であるようなものである。(s0',s1')が所望される出力である場合、対応する入力がf1(s0',s1')によって得られてもよい。パラメトリック・モジュール２０４は機能（f）を推定するためにパラメトリック・モデルを決定してもよい。パラメトリック・モジュール２０４は、パラメトリック・モデルについての少なくとも一つの制約条件をも決定してもよい。この制約条件は、fがコンポーネントの機能を表わす条件を記述する。
【００３９】
いくつかの実施形態では、パラメトリック・モジュール２０４は、複数の型のパラメトリック・モデルのうちからパラメトリック・モデルを選択する。たとえば、パラメトリック・モデルの型は、線形回帰モデル、多項式回帰モデル、非線形回帰モデル、正規表現モデルまたは動作シーケンスに基づくモデルのうちの一つまたは複数を含みうる。パラメトリック・モジュール２０４は、データ・セットに関連付けられたデータ型に基づいて、パラメトリック・モデルの型のうちの一つを選択してもよい。たとえば、パラメトリック・モジュール２０４は、ストリングを含む前記データ・セットに関連するデータ型に基づいて、正規表現モデルを選択してもよい。
【００４０】
パラメトリック・モジュール２０４は、前記データ・セット中の第一のデータ項目に基づいて試験するための初期モデルを生成してもよい。たとえば、正規表現モデルを参照して下記でより詳細に述べるように、パラメトリック・モジュール２０４は、第一のデータ項目について生成された抽出正規表現に基づいて初期モデルを生成してもよい。パラメトリック・モジュール２０４は、その後のデータ項目に基づいて初期モデルを改訂してもよい。
【００４１】
パラメトリック・モジュール２０４は、回帰モデルを使って、非プリミティブな諸データ型をもつ諸データ・セットを解析してもよい。たとえば、データ・セットはストリングを含んでいてもよい。ストリングは、キャラクタのアレイを含んでいてもよい。パラメトリック・モジュール２０４は、ストリングをキャラクタに分解し、キャラクタ・コード（たとえば整数）を使って整数回帰モデルを構築するパラメトリック・モデルを生成してもよい。
【００４２】
パラメトリック・モジュール２０４は、ストリング中のキャラクタに対して線形回帰を適用してもよい。たとえば、当該コンポーネントについての入力（s）はs[0],s[1],s[2]などと表わされてもよく、当該コンポーネントについての出力（s'）はs'[0],s'[1],s'[2]などと表わされてもよい。パラメトリック・モジュール２０４は、ストリング反転演算を表わすために次の一般形をもつ線形回帰を実行してもよい。
【００４３】
s'[s.len−k−1]＝s[k]      0≦s＜s.len        (1)
ストリングについて使われる回帰モデルは、ベクトル、連結リストおよびスタックを含む他の非プリミティブなデータ型にも適用されうる。しかしながら、回帰モデルの制約が強すぎる場合には、正規表現モデルのようなより一般的なモデルがより効果的であることがある。正規表現モデルは、各出力キャラクタ（c'）を正規表現（re）を通じて入力ストリング（s）と関係付ける。このことは、c'＝extract(s,re)と表現されうる。
【００４４】
正規表現は、一致するストリングを検索するために使用されうるキャラクタのシーケンスを含んでいてもよい。たとえば、[a-z]はaからzまでの間の文字を表わし、[a-zA-Z]は任意の小文字または大文字を表わし、＼wと略記されてもよい。[0-9]は0から9までの間の数字を表わし、＼dと略記されてもよい。(c1|c2)はキャラクタc1またはc2を表わす。c1*はキャラクタc1の0回以上の反復を表わす。c1+はキャラクタc1の一回以上の反復を表わす。c1{n}はキャラクタc1のn回の反復を表わす。＼w+_[0-9]*は少なくとも一つの文字で始まり、次いで_があり、次いでいくつかの数字で終わる任意のストリングを表わす。
【００４５】
下記の表における正規表現c'＝extract(s,re)について、c'は、入力（s）における正規表現（re）の最初のマッチについてのプレースホルダー（□）のところのキャラクタである。
【表３】
2016152048.tif 000005
【００４６】
データ・セットについての既知の入力および対応する既知の出力が異なる正規表現に関連付けられる場合、パラメトリック・モジュール２０４はそれらの異なる正規表現を組み合わせてもよい。パラメトリック・モジュール２０４はそれらの正規表現を一般化し、一般化された正規表現を統一して単一の正規表現を生成してもよい。たとえば、数字と合わされた数字は[0-9]と表わされてもよい。小文字と合わされた小文字は[a-z]と表わされてもよい。大文字と合わされた大文字は[A-Z]と表わされてもよい。大文字と合わされた小文字は[a-zA-Z]と表わされてもよい。これは＼wとも表わせる。非文字キャラクタc2と合わされた非文字キャラクタc1はc2＝(c1|c2)と表わされてもよい。c+と合わされたc*はc*と表わされてもよい。c+と合わされたc+はc+と表わされてもよい。下記の表は、異なる正規表現（re1およびre2）の和集合のいくつかの具体例を含んでいる。
【表４】
2016152048.tif 000006
【００４７】
下記は、パラメトリック・モジュール２０４が、ストリングについての正規表現モデルを使ってパラメトリック・モデルがデータ・セットに当てはまるかどうかを判定する仕方の例である。この例は、次の正規表現モデルを想定する：
s'[i]＝extract(sj,rei)        (2)
ここで、s'は未知の機能をもつコンポーネントからの出力を表わし、iは出力ストリングs'におけるキャラクタの位置を表わし、sjはj番目の入力ストリングを表わし、reiは出力キャラクタs'[i]についての抽出正規表現を表わす。
【００４８】
表１からのデータ・セットの各データ項目について、パラメトリック・モジュール２０４は少なくとも一つの抽出正規表現を推定する。データ・セットは既知の入力および対応する既知の出力を含んでいる。表５は、表１の最初の四つのデータ項目についての抽出正規表現を推定するためにパラメトリック・モジュール２０４によって行なわれるステップを表わしている。表５の最初の三つの列は、データ・セットの最初の四つのデータ項目について、表１からの繰り返しである。四番目の列が出力からの最初のキャラクタを表わす。五番目の列は、パラメトリック・モジュール２０４によって推定された各データ出力についての抽出正規表現を表わす。
【表５】
2016152048.tif 000007
【００４９】
パラメトリック・モジュール２０４は、データ・セットにおける最初のデータ項目について抽出正規表現を決定することによって、初期モデルを構築してもよい。たとえば、パラメトリック・モジュール２０４は、未解析の既知の入力AAおよびAbc  Bcならびに対応する未解析の既知の出力Bをもつ最初のデータ項目を解析してもよい。パラメトリック・モジュール２０４は、対応する未解析の既知の出力の最初のキャラクタをBとして識別し、最初のデータ項目についての抽出正規表現がextract(s1,Abc  □)であると推定する。
【００５０】
パラメトリック・モジュール２０４は、初期モデルに基づいてデータ・セット中の次のデータ項目からの未解析の既知の入力を解析して、予測される出力を決定してもよい。パラメトリック・モジュール２０４は、予測された出力が、次のデータ項目からの未解析の既知の入力に対応する、対応する未解析の既知の出力にマッチするかどうかを判定してもよい。予測された出力が対応する未解析の既知の出力にマッチしたら、パラメトリック・モジュール２０４は、追加的な未解析のデータ項目があるかどうかを判定してもよい。この例では、予測された出力が最初のデータ項目についての対応する未解析の既知の出力にマッチすれば、パラメトリック・モジュール２０４はデータ・セット中の第二のデータ項目を解析する。
【００５１】
予測された出力が対応する未解析の既知の出力にマッチしない場合には、パラメトリック・モジュール２０４は、予測された出力と対応する未解析の既知の出力との間の誤り率を決定してもよい。誤り率が低ければ、パラメトリック・モジュール２０４は第二のデータ項目を受け入れ、モデル・パラメータを更新し、追加的な未解析のデータ項目があるかどうかを判定してもよい。更新されたモデル・パラメータは、システム・データ２１０の一部としてメモリ２２７に記憶されてもよい。正規表現モデルの例では、予測された出力が、最初のデータ項目についての対応する未解析の既知の出力にマッチしないが誤り率が低い場合には、パラメトリック・モジュール２０４は、第一の抽出正規表現を一般化して、一般化された抽出正規表現を第二のデータ項目に対応する第二の抽出正規表現と合併することによって、モデル・パラメータを更新してもよい。
【００５２】
パラメトリック・モジュール２０４は、誤り率が所与の閾値より小さい場合に、誤り率が低いと判定してもよい。異なる表現をすると、パラメトリック・モジュール２０４は、誤り率が閾値を超えるかどうかを判定してもよく、もしそうであれば、パラメトリック・モジュール２０４は初期モデルを一般化する、あるいは新しいパラメータをもつ新しいモデルを選択してもよい。閾値はユーザーによって指定されても、データ・セット依存でも、試験アプリケーション１０６についてのデフォルト設定に基づくなどでもよい。いくつかの実施形態では、パラメトリック・モジュール２０４は、経験的研究を実行することによって閾値を決定してもよい。
【００５３】
上記の正規表現モデルの例を続けると、最初の抽出正規表現はextract(s1,Abc□)である。パラメトリック・モジュール２０４は、extract(s1,Abc□)使用の予測される出力が対応する未解析の既知の出力Bとマッチしないと判定する。この例での閾値は1である。パラメトリック・モジュール２０４は、ストリング距離に基づいて誤り率を決定し、AcBcとAbc□の間の距離が3であると判定する。これは閾値1を超えている。結果として、パラメトリック・モジュール２０４は最初のデータ項目からの抽出正規表現extract(s1,Abc□)および二番目のデータ項目からの抽出正規表現extract(s0,A12□)∨extract(s1,Ac□)を、extract(s1,Ab*c□)として一般化する。
【００５４】
パラメトリック・モジュール２０４は、データ・セットからのさらなる未解析のデータ項目を解析することによって初期モデルを洗練することに進んでもよい。上記の例を続けると、パラメトリック・モジュール２０４は、第三のデータ項目についての予測された出力が対応する未解析の既知の出力Cにマッチしないと判定する。パラメトリック・モジュール２０４は誤り率が閾値を超えると判定し、結果として、パラメトリック・モジュール２０４はextract(s1,"Ab*c□")をextract(s1,"B_□")と一般化し、一般化された抽出正規表現と第三のデータ項目との間の合併を生成する。それはextract(s1,"＼w+(  |_)□")となる。結果として、最初のキャラクタについての抽出正規表現はs0'[0]＝extract(s1,"＼w+(  |_)□")と表わされうる。
【００５５】
パラメトリック・モジュール２０４は、データ・セットからのさらなる未解析のデータ項目が存在するかどうかを判定してもよい。上記の例を続けると、パラメトリック・モジュール２０４は、第四のデータ項目についての予測された出力が対応する未解析の既知の出力Cにマッチしないと判定する。C0と＼w+(  |_)□の間の距離が1であれば、パラメトリック・モジュール２０４は誤り率が閾値を超えないと判定しうる。結果として、パラメトリック・モジュール２０４はそのデータを受け入れ、一般化された抽出正規表現を保持し、データ・セットからのさらなる未解析のデータ項目を解析しうる。
【００５６】
パラメトリック・モジュール２０４が最初のキャラクタについて諸データ項目を、対応する未解析の既知の出力(s0'[0])について解析した後、パラメトリック・モジュール２０４は、その後のキャラクタについての諸データ項目を、対応する未解析の既知の出力について解析する。パラメトリック・モジュール２０４は、各キャラクタ位置について新たな抽出正規表現を生成しうる。正規表現モデルの例では、第二のキャラクタ（s0'[1]）についての抽出正規表現はextract(s0,"□")に等しく、第三のキャラクタ（s0'[2]）についての抽出正規表現は「0」に等しい。
【００５７】
パラメトリック・モジュール２０４が誤り率が閾値を超えることを判定し、一般化によってすべてのデータ項目についての正規表現を生成できない正規表現モデルについてのいくつかの実施形態では、パラメトリック・モジュール２０４は、初期モデルが現在のデータ項目に当てはまらないことを判定してもよい。代替的または追加的に、パラメトリック・モジュール２０４は、初期モデルが、当該未解析のデータ項目に当てはまるよう（たとえば一般化によって）修正され得ないことを判定してもよい。結果として、パラメトリック・モジュール２０４は、新たなパラメータをもつ新たなモデルを生成してもよい。初期モデルがデータ項目のうちのいくつかに当てはまり、他のデータ項目には該新たなモデルが当てはまるいくつかの実施形態では、パラメトリック・モジュール２０４は、データ項目を、初期モデルまたは新たなモデルに関連付けられている異なるグループに分類してもよい。
【００５８】
上記の正規表現モデルの例を続けると、パラメトリック・モジュール２０４は、最初のキャラクタについての抽出正規表現（s0'[0]＝extract(s1,"＼w+(|_)□")）が第五のデータ項目Bに当てはまらず、この正規表現は第五のデータ項目に当てはまるよう一般化されることができないことを判定する。実際、キャラクタBはs1ではなくストリングs0から取られていることがありうる。結果として、パラメトリック・モジュール２０４は最初の四つのデータ項目をグループ１にグループ化し、次の三つのデータ項目をグループ２にグループ化する。
【００５９】
パラメトリック・モジュール２０４は、種々のデータ項目を、対応する既知の出力の特性に基づいてグループに分類してもよい。たとえば、正規表現モデルの例について、パラメトリック・モジュール２０４は最初の四つのデータ項目を、対応する既知の出力が三つのキャラクタを含むことに基づいてグループ１として分類してもよい。
【００６０】
上記の例を続けると、パラメトリック・モジュール２０４は、第五のデータ項目についての抽出正規表現がextract(s0,"a  a□")であり、第六のデータ項目についての抽出正規表現がextract(s0,"c  ")であり、第七のデータ項目についての抽出正規表現がextract(s1,"b  ")であることを判別してもよい。パラメトリック・モジュール２０４はこれらの抽出正規表現を一般化し、グループ２のデータ項目について、一般化された抽出正規表現をs0'[0]＝extract(s0,"[a-z]  a*□")と一般化する。
【００６１】
パラメトリック・モジュール２０４は、データ項目をグループに分類し、各グループについての制約条件を決定してもよい。制約条件は、すべての入力が満たす条件を記述してもよい。よって、制約条件は、グループ内の諸入力を特徴付ける。パラメトリック・モジュール２０４は、各グループについての各キャラクタについて既知の諸入力の合併を生成することによって各グループについての制約条件を決定してもよい。パラメトリック・モジュール２０４は、当該ストリング・データの上位集合を表わす正規表現を推定するために諸入力の合併を使ってもよい。たとえば、正規表現モデルの例について、グループ１についての入力（s0）の最初のキャラクタについての入力の合併は、"AA"∪"A12Bcd"∪"DBcd"∪"D_"を含んでいてもよく、正規表現は[A-Z](|_)＼w+を含んでいてもよい。グループ１についての入力（s1）の第二のキャラクタについての入力の合併は、"AbcBc"∪"AcBc"∪"B_C"∪"C0"を含んでいてもよく、正規表現は[A-Z][a-z]*(0|((|_)[A-Z]c*)を含んでいてもよい。グループ２についての入力（s0）の最初のキャラクタについての入力の合併は、"aaB"∪"cA"∪"bC"を含んでいてもよく、正規表現は[a-z]a*[A-Z]を含んでいてもよい。グループ２についての入力（s1）の最初のキャラクタについての入力の合併は、"aCDe"∪""∪"12D"を含んでいてもよく、正規表現は「...」（任意のストリング）を含んでいてもよい。
【００６２】
パラメトリック・モジュール２０４は、各グループについて、関連するデータをガードする制約条件を決定してもよい。制約条件は、当該ストリング・データの上位集合を表わす正規表現および真である正規表現モデルの一方または両方を含んでいてもよい。推定されるモデルは次の式を含んでいてもよい。
【数１】
2016152048.tif 000008
このように、正規表現の例について、グループ１についてのモデルは
【数２】
2016152048.tif 000009
を含んでいてもよい。グループ２についてのモデルは
【数３】
2016152048.tif 000010
を含んでいてもよい。
【００６３】
いくつかの実施形態では、線形回帰モデルおよび正規表現モデルは、導入される個々の変数の数に基づいて問題があることがある。結果として、線形回帰モデルおよび正規表現モデルは、いくつかのコンポーネントについては理想的なモデルではないことがある。
【００６４】
動作シーケンス・モデルは、線形回帰モデルまたは正規表現モデルより一般的でありうるが、それほど効率的ではないことがありうる。動作シーケンス・モデルは、対応する既知の出力を生成するために既知の入力を操作する動作シーケンスを推定してもよい。動作シーケンス・モデルは、ストリング、ポインター、ヒープおよびユーザー定義されるデータ構造といった非プリミティブなデータ型について機能してもよい。ストリング動作はたとえば、concat、substr、toNum、charAt、valueOf、replaceなどを含む。表６は、動作に基づいて出力（結果ストリング）を与える入力（もとのストリング）を示している。
【表６】
2016152048.tif 000011
【００６５】
パラメトリック・モジュール２０４は、トライ・バックトラック（try-backtrack）法を使って動作シーケンス・モデルを生成してもよい。パラメトリック・モジュール２０４は、最初の未解析のデータ項目から出発して該データ・セットからの次のストリング動作（op）を識別することによって、既知の入力および対応する既知の出力のデータ・セットを解析してもよい。パラメトリック・モジュール２０４は、ストリング・ソルバーを参照することによって、対応する既知の出力ストリングが、既知の入力ストリング（ここで、たとえば既知の入力は可能な記号値を含んでいてもよい）に動作を適用することによって得られうるかどうかを判定してもよい。パラメトリック・モジュール２０４が、最初のデータ項目に当てはまる動作を識別する場合には、パラメトリック・モジュール２０４はデータ・セット中の次のデータ項目に進み、その動作がそのデータ項目に当てはまるかどうかを判定してもよい。パラメトリック・モジュール２０４は、データ・セット中のすべてのデータ項目が解析されるまで、各データ項目について解析を実行することを続けてもよい。
【００６６】
下記の表は、動作に基づいて出力（結果ストリング）を与える入力（もとのストリング）を示している。concatおよびsubstrのような候補動作では、推定されるモデルはs'＝concat(substr(s,1),s[0])を含んでいてもよい。ここで、数値0および1はストリング・ソルバーによって識別されうる。本質的には、この方法は、動作組み合わせを列挙して、大きな状態空間を探索して有効なモデルを得るものである。
【表７】
2016152048.tif 000012
【００６７】
非パラメトリック・モジュール２０６は、概括的には、特定のモデルを使うことなく入力と出力の間の関係を決定するよう構成されていてもよい。非パラメトリック・モジュール２０６は、逃した分枝、潜在的なバグまたはセキュリティーの破れといった制約条件を得る新たな出力についての新たな入力を決定するために、条件を満たすよう指示される後ろ向き計算（backwards  calculation）を使ってもよい。制約条件は既知なので、非パラメトリック・モジュール２０６は後ろ向き計算を使って、出力に対応する未知の入力を決定しうる。たとえば、非パラメトリック・モジュール２０６は、K近傍回帰を使って制約条件を識別し、一つまたは複数のデータ項目に基づいて該制約条件を満たす新たな入力および対応する新たな出力を決定してもよい。いくつかの実施形態では、非パラメトリック・モジュール２０６は、パラメトリック・モジュール２０４が当該データ・セットに当てはまるパラメトリック・モデルを決定し損なうことに応答して、入力と出力との間の関係を決定してもよい。いくつかの実施形態では、非パラメトリック・モジュール２０６は、パラメトリック・モジュール２０４とは独立に入力と出力との間の関係を決定してもよい。
【００６８】
下記は、K近傍回帰の例である。非パラメトリック・モジュール２０６は、データ・モジュール２０２からあるコンポーネントに関連付けられている既知の入力および対応する既知の出力を含むデータ・セットを受領する、あるいはメモリ２２７から該データ・セットを取り出してもよい。非パラメトリック・モジュール２０６は、将来のコードを受領し、該将来のコードから制約条件を識別してもよい。
【００６９】
非パラメトリック・モジュール２０６は、目標への近接性に基づいて、K個の近傍者のために、当該データ・セットから近傍データ項目を識別してもよい。各近傍データ項目は、近傍入力および対応する近傍出力を含んでいてもよい。Kはユーザーによって指定される、試験アプリケーション１０６についてデフォルト設定として設定されている、などでありうる。目標への近接性は、目標に最も近い近傍出力の数Kとして決定されてもよい。ここで、目標は制約条件を満たしていてもよい。
【００７０】
非パラメトリック・モジュール２０６は、K個の最近接近傍出力に対応する近傍入力を平均してもよい。近傍入力は、二次元座標対(1,10)、(2,19)および(−3,−20)のような二次元（三次元またはそれ以上）座標対によって指定されるデカルト座標系における点を含んでいてもよい。よって、非パラメトリック・モジュール２０６は該二次元座標対の三つのx座標（または第一の座標）を平均し、次いで該二次元座標対の三つのy座標（または第二の座標）を平均することによってそれらの点を平均してもよい。（(1＋2−3)/3,(10＋19−20)/3）＝(0,3)となる。
【００７１】
いくつかの実施形態では、非パラメトリック・モジュール２０６は、入力が非数値データを含む場合に近傍入力を平均してもよい。たとえば、入力はストリングを含んでいてもよい。非パラメトリック・モジュール２０６は、共有されるサブストリングを識別し、マッチしないサブストリングを識別し、マッチしないサブストリングの平均を計算してもよい。二つのストリングが平均されうる実施形態では、それぞれのマッチしないサブストリング対（t1∈s1、t2∈s2）について、非パラメトリック・モジュール２０６は以下の式を使って平均サブストリングtを計算してもよい。
【数４】
2016152048.tif 000013
ここで、lenは平均サブストリングの長さを表わし、tは平均サブストリングであり、iはサブストリング中のキャラクタの位置である。
【００７２】
表８は、ストリング平均の例を含んでいる。ここで、第一列は第一のストリング（s1）を含み、第二列は第二のストリング（s2）を含み、第三列は第一のストリングおよび第二のストリングによって共有されるサブストリングを含み、第四列は第一のストリングと第二のストリングの平均を示す。
【表８】
2016152048.tif 000014
【００７３】
もう一つの実施形態では、非パラメトリック・モジュール２０６は、ストリングの平均の計算を、上記のようにしてマッチしていないサブストリングを識別し、たとえば各キャラクタをASCIIキャラクタ・コードの十進数にマッピングすることによって各キャラクタを数に変換し、それらの数を平均し、平均をキャラクタに変換し戻し、そのキャラクタを共有されるサブストリングと組み合わせることによって行なってもよい。たとえば、二つのストリングがabcおよびabeである表８の第四行からの例を使うと、共有されるサブストリングはabである。共有されるサブストリングが各ストリングから除去された後、結果として得られるマッチしないサブストリングはcおよびeを含むことがありうる。非パラメトリック・モジュール２０６は、cがASCIIキャラクタ・コードにおける99に対応し、eが101に対応することを識別してもよい。平均は(99＋101)/2＝100であり、これはdに対応する。非パラメトリック・モジュール２０６は、共有されるサブストリングabを平均キャラクタdに加えてabdを得る。
【００７４】
非パラメトリック・モジュール２０６は平均を新たな入力として使ってもよい。該新たな入力を、非パラメトリック・モジュール２０６は新たな出力を計算するために使う。新たな出力が制約条件を満たす場合、非パラメトリック・モジュール２０６は新たな入力および新たな出力を受け入れる、終了する、あるいは新たな出力をユーザーに提供してもよい。新たな出力が制約条件を満たさない場合、非パラメトリック・モジュール２０６は新たな入力および新たな出力をデータ・セットに加えて、新たな出力を近傍出力と比較するさらなる反復工程を開始することを、更新された新たな出力が制約条件を満たすまたは非パラメトリック・モジュール２０６が行なわれた反復回数が多すぎると判定して非パラメトリック・モジュール２０６が終了するまで、続けてもよい。非パラメトリック・モジュール２０６は、新たな入力および新たな出力をデータ・モジュール２０２に送信してもよい。データ・モジュール２０２は、メモリ２２７にシステム・データ２１０として記憶されているデータ・セットを更新する。
【００７５】
次の例は、サークルおよびストリングを生成する未知の機能をもつコンポーネントを含んでいる。データ・モジュール２０２は、表９に示されるデータ・セットを受領してもよい。
【表９】
2016152048.tif 000015
【００７６】
非パラメトリック・モジュール２０６は、制約条件((i−2.4)2＋(i'−2.5)2==6.25  &&  s'.contains("aa"))が満たされる場合にセキュリティーの破れをトリガーしうる将来のコードを受領してもよい。非パラメトリック・モジュール２０６は制約条件が(i−2.4)2＋(i'−2.5)2==6.25およびs'.contains("aa")を含みうることを判別してもよい。
【００７７】
非パラメトリック・モジュール２０６は、反復回数を1に設定してもよい。反復回数を追跡することは、非パラメトリック回帰が当該データ・セットについて正しくないモデルであることがありうるかどうかを判定するために有益でありうる。反復回数については下記でより詳細に述べる。
【００７８】
非パラメトリック・モジュール２０６は、Kについての値を受領してもよい。ここで、Kは非パラメトリック・モジュール２０６がK近傍回帰のために使用しうるデータ項目の数を表わす。Kはユーザーによって指定される、システムについてのデフォルト値の一部である、データ型に依存するなどであってもよい。いくつかの実施形態では、Kは動的に変更されてもよい。この例ではKは3である。
【００７９】
非パラメトリック・モジュール２０６は、K個の点の、ある曲線への距離の和が最小である諸データ項目を識別してもよい。この例では、非パラメトリック・モジュール２０６は、(0.1,"",0.5,"ab")、(0.8,"b",1.6,"bb")および(1.2,"abc",3,"bbb")をデータ項目として識別する。非パラメトリック・モジュール２０６は、これらのデータ点についての近傍入力を平均してもよい。たとえば、近傍入力についての平均iは、i＝(0.1＋0.8＋1.2)/3＝0.7として計算される。平均sはs＝average("","b","abd")＝"ab"として計算される。
【００８０】
非パラメトリック・モジュール２０６は、データ項目についての平均近傍入力を、未知の機能をもつコンポーネントへの新たな入力として使って、新たな出力を生成してもよい。たとえば、新たな出力(i',s')は(1.1,"")である。非パラメトリック・モジュール２０６は、新たな入力および新たな出力が制約条件を満たすかどうかを判定してもよい。たとえば、非パラメトリック・モジュール２０６は((0.7−2.4)2＋(1.1−2.5)2)が6.25に等しくなく、""が"aa"を含まないことを判別する。結果として、制約条件は満たされ得ない。
【００８１】
非パラメトリック・モジュール２０６は、これらの新たな入力および新たな出力をデータ・セットに加え、反復数を1増す。次の反復工程では、非パラメトリック・モジュール２０６は、K個の点の、ある曲線への距離の和が最小である諸データ点を識別してもよい。この例では、上記の新たな入力および新たな出力は近傍入力および近傍出力の一部になる。こうして、非パラメトリック・モジュール２０６は、近傍入力および近傍出力を、(0.7,"ab",1.1,"")、(0.8,"b",1.6,"bb")および(1.2,"abd",3,"bbb")として識別しうる。非パラメトリック・モジュール２０６はデータ点についての近傍入力を平均してもよい。たとえば、近傍入力についての平均iはi＝(0.7＋0.8＋1.2)/3＝0.9として計算される。平均sはs＝average("ab","b","abd")＝"bd"として計算される。非パラメトリック・モジュール２０６は、新たな入力(0.9,"bc")についての更新された新たな出力(i',s')が(0.5,"aaa")であることを判別してもよい。
【００８２】
非パラメトリック・モジュール２０６は、新たな入力および更新された新たな出力が制約条件を満たすかどうかを判定してもよい。たとえば、パラメトリック・モジュール２０６は((0.9−2.4)2＋(0.5−2.5)2)が6.25に等しく、"aaa"が"aa"を含んでいることを判別する。結果として、新たな入力および更新された新たな出力は受け入れられてもよい。
【００８３】
図３は、本稿に記載される少なくとも一つの実施形態に基づいて構成された、未知の機能をもつコンポーネントを試験する例示的な方法３００のフローチャートを示している。方法３００は、全体的または部分的に、図１または図２の試験アプリケーション１０６、図２の装置２００または他の好適な装置、サーバーおよび／またはシステムによって実装されてもよい。図２の試験アプリケーション１０６はデータ・モジュール２０２、パラメトリック・モジュール２０４および非パラメトリック・モジュール２０６を含んでいてもよい。方法３００はブロック３０２において始まってもよい。
【００８４】
ブロック３０２では、あるコンポーネントに関連する既知の入力および対応する既知の出力を含むデータ・セットが受領されてもよい。たとえば、図１の試験アプリケーション１０６および／または図２のデータ・モジュールが、そのコンポーネントに関連する既知の入力および対応する既知の出力を含むデータ・セットを受領してもよい。そのコンポーネントは未知の機能を含んでいてもよい。データ・セットは、図２のメモリ２２７にシステム・データ２１０として記憶されてもよい。
【００８５】
ブロック３０４は、データ・セットに基づいてパラメトリック・モデルが生成されてもよい。たとえば、図１の試験アプリケーション１０６および／または図２のパラメトリック・モジュール２０４がデータ・セットに基づいてパラメトリック・モデルを生成してもよい。パラメトリック・モデルは、正規表現モデルのような回帰モデルまたは他の型のパラメトリック・モデルを含みうる。
【００８６】
ブロック３０６では、パラメトリック・モデルがデータ・セットに当てはまるかどうかが判定される。たとえば、図１の試験アプリケーション１０６および／または図２のパラメトリック・モジュール２０４がパラメトリック・モデルがデータ・セットに当てはまるかどうかが判定してもよい。パラメトリック・モデルがデータ・セットに当てはまる場合（ブロック３０６においてYES）、ブロック３０６にブロック３０８が続いてもよい。パラメトリック・モデルがデータ・セットに当てはまらない場合（ブロック３０６においてNO）、ブロック３０６にブロック３１２が続いてもよい。
【００８７】
ブロック３０８では、当該コンポーネントに関連する新たな出力が受領されてもよい。たとえば、図１の試験アプリケーション１０６および／または図２のパラメトリック・モジュール２０４が当該コンポーネントに関連する新たな出力を受領してもよい。ブロック３１０では、パラメトリック・モデルに基づく前記新たな出力から新たな入力が決定されてもよい。たとえば、図１の試験アプリケーション１０６および／または図２のパラメトリック・モジュール２０４がパラメトリック・モデルに基づく前記新たな出力から新たな入力を決定してもよい。
【００８８】
ブロック３１２では、制約条件が識別されてもよい。たとえば、図１の試験アプリケーション１０６および／または図２の非パラメトリック・モジュール２０６が制約条件を識別してもよい。
【００８９】
ブロック３１４では、データ・セットの一つまたは複数の近傍データ項目に基づいて前記制約条件を満たす新たな入力および対応する新たな出力が決定されてもよい。たとえば、図１の試験アプリケーション１０６および／または図２の非パラメトリック・モジュール２０６が、データ・セットの一つまたは複数の近傍データ項目に基づいて前記制約条件を満たす新たな入力および対応する新たな出力を決定してもよい。近傍データ項目は、制約条件に基づく目標に近い、前記データ・セットからのデータ項目であってもよい。前記制約条件を満たす新たな入力および対応する新たな出力を決定することに基づいて、図１の試験アプリケーション１０６および／または図２の非パラメトリック・モジュール２０６が、当該コンポーネントの機能を自動的に判別する非パラメトリック・モデルを生成してもよい。
【００９０】
図４Ａ〜４Ｂは、本項に記載される少なくとも一つの実施形態に基づいて構成された、図３のコンポーネントについてのパラメトリック・モデルを生成する例示的な方法４００のフローチャートを示している。方法４００は、図１または図２の試験アプリケーション１０６、図２の装置２００または他の好適な装置、サーバーおよび／またはシステムのうちの一つまたは複数によって実装されうる。方法４００はブロック４０２で始まる。
【００９１】
ブロック４０２では、データ・セットに関連付けられたデータ型に基づいて複数の型のパラメトリック・モデルからパラメトリック・モデルが選択される。たとえば、図１の試験アプリケーション１０６および／または図２のパラメトリック・モジュール２０４が、データ型に関連付けられたデータ型に基づいて複数の型のパラメトリック・モデルからパラメトリック・モデルを選択してもよい。図１の試験アプリケーション１０６および／または図２のパラメトリック・モジュール２０４は、前記複数の型のパラメトリック・モデルが、線形回帰モデル、多項式回帰モデル、非線形回帰モデル、正規表現モデルおよび動作シーケンス・ベースのモデルのうちの一つまたは複数を含むことを判別してもよい。図１の試験アプリケーション１０６および／または図２のパラメトリック・モジュール２０４は、ストリングを含むデータ型に基づいて正規表現モデルを選択してもよく、あるいはより一般に、データ・セットのデータ型に基づいてモデルのうちの対応するものを選択してもよい。
【００９２】
ブロック４０４では、データ・セット中の最初の項目を解析することによって初期モデルが生成されてもよい。たとえば、図１の試験アプリケーション１０６および／または図２のパラメトリック・モジュール２０４が、データ・セット中の最初の項目を解析することによって初期モデルを生成してもよい。これらおよび他の実装において、データ・セット中の最初の項目を解析することによって初期モデルを生成することは、上記のように、最初のデータ項目に基づいて抽出正規表現を生成することを含んでいてもよい。
【００９３】
ブロック４０６では、データ・セットからの次のデータ項目が未解析であって、該次のデータ項目が未解析の既知の入力および対応する未解析の既知の出力を含んでいるかが判定される。データ・セットからの次のデータ項目が解析済みであれば（ブロック４０８においてNO）、ブロック４０６にブロック４０８が続いてもよい。データ・セットからの次のデータ項目が未解析であれば（ブロック４０６においてYES）、ブロック４０６にブロック４１０が続いてもよい。
【００９４】
ブロック４０８では、パラメトリック・モデルについての制約条件が判別されてもよい。たとえば、図１の試験アプリケーション１０６および／または図２のパラメトリック・モジュール２０４が制約条件を決定してもよい。制約条件は、関連するデータを保護しうる。制約条件は、新たなモデルが必要とされたかどうかおよび／または該新たなモデルが初期モデルを置換したかどうかに依存して、初期モデル、新たなモデルまたは初期モデルと新たなモデルとの組み合わせに基づいてもよい。たとえば、初期モデルが最初の三つのデータ項目に当てはまり、新たなモデルが次の三つのデータ項目に当てはまる場合、図１の試験アプリケーション１０６および／または図２のパラメトリック・モジュール２０４は、初期モデルについて第一の制約条件を、新たなモデルについて第二の制約条件を決定してもよい。
【００９５】
ブロック４１０では、次のデータ項目における未解析の既知の入力が、初期モデルに基づいて解析されて、予測される出力を決定してもよい。たとえば、図１の試験アプリケーション１０６および／または図２のパラメトリック・モジュール２０４が、初期モデルに基づいて未解析の既知の入力を解析して、予測される出力を決定してもよい。
【００９６】
ブロック４１２では、予測された出力が対応する未解析の既知の出力にマッチするかどうかが判定される。たとえば、図１の試験アプリケーション１０６および／または図２のパラメトリック・モジュール２０４が、予測された出力が対応する未解析の既知の出力にマッチするかどうかを判定してもよい。予測された出力が対応する未解析の既知の出力にマッチする場合（ブロック４１２においてYES）、ブロック４１２にブロック４０６が続いてもよい。予測される出力が対応する未解析の既知の出力にマッチしない場合（ブロック４１２においてNO）は、ブロック４１２にブロック４１４が続いてもよい。
【００９７】
いくつかの実施形態では、予測された出力が対応する未解析の既知の出力にマッチしないことに応答して、初期モデルが一般化されてもよい。たとえば、パラメトリック・モデルが正規表現モデルを含む場合、初期モデルについての抽出正規表現が一般化されてもよい。一般化された初期モデルが次のデータ項目に当てはまるかどうかが判定されてもよく、一般化された初期モデルが次の項目に当てはまる場合、最初のデータ項目は初期モデルに関連付けられているものとして分類されてもよい。こうして、最初のデータ項目はグループ１の一部であり得、次のデータ項目はグループ２の一部でありうる。
【００９８】
ブロック４１４では、予測された出力と対応する未解析の既知の出力との間の誤り率が決定されてもよい。たとえば、図１の試験アプリケーション１０６および／または図２のパラメトリック・モジュール２０４が、予測された出力と対応する未解析の既知の出力との間の誤り率を決定してもよい。誤り率は、ストリング距離に基づくコスト関数として決定されてもよい。
【００９９】
ブロック４１６では、誤り率が閾値を超えるかどうかが判定される。たとえば、図１の試験アプリケーション１０６および／または図２のパラメトリック・モジュール２０４が、誤り率が閾値を超えるかどうかが判定してもよい。誤り率が閾値を超える場合（ブロック４１６においてYES）、ブロック４１６にブロック４１８が続いてもよい。誤り率が閾値未満であれば（ブロック４１６においてNO）、ブロック４１６にブロック４２４が続いてもよい。
【０１００】
ブロック４１８では、初期モデルが次のデータ項目に当てはまるよう一般化されることができるかどうかが判定される。たとえば、図１の試験アプリケーション１０６および／または図２のパラメトリック・モジュール２０４が、現在のモデルが次のデータ項目に当てはまるよう一般化されることができるかどうかを判定してもよい。たとえば、正規表現は、次のストリング項目を受け入れるように一般化されうる。初期モデルが一般化できない場合（ブロック４１８においてNO）、ブロック４１８にブロック４２０が続いてもよい。初期モデルが一般化できる場合（ブロック４１８においてYES）には、ブロック４１８にブロック４２４が続いてもよい。
【０１０１】
ブロック４２０では、新たなモデルが次のデータ項目に基づいて選択されてもよい。たとえば、図１の試験アプリケーション１０６および／または図２のパラメトリック・モジュール２０４が、次のデータ項目に基づいて新たなモデルを選択してもよい。いくつかの実施形態では、パラメトリック・モジュール２０４は、初期モデルが次のデータ項目に当てはまるよう修正できない場合に新たなモデルを選択してもよい。ブロック４２２では、前記次のデータ項目に基づいて新たなモデルのために新たなパラメータが生成されてもよい。たとえば、図１の試験アプリケーション１０６および／または図２のパラメトリック・モジュール２０４が、前記次のデータ項目に基づいて新たなモデルのために新たなパラメータを生成してもよい。
【０１０２】
ブロック４２４では、初期モデルに関連付けられたモデル・パラメータが、未解析の既知の入力および対応する未解析の既知の出力を組み込むよう更新されてもよい。たとえば、図１の試験アプリケーション１０６および／または図２のパラメトリック・モジュール２０４が、未解析の既知の入力および対応する未解析の既知の出力を組み込むよう初期モデルに関連するモデル・パラメータを更新してもよい。たとえばブロック４１０、４１２、４１４、４１６、４１８、４２０、４２２および４２４のうちの一つまたは複数に従って未解析のデータ項目が解析される際、ブロック４０６がブロック４２４に続いてもよい。これは、未解析のデータ項目が残っておらず、パラメトリック・モデルについての制約条件が決定されうるまで、続けられる。
【０１０３】
図５は、本稿に記載される少なくとも一つの実施形態に基づいて構成された、特定のモデルを想定することなく図３のコンポーネントについて既知の入力と対応する既知の出力を関係付ける例示的方法５００のフローチャートを示している。方法４００は、全体的にまたは部分的に、図１または図２の試験アプリケーション１０６、図２の装置２００または別の好適な装置、サーバーおよび／またはシステムのうちの一つまたは複数によって実装されてもよい。方法５００はブロック５０２において始まってもよい。
【０１０４】
ブロック５０２では、反復数が1に設定されてもよい。たとえば、図１の試験アプリケーション１０６および／または図２の非パラメトリック・モジュール２０６が、反復数を1に設定してもよい。
【０１０５】
ブロック５０４では、目標への近接性に基づいて近傍データ項目が識別されてもよい。ここで、各近傍データ項目は近傍入力および対応する近傍出力を含む。たとえば、図１の試験アプリケーション１０６および／または図２の非パラメトリック・モジュール２０６が、目標への近接性に基づいて近傍データ項目を識別してもよい。目標への近接性は、目標に最も近いK個の近傍出力として決定されてもよい。ここで、目標は制約条件を満たしていてもよく、Kはユーザーによって定義されてもよい。
【０１０６】
ブロック５０６では、諸近傍データ項目についての諸近傍入力を平均することに基づいて、新たな入力が決定されてもよい。たとえば、図１の試験アプリケーション１０６および／または図２の非パラメトリック・モジュール２０６が、近傍データ項目についての近傍入力を平均することに基づいて、新たな入力を決定してもよい。
【０１０７】
ブロック５０８では、新たな入力に基づいて対応する新たな出力が決定されうる。たとえば、図１の試験アプリケーション１０６および／または図２の非パラメトリック・モジュール２０６が、新たな入力に基づいて対応する新たな出力を決定してもよい。非パラメトリック・モジュール２０６は、当該コンポーネントに基づいて新たな入力を解析することによって、対応する新たな出力を決定してもよい。
【０１０８】
ブロック５１０では、対応する新たな出力が制約条件を満たすかどうかが判定される。たとえば、図１の試験アプリケーション１０６および／または図２の非パラメトリック・モジュール２０６が、対応する新たな出力が制約条件を満たすかどうかを判定してもよい。対応する新たな出力が制約条件を満たす場合（ブロック５１０においてYES）、ブロック５１０にはブロック５１２が続いてもよい。対応する新たな出力が制約条件を満たさない場合（ブロック５１０においてNO）には、ブロック５１０にはブロック５１４が続いてもよい。
【０１０９】
ブロック５１２では、新たな入力および新たな出力が受け入れられてもよい。たとえば、図１の試験アプリケーション１０６および／または図２の非パラメトリック・モジュール２０６が、新たな入力および新たな出力を受け入れてもよい。
【０１１０】
ブロック５１４では、反復数が閾値を超えているかどうかが判定される。たとえば、図１の試験アプリケーション１０６および／または図２の非パラメトリック・モジュール２０６が、反復数が閾値を超えているかどうかを判定してもよい。反復数が閾値を超えている場合（ブロック５１４においてYES）、ブロック５１４にはブロック５１６が続いてもよい。反復数が閾値未満である場合（ブロック５１４でNO）、ブロック５１４にはブロック５１８が続いてもよい。閾値はユーザーによって定義される、デフォルト値である、などでありうる。
【０１１１】
ブロック５１６では、方法５００は停止してもよい。たとえば、図１の試験アプリケーション１０６および／または図２の非パラメトリック・モジュール２０６が、方法５００を停止させてもよい。方法５００が停止するのは、反復数が閾値を超えているおよび特定のモデルを想定することなく既知の入力と対応する既知の出力との間の関係を決定することが可能であり得ない場合でありうる。いくつかの実施形態では、非パラメトリック方法が失敗したので、図１の試験アプリケーション１０６および／または図２のパラメトリック・モジュール２０４がパラメトリック・モデルを生成してもよい。
【０１１２】
ブロック５１８では、新たな入力および対応する新たな出力をデータ・セットに加え、反復数を1増すことによってデータ・セットが更新されてもよい。たとえば、図１の試験アプリケーション１０６および／または図２の非パラメトリック・モジュール２０６が、新たな入力および対応する新たな出力をデータ・セットに加え、反復数を1増すことによってデータ・セットを更新してもよい。方法５００が更新されたデータ・セットをもって次の反復工程を実行するので、ブロック５１８にはブロック５０４が続いてもよい。反復工程は、制約条件が満たされうるか、あるいは反復数が閾値を超えて方法５００が終了するまで続けられてもよい。
【０１１３】
本稿に記載される実施形態は、さまざまなコンピュータ・ハードウェアまたはソフトウェア・モジュールを含む専用または汎用コンピュータの使用を含んでいてもよい。これについて下記でより詳細に述べる。
【０１１４】
本稿に記載される実施形態は、コンピュータ実行可能命令またはデータ構造を担持するまたは記憶するコンピュータ可読媒体を使って実装されてもよい。そのようなコンピュータ可読媒体は、汎用または専用コンピュータによってアクセスされうるいかなる利用可能な媒体を含んでいてもよい。限定ではなく例として、そのようなコンピュータ可読媒体は非一時的なコンピュータ可読記憶媒体を含んでいてもよく、それは、ランダム・アクセス・メモリ（RAM）、読み出し専用メモリ（ROM）、電気的に消去可能なプログラム可能型読み出し専用メモリ（EEPROM）、コンパクトディスク読み出し専用メモリ（CD-ROM）または他の光ディスク記憶、磁気ディスク記憶または他の磁気記憶デバイス、フラッシュ・メモリ・デバイス（たとえば半導体メモリ・デバイス）またはコンピュータ実行可能命令またはデータ構造の形で所望されるプログラム・コードを担持または記憶するために使用されうる、汎用または専用コンピュータによってアクセスされうる他の任意の記憶媒体を含んでいてもよい。上記の組み合わせも、コンピュータ可読媒体の範囲内に含められてもよい。
【０１１５】
コンピュータ実行可能命令はたとえば、汎用コンピュータ、専用コンピュータまたは専用プロセッサ装置（たとえば一つまたは複数のプロセッサ）に、ある機能または機能群を実行させる命令およびデータを含んでいてもよい。主題は構造的な特徴および／または方法論的な工程に固有の言辞で記述されてきたが、付属の請求項において定義される主題は必ずしも上記の個別的な特徴または工程に限定されないことは理解される。むしろ、上記の個別的な特徴および工程は、請求項を実装する例示的な形として開示されている。
【０１１６】
本稿での用法では、用語「モジュール」または「コンポーネント」は、コンピューティング・システムの汎用ハードウェア（たとえばコンピュータ可読媒体、プロセッサ装置など）に記憶および／または実行されうるモジュールまたはコンポーネントおよび／またはソフトウェア・オブジェクトまたはソフトウェア・ルーチンの動作を実行するよう構成された個別的なハードウェア実施形態を指すことがありうる。いくつかの実装では、本稿に記載される種々のコンポーネント、モジュール、エンジンおよびサービスは、コンピューティング・システム上で実行されるオブジェクトまたはプロセスとして実装されてもよい。本稿に記載されるシステムおよび方法のいくつかは一般に（汎用ハードウェアに記憶されるおよび／または実行される）ソフトウェアで実装されるものとして記述されるが、個別的なハードウェア実装またはソフトウェアおよび個別的ハードウェア実装の組み合わせも可能であり、考えられている。本稿において、「コンピューティング・エンティティ」は、本稿で先に定義した任意のコンピューティング・システムまたはコンピューティング・システム上で走る任意のモジュールまたはモジュレットの組み合わせであってよい。
【０１１７】
本稿に記載されるすべての例および条件付きの言辞は、本発明および発明者によって当技術分野の発展のために寄与される概念の理解において読者を助ける教育目的を意図されており、そのような特定的に挙げられる例および条件に限定することなく解釈されるものとする。本発明の実施形態について詳細に述べてきたが、本発明の精神および範囲から外れることなく、これにさまざまな変化、代替および変更をなすことができることは理解しておくべきである。
【０１１８】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
（付記１）
パラメトリック・モデルに基づいて入力と出力の間の関係を決定する方法であって：
あるコンポーネントに関する既知の入力および対応する既知の出力を含むデータ・セットを受領する段階と；
前記データ・セットに関連するデータ型に基づいて複数の型のパラメトリック・モデルからパラメトリック・モデルを選択することによって、前記データ・セットに基づいて前記コンポーネントの機能を自動的に判別するようパラメトリック・モデルを生成する段階と；
前記パラメトリック・モデルが前記データ・セットに当てはまるかどうかを判定する段階と；
前記パラメトリック・モデルが前記データ・セットに当てはまることを判定することに応答して、前記コンポーネントに関する新たな出力を受領する段階と；
前記パラメトリック・モデルに基づいて前記新たな出力から新たな入力を決定する段階とを含む、
方法。
（付記２）
前記データ型が非プリミティブ・データ型を含み；
前記非プリミティブ・データ型を含むデータ型に基づいて前記パラメトリック・モデルとして回帰モデルが選択される、
付記１記載の方法。
（付記３）
前記回帰モデルが、各既知の出力について抽出正規表現を識別し、それらの抽出正規表現を合併し、一般化された正規表現を生成するよう構成された正規表現モデルを含む、付記２記載の方法。
（付記４）
前記回帰モデルが、前記既知の入力から前記対応する既知の出力を帰結させる動作を決定するよう構成されている動作シーケンス・ベースのモデルを含む、付記２記載の方法。
（付記５）
前記データ・セットからの次のデータ項目が未解析であるかどうかを判定する段階であって、前記次のデータ項目が未解析の既知の入力および対応する未解析の既知の出力を含む、段階と；
前記データ・セットからの前記次のデータ項目が解析されるのに応答して、前記パラメトリック・モデルについての制約条件を決定する段階とをさらに含む、
付記１記載の方法。
（付記６）
前記複数の型のパラメトリック・モデルが、線形回帰モデル、多項式回帰モデル、非線形回帰モデル、正規表現モデルまたは動作シーケンス・ベースのモデルの一つまたは複数を含む、付記１記載の方法。
（付記７）
前記データ・セットにおける最初のデータ項目を解析することによって前記パラメトリック・モデルについての初期モデルを生成する段階と；
前記データ・セットからの次のデータ項目が未解析であるかどうかを判定する段階であって、前記次のデータ項目が未解析の既知の入力および対応する未解析の既知の出力を含む、段階と；
前記データ・セットからの前記次のデータ項目が未解析であることに応答して、前記未解析の既知の入力を前記初期モデルに基づいて解析して、予測される出力を決定する段階と；
予測された出力が前記対応する未解析の既知の出力にマッチするかどうかを判定する段階と；
前記予測された出力が前記対応する未解析の既知の出力にマッチすることに応答して、前記データ・セットからのさらなるデータ項目が未解析であるかどうかを判定する段階とをさらに含む、
付記１記載の方法。
（付記８）
前記予測された出力が前記対応する未解析の既知の出力にマッチしないことに応答して、前記予測された出力と前記対応する未解析の既知の出力との間の誤り率を決定する段階と；
前記誤り率が閾値を超えるかどうかを判定する段階と；
前記誤り率が前記閾値を超えないことに応答して、前記初期モデルが、前記次のデータ項目に当てはまるよう一般化されることができるかどうかを判定する段階と；
前記初期モデルが、前記次のデータ項目に当てはまるよう一般化されることができることに応答して、前記初期モデルに関連するモデル・パラメータを、前記未解析の既知の入力および前記対応する未解析の既知の出力を組み込むよう更新する段階と；
前記データ・セットからのさらなるデータ項目が未解析であるかどうかを判定する段階とをさらに含む、
付記７記載の方法。
（付記９）
前記誤り率が前記閾値を超えることに応答して、前記次のデータ項目に基づく新たなモデルを選択する段階と；
前記次のデータ項目に基づいて前記新たなモデルについての新たなパラメータを生成する段階と；
前記データ・セットからのさらなるデータ項目が未解析であるかどうかを判定する段階とをさらに含む、
付記８記載の方法。
（付記１０）
前記予測された出力が前記対応する未解析の既知の出力にマッチしないことに応答して、前記初期モデルを一般化する段階と；
前記一般化された初期モデルが前記次のデータ項目に当てはまるかどうかを判定する段階と；
前記一般化された初期モデルが前記次のデータ項目に当てはまらないことに応答して、前記最初のデータ項目を、前記初期モデルに関連付けられているとして分類する段階と；
前記次のデータ項目を、前記新たなモデルに関連付けられているとして分類する段階とをさらに含む、
付記９記載の方法。
（付記１１）
特定のモデルを想定することなく入力と出力を関係付ける方法であって：
あるコンポーネントに関連する既知の入力および対応する既知の出力を含むデータ・セットを受領する段階と；
制約条件を識別する段階と；
目標への近接性に基づいて近傍データ項目を識別する段階であって、各近傍データ項目は近傍入力および対応する近傍出力を含む、段階と；
諸近傍データ項目についての諸近傍入力を平均することに基づいて、新たな入力を決定する段階と；
前記新たな入力に基づいて、対応する新たな出力を決定する段階と；
前記対応する新たな出力が前記制約条件を満たすかどうかを判定する段階と；
前記コンポーネントの機能を自動的に判別する非パラメトリック・モデルを生成する段階とを含む、
方法。
（付記１２）
反復数を1に設定する段階と；
前記対応する新たな出力が前記制約条件を満たさないことに応答して、反復数が閾値を超えているかどうかを判定する段階と；
反復数が前記閾値を超えてないことに応答して、前記新たな入力および前記対応する新たな出力を前記データ・セットに加えて、反復数を1増すことによって、前記データ・セットを更新する段階とをさらに含む、
付記１１記載の方法。
（付記１３）
反復数が前記閾値を超えていることに応答して、パラメトリック・モデルを生成する段階をさらに含む、付記１２記載の方法。
（付記１４）
機能が未知のコードを解析する方法であって：
あるコンポーネントに関連する既知の入力および対応する既知の出力を含むデータ・セットを受領する段階と；
前記データ・セットに基づいてパラメトリック・モデルを生成することを、該生成を実行するまたはその実行を制御するようプログラムされたプロセッサ装置を使って行なう段階と；
前記パラメトリック・モデルが前記データ・セットに当てはまるかどうかを判定する段階と；
前記パラメトリック・モデルが前記データ・セットに当てはまらないことに応答して、制約条件を識別する段階と；
前記制約条件を満たす新たな入力および対応する新たな出力を、前記データ・セットの一つまたは複数のデータ項目に基づいて決定する段階と；
前記コンポーネントの機能を自動的に判別するよう非パラメトリック・モデルを生成する段階とを含む、
方法。
（付記１５）
前記パラメトリック・モデルが前記データ・セットに当てはまることに応答して、前記制約条件に関連する新たな出力を受領する段階と；
前記パラメトリック・モデルに基づいて、記新たな出力から新たな入力を決定する段階とをさらに含む、
付記１４記載の方法。
（付記１６）
前記データ・セットに基づいて前記パラメトリック・モデルを生成する段階が：
前記データ・セット中の最初の項目を適用することによって初期モデルを生成する段階と；
前記データ・セットからの次のデータ項目が未解析であるかどうかを判定する段階であって、前記次のデータ項目が未解析の既知の入力および対応する未解析の既知の出力を含む、段階と；
前記データ・セットからの前記次のデータ項目が未解析であることに応答して、前記未解析の既知の入力を前記初期モデルに基づいて解析して、予測される出力を決定する段階とを含む、
付記１５記載の方法。
（付記１７）
予測された出力が対応する未解析の既知の出力にマッチするかどうかを判定する段階と；
前記予測された出力が前記対応する未解析の既知の出力にマッチしないことに応答して、前記予測された出力と前記対応する未解析の既知の出力との間の誤り率を決定する段階と；
前記誤り率が閾値を超えているかどうかを判定する段階と；
前記誤り率が前記閾値を超えないことに応答して、前記未解析の既知の入力および前記対応する未解析の既知の出力を組み込むよう、前記初期モデルに関連するモデル・パラメータを更新する段階と；
前記データ・セットの一部であるさらなるデータ項目が未解析であるかどうかを判定する段階とをさらに含む、
付記１６記載の方法。
（付記１８）
前記誤り率が前記閾値を超えていることに応答して、前記次のデータ項目に基づく新たなモデルを選択する段階と；
前記次のデータ項目に基づいて前記新たなモデルについての新たなパラメータを生成する段階と；
前記データ・セットの一部であるさらなるデータ項目が未解析であるかどうかを判定する段階とをさらに含む、
付記１７記載の方法。
（付記１９）
前記制約条件を満たす前記新たな入力および前記対応する新たな出力を、前記データ・セットの一つまたは複数のデータ項目に基づいて決定する段階が：
目標への近接性に基づいて近傍データ項目を識別する段階であって、各近傍データ項目は近傍入力および対応する近傍出力を含む、段階と；
諸近傍データ項目についての諸近傍入力を平均することに基づいて、前記新たな入力を決定する段階と；
前記新たな入力に基づいて、前記対応する新たな出力を決定する段階と；
前記対応する新たな出力が前記制約条件にマッチするかどうかを判定する段階とを含む、
付記１４記載の方法。
（付記２０）
反復数を1に設定する段階と；
前記対応する新たな出力が前記制約条件を満たさないことに応答して、反復数が閾値を超えているかどうかを判定する段階とをさらに含む、
付記１９記載の方法。
【符号の説明】
【０１１９】
１０４  試験対象コンポーネント
１０６  試験アプリケーション
１０８  出力
１１０  試験ケース
１１２  バグ
１１４  セキュリティー脆弱性
２０２  データ・モジュール
２０４  パラメトリック・モジュール
２０６  非パラメトリック・モジュール
２１０  システム・データ
２２５  プロセッサ装置
２２７  メモリ
３０２  あるコンポーネントに関連する既知の入力および対応する既知の出力を含むデータ・セットを受領
３０４  データ・セットに基づいてコンポーネントの機能を自動的に決定するパラメトリック・モデルを生成
３０６  パラメトリック・モデルがデータ・セットに当てはまるか？
３０８  当該コンポーネントに関連する新たな出力を受領
３１０  パラメトリック・モデルに基づく前記新たな出力から新たな入力を決定
３１２  制約条件を識別
３１４  制約条件を満たす新たな入力および対応する新たな出力を決定。データ・セットの一つまたは複数の近傍データ項目に基づいて比較することを含む
４０２  データ・セットに関連付けられたデータ型に基づいて複数の型のパラメトリック・モデルからパラメトリック・モデルを選択
４０４  データ・セット中の最初の項目を解析することによってパラメトリック・モデルについての初期モデルを生成
４０６  未解析の既知の入力および対応する未解析の既知の出力を含む、データ・セットからの次のデータ項目が未解析であるか？
４０８  パラメトリック・モデルについての制約条件を判別
４１０  未解析の既知の入力を初期モデルに基づいて解析して、予測される出力を決定
４１２  予測された出力が対応する未解析の既知の出力にマッチするか？
４１４  予測された出力と対応する未解析の既知の出力との間の誤り率を決定
４１６  誤り率が閾値を超えるか？
４１８  初期モデルが次のデータ項目に当てはまるよう一般化できるか？
４２０  次のデータ項目に基づいて新たなモデルを選択
４２２  次のデータ項目に基づいて新たなモデルのために新たなパラメータを生成
４２４  初期モデルに関連付けられたモデル・パラメータを、未解析の既知の入力および対応する未解析の既知の出力を組み込むよう更新
５０２  反復数を1に設定
５０４  目標への近接性に基づいて近傍データ項目を識別。各近傍データ項目は近傍入力および対応する近傍出力を含む
５０６  諸近傍データ項目についての諸近傍入力を平均することに基づいて、新たな入力を決定
５０８  新たな入力に基づいて対応する新たな出力を決定
５１０  対応する新たな出力が目標制約条件を満たすか？
５１２  新たな入力および新たな出力を受け入れ
５１４  反復数が閾値を超えているか？
５１６  停止
５１８  新たな入力および対応する新たな出力をデータ・セットに加え、反復数を1増すことによってデータ・セットを更新
【図１】
2016152048.tif 000016
【図２】
2016152048.tif 000017
【図３】
2016152048.tif 000018
【図４Ａ】
2016152048.tif 000019
【図４Ｂ】
2016152048.tif 000020
【図５】
2016152048.tif 000021