(57)【要約】【課題】  データベースアプリケーションの分析用のデータベースモデルを生成するシステム及び方法を提供する。【解決手段】  本発明の特定の一実施形態によれば、データベースモデルを生成する方法は、データベースのデータベース設定データを分析することを含む。当該方法はまた、前記データベースにアクセスするための１つ以上のデータベース・アプリケーション・プログラミング・インタフェースを分析することを含む。当該方法は更に、前記分析に基づいて１つ以上のスタブを生成することを含み、該１つ以上のスタブは、実行されたときに、前記データベースにデータが投入されているかのように前記データベースをモデル化するよう構成される。【選択図】  図３
2012018675.tif 000002
【特許請求の範囲】
【請求項１】
データベースのデータベース設定データを分析するステップと、
前記データベースにアクセスするための１つ以上のデータベース・アプリケーション・プログラミング・インタフェースを分析するステップと、
前記分析に基づいて１つ以上のスタブを生成するステップであり、該１つ以上のスタブは、実行されたときに、前記データベースにデータが投入されているかのように前記データベースをモデル化するよう構成される、生成するステップと、
を有するデータベースモデルを生成する方法。
【請求項２】
前記１つ以上のスタブはＪａｖａコードで記述される、請求項１に記載の方法。
【請求項３】
前記１つ以上のスタブをテスト対象アプリケーションのコードベースと結合して、該テスト対象アプリケーションを分析するためのホモジニアスな非分散型アプリケーションを生成するステップ、を更に有する請求項１に記載の方法。
【請求項４】
前記テスト対象アプリケーションはウェブアプリケーションである、請求項３に記載の方法。
【請求項５】
前記非分散型アプリケーションはＪａｖａコードで記述される、請求項３に記載の方法。
【請求項６】
コンピュータプログラムを格納したコンピュータ読み取り可能記憶媒体であって、該コンピュータプログラムは、実行されたときに、
データベースのデータベース設定データを分析し、
前記データベースにアクセスするための１つ以上のデータベース・アプリケーション・プログラミング・インタフェースを分析し、且つ
前記分析に基づいて１つ以上のスタブを生成し、該１つ以上のスタブは、実行されたときに、前記データベースにデータが投入されているかのように前記データベースをモデル化するよう構成される、
ように構成されている、コンピュータ読み取り可能記憶媒体。
【請求項７】
データベーススタブ生成モジュールを有するシステムであって、該データベーススタブ生成モジュールは、
データベースのデータベース設定データを分析し、
前記データベースにアクセスするための１つ以上のデータベース・アプリケーション・プログラミング・インタフェースを分析し、且つ
前記分析に基づいて１つ以上のスタブを生成し、該１つ以上のスタブは、実行されたときに、前記データベースにデータが投入されているかのように前記データベースをモデル化するよう構成される、
ように構成されている、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この開示は概して、ソフトウェア検証の分野に関し、より具体的にはデータベースアプリケーションの分析用のデータベースモデルを生成するシステム及び方法に関する。
【背景技術】
【０００２】
正規の検証技術は通常、閉じた、同種環境の（ホモジニアスな）非分散型アプリケーションに対して正常に機能する。例えば、一例に係る言語としてＪａｖａ(登録商標)を、そして一例に係る検証方法としてモデル検査を考えると、Ｊａｖａモデル検査技術は、純粋にＪａｖａで記述され且つ単一のＪａｖａ仮想マシン（ＪＶＭ）上で実行されるよう整えられた自己実行可能なプログラムに有効である。しかしながら、例えばウェブアプリケーションといった、開いた、異種環境の（ヘテロジニアスな）、事実上分散型のアプリケーションであって、１）エンドユーザによって推進され、２）数多くの言語（例えば、Ｊａｖａ、ＪａｖａＳｃｒｉｐｔ、ＨＴＭＬ、及びＸＭＬ）で記述された中間生成物を有し、且つ／或いは３）潜在的に相異なるマシン上に存在し得るクライアント、サーバ及びデータベースを備えた分散環境にて展開されるアプリケーション、が数多く存在する。Ｊａｖａモデル検査技術を適用するためには、全ての非Ｊａｖａコンポーネント（ユーザを含む）が純粋なＪａｖａ実装（Java  implementation）として表される必要がある。さらに、アプリケーションの分散性は、得られるＪａｖａプログラムが非分散型ではあるが元のアプリケーションの全ての関連挙動を保存するように対処される必要がある。全てのこのような処理作業と同様に、速さ、正確さ及び自動化に関する問題も非常に重要である。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
開示の技術は、先行技術に係る方法及びシステムに伴う欠点及び問題のうちの少なくとも一部を実質的に排除あるいは抑制することが可能な、データベースアプリケーションの分析用のデータベースモデルを生成するシステム及び方法を提供する。
【課題を解決するための手段】
【０００４】
本発明の特定の一実施形態によれば、データベースモデルを生成する方法は、データベースのデータベース設定データを分析することを含む。当該方法はまた、前記データベースにアクセスするための１つ以上のデータベース・アプリケーション・プログラミング・インタフェースを分析することを含む。当該方法は更に、前記分析に基づいて１つ以上のスタブを生成することを含み、該１つ以上のスタブは、実行されたときに、前記データベースにデータが投入されているかのように前記データベースをモデル化するよう構成される。
【発明の効果】
【０００５】
例えばモデル検査、記号的実行、静的分析及びテスティングなどの複数の技術によって使用されることが可能なテストハーネスと言い得るような、データベースをモデル化するスタブが生成される。
【０００６】
その他の技術的効果が、以下の詳細な説明、特許請求の範囲及び図面から、当業者に明らかになる。なお、特定の効果を上述したが、様々な実施形態は、上述の効果の全て若しくは一部を含むこともあるし、上述の効果を含まないこともあり得る。
【図面の簡単な説明】
【０００７】
本発明の特定の実施形態及びその利点の一層完全なる理解のため、以下の詳細な説明を、以下の図を含む図面とともに参照する。
【図１】この開示の特定の実施形態に従ったウェブアプリケーションドメインの一例を示す簡略ブロック図である。
【図２】この開示の特定の実施形態に従ったウェブアプリケーションの環境生成の一例を示す簡略ブロック図である。
【図３】この開示の特定の実施形態に従った、データベーススタブ生成モデルを有するスタブ生成システムを例示する簡略ブロック図である。
【図４】この開示の特定の実施形態に従った、ファイルデータベース設定ファイルの一例と、そのようなデータベース設定ファイルに基づいて生成されたスタブのコードとを示す図である。
【図５】この開示に従ったコンピュータシステムの一例を示す図である。
【発明を実施するための形態】
【０００８】
図１は、この開示の特定の実施形態に従ったウェブアプリケーションドメイン１０の一例を示す簡略図である。図１は、クライアント１２、データベース１８、及びサーバ１４（例えば、Ｊ２ＥＥサーバ）を含んでいる。ウェブアプリケーションドメイン１０の構成要素は、例えば図５を参照して更に詳細に後述するコンピュータシステムなどの１つ以上のコンピュータシステム内で実行あるいは動作する。
【０００９】
この開示によれば、ウェブアプリケーション用の環境生成（environment  generation）が創出され得る。環境生成の創出の一例に係る方法は、米国特許出願第１１／８６５４３５号に記載されている。なお、この文献の全体をここに援用する。その方法は、特にＪａｖａで記述された開いたヘテロジニアスな分散型ウェブアプリケーションを、正規の検証技術（例えば、Ｊａｖａモデル検査など）によって分析される準備の整った、閉じたホモジニアスな非分散型Ｊａｖａプログラムに変換することができる。
【００１０】
この技術は、ドライバ及びスラブの生成を提供する。ドライバ生成は、配備時に行われる、ウェブアプリケーションのイベント処理機構を構築するとともに、ユーザコンポーネントのＪａｖａ実装を作成する。スタブ生成は、例えばデータベースコンポーネント及びＪ２ＥＥコンポーネントなどの実際のコンポーネントを、重要な挙動を保存するが非分散型プログラムにて実行されるＪａｖａ実装で置き換えることができる。ドライバ及びスタブが生成されると、それらは元のアプリケーション特有のコードベース（元のライブラリを除く）と組み合わされ、閉じたホモジニアスな非分散型Ｊａｖａプログラムが作成される。
【００１１】
このような手法を用いることには数多くの利点が存在する。例えば、提供される方法は、独立型（スタンドアロン）ツールとしてパッケージ化されることができる。さらに、これらのツールは、特定のドメインに基づいて設定及び拡張を施されることができる。故に、これらのツールは多様なアプリケーションに適用されることが可能である。また、この方法は、例えばモデル検査、静的分析及びテスティングなどの複数の技術によって使用可能なテストハーネスと言い得るドライバ及びスタブを生み出す。
【００１２】
図１を再び参照するに、用語‘開いた’は、ユーザコンポーネントが、ウェブブラウザ、アプレット又はグラフィカルユーザインタフェース（ＧＵＩ）を介してアプリケーションを押し進める状況を意味する。用語‘ヘテロジニアス（異種環境）’は、Ｊａｖａに加えて、例えばＨＴＭＬ、ＪａｖａＳｃｒｉｐｔ、ＰＨＰ、Ｐｅｒｌなどの数多くのその他の言語が使用されることを意味する。本発明の状況において、‘複合’は、アプリケーションの主要部がデプロイメント記述子ファイルに従って配備時に生成される、典型的に事実上分散される多階層技術を暗示する。
【００１３】
このような方法は、特にＪａｖａで記述された開いたヘテロジニアスな分散型ウェブアプリケーションから、閉じたホモジニアスな非分散型Ｊａｖａアプリケーションを生成し得る。このようなアプリケーション用の環境生成は、モデル検査、静的分析及びテスティングと組み合わせて使用されることが可能な独立型ツールとしてパッケージ化されることができる。開いたヘテロジニアスな分散型ウェブアプリケーションをモデル検査するためのこのような環境生成は、既存のシステムでは現状において明らかにされていない。
【００１４】
Ｊａｖａクラス（例えば、再使用可能なライブラリを除くアプリケーション特有コードベース）の集合として被分析モジュールが与えられると、環境生成は該モジュールのドライバ及びスタブを作成する。ドライバは、制御のスレッドを保持するＪａｖａクラスであり、通常、該モジュールにコールをかける。残りの環境クラスはスタブと呼ばれる。ウェブアプリケーションのドメインにおいて、ドライバはエンドユーザをシミュレートし、スタブは例えばデータベース及びＪ２ＥＥライブラリなどのバックエンドコンポーネントをモデル化する。
【００１５】
図２は、この開示の特定の実施形態に従ったウェブアプリケーションの環境生成の一例を示す簡略ブロック図である。図２は、一組のドライバ２６、モジュール３０（例えば、ウェブアプリケーションの実行をシミュレートするサーブレット、エンタープライズＪａｖａビーンズ（ＥＪＢ）及び／又はその他のコンポーネントを含み得る）、及び一組のスタブ３４（例えば、データベース１８などのデータベースをモデル化するためのｊａｖａ．ｓｑｌコンポーネント及び／又はその他の好適なコンポーネントを含み得る）を含んでいる。モジュール３０は、本発明の処理を実行するために必要なアイテムを含み得るデータベースに結合される。環境生成２０の構成要素は、例えば図５を参照して更に詳細に後述するコンピュータシステムなどの１つ以上のコンピュータシステム内で実行あるいは動作し得る。
【００１６】
典型的にウェブアプリケーションの開発者によって記述されるコードであるアプリケーションコードが、図２のモジュール３０内に含められ得る。ドライバ２６は、配備時に発生するアイテム（例えば、アプリケーションのイベントハンドラを設定すること）及びユーザアクションをシミュレートし得る。ドライバ２６の生成は、この開示の範囲を超える事項であり、ドライバ２６の生成方法は、同時継続中の米国特許出願第１１／８６５４３５号にて議論されている。
【００１７】
図３は、この開示の特定の実施形態に従った、データベーススタブ生成モジュール５０を有するデータベーススタブ３４の生成システム４０を例示する簡略ブロック図である。システム４０の構成要素は、例えば図５を参照して更に詳細に後述するコンピュータシステムなどの１つ以上のコンピュータシステム内で実行あるいは動作し得る。図３に示すように、データベーススタブ生成モジュール５０は、データベース設定データ４２とデータベースＡＰＩ４４とを分析し、該分析に基づいてスタブ３４を生成し得る。
【００１８】
データベース設定データ４２は、データベース（例えば、データベース１８）の設定パラメータを説明する如何なるファイルであってもよい。設定パラメータは、データベースに関する如何なる情報（例えば、そのテーブル、コラム、及び保持するデータエントリの種類）を含んでいてもよい。一部の実施形態において、設定パラメータは、例えば図４の設定データ４２に示されるような１つ以上の拡張マークアップ言語（ＸＭＬ）ファイルにて具現化され得る。
【００１９】
データベースＡＰＩ４４は、ウェブアプリケーション（例えば、サーバ１４上で実行されるように構成されたウェブアプリケーション）がデータベース関連機能（例えば、データベースからテーブルを取得する機能、データベースからコラム若しくはローを取得する機能、データベースに書き込む機能など）を実行することを可能にするソフトウェアによって実装される１つ以上のアプリケーション・プログラミング・インタフェースとし得る。特定の実施形態において、データベースＡＰＩは、１つ以上のＳＱＬ（Structured  Query  Language）データベースを有し得る。
【００２０】
上述のように、データベーススタブ生成モジュール５０は、データベース設定データ４２とデータベースＡＰＩ４４とを分析し、該分析に基づいてスタブ３４を生成し得る。例えば、図４に示すように、データベース設定データ４２は、“ｌｏｇｉｎ”と呼ぶテーブル（table）を含むデータベースを記述する。テーブル“ｌｏｇｉｎ”は、“ｌｏｇｉｎｉｄ”と呼ぶフィールドと“ｐａｓｓｗｄ”と呼ぶフィールドとを有している。データベーススタブ生成モジュール５０は、設定データ４２を分析し、“ｌｏｇｉｎ”なるタイプのレコードを保持する“ｌｏｇｉｎ”と呼ぶテーブルを投入されたデータベースを有するスタブ３４を作成し得る。データベースのデータ値（例えば、“ｌｏｇｉｎｉｄ”及び“ｐａｓｓｗｄ”）は、具体値（例えば、“ｌｏｇｉｎｉｄ０”及び“ｐａｓｓｗｄ０”）を用いて、あるいは記号値（例えば、ＳＴＲＩＮＧ＿ＳＹＭＢＯＬＩＣ）を用いて生成される。記号値は記号的実行技術によって解釈されることができ、次いで記号的実行技術によって興味ある具体値が生成され得る。
【００２１】
データベーススタブ生成モジュール５０は、例えば、データタイプ当たり作成すべきレコード数や、生成すべきデータ値のタイプ（例えば、具体的又は記号的）などといったユーザ提供値によってパラメータ化されてもよい。
【００２２】
このようなシナリオにて、ウェブアプリケーション用の有利な環境生成技術が提供され得る。分散されたオープンシステム（必ずしもＪａｖａで記述される必要はなく、その他の言語も容易に使用され得る）は、該データを以下のように変換することができる。すなわち、最終結果が、例えばモデル検査、記号的実行、静的分析及びテスティングなどの既存のＪａｖａ分析技術によって実行されるように準備された、ホモジニアスで非分散型の純粋なＪａｖａプログラムになるように、該データを変換することができる。
【００２３】
図５は、一例に係るコンピュータシステム６００を示している。特定の実施形態において、１つ以上のコンピュータシステム６００が、ここに記載あるいは図示した１つ以上の方法の１つ以上のステップを実行する。特定の実施形態において、１つ以上のコンピュータシステム６００が、ここに記載あるいは図示した機能を提供する。特定の実施形態において、１つ以上のコンピュータシステム６００上で実行されるソフトウェアが、ここに記載あるいは図示した１つ以上の方法の１つ以上のステップを実行し、あるいは、ここに記載あるいは図示した機能を提供する。特定の実施形態は、１つ又は複数のコンピュータシステム６００の１つ以上の部分を含む。
【００２４】
この開示は、如何なる好適な数のコンピュータシステム６００をも意図している。この開示は、如何なる物理形態を採るコンピュータシステム６００をも意図している。非限定的な一例として、コンピュータシステム６００は、組込型コンピュータシステム、システム・オン・チップ（ＳＯＣ）、シングルボード・コンピュータシステム（ＳＢＣ）（例えば、コンピュータ・オン・モジュール（ＣＯＭ）若しくはシステム・オン・モジュール（ＳＯＭ）など）、デスクトップ型コンピュータシステム、ラップトップ型若しくはノート型のコンピュータシステム、対話式キオスク端末、メインフレーム、メッシュ状コンピュータシステム、携帯電話、携帯情報端末（ＰＤＡ）、サーバ、又はこれらの２つ以上の組み合わせとし得る。必要に応じて、コンピュータシステム６００は、単一あるいは分散型の；複数の位置にまたがる；複数の機械にまたがる；あるいはクラウド（１つ以上のネットワーク内に１つ以上のクラウド要素を含み得る）内の；１つ以上のコンピュータシステム６００を含んでいてもよい。必要に応じて、１つ以上のコンピュータシステム６００は、ここに記載あるいは図示した１つ以上の方法の１つ以上のステップを、空間的あるいは時間的な実質的な制約なく実行し得る。非限定的な一例として、１つ以上のコンピュータシステム６００は、ここに記載あるいは図示した１つ以上の方法の１つ以上のステップを、リアルタイムあるいはバッチモードで実行し得る。必要に応じて、１つ以上のコンピュータシステム６００は、相異なる時点で、あるいは相異なる位置で、ここに記載あるいは図示した１つ以上の方法の１つ以上のステップを実行してもよい。
【００２５】
特定の実施形態において、コンピュータシステム６００は、プロセッサ６０２、メモリ６０４、ストレージ６０６、入力／出力（Ｉ／Ｏ）インタフェース６０８、通信インタフェース６１０、及びバス６１２を含んでいる。この開示は、特定の構成にされた特定数の特定の構成要素を有する特定のコンピュータシステムを図示して説明しているが、この開示は、如何なる好適配置にされた如何なる好適数の如何なる好適構成要素を有する如何なる好適なコンピュータシステムをも意図している。
【００２６】
特定の実施形態において、プロセッサ６０２は、例えばコンピュータプログラムを構築する命令などの命令を実行するハードウェアを含む。非限定的な一例として、命令を実行するために、プロセッサ６０２は、内部レジスタ、内部キャッシュ、メモリ６０４、又はストレージ６０６から命令を取り出し（すなわち、フェッチし）；それを復号化して実行し；その後、１つ以上の結果を内部レジスタ、内部キャッシュ、メモリ６０４、又はストレージ６０６に書き込み得る。特定の実施形態において、プロセッサ６０２は、データ、命令又はアドレス用の１つ以上の内部キャッシュを含み得る。この開示は、プロセッサ６０２が必要に応じて、如何なる好適数の如何なる好適な内部キャッシュを含むことをも意図している。非限定的な一例として、プロセッサ６０２は、１つ以上の命令キャッシュと、１つ以上のデータキャッシュと、１つ以上のトランスレーション・ルックアサイド・バッファ（ＴＬＢ）とを含み得る。命令キャッシュ内の命令は、メモリ６０４又はストレージ６０６内の命令の複製としてもよく、命令キャッシュは、プロセッサ６０２によるこれら命令の取り出しを高速化し得る。データキャッシュ内のデータは、メモリ６０４又はストレージ６０６内の、プロセッサ６０２にて実行されている命令が処理すべきデータの複製；プロセッサ６０２にて実行される後続の命令によるアクセスのための、あるいはメモリ６０４又はストレージ６０６に書き込むための、プロセッサ６０２にて実行された以前の命令の結果；又はその他の好適データとし得る。データキャッシュは、プロセッサ６０２による読み出し処理又は書き込み処理を高速化し得る。ＴＬＢは、プロセッサ６０２のために仮想アドレス変換を高速化し得る。特定の実施形態において、プロセッサ６０２は、データ、命令又はアドレス用の１つ以上の内部レジスタを含み得る。この開示は、プロセッサ６０２が適宜、如何なる好適数の如何なる好適な内部レジスタを含むことをも意図している。必要に応じて、プロセッサ６０２は、１つ以上の演算論理ユニット（ＡＬＵ）を含んでいてもよく；マルチコアプロセッサであってもよく；あるいは１つ以上のプロセッサ６０２を含んでいてもよい。この開示は特定のプロセッサを図示して説明しているが、この開示は如何なる好適なプロセッサをも意図している。
【００２７】
特定の実施形態において、メモリ６０４は、プロセッサ６０２が実行する命令、又はプロセッサ６０２が処理するデータを格納するメインメモリを含む。非限定的な一例として、コンピュータシステム６００はストレージ６０６又は別のソース（例えば、別のコンピュータシステム６００など）からメモリ６０４に命令をロードし得る。その後、プロセッサ６０２は、メモリ６０４から内部レジスタ又は内部キャッシュに命令をロードし得る。命令を実行するため、プロセッサ６０２は、内部レジスタ又は内部キャッシュから命令を取り出し、取り出した命令を復号化する。命令の実行中又は実行後、プロセッサ６０２は、１つ以上の結果（中間結果又は最終結果とし得る）を内部レジスタ又は内部キャッシュに書き込み得る。そして、プロセッサ６０２は、それらの結果のうちの１つ以上をメモリ６０４に書き込み得る。特定の実施形態において、プロセッサ６０２は、１つ以上の内部レジスタ若しくは内部キャッシュ又はメモリ６０４内の命令のみを実行してもよく（ストレージ６０６又はその他の場所の命令を実行するのとは異なる）、また、１つ以上の内部レジスタ若しくは内部キャッシュ又はメモリ６０４内のデータのみを処理してもよい（ストレージ６０６又はその他の場所のデータを処理するのとは異なる）。１つ以上のメモリバス（各々がアドレスバス及びデータバスを含み得る）が、プロセッサ６０２をメモリ６０４に結合してもよい。バス６１２は、後述のように、１つ以上のメモリバスを含み得る。特定の実施形態において、１つ以上のメモリ管理装置（ＭＭＵ）が、プロセッサ６０２とメモリ６０４との間に存在し、プロセッサ６０２により要求されるメモリ６０４へのアクセスを容易にし得る。特定の実施形態において、メモリ６０４は、ランダムアクセスメモリ（ＲＡＭ）を含む。このＲＡＭは、適当であれば、揮発性メモリであってもよい。必要に応じて、このＲＡＭはダイナミックＲＡＭ（ＤＲＡＭ）又はスタティックＲＡＭ（ＳＲＡＭ）にされ得る。また、必要に応じて、このＲＡＭは、シングルポート又はマルチポートのＲＡＭにされ得る。この開示は、如何なる好適なＲＡＭをも意図している。メモリ６０４は、必要に応じて、１つ以上のメモリ６０４を含んでいてもよい。この開示は特定のメモリを図示して説明しているが、この開示は如何なる好適なメモリをも意図している。
【００２８】
特定の実施形態において、ストレージ６０６は、データ又は命令用の大容量記憶装置を含む。非限定的な一例として、ストレージ６０６は、ＨＤＤ、フロッピー（登録商標）ディスクドライブ、フラッシュメモリ、光ディスク、磁気光ディスク、磁気テープ、若しくはユニバーサル・シリアル・バス（ＵＳＢ）ドライブ、又はこれらの２つ以上の組み合わせを含み得る。ストレージ６０６は、必要に応じて、リムーバブル（取り外し可能）あるいは非リムーバブル（すなわち、固定）のメディアを含み得る。ストレージ６０６は、必要に応じて、コンピュータシステム６００の内部にあってもよいし、外部にあってもよい。特定の実施形態において、ストレージ６０６は、不揮発性のソリッドステートメモリである。特定の実施形態において、ストレージ６０６は、読み出し専用メモリ（ＲＯＭ）を含む。必要に応じて、このＲＯＭは、マスクプログラムされたＲＯＭ、プログラマブルＲＯＭ（ＰＲＯＭ）、消去可能ＰＲＯＭ（ＥＰＲＯＭ）、電気的消去可能ＰＲＯＭ（ＥＥＰＲＯＭ）、電気的消去再書込可能ＲＯＭ（ＥＡＲＯＭ）、若しくはフラッシュメモリ、又はこれらの２つ以上の組み合わせとし得る。この開示は、如何なる好適な物理形態を有する大容量記憶装置６０６をも意図している。ストレージ６０６は、必要に応じて、プロセッサ６０２とストレージ６０６との間での通信を容易にする１つ以上のストレージ制御装置を含み得る。必要に応じて、ストレージ６０６は１つ以上のストレージ６０６を含んでいてもよい。この開示は特定のストレージを図示して説明しているが、この開示は如何なる好適なストレージをも意図している。
【００２９】
特定の実施形態において、Ｉ／Ｏインタフェース６０８は、コンピュータシステム６００と１つ以上のＩ／Ｏ装置との間での通信のための１つ以上のインタフェースを提供するハードウェア、ソフトウェア、又はこれら双方を含む。コンピュータシステム６００は、必要に応じて、これらＩ／Ｏ装置のうちの１つ以上を含んでいてもよい。これらＩ／Ｏ装置のうちの１つ以上は、個人とコンピュータシステム６００との間での通信を可能にし得る。非限定的な一例として、Ｉ／Ｏ装置は、キーボード、キーパッド、マイク、モニタ、マウス、プリンタ、スキャナ、スピーカ、スチルカメラ、スタイラスペン、タブレット、タッチスクリーン、トラックボール、ビデオカメラ、その他の好適なＩ／Ｏ装置、又はこれらの２つ以上の組み合わせを含み得る。Ｉ／Ｏ装置は、１つ以上のセンサを含んでいてもよい。この開示は、如何なる好適なＩ／Ｏ装置、及びそれ用の如何なる好適なＩ／Ｏインタフェース６０８をも意図している。必要に応じて、Ｉ／Ｏインタフェース６０８は、プロセッサ６０２がこれらのＩ／Ｏ装置のうちの１つ以上を駆動することを可能にする１つ以上の装置又はソフトウェアドライバを含んでいてもよい。Ｉ／Ｏインタフェース６０８は、必要に応じて、１つ以上のＩ／Ｏインタフェース６０８を含んでいてもよい。この開示は特定のＩ／Ｏインタフェースを図示して説明しているが、この開示は如何なる好適なＩ／Ｏインタフェースをも意図している。
【００３０】
特定の実施形態において、通信インタフェース６１０は、コンピュータシステム６００と、１つ以上のその他のコンピュータシステム若しくは１つ以上のネットワークとの間での通信（例えば、パケットベースの通信など）のための１つ以上のインタフェースを提供するハードウェア、ソフトウェア、又はこれら双方を含む。非限定的な一例として、通信インタフェース６１０は、イーサネット(登録商標)若しくはその他のワイヤベースのネットワークと通信するためのネットワークインタフェースコントローラ（ＮＩＣ）若しくはネットワークアダプタ、又は例えばＷｉ−Ｆｉネットワークなどの無線ネットワークと通信するための無線ＮＩＣ（ＷＮＩＣ）若しくは無線アダプタを含み得る。この開示は、如何なる好適なネットワーク及びそれ用の如何なる好適な通信インタフェース６１０をも意図している。非限定的な一例として、コンピュータシステム６００は、アドホックネットワーク、パーソナルエリアネットワーク（ＰＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、若しくはインターネットの１つ以上の部分、又はこれらの２つ以上の組み合わせと通信し得る。これらのネットワークのうちの１つ以上の、１つ以上の部分は、有線であってもよいし、無線であってもよい。一例として、コンピュータシステム６００は、無線ＰＡＮ（ＷＰＡＮ）（例えば、ブルートゥースＷＰＡＮなど）、Ｗｉ−Ｆｉネットワーク、Ｗｉ−ＭＡＸネットワーク、携帯電話ネットワーク（例えば、グローバル・システム・フォー・モバイル・コミュニケーションズ（ＧＳＭ）ネットワークなど）、若しくはその他の好適な無線ネットワーク、又はこれらの２つ以上の組み合わせと通信し得る。コンピュータシステム６００は、必要に応じて、これらのネットワークの何れかのための如何なる好適な通信インタフェース６１０を含んでいてもよい。通信インタフェース６１０は、必要に応じて、１つ以上の通信インタフェース６１０を含んでいてもよい。この開示は特定の通信インタフェースを図示して説明しているが、この開示は如何なる好適な通信インタフェースをも意図している。
【００３１】
特定の実施形態において、バス６１２は、コンピュータシステム６００の構成要素を相互に結合するための、ハードウェア、ソフトウェア、又はこれら双方を含む。非限定的な一例として、バス６１２は、アクセラレーテッド・グラフィクス・ポート（ＡＧＰ）若しくはその他のグラフィック専用バス、ＥＩＳＡ（Extended  Industry  Standard  Architecture）バス、フロントサイドバス（ＦＳＢ）、ハイパートランスポート（ＨＴ）インターコネクト、業界標準アーキテクチャ（ＩＳＡ）バス、インフィニバンド・インターコネクト、ＬＰＣ（low-pin-count）バス、メモリバス、マイクロ・チャネル・アーキテクチャ（ＭＣＡ）バス、コンピュータ用拡張バスアーキテクチャ（ＰＣＩ）バス、ＰＣＩエクスプレス（ＰＣＩ−Ｘ）バス、シリアルＡＴＡ（ＳＡＴＡ）バス、ＶＬＢ（Video  Electronics  Standards  Association  local）バス、若しくはその他の好適なバス、又はこれらの２つ以上の組み合わせを含み得る。バス６１２は、必要に応じて、１つ以上のバス６１２を含んでいてもよい。この開示は特定のバスを図示して説明しているが、この開示は如何なる好適なバス又はインターコネクトをも意図している。
【００３２】
ここで、コンピュータ読み取り可能記憶媒体への言及は、１つ以上の有形のコンピュータ読み取り可能記憶媒体保有構造をも包含するものである。非限定的な一例として、コンピュータ読み取り可能記憶媒体は、必要に応じて、半導体ベースあるいはその他の集積回路（ＩＣ）（例えば、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、又は特定用途向けＩＣ（ＡＳＩＣ）など）、ハードディスク、ＨＤＤ、ハイブリッド式ハードドライブ（ＨＨＤ）、光ディスク、光ディスクドライブ（ＯＤＤ）、磁気光ディスク、磁気光ドライブ、フロッピー（登録商標）ディスク、フロッピーディスクドライブ（ＦＤＤ）、磁気テープ、ホログラフィック記憶媒体、ソリッドステートドライブ（ＳＳＤ）、ＲＡＭドライブ、セキュアデジタル（ＳＤ）カード、セキュアデジタルドライブ、若しくはその他の好適なコンピュータ読み取り可能記憶媒体、又はこれらの２つ以上の組み合わせを含み得る。
【００３３】
この開示は、何らかの好適なストレージを実現する１つ以上のコンピュータ読み取り可能記憶媒体を意図している。特定の実施形態において、コンピュータ読み取り可能記憶媒体は、必要に応じて、プロセッサ６０２の１つ以上の部分（例えば、１つ以上の内部レジスタ若しくはキャッシュなど）、メモリ６０４の１つ以上の部分、ストレージ６０６の１つ以上の部分、又はこれらの組み合わせを実現してもよい。特定の実施形態において、コンピュータ読み取り可能記憶媒体はＲＡＭ又はＲＯＭを実現する。特定の実施形態において、コンピュータ読み取り可能記憶媒体は揮発性あるいは永続的なメモリを実現する。特定の実施形態において、１つ以上のコンピュータ読み取り可能記憶媒体がソフトウェアを具現化する。ここで、ソフトウェアへの言及は適宜、１つ以上のアプリケーション、バイトコード、１つ以上のコンピュータプログラム、１つ以上の実行ファイル、１つ以上の命令、ロジック、機械語、１つ以上のスクリプト、又はソースコードを包含するものであり、この逆もまた然りである。特定の実施形態において、ソフトウェアは、１つ以上のアプリケーション・プログラミング・インタフェース（ＡＰＩ）を含む。この開示は、如何なる好適なプログラミング言語又は複数のプログラミング言語の組み合わせで書き込まれ、あるいはその他の方法で表現された、如何なる好適なソフトウェアをも意図している。特定の実施形態において、ソフトウェアはソースコード又はオブジェクトコードとして表現される。特定の実施形態において、ソフトウェアは、例えばＣ、Ｐｅｒｌ又はこれらの好適な拡張版など、より高級（高水準）なプログラミング言語で表現される。特定の実施形態において、ソフトウェアは、例えばアセンブリ言語（又は機械語）など、より低水準のプログラミング言語で表現される。特定の実施形態において、ソフトウェアはＪＡＶＡ(登録商標)で表現される。特定の実施形態において、ソフトウェアはハイパーテキスト・マークアップ言語（ＨＴＭＬ）、拡張マークアップ言語（ＸＭＬ）、又はその他の好適なマークアップ言語で表現される。
【００３４】
具体的な構成要素を特定して本発明を詳細に説明してきたが、当業者には様々な変形及び変更が示唆され得る。本発明は、添付の請求項の範囲に含まれることが明らかな如何なる変形及び変更をも包含するものである。
【００３５】
また、開示した具体的な処理フローについて、フロー内で議論されたステップは本発明の範囲を逸脱することなく変更、増加あるいは省略され得る。さらに、ステップ群は、本発明の範囲を逸脱することなく、如何なる好適な順序で実行されてもよいし、あるいは同時に実行されてもよい。
【００３６】
数多くのその他の変更、代用、変形、改変及び改良が当業者に明らかになり得る。本発明は、添付の請求項の範囲に入る全ての変更、代用、変形、改変及び改良を包含するものである。
【００３７】
以上の説明に関し、更に以下の付記を開示する。
（付記１）
データベースのデータベース設定データを分析するステップと、
前記データベースにアクセスするための１つ以上のデータベース・アプリケーション・プログラミング・インタフェースを分析するステップと、
前記分析に基づいて１つ以上のスタブを生成するステップであり、該１つ以上のスタブは、実行されたときに、前記データベースにデータが投入されているかのように前記データベースをモデル化するよう構成される、生成するステップと、
を有するデータベースモデルを生成する方法。
（付記２）
前記設定データは拡張マークアップ言語コードで記述される、付記１に記載の方法。
（付記３）
前記１つ以上のデータベース・アプリケーション・プログラミング・インタフェースは、１つ以上のＳＱＬデータベースを有する、付記１に記載の方法。
（付記４）
前記１つ以上のスタブはＪａｖａコードで記述される、付記１に記載の方法。
（付記５）
前記１つ以上のスタブをテスト対象アプリケーションのコードベースと結合して、該テスト対象アプリケーションを分析するためのホモジニアスな非分散型アプリケーションを生成するステップ、を更に有する付記１に記載の方法。
（付記６）
前記テスト対象アプリケーションはウェブアプリケーションである、付記５に記載の方法。
（付記７）
前記非分散型アプリケーションはＪａｖａコードで記述される、付記５に記載の方法。
（付記８）
コンピュータプログラムを格納したコンピュータ読み取り可能記憶媒体であって、該コンピュータプログラムは、実行されたときに、
データベースのデータベース設定データを分析し、
前記データベースにアクセスするための１つ以上のデータベース・アプリケーション・プログラミング・インタフェースを分析し、且つ
前記分析に基づいて１つ以上のスタブを生成し、該１つ以上のスタブは、実行されたときに、前記データベースにデータが投入されているかのように前記データベースをモデル化するよう構成される、
ように構成されている、コンピュータ読み取り可能記憶媒体。
（付記９）
前記設定データは拡張マークアップ言語コードで記述される、付記８に記載のコンピュータ読み取り可能記憶媒体。
（付記１０）
前記１つ以上のデータベース・アプリケーション・プログラミング・インタフェースは、１つ以上のＳＱＬデータベースを有する、付記８に記載のコンピュータ読み取り可能記憶媒体。
（付記１１）
前記１つ以上のスタブはＪａｖａコードで記述される、付記８に記載のコンピュータ読み取り可能記憶媒体。
（付記１２）
前記コンピュータプログラムは更に、実行されたときに、
前記１つ以上のスタブをテスト対象アプリケーションのコードベースと結合して、該テスト対象アプリケーションを分析するためのホモジニアスな非分散型アプリケーションを生成する
ように構成されている、付記８に記載のコンピュータ読み取り可能記憶媒体。
（付記１３）
前記テスト対象アプリケーションはウェブアプリケーションである、付記１２に記載のコンピュータ読み取り可能記憶媒体。
（付記１４）
前記非分散型アプリケーションはＪａｖａコードで記述される、付記１２に記載のコンピュータ読み取り可能記憶媒体。
（付記１５）
データベーススタブ生成モジュールを有するシステムであって、該データベーススタブ生成モジュールは、
データベースのデータベース設定データを分析し、
前記データベースにアクセスするための１つ以上のデータベース・アプリケーション・プログラミング・インタフェースを分析し、且つ
前記分析に基づいて１つ以上のスタブを生成し、該１つ以上のスタブは、実行されたときに、前記データベースにデータが投入されているかのように前記データベースをモデル化するよう構成される、
ように構成されている、システム。
（付記１６）
前記設定データは拡張マークアップ言語コードで記述される、付記１５に記載のシステム。
（付記１７）
前記１つ以上のデータベース・アプリケーション・プログラミング・インタフェースは、１つ以上のＳＱＬデータベースを有する、付記１５に記載のシステム。
（付記１８）
前記１つ以上のスタブはＪａｖａコードで記述される、付記１５に記載のシステム。
（付記１９）
前記データベーススタブ生成モジュールは更に、前記１つ以上のスタブをテスト対象アプリケーションのコードベースと結合して、該テスト対象アプリケーションを分析するためのホモジニアスな非分散型アプリケーションを生成するように構成されている、付記１５に記載のシステム。
（付記２０）
前記テスト対象アプリケーションはウェブアプリケーションである、付記１９に記載のシステム。
（付記２１）
前記非分散型アプリケーションはＪａｖａコードで記述される、付記１９に記載のシステム。
【符号の説明】
【００３８】
１０    ウェブアプリケーションドメイン
１２    クライアント
１４    サーバ
１８    データベース
２０    環境生成
２６    ドライバ
３０    モジュール
３４    スタブ
４０    生成システム
４２    データベース設定データ
４４    データベースＡＰＩ
５０    データベーススタブ生成モジュール
６００  コンピュータシステム
６０２  プロセッサ
６０４  メモリ
６０６  ストレージ
６０８  Ｉ／Ｏインタフェース
６１０  通信インタフェース
６１２  バス
【図１】
2012018675.tif 000003
【図２】
2012018675.tif 000004
【図３】
2012018675.tif 000005
【図４】
2012018675.tif 000006
【図５】
2012018675.tif 000007