(57)【要約】【課題】  本発明は、イベント駆動型アプリケーションの分析のためのドライバの生成のための方法を提供する。【解決手段】  一実施形態では、方法は、イベント駆動型アプリケーションのアプリケーション固有のナビゲーション・モデルを指定する段階；該イベント駆動型アプリケーションがナビゲーション要件を満たすか否かを決定するために、該ナビゲーション・モデルを該イベント駆動型アプリケーションの１又は複数のナビゲーション要件に関して分析する段階；前記ナビゲーション要件に基づき、前記イベント駆動型アプリケーションのために１又は複数のドライバを生成する段階；及び前記イベント駆動型アプリケーションを該イベント駆動型アプリケーションの１又は複数のビジネス・ロジック要求に関して分析し、前記イベント駆動型アプリケーションがビジネス・ロジック要求を満たすか否かを決定するために、アプリケーションとは独立のイベント・ドライバに関してナビゲーション・モデルをトラバースする段階；を有する。【選択図】  図１
2010267265.tif 000002
【特許請求の範囲】
【請求項１】
１又は複数のコンピュータ・システムにより：
イベント駆動型アプリケーションのアプリケーション固有のナビゲーション・モデルを指定する段階；
前記イベント駆動型アプリケーションがナビゲーション要件を満たすか否かを決定するために、該イベント駆動型アプリケーションの１又は複数の該ナビゲーション要件に関するナビゲーション・モデルを分析する段階；
該ナビゲーション・モデルに基づき、前記前記イベント駆動型アプリケーションのために１又は複数のドライバを生成する段階；
前記イベント駆動型アプリケーションがビジネス・ロジック要求を満たすか否かを決定するために、該イベント駆動型アプリケーションの１又は複数のビジネス・ロジック要求に関する該イベント駆動型アプリケーションを分析するため、アプリケーションとは独立のイベント・ドライバで前記ナビゲーション・モデルをトラバースする段階；
を有し、
前記アプリケーション固有のナビゲーション・モデルは：
前記イベント駆動型アプリケーションの１又は複数のページ；
前記イベント駆動型アプリケーションの対応する１又は複数のイベント；
１又は複数の前記イベントを処理する１又は複数のイベント・ハンドラ；及び
１又は複数の前記イベントのための１又は複数のイベント・データ；
をエンコーディングし、
前記ドライバは、共同で又は個々の：
前記イベント駆動型アプリケーションのページ毎に、該ページで利用可能であり有効なイベントを処理し；及び
イベント毎に：
前記ページをイベント・データで満たし；
前記イベント毎に、登録されたイベント・ハンドラを呼び出し；及び
該登録されたイベント・ハンドラにより返された結果に基づき次のページを計算し；
該次のページを再帰的に処理する、
ことを特徴とする方法。
【請求項２】
前記イベント駆動型アプリケーションは開放型イベント駆動型アプリケーションである、
ことを特徴とする請求項１記載の方法。
【請求項３】
前記アプリケーション固有のナビゲーション・モデルは、ページ遷移図（ＰＴＧ）である、
ことを特徴とする請求項１記載の方法。
【請求項４】
前記イベント駆動型アプリケーションは、１又は複数のＪＡＶＡ  ＳＥＲＶＥＲＰＡＧＥ（ＪＳＰ）、ハイパーテキスト・マークアップ言語（ＨＴＭＬ）コード若しくはコンテンツ、拡張マークアップ言語（ＸＭＬ）コード若しくはコンテンツ、又はＪＡＶＡコードを有するウェブ・アプリケーションである、
ことを特徴とする請求項１記載の方法。
【請求項５】
前記イベント駆動型アプリケーションはＳＴＲＵＴＳに基づくウェブ・アプリケーションである、
ことを特徴とする請求項１記載の方法。
【請求項６】
前記イベント駆動型アプリケーションはグラフィカル・ユーザ・インタフェース（ＧＵＩ）アプリケーションである、
ことを特徴とする請求項１記載の方法。
【請求項７】
１又は複数の前記イベントのそれぞれは、１若しくは複数のページ遷移又は１若しくは複数のイベント・ハンドラにより処理される１若しくは複数のイベントを有する、
ことを特徴とする請求項１記載の方法。
【請求項８】
前記イベント駆動型アプリケーションを分析するため、アプリケーションとは独立のイベント・ドライバで前記ナビゲーション・モデルをトラバースする段階は：
前記イベント駆動型アプリケーションの前記ページのうちの１又は複数の第１のページ毎に、該ページのうちの該第１のページが、該イベント駆動型アプリケーションの該ページのうちの１又は複数の第２のページから到達可能であるか否か、該ページのうちの該第１のページが該ページのうちの１又は複数の該第２のページから少なくとも所定数だけ離れているか否か、又は該ページのうちの該第１のページが該ページのうちの１又は複数の該第２のページへ最初に遷移することなく到達可能であるか否かを決定する段階；又は
前記イベント駆動型アプリケーションの全ての前記ページが入力の遷移及び出力の遷移を有するか否かを決定する段階；
を有する、
ことを特徴とする請求項１記載の方法。
【請求項９】
ソフトウェアを具現化する１又は複数のコンピュータ可読な非一時的記憶媒体であって、
当該ソフトウェアは、実行されると：
イベント駆動型アプリケーションのアプリケーション固有のナビゲーション・モデルを指定する段階；
前記イベント駆動型アプリケーションがナビゲーション要件を満たすか否かを決定するために、該イベント駆動型アプリケーションの１又は複数の該ナビゲーション要件に関するナビゲーション・モデルを分析する段階；
該ナビゲーション・モデルに基づき、前記前記イベント駆動型アプリケーションのために１又は複数のドライバを生成する段階；
前記イベント駆動型アプリケーションがビジネス・ロジック要求を満たすか否かを決定するために、該イベント駆動型アプリケーションの１又は複数のビジネス・ロジック要求に関する該イベント駆動型アプリケーションを分析するため、アプリケーションとは独立のイベント・ドライバで前記ナビゲーション・モデルをトラバースする段階；
を実行し、
前記アプリケーション固有のナビゲーション・モデルは：
前記イベント駆動型アプリケーションの１又は複数のページ；
前記イベント駆動型アプリケーションの対応する１又は複数のイベント；
１又は複数の前記イベントを処理する１又は複数のイベント・ハンドラ；及び
１又は複数の前記イベントのための１又は複数のイベント・データ；
をエンコーディングし、
前記ドライバは、共同で又は個々の：
前記イベント駆動型アプリケーションのページ毎に、該ページで利用可能であり有効なイベントを処理し；及び
イベント毎に：
前記ページをイベント・データで満たし；
前記イベント毎に、登録されたイベント・ハンドラを呼び出し；及び
該登録されたイベント・ハンドラにより返された結果に基づき次のページを計算し；
該次のページを再帰的に処理する、
ことを特徴とする媒体。
【請求項１０】
前記イベント駆動型アプリケーションは開放型イベント駆動型アプリケーションである、
ことを特徴とする請求項９記載の媒体。
【請求項１１】
前記アプリケーション固有のナビゲーション・モデルは、ページ遷移図（ＰＴＧ）である、
ことを特徴とする請求項９記載の媒体。
【請求項１２】
前記イベント駆動型アプリケーションは、１又は複数のＪＡＶＡ  ＳＥＲＶＥＲＰＡＧＥ（ＪＳＰ）、ハイパーテキスト・マークアップ言語（ＨＴＭＬ）コード若しくはコンテンツ、拡張マークアップ言語（ＸＭＬ）コード若しくはコンテンツ、又はＪＡＶＡコードを有するウェブ・アプリケーションである、
ことを特徴とする請求項９記載の媒体。
【請求項１３】
前記イベント駆動型アプリケーションはＳＴＲＵＴＳに基づくウェブ・アプリケーションである、
ことを特徴とする請求項９記載の媒体。
【請求項１４】
前記イベント駆動型アプリケーションはグラフィカル・ユーザ・インタフェース（ＧＵＩ）アプリケーションである、
ことを特徴とする請求項９記載の媒体。
【請求項１５】
１又は複数の前記イベントのそれぞれは、１若しくは複数のページ遷移又は１若しくは複数のイベント・ハンドラにより処理される１若しくは複数のイベントを有する、
ことを特徴とする請求項９記載の媒体。
【請求項１６】
前記イベント駆動型アプリケーションを分析するため、アプリケーションとは独立のイベント・ドライバで前記ナビゲーション・モデルをトラバースする段階は、当該ソフトウェアが実行されると：
前記イベント駆動型アプリケーションの前記ページのうちの９又は複数の第１のページ毎に、該ページのうちの該第１のページが、該イベント駆動型アプリケーションの該ページのうちの１又は複数の第２のページから到達可能であるか否か、該ページのうちの該第１のページが該ページのうちの１又は複数の該第２のページから少なくとも所定数だけ離れているか否か、又は該ページのうちの該第１のページが該ページのうちの１又は複数の該第２のページへ最初に遷移することなく到達可能であるか否かを決定する段階；又は
前記イベント駆動型アプリケーションの全ての前記ページが入力の遷移及び出力の遷移を有するか否かを決定する段階；
を実行する、
ことを特徴とする請求項９記載の媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本願明細書は、概して、例えばグラフィカル・ユーザ・インタフェース（ＧＵＩ）又はウェブ・アプリケーションのようなイベント駆動型アプリケーションに関する。
【０００２】
本出願は、３５Ｕ．Ｓ．Ｃ§１１９（ｅ）に基づき２００９年５月１３日出願の米国仮出願番号６１／１７７９０８号に基づく優先権を主張するものであり、該米国仮出願の全内容を本出願に援用する。
【背景技術】
【０００３】
イベント駆動型アプリケーション、特にグラフィカル・ユーザ・インタフェース（ＧＵＩ）を有するアプリケーション又はワールド・ワイド・ウェブと連携して用いられるよう設計されたアプリケーションの品質を保証することは、次第に重要性を増している。イベント駆動型アプリケーションは、膨大なユーザ入力が可能なので、屡々、試験することが困難である。イベント駆動型アプリケーションを試験するための現在の手法には、ライブ−サブジェクト試験、キャプチャ−再生、ユニット試験、クローリング及びモデルに基づく試験がある。ライブ−サブジェクト試験及びキャプチャ−再生手法は、相当な量の手作業を含み、試験者がボタンやリンクをクリックし、イベント駆動型アプリケーションに対応するウェブ・ブラウザのようなインタフェースを通じて表示されたフォームにデータを入力しながらユース・ケースのシナリオのセットを通して行う必要がある。イベント駆動型アプリケーションは、屡々、シナリオのセットを通じてユーザを制約し及び案内するよう設計される。全ての可能なユーザ入力のセットは、手作業の試験としては多すぎる。ユニット試験の場合は、一般に、一度に１つのユーザ・イベントを調べるよう設計され、ユーザ・イベントのシーケンスのチェックに適切に解決しない。クローリング技術は、通常、ウェブ・ページを自動的に訪ねるように設計されている。しかしながら、ユーザ案内（例えばユーザ入力の指定）がないと、クローラはイベント駆動型アプリケーションの全ての可能なページを訪ねることができない。モデルに基づく手法は、通常、ユーザの指定に依存する。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明は、イベント駆動型アプリケーションの分析のためのドライバの生成のための方法を提供する。
【課題を解決するための手段】
【０００５】
特定の実施形態では、イベント駆動型アプリケーションを分析するために、必然的に（１）イベント駆動型アプリケーションの動作を実施するドライバ、及び（２）イベント駆動型アプリケーションが用いるが分析の範囲外ではないコンポーネントをシミュレートするスタブ、を生成する。例えば、ドライバは、イベント駆動型アプリケーションに関するユーザ動作をシミュレートし、スタブは、イベント駆動型アプリケーションにより用いられるデ―タベースをシミュレートしてよい。特定の実施形態は、（１）ウェブ・アプリケーションの可能なページ、ユーザ・イベント（例えば、該ページのリンク又はボタンの選択）、イベント・ハンドラ、及びユーザ・データに関する情報をエンコーディングするアプリケーション固有ＰＴＧを指定する段階、（２）アプリケーション固有ＰＴＧをトラバースしアプリケーション固有ＰＴＧにより許可されたユーザ・イベントのシーケンスを生成するために、アプリケーションとは独立のドライバを用いる段階、を有する技術を利用することにより、イベント駆動型アプリケーションのためにドライバを生成してもよい。この技術は、ウェブ・アプリケーションのナビゲーション及びビジネス・ロジック要求のチェックを実現しうる。
【０００６】
特定の実施形態は、ＪＡＶＡ(登録商標)又は他の適切なソフトウェア・プラットフォームを用いて開発され且つサーバ・サイド・テクノロジ（例えばＪＳＰ）又は他の技術を利用してクライアント若しくは他の装置でユーザに表現し表示するためにハイパーテキスト・マークアップ言語（ＨＴＭＬ）コンテンツ、ＸＭＬコンテンツ若しくは他の組み込みリソースを生成するウェブ又は他のページを生成するウェブ又は他のイベント駆動型アプリケーションに関する。特定の実施形態は、モデルに基づく分析技術を用いてイベント駆動型アプリケーションのナビゲーション及びビジネス・ロジック要件の検証を実現するフレームワークを提供する。特定の実施形態は、試験中のイベント駆動型アプリケーションの動作図、グラフ又は他のモデルに基づく検証を実行する検証フレームワークに関する。特定の実施形態では、動作モデルは、イベント駆動型アプリケーションの対応する複数のノード（例えば画面又は他のページ）、ユーザ・イベント又は遷移（例えば、ボタンのクリック又はリンクのクリック）をエンコーディングするＰＴＧモデル又はデータ構造の形式である。特定の実施形態は、ＰＴＧを用い、ドライバ及びイベント駆動型アプリケーションのインタフェースにより許容される考えられるユーザ相互作用パターンを対象とする１又は複数のイベント・シーケンスを含むユース・ケース・シナリオを生成する。
【０００７】
ＧＵＩ及びウェブ・アプリケーションは、通常、イベント（例えば、ブラウザのウインドウ又はＧＵＩページ若しくは画面内でのボタンのクリック）のシーケンスを取り、ユーザに表示されたユーザ・インタフェース内での変化（例えば、異なるページ又は画面への遷移）又は実行中のアプリケーション内での変化（例えば、オンライン・ストアでオンライン・ショッピング・カートが空になる）を生成する開放型イベント駆動型アプリケーションである。開放型イベント駆動型アプリケーションを検証技術で分析するために、イベント駆動型アプリケーションを、イベント駆動型アプリケーションの相互作用するコンポーネントにより表現されるイベント駆動型アプリケーションの環境のモデルに閉じる必要がある。通常、試験中のイベント駆動型アプリケーションの環境は、試験中のアプリケーションを用いる（ユーザがイベント駆動型アプリケーションと相互作用しうるような）ドライバ及びイベント駆動型アプリケーションが呼び出しうるスタブ（例えば、データベース・コンポーネント又はライブラリ・コード）にグループ化される。
【０００８】
特定の実施形態では、ユーザ・イベントをシミュレートするドライバを生成するために、イベントの種類及びイベント駆動型アプリケーションにより用いられるイベント・ハンドラが識別されなければならない。例として且つ限定でなく、ＪＡＶＡ  ＥＥ（ＪＡＶＡ  ＰＬＡＴＦＯＲＭ、ＥＮＴＥＲＰＲＩＳＥ  ＥＤＩＴＩＯＮ、Ｊ２ＥＥとしても知られるアプリケーションのイベントの処理機構は、アプリケーション固有イベント・ハンドラが固有イベントを傾聴するために登録するオブザーバ・パターンの例である。ＪＡＶＡ  ＥＥは、ＪＡＶＡプログラミング言語でプログラミングされるサーバのためのプラットフォームにより広く用いられている。ＪＡＶＡ  ＥＥプラットフォームは、アプリケーション・サーバで動作するモジュラ・コンポーネントに大きく基づく、フォルト・トレラント、分散型のマルチ・ティアＪＡＶＡソフトウェアを展開するための機能を提供するライブラリを追加するＪＡＶＡ  Ｓｔａｎｄａｒｄ  Ｅｄｉｔｉｏｎ  Ｐｌａｒｆｏｒｍ（ＪＡＶＡ  ＳＥ）とは異なる。標準的なＪＡＶＡ  ＥＥは、ｊａｖａｘ．ｓｅｒｖｌｅｔ．ｈｔｔｐパッケージからのＨｔｔｐＳｅｒｖｌｅｔＲｅｑｕｅｓｔ及びＨｔｔｐＳｅｒｖｌｅｔＲｅｓｐｏｎｓｅ型を用い、入力及び出力イベントをエンコーディングする。イベント処理クラスは、通常、特定のイベント処理方法（例えば、（ＨｔｔｐＳｅｒｖｌｅｔＲｅｑｕｅｓｔ）の実行）を有する。イベント・ハンドラのイベントへの登録は、通常、例えばＸＭＬコンフィギュレーション・ファイルのようなディスクリプタ・ファイルに従うアプリケーションの展開時に生じる。
【図面の簡単な説明】
【０００９】
【図１】イベント駆動型アプリケーションを検証するフレームワークの例を示す。
【図２】ページ遷移図（ＰＴＧ）データ構造の要素の統一モデリング言語（ＵＭＬ）クラス図の例を示す。
【図３】ＰＴＧに基づくドライバ・トラバーサル・アルゴリズムの例を示す。
【図４】イベント駆動型アプリケーションのデータフローの例を示す。
【図５】ＪＡＶＡ  ＳＥＲＶＥＲＰＡＧＥＳ（ＪＳＰ）ファイルの例からのコードの抜粋の例を示す。
【図６】ｓｔｒｕｔｓ−ｃｏｎｆｉｇ．ｘｍｌファイルから抜粋されたコードの例を示す。
【図７】ＰＴＧデータ構造のページ遷移部分の例を示す。
【図８】例えばＳＴＲＵＴＳ固有イベント処理アプリケーション・プログラミング・インタフェース（ＡＰＩ）のドライバ拡張部の例を示す。
【図９】イベント駆動型アプリケーションを検証する方法の例を示す。
【図１０】例であるＰＴＧトラバーサルの出力例を示す。
【図１１】コンピュータ・システムの例を示す。
【発明を実施するための形態】
【００１０】
図１は、イベント駆動型アプリケーションを検証するフレームワークの例を示す。フレームワークは、環境生成部１０２及び検証ツールキット１０４を有する。環境生成部１０２は、試験中のアプリケーション１０６の実装（インプリメンテーション）にアクセスする。例として且つ限定的ではなく、アプリケーション１０６はウェブ・アプリケーション又は他のイベント駆動型アプリケーションであってもよい。特定の実施形態では、生成器１０２は、アプリケーション１０６の環境１０８の実装を生成する。環境１０８は、通常、アプリケーション１０６がアプリケーション１０６の実行中に相互作用するコンポーネントにより表される。アプリケーション１０６及び環境１０８は、分析のために検証ツールキット１０４に入力されてよい。検証ツールキット１０４は、１又は複数の検証結果１１４を出力してよい。環境生成部１０２及び検証ツールキット１０４は、図１１に示され以下に説明されるような１又は複数のコンピュータ・システム内で実行され又は動作してよい。特定の実施形態では、アプリケーション・コード１０６は、環境生成部１０２又は検証ツールキット１０４のような同一のコンピュータ・システムに存在する。代案として、アプリケーション１０６は、環境生成部１０２及び検証ツールキット１０４を有するコンピュータ・システムに接続又は結合された別個のコンピュータ・システムに存在してもよい。環境生成部１０２及び検証ツールキット１０４は、例であるコンピュータ・システム６００と同様であってよい１又は複数のコンピュータ・システムに存在する１又は複数のソフトウェア・コンポーネントを有してもよい。特定の実施形態は、環境生成部１０２及び検証ツールキット１０４の一方又は両方を、ハードウェア、ソフトウェア又はハードウェアとソフトウェアとの組み合わせとして実施してよい。例として且つ限定的ではなく、１又は複数のコンピュータ・システムは、特定のロジック又はソフトウェアを実行し、環境生成部１０２及び検証ツールキット１０４に関して記載及び説明される１又は複数の処理の１又は複数の段階を実行してよい。１又は複数のコンピュータ・システムは、統一されてもよく、適切な場合には複数のコンピュータ・システム又は複数のデータ・センタに渡って分散されてもよい。本願明細書は、如何なる適切なコンピュータ・システムをも包含する。
【００１１】
特定の実施形態では、環境生成部１０２は、アプリケーション１０６の「フロント・エンド」でユーザの動作又はイベントをシミュレートする１又は複数のドライバ１１２を生成するドライバ生成部１１０を有する。次に、環境生成部１０２は、ドライバ生成部１１０により出力されたドライバ１１２をスタブと結合し、環境１０８を生成する。例として且つ限定的ではなく、幾つかのユーザの動作は、他のユーザ動作が処理のために、例えばアプリケーション１０６のコードの実行をトリガするために、対応するイベント・ハンドラへ次に送信されるイベントを生成しうる間だけ、ページ遷移を生じ又はもたらす。アプリケーション１０６のドライバを生成するために、ドライバ生成部１１０は、イベントの種類及びイベント・ハンドラ又はアプリケーション１０６により利用されるイベント処理クラスを識別してよい。
【００１２】
特定の実施形態では、ドライバ生成部１１０は、ＰＴＧデータ構造（又はＰＴＧ）を有する挙動モデルに基づき、試験シーケンスを生成する。特定の実施形態では、ドライバ生成部１１０は、可能なページ又はアプリケーション１０６のノード及び可能なイベント又はアプリケーション１０６の対応する遷移に関する情報を、イベント・ハンドラに関する情報及び対応するイベント・ハンドラ及びイベント・データを要求するイベントのイベント・データと一緒にエンコーディングするＰＴＧを用いるよう構成される。ＰＴＧは、アプリケーション１０６のイベント・ハンドラの登録及びイベント・シーケンスの生成を実現し、アプリケーション１０６のイベント処理コードを駆動し、ＰＴＧにより許可された可能なイベント・シーケンスを実行する。
【００１３】
図２は、ドライバ生成部１１０により使用されるＰＴＧデータ構造２００の要素の例であるＵＭＬクラス図を示す。例として且つ限定的でなく、ＰＴＧ２００は、アプリケーション１０６の利用可能ページ２０２のセットに関するアプリケーション固有情報をエンコーディングする。通常、アプリケーション１０６を表すＰＴＧ２００の各ページは、可能なイベント２０４のセットを含む。各イベント２０４は、ユーザがアプリケーション１０６の特定のページと相互作用するときに実行しうるユーザ・イベント（例えば、ボタンのクリック又はリンクのクリック）を表す。幾つかのイベントは、常に可能なわけではない（例えば、特定の条件に依存して、ボタン及びリンクは使用不可能になりうる）。この可能性を反映するために、イベント２０４は、例えば論理的な「使用可能」を用いて、イベント２０４の「使用可能性」について常に知っている。ユーザ・イベントの中でも特にボタンのクリックは、通常、対応するイベント・ハンドラにより処理される。このように、幾つかのイベント２０４は、それらイベントに関連付けられたイベント・ハンドラ２０６のセットを有してもよい。更に、幾つかのイベントは、ユーザが情報を入力しうるフォーム又はテキスト・ボックスをページが表示するときなどに、ユーザ・データを要求してもよい。この可能性を反映するために、イベント２０４は、イベント２０４に添付される、データ・アイテム２１０を備えたイベント・データ２０８のセットを有してもよい。例として且つ限定的でなく、イベント・データ２０８は、鍵及びテキスト・フィールドの名称（例えば、ログイン・フォームのユーザＩＤ及びパスワード）及び該フィールドにユーザが入力した値に対応する値を保持してよい。通常、ドライバ生成部１１０により用いられるＰＴＧデータ構造は、イベント・ハンドラ登録の仕様、及びアプリケーション１０６を検証するための可能なユース・ケース・シナリオとして機能する。ドライバ生成部１１０は、アプリケーション１０６のイベント処理コアを設定するために次に用いられうるＰＴＧデータ構造に基づき、１又は複数のドライバ１１２を生成し、ＰＴＧにより許可された可能なイベント・シーケンスを実行する。
【００１４】
特定の実施形態では、ＰＴＧデータ構造は、ＥＣＬＩＰＳＥモデリング・フレームワーク（ＥＭＦ）を用いてモデル化される。ＥＭＦは、ＪＡＶＡインタフェースを用いたモデル仕様に対応する。例として且つ限定的でなく、ＪＡＶＡインタフェースの場合、ＥＭＦは、ＰＴＧコードを自動的に生成し、モデルをＸＭＬで書いてＸＭＬからＪＡＶＡにロードするような追加ファシリティを提供する。
【００１５】
特定の実施形態では、ＰＴＧは２つのレベルの情報、つまり（１）ナビゲーション及び（２）イベント処理を有するナビゲーションを提供してもよい。可能なページ遷移に関する情報を有するナビゲーション・レベルは、アプリケーション１０６のナビゲーション要件に関するチェックを実行するために用いられてもよい。特定の実施形態では、この分析（アプリケーション１０６のナビゲーション要件に関する検証を実行する）は、アプリケーション１０６がモデルの一部であることを要求しないので、この分析は適切なグラフ・チェック・アルゴリズムを用いて実施されてよい。例として且つ限定的でなく、アプリケーション１０６のナビゲーション要件をチェックするために用いられる要件テンプレートのセットは、到達可能性（例えば、ページＢからページＡに到達できる）、最短経路（例えば、ページＡはページＢから少なくともＮ個のステップだけ離れている）及び順位（例えば、ページＡを訪れるためには、ユーザは先ずページＢを通過しなければならない）を有してもよい。
【００１６】
各要件テンプレートは、特定のページ値Ａ及びＢでインスタンス化されてよい。使い勝手を向上させるために、特定の実施形態は、環境生成部１０２により用いられるアプリケーション固有ＰＴＧに基づき、Ａ及びＢの可能な値を提供する。しかしながら、この段階は、依然としてアプリケーション１０６から利用可能な又はアプリケーション１０６の対応するページのリストから特定のページ名を選択する必要がある。更に、特定の実施形態は、ユーザの指定無しに可能な違反を捜す幾つかのチェックを有する。例として且つ限定的でなく、特定の実施形態は、到達不可能なページの存在のような、アプリケーション１０６における可能な違反のチェックを有してもよい。別の例として、カスタマイズ可能なアプリケーション固有チェッカは、アプリケーション１０６から利用可能な全てのページがアプリケーションのホーム・ページへ戻るリンクを有するか否かをチェックしてもよい。
【００１７】
ナビゲーション要件と対照的に、ビジネス・ロジック要件をチェックするために、アプリケーション１０６の基礎（ｕｎｄｅｒｌｙｉｎｇ）コードがチェックされなければならない。特定の実施形態では、ドライバ生成部１１０は、満たされた（ｐｏｐｕｌａｔｅｄ）アプリケーション固有ＰＴＧデータ構造が与えられると、ＰＴＧをトラバースしユーザ・イベントのシーケンスを生成し実行する、ＰＴＧデータ構造に基づくアプリケーション独立ドライバ１１２組み込んでいる。上述のように、アプリケーションのために生成されたドライバ１１２は、同一のフレームワークに関連付けられたアプリケーションのために再利用されてよい。
【００１８】
図３は、ドライバ生成部１１０に組み込まれたドライバを実施するために用いられる例であるＰＴＧに基づくトラバース・アルゴリズムを示す。このトラバースは、特にＪＡＶＡ  ＥＥイベント処理ＡＰＩのために設計されている。例として且つ限定的でなく、ドライバは以下を実装してもよい。ｐｒｏｃｅｓｓＰａｇｅ（）は所与のページに添付された可能なイベント毎にｐｒｏｃｅｓｓＥｖｅｎｔ（）を呼び出す。ｐｒｏｃｅｓｓＥｖｅｎｔ（）はＨｔｔｐＳｅｒｖｌｅｔＲｅｑｕｅｓｔオブジェクトを生成し、ＨｔｔｐＳｅｒｖｌｅｔＲｅｑｕｅｓｔオブジェクトを置き（populate）、イベント処理コードを実行する。ｐｒｏｃｅｓｓＥｖｅｎｔＤａｔａ（）は、ＨｔｔｐＳｅｒｖｌｅｔＲｅｑｕｅｓｔオブジェクトをイベント・データで満たす。ｐｒｏｃｅｓｓＥｖｅｎｔＨａｎｄｌｉｎｇ（）は、イベント・ハンドラのイベント処理方法を呼び出し、結果に応じて次のページを返す。図３のドライバを実施するアルゴリズムは、次のページでｐｒｏｃｅｓｓＰａｇｅ（）を再帰的に呼び出す。アルゴリズムは、ＰＴＧのトラバースを変化させる条件で拡張されてもよい。例として且つ限定的でなく、このような条件は、訪れた遷移のリストがループを回避するために用いられ、且つ整数定数が各生成されたシーケンスの長さを制限するために用いられうる条件を有してもよい。特定の実施形態におけるドライバ１１２の別の特徴は、拡張ＡＰＩである。例として且つ限定的でなく、特定の方法は、所望のトラバース・アルゴリズムに従うドライバ、分析中フレームワーク（例えば、非決定性選択においてｆｏｒループで変更することによりＪＡＶＡ  ＰＡＴＨＦＩＮＤＥＲ（ＪＰＦ）と共に実行するため）、及びイベント処理ＡＰＩをエンコーディングするために用いられるフレームワーク（例えばＳＴＲＵＴＳ）をカスタマイズするために無効にされてもよい。非決定性選択をエンコーディングするために、ＪＰＦのモデリングのプリミティブ型のＶｅｒｉｆｙ．ｒａｎｄｏｍ（ｎ）を用いてもよい。Ｖｅｒｉｆｙ．ｒａｎｄｏｍ（ｎ）は、ＪＰＦに０からｎまでの整数セットから全ての可能な値を体系的に探索させる。
【００１９】
ドライバ１１２及びスタブ（集合的に環境１０８を形成する）の実装は、アプリケーション１０６の実装と共に、検証ツールキット１０４へ供給されてもよい。特定の実施形態では、検証ツールキット１０４は、ＪＰＦモデル・チェッカを用いて、アプリケーション１０６のビジネス・ロジック要件をチェックする。特定の実施形態では、検証ツールキット１０４は、１又は複数のＪＰＦ拡張を用いて、イベント駆動型アプリケーションの分析を可能にする。特定の実施形態は、ＪＰＦのリスナ・フレームワークを用いて、時相論理に基づく要件仕様に対応するリスナを実装する。
【００２０】
特定の実施形態では、ドライバ生成部１１０は、ＳＴＲＵＴＳに基づくウェブ・アプリケーションを検証するのに適したドライバ１１２を有してもよい。例として且つ限定的ではなく、このようなＳＴＲＵＴＳに基づくウェブ・アプリケーションはＸＭＬ、ＨＴＭＬ及びＪＳＰを用いて該アプリケーションのページ遷移をエンコーディングしてもよい。ある実施例では、アプリケーションＰＴＧはＸＭＬで指定されてもよい。特定の実施形態では、ドライバ生成部１１０は、ＳＴＲＵＴＳに基づくアプリケーションのドライバを生成するための１又は複数の拡張を有してもよい。より詳細には、特定の実施形態は、ＰＴＧデータ構造の拡張及びＳＴＲＵＴＳに基づくウェブ・アプリケーションと共に用いられるドライバ１１２を有する。
【００２１】
ＳＴＲＵＴＳでは、コントローラは、入来するユーザ要求を捕らえ該要求を例えばｓｔｒｕｔｓ−ｃｏｎｆｉｇ．ｘｍｌと称されるＸＭＬ記述子ファイル内に指定されたアクション・マッピングに従って適切なイベント・ハンドラへ送信するＳＴＲＵＴＳサーブレット・コントローラにより表される。ＳＴＲＵＴＳでは、要求処理クラスはｏｒｇ．ａｐａｃｈｅ．ｓｔｒｕｔｓ．ａｃｔｉｏｎ．Ａｃｔｉｏｎからのサブクラスであり、イベント処理方法はｅｘｅｃｕｔｅ（）と称される。アクションは呼び出しをビジネス・ロジック・クラスにカプセル化し、結果を解釈し、応答を生成するために適切なビュー・コンポーネントに制御を渡す。ＡｃｔｉｏｎＦｏｒｍクラスはフォームの配置（投入）に対応し、ユーザ・データの格納及び検証を実現する。
【００２２】
図４は、ＳＴＲＵＴＳに基づくウェブ・アプリケーションであってよいイベント駆動型アプリケーションのデータ・フローの例を示す。データ・フローは通常次の２つの間で交互に入れ替わる。（１）ビューからアクションへ（例えば、ユーザがリンクをクリックするか又はフォーム４０４（ＪＳＰにより表現されてよい）を提出すると、コントローラ層４０２が要求を受信し、マッピングを捜し、ビジネス層４０８を呼び出す適切なアクション４０６へ転送する）。（２）アクションからビューへ（例えば、実行中サービス４１０への呼出から戻った後、アクション４０６はビュー層のリソースへ転送し、ページがウェブ・ブラウザに表示される）。
【００２３】
特定の実施形態では、ＰＴＧは、３個のソース、つまり（１）ＪＳＰファイルからの情報、（２）ＸＭＬコンフィグレーション・ファイルからの情報、及び（３）試験中のアプリケーションのＡｃｔｉｏｎ及びＦｏｒｍをエンコーディングするクラス（例えばＪＡＶＡクラス）ファイルからの情報を用いて、（例えばＵＭＬの）既存のナビゲーション・モデル又はアプリケーション実装に基づき指定されてよい。
【００２４】
ＰＴＧを指定する技術を説明するために、登録の例を考える。登録の例は、ユーザが彼らのアカウントを登録し、該アカウントへログインし、次にログアウトすることを可能にする。本例は、６個のＪＳＰページ、つまりｉｎｄｅｘ．ｊｓｐ（初期ページ）、ｗｅｌｃｏｍ．ｊｓｐ、ｕｓｅｒｌｏｇｉｎ．ｊｓｐ、ｌｏｇｉｎｓｕｃｃｅｓｓ．ｊｓｐ、ｕｓｅｒＲｅｇｉｓｔｅｒ．ｊｓｐ、及びｒｅｇｉｓｔｅｒＳｕｃｃｅｓｓ．ｊｓｐを有する。各ＪＳＰページは、ＰＴＧのノードに対応し、従って本例のＰＴＧは少なくとも６個のノードを有する。各頁は、可能なユーザ・イベントに関する情報を有する。図５は、登録の例のためのＰＴＧの配置に関連するＪＳＰファイルの例からのコードの抜粋の例を示す。ウェルカム・ページ（ｗｅｌｃｏｍ．ｊｓｐ）は、自身へ戻るリンク、ｕｓｅｒＲｅｇｉｓｔｅｒ．ｊｓｐ及びｕｓｅｒｌｏｇｉｎ．ｊｓｐへのリンクを有し、ｕｓｅｒｌｏｇｉｎ．ｊｓｐページは「／ｕｓｅｒｌｏｇｉｎ」動作への参照を有する。この動作の意味を説明するために、特定の実施例は、１又は複数のＸＭＬのコンフィギュレーション・ファイルを調べる必要がある。
【００２５】
ＳＴＲＵＴ．ＸＭＬコンフィギュレーション・ファイルは、ユーザ動作からそれらのソース・ページ、それらを処理するＡｃｔｉｏｎクラス、ユーザ・データを保持するＦｏｒｍクラス及び可能な宛先ページへのマッピングを有してよい。図６は、ＵｓｅｒＬｏｇｉｎＡｃｔｉｏｎのための動作のマッピングを提供するｓｔｒｕｔｓ−ｃｏｎｆｉｇ．ｘｍｌファイルから抜粋されたコードの例を示す。図６では、ＵｓｅｒＬｏｇｉｎＡｃｔｉｏｎはイベント・ハンドラの種類を指定し、ＵｓｅｒＬｏｇｉｎＦｏｒｍは応答すべきイベントを指定し、ｕｓｅｒｌｏｇｉｎ．ｊｓｐは該イベントが利用可能なページを指定する。イベントの結果は、該イベントを処理するコードが例えば「成功」を返すか「失敗」を返すかに依存する。成功の場合には次のページはｌｏｇｉｎｓｕｃｃｅｓｓ．ｊｓｐであり、失敗の場合には次のページはｕｓｅｒｌｏｇｉｎ．ｊｓｐである。
【００２６】
図７は、アプリケーションのＪＳＰファイル及びＸＭＬファイル内の情報に基づく登録の例のためのＰＴＧデータ構造例のページ遷移部分の例を示す。特定の実施形態では、結果として生じるＰＴＧは、追加のブラウザの対応する遷移（例えば、アプリケーション１０６のページを表現するウェブ・ブラウザで「戻る」ボタンをクリックする）で更に拡張されてもよい。しかしながら、アプリケーション固有要件を調べるためにはアプリケーション固有ＰＴＧを指定すれば十分である。従って、特定の実施形態では、生成されたＰＴＧは、種々のアプリケーション固有でない追加のブラウザの対応する遷移を有さない。
ナビゲーション要件に関するアプリケーションのＰＴＧ分析は、ＳＴＲＵＴＳに基づくウェブ・アプリケーションの如何なる拡張も必要としない。特定の実施形態では、ＰＴＧに基づくアプリケーションの分析は、ＳＴＲＵＴＳイベント処理ＡＰＩに確認するため、ドライバのイベント処理方法を無効にすることを要求しうる。  図８は、例であるＳＴＲＵＴＳ固有イベント処理ＡＰＩのドライバ拡張部の例を示す。拡張部は、ＳＴＲＵＴＳ固有イベント処理ＡＰＩを説明する、イベント処理方法を無効にするために必要なＳＴＲＵＴＳに基づくウェブ・アプリケーションのために生成されたドライバ１１２からのコードの抜粋である。特定の実施形態では、ドライバ生成部及びそのＳＴＲＵＴＳに基づくアプリケーションのための拡張部は、ＪＡＶＡを用いて実装されてもよい。
【００２７】
図９は、イベント駆動型アプリケーションを検証する方法の例を示す。方法は段階１１０２で開始する。段階１１０２で、試験中のアプリケーションの実装がアクセスされる。段階１１０４で、ＰＴＧが配置される。段階１１０６で、ＰＴＧは、試験中のアプリケーションのナビゲーション要件（例えば、各頁がホーム・ページから到達可能か）に関して分析される。段階１１０８で、試験中のアプリケーションの１又は複数のドライバは、ＰＴＧでエンコーディングされた情報に基づき自動的に生成される。段階１１１０で、ドライバは、試験中のアプリケーションのビジネス・ロジック要件の検証を含む試験中のアプリケーションの分析のために用いられる。段階１１１２で、分析の１又は複数の結果が出力され、方法は終了する。本願明細書は図９の方法の特定の段階を特定の順序で生じるとして記載し説明したが、本開示は、図９の方法の如何なる適切な段階が如何なる適切な順序で生じることも包含する。更に、本願明細書は図９の方法の特定の段階を実行する特定のコンポーネントを記載し説明したが、本開示は、図９の方法の如何なる適切な段階を実行する如何なる適切なコンポーネントも包含する。
【００２８】
図１０は、生成されたテスト・シーケンスの長さを抑制するために、図３のアルゴリズムを用いて図６のＰＴＧに基づき、図８のドライバにより生成され実行されるテスト・シーケンスを含む、例であるＰＴＧトラバースの出力例を示す。
【００２９】
図１１は、コンピュータ・システム６００の例を示す。特定の実施形態では、１又は複数のコンピュータ・システム６００は、本願明細書に記載された１又は複数の方法の１又は複数の段階を実行する。特定の実施形態では、１又は複数のコンピュータ・システム６００は、本願明細書に記載又は説明された機能を提供する。特定の実施形態では、１又は複数のコンピュータ・システム６００で実行されるソフトウェアは、本願明細書に記載された１又は複数の方法の１又は複数の段階を実行するか、本願明細書に記載された機能を提供する。特定の実施形態は、１又は複数のコンピュータ・システム６００の１又は複数の部分を有する。
【００３０】
本開示は、如何なる適切な数のコンピュータ・システム６００をも包含する。本開示は、如何なる適切な物理形式のコンピュータ・システム６００をも包含する。例として且つ限定的でなく、コンピュータ・システム６００は、組み込み型コンピュータ・システム、システム・オン・チップ（ＳＯＣ）、単一基板コンピュータ・システム（ＳＢＣ）（例えば、コンピュータ・オン・モジュール（ＣＯＭ）又はシステム・オン・モジュール（ＳＯＭ））、デスクトップ・コンピュータ・システム、ラップトップ又はノートブック・コンピュータ・システム、対話型キオスク、メインフレーム、コンピュータ・システムのメッシュ、携帯電話機、パーソナル・デジタル・アシスタント（ＰＤＡ）、サーバ、又はこれらの２以上の如何なる組み合わせであってもよい。適切な場合には、コンピュータ・システム６００は、１又は複数のコンピュータ・システム６００を有し、中央集中型若しくは分散型であってよく、複数の場所に渡ってよく、複数の装置に渡ってよく、１又は複数のネットワーク内の１又は複数の集団コンポーネントを有する集団の中に存在してもよい。適切な場合には、１又は複数のコンピュータ・システム６００は、本願明細書に記載された１又は複数の方法の１又は複数の段階を実質的に空間的又は時間的制限なしに実行してもよい。例として且つ限定的でなく、１又は複数のコンピュータ・システム６００は、本願明細書に記載された１又は複数の方法の１又は複数の段階を実時間で又はバッチ・モードで実行してもよい。１又は複数のコンピュータ・システム６００は、適切な場合には、本願明細書に記載された１又は複数の方法の１又は複数の段階を異なる時間に又は異なる場所で実行してもよい。
【００３１】
特定の実施形態では、コンピュータ・システム６００は、プロセッサ６０２、メモリ６０４、記憶装置６０６、入力／出力（Ｉ／Ｏ）インタフェース６０８、通信インタフェース６１０及びバス６１２を有する。本願明細書は特定の数の特定のコンポーネントを特定の構成で有する特定のコンピュータ・システムを記載し説明したが、本開示は、如何なる適切な数の如何なる適切なコンポーネントを如何なる適切な構成で有する如何なる適切なコンピュータ・システムも包含する。
【００３２】
特定の実施形態では、プロセッサ６０２は、コンピュータ・プログラムを構成する命令のような命令を実行するハードウェアを有する。例として且つ限定的でなく、命令を実行するために、プロセッサ６０２は、命令を内部レジスタ、内部キャッシュ、メモリ６０４又は記憶装置６０６から読み出し（又はフェッチし）、該命令をデコードして実行し、次に１又は複数の結果を内部レジスタ、内部キャッシュ、メモリ６０４又は記憶装置６０６に書き込んでよい。特定の実施形態では、プロセッサ６０２は、データ、命令又はアドレスのために１又は複数の内部キャッシュを有してもよい。本願明細書は、適切な場合には如何なる適切な数の如何なる適切な内部キャッシュを有するプロセッサ６０２も包含する。例として且つ限定的でなく、プロセッサ６０２は、１又は複数の命令キャッシュ、１又は複数のデータ・キャッシュ、及び１又は複数のトランスレーション・ルックアサイド・バッファ（ＴＬＢ）を有してもよい。命令キャッシュ内の命令は、メモリ６０４又は記憶装置６０６内の命令のコピーであってよい。命令キャッシュは、該命令のプロセッサ６０２による読み出しを高速化してよい。データ・キャッシュ内のデータは、プロセッサ６０２で実行され命令のためのメモリ６０４又は記憶装置６０６内の処理されるべきデータ、次にプロセッサ６０２で実行される命令によりアクセスされるために又はメモリ６０４又は記憶装置６０６への書き込みのために前にプロセッサ６０２で実行された命令の結果、又は他の適切なデータのコピーであってよい。データ・キャッシュは、プロセッサ６０２による読み出し又は書き込み動作を高速化しうる。ＴＬＢは、プロセッサ６０２のために仮想アドレス・トランスレーションを高速化しうる。特定の実施形態では、プロセッサ６０２は、データ、命令又はアドレスのために１又は複数の内部レジスタを有してもよい。本願明細書は、適切な場合には如何なる適切な数の如何なる適切な内部レジスタを有するプロセッサ６０２も包含する。適切な場合には、プロセッサ６０２は、１又は複数の演算論理装置（ＡＬＵ）を有し、マルチ・コア・プロセッサであり、又は１又は複数のプロセッサ６０２を有してもよい。本願明細書は特定のプロセッサを記載し説明したが、本開示は如何なる適切なプロセッサも包含する。
【００３３】
特定の実施形態では、メモリ６０４はプロセッサ６０２のために実行されるべき命令又はプロセッサ６０２のために処理されるべきデ―タを格納する主メモリを有する。例として且つ限定的でなく、コンピュータ・システム６００は、記憶装置６０６又は別の情報源（例えば、別のコンピュータ・システム６００）からメモリ６０４へ命令をロードする。プロセッサ６０２は、次に、命令をメモリ６０４から内部レジスタ又は内部キャッシュへロードする。命令を実行するために、プロセッサ６０２は、命令を内部レジスタ又は内部キャッシュから読み出し、該命令をデコードする。命令の実行後又は実行中、プロセッサ６０２は、１又は複数の結果を内部レジスタ又は内部キャッシュに書き込んでよい。プロセッサ６０２は、次に、１又は複数の結果をメモリ６０４に書き込んでよい。特定の実施形態では、プロセッサ６０２は、１又は複数の内部レジスタ又は内部キャッシュ又はメモリ６０４内の命令だけを実行し（記憶装置６０６又はその他の場所とは対照的に）、１又は複数の内部レジスタ又は内部キャッシュ又はメモリ６０４内のデータのみを処理してよい（記憶装置６０６又はその他の場所とは対照的に）。１又は複数のバス（それぞれアドレス・バス及びデータ・バスを有してよい）は、プロセッサ６０２をメモリ６０４に結合してよい。バス６１２は、以下に説明する１又は複数のメモリ・バスを有してよい。特定の実施形態では、１又は複数のメモリ管理部（ＭＭＵ）は、プロセッサ６０２とメモリ６０４との間に存在し、プロセッサ６０２により要求されたメモリ６０４へのアクセスを実現する。特定の実施形態では、メモリ６０４は、ランダム・アクセス・メモリ（ＲＡＭ）であってもよい。このＲＡＭは、適切な場合には揮発性メモリであってよい。適切な場合には、このＲＡＭはダイナミックＲＡＭ（ＤＲＡＭ）又はスタティックＲＡＭ（ＳＲＡＭ）であってもよい。更に、適切な場合には、このＲＡＭは単一ポート又は複数ポートＲＡＭであってもよい。本願明細書は、如何なる適切なＲＡＭをも包含する。メモリ６０４は、適切な場合には１又は複数のメモリ６０４を有してもよい。本願明細書は特定のメモリを記載し説明したが、本開示は如何なる適切なメモリも包含する。
【００３４】
特定の実施形態では、記憶装置６０６はデータ又は命令のための大容量記憶装置を有する。例として且つ限定的でなく、記憶装置６０６は、ＨＤＤ、プロッピー・ディスク・ドライブ、フラッシュ・メモリ、光ディスク、光磁気ディスク、磁気テープ、又はユニバーサル・シリアル・バス（ＵＳＢ）ドライブ、又はこれらの２以上の組み合わせを有してもよい。記憶装置６０６は、適切な場合には取り外し可能な又は取り外し不可能な（又は固定の）媒体を有してもよい。記憶装置６０６は、適切な場合にはコンピュータ・システム６００に内蔵又は外付けであってよい。特定の実施形態では、記憶装置６０６は不揮発性、固体メモリである。特定の実施形態では、記憶装置６０６は、読み出し専用メモリ（ＲＯＭ）であってもよい。適切な場合には、このＲＯＭは、マスク・プログラムＲＯＭ、プロブラマブルＲＯＭ（ＰＲＯＭ）、消去可能なＰＲＯＭ（ＥＰＲＯＭ）、電気的に消去可能なＰＲＯＭ（ＥＥＰＲＯＭ）、電気的に消去再書き込み可能なＲＯＭ（ＥＡＲＯＭ）、又はフラッシュ・メモリ又はこれらの２以上の組み合わせであってもよい。本開示は、如何なる適切な物理形式の大容量記憶装置６０６をも包含する。記憶装置６０６は、適切な場合には、プロセッサ６０２と記憶装置６０６との間の通信を実現する１又は複数の記憶制御部を有してもよい。記憶装置６０６は、適切な場合には１又は複数の記憶装置６０６を有してもよい。本願明細書は特定の記憶装置を記載し説明したが、本開示は如何なる適切な記憶装置も包含する。
【００３５】
特定の実施形態では、Ｉ／Ｏインタフェース６０８は、コンピュータ・システム６００と１又は複数のＩ／Ｏ装置との間の通信のための１又は複数のインタフェースを提供するハードウェア、ソフトウェア又はこれらの両方を有する。コンピュータ・システム６００は、適切な場合には、１又は複数のこれらのＩ／Ｏ装置を有してもよい。１又は複数のこれらのＩ／Ｏ装置は、人とコンピュータ・システム６００との間の通信を可能にしうる。例として且つ限定的でなく、Ｉ／Ｏ装置は、キーボード、キーパッド、マイクロホン、モニタ、マウス、プリンタ、スピーカ、カメラ、スタイラス、タブレット、タッチスクリーン、トラックボール、ビデオカメラ、他の適切なＩ／Ｏ装置又はこれらの２つ以上の組み合わせを有してもよい。Ｉ／Ｏ装置は１又は複数のセンサを有してもよい。本開示は如何なる適切なＩ／Ｏ装置及びそのための如何なる適切なＩ／Ｏインタフェースも包含する。適切な場合には、Ｉ／Ｏインタフェース６０８は、プロセッサ６０２に１又は複数のＩ／Ｏ装置を駆動させる１又は複数の装置又はソフトウェア・ドライバを有してよい。Ｉ／Ｏインタフェース６０８は、適切な場合には、１又は複数のこれらのＩ／Ｏインタフェース６０８を有してもよい。本願明細書は特定のＩ／Ｏインタフェースを記載し説明したが、本開示は如何なる適切なＩ／Ｏインタフェースも包含する。
【００３６】
特定の実施形態では、通信インタフェース６１０は、コンピュータ・システム６００と１又は複数のコンピュータ・システム６００又は１又は複数のネットワークとの間の通信（例えば、パケットベースの通信）のための１又は複数のインタフェースを提供するハードウェア、ソフトウェア又はこれらの両方を有する。例として且つ限定的でなく、通信インタフェース６１０は、イーサネット(登録商標)又は他の有線ネットワークと通信するためのネットワーク・インタフェース制御部（ＮＩＣ）又はネットワーク・アダプタ又はＷＩ−ＦＩネットワークのような無線ネットワークと通信するための無線ＮＩＣ（ＷＮＩＣ）又は無線アダプタを有してもよい。本開示は如何なる適切なネットワーク及びそのための如何なる適切な通信インタフェース６１０も包含する。例として且つ限定的でなく、コンピュータ・システム６００は、アドホック・ネットワーク、個人域ネットワーク（ＰＡＮ）、ローカル・エリア・ネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、都市域ネットワーク（ＭＡＮ）、又はインターネットの１又は複数の部分又はこれらの２つ以上の組み合わせと通信してもよい。１又は複数のこれらのネットワークの１又は複数の部分は、有線又は無線であってもよい。例として、コンピュータ・システム６００は、無線ＰＡＮ（ＷＰＡＮ）（例えばＢｌｕｅｔｏｏｔｈ  ＷＰＡＮ）、ＷＩ−ＦＩネットワーク、Ｗｉ−ＭＡＸネットワーク、携帯電話網（例えば、移動通信網（ＧＳＭ））、又は他の適切な無線ネットワーク又はこれらの２つ以上の組み合わせと通信してもよい。コンピュータ・システム６００は、適切な場合には、如何なる適切なネットワークの如何なる適切な通信インタフェース６１０を有してもよい。通信インタフェース６１０は、適切な場合には１又は複数の通信インタフェース６１０を有してもよい。本願明細書は特定の通信インタフェースを記載し説明したが、本開示は如何なる適切な通信インタフェースも包含する。
【００３７】
特定の実施形態では、バス６１２は、コンピュータ・システム６００のコンポーネントを相互に結合するハードウェア、ソフトウェア又は両方を有する。例として且つ限定的でなく、バス６１２は、グラフィック専用高速バス（ＡＧＰ）又は他のグラフィック・バス、拡張工業標準アーキテクチャ（ＥＩＳＡ）バス、フロント・サイド・バス（ＦＳＢ）、ＨＹＰＥＲＴＲＡＮＳＰＯＲＴ（ＨＴ）相互接続、工業標準アーキテクチャ（ＩＳＡ）バス、ＩＮＦＩＮＩＢＡＮＤ相互接続、Ｌｏｗ−Ｐｉｎ−Ｃｏｕｎｔ（ＬＰＣ）バス、メモリ・バス、マイクロ・チャネル・アーキテクチャ（ＭＣＡ）バス、ペリフェラル・コンポーネント相互接続（ＰＣＩ）バス、ＰＣＩ−Ｅｘｐｒｅｓｓ（ＰＣＩ−Ｘ）バス、シリアル・アドバンスト・テクノロジ・アタッチメント（ＳＡＴＡ）バス、ビデオ・エレクトロニクス・スタンダード・アソシエーション・ローカル（ＶＬＢ）バス、又は他の適切なバス又はこれらの２つ以上の組み合わせを有してもよい。バス６１２は、適切な場合には１又は複数のバス６１２を有してもよい。本願明細書は特定のバスを記載し説明したが、本開示は如何なる適切なバスも包含する。
【００３８】
ここで、コンピュータ可読記憶媒体という表現は、１又は複数の有形のコンピュータ可読記憶媒体処理構造を包含する。例として且つ限定的でなく、コンピュータ可読記憶媒体は、半導体に基づく又は他の集積回路（ＩＣ）（例えば、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）又は特定用途向け集積回路（ＡＳＩＣ））、ハ―ドディスク、ＨＤＤ、ハイブリッド・ハードドライブ（ＨＨＤ）、光ディスク、光ディスク・ドライブ（ＯＤＤ）、光磁気ディスク、光磁気ドライブ、フロッピー(登録商標)・ディスク、フロッピー・ディスク・ドライブ（ＦＤＤ）、磁気テープ、ホログラフィック記憶媒体、固体ドライブ（ＳＳＤ）、ＲＡＭドライブ、ＳＥＣＵＲＥ  ＤＩＧＩＴＡＬカード、ＳＥＣＵＲＥ  ＤＩＧＩＴＡＬドライブ、又は他の適切なコンピュータ可読記憶媒体、又はこれらの２つ以上の組み合わせを有してもよい。ここで、コンピュータ可読記憶媒体の表現は、３５Ｕ．Ｓ．Ｃ§１０１に基づき特許保護に適切でない如何なる媒体も除外する。ここで、コンピュータ可読記憶媒体の表現は、３５Ｕ．Ｓ．Ｃァ１０１に基づき特許保護に適切でない一時的な信号伝送形式を除外する（例えば、電気又は電磁気信号自体の伝搬）。
【００３９】
本願明細書は、如何なる適切な記憶装置を実施する１又は複数のコンピュータ可読記憶媒体を包含する。特定の実施形態では、適切な場合には、コンピュータ可読記憶媒体は、１又は複数のプロセッサ６０２（例えば、１又は複数の内部レジスタ又はキャッシュ）、メモリ６０４の１又は複数の部分、記憶装置６０６の１又は複数の部分、又はこれらの組み合わせを実施する。特定の実施形態では、コンピュータ可読記憶媒体は、ＲＡＭ又はＲＯＭを実施してもよい。特定の実施形態では、コンピュータ可読記憶媒体は、揮発性又は永久メモリを実施してもよい。特定の実施形態では、１又は複数のコンピュータ可読記憶媒体はソフトウェアを具現化する。ここで、ソフトウェアの表現は、適切な場合には、１又は複数のアプリケーション、バイトコード、１又は複数のコンピュータ・プログラム、１又は複数の実行ファイル、１又は複数の命令、ロジック、機械コード、１又は複数のスクリプトを包含する。逆も同様である。特定の実施形態では、ソフトウェアは、１又は複数のアプリケーション・プログラミング・インタフェース（ＡＰＩ）を有する。本開示は、如何なる適切な記載されたソフトウェア又は如何なる適切なプログラミング言語で又はプログラミング言語の組み合わせで他の表現されたソフトウェアも包含する。特定の実施形態では、ソフトウェアは、ソースコード又はオブジェクトコードとして表現される。特定の実施形態では、ソフトウェアは、例えば、Ｃ、Ｐｅｒｌ、又はこれらの適切な拡張のような高レベルのプログラミング言語で表現される。特定の実施形態では、ソフトウェアは、アセンブリ言語（又は機械コード）のような低レベルのプログラミング言語で表現される。特定の実施形態では、ソフトウェアはＪＡＶＡで表現される。特定の実施形態では、ソフトウェアは、ハイパーテキスト・マークアップ言語（ＨＴＭＬ）、拡張マークアップ言語（ＸＭＬ）、又は他の適切なマークアップ言語で表現される。
【００４０】
本願明細書は、当業者が考え得る、本願明細書に記載された例である実施形態の全ての変更、代替、変形、選択肢、及び修正を包含する。同様に、適切な場合には、特許請求の範囲は、当業者が考え得る、本願明細書に記載された例である実施形態の全ての変更、代替、変形、選択肢、及び修正を包含する。
【符号の説明】
【００４１】
１０２  環境生成部
１０４  検証ツールキット
１０６  アプリケーション
１０８  環境
１１０  ドライバ生成部
１１２  ドライバ
１１４  検証結果
６０２  プロセッサ
６０４  メモリ
６０６  記憶装置
６０８Ｉ／Ｏインタフェース
６１０  通信インタフェース
６０２  プロセッサ
６０４  メモリ
６０６  記憶装置
６０８Ｉ／Ｏインタフェース
６１０  通信インタフェース
【図１】
2010267265.tif 000003
【図２】
2010267265.tif 000004
【図３】
2010267265.tif 000005
【図４】
2010267265.tif 000006
【図５】
2010267265.tif 000007
【図６】
2010267265.tif 000008
【図７】
2010267265.tif 000009
【図８】
2010267265.tif 000010
【図９】
2010267265.tif 000011
【図１０】
2010267265.tif 000012
【図１１】
2010267265.tif 000013