(57)【特許請求の範囲】
【請求項１】
１又はそれ以上のコンピュータシステムによって、
イベント駆動型のアプリケーションの１又はそれ以上のＪＳＰファイル、１又はそれ以上のＸＭＬ設定ファイル、及び１又はそれ以上のクラスファイルにアクセスし、
前記ＪＳＰファイルを解析し、前記イベント駆動型のアプリケーションによってサポートされるユーザ又はサーバイベントをエンコードするＪＳＰファイルからデータを取り出し、
前記ＸＭＬ設定ファイルを解析し、展開される場合に前記イベント駆動型のアプリケーションによって使用される定義をエンコードするＸＭＬ設定ファイルからデータを取り出し、
前記クラスファイルを解析し、展開される場合に前記イベント駆動型のアプリケーションによって使用される１若しくはそれ以上のアクション又は１若しくはそれ以上のフォームをエンコードするクラスファイルからデータを取り出し、
前記取り出されたデータを抽象構文木として記憶し、
前記抽象構文木に基づき前記イベント駆動型のアプリケーションのページ遷移グラフをポピュレートし、
前記イベント駆動型のアプリケーションにおけるナビゲーションエラーについて前記ページ遷移グラフをチェックし、
ポピュレートされる場合に前記ページ遷移グラフは、
前記イベント駆動型のアプリケーションの１又はそれ以上のページと、
前記イベント駆動型のアプリケーションの１又はそれ以上のゴーストページと、
前記イベント駆動型のアプリケーションによってサポートされる前記ユーザ又はサーバイベントの１又はそれ以上と、
参照されるが定義されていない１又はそれ以上のユーザ又はサーバイベントと、
前記ユーザ又はサーバイベントの１又はそれ以上を処理する１又はそれ以上のイベントハンドラと、
前記ユーザ又はサーバイベントの１又はそれ以上のための１又はそれ以上のイベントデータと
をエンコードする、
ことを特徴とする方法。
【請求項２】
前記ナビゲーションエラーは、
１又はそれ以上の到達不能ページ、
１又はそれ以上のゴーストページ、あるいは
１又はそれ以上の未定義の遷移
の中の１又はそれ以上を有する、請求項１に記載の方法。
【請求項３】
前記イベント駆動型のアプリケーションは、ウェブアプリケーションである、
請求項１に記載の方法。
【請求項４】
前記イベント駆動型のアプリケーションは、ＳＴＲＵＴＳに基づくウェブアプリケーションである、
請求項１に記載の方法。
【請求項５】
実行される場合に、
イベント駆動型のアプリケーションの１又はそれ以上のＪＳＰファイル、１又はそれ以上のＸＭＬ設定ファイル、及び１又はそれ以上のクラスファイルにアクセスし、
前記ＪＳＰファイルを解析し、前記イベント駆動型のアプリケーションによってサポートされるユーザ又はサーバイベントをエンコードするＪＳＰファイルからデータを取り出し、
前記ＸＭＬ設定ファイルを解析し、展開される場合に前記イベント駆動型のアプリケーションによって使用される定義をエンコードするＸＭＬ設定ファイルからデータを取り出し、
前記クラスファイルを解析し、展開される場合に前記イベント駆動型のアプリケーションによって使用される１若しくはそれ以上のアクション又は１若しくはそれ以上のフォームをエンコードするクラスファイルからデータを取り出し、
前記取り出されたデータを抽象構文木として記憶し、
前記抽象構文木に基づき前記イベント駆動型のアプリケーションのページ遷移グラフをポピュレートし、
前記イベント駆動型のアプリケーションにおけるナビゲーションエラーについて前記ページ遷移グラフをチェックし、
ポピュレートされる場合に前記ページ遷移グラフは、
前記イベント駆動型のアプリケーションの１又はそれ以上のページと、
前記イベント駆動型のアプリケーションの１又はそれ以上のゴーストページと、
前記イベント駆動型のアプリケーションによってサポートされる前記ユーザ又はサーバイベントの１又はそれ以上と、
参照されるが定義されていない１又はそれ以上のユーザ又はサーバイベントと、
前記ユーザ又はサーバイベントの１又はそれ以上を処理する１又はそれ以上のイベントハンドラと、
前記ユーザ又はサーバイベントの１又はそれ以上のための１又はそれ以上のイベントデータと
をエンコードする、
よう動作するソフトウェアを具現する１又はそれ以上のコンピュータ読取可能な持続性記憶媒体。
【請求項６】
１又はそれ以上のプロセッサによって実行される命令を含むメモリと、
前記メモリへ結合され、前記命令を実行するよう動作する１又はそれ以上のプロセッサと
を有し、
前記１又はそれ以上のプロセッサは、前記命令を実行する場合に、
イベント駆動型のアプリケーションの１又はそれ以上のＪＳＰファイル、１又はそれ以上のＸＭＬ設定ファイル、及び１又はそれ以上のクラスファイルにアクセスし、
前記ＪＳＰファイルを解析し、前記イベント駆動型のアプリケーションによってサポートされるユーザ又はサーバイベントをエンコードするＪＳＰファイルからデータを取り出し、
前記ＸＭＬ設定ファイルを解析し、展開される場合に前記イベント駆動型のアプリケーションによって使用される定義をエンコードするＸＭＬ設定ファイルからデータを取り出し、
前記クラスファイルを解析し、展開される場合に前記イベント駆動型のアプリケーションによって使用される１若しくはそれ以上のアクション又は１若しくはそれ以上のフォームをエンコードするクラスファイルからデータを取り出し、
前記取り出されたデータを抽象構文木として記憶し、
前記抽象構文木に基づき前記イベント駆動型のアプリケーションのページ遷移グラフをポピュレートし、
前記イベント駆動型のアプリケーションにおけるナビゲーションエラーについて前記ページ遷移グラフをチェックし、
ポピュレートされる場合に前記ページ遷移グラフは、
前記イベント駆動型のアプリケーションの１又はそれ以上のページと、
前記イベント駆動型のアプリケーションの１又はそれ以上のゴーストページと、
前記イベント駆動型のアプリケーションによってサポートされる前記ユーザ又はサーバイベントの１又はそれ以上と、
参照されるが定義されていない１又はそれ以上のユーザ又はサーバイベントと、
前記ユーザ又はサーバイベントの１又はそれ以上を処理する１又はそれ以上のイベントハンドラと、
前記ユーザ又はサーバイベントの１又はそれ以上のための１又はそれ以上のイベントデータと
をエンコードする、
よう動作する、装置。
【請求項７】
イベント駆動型のアプリケーションの１又はそれ以上のＪＳＰファイル、１又はそれ以上のＸＭＬ設定ファイル、及び１又はそれ以上のクラスファイルにアクセスする手段と、
前記ＪＳＰファイルを解析し、前記イベント駆動型のアプリケーションによってサポートされるユーザ又はサーバイベントをエンコードするＪＳＰファイルからデータを取り出す手段と、
前記ＸＭＬ設定ファイルを解析し、展開される場合に前記イベント駆動型のアプリケーションによって使用される定義をエンコードするＸＭＬ設定ファイルからデータを取り出す手段と、
前記クラスファイルを解析し、展開される場合に前記イベント駆動型のアプリケーションによって使用される１若しくはそれ以上のアクション又は１若しくはそれ以上のフォームをエンコードするクラスファイルからデータを取り出す手段と、
前記取り出されたデータを抽象構文木として記憶する手段と、
前記抽象構文木に基づき前記イベント駆動型のアプリケーションのページ遷移グラフをポピュレートする手段と、
前記イベント駆動型のアプリケーションにおけるナビゲーションエラーについて前記ページ遷移グラフをチェックする手段と、
を有し、
ポピュレートされる場合に前記ページ遷移グラフは、
前記イベント駆動型のアプリケーションの１又はそれ以上のページと、
前記イベント駆動型のアプリケーションの１又はそれ以上のゴーストページと、
前記イベント駆動型のアプリケーションによってサポートされる前記ユーザ又はサーバイベントの１又はそれ以上と、
参照されるが定義されていない１又はそれ以上のユーザ又はサーバイベントと、
前記ユーザ又はサーバイベントの１又はそれ以上を処理する１又はそれ以上のイベントハンドラと、
前記ユーザ又はサーバイベントの１又はそれ以上のための１又はそれ以上のイベントデータと
をエンコードする、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、ウェブアプリケーションを解析することに係る。
【背景技術】
【０００２】
アプリケーション、特に、グラフィカル・ユーザ・インターフェース（ＧＵＩ）又はワールドワイドウェブに関連して使用されるよう設計されたものを有するアプリケーション、のための品質保証は、ますます重要である。これらのアプリケーションは、可能なユーザ入力が多数存在するために、しばしば試験することが困難である。これらのアプリケーションを試験するための現在のアプローチには、ライブサブジェクト（live-subject）試験、キャプチャ・リレー、ユニット試験、クローリング、及びモデルベースの試験等がある。ライブサブジェクト試験及びキャプチャ・リレーの両アプローチは、相当の手動作業を伴い、試験者に、ボタン及びリンクをクリックして、インターフェース（例えば、ウェブアプリケーションをサポートするウェブブラウザ）を介して表示されるフォームにデータを入力しながら、使用ケース・シナリオの組を進めることを要求する。これらのアプリケーションは、しばしば、シナリオの組を制約し、該組においてユーザを導くよう設計されるが、全ての可能なユーザ入力の組は、手動試験には大きすぎることがある。ユニット試験の場合は、一般的に、一度に１つのユーザイベントを認証又は解析するよう設計されており、連続するユーザイベントの認証又は解析には十分に対処しない。クローリング技術は、通常は、自動的にウェブページを訪問するよう設計される。しかし、ユーザガイダンス（例えば、ユーザ入力の仕様）なしに、クローリングは、ウェブ又は他のイベント駆動型のアプリケーションの全ての可能なページを訪問することはできないことがある。モデルベースのアプローチは、一般的に、ユーザ仕様に依存する。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本発明は、ウェブアプリケーションのモデルベース解析のためのページ遷移グラフ（ＰＴＧ）を自動的に取り出す方法、記憶媒体、装置及びシステムを提供することを目的とする。
【課題を解決するための手段】
【０００４】
本発明の実施形態によれば、１又はそれ以上のコンピュータシステムによって、
イベント駆動型のアプリケーションの１又はそれ以上のＪＳＰファイル、１又はそれ以上のＸＭＬ設定ファイル、及び１又はそれ以上のクラスファイルにアクセスし、
前記ＪＳＰファイルを解析し、前記イベント駆動型のアプリケーションによってサポートされるユーザ又はサーバイベントをエンコードするＪＳＰファイルからデータを取り出し、
前記ＸＭＬ設定ファイルを解析し、展開される場合に前記イベント駆動型のアプリケーションによって使用される定義をエンコードするＸＭＬ設定ファイルからデータを取り出し、
前記クラスファイルを解析し、展開される場合に前記イベント駆動型のアプリケーションによって使用される１若しくはそれ以上のアクション又は１若しくはそれ以上のフォームをエンコードするクラスファイルからデータを取り出し、
前記取り出されたデータを抽象構文木として記憶し、
前記抽象構文木に基づき前記イベント駆動型のアプリケーションのページ遷移グラフをポピュレートし、
前記イベント駆動型のアプリケーションにおけるナビゲーションエラーについて前記ページ遷移グラフをチェックする、
ことを特徴とする方法が提供される。
【０００５】
本発明の実施形態によれば、実行される場合に、
イベント駆動型のアプリケーションの１又はそれ以上のＪＳＰファイル、１又はそれ以上のＸＭＬ設定ファイル、及び１又はそれ以上のクラスファイルにアクセスし、
前記ＪＳＰファイルを解析し、前記イベント駆動型のアプリケーションによってサポートされるユーザ又はサーバイベントをエンコードするＪＳＰファイルからデータを取り出し、
前記ＸＭＬ設定ファイルを解析し、展開される場合に前記イベント駆動型のアプリケーションによって使用される定義をエンコードするＸＭＬ設定ファイルからデータを取り出し、
前記クラスファイルを解析し、展開される場合に前記イベント駆動型のアプリケーションによって使用される１若しくはそれ以上のアクション又は１若しくはそれ以上のフォームをエンコードするクラスファイルからデータを取り出し、
前記取り出されたデータを抽象構文木として記憶し、
前記抽象構文木に基づき前記イベント駆動型のアプリケーションのページ遷移グラフをポピュレートし、
前記イベント駆動型のアプリケーションにおけるナビゲーションエラーについて前記ページ遷移グラフをチェックする、
よう動作するソフトウェアを具現する１又はそれ以上のコンピュータ読取可能な持続性記憶媒体が提供される。
【０００６】
本発明の実施形態によれば、１又はそれ以上のプロセッサによって実行される命令を含むメモリと、
前記メモリへ結合され、前記命令を実行するよう動作する１又はそれ以上のプロセッサと
を有し、
前記１又はそれ以上のプロセッサは、前記命令を実行する場合に、
イベント駆動型のアプリケーションの１又はそれ以上のＪＳＰファイル、１又はそれ以上のＸＭＬ設定ファイル、及び１又はそれ以上のクラスファイルにアクセスし、
前記ＪＳＰファイルを解析し、前記イベント駆動型のアプリケーションによってサポートされるユーザ又はサーバイベントをエンコードするＪＳＰファイルからデータを取り出し、
前記ＸＭＬ設定ファイルを解析し、展開される場合に前記イベント駆動型のアプリケーションによって使用される定義をエンコードするＸＭＬ設定ファイルからデータを取り出し、
前記クラスファイルを解析し、展開される場合に前記イベント駆動型のアプリケーションによって使用される１若しくはそれ以上のアクション又は１若しくはそれ以上のフォームをエンコードするクラスファイルからデータを取り出し、
前記取り出されたデータを抽象構文木として記憶し、
前記抽象構文木に基づき前記イベント駆動型のアプリケーションのページ遷移グラフをポピュレートし、
前記イベント駆動型のアプリケーションにおけるナビゲーションエラーについて前記ページ遷移グラフをチェックする、
よう動作する、装置が提供される。
【０００７】
本発明の実施形態によれば、イベント駆動型のアプリケーションの１又はそれ以上のＪＳＰファイル、１又はそれ以上のＸＭＬ設定ファイル、及び１又はそれ以上のクラスファイルにアクセスする手段と、
前記ＪＳＰファイルを解析し、前記イベント駆動型のアプリケーションによってサポートされるユーザ又はサーバイベントをエンコードするＪＳＰファイルからデータを取り出す手段と、
前記ＸＭＬ設定ファイルを解析し、展開される場合に前記イベント駆動型のアプリケーションによって使用される定義をエンコードするＸＭＬ設定ファイルからデータを取り出す手段と、
前記クラスファイルを解析し、展開される場合に前記イベント駆動型のアプリケーションによって使用される１若しくはそれ以上のアクション又は１若しくはそれ以上のフォームをエンコードするクラスファイルからデータを取り出す手段と、
前記取り出されたデータを抽象構文木として記憶する手段と、
前記抽象構文木に基づき前記イベント駆動型のアプリケーションのページ遷移グラフをポピュレートする手段と、
前記イベント駆動型のアプリケーションにおけるナビゲーションエラーについて前記ページ遷移グラフをチェックする手段と、
を有するシステムが提供される。
【発明の効果】
【０００８】
本発明の実施形態によれば、ウェブアプリケーションのモデルベース解析のためのページ遷移グラフ（ＰＴＧ）を自動的に取り出すことが可能となる。
【図面の簡単な説明】
【０００９】
【図１】例となるウェブアプリケーションのためのデータフローの一例を表す。
【図２】例となるウェブアプリケーションにおける例となるユーザ又はサーバイベントのエンコーディングの一例を表す。
【図３】例となるウェブアプリケーションにおける例となるユーザ又はサーバイベントに対する参照の一例を表す。
【図４】展開される場合に例となるウェブアプリケーションによって使用される例となる定義を含む断片的なファイルの一例を表す。
【図５】例となるページ遷移グラフ（ＰＴＧ）を構成するアルゴリズムの一例を表す。
【図６】例となるＰＴＧの視覚化の一例を表す。
【図７】例となるＰＴＧ発生器のアーキテクチャの一例を表す。
【図８】例となるコンピュータシステムを表す。
【図９】例となるネットワーク環境を表す。
【発明を実施するための形態】
【００１０】
ウェブアプリケーションを解析するためには、（１）ウェブアプリケーションの挙動を実行するドライバ、及び（２）ウェブアプリケーションが使用しうるが解析の適用範囲外にあるコンポーネントをシミュレーションするスタブ、を開発することが必要である。例えば、ドライバは、ウェブアプリケーションに対してユーザアクションをシミュレーションしてよく、スタブは、ウェブアプリケーションによって使用されるデータベースをシミュレーションしてよい。特定の実施形態は、（１）ウェブアプリケーションの可能なページに対応するノードと、可能なユーザ及びサーバイベント（例えば、前記ページにおけるリンク又はボタンの選択）に対応する遷移と、イベントハンドラと、ユーザデータとを有するアプリケーション特有のページ遷移グラフ（Page  Transition  Graph（ＰＴＧ））モデルを特定すること、及び（２）アプリケーション特有のＰＴＧを横断し、アプリケーション特有のＰＴＧによって許可されるユーザ又はサーバイベントのシーケンスを発生させるために、アプリケーションに依存しないドライバを用いること、を伴う技術を用いることによって、ウェブアプリケーションのためのドライバを生成してよい。この技術は、ウェブアプリケーションのナビゲーション及びビジネスロジック要件の認証又は解析を容易にしうる。限定されない例として、２０１０年３月３１日付けで出願された米国特許出願第１２／７５１９８２号（発明の名称「GENERATING  A  DRIVER  FOR  ANALYSIS  OF  AN  EVENT-DRIVEN  APPLICATION」）は、イベント駆動型のアプリケーションのアプリケーション特有のナビゲーションモデルを特定すること、イベント駆動型のアプリケーションがナビゲーション要件を満足するかどうかを決定するようイベント駆動型のアプリケーションの１又はそれ以上のナビゲーション要件に関してナビゲーションモデルを解析すること、ナビゲーションモデルに基づきイベント駆動型のアプリケーションのための１又はそれ以上のドライバを生成すること、及び、イベント駆動型のアプリケーションがビジネスロジック要件を満足するかどうかを決定するようイベント駆動型のアプリケーションの１又はそれ以上のビジネスロジック要件に関してイベント駆動型のアプリケーションを解析するために、アプリケーションに依存しないイベントドライバによりナビゲーションモデルを横断すること、を含む方法を開示する。この特許文献は、単なる例として、参照により本願に援用される。
【００１１】
特定の実施形態は、静的解析を用いてウェブアプリケーションの実施からＰＴＧ仕様を取り出すことによって、ドライバを生成する工程を実質的に自動化する。特定の実施形態は、ＪＳＰ（JAVA（登録商標）  SERVERPAGES）ファイル及びＸＭＬ（Extensible  Markup  Language）ファイルを用いてそれらのページ遷移をエンコードするＪＡＶＡ（登録商標）に基づくウェブアプリケーションのためのＰＴＧ抽出を装置化する。ＡＰＡＣＨＥ  ＳＴＲＵＴＳ（又はＳＴＲＵＴＳ）に基づくアプリケーションは、この分野におけるアプリケーションの一例である。２通りのＳＴＲＵＴＳが存在する。すなわち、ＳＴＲＵＴＳ１及びＳＴＲＵＴＳ２である。ここでは、ＳＴＲＵＴＳとの言及は、必要に応じて、ＳＴＲＵＴＳ１、ＳＴＲＵＴＳ２、又はそれら両方を含み、逆の場合も同じである。本開示は、ＳＴＲＵＴＳに基づくアプリケーションについて記載及び図示するが、あらゆる適切なウェブアプリケーションを包含する。ここでは、ウェブアプリケーションとの言及は、必要に応じて、何らかの適切なイベント駆動型のアプリケーションを含む。
【００１２】
ＳＴＲＵＴＳは、ＭＶＣ（Model-View-Controller）設計パターンに基づくオープンソースのフレームワークである。ビューポジションは、一般にＪＳＰによって表され、静的情報（例えば、ＨＴＭＬ、ＸＭＬ）を動的情報（例えば、１又はそれ以上のＪＳＰスクリプトレットの一部としてのＪＡＶＥ（登録商標））と結合する。特定の実施形態において、コントローラは、ＳＴＲＵＴＳサーブレット・コントローラによって表され、入来するユーザリクエストをインターセプトし、それらを、通常struts-config.xmlと呼ばれるＸＭＬ記述子ファイルにおいて特定されるアクションマッピング情報に従って、適切なイベントハンドラへ送る。ＳＴＲＵＴＳにおいて、リクエストハンドリング・クラスは、org.apache.struts.actionパッケージにおけるActionクラスから下位分類される。それらのイベントハンドリング方法はexecute()と呼ばれる。アクションは、ビジネスロジッククラスに対する呼びかけをカプセル化し、結果を解釈し、適切なビュー・コンポーネントへ制御をディスパッチして応答を生成する。フォーム・ポピュレーション（form  population）は、アクションフォーム（ActionForm）クラスによってサポートされ、ユーザデータの記憶及び認証を容易にする。
【００１３】
図１は、例となるウェブアプリケーションのためのデータフローの一例を表す。ウェブアプリケーションは、ＳＴＲＵＴＳに基づくアプリケーションであってよい。データフローは、一般的に、（１）ビューからアクション（例えば、ユーザが、リンクをクリックし、又はフォーム４０４（ＪＳＰによって表されてよい。）をサブミットする場合に、コントローラ層４０２がリクエストを受け取り、マッピングを調べ、適切なアクション４０６へ進み、アクション４０６はビジネス層４０８を呼び出す。）と、（２）アクションからビュー（例えば、基礎を成すサービス４１０に対する呼び出しが返った後、アクション４０６はビュー層におけるリソースへ進み、ページがウェブブラウザにおいて表示される。）との間を行ったり来たりする。
【００１４】
これを説明するよう、レジストレーション（Registration）と呼ばれる次の例を考える。レジストレーションは、ユーザが自身のアカウントを登録し、そのアカウントにログインして、後にログアウトすることを可能にする。レジストレーションは、２つのＸＭＬファイル（web.xml及びstruts-config.xml）及び６つのＪＳＰページ、すなわち、index.jsp（web.xml設定ファイルにおいてマークされる最初のページ）、welcome.jsp、userlogin.jsp、loginsuccess.jsp、userRegister.jsp及びregisterSuccess.jspを用いて、そのページ遷移をエンコードする。レジストレーションのイベントハンドリング部分は、４つのアクション（Action）クラス及び２つのアクションフォーム（ActionForm）オブジェクトを含む。
【００１５】
特定の実施形態において、ＰＴＧ抽出は２つのステップ、すなわち、（１）ＪＳＰ、ＸＭＬ及びＪＡＶＡ（登録商標）を解析し、それらから関連情報を検索し、該情報を都合の良い形態（例えば、抽象構文木（ＡＳＴ（Abstract  Syntax  Tree）））で記憶するステップ、及び（２）検索された情報に基づいてＰＴＧを構築するステップを有する。特定の実施形態において、解析ステップは、（１）ＪＳＰファイル、（２）ＸＭＬ設定ファイル、及び（３）アクションクラス及びアクションフォームオブジェクトをエンコードするクラスファイル、から情報を検索する。それらのステップは、各ステップが、空の又は部分的にポピュレートされているＡＳＴをとり、それを当該ステップで利用可能な情報に基づいて更新するような、如何なる適切な順序で起こってもよい。特定の実施形態において、ＪＳＰ検索ステップは、ウェブアプリケーションの全てのＪＳＰファイルを解析する。各ＪＳＰページは、ＡＳＴにおけるページ（Page）ノードに対応する。各ＪＳＰファイルは、ＪＳＰにおいて静的にエンコードされている可能なユーザ及びサーバイベントに関して情報をスキャンされる。図２は、レジストレーションのページにおける例となるユーザ又はサーバイベントのエンコーディングを示す。レジストレーションでは、index.jspはwelcomeへリダイレクトし、welcome.jspページは、自身へ、userRegister.jspへ、及びuserlogin.jspへのリンクを含み、userlogin.jspページは、/userloginアクションに対する参照を含み、loginsuccess.jspは、他のページへのリダイレクトを含む。
【００１６】
特定の実施形態において、可能なユーザ及びサーバイベントに対する参照を見つけるよう、追跡すべきエンコーディングのタイプを知る必要がある。図３は、例となるウェブアプリケーションにおける例となるユーザ又はサーバイベントに対する参照（又はエンコーディング）の例を表す。それらは、リンク及びフォームＪＳＰ／ＨＴＭＬタグ及び属性と、リダイレクトタグ及びリダイレクトを追跡すべきスクリプトレット・キーワードと、包含関係（例えば、１つのＪＳＰページは他のＪＳＰページを含み、含まれるページで利用可能なフォーム及びリンクを表示することができる。）とを含む。それらのエンコーディングは、可能なユーザ及びサーバイベントに対する参照を見つけ、それらをＡＳＴイベント（Event）ノードの一部として記憶することを可能にする。各ＡＳＴイベントは、その経路（path）に関する情報を記憶する。経路は、ＸＭＬ設定ファイルにおいて定義される次のＪＳＰページ又はアクションに対する参照であってよい。経路がＰＴＧ（例えば、画像）に関連しないファイル又はＵＲＬを参照する場合に、そのようなイベントは命名規則に基づいて除外されてよい。
【００１７】
特定の実施形態において、ＸＭＬ設定ファイルは、展開時に必要とされる様々な定義を含む。例えば、web.xmlは、命名規則及び最初のページに関する情報を含んでよく、一方、struts-config.xmlは、アクション定義を含んでよい。図４は、展開される場合にレジストレーションによって使用される例となる定義を含むファイルの断片の例を表す。web.xmlファイルは、index.jspが最初のページであることを特定する。url-pattern定義の下で、.doは、幾つかのアクションを参照する場合にサフィックスとして使用される。個の情報は、Welcome.doに対する参照を、struts-config.xmlにおいて利用可能なその定義Welcomeと一致させるために使用される。特定の実施形態において、下記は、userlogin.jspページで参照される/userloginアクションの定義を少なくとも部分的に記載する：（１）これは、ユーザログインフォーム（UserLoginForm）をとるフォーム提出イベントである；（２）タイプ「ユーザログインアクション（UserLoginAction）」のイベントハンドラはそれを扱う；及び（３）このイベントの結果は、イベントハンドリングコードが「成功」又は「失敗」のどちらを返すのかに依存する。「成功」の場合に、次のページは、loginsuccess.jspである。「失敗」の場合に、次のページは、userlogin.jspである。この特定の場合においては、夫々の結果の経路はＪＳＰページを参照する。一般的に、それは、この又は他のＸＭＬ設定ファイルにおいて利用可能な他の定義を参照してよい。
【００１８】
特定の実施形態において、ＸＭＬパーサーは全てのＸＭＬを解析し、それらをＡＳＴ定義（Definitions）の一部として記憶する。フォーム提出イベントを記載する定義は、アクションフォームオブジェクトをポピュレートするために使用される追加のデータを必要とする。この情報は、アクションフォームクラス自体を含む複数のソースから検索可能である。
【００１９】
特定の実施形態において、次のステップは、ウェブアプリケーションの全てのアクションフォームクラスを見つけ、それらをロードする。夫々のアプリケーションフォーム、例えば、ユーザログインフォームについて、それは、そのクラスファイルをロードし、リフレクションＡＰＩを用いて、そのフィールドの全て、例えば、ユーザＩＤ（userid）及びパスワード（password）を見つける。命名規則を用いると、各フィールドは、フィールド特有のセッターメソッドを介して設定可能である。例えば、setUserid(String)はユーザＩＤフィールドを設定し、setPassword(String)はパスワードフィールドを設定する。このように、フィールド名を発見した後、特定の実施形態は、それらのフィールドを、対応するテキストフィールドに入力されたユーザ値を表す値に設定するコードを生成することができる。ユーザ値を生成するよう、このステップは、例えば、文字列をサポートする記号実行に基づき、ファイルにおいて特定される値に依存してよい。指定がないときは、特定の実施形態において、このステップはデフォルト値、例えば、空又は非空の文字列等の一般的なコーナーケースを発生させてよい。
【００２０】
解析ステップ後、ＰＴＧ構成ステップは、全てのＪＳＰページ、それらの可能なユーザ及びサーバイベント並びに利用可能なＸＭＬ定義に関する情報を含むＡＳＴをとり、ＰＴＧをポピュレートする。図５は、例となるＰＴＧを構成するアルゴリズムの例を表す。夫々のＡＳＴページについて、アルゴリズムはＰＴＧページ（１〜４行目）を作成する。次いで、各ＡＳＴページで利用可能なユーザ又はサーバイベントに対する参照（６行目）について、アルゴリズムは、イベントのエンコードされた経路に基づき、参照を決定する。経路（path）がＪＳＰページを参照する場合（１０行目）、ルックアップメカニズムが、そのページを見つけるよう呼び出される（１１行目）。ページが見つけられない場合は、新たなゴーストページ（参照されるが存在しないページ）が作成され、イベントの行き先ページとして設定される（１２〜１４行目）。経路がＪＳＰページを参照しない場合は、それは定義の下で調べられる（１８行目）。定義が見つけられない場合は、イベントの新しいページは、特別の未定義（Undefined）ゴーストページとして設定され（２０行目）、このイベントに対応する遷移が未定義の遷移としてマークされる。そうではない場合、定義は、イベントの可能な行き先ページを決定するために使用される（２２行目）。夫々の定義は、そのドメイン特有のエンコーディングに従ってイベントを更新する。例えば、struts-config.xmlからのアクション（Action）定義は、タイプ（type）情報に従ってイベントハンドラ（EventHandler）オブジェクトを生成し、フォワード（forwards）においてエンコードされている情報に従って行き先ページを計算する。アルゴリズムのこの部分は、定義が他の定義を参照してよいことから、再帰的である。イベント構成が終了した後、イベントはそのソースページに加えられる（２５行目）。
【００２１】
特定の実施形態において、構成によって、アプローチは、ＰＴＧ発生器に対して指定される静的なＪＳＰ及びＸＭＬエンコーディングに関して、ページ遷移の過大近似（overapproximation）を取り出す。図６は、レジストレーションのために取り出される例となるＰＴＧの例となるページ遷移部分の視覚化の例を表す。最初のノードはindexである。ノードpages_userloginはゴーストノードである。特定の実施形態において、このノードは、loginsuccess.jspページで利用可能なresponse.sendRedirect()イベントを処理する場合に計算される。このイベントは、存在しない“…/userlogin.jsp”ページを参照し、正しい経路はuserlogin.jspである。loginsuccess.jspページに直接アクセスする場合、サーバは、「要求されたリソースは利用可能でない」旨のメッセージにより例外処理を実行する。特定の実施形態において、そのようなエラーは、リファクタリング後に、又はタイプミスに起因して、現れることがあり、従来の試験技術を用いて見つけることは困難である。
【００２２】
図７は、例となるＰＴＧ発生器のアーキテクチャの例を表す。特定の実施形態は、アーキテクチャのコンポーネントの１又はそれ以上を、ハードウェア、ソフトウェア、又はハードウェア若しくはソフトウェアの組み合わせとして実施してよい。ＰＴＧ発生器は、パーサー、発生器、プリンタ及びチェッカーを有する。特定の実施形態において、パーサーは、ＪＳＰ／ＨＴＭＬ／ＸＭＬタグ、スクリプトレット・ブロック、及び様々なタイプのコメントを解析することができる文法に基づきＪａｖａＣＣによって自動的に生成されるＪＳＰパーサーである。ＪＳＰパーサーは、別個のファイルにおいて特定されるタグに基づき情報を取り出す（図３と同様）。特定の実施形態においては、ドメイン特有のエンコーディングに基づく更なるタグが存在してよい。ＸＭＬパーサーは、ダイジェスタ（Digester）フレームワークに基づいてよい。ＡＳＴを考えると、発生器はＰＴＧデータ構造をポピュレートする。ＰＴＧデータ構造は、ＥＭＦ（ECLIPSE  MODELING  FRAMEWORK）を用いて実施されてよい。ＥＭＦは、ＪＡＶＡ（登録商標）インターフェースを用いてモデル仕様をサポートする。ＪＡＶＡ（登録商標）インターフェースを考えると、ＥＭＦは、それらの実施を自動的に発生させ、更なるファシリティ（例えば、ＸＭＬにおいてモデルを記述して、それをＸＭＬからＪＡＶＡ（登録商標）にロードすること）を提供する。ＰＴＧ  ＡＰＩは、ライブラリとして使用されてよい。特定の実施形態は、２つの発生器を実施してよい。１つは、ＰＴＧの全ての要素をポピュレートするものであり、もう１つは、ページ及び遷移のみをポピュレートするものである。後者は、ナビゲーション要件の軽い解析のために使用されてよい。ポピュレートされたＰＴＧを考えると、プリンタは、その様々な表示を生成する。図７は、Ｊａｖａ（登録商標）（ＰＴＧに基づくドライバによって使用されてよい。）、ＸＭＬ（適切な仕様又は他の要件に関してページ及びイベント名をポピュレートするために使用されてよい。）、及びドット記法（Dot  representation）（視覚化のために使用されてよい。）におけるＰＴＧ生成のためのサポートを示す。ポピュレートされたＰＴＧを考えると、チェッカーは、起こり得るエラー（例えば、到達不能なページ及びゴーストページ、並びに未定義の遷移）を伝える特性を収集する。チェッカーはＸＭＬにおいてそれらの出力をプリントする。診断の一部として、ＸＭＬチェッカー報告は、また、潜在的なエラーの発生源に関する情報（例えば、ＰＴＧページ／遷移始点のライン番号及びファイル名へのマッピング）を含んでもよい。本開示は、特定の配置において特定のコンポーネントを有するＰＴＧ発生器の特定のアーキテクチャについて記載及び図示しているが、本開示は、あらゆる適切な配置においてあらゆる適切なコンポーネントを有するあらゆる適切なＰＴＧ発生器を考えている。
【００２３】
特定の実施形態は、１又はそれ以上のコンピュータシステムで実施されてよい。図８は、例となるコンピュータシステム８００を表す。特定の実施形態において、１又はそれ以上のコンピュータシステム８００は、ここで記載又は図示されている１又はそれ以上の方法の１又はそれ以上のステップを実行する。特定の実施形態において、１又はそれ以上のコンピュータシステム８００は、ここで記載又は図示されている機能を提供する。特定の実施形態において、１又はそれ以上のコンピュータシステム８００で実行されるソフトウェアは、ここで記載又は図示されている１又はそれ以上の方法の１又はそれ以上のステップを実行し、あるいは、ここで記載又は図示されている機能を提供する。特定の実施形態は、１又はそれ以上のコンピュータシステム８００の１又はそれ以上の部分を含む。
【００２４】
本開示は、任意の適切な数のコンピュータシステム８００を考えている。本開示は、あらゆる適切な物理的な形態をとるコンピュータシステム８００を考えている。限定されない例として、コンピュータシステム８００は、埋込式コンピュータシステム、システムオンチップ（ＳＯＣ）、シングルボード・コンピュータシステム（ＳＢＣ）（例えば、コンピュータ・オン・モジュール（ＣＯＭ）若しくはシステム・オン・モジュール（ＳＯＭ））、デスクトップ型コンピュータシステム、ラップトップ若しくはノートブック型コンピュータシステム、対話式キオスク、メインフレーム、コンピュータシステムのメッシュ、携帯電話機、パーソナルデジタルアシスタント（ＰＤＡ）、サーバ、又はそれらの２若しくはそれ以上の組み合わせであってよい。必要に応じて、コンピュータシステム８００は、１又はそれ以上のコンピュータシステム８００を有しても、単一型若しくは分散型であっても、複数の場所に及んでも、複数の機械に及んでも、又はクラウドに存在してもよく、クラウドは、１又はそれ以上のネットワークにおいて１又はそれ以上のクラウドコンポーネントを有してよい。必要に応じて、１又はそれ以上のコンピュータシステム８００は、ここで記載又は図示されている１又はそれ以上の方法の１又はそれ以上のステップを、実質的な空間的又は時間的な制限なしに、実行してよい。限定されない例として、１又はそれ以上のコンピュータシステム８００は、ここで記載又は図示されている１又はそれ以上の方法の１又はそれ以上のステップを、実時間で、又はバッチモードにおいて、実行してよい。１又はそれ以上のコンピュータシステム８００は、必要に応じて、ここで記載又は図示されている１又はそれ以上の方法の１又はそれ以上のステップを、異なった時点に、又は異なった場所で、実行してよい。
【００２５】
特定の実施形態において、コンピュータシステム８００は、プロセッサ８０２と、メモリ８０４と、記憶装置８０６と、入出力（Ｉ／Ｏ）インターフェース８０８と、通信インターフェース８１０と、バス８１２とを有する。本開示は、特定の配置において特定の数の特定のコンポーネントを有する特定のコンピュータシステムを記載及び図示しているが、本開示は、あらゆる適切な配置においてあらゆる適切な数のあらゆる適切なコンポーネントを有するあらゆる適切なコンピュータシステムを考えている。
【００２６】
特定の実施形態において、プロセッサ８０２は、命令（例えば、コンピュータプログラムを編成する命令、等）を実行するためのハードウェアを有する。限定されない例として、命令を実行するために、プロセッサ８０２は、内部レジスタ、内部キャッシュ、メモリ８０４、又は記憶装置８０６から命令を取り出し（すなわち、フェッチし）、それらをデコード及び実行し、１又はそれ以上の結果を内部レジスタ、内部キャッシュ、メモリ８０４、又は記憶装置８０６に書き込んでよい。特定の実施形態において、プロセッサ８０２は、データ、命令、又はアドレスのための１又はそれ以上の内部キャッシュを有してよい。本開示は、必要に応じて、あらゆる適切な数のあらゆる適切な内部キャッシュを有するプロセッサ８０２を考えている。限定されない例として、プロセッサ８０２は、１又はそれ以上の命令キャッシュ、１又はそれ以上のデータキャッシュ、及び１又はそれ以上の変換索引バッファ（ＴＬＢ）を有してよい。命令キャッシュに含まれる命令は、メモリ８０４又は記憶装置８０６に記憶されている命令のコピーであってよく、命令キャッシュは、プロセッサ８０２によるそれらの命令の取り出しを速めることができる。データキャッシュに含まれるデータは、プロセッサ８０２における命令実行が機能する８０４又は記憶装置８０６内のデータ、プロセッサ８０２におけるその後の命令実行によるアクセスのための又はメモリ８０４若しくは記憶装置８０６への書き込みのためのプロセッサ８０２で実行された前の命令の結果、あるいは、他の適切なデータのコピーであってよい。ＴＬＢは、プロセッサ８０２のための仮想アドレス変換を速めることができる。特定の実施形態において、プロセッサ８０２は、データ、命令、又はアドレスのための１又はそれ以上の内部レジスタを有してよい。本開示は、必要に応じて、あらゆる適切な数のあらゆる適切な内部レジスタを有するプロセッサ８０２を考えている。必要に応じて、プロセッサ８０２は、１又はそれ以上の算術論理演算ユニット（ＡＬＵ）を有しても、マルチコア・プロセッサであっても、あるいは、１又はそれ以上のプロセッサ８０２を有してもよい。本開示は特定のプロセッサについて記載及び図示しているが、本開示はあらゆる適切なプロセッサを考えている。
【００２７】
特定の実施形態において、メモリ８０４は、プロセッサ８０２が実行する命令又はプロセッサ８０２が機能するデータを記憶するメインメモリを有する。限定されない例として、コンピュータシステム８００は、記憶装置８０６又は他のソース（例えば、他のコンピュータシステム８００）からメモリ８０４へ命令をロードしてよい。次いで、プロセッサ８０２は、メモリ８０４から内部レジスタ又は内部キャッシュへ命令をロードしてよい。命令を実行するよう、プロセッサ８０２は、内部レジスタ又は内部キャッシュから命令を取り出し、それらをデコードしてよい。命令の実行中又はその後に、プロセッサ８０２は、１又はそれ以上の結果（中間又は最終の結果であってよい。）を内部レジスタ又は内部キャッシュに書き込んでよい。次いで、プロセッサ８０２は、それらの結果の１又はそれ以上をメモリ８０４へ書き込んでよい。特定の実施形態において、プロセッサ８０２は、（記憶装置８０６又は他の場所とは対照的に）１又はそれ以上の内部レジスタ若しくは内部キャッシュにおける又はメモリ８０４における命令のみを実行し、（記憶装置８０６又は他の場所とは対照的に）１又はそれ以上の内部レジスタ若しくは内部キャッシュにおける又はメモリ８０４におけるデータに対してのみ動作する。１又はそれ以上のメモリバス（夫々、アドレスバス及びデータバスを有してよい。）は、プロセッサ８０２をメモリ８０４へ結合してよい。バス８１２は、以下で記載されるように、１又はそれ以上のメモリバスを有してよい。特定の実施形態において、１又はそれ以上のメモリ管理ユニット（ＭＭＵ）は、プロセッサ８０２とメモリ８０４との間に存在し、プロセッサによって要求されるメモリ８０４へのアクセスを助ける。特定の実施形態において、メモリ８０４はランダムアクセスメモリ（ＲＡＭ）を有する。このＲＡＭは、必要に応じて、揮発性メモリであってよい。必要に応じて、このＲＡＭは動的ＲＡＭ（ＤＲＡＭ）又は静的ＲＡＭ（ＳＲＡＭ）であってよい。更に、必要に応じて、このＲＡＭは、シングルポート又はマルチポートＲＡＭであってよい。本開示は、あらゆる適切なＲＡＭを考えている。メモリ８０４は、必要に応じて、１又はそれ以上のメモリ８０４を有してよい。本開示は特定のメモリについて記載及び図示しているが、本開示は、あらゆる適切なメモリを考えている。
【００２８】
特定の実施形態において、記憶装置８０６は、データ又は命令のための大容量記憶装置を有する。限定されない例として、記憶装置８０６は、ＨＤＤ、フロッピー（登録商標）ディスクドライブ、フラッシュメモリ、光ディスク、磁気光学ディスク、磁気テープ、若しくはユニバーサルシリアルバス（ＵＳＢ）ドライバ、又はそれらの２若しくはそれ以上の組み合わせを有してよい。記憶装置８０６は、必要に応じて、取り外し可能な又は取り外し不可能な（すなわち、固定された）媒体を有してよい。記憶装置８０６は、必要に応じて、コンピュータシステム８００の内部又は外部にあってよい。特定の実施形態において、記憶装置８０６は不揮発性のソリッドステートメモリである。特定の実施形態において、記憶装置８０６は読出専用メモリ（ＲＯＭ）を有する。必要に応じて、このＲＯＭは、マスクプログラムＲＯＭ、プログラム可能ＲＯＭ（ＰＲＯＭ）、消去可能ＰＲＯＭ（ＥＰＲＯＭ）、電気的消去可能ＰＲＯＭ（ＥＥＰＲＯＭ）、消去再書込ＲＯＭ（ＥＡＥＯＭ）、若しくはフラッシュメモリ、又はそれらの２若しくはそれ以上の組み合わせであってよい。本開示は、あらゆる適切な物理的な形態をとる大容量記憶装置８０６を考えている。記憶装置８０６は、必要に応じて、プロセッサ８０２と記憶装置８０６との間の通信を助ける１又はそれ以上の記憶制御ユニットを有してよい。必要に応じて、記憶装置８０６は、１又はそれ以上の記憶装置８０６を有してよい。本開示は特定の記憶装置について記載及び図示しているが、本開示はあらゆる適切な記憶装置を考えている。
【００２９】
特定の実施形態において、Ｉ／Ｏインターフェース８０８は、コンピュータシステム８００と１又はそれ以上のＩ／Ｏデバイスとの間の通信のための１又はそれ以上のインターフェースを提供するハードウェア、ソフトウェア又はそれら両方を有する。コンピュータシステム８００は、必要に応じて、それらのＩ／Ｏデバイスの１又はそれ以上を有してよい。それらのＩ／Ｏデバイスの１又はそれ以上は、人とコンピュータシステム８００との間の通信を可能にしてよい。限定されない例として、Ｉ／Ｏデバイスは、キーボード、キーパッド、マイクロホン、モニタ、マウス、プリンタ、スキャナ、スピーカ、静止カメラ、スタイラス、タブレット、タッチスクリーン、トラックボール、ビデオカメラ、他の適切なＩ／Ｏデバイス、又はそれらの２若しくはそれ以上の組み合わせを有してよい。Ｉ／Ｏデバイスは、１又はそれ以上のセンサを有してよい。本開示は、あらゆる適切なＩ／Ｏデバイス及びそれらのためのあらゆる適切なＩ／Ｏインターフェース８０８を考えている。必要に応じて、Ｉ／Ｏインターフェース８０８は、プロセッサ８０２がそれらのＩ／Ｏデバイスの１又はそれ以上を駆動することを可能にする１又はそれ以上のデバイス又はソフトウェアドライバを有してよい。Ｉ／Ｏインターフェース８０８は、必要に応じて、１又はそれ以上のＩ／Ｏインターフェース８０８を有してよい。本開示は特定のＩ／Ｏインターフェースについて記載及び図示しているが、本開示は、あらゆる適切なＩ／Ｏインターフェースを考えている。
【００３０】
特定の実施形態において、通信インターフェース８１０は、コンピュータシステム８００と１若しくはそれ以上の他のコンピュータシステム８００又は１若しくはそれ以上のネットワークとの間の通信（例えば、パケットに基づく通信）のための１又はそれ以上のインターフェースを提供するハードウェア、ソフトウェア、又はそれら両方を有する。限定されない例として、通信インターフェース８１０は、イーサネット（登録商標）若しくは他の有線に基づくネットワークと通信するためのネットワークインターフェースコントローラ（ＮＩＣ）若しくはネットワークアダプタ、又は無線ネットワーク（例えば、Ｗｉ−Ｆｉネットワーク）と通信するための無線ＮＩＣ（ＷＮＩＣ）若しくは無線アダプタを有してよい。本開示は、あらゆる適切なネットワーク及びそのためのあらゆる適切な通信インターフェース８１０を考えている。限定されない例として、コンピュータシステム８００は、アドホック（ad  hoc）ネットワーク、パーソナルエリアネットワーク（ＰＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、又はインターネットの１若しくはそれ以上の部分、あるいは、それらの２又はそれ以上の組み合わせと通信してよい。それらのネットワークのうちの１又はそれ以上の１又はそれ以上の部分は、有線又は無線であってよい。一例として、コンピュータシステム８００は、無線ＰＡＮ（ＷＰＡＮ）（例えば、ブルートゥースＷＰＡＮ）、Ｗｉ−Ｆｉネットワーク、Ｗｉ−ＭＡＸネットワーク、携帯電話ネットワーク（例えば、ＧＳＭ（Global  System  for  Mobile  Communications）ネットワーク）、若しくは他の適切な無線ネットワーク、又はそれらの２若しくはそれ以上の組み合わせと通信してよい。コンピュータシステム８００は、必要に応じて、それらのネットワークのいずれかのための何らかの適切な通信インターフェース８１０を有してよい。通信インターフェース８１０は、必要に応じて、１又はそれ以上の通信インターフェース８１０を有してよい。本開示は特定の通信インターフェースについて記載及び図示しているが、本開示は、あらゆる適切な通信インターフェースを考えている。
【００３１】
特定の実施形態において、バス８１２は、コンピュータシステム８００のコンポーネントを互いに結合するためのハードウェア、ソフトウェア、又はそれら両方を有する。限定されない例として、バス８１２は、ＡＧＰ（Accelerated  Graphics  Port）若しくは他のグラフィックスバス、ＥＩＳＡ（Enhanced  Industry  Standard  Architecture）バス、フロントサイドバス（ＦＳＢ）、ＨＴ（ＨＹＰＥＲＴＲＡＮＳＰＯＲＴ）インターコネクト、ＩＳＡ（Industry  Standard  Architecture）バス、ＩＮＦＩＮＩＢＡＮＤインターコネクト、ＬＰＣ（low-pin-count）バス、メモリバス、ＭＣＡ（Micro  Channel  Architecture）バス、ＰＣＩ（Peripheral  Component  Interconnect）バス、ＰＣＩ−Ｘ（PCI-Express）バス、ＳＡＴＡ（serial  advanced  technology  attachment）バス、ＶＬＢ（Video  Electronics  Standards  Association  local）バス、若しくは他の適切なバス、又はそれらの２若しくはそれ以上の組み合わせを有してよい。バス８１２は、必要に応じて、１又はそれ以上のバス８１２を有してよい。本開示は特定のバスについて記載及び図示しているが、本開示は、あらゆる適切なバス又はインターコネクトを考えている。
【００３２】
ここで、コンピュータ読取可能な記憶媒体との言及は、１又はそれ以上の持続性の、有形なコンピュータ読取可能な記憶媒体の処理構成を含む。限定されない例として、コンピュータ読取可能な記憶媒体は、必要に応じて、半導体に基づく又は他の集積回路（ＩＣ）（例えば、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）又は特定用途向けＩＣ（ＡＳＩＣ））、ハードディスク、ＨＤＤ、ハイブリッドハードドライブ（ＨＨＤ）、光ディスク、光ディスクドライブ（ＯＤＤ）、磁気光学ディスク、磁気光学ドライブ、フロッピー（登録商標）ディスク、フロッピー（登録商標）ディスクドライブ（ＦＤＤ）、磁気テープ、ホログラフィック記憶媒体、ソリッドステートドライブ（ＳＳＤ）、ＲＡＭドライブ、セキュアデジタル（ＳＤ）カード、ＳＤドライブ、若しくは他の適切なコンピュータ読取可能な記憶媒体、又はそれらの２若しくはそれ以上の組み合わせを有してよい。ここで、コンピュータ読取可能な記憶媒体との言及は、３５Ｕ．Ｓ．Ｃ第１０１条において保護対象となっていない如何なる媒体も除外する。ここで、コンピュータ読取可能な記憶媒体との言及は、３５Ｕ．Ｓ．Ｃ第１０１条において保護対象となっていない限りにおいて、信号の一時的な形態を除外する。コンピュータ読取可能な記憶媒体は、必要に応じて、揮発性、不揮発性、又は揮発性及び不揮発性の組み合わせであってよい。
【００３３】
本開示は、あらゆる適切な記憶装置を実装する１又はそれ以上のコンピュータ読取可能な記憶媒体を考えている。特定の実施形態において、コンピュータ読取可能な記憶媒体は、プロセッサ８０２の１又はそれ以上の部分（例えば、１又はそれ以上の内部レジスタ又はキャッシュ）、メモリ８０４の１又はそれ以上の部分、記憶装置８０６の１又はそれ以上の部分、又はそれらの組み合わせを実装する。特定の実施形態において、コンピュータ読取可能な記憶媒体はＲＡＭ又はＲＯＭを実装する。特定の実施形態において、コンピュータ読取可能な記憶媒体は、揮発性又は持続性のメモリを実装する。特定の実施形態において、１又はそれ以上のコンピュータ読取可能な記憶媒体はソフトウェアを具現する。ここで、ソフトウェアとの言及は、必要に応じて、１又はそれ以上のアプリケーション、バイトコード、１又はそれ以上のコンピュータプログラム、１又はそれ以上の実行ファイル、１又はそれ以上の命令、ロジック、マシンコード、１又はそれ以上のスクリプト、又はソースコードを包含してよく、逆の場合も同様である。特定の実施形態において、ソフトウェアは、１又はそれ以上のアプリケーション・プログラミング・インターフェース（ＡＳＩ）を有する。本開示は、あらゆる適切なプログラミング言語又はプログラミング言語の組み合わせにおいて記述され又は別なふうに表現されるあらゆる適切なソフトウェアを考えている。特定の実施形態において、ソフトウェアはソースコード又はオブジェクトコードとして表される。特定の実施形態において、ソフトウェアは、より高度なプログラミング言語（例えば、Ｃ、Ｐｅｒｌ、又はそれらの適切な拡張）において表される。特定の実施形態において、ソフトウェアは、より低レベルのプログラミング言語（例えば、アセンブリ言語（すなわち、マシンコード））において表される。特定の実施形態において、ソフトウェアは、ＪＡＶＡ（登録商標）において表される。特定の実施形態において、ソフトウェアは、ＨＴＭＬ（Hyper  Text  Markup  Language）、ＸＭＬ（Extensible  Markup  Language）、又は他の適切なマークアップ言語において表される。
【００３４】
図９は、例となるネットワーク環境９００を表す。特定の実施形態は、ネットワーク環境９００において、ここで記載又は図示されている１又はそれ以上の方法の１又はそれ以上のステップを実行してよい。特定の実施形態において、ネットワーク環境９００の１又はそれ以上の要素は、ここで記載又は図示されている機能を提供する。特定の実施形態は、ネットワーク環境９００の１又はそれ以上の部分を有する。
【００３５】
ネットワーク環境９００は、１又はそれ以上のサーバ９２０及び１又はそれ以上のクライアント９３０を互いに結合するネットワーク９１０を有する。特定の実施形態において、ネットワーク９１０は、イントラネット、エクストラネット、仮想プライベートネットワーク（ＶＰＮ）、ＬＡＮ、無線ＬＡＮ（ＷＬＡＮ）、ＷＡＮ、ＭＡＮ、通信ネットワーク、衛星ネットワーク、インターネットの一部、あるいは、他のネットワーク９１０又は２若しくはそれ以上のそのようなネットワーク９１０の組み合わせである。本開示は、あらゆる適切なネットワーク９１０を考えている。
【００３６】
１又はそれ以上のリンク９５０は、サーバ９２０又はクライアント９３０をネットワーク９１０へ結合する。特定の実施形態において、１又はそれ以上のリンク９５０は、夫々、１又はそれ以上の有線、無線又は光リンク９５０を有する。特定の実施形態において、１又はそれ以上のリンク９５０は、夫々、イントラネット、エクストラネット、ＶＰＮ、ＬＡＮ、ＷＬＡＮ、ＷＡＮ、ＭＡＮ、通信ネットワーク、衛星ネットワーク、インターネットの一部、あるいは、他のリンク９５０又は２若しくはそれ以上のそのようなリンク９５０の組み合わせを有する。本開示は、サーバ９２０及びクライアント９３０をネットワーク９１０へ結合するあらゆる適切なリンク９５０を考えている。
【００３７】
特定の実施形態において、夫々のサーバ９２０は、単一サーバであってよく、あるいは、複数のコンピュータ又は複数のデータセンタ２及ぶ分散型サーバであってよい。サーバ９２０は、様々なタイプ、例えば、ウェブサーバ、ニュースサーバ、メールサーバ、メッセージサーバ、広告サーバ、ファイルサーバ、アプリケーションサーバ、交換サーバ、データベースサーバ、又はプロキシサーバであってよいが、これらに限られない。特定の実施形態において、夫々のサーバ９２０は、サーバ９２０によって実施又はサポートされる適切な機能を実行するためのハードウェア、ソフトウェア、あるいは、埋込式ロジックコンポーネント又は２若しくはそれ以上のそのようなコンポーネントの組み合わせを有してよい。例えば、ウェブサーバは、一般的に、ウェブページ又はウェブページの特定の要素を含むウェブサイトをホスティングすることができる。より具体的に、ウェブサーバは、ＨＴＭＬファイル又は他のファイルタイプをホスティングしてよく、あるいは、要求があるとファイルを動的に作成又は構成し、それらをクライアントからのＨＴＴＰ又は他のリクエストに応答してクライアント９３０へ送ってよい。メールサーバは、一般的に、電子メールサービスを様々なクライアント９３０へ提供することができる。データベースサーバは、一般的に、１又はそれ以上のデータ記憶部に記憶されているデータを管理するインターフェースを提供することができる。
【００３８】
特定の実施形態において、夫々のクライアント９３０は、ハードウェア、ソフトウェア、あるいは、埋込式ロジックコンポーネント又は２若しくはそれ以上のそのようなコンポーネントの組み合わせを有し、クライアント９３０によって実施又はサポートされる適切な機能を実行することができる電子デバイスであってよい。限定されない例として、クライアント９３０は、デスクトップ型コンピュータシステム、ノートブック型コンピュータシステム、ネットブック型コンピュータシステム、携帯型電子デバイス、又は携帯電話機であってよい。クライアント９３０は、クライアント９３０でのネットワークユーザがネットワーク９１０にアクセスすることを可能にしてよい。クライアント９３０は、ウェブブラウザ（例えば、マイクロソフト（登録商標）のインターネット・エクスプローラ又はモジラのファイヤフォックス、等）を有してよく、１又はそれ以上のアドオン、プラグイン、又は他の拡張（例えば、グーグル（登録商標）ツールバー又はヤフー（登録商標）ツールバー、等）を有してよい。クライアント９３０は、そのユーザが他のクライアント９３０での他のユーザと通信することを可能にしてよい。本開示は、あらゆる適切なクライアント９３０を考えている。
【００３９】
特定の実施形態において、１又はそれ以上のデータ記憶装置９４０は、１又はそれ以上のリンク９５０を介して１又はそれ以上のサーバ９２０へ通信上リンクされてよい。特定の実施形態において、データ記憶装置９４０は、様々なタイプの情報を記憶するために使用されてよい。特定の実施形態において、データ記憶装置９４０に記憶されている情報は、特定のデータ構造に従って体系化されてよい。特定の実施形態は、サーバ９２０又はクライアント９３０が、データ記憶装置９４０に記憶されている情報を管理（例えば、取り出、変更、付加又は消去）することを可能にするインターフェースを提供してよい。
【００４０】
特定の実施形態において、サーバ９２０は検索エンジン９２２を有してよい。検索エンジン９２２は、検索エンジン９２２によって実施又はサポートされる適切な機能を実行するハードウェア、ソフトウェア、あるいは、埋込式ロジックコンポーネント又は２若しくはそれ以上のそのようなコンポーネントの組み合わせを有してよい。限定されない例として、検索エンジン９２２は、検索エンジン９２２で受け取られる検索クエリに応答してネットワークリソースを識別するために使用される１又はそれ以上の検索アルゴリズム、識別されたネットワークリソースを順位付けするために使用される１又はそれ以上の順位付けアルゴリズム、識別されたネットワークリソースを要約するために使用される１又はそれ以上の要約アルゴリズム、等を実装してよい。検索エンジン９２２によって実装される順位付けアルゴリズムは、検索クエリ及びクリックされたＵＲＬの対から成るトレーニングデータの組を用いてトレーニングされる。
【００４１】
特定の実施形態において、サーバ９２０は、データモニタ／コレクタ９２４を更に有してよい。データモニタ／コレクタ９２４は、データモニタ／コレクタ９２４によって実施又はサポートされる適切な機能を実行するハードウェア、ソフトウェア、あるいは、埋込式ロジックコンポーネント又は２若しくはそれ以上のそのようなコンポーネントの組み合わせを有してよい。限定されない例として、データモニタ／コレクタ９２４は、サーバ９２０にあるネットワークトラフィックデータをモニタし収集し、収集されたネットワークトラフィックデータを１又はそれ以上のデータ記憶装置９４０に記憶してよい。次いで、検索クエリ及びクリックされたＵＲＬの対が、ネットワークトラフィックデータから取り出されてよい。
【００４２】
ここで、「又は（or）」は、文脈によって別なふうに明示的に示されない限り、包含的であり、排他的ではない。従って、ここでは、「Ａ又はＢ」は、文脈によって別なふうに明示的に示されない限り、「Ａ、Ｂ又はそれら両方」を意味する。更に、「及び（and）」は、文脈によって別なふうに明示的に示されない限り、結合及び可分の両方である。従って、ここでは、「Ａ及びＢ」は、文脈によって別なふうに明示的に示されない限り、「Ａ及びＢを、一緒に又は別々に」を意味する。
【００４３】
本開示は、ここで挙げられている実施例に対する全ての変更、置換、変形、代替及び改良を包含し、これらの変更等は、当業者によって理解されうる。同様に、必要に応じて、添付の特許請求の範囲は、当業者によって理解されうる、ここで挙げられている実施例に対する全ての変更、置換、変形、代替及び改良を包含する。更に、特定の機能を実行するよう適応され、配置され、構成され、動作可能であり、動作し、又は特定の機能を実行することが可能であり、又は特定の機能を実行することを可能にされる装置若しくはシステム又は装置若しくはシステムのコンポーネントに対する特許請求の範囲における言及は、装置、システム又はコンポーネントがそのように適応され、適応され、配置され、構成され、動作可能であり、動作し、能力を有し、可能にされる限り、特定の機能が作動し、オンされ、又は解除される装置、システム又はコンポーネントを包含する。
【００４４】
以上の実施形態に関し、更に以下の付記を開示する。
（付記１）
１又はそれ以上のコンピュータシステムによって、
イベント駆動型のアプリケーションの１又はそれ以上のＪＳＰファイル、１又はそれ以上のＸＭＬ設定ファイル、及び１又はそれ以上のクラスファイルにアクセスし、
前記ＪＳＰファイルを解析し、前記イベント駆動型のアプリケーションによってサポートされるユーザ又はサーバイベントをエンコードするＪＳＰファイルからデータを取り出し、
前記ＸＭＬ設定ファイルを解析し、展開される場合に前記イベント駆動型のアプリケーションによって使用される定義をエンコードするＸＭＬ設定ファイルからデータを取り出し、
前記クラスファイルを解析し、展開される場合に前記イベント駆動型のアプリケーションによって使用される１若しくはそれ以上のアクション又は１若しくはそれ以上のフォームをエンコードするクラスファイルからデータを取り出し、
前記取り出されたデータを抽象構文木として記憶し、
前記抽象構文木に基づき前記イベント駆動型のアプリケーションのページ遷移グラフをポピュレートし、
前記イベント駆動型のアプリケーションにおけるナビゲーションエラーについて前記ページ遷移グラフをチェックする、
ことを特徴とする方法。
（付記２）
前記ナビゲーションエラーは、
１又はそれ以上の到達不能ページ、
１又はそれ以上のゴーストページ、あるいは
１又はそれ以上の未定義の遷移
の中の１又はそれ以上を有する、付記１に記載の方法。
（付記３）
前記イベント駆動型のアプリケーションは、ウェブアプリケーションである、
付記１に記載の方法。
（付記４）
前記イベント駆動型のアプリケーションは、ＳＴＲＵＴＳに基づくウェブアプリケーションである、
付記１に記載の方法。
（付記５）
ポピュレートされる場合に前記ページ遷移グラフは、
前記イベント駆動型のアプリケーションの１又はそれ以上のページと、
前記イベント駆動型のアプリケーションの１又はそれ以上のゴーストページと、
前記イベント駆動型のアプリケーションによってサポートされる前記ユーザ又はサーバイベントの１又はそれ以上と、
参照されるが定義されていない１又はそれ以上のユーザ又はサーバイベントと、
前記ユーザ又はサーバイベントの１又はそれ以上を処理する１又はそれ以上のイベントハンドラと、
前記ユーザ又はサーバイベントの１又はそれ以上のための１又はそれ以上のイベントデータと
をエンコードする、付記１に記載の方法。
（付記６）
実行される場合に、
イベント駆動型のアプリケーションの１又はそれ以上のＪＳＰファイル、１又はそれ以上のＸＭＬ設定ファイル、及び１又はそれ以上のクラスファイルにアクセスし、
前記ＪＳＰファイルを解析し、前記イベント駆動型のアプリケーションによってサポートされるユーザ又はサーバイベントをエンコードするＪＳＰファイルからデータを取り出し、
前記ＸＭＬ設定ファイルを解析し、展開される場合に前記イベント駆動型のアプリケーションによって使用される定義をエンコードするＸＭＬ設定ファイルからデータを取り出し、
前記クラスファイルを解析し、展開される場合に前記イベント駆動型のアプリケーションによって使用される１若しくはそれ以上のアクション又は１若しくはそれ以上のフォームをエンコードするクラスファイルからデータを取り出し、
前記取り出されたデータを抽象構文木として記憶し、
前記抽象構文木に基づき前記イベント駆動型のアプリケーションのページ遷移グラフをポピュレートし、
前記イベント駆動型のアプリケーションにおけるナビゲーションエラーについて前記ページ遷移グラフをチェックする、
よう動作するソフトウェアを具現する１又はそれ以上のコンピュータ読取可能な持続性記憶媒体。
（付記７）
前記ナビゲーションエラーは、
１又はそれ以上の到達不能ページ、
１又はそれ以上のゴーストページ、あるいは
１又はそれ以上の未定義の遷移
の中の１又はそれ以上を有する、付記６に記載の媒体。
（付記８）
前記イベント駆動型のアプリケーションは、ウェブアプリケーションである、
付記６に記載の媒体。
（付記９）
前記イベント駆動型のアプリケーションは、ＳＴＲＵＴＳに基づくウェブアプリケーションである、
付記６に記載の媒体。
（付記１０）
ポピュレートされる場合に前記ページ遷移グラフは、
前記イベント駆動型のアプリケーションの１又はそれ以上のページと、
前記イベント駆動型のアプリケーションの１又はそれ以上のゴーストページと、
前記イベント駆動型のアプリケーションによってサポートされる前記ユーザ又はサーバイベントの１又はそれ以上と、
参照されるが定義されていない１又はそれ以上のユーザ又はサーバイベントと、
前記ユーザ又はサーバイベントの１又はそれ以上を処理する１又はそれ以上のイベントハンドラと、
前記ユーザ又はサーバイベントの１又はそれ以上のための１又はそれ以上のイベントデータと
をエンコードする、付記６に記載の媒体。
（付記１１）
１又はそれ以上のプロセッサによって実行される命令を含むメモリと、
前記メモリへ結合され、前記命令を実行するよう動作する１又はそれ以上のプロセッサと
を有し、
前記１又はそれ以上のプロセッサは、前記命令を実行する場合に、
イベント駆動型のアプリケーションの１又はそれ以上のＪＳＰファイル、１又はそれ以上のＸＭＬ設定ファイル、及び１又はそれ以上のクラスファイルにアクセスし、
前記ＪＳＰファイルを解析し、前記イベント駆動型のアプリケーションによってサポートされるユーザ又はサーバイベントをエンコードするＪＳＰファイルからデータを取り出し、
前記ＸＭＬ設定ファイルを解析し、展開される場合に前記イベント駆動型のアプリケーションによって使用される定義をエンコードするＸＭＬ設定ファイルからデータを取り出し、
前記クラスファイルを解析し、展開される場合に前記イベント駆動型のアプリケーションによって使用される１若しくはそれ以上のアクション又は１若しくはそれ以上のフォームをエンコードするクラスファイルからデータを取り出し、
前記取り出されたデータを抽象構文木として記憶し、
前記抽象構文木に基づき前記イベント駆動型のアプリケーションのページ遷移グラフをポピュレートし、
前記イベント駆動型のアプリケーションにおけるナビゲーションエラーについて前記ページ遷移グラフをチェックする、
よう動作する、装置。
（付記１２）
前記ナビゲーションエラーは、
１又はそれ以上の到達不能ページ、
１又はそれ以上のゴーストページ、あるいは
１又はそれ以上の未定義の遷移
の中の１又はそれ以上を有する、付記１１に記載の装置。
（付記１３）
前記イベント駆動型のアプリケーションは、ウェブアプリケーションである、
付記１１に記載の装置。
（付記１４）
前記イベント駆動型のアプリケーションは、ＳＴＲＵＴＳに基づくウェブアプリケーションである、
付記１１に記載の装置。
（付記１５）
ポピュレートされる場合に前記ページ遷移グラフは、
前記イベント駆動型のアプリケーションの１又はそれ以上のページと、
前記イベント駆動型のアプリケーションの１又はそれ以上のゴーストページと、
前記イベント駆動型のアプリケーションによってサポートされる前記ユーザ又はサーバイベントの１又はそれ以上と、
参照されるが定義されていない１又はそれ以上のユーザ又はサーバイベントと、
前記ユーザ又はサーバイベントの１又はそれ以上を処理する１又はそれ以上のイベントハンドラと、
前記ユーザ又はサーバイベントの１又はそれ以上のための１又はそれ以上のイベントデータと
をエンコードする、付記１１に記載の装置。
（付記１６）
イベント駆動型のアプリケーションの１又はそれ以上のＪＳＰファイル、１又はそれ以上のＸＭＬ設定ファイル、及び１又はそれ以上のクラスファイルにアクセスする手段と、
前記ＪＳＰファイルを解析し、前記イベント駆動型のアプリケーションによってサポートされるユーザ又はサーバイベントをエンコードするＪＳＰファイルからデータを取り出す手段と、
前記ＸＭＬ設定ファイルを解析し、展開される場合に前記イベント駆動型のアプリケーションによって使用される定義をエンコードするＸＭＬ設定ファイルからデータを取り出す手段と、
前記クラスファイルを解析し、展開される場合に前記イベント駆動型のアプリケーションによって使用される１若しくはそれ以上のアクション又は１若しくはそれ以上のフォームをエンコードするクラスファイルからデータを取り出す手段と、
前記取り出されたデータを抽象構文木として記憶する手段と、
前記抽象構文木に基づき前記イベント駆動型のアプリケーションのページ遷移グラフをポピュレートする手段と、
前記イベント駆動型のアプリケーションにおけるナビゲーションエラーについて前記ページ遷移グラフをチェックする手段と、
を有するシステム。
（付記１７）
前記ナビゲーションエラーは、
１又はそれ以上の到達不能ページ、
１又はそれ以上のゴーストページ、あるいは
１又はそれ以上の未定義の遷移
の中の１又はそれ以上を有する、付記１６に記載のシステム。
（付記１８）
前記イベント駆動型のアプリケーションは、ウェブアプリケーションである、
付記１６に記載のシステム。
（付記１９）
前記イベント駆動型のアプリケーションは、ＳＴＲＵＴＳに基づくウェブアプリケーションである、
付記１６に記載のシステム。
（付記２０）
ポピュレートされる場合に前記ページ遷移グラフは、
前記イベント駆動型のアプリケーションの１又はそれ以上のページと、
前記イベント駆動型のアプリケーションの１又はそれ以上のゴーストページと、
前記イベント駆動型のアプリケーションによってサポートされる前記ユーザ又はサーバイベントの１又はそれ以上と、
参照されるが定義されていない１又はそれ以上のユーザ又はサーバイベントと、
前記ユーザ又はサーバイベントの１又はそれ以上を処理する１又はそれ以上のイベントハンドラと、
前記ユーザ又はサーバイベントの１又はそれ以上のための１又はそれ以上のイベントデータと
をエンコードする、付記１６に記載のシステム。
【符号の説明】
【００４５】
４０１  コントローラ層
４０４  ＪＳＰ
４０６  アクション
４０８  ビジネス層
４１０  サービス
８００  コンピュータシステム
８０２  プロセッサ
８０４  メモリ
８０６  記憶装置
８０８  Ｉ／Ｏインターフェース
８１０  通信インターフェース
８１２  バス
９００  ネットワーク環境
９１０  ネットワーク
９２０  サーバ
９２２  検索エンジン
９２４  データモニタ／コレクタ
９３０  クライアント
９４０  データ記憶装置
９５０  リンク
【図１】
0005803499.tif 000002
【図２】
0005803499.tif 000003
【図３】
0005803499.tif 000004
【図４】
0005803499.tif 000005
【図５】
0005803499.tif 000006
【図６】
0005803499.tif 000007
【図７】
0005803499.tif 000008
【図８】
0005803499.tif 000009
【図９】
0005803499.tif 000010