(57)【特許請求の範囲】
【請求項１】
教育的環境にあるときに、クライアント・アプリケーションから受け取られ複数の文脈メタデータを有する複数のストリング・クエリの部分集合を有効に処理するように、ストリング分析モジュールの動的ストリング分析ハンドラを訓練するステップであって、前記動的ストリング分析ハンドラは訓練モードで動作しており、前記動的ストリング分析ハンドラの有効性は前記クライアント・アプリケーションからのフィードバックに基づき、前記ストリング・クエリの部分集合は、動作環境における前記クライアント・アプリケーションによって生成されると予想されるストリング・クエリの範囲を表す、ステップと、
前記訓練が完了すると、前記クライアント・アプリケーションに対するストリング分析アルゴリズム選択ポリシーを合成するステップであって、前記ストリング分析アルゴリズム選択ポリシーは、訓練中に前記ストリング・クエリの部分集合を処理しているときの前記動的ストリング分析ハンドラとクライアント・アプリケーションとの対話に基づいており、前記ストリング分析アルゴリズム選択ポリシーは、前記部分集合内のストリング・クエリの文脈をストリング分析アルゴリズムの使用に対して関係付ける、ステップと、
前記動作環境にあるときに、前記クライアント・アプリケーションから受け取られ前記複数の文脈メタデータを有する前記複数のストリング・クエリを、前記動的ストリング分析ハンドラによって、前記ストリング分析アルゴリズム選択ポリシーに従って動的に処理するステップであって、前記動的ストリング分析ハンドラは生成モードで動作しており、ストリング・クエリに対して用いられる前記ストリング分析アルゴリズムは動的かつ独立的に決定される、ステップと
を含む、方法。
【請求項２】
前記教育的環境において前記動的ストリング分析ハンドラを訓練するステップはさらに、
前記クライアント・アプリケーションからクエリ要求を受け取るステップであって、前記クエリ要求は前記部分集合の前記ストリング・クエリと、前記部分集合の前記ストリング・クエリに関連する前記複数の文脈メタデータとを含む、ステップと、
前記ストリング分析モジュールによる使用のために利用可能な複数のストリング分析アルゴリズムの中から、前記受け取られたクエリ要求に最善の対処をするストリング分析アルゴリズムを選択するステップであって、前記選択はヒューリスティック戦略を用いる、ステップと、
前記部分集合の前記ストリング・クエリに対して前記選択されたストリング分析アルゴリズムを実行するステップと、
前記選択されたストリング分析アルゴリズムの前記実行の結果を前記クライアント・アプリケーションに搬送するステップと、
前記実行されたストリング分析アルゴリズムの前記結果に対して前記クライアント・アプリケーションから選択スコアを有する選択フィードバックを受け取るステップであって、前記選択スコアは前記選択されたストリング分析アルゴリズムの前記有効性を数量的に表現するものである、ステップと、
前記受け取られた選択フィードバックが前記ストリング分析アルゴリズムの不満足な選択を示すときに、前記部分集合の前記ストリング・クエリと、前記部分集合の前記ストリング・クエリに関連する前記複数の文脈メタデータと、前記ヒューリスティック戦略に影響する複数の選択規則とのうちの少なくとも１つに関して前記ヒューリスティック戦略を自動的に修正するステップと
を含む、請求項１に記載の方法。
【請求項３】
前記ストリング分析アルゴリズムを選択するステップはさらに、
前記部分集合の前記ストリング・クエリに関連する前記複数の文脈メタデータを分析するステップと、
前記複数の文脈メタデータの前記分析および前記部分集合の前記ストリング・クエリの少なくとも一方に対して適用可能な少なくとも１つのストリング分析アルゴリズムを前記複数のストリング分析アルゴリズムの中から識別するステップと、
複数のストリング分析アルゴリズムが識別されると、前記ヒューリスティック戦略によって定められるとおりに前記受け取られたクエリ要求に対処するための有効性によって前記複数のストリング分析アルゴリズムを順序付けるステップであって、最高の有効性を有するとして順序付けられた前記ストリング分析アルゴリズムが、前記部分集合の前記ストリング・クエリに最善の対処をするものとみなされる、ステップと
を含む、請求項２に記載の方法。
【請求項４】
前記複数のストリング分析アルゴリズムを順序付けるステップはさらに、
前記分析された複数の文脈メタデータに関して前記複数のストリング分析アルゴリズムに重み付け値を適用するステップを含み、重み付け値は対応する前記ストリング分析アルゴリズムの前記有効性に対する調整を表す、請求項３に記載の方法。
【請求項５】
前記重み付け値は、異なる文脈における前記複数のストリング分析アルゴリズムの使用に対するユーザが構成した優先度を表す、請求項４に記載の方法。
【請求項６】
前記選択スコアは、前記選択されたストリング分析アルゴリズムの前記有効性を評価するために用いられる複数のメトリクスの頂点を表す予め定義された式を用いて算出される、請求項２に記載の方法。
【請求項７】
前記動作環境において前記複数のストリング・クエリを前記動的に処理するステップはさらに、
前記クライアント・アプリケーションからクエリ要求を受け取るステップであって、前記クエリ要求は、前記複数のストリング・クエリからのストリング・クエリと、前記ストリング・クエリに関連する前記複数の文脈メタデータとを含む、ステップと、
前記ストリング・クエリの前記複数の文脈メタデータを評価するステップと、
前記ストリング分析アルゴリズム選択ポリシーを用いて、前記ストリング・クエリに最善の対処をする前記ストリング分析アルゴリズムを動的に選択するステップと、
前記動的に選択されたストリング分析アルゴリズムを前記ストリング・クエリに対して実行するステップと、
前記動的に選択されたストリング分析アルゴリズムの前記実行の結果を前記クライアント・アプリケーションに搬送するステップと
を含む、請求項２に記載の方法。
【請求項８】
前記受け取られたストリング・クエリが前記ストリング分析アルゴリズム選択ポリシーによって対処されないとき、前記ストリング分析アルゴリズムの前記動的選択はさらに、
前記ストリング分析アルゴリズム選択ポリシーによって対処されない前記ストリング・クエリに関連する前記複数の文脈メタデータを分析するステップと、
前記複数の文脈メタデータの前記分析および前記ストリング・クエリの少なくとも一方に対して適用可能な少なくとも１つのストリング分析アルゴリズムを前記複数のストリング分析アルゴリズムの中から識別するステップと、
前記識別された少なくとも１つのストリング分析アルゴリズムの中から、前記ストリング・クエリに最善の対処をする前記ストリング分析アルゴリズムを、前記ヒューリスティック戦略を用いて決定するステップと、
前記ストリング・クエリおよび前記決定されたストリング分析アルゴリズムに対するデータを含むように前記ストリング分析アルゴリズム選択ポリシーを更新するステップと
を含む、請求項７に記載の方法。
【請求項９】
システムであって、
ストリング・クエリおよび前記ストリング・クエリに関する複数の文脈メタデータを含むクエリ要求を発行するように構成されたクライアント・アプリケーションであって、前記ストリング・クエリはストリング分析を必要とする、クライアント・アプリケーションと、
発行されたクエリ要求に応答して前記ストリング分析の結果を前記クライアント・アプリケーションに提供するように構成されたストリング分析モジュールとを含み、前記ストリング分析モジュールはさらに、
異なるストリング分析技術を表す複数のストリング分析アルゴリズムと、
訓練モードにあるときに、ヒューリスティック戦略を用いて、教育的環境における前記クライアント・アプリケーションとの対話に基づいてストリング分析アルゴリズム選択ポリシーを合成するように構成された動的ストリング分析ハンドラとを含み、対話は少なくとも前記クライアント・アプリケーションからのクエリ要求と、前記動的ストリング分析ハンドラによる前記クエリ要求に対する応答と、前記クライアント・アプリケーションからの前記応答に関する選択フィードバックとを含み、前記対話の前記クエリ要求は、動作環境において前記クライアント・アプリケーションによって生成されると予想されるストリング・クエリの部分集合を用い、前記動的ストリング分析ハンドラはさらに、生成モードにあるときに、前記ストリング分析アルゴリズム選択ポリシーを用いて前記複数のストリング分析アルゴリズムの中からストリング分析アルゴリズムを動的に選択することによって、動作環境において前記クライアント・アプリケーションによって発行されたクエリ要求に対する応答を提供するように構成される、システム。
【請求項１０】
前記教育的環境にあるとき、前記クライアント・アプリケーションはさらに、
前記動的ストリング分析ハンドラへの前記選択フィードバックのための選択スコアを定めるように構成された選択スコア計算器を含み、前記選択スコアは前記対話に対して選択された前記ストリング分析アルゴリズムの有効性を数量的に表すものであり、前記選択スコアは前記クライアント・アプリケーションによって測定可能な複数のメトリクスの頂点を表す予め定義された式を用いて算出される、請求項９に記載のシステム。
【請求項１１】
前記動的ストリング分析ハンドラはさらに、
前記動的ストリング分析ハンドラによる前記ストリング分析アルゴリズムの前記動的選択に対する調整を定義する複数の選択規則と、
前記動的ストリング分析ハンドラの前記ヒューリスティック戦略を用いて前記ストリング分析アルゴリズムを選択するように構成されたヒューリスティック選択プロセッサとを含み、前記ヒューリスティック選択プロセッサによる前記ストリング分析アルゴリズムの前記選択は、前記ストリング・クエリに関連する前記複数の文脈メタデータと前記複数の選択規則とを用いる、請求項９に記載のシステム。
【請求項１２】
前記教育的環境にあるとき、前記システムはさらに、
前記ストリング分析アルゴリズムの許容できる選択に対する最小値を定義する選択フィードバック閾値を含み、前記選択フィードバック閾値を満たさないときは、結果として前記ヒューリスティック選択プロセッサ、前記複数の選択規則、および前記ストリング分析アルゴリズム選択ポリシーのうちの少なくとも１つに対する少なくとも１つの修正が行われる、請求項１１に記載のシステム。
【請求項１３】
前記複数の選択規則の少なくとも１つはユーザによって構成可能であり、前記ユーザによる構成は、異なる文脈における前記複数のストリング分析アルゴリズムの使用に対する優先度を表す、請求項１１に記載のシステム。
【請求項１４】
前記クライアント・アプリケーションは複数のソフトウェア・アプリケーションを表し、前記ストリング分析アルゴリズム選択ポリシーは前記複数のソフトウェア・アプリケーションに対して用いられ得る、請求項９に記載のシステム。
【請求項１５】
前記複数の文脈メタデータは、少なくとも前記ストリング・クエリを生じるソフトウェア・コードの複雑度のレベルを記述するパラメータと、前記ストリング・クエリに対して典型的に用いられるストリング分析のタイプと、前記ストリング・クエリを生じる前記ソフトウェア・コードの性能タイプとを含む、請求項９に記載のシステム。
【請求項１６】
請求項１〜８の何れか１項に記載の方法の各ステップをコンピュータに実行させる、コンピュータ・プログラム。
【請求項１７】
請求項１６記載の前記コンピュータ・プログラムをコンピュータ可読記録媒体に記録した、記録媒体。
【請求項１８】
請求項１〜８の何れか１項に記載の方法の各ステップをコンピュータ・ハードウェアによる手段として構成した、コンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア分析の分野に関する。
【背景技術】
【０００２】
ストリング分析は、ソフトウェア・アプリケーションの演算によって生成されたストリング変数の内容を推論および分析するために用いられる技術である。ストリング分析は、ウェブ・アプリケーションのクロスサイト・スクリプティング（ｃｒｏｓｓ−ｓｉｔｅ  ｓｃｒｉｐｔｉｎｇ：ＸＳＳ）脆弱性またはアクセス制御ポリシー違反など、ソフトウェア・アプリケーションのセキュリティ脆弱性を検出したり評価したりするために用いられる、特に有益なツールである。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本発明の目的は、ストリング分析アルゴリズムを動的に選択するための方法を提供することである。
【課題を解決するための手段】
【０００４】
本発明の一局面は、ストリング分析アルゴリズムを動的に選択するための方法を含んでもよい。教育的環境にあるときに、クライアント・アプリケーションから受け取られ文脈メタデータを有するストリング・クエリの部分集合を有効に処理するように、ストリング分析モジュールの動的ストリング分析ハンドラが訓練されてもよい。動的ストリング分析ハンドラは訓練モードで動作していてもよく、動的ストリング分析ハンドラの有効性はクライアント・アプリケーションからのフィードバックに基づいていてもよい。ストリング・クエリの部分集合は、動作環境におけるクライアント・アプリケーションによって生成されると予想されるストリング・クエリの範囲を表してもよい。訓練が完了すると、クライアント・アプリケーションに対するストリング分析アルゴリズム選択ポリシーが合成されてもよい。ストリング分析アルゴリズム選択ポリシーは、訓練中にストリング・クエリの部分集合を処理しているときの動的ストリング分析ハンドラとクライアント・アプリケーションとの対話に基づいていてもよい。ストリング分析アルゴリズム選択ポリシーは、部分集合内のストリング・クエリの文脈を、ストリング分析アルゴリズムの使用に対して関係付けてもよい。動作環境にあるとき、動的ストリング分析ハンドラは、クライアント・アプリケーションから受け取られ文脈メタデータを有するストリング・クエリを、ストリング分析アルゴリズム選択ポリシーに従って動的に処理してもよい。動的ストリング分析ハンドラは生成モードで動作していてもよい。ストリング・クエリに対して用いられるストリング分析アルゴリズムは、動的かつ独立的に決定されてもよい。
【０００５】
本発明の別の局面は、ストリング分析アルゴリズムを動的に選択するためのシステムを含んでもよい。こうしたシステムは、クライアント・アプリケーションおよびストリング分析モジュールを含んでもよい。クライアント・アプリケーションは、ストリング分析を必要とするストリング・クエリと、関連する文脈メタデータとを含むクエリ要求を発行するように構成されてもよい。ストリング分析モジュールは、発行されたクエリ要求に応答してストリング分析の結果をクライアント・アプリケーションに提供するように構成されてもよい。ストリング分析モジュールは、ストリング分析アルゴリズムと、動的ストリング分析ハンドラとをさらに含んでもよい。ストリング分析アルゴリズムは、異なるストリング分析技術を表してもよい。動的ストリング分析ハンドラは、訓練モードにあるときにヒューリスティック戦略を用いて、教育的環境におけるクライアント・アプリケーションとの対話に基づいてストリング分析アルゴリズム選択ポリシーを合成するように構成されてもよい。対話は、クライアント・アプリケーションからのクエリ要求と、動的ストリング分析ハンドラによるクエリ要求への応答と、その応答に関するクライアント・アプリケーションからの選択フィードバックとを含んでもよい。対話のクエリ要求は、動作環境においてクライアント・アプリケーションによって生成されると予想されるストリング・クエリの部分集合を用いてもよい。生成モードにあるとき、動的ストリング分析ハンドラはストリング分析アルゴリズム選択ポリシーを用いてストリング分析アルゴリズムを動的に選択することによって、動作環境におけるクライアント・アプリケーションによって発行されたクエリ要求への応答を提供してもよい。
【０００６】
本発明のさらに別の局面は、埋込まれたコンピュータ使用可能プログラム・コードを有するコンピュータ読取り可能記憶媒体を含むコンピュータ・プログラム製品を含んでもよい。コンピュータ使用可能プログラム・コードは、訓練モードで動作しているときに、教育的環境におけるクライアント・アプリケーションから受け取られ文脈メタデータを有するストリング・クエリの部分集合を処理するように構成されてもよい。ストリング・クエリの部分集合の処理の有効性は、クライアント・アプリケーションからのフィードバックに基づいていてもよい。ストリング・クエリの部分集合は、動作環境におけるクライアント・アプリケーションによって生成されると予想されるストリング・クエリの範囲を表してもよい。コンピュータ使用可能プログラム・コードは、ストリング・クエリの部分集合の処理が完了すると、クライアント・アプリケーションに対するストリング分析アルゴリズム選択ポリシーを合成するように構成されてもよい。ストリング分析アルゴリズム選択ポリシーは、訓練モードにあるときのストリング・クエリの部分集合の処理に基づいていてもよい。ストリング分析アルゴリズム選択ポリシーは、部分集合内のストリング・クエリの文脈を、ストリング分析アルゴリズムの使用に対して関係付けてもよい。コンピュータ使用可能プログラム・コードは、生成モードで動作しているときに、動作環境におけるクライアント・アプリケーションから受け取られ文脈メタデータを有するストリング・クエリを、ストリング分析アルゴリズム選択ポリシーに従って動的に処理するように構成されてもよい。ストリング・クエリに対して用いられるストリング分析アルゴリズムは、動的かつ独立的に決定されてもよい。
【図面の簡単な説明】
【０００７】
【図１】（先行技術）クライアント・アプリケーションのストリング・クエリに対するストリング分析アルゴリズム選択の現行の処理を示す機能図である。
【図２】本明細書に開示される本発明の配置の実施形態に従う、クライアント・アプリケーションから受け取ったストリング・クエリの複雑度と釣り合ったストリング分析アルゴリズムを動的に選択するシステムを示す高レベル機能図である。
【図３】本明細書に開示される本発明の配置の実施形態に従う、ストリング・クエリに対処するためにストリング分析アルゴリズムを動的に選択するストリング分析モジュールの一般的な動作を説明する方法の流れ図である。
【図４】本明細書に開示される本発明の配置の実施形態に従う、ストリング分析アルゴリズムの動的なポリシーに基づく選択のためのストリング分析モジュールの動的ストリング分析ハンドラの使用を示す、教育的環境におけるシステムと動作環境におけるシステムとの集合的概略図である。
【図５】本明細書に開示される本発明の配置の実施形態に従う、教育的環境における動的ストリング分析ハンドラの訓練を詳述する方法の流れ図である。
【図６】本明細書に開示される本発明の配置の実施形態に従う、動作環境における動的ストリング分析ハンドラの動作を詳述する方法の流れ図である。
【発明を実施するための形態】
【０００８】
ストリング分析機能を提供するときのほとんどのソフトウェア・ツールの典型的アプローチが、図１のシステム１００によって示される。コンピュータ・デバイス１１０において実行されるクライアント・アプリケーション１１５は、サーバ１２５において実行されるプログラム分析アプリケーション１３０にさまざまなストリング・クエリ１２０を発行する。クライアント・アプリケーション１１５のストリング・クエリ１２０に対する複雑度のレベルは可変であるにもかかわらず、プログラム分析アプリケーション１３０のストリング分析モジュール１３５はすべてのストリング・クエリ１２０に対して同じストリング分析アルゴリズム１４０を用いて応答し、そのストリング分析アルゴリズム１４０は典型的に、クライアント・アプリケーション１１５の最も複雑なストリング・クエリ１２０を処理できるように選択される。
【０００９】
これによって、プログラム分析アプリケーション１３０が、クライアント・アプリケーション１１５から受け取ったストリング・クエリ１２０を有効に分析するために必要とされるよりも高い複雑度を有するストリング分析アルゴリズム１４０を用いる場合が起こる。つまり、複雑度がより低いストリング・クエリ１２０に対して複雑度がより高いストリング分析アルゴリズム１４０が実行されることとなり、これはリソースの点からコストがかかり、かつ分析の結果を不明瞭にする（すなわち誤検出／検出漏れを生じる）おそれがある。システム１００の不利益は、本明細書に示される本発明の詳細を発見する起点において発明者らにより発見もしくは特定、またはその両方が行われた。本発明の詳細はシステム１００の認識された欠点を克服するものである。
【００１０】
本開示は、ヒューリスティックに生成されたポリシーを用いてクライアント・クエリに対するストリング分析アルゴリズムを動的に選択するための解決策を提供する。ストリング分析モジュールの動的ストリング分析ハンドラは、教育的設定においてクライアント・クエリの部分集合に対して訓練され得る。動的ストリング分析ハンドラは、クライアント・アプリケーションからのフィードバックと組み合わされたヒューリスティック戦略を用いて、クライアント・アプリケーションに対するストリング分析アルゴリズム選択ポリシーを合成してもよい。次いで、動作環境において動的ストリング分析ハンドラおよびストリング分析アルゴリズム選択ポリシーを用いて、受け取られたクライアント・クエリに対するストリング分析アルゴリズムを動的に選択および実行してもよい。
【００１１】
当業者に認識されるとおり、本発明の局面はシステム、方法またはコンピュータ・プログラム製品として具現化されてもよい。したがって本発明の局面は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、またはソフトウェアおよびハードウェアの局面を組み合わせた実施形態の形を取ってもよく、本明細書においてこれらはすべて一般的に「回路」、「モジュール」または「システム」と呼ばれることがある。さらに、本発明の局面は、コンピュータ読取り可能プログラム・コードが具現化されている１つまたはそれ以上のコンピュータ読取り可能媒体（単数または複数）において具現化されるコンピュータ・プログラム製品の形を取ってもよい。
【００１２】
１つまたはそれ以上のコンピュータ読取り可能媒体（単数または複数）のあらゆる組み合わせが用いられてもよい。コンピュータ読取り可能媒体は、コンピュータ読取り可能信号媒体またはコンピュータ読取り可能記憶媒体であってもよい。コンピュータ読取り可能記憶媒体は、たとえば電子、磁気、光学、電磁気、赤外、または半導体のシステム、装置、デバイス、または前述のもののあらゆる好適な組み合わせなどであってもよいがそれに限定されない。コンピュータ読取り可能記憶媒体のより特定的な例（非網羅的なリスト）は以下を含む。すなわち、１つまたはそれ以上のワイヤを有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ：ＲＡＭ）、リード・オンリ・メモリ（ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ：ＲＯＭ）、消去可能プログラマブル・リード・オンリ・メモリ（ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）（ＥＰＲＯＭまたはフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク・リード・オンリ・メモリ（ｃｏｍｐａｃｔ  ｄｉｓｃ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ：ＣＤ−ＲＯＭ）、光学記憶装置、磁気記憶装置、または前述のもののあらゆる好適な組み合わせである。本文書の状況において、コンピュータ読取り可能記憶媒体は、命令実行システム、装置またはデバイスによる使用、またはそれに関連する使用のためのプログラムを含有または保存し得るあらゆる有形の媒体であってもよい。
【００１３】
コンピュータ読取り可能信号媒体は、たとえばベースバンド内で、または搬送波の部分などとして媒体内で具現化されるコンピュータ読取り可能プログラム・コードを有する伝播データ信号を含んでもよい。こうした伝播信号は、電磁気信号、光学信号、またはそのあらゆる好適な組み合わせを含むがそれに限定されないさまざまな形のいずれかを取ってもよい。コンピュータ読取り可能信号媒体は、コンピュータ読取り可能記憶媒体ではなく、かつ命令実行システム、装置またはデバイスによる使用、またはそれに関連する使用のためのプログラムを通信、伝播または移送できるあらゆるコンピュータ読取り可能媒体であってもよい。
【００１４】
コンピュータ読取り可能媒体において具現化されるプログラム・コードは、ワイヤレス、ワイヤライン、光ファイバ・ケーブル、ＲＦなど、または前述のもののあらゆる好適な組み合わせを含むがそれに限定されないあらゆる適切な媒体を用いて送信されてもよい。本発明の局面のための動作を行うためのコンピュータ・プログラム・コードは、オブジェクト指向プログラミング言語、たとえばＪａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋など、および従来の手続き型プログラミング言語、たとえば「Ｃ」プログラミング言語または類似のプログラミング言語などを含む、１つまたはそれ以上のプログラミング言語のあらゆる組み合わせで書かれていてもよい。プログラム・コードは、すべてがユーザのコンピュータで実行されてもよいし、スタンド・アロン・ソフトウェア・パッケージとして部分的にユーザのコンピュータで実行されてもよいし、一部がユーザのコンピュータで、一部がリモート・コンピュータで実行されてもよいし、すべてがリモート・コンピュータまたはサーバで実行されてもよい。後者のシナリオにおいて、リモート・コンピュータは、ローカル・エリア・ネットワーク（ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ：ＬＡＮ）または広域ネットワーク（ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ：ＷＡＮ）を含むあらゆるタイプのネットワークを通じてユーザのコンピュータに接続されてもよいし、（たとえば、インターネット・サービス・プロバイダを用いてインターネットを通じて）外部コンピュータへの接続が行われてもよい。
【００１５】
本発明の実施形態に従う方法、装置（システム）およびコンピュータ・プログラム製品の流れ図もしくはブロック図またはその両方を参照して、本発明の局面を以下に説明する。流れ図もしくはブロック図またはその両方の各ブロック、および流れ図もしくはブロック図またはその両方におけるブロックの組み合わせは、コンピュータ・プログラム命令によって実現され得ることが理解されるだろう。これらのコンピュータ・プログラム命令が、汎用コンピュータもしくは特定目的のコンピュータのプロセッサ、またはマシンを生成するためのその他のプログラマブル・データ処理装置に与えられることによって、そのコンピュータのプロセッサまたはその他のプログラマブル・データ処理装置を介して実行された命令が、流れ図もしくはブロック図またはその両方の単数または複数のブロックにおいて指定された機能／動作を実現するための手段を作成するようにしてもよい。
【００１６】
これらのコンピュータ・プログラム命令は、コンピュータ、その他のプログラマブル・データ処理装置またはその他のデバイスに特定の態様で機能するよう指示できるコンピュータ読取り可能媒体の中に保存されることによって、コンピュータ読取り可能媒体に保存された命令が、流れ図もしくはブロック図またはその両方の単数または複数のブロックにおいて指定された機能／動作を実現する命令を含む製造品を生成するようにしてもよい。
【００１７】
さらに、コンピュータ・プログラム命令は、コンピュータ、その他のプログラマブル・データ処理装置またはその他のデバイスにロードされて、そのコンピュータ、その他のプログラマブル装置またはその他のデバイスにおいて一連の動作ステップを行わせることにより、コンピュータまたはその他のプログラマブル装置において実行された命令が、流れ図もしくはブロック図またはその両方の単数または複数のブロックにおいて指定された機能／動作を実現するためのプロセスを提供するような、コンピュータに実現されるプロセスを生成してもよい。
【００１８】
図２は、本明細書に開示される本発明の配置の実施形態に従う、クライアント・アプリケーション２１５から受け取ったストリング・クエリ２２０の複雑度と釣り合ったストリング分析アルゴリズム２４５を動的に選択するシステム２００を示す高レベル機能図である。システム２００において、クライアント・アプリケーション２１５はコンピュータ・デバイス２１０において動作し、サーバ２２５において実行されるプログラム分析アプリケーション２３０にストリング・クエリ２２０を発行してもよい。
【００１９】
しかしながら、システム１００のプログラム分析アプリケーション１３０とは異なり、システム２００のプログラム分析アプリケーション２３０は、適切なレベルの複雑度を有するストリング分析アルゴリズム２４５によって各ストリング・クエリ２２０に対処できる。このことはシステム２００において、コンピュータ・デバイス２１０とサーバ２２５との間の異なる色のやり取りによって示され得る。
【００２０】
この例に示されるとおり、プログラム分析アプリケーション２３０は、低レベルの複雑度を表す白色のストリング分析アルゴリズム２４５を対応する白色のストリング・クエリ２２０に用い、灰色の中程度の複雑度のストリング分析アルゴリズム２４５を灰色のストリング・クエリ２２０に用い、黒色のより複雑なストリング分析アルゴリズム２４５を黒色のストリング・クエリ２２０に用いることができる。
【００２１】
なお、これは例示の目的のための単純な例であり、特定のストリング・クエリ２２０に用いるための特定のストリング分析アルゴリズム２４５の決定の結果として、より低い複雑度のストリング・クエリ２２０に対してより高レベルの複雑度のストリング分析アルゴリズム２４５が用いられることもあり得る。こうした詳細については後の図面において考察され得る。
【００２２】
こうした柔軟性を達成するために、プログラム分析アプリケーション２３０は、クライアント・アプリケーション２１５に対する特定的なストリング分析アルゴリズム選択ポリシー２４０を用いてストリング分析アルゴリズム２４５を動的に選択するように構成されたストリング分析モジュール２３５を用いてもよい。ストリング分析アルゴリズム選択ポリシー２４０は、クライアント・アプリケーション２１５からのストリング・クエリ２２０をストリング分析モジュール２３５がどのように処理するかを定めることができる。
【００２３】
よってストリング分析モジュール２３５は、ストリング・クエリ２２０もしくはクライアント・アプリケーション２１５またはその両方の要求に最善の対処をするストリング分析アルゴリズム２４５によって、受け取られたストリング・クエリ２２０の各々を処理できる。
【００２４】
図３は、本明細書に開示される本発明の配置の実施形態に従う、ストリング・クエリに対処するためにストリング分析アルゴリズムを動的に選択するストリング分析モジュールの一般的な動作を説明する方法３００の流れ図である。
【００２５】
方法３００はステップ３０５から始まってもよく、ここでは教育的環境においてストリング分析モジュールが、クライアント・アプリケーションからのストリング分析を必要とするストリング・クエリの部分集合をどのように処理するかをヒューリスティックに決定してもよい。この部分集合に含まれるストリング・クエリは、クライアント・アプリケーションから予想される複雑度の範囲を表していてもよい。
【００２６】
教育的環境は、プログラム分析アプリケーションもしくはクライアント・アプリケーションまたはその両方に悪影響をもたらすことなく、ストリング分析モジュールの動作のモニタもしくは修正またはその両方を行い得るような計算環境であってもよい。たとえば、教育的環境はソフトウェア開発環境または２次生産環境であってもよい。
【００２７】
次いでステップ３１０において、ヒューリスティックな決定からクライアント・アプリケーションに対するストリング分析アルゴリズム選択ポリシーが合成されてもよい。ステップ３０５および３１０はストリング分析モジュールの訓練モードを表していてもよく、ここではストリング分析モジュールがクライアント・アプリケーションのストリング・クエリに対してどのように最善の対処をするかを学習できる。
【００２８】
ステップ３０５および３１０が完了すると、ステップ３１５においてストリング分析モジュールは動作環境に置かれてもよく、ここでストリング分析モジュールはクライアント・アプリケーションからストリング・クエリを受け取ってもよい。ステップ３１５において受け取られるストリング・クエリは、ステップ３０５において用いられる部分集合のものおよびその他のものを含んでもよい。
【００２９】
ステップ３２０において、ストリング分析アルゴリズム選択ポリシーを用いて各ストリング・クエリに対するストリング分析アルゴリズムが動的に選択されてもよい。次いで、ステップ３２５においてこの動的に選択されたストリング分析アルゴリズムが実行されてもよく、ステップ３３０においてその結果がクライアント・アプリケーションに戻される。
【００３０】
なお、ストリング分析アルゴリズム選択ポリシーはそのクライアント・アプリケーションに対する特定のものであってもよい。すなわち、ＪＡＶＡ（Ｒ）クライアント・アプリケーションに対して合成されたストリング分析アルゴリズム選択ポリシーは、ＰＨＰクライアント・アプリケーションからのストリング・クエリを処理するために用いられるときには適切に機能しないかもしれない。同様に、銀行クライアント・アプリケーションを処理するために生成されたストリング分析アルゴリズム選択ポリシーは、コンピュータ・セキュリティ・クライアント・アプリケーションからのストリング・クエリを処理することはできないかもしれない。したがって、異なるタイプのクライアント・アプリケーションに対してステップ３０５および３１０が繰り返されてもよく、さらに特定のクライアント・アプリケーションに対して用いる適切なストリング分析アルゴリズム選択ポリシーを選択するステップを行うためにステップ３２０が拡張されてもよい。
【００３１】
図４は、本明細書に開示される本発明の配置の実施形態に従う、ストリング分析アルゴリズム４３８の動的なポリシーに基づく選択のためのストリング分析モジュール４３０の動的ストリング分析ハンドラ４３２の使用を示す、教育的環境におけるシステム４０５と動作環境におけるシステム４５５との概略図の集合４００である。集合４００のシステム４０５および４５５は、方法３００のステップを行い得るか、もしくは機能図２００の特定の実施形態を表し得るか、またはその両方である。
【００３２】
システム４０５の構成要素は、教育的環境において動作できる。前に考察したとおり、教育的環境は、プログラム分析アプリケーション４２５もしくはクライアント・アプリケーション４１２またはその両方に悪影響をもたらすことなく、ストリング分析モジュール４３０の動作のモニタもしくは修正またはその両方を行い得るような計算環境であってもよい。
【００３３】
システム４０５において、クライアント・アプリケーション４１２はコンピュータ・デバイス４１０から動作でき、コンピュータ・デバイス４１０はネットワーク４５０を通じてプログラム分析アプリケーション４２５をホスティングしているサーバ４２０と通信できる。コンピュータ・デバイス４１０は、クライアント・アプリケーション４１２の動作およびネットワーク４５０通信を支援し得るさまざまな電子デバイスを表してもよい。
【００３４】
クライアント・アプリケーション４１２は特定のソフトウェア・プログラムを表してもよいし、一般的なタイプのソフトウェア・プログラム（すなわちＪＡＶＡ（Ｒ）で書かれたウェブ・アプリケーションに対するベースライン）を表すソフトウェア・プログラムであってもよい。クライアント・アプリケーション４１２は、ストリング・クエリ部分集合４１３の内容をクエリ要求４１５としてプログラム分析アプリケーション４２５に送るように構成されてもよい。
【００３５】
クライアント・アプリケーション４１２はさらに、クエリ要求４１５内のストリング・クエリ４１３に対する文脈メタデータ４１７を供給するように構成されてもよい。文脈メタデータ４１７は、ストリング・クエリ４１３が発行された文脈に関する情報を提供するために用いられてもよい。加えて文脈メタデータ４１７は、選択されたストリング分析アルゴリズム４３８が満たすべき性能パラメータも示してもよい。
【００３６】
文脈メタデータ４１７として供給され得る情報の例は、発行の複雑度（例、循環的複雑度）を測るメトリクス、ストリング・クエリ４１３に対して典型的に行われるストリング分析のタイプ、再帰的発行のインジケータ、ストリング分析に対して許される時間の長さ、結果に対して要求される精度などを含んでもよいがそれに限定されない。
【００３７】
プログラム分析アプリケーション４２５は、クライアント・アプリケーション４１２を分析するために用いられるソフトウェア・プログラムを表してもよい。プログラム分析アプリケーション４２５は、より大きなソフトウェア・アプリケーションの構成要素であってもよい。さらに、プログラム分析アプリケーション４２５は、たとえば（本例において示される）クライアント−サーバまたはサービス指向アーキテクチャ（ｓｅｒｖｉｃｅ−ｏｒｉｅｎｔｅｄ  ａｒｃｈｉｔｅｃｔｕｒｅ：ＳＯＡ）などのさまざまなアーキテクチャにおいてクライアント・アプリケーション４１２と対話するように構成されてもよい。
【００３８】
システム４０５に示されるとおり、プログラム分析アプリケーション４２５は、データ記憶装置４４０を有するサーバ４２０上で動作してもよい。サーバ４２０は、プログラム分析アプリケーション４２５の動作を支援するために必要なハードウェア構成要素もしくはソフトウェア構成要素またはその両方を表してもよい。プログラム分析アプリケーション４２５が受け取るクエリ要求４１５は、ストリング分析モジュール４３０によって処理されてもよい。
【００３９】
ストリング分析モジュール４３０は、ストリング分析を行うように構成されたプログラム分析アプリケーション４２５のソフトウェア構成要素を表してもよい。従来の実施とは異なり、システム４０５のストリング分析モジュール４３０は動的ストリング分析ハンドラ４３２と、選択規則４３６と、複数のストリング分析アルゴリズム４３８とを含んでもよい。
【００４０】
教育的環境において、動的ストリング分析ハンドラ４３２は、クライアント・アプリケーション４１２のストリング・クエリ部分集合４１３を処理するように訓練される、ストリング分析モジュール４３０の構成要素であってもよい。動的ストリング分析ハンドラ４３２の訓練は、ヒューリスティック選択プロセッサ４３４によって具現化され得るヒューリスティック戦略を用いてもよい。
【００４１】
ヒューリスティック選択プロセッサ４３４は、その固有のヒューリスティック戦略を選択規則４３６とともに用いて、受け取ったストリング・クエリ４１３の文脈メタデータ４１７に基づいてどのストリング分析アルゴリズム４３８が用いられるべきかを定めてもよい。選択規則４３６は、ストリング分析もしくはストリング・クエリ４１３またはその両方に関する基本的な規則もしくは要件またはその両方を表してもよい。
【００４２】
たとえば、コンピュータ・セキュリティ分析クライアント・アプリケーション４１２に対する選択規則４３６は、ダウングレーダ（ｄｏｗｎｇｒａｄｅｒ）の正確さを確認するために単項２次論理に基づくストリング分析アルゴリズム４３８が用いられるべきであることを示してもよく、一方で虚偽のクロスサイト・スクリプティング（ＸＳＳ）報告の排除には、それぞれ効率性または正確さのいずれが要求されるかに依存して、正規表現としてのストリングの抽象化に基づくストリング分析アルゴリズムか、またはストリングの文脈自由言語表現を用いるストリング分析アルゴリズムが用いられてもよいことを示してもよい。
【００４３】
さらに、選択規則４３６のいくつかはユーザが構成可能であると指示されることによって、ストリング分析アルゴリズム４３８がどのように選択されるかをプログラム分析アプリケーション４２５のユーザまたは管理者が調整できるようにしてもよい。
【００４４】
ヒューリスティックな学習は、行われた決定の評価に依拠するため、クライアント・アプリケーション４１２を実行するコンピュータ・デバイス４１０は、動的ストリング分析ハンドラ４３２に選択フィードバック４４５を提供するための選択スコア計算器４１４とともに構成されてもよい。選択スコア計算器４１４は、クエリ要求４１５に対する動的ストリング分析ハンドラ４３２の応答に対する選択スコア４４７を定める目的で、クライアント・アプリケーション４１２と対話できるソフトウェア・プログラムであってもよい。選択スコア計算器４１４の特定の実施（例、バックグラウンド・サービス、アドオン、プラグインなど）は、コンピュータ・デバイス４１０、クライアント・アプリケーション４１２もしくはプログラム分析アプリケーション４２５、またはその組み合わせの構成に依存してもよい。
【００４５】
選択スコア４４７は、ヒューリスティック選択プロセッサ４３４によって選択されたストリング分析アルゴリズム４３８が、クライアント・アプリケーション４１２にとってどれほど有効であったかを数量化したものであってもよい。選択スコア４４７は、応答時間および精度など、さまざまな数量化可能なメトリック値を用い得る予め定義された式に従って、こうした決定を行ってもよい。
【００４６】
動的ストリング分析ハンドラ４３２は、選択フィードバック４４５に含まれる選択スコア４４７の値に依存して、ヒューリスティック選択プロセッサ４３４によって使用される選択プロセスを調整してもよい。たとえば、動的ストリング分析ハンドラ４３２は、クエリ要求４１５の文脈に適用されるときに異なるストリング分析アルゴリズム４３８にヒューリスティック選択プロセッサ４３４が割り当てる重み付け値を調整してもよい。
【００４７】
よって動的ストリング分析ハンドラ４３２は、予め定められた能力レベルまたは終了条件に達するまで、ストリング・クエリ部分集合４１３を処理し続けてもよい。ヒューリスティック選択プロセッサ４３４の訓練が完了すると、動的ストリング分析ハンドラ４３２はストリング分析アルゴリズム選択ポリシー４４２を合成して、そのストリング分析アルゴリズム選択ポリシー４４２を指定されたデータ記憶装置４４０に保存してもよい。
【００４８】
ストリング分析アルゴリズム選択ポリシー４４２は、教育的環境において動的ストリング分析ハンドラ４３２が学習した、クライアント・アプリケーション４１２に対してストリング分析アルゴリズム４３８を選択するための決定プロセスを表してもよい。ストリング分析アルゴリズム選択ポリシー４４２は、動的ストリング分析ハンドラ４３２によって解釈可能なフォーマットであってもよい。
【００４９】
教育的環境において動的ストリング分析ハンドラ４３２の訓練に時間を費やす目的は、システム４５５の動作環境におけるプログラム分析アプリケーション４７５の効率を改善することであってもよい。動作環境とは、ソフトウェア生産環境と類似の、プログラム分析アプリケーション４７５が生データを用いる計算環境であってもよい。
【００５０】
教育的環境と同様に、動作環境はコンピュータ・デバイス４６０上で動作するクライアント・アプリケーション４６２を含んでもよく、コンピュータ・デバイス４６０は、ストリング分析アルゴリズム選択ポリシー４４２を含むデータ記憶装置４８０を有するサーバ４７０にホスティングされたプログラム分析アプリケーション４７５にクエリ要求４６５を送る。コンピュータ・デバイス４６０は、クライアント・アプリケーション４６２の動作の支援およびネットワーク４８５を通じたサーバ４７０との通信が可能な電子デバイスであってもよい。
【００５１】
動作環境において、クライアント・アプリケーション４６２は、生じたストリング・クエリ４６４を何でもその文脈メタデータ４６７（すなわち「生（ｌｉｖｅ）」データ）とともにプログラム分析アプリケーション４７５に送るように構成されてもよい。さらに、動作環境の「生」の性質によって、選択スコア計算器４１４をクライアント・アプリケーション４６２とともに使用することが否定されてもよい。つまり、クライアント・アプリケーション４６２は、ヒューリスティック選択プロセッサ４３４の訓練を支援するための付加的なタスクを行うためではなく、実際の作業のために用いられることが意図されてもよい。
【００５２】
教育的環境と同様に、プログラム分析アプリケーション４７５はクエリ要求４６５をストリング分析モジュール４３０に送り続けてもよい。しかし教育的環境とは異なり、ストリング分析モジュール４３０のヒューリスティック選択プロセッサ４３４は、そのストリング分析アルゴリズム４３８の選択を、クエリ要求４６５の文脈メタデータ４６７もしくは選択規則４３６またはその両方に関するストリング分析アルゴリズム選択ポリシー４４２に基づいて行ってもよい。
【００５３】
別の予期される実施形態において、ヒューリスティック選択プロセッサ４３４は動作環境において無効にされてもよい。こうした実施形態において、動的ストリング分析ハンドラ４３２は、ストリング分析アルゴリズム選択ポリシー４４２に従ってストリング分析アルゴリズム４３８を選択する責を負ってもよい。加えて、ストリング分析アルゴリズム選択ポリシー４４２によって対処されないストリング・クエリ４６４もしくは文脈メタデータ４６７またはその両方を含むクエリ要求４６５を動的ストリング分析ハンドラ４３２が受け取る場合には、動的ストリング分析ハンドラ４３２はヒューリスティック選択プロセッサ４３４を呼び出すことによって選択を処理し、かつストリング分析アルゴリズム選択ポリシー４４２を更新するように構成されてもよい。
【００５４】
ネットワーク４５０および４８５は、搬送波内にコード化されているデータを搬送するために必要なあらゆるハードウェア／ソフトウェア／およびファームウェアを含んでもよい。データはアナログまたはデジタル信号に含まれていてもよく、データ・チャネルまたは音声チャネルを通じて搬送されてもよい。ネットワーク４５０および４８５は、コンピュータ・デバイス構成要素間、および集積デバイス構成要素と周辺デバイスとの間で通信を交換するために必要なローカル構成要素およびデータ経路を含んでもよい。加えてネットワーク４５０および４８５は、たとえばインターネットなどのデータ・ネットワークをともに形成する、たとえばルータ、データ回線、ハブ、および中間サーバなどのネットワーク設備を含んでもよい。加えてネットワーク４５０および４８５は、回路に基づく通信構成要素およびモバイル通信構成要素、たとえば電話スイッチ、モデム、セルラ通信塔などを含んでもよい。ネットワーク４５０および４８５は、回線に基づく通信経路もしくはワイヤレス通信経路またはその両方を含んでもよい。
【００５５】
本明細書において用いられるとき、提示されるデータ記憶装置４４０および４８０は、デジタル情報を保存するように構成された物理的または仮想的な記憶空間であってもよい。データ記憶装置４４０および４８０は、磁気ディスク、光ディスク、半導体メモリ、デジタルでコード化されたプラスチック・メモリ、ホログラフィック・メモリ、またはあらゆるその他の記録媒体を含むがそれに限定されないあらゆるタイプのハードウェアの中で物理的に実現されてもよい。データ記憶装置４４０および４８０はスタンド・アロン記憶装置であってもよいし、複数の物理的デバイスから形成される記憶装置であってもよい。加えて、情報はデータ記憶装置４４０および４８０内にさまざまな態様で保存されてもよい。たとえば、情報はデータベース構造の中に保存されてもよいし、ファイル記憶システムの１つまたはそれ以上のファイルの中に保存されてもよく、ここで各ファイルは情報検索の目的のために索引付けされてもされなくてもよい。さらに、データ記憶装置４４０もしくは４８０またはその両方は、保存された情報を不正アクセスから保護するために１つまたはそれ以上の暗号化機構を用いてもよい。
【００５６】
図５は、本明細書に開示される本発明の配置の実施形態に従う、教育的環境における動的ストリング分析ハンドラの訓練を詳述する方法５００の流れ図である。方法５００はシステム４００の状況において行われるか、もしくは方法３００とともに行われるか、またはその両方であってもよい。
【００５７】
方法５００はステップ５０５から始まってもよく、ここでは動的ストリング分析ハンドラがクライアント・アプリケーションからストリング・クエリの部分集合のストリング・クエリを受け取ってもよい。ステップ５１０において、受け取られたストリング・クエリの文脈メタデータが分析されてもよい。
【００５８】
ステップ５１５において、文脈メタデータ、選択規則、および利用可能なストリング分析アルゴリズムを考慮するヒューリスティック戦略を用いて、ストリング・クエリに最善の対処をするストリング分析アルゴリズムが識別されてもよい。ステップ５１５は、動的ストリング分析ハンドラのヒューリスティック選択プロセッサによって行われてもよい。
【００５９】
ステップ５２０において、識別されたストリング分析アルゴリズムがストリング・クエリに対して実行されてもよい。ステップ５２５において、実行されたストリング分析アルゴリズムの結果がクライアント・アプリケーションに搬送されてもよい。
【００６０】
ステップ５３０において、実行されたストリング分析アルゴリズムの結果に対する選択スコアを含むフィードバックがクライアント・アプリケーションから受け取られてもよい。ステップ５３５において、選択されたストリング分析アルゴリズムのストリング・クエリへの対処が不満足だったことを選択スコアが示しているかどうかが判断されてもよい。たとえば、選択スコアを予め定義された選択スコア閾値と比較することによって、閾値よりも低い選択スコアが不満足とみなされてもよい。
【００６１】
選択スコアが不満足と判断されると、ステップ５４０が実行されてもよく、ここではストリング・クエリの文脈に対する選択プロセスが修正されてもよい。ステップ５４０は、選択規則もしくはヒューリスティック選択プロセッサによって用いられる固有の決定プロセス（すなわち決定木）またはその両方に対する修正を包含してもよい。
【００６２】
選択が満足と判断されるか、またはステップ５４０の修正が完了すると、ステップ５４５において、動的ストリング分析ハンドラに対する訓練セッションが完了したかどうかが判断されてもよい。訓練セッションが完了していない場合、流れはステップ５０５に戻ってもよく、訓練セッションが完了するまで動的ストリング分析ハンドラは方法５００のステップを繰り返してもよい。訓練が完了すると、ステップ５５０が行われてもよく、ここではクライアント・アプリケーションに対するストリング分析アルゴリズム選択ポリシーが合成されてもよい。
【００６３】
図６は、本明細書に開示される本発明の配置の実施形態に従う、動作環境における動的ストリング分析ハンドラの動作を詳述する方法６００の流れ図である。方法６００はシステム４００の状況において行われるか、または方法３００もしくは５００またはその両方とともに行われるか、またはその両方であってもよい。
【００６４】
方法６００はステップ６０５から始まってもよく、ここでは動的ストリング分析ハンドラがクライアント・アプリケーションからストリング・クエリを受け取ってもよい。ステップ６１０において、受け取られたストリング・クエリの文脈メタデータが評価されてもよい。
【００６５】
ステップ６１５において、文脈メタデータがストリング分析アルゴリズム選択ポリシーの内容と関係付けられてもよい。ステップ６２０において、少なくとも１つのストリング分析アルゴリズムが、ストリング・クエリに対して適用可能であるとして動的に識別されてもよい。
【００６６】
２つ以上のストリング分析アルゴリズムが識別されると、ステップ６２５が実行されてもよく、ここでは識別されたストリング分析アルゴリズムのうちストリング・クエリに最善の対処をするものが決定されてもよい。動的ストリング分析ハンドラは、ステップ６２５を行うときに選択規則を用いてもよい。
【００６７】
ステップ６２５が完了するか、またはただ１つのストリング分析アルゴリズムが適用可能であるとして識別されると、ステップ６３０において、識別／決定されたストリング分析アルゴリズムがストリング・クエリに対して実行されてもよい。ステップ６３５において、実行されたストリング分析アルゴリズムの結果がクライアント・アプリケーションに搬送されてもよい。
【００６８】
図面中の流れ図およびブロック図は、本発明のさまざまな実施形態に従うシステム、方法およびコンピュータ・プログラム製品の実現可能なアーキテクチャ、機能および動作を例示するものである。これに関して、流れ図またはブロック図における各ブロックは、指定された論理関数（単数または複数）を実現するための１つまたはそれ以上の実行可能な命令を含むモジュール、セグメント、またはコードの部分を表していてもよい。さらに、いくつかの代替的な実現においては、ブロック中に示される機能が図面に示される以外の順序で起こってもよいことに留意すべきである。たとえば、連続して示される２つのブロックは、伴われる機能に依存して、実際には実質的に同時に実行されてもよいし、それらのブロックがときには逆の順序で実行されてもよい。さらに、ブロック図もしくは流れ図またはその両方の各ブロック、およびブロック図もしくは流れ図またはその両方のブロックの組み合わせは、指定された機能もしくは動作を行う特定目的のハードウェアに基づくシステム、または特定目的のハードウェアとコンピュータ命令との組み合わせによって実現され得ることを注記する。
【図１】
0005878637.tif 000002
【図２】
0005878637.tif 000003
【図３】
0005878637.tif 000004
【図４】
0005878637.tif 000005
【図５】
0005878637.tif 000006
【図６】
0005878637.tif 000007