JPH07105044A - コンピュータプログラムの実行をシュミレーションする方法及びシステム - Google Patents

コンピュータプログラムの実行をシュミレーションする方法及びシステム

Info

Publication number
JPH07105044A
JPH07105044A JP6147258A JP14725894A JPH07105044A JP H07105044 A JPH07105044 A JP H07105044A JP 6147258 A JP6147258 A JP 6147258A JP 14725894 A JP14725894 A JP 14725894A JP H07105044 A JPH07105044 A JP H07105044A
Authority
JP
Japan
Prior art keywords
server program
program
function
routine
message
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP6147258A
Other languages
English (en)
Inventor
Russell P Blake
ピー ブレイク ラッセル
Robert F Day
エフ デイ ロバート
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JPH07105044A publication Critical patent/JPH07105044A/ja
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 (修正有) 【目的】 オペレーティングシステムのテストを容易に
するようにコンピュータプログラムの実行をシュミレー
ションする。 【構成】 シュミレーションシステムは、第1オペレー
ティングシステムの制御のもとでコンピュータプログラ
ムの実行中にログを形成する。ログは、コンピュータプ
ログラムによるオペレーティングシステムファンクショ
ンの各呼び出しの指示、コンピュータプログラム及び現
在時間によりオペレーティングシステムファンクション
に通される各パラメータの指示を含む。記録された実行
は第2のオペレーティングシステムにおいてシュミレー
ションシステムにより模擬される。シュミレーションシ
ステムは、第2オペレーティングシステムのファンクシ
ョンを呼び出して、第1オペレーティングシステムのフ
ァンクションの各記録された呼び出しにより実行される
振る舞に類似した振る舞いを行う。これにより、2つの
システムの機能、信頼性及び性能の比較が可能となる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は一般にコンピュータプロ
グラムの実行をシュミレーションするためのコンピュー
タ方法及びシステムに係る。
【0002】
【従来の技術】コンピュータのオペレーティングシステ
ムは、非常に複雑なコンピュータプログラムである。オ
ペレーティングシステムを開発又は変更するときには、
オペレーティングシステム全体にわたってテストするこ
とが重要である。オペレーティングシステムのテストに
は、典型的に、多数のテスト段階が含まれる。第1に、
オペレーティングシステムのプログラムを書くプログラ
マは「ユニットテスト」を実行する。このユニットテス
トは、プログラムがプログラマにより意図されたように
機能するよう確保する。第2に、種々のプログラムを開
発したプログラマは、統合テストを実行する。この統合
テストは、種々のプログラムが一緒に正しく機能するよ
う確保する。第3に、オペレーティングシステムの開発
者は、オペレーティングシステムのアルファテストを実
行する。このアルファテストの間には、アプリケーショ
ンプログラムがオペレーティングシステムで実行され、
後で修正するために異常がロギングされる。更に、オペ
レーティングシステムのエンドユーザは、ベータテスト
を実行する。このベータテストは、オペレーティングシ
ステムがエンドユーザの環境において正しく機能するよ
う確保する。
【0003】オペレーティングシステムのテストは、非
常に時間がかかる上に、経費も高くつくものである。更
に、オペレーティングシステムにエラーがないよう確保
することは実質上不可能である。一般に、オペレーティ
ングシステムの開発者は、オペレーティングシステムが
「標準的なアプリケーション」で正しく機能するよう確
保することに集中する。標準的なアプリケーションと
は、オペレーティングシステムの典型的なユーザが使用
するアプリケーションプログラムである。これらの標準
的なアプリケーションでテストすることにより、開発者
は、オペレーティングシステムがほとんどの典型的な状
態で正しく機能するよう確保する助けとすることができ
る。
【0004】あるオペレーティングシステムは、メッセ
ージ駆動のオペレーティングシステムと称する。1つの
このようなオペレーティングシステムは、マイクロソフ
ト社によって開発されたウインドウズ3.1である。こ
のウインドウズ3.1の説明は、参考としてここに取り
上げるマイクロソフト社から入手できるウインドウズ
3.1のためのソフトウェア開発キットに述べられてい
る。ウインドウズオペレーティングシステムは、グラフ
ィックユーザインターフェイス(GUI)をサポートす
るアプリケーションのためのウインドウ環境を形成す
る。図1は、典型的なメッセージ駆動のオペレーティン
グシステムのメッセージングアーキテクチャを示すブロ
ック図である。アプリケーションプログラム110は、
メイン手順111及びウインドウ手順112を含んでい
る。アプリケーションプログラム110がオペレーティ
ングシステムの制御のもとで実行されるときには、制御
がメイン手順111へ通される。メイン手順111は、
通常は、ウインドウを形成して表示し、次いで、メッセ
ージループ113に入る。このメッセージループを実行
するときには、アプリケーションプログラム110は、
外部事象(例えば、キーダウン)を指示するメッセージ
をオペレーティングシステム120から受け取るのを待
機する。メッセージループにとって受け取られたメッセ
ージは、ポスト処理(posted)メッセージと称する。メッ
セージが受け取られると、アプリケーションプログラム
110は、オペレーティングシステム120がメッセー
ジを適当なウインドウ手順へ発信するように要求するこ
とによって、そのメッセージを処理する。アプリケーシ
ョンプログラム110は、ディスプレイモニタ130に
表示される各ウインドウごとにウインドウ手順112を
含んでいる。ウインドウ手順は、そのウインドウへメッ
セージが発信されたとき、又はオペレーティングシステ
ムがメッセージをそのウインドウへ送信するとき(以下
に述べる)、オペレーティングシステムによって呼び出
される。ウインドウ手順は、メッセージをデコードし、
それに従ってメッセージを処理する。例えば、ウインド
ウ手順へ発信されたメッセージは、ウインドウが焦点を
有するときにキーボード上でキャラクタが押されたこと
を指示する。その焦点を有するウインドウは、全てのキ
ーボード及びマウス入力を受け取る。
【0005】オペレーティングシステム120は、アプ
リケーションプログラムにサービスする種々のファンク
ションをアプリケーションプログラムに与える。これら
のファンクションには、RegisterClass、
CreateWindow、ShowWindow、G
etMessage、DispatchMessage
及びDefWindouProcが含まれる。これらフ
ァンクションは、全体的に、オペレーティングシステム
によって与えられるアプリケーションプログラミングイ
ンターフェイス(API)と称され、そして各ファンク
ションは、個々に、APIと称される。アプリケーショ
ンプログラム110の実行中に、アプリケーションプロ
グラムは、オペレーティングシステムによって与えられ
る種々のファンクションを呼び出す。これらのファンク
ションは、典型的に、ダイナミックリンクライブラリー
に記憶される。アプリケーションプログラムは、メモリ
に最初にロードされるときに、それが使用する各々のフ
ァンクションに動的にリンクする。メイン手順111に
よって示されたように、アプリケーションプログラム1
10は、オペレーティングシステムでウインドウクラス
を登録するためのファンクションRegisterCl
assを最初に呼び出す。各ウインドウクラスは、ウイ
ンドウに送られたメッセージを処理するための関連ウイ
ンドウ手順を有している。オペレーティングシステム
は、ウインドウクラスをそのウインドウ手順に相関させ
るウインドウクラステーブル122を維持している。ウ
インドウクラスが登録されるときには、オペレーティン
グシステムは、ウインドウ手順のアドレスをウインドウ
クラステーブル122に記憶する。メッセージをウイン
ドウに送るべきときには、オペレーティングシステム
は、関連ウインドウ手順を呼び出し、メッセージのタイ
プを含む種々のパラメータをそこに通す。
【0006】ウインドウ手順は、コールバックルーチン
の1つのタイプである。コールバックルーチンとは、ア
プリケーションプログラムの一部分であるが、オペレー
ティングシステムによって直接呼び出されるルーチンで
ある。アプリケーションプログラムは、アプリケーショ
ン指向の処理を実行するために開発されたコールバック
ルーチンのアドレスをオペレーティングシステムに与え
る。次いで、オペレーティングシステムは、コールバッ
クルーチンを呼び出して、処理を実行する。
【0007】又、オペレーティングシステムは、アプリ
ケーションプログラム110のためのメッセージ待ち行
列121も維持する。このメッセージ待ち行列121
は、アプリケーションプログラムへポスト処理されるメ
ッセージを含んでいる。メッセージループ113におけ
るファンクションGetMessageを呼び出すたび
に、メッセージ待ち行列121からメッセージが検索さ
れる。メッセージ待ち行列にポスト処理されるメッセー
ジは、典型的に、マウスの移動のような外部事象に対応
する。オペレーティングシステムは、ディスプレイモニ
タ130におけるウインドウ上でのマウスの移動を検出
すると、アプリケーションプログラムに対してメッセー
ジ待ち行列にメッセージをポスト処理する。アプリケー
ションプログラムは、メッセージのループ中に、各ポス
ト処理されたメッセージを検索し、そしてファンクショ
ンDispatchMessageを呼び出してメッセ
ージを処理する。このファンクションDispatch
Messageは、どのウインドウ手順にメッセージを
向けるかを決定し、そしてそのウインドウ手順を呼び出
すことによりそのウインドウへメッセージを送信する。
全てのメッセージがポスト処理され、発信され、そして
ウインドウ手順へ送られるのではない。オペレーティン
グシステムは、時々、メッセージ待ち行列にメッセージ
を最初にポスト処理せずに、ウインドウ手順へ直接メッ
セージを送信する。例えば、ウインドウが最初に形成さ
れるときには、オペレーティングシステムが、そのウイ
ンドウのためのウインドウ手順へ形成メッセージ(WM
CREATE)を送信する。このメッセージは、ウイ
ンドウ手順がウインドウの初期化を行えるようにする。
【0008】
【発明が解決しようとする課題】本発明の目的は、オペ
レーティングシステムのテストを容易にするようにコン
ピュータプログラムの実行をシュミレーションする方法
及びシステムを提供することである。
【0009】本発明の別の目的は、オペレーティングシ
ステムのもとで実行するようにまだ変換されていないア
プリケーションプログラムを用いてオペレーティングシ
ステムをテストする方法及びシステムを提供することで
ある。
【0010】
【課題を解決するための手段】これら及び他の目的は、
以下の説明から明らかとなるように、コンピュータプロ
グラムの実行をシュミレーションする方法及びシステム
によって達成される。好ましい実施例では、コンピュー
タシステムは、第1のサーバプログラムのサービスを要
求するクライエントプログラムの実行をシュミレーショ
ンする。クライエントプログラムの実行中に、サービス
に対する要求がロギングされる。シュミレーションプロ
グラムは、サービスに対するロギングされた要求を受け
取り、そしてその要求されたサービスの振る舞いをシュ
ミレーションするように第2のサーバプログラムに要求
する。別の好ましい実施例では、シュミレーションシス
テムは、コンピュータプログラムの実行をシュミレーシ
ョンする。コンピュータプログラムは、公知のオペレー
ティングシステムのオペレーティングシステム機能を呼
び出すように開発される。各々のオペレーティングシス
テム機能は、通されたパラメータに基づいて振る舞いを
実行する。シュミレーションシステムは、公知のオペレ
ーティングシステムの制御のもとでコンピュータプログ
ラムを実行する間にログを発生する。このログは、コン
ピュータプログラムによるオペレーティングシステムフ
ァンクションの各呼び出しの指示と、コンピュータプロ
グラムによりオペレーティングシステムファンクション
へ通される各パラメータの指示とを含んでいる。ロギン
グされた実行は、次いで、新たなオペレーティングシス
テムにおいてシュミレーションされる。シュミレーショ
ンシステムは、新たなオペレーティングシステムのオペ
レーティングシステムファンクションを呼び出して、公
知のオペレーティングシステムのオペレーティングシス
テムファンクションのロギングされた呼び出しにより実
行される振る舞いに類似した振る舞いを、上記通された
パラメータに基づいて実行する。
【0011】
【実施例】本発明は、アプリケーションプログラムの実
行をシュミレーションする方法及びシステムを提供す
る。好ましい実施例において、このシュミレーションシ
ステムは、先ず、アプリケーションプログラムの実行中
に、アプリケーションプログラムと、既存のオペレーテ
ィングシステム(古いオペレーティングシステム)との
間の相互作用を記録する。次いで、シュミレーションシ
ステムは、この記録された相互作用を取り出して、新た
なオペレーティングシステムでその相互作用をシュミレ
ーションする。
【0012】相互作用を記録するために、シュミレーシ
ョンシステムは、古いオペレーティングシステムの制御
のもとでアプリケーションプログラムを実行する。アプ
リケーションプログラムの実行中に、シュミレーション
システムのロガー部分は、アプリケーションプログラム
によるオペレーティングシステムファンクションの各呼
び出しを記録すると共に、オペレーティングシステムに
よるコールバックルーチンの各呼び出しを記録する。
又、ロガーは、各ファンクションに通された全てのパラ
メータ及び、各コールバックルーチンによって戻される
全てのパラメータを記録する。又、ロガーは、各ファン
クションによって戻される全てのパラメータ及び各コー
ルバックルーチンへ通される全てのパラメータを記録す
るのが好ましい。ロガーは、この情報をログファイルに
記録する。
【0013】次いで、シュミレーションシステムは、新
たなオペレーティングシステムにおいてアプリケーショ
ンプログラムの実行をシュミレーションする。シュミレ
ーションシステムの合成GUIアプリケーション(SG
A)は、ログファイルを入力し、ロギングされたファン
クション呼び出しの振る舞いを実行するための新たなオ
ペレーティングシステムのファンクションを呼び出す。
又、SGAは、呼び出しを行うための新たなオペレーテ
ィングシステムに対するサンク(thunk) コールバックル
ーチンも与える。これらのサンクコールバックルーチン
は、アプリケーションプログラムの実際のコールバック
ルーチンの振る舞いをシュミレーションする。又、SG
Aは、アプリケーションプログラムの実行中に生じた実
際の事象(例えば、キーダウン)の発生もシュミレーシ
ョンする。古いオペレーティングシステムのもとでアプ
リケーションプログラムを実行する間に生じた振る舞い
に対応する新たなオペレーティングシステムの振る舞い
を行うことにより、新たなオペレーティングシステムで
のアプリケーションプログラムの実行がシュミレーショ
ンされる。
【0014】次いで、新たなオペレーティングシステム
のテスターは、シュミレーションの出力を比較して、そ
れが、古いオペレーティングシステムのもとでのアプリ
ケーションプログラムの実行に正しく対応するよう確保
することができる。又、新たなオペレーティングシステ
ムのファンクションから戻されるパラメータを、古いオ
ペレーティングシステムのファンクションから戻された
記録されたパラメータと比較し、新たなオペレーティン
グシステムが正しく機能するかどうか判断することがで
きる。又、新たなオペレーティングシステムにおいてフ
ァンクションを実行するに要する時間を、古いオペレー
ティングシステムでファンクションを実行するのに要し
た時間と比較することもできる。
【0015】図2、3及び4は、アプリケーションプロ
グラムの相互作用及びシュミレーションの記録を示すブ
ロック図である。図2は、アプリケーションプログラム
210と古いオペレーティングシステム220との間の
相互作用(対話)を示している。GUIアプリケーショ
ンプログラム210は、古いオペレーティングシステム
220のファンクションを呼び出し、そして古いオペレ
ーティングシステム220は、GUIアプリケーション
プログラム210のコールバックルーチンを呼び出す。
図3は、アプリケーションプログラム210の実行中の
ファンクション及びコールバックルーチンの呼び出しの
ロギングを示している。アプリケーションプログラム2
10がファンクションを呼び出すときには、ロガー23
0が、ファンクションに対して通されたパラメータと、
ファンクションの名前をログファイル240に記録す
る。ファンクションがアプリケーションプログラムに戻
されるときにも、ロガーは、その全ての戻されるパラメ
ータをログファイルに記録する。古いオペレーティング
システム220がコールバックルーチンを呼び出すとき
には、ロガー230は、コールバックルーチンの識別子
及び通されたパラメータを記録する。コールバックルー
チンが古いオペレーティングシステム220に戻される
ときには、ロガーは、その戻されたパラメータをログフ
ァイルに記録する。各相互作用に関連した時間も記録さ
れる。図4は、ログファイルに記録されたアプリケーシ
ョンプログラム210の実行のシュミレーションを示し
たブロック図である。アプリケーションプログラム21
0の実行をシュミレーションするために、合成GUIア
プリケーション250(SGA)は、実行を記録するロ
グファイルを入力する。このSGAは、新たなオペレー
ティングシステム260の0、1又はそれ以上のファン
クションを呼び出すことにより、ログファイルに表され
た各ファンクションの呼び出しをシュミレーションす
る。SGAは、記録された通されたパラメータに基づい
てファンクション呼び出しの振る舞いをシュミレーショ
ンする。又、SGA250は、アプリケーションプログ
ラムの各真のコールバックルーチンに対するサンクコー
ルバックルーチンも与える。SGA250は、これらの
サンクコールバックルーチンを新たなオペレーティング
システム260へ通す。新たなオペレーティングシステ
ム260がサンクコールバックルーチンを呼び出すとき
には、そのサンクコールバックルーチンがログファイル
の情報に基づいて真のコールバックルーチンの処理をシ
ュミレーションする。サンクコールバックルーチンは、
特に、メッセージのポスト処理及び送信処理をシュミレ
ーションすると共に、実際のコールバックルーチンの実
行中に生じたファンクションの呼び出しをシュミレーシ
ョンする。
【0016】ロガー:図5は、ロガーの好ましいアーキ
テクチャを示すブロック図である。古いオペレーティン
グシステム220が与える各ファンクション221に対
し、ロガーは代替えファンクション311を与える。
又、ロガーは、アプリケーションプログラムの各コール
バックルーチンに対し代替えコールバックルーチン31
2も与える。GUIアプリケーションプログラム210
が最初にロードされたときには、アプリケーションプロ
グラムによる全てのファンクション呼び出しが、古いオ
ペレーティングシステムの真のファンクション221で
はなくて、代替えファンクション311にリンクされ
る。アプリケーションプログラム210がファンクショ
ンを呼び出すときには、代替えファンクションがその呼
び出しを各々の通されたパラメータ及び現在時間と共に
ログファイルに記録する。次いで、代替えファンクショ
ンは、その通されたパラメータと共に古いオペレーティ
ングシステム220の真のファンクションを呼び出す。
真のファンクションが代替えファンクションに戻るとき
には、代替えファンクションが、その戻されたパラメー
タ及び現在時間と共にその戻りをログファイルへ記録す
る。次いで、代替えファンクションは、真のファンクシ
ョンによって戻されたパラメータと共にアプリケーショ
ンプログラムに戻る。このように、ログファイルの記録
は、アプリケーションプログラムに対して機能的に透過
である。
【0017】古いオペレーティングシステムの真のファ
ンクションは、典型的に、ダイナミックリンクライブラ
リーに記憶される。アプリケーションプログラムを含む
実行可能なファイルは、アプリケーションプログラムが
呼び出す各ダイナミックリンクライブラリーの名前を含
んでいる。アプリケーションプログラムの最初のロード
中に、真のファンクションの各呼び出しは、ダイナミッ
クリンクライブラリーにおける真のファンクションに結
合される。好ましい実施例において、真のファンクショ
ンをもつ各ダイナミックリンクライブラリーは、代替え
のダイナミックリンクライブラリーに関連され、そして
「真」のダイナミックリンクライブラリーの名前と同じ
数のキャラクタをもつ名前と、その真のダイナミックリ
ンクライブラリーの名前を若干変更したものとが与えら
れる、例えば、真のダイナミックリンクライブラリー
「Kernel」に対応する代替えのダイナミックリン
クライブラリーには「Zernel」という名前が与え
られる。アプリケーションプログラムの実行をロギング
すべきときには、実行可能なファイルにおける各々の真
のダイナミックリンクライブラリーの名前が、代替えの
ダイナミックリンクライブラリーの名前に置き換えられ
る。従って、アプリケーションプログラムがロードされ
るときには、アプリケーションプログラムは、真のダイ
ナミックリンクライブラリーではなくて、代替えのダイ
ナミックリンクライブラリーに動的にリンクする。
【0018】コールバックルーチンのアドレスは、典型
的に、ファンクションに通されたパラメータにより古い
オペレーティングシステムに指定される。例えば、ウイ
ンドウ手順のコールバックルーチンのアドレスは、ファ
ンクションRegisterClassを呼び出すとき
にパラメータとして古いオペレーティングシステムに指
定される。コールバックルーチンとして通される各々の
真のファンクションに関連した代替えファンクション
は、真のコールバックルーチンに対する代替えコールバ
ックルーチンに取って代わる。代替えファンクション
は、真のコールバックルーチン211ではなくて代替え
コールバックルーチン312を指定する真のファンクシ
ョンを呼び出す。古いオペレーティングシステム220
がアプリケーションプログラム210にメッセージを送
るときには、このオペレーティングシステムは、代替え
コールバックルーチン312を呼び出す。この代替えコ
ールバックルーチンは、コールバックルーチンの呼び出
しを、通されたパラメータ及び現在時間と共に記録す
る。次いで、代替えコールバックルーチンは、その通さ
れたパラメータと共に真のコールバックルーチン211
を呼び出す。真のコールバックルーチンが代替えコール
バックルーチンに戻ると、代替えコールバックルーチン
は、その戻りをその戻されたパラメータと共に記録す
る。次いで、代替えコールバックルーチンは、その戻さ
れたパラメータと共に古いオペレーティングシステムへ
戻る。
【0019】代替えファンクション又は代替えコールバ
ックルーチンがその呼び出しを記録するときには、ネス
ティングレベルも記録する。このネスティングレベル
は、ファンクション及びコールバックルーチンの呼び出
しレベルを指示する。例えば、アプリケーションプログ
ラムがファンクションDispatchMessage
を呼び出すときには、他のファンクション又はコールバ
ックルーチンがそのとき呼び出されないので、ネスティ
ングレベルは1である。ファンクションDispatc
hMessageの実行中に、ファンクションがコール
バックルーチンを呼び出す場合には、コールバックルー
チンのネスティングレベルは2である。そのコールバッ
クルーチンが次いでファンクション(例えば、ファンク
ションDefWindowProc)を呼び出す場合に
は、そのファンクションの呼び出しはネスティングレベ
ル3である。ネスティングレベル3のファンクションが
コールバックルーチンを呼び出す場合には、そのコール
バックルーチンのネスティングレベルは4であり、等々
となる。或いは、呼び出しのネスティングレベルは、ア
プリケーションプログラムの実行中ではなくて、その実
行完了後に、ログから決定することができる。
【0020】図6は、例示的な代替えファンクションの
フローチャートである。この代替えファンクションは、
真のファンクションと同じ呼び出し原型(プロートタイ
プ)(即ち、同じファンクションタイプ並びに同じ個数
及びタイプのパラメータ)を有する。好ましい実施例で
は、代替えファンクションは、アプリケーションに対す
るオリジナルファンクションを定める「ヘッダ」ファイ
ルから自動的に発生される。代替えファンクションは、
ファンクションの呼び出しを、通されたパラメータ及び
現在時間と共に記録すると共に、ファンクションの復帰
を、その戻されたパラメータ及び現在時間と共に記録す
る。代替えファンクションは真のファンクションを呼び
出す。代替えファンクションは、真のファンクション
に、それが受け取ったのと同じパラメータが通されるよ
うに確保すると共に、アプリケーションプログラムに、
真のファンクションが戻すのと同じパラメータが戻され
るよう確保する。ステップ401では、代替えファンク
ションは、CPUの現在状態をセーブし、これは、レジ
スタをセーブすることを含む。代替えファンクション
は、真のファンクションが呼び出される前にCPUの状
態がこのセーブされた状態に復帰するよう確保する。ス
テップ402では、代替えファンクションはネスティン
グレベルを増加する。ステップ402Aでは、代替えフ
ァンクションは、現在時間を検索する。ステップ403
では、代替えファンクションは、ファンクションの呼び
出しと、通されたパラメータ及び現在時間を記録する。
ステップ404では、代替えファンクションは、CPU
の状態を、ステップ401でセーブされた状態に復帰す
る。ステップ405では、代替えファンクションは、通
されたパラメータと共に真のファンクションを呼び出
す。ステップ406では、代替えファンクションは、真
のファンクションから戻るときにCPUの状態をセーブ
する。代替えファンクションは、その代替えファンクシ
ョンが復帰する前にCPUの状態がこのセーブされた状
態に復帰されるよう確保する。ステップ406Aでは、
代替えファンクションは、現在時間を検索する。ステッ
プ407では、代替えファンクションは、その戻りと、
戻されたパラメータ及び現在時間とを記録する。ステッ
プ408では、代替えファンクションは、ネスティング
レベルを減少する。ステップ409では、代替えファン
クションは、ステップ406でセーブされたCPUの状
態を復帰し、アプリケーションプログラムに戻る。
【0021】図7は、ファンクションの呼び出しをログ
ファイルに記録するルーチンのフローチャートである。
このルーチンは、真のファンクションの識別(例えば、
ファンクションの名前)を、真のファンクションへ通さ
れた全てのパラメータ及び現在時間と共にログファイル
へ書き込む。ログファイルは、ファンクション又はコー
ルバックルーチンの各々の記録された呼び出し及び戻り
に対するエントリ(例えば、ライン)を含むのが好まし
い。各エントリーは、ファンクション又はコールバック
ルーチンの呼び出し又は戻りに対応するかどうかを識別
する。ステップ501において、ルーチンは、ネスティ
ングレベル及びファンクション呼び出し識別子(例え
ば、「APICALL」)をログファイルに書き込むと
共に、現在時間を書き込む。ステップ502において、
ルーチンは、ファンクションの名前(例えば、「Reg
isterClass」)をログファイルに書き込む。
ステップ503ないし505において、ルーチンは、通
されたパラメータをログファイルに書き込むようにルー
プする。ルーチンは、真のファンクションが実行時に使
用する全ての情報をログファイルに書き込まねばならな
い。例えば、真のファンクションがバッファのデータを
ディスプレイモニタにプリントする場合には、バッファ
がポインタによって指示される。このルーチンは、ポイ
ンタだけではなく、バッファの全てのデータをログファ
イルへコピーする。次いで、この実際のデータは、シュ
ミレーション中に再表示することができる。ステップ5
03において全てのパラメータが処理された場合に、ル
ーチンが復帰し、さもなくば、ルーチンは、ステップ5
04に続く。ステップ504において、ルーチンは、次
のパラメータを検索する。ステップ505において、ル
ーチンは、検索されたパラメータを処理し、そしてその
パラメータに関連したデータをログファイルに書き込
み、ステップ503へループする。
【0022】図8は、値によって通された典型的な整数
パラメータの記録を示すフローチャートである。パラメ
ータの値が検索されそしてログファイルに書き込まれ
る。
【0023】図9は、ポインタとしてバッファへ通され
るパラメータを記録するルーチンを示すフローチャート
である。このルーチンは、通されたポインタ(バッフ
ァ)によって指示されたデータを記録するだけではな
く、バッファ内のポインタによって指示されたデータも
記録する。ステップ701では、このルーチンは、左側
の大括弧をログファイルに書き込む。左側の大括弧は、
指示されるデータのスタートを示す。ステップ702に
おいて、次のデータ項目がポインタである場合は、ルー
チンはステップ704へ続き、さもなくば、ルーチンは
ステップ703へ続く。ステップ703において、ルー
チンは、非ポインタパラメータをログファイルへ書き込
む。ステップ704では、ルーチンは繰り返しそれ自身
を呼び出してポインタを処理する。ステップ705で
は、全てのパラメータが処理された場合に、ルーチンは
ステップ706へ続き、さもなくば、ルーチンはステッ
プ702へループする。ステップ706において、ルー
チンは右側の大括弧をログファイルに書き込み、復帰す
る。
【0024】図10は、コールバックルーチンを指すパ
ラメータの処理のフローチャートである。好ましい実施
例において、コールバックルーチンが通される各代替え
ファンクションは、代替えコールバックルーチンのアレ
ーを含んでいる。代替えファンクションが呼び出される
たびに、アレーにおける次の代替えコールバックルーチ
ンを、通されたコールバックルーチンの代替えとして選
択する。又、代替えファンクションは、各々の真のコー
ルバックルーチンをその代替えコールバックルーチンに
相関するテーブルを維持する。例えば、ファンクション
RegisterClassに対する代替えファンクシ
ョンは、同じ代替えウインドウ手順のアレーを含むのが
好ましい。各々の新たなウインドウクラスが登録される
ときは、アレー内の次の未使用の代替えウインドウ手順
が選択される。或いは又、代替えファンクションは、必
要に応じて代替えコールバックルーチンを形成すること
ができる。ステップ801において、ルーチンは、未使
用の代替えコールバックルーチンを選択する。ステップ
802において、ルーチンは、真のコールバックルーチ
ンを代替えコールバックルーチンへマップする。ステッ
プ803において、ルーチンは、代替えコールバックル
ーチンのアドレスを、パラメータリストにおける真のコ
ールバックルーチンのアドレスと置き換え、復帰する。
【0025】図11は、典型的な代替えコールバックル
ーチンのフローチャートである。典型的な代替えコール
バックルーチンは、図6に示した典型的な代替えファン
クションに類似している。ステップ901において、代
替えコールバックルーチンはCPUの状態をセーブす
る。ステップ902において、代替えコールバックルー
チンはネスティングレベルを増加する。ステップ902
Aにおいて、代替えコールバックルーチンは、現在時間
を検索する。ステップ903において、代替えコールバ
ックルーチンは、コールバックルーチンの呼び出しを、
通されたパラメータ及び現在時間と共にログファイルに
記録する。ステップ904において、代替えコールバッ
クルーチンは、関連する真のコールバックルーチンのア
ドレスを見つける。ステップ905において、代替えコ
ールバックルーチンは、CPUの状態を、ステップ90
1でセーブされた状態に復帰させる。ステップ906に
おいて、代替えコールバックルーチンは、真のコールバ
ックルーチンを呼び出す。ステップ907において、代
替えコールバックルーチンは、真のコールバックルーチ
ンにより戻されたCPUの状態をセーブする。ステップ
907Aにおいて、代替えコールバックルーチンは、現
在時間を検索する。ステップ908において、代替えコ
ールバックルーチンは、コールバックルーチンの戻り
を、その戻されたパラメータ及び現在時間と共にログフ
ァイルへ記録する。ステップ909において、代替えコ
ールバックルーチンはネスティングレベルを減少する。
ステップ910において、代替えコールバックルーチン
は、CPUの状態を、ステップ907でセーブされた状
態に復帰させ、そして代替えコールバックルーチンは、
オペレーティングシステムによる呼び出しへ戻る。
【0026】以下の表1ないし表11は、「C」プログ
ラミング言語で書かれた例示的なアプリケーションプロ
グラムを示している。このアプリケーションプログラム
は、「Generic2Class」という名前のウイ
ンドウクラスを、「MainWndProc」という名
前のウインドウ手順と共に形成して表示するものであ
る。ウインドウ手順は、WM COMMAND、WM
DESTROY、WM PAINT、及びWM LBUT
TONDOWNというメッセージを取り扱う。他の全て
のメッセージは、ウインドウ手順により、ファンクショ
ンDefWindowProcを用いて、オペレーティ
ングシステムへ通される。ウインドウ手順は、WM
OMMANDメッセージがIDM ABOUTパラメー
タと共に送られたときに、コールバックルーチンに対す
るポインタと共にファンクションDialogBoxを
呼び出し、ダイアログボックスへのメッセージを取り扱
うものである。
【表1】
【表2】
【表3】
【表4】
【表5】
【表6】
【表7】
【表8】
【表9】
【表10】
【表11】
【0027】表12ないし19は、表1ないし11の同
じアプリケーションプログラムの実行に対するログファ
イルのセクションを含んでいる。表12ないし19は、
各々のファンクションと、コールバックルーチンの呼び
出し及び復帰に対するエントリ(ライン)を含んでい
る。各エントリは、ラインナンバー(参照用)と、ネス
ティングレベルと、垂直バーと、タイミング情報と、別
の垂直バーと、エントリのタイプの識別子と、ファンク
ション名又はコールバックルーチン識別子と、パラメー
タとを含んでいる。例えば、ラインナンバー7は、ファ
ンクションCreateWindowの呼び出しに対応
するエントリを含んでいる。ネスティングレベルは、1
である。ファンクションは、時間「842102B3」
に呼び出される。エントリのタイプは、ファンクション
の呼び出しを指示する「APICALL」である。パラ
メータは、「Generic2Class」、「Gen
eric Sample Application」、
「CF00」、等である。ファンクションCreate
Windowの復帰に対応するエントリは、ライン24
である。ライン7ないし24の間の各ネスティングレベ
ルは、1より大きいレベルである。ファンクションCr
eateWindowの呼び出し中に、オペレーティン
グシステムは、メッセージ「WM GETMINMAX
INFO」を、ライン8に示すようにファンクションC
reateWindowへ通されたコールバックルーチ
ンへ送っている。コールバックルーチンの呼び出しに対
応するエントリタイプは、「MSGCALL」である。
【表12】
【表13】
【表14】
【表15】
【表16】
【表17】
【表18】
【表19】
【0028】合成GUIアプリケーション アプリケーションプログラムの実行についてのログファ
イルを作成するときには、アプリケーションプログラム
の実行を新たなオペレーティングシステムにおいてシュ
ミレーションすることができる。合成GUIアプリケー
ション(SGA)プログラムは、ログファイルに読み込
みをし、そして新たなオペレーティングシステム又は他
の既存のオペレーティングシステムのファンクションを
呼び出すことにより記録された振る舞いをシュミレーシ
ョンする。アプリケーションプログラムの振る舞いをシ
ュミレーションすることにより、新たなオペレーティン
グシステムは、そのファンクションを正しく実行するよ
う確保するようにテストすることができる。
【0029】SGAプログラムは、古いオペレーティン
グシステムの各々の真のファンクションに対するサンク
ファンクションを与える。サンクファンクションは、新
たなオペレーティングシステムのファンクションを呼び
出すことにより新たなオペレーティングシステムにおい
て真のファンクションの実行をシュミレーションする。
新たなオペレーティングシステムが、古いオペレーティ
ングシステムのファンクションの振る舞いに対応する振
る舞いのファンクションを有する場合には、サンクファ
ンクションは、新たなオペレーティングシステムのファ
ンクションを使用して、その振る舞いをシュミレーショ
ンすることができる。しかしながら、新たなオペレーテ
ィングシステムの対応するファンクションがない場合に
は、サンクファンクションは、その振る舞いをシュミレ
ーションするのに新たなオペレーティングシステムの多
数のファンクションを呼び出さねばならない。
【0030】コールバックルーチンが通された真のファ
ンクションに対応する各々のサンクファンクションは、
サンクコールバックルーチンを与える。サンクコールバ
ックルーチンは、アプリケーションプログラムにおいて
対応する真のコールバックルーチンの振る舞いをシュミ
レーションする。各々のサンクコールバックルーチン
は、新たなオペレーティングシステムによって呼び出さ
れたときに、以下に述べるようにSGAエンジンのルー
チンを呼び出し、アプリケーションプログラムの振る舞
いをシュミレーションする。
【0031】図12は、合成GUIアプリケーション
(SGA)を示す概略図である。SGA1010は、S
GAエンジン1050と、古いオペレーティングシステ
ムの各真のファンクションに対するサンクファンクショ
ン1060と、新たなオペレーティングシステムの真の
コールバックルーチンに対応するサンクコールバックル
ーチン1070とを備えている。新たなオペレーティン
グシステム1020は、真のファンクション1030
と、ウインドウクラステーブル1040とを備えてい
る。SGA1010は、ログファイルを読み取り、記録
されたアプリケーションプログラムの実行をシュミレー
ションする。ファンクションの各記録された呼び出し
は、記録された通されたパラメータと共に対応するサン
クファンクションを呼び出すことにより、シュミレーシ
ョンされる。コールバックルーチンの各呼び出しの振る
舞いは、サンクコールバックルーチンによってシュミレ
ーションされる。
【0032】SGAエンジンのルーチン1050は、シ
ュミレーションを制御する。このルーチンには、メッセ
ージが通され、そのメッセージの実行をシュミレーショ
ンする。このルーチンは、メッセージをアプリケーショ
ンへ送るところのコールバックルーチンの呼び出しに対
しログファイルを走査する。次いで、ルーチンは、その
コールバックルーチン内にネストされたファンクション
の各呼び出しの実行をシュミレーションする。例えば、
ライン20に対応するメッセージWM CREATEに
対してSGAエンジンのルーチンが呼び出された場合に
は、このルーチンは、ライン21においてファンクショ
ンDefWindowProcのネスト状の呼び出しを
シュミレーションする。SGAエンジンのルーチンは、
ログファイルから通されたパラメータを検索し、新たな
オペレーティングシステムのファンクションを呼び出し
て、古いオペレーティングシステムのファンクションの
振る舞いをシュミレーションする。新たなオペレーティ
ングシステムのファンクションが完了すると、SGAエ
ンジンのルーチンは、戻されたパラメータが、ロギング
された戻されたパラメータに匹敵するかどうかを決定す
る。これらパラメータが匹敵しない場合には、その差に
注目される。任意であるが、新たなオペレーティングシ
ステムの呼び出しに関するタイミング情報は、個別の新
たなログファイルに記録することができる。
【0033】図13は、合成GUIアプリケーションプ
ログラムのフローチャートである。合成GUIアプリケ
ーション(SGA)は、ログファイルを入力し、新たな
オペレーティングシステムのファンクションを呼び出す
ことにより、ログファイルに記録されたGUIアプリケ
ーションプログラムの実行をシュミレーションする。ス
テップ1001では、SGAは、送信メッセージファイ
ル(SMF)を発生する。この送信メッセージファイル
は、ログファイルに記録された各送信メッセージに対す
るエントリを含んでいる。送信メッセージファイルの各
エントリは、メッセージの識別子と、ログファイルにお
けるメッセージのライン番号と、メッセージが向けられ
るリソース(例えば、ウインドウ、ダイアログボック
ス)を識別するハンドルとを含んでいる。表20、21
は、表12ないし19のログファイルに対して発生され
た例示的な送信メッセージファイルである。送信メッセ
ージファイルのライン番号5は、エントリ「WM CR
EATE20、8A」を含んでおり、これは、WM
REATEがハンドル8Aと共にウインドウに送られた
ことをログファイルのライン番号20が記録することを
指示する。ステップ1002では、SGAはポスト処理
されたメッセージファイル(PMF)を発生する。ポス
ト処理されたメッセージファイルは、ログファイルに記
録された各ポスト処理されたメッセージに対するエント
リを含んでいる。ポスト処理されたメッセージファイル
の各エントリは、メッセージ名、メッセージの検索に対
応するライン番号、ポスト処理されたメッセージに対応
する事象をシュミレーションしなければならないライン
番号、及びメッセージが向けられるリソース(例えば、
ウインドウ、ダイアログボックス)を識別するハンドル
を含んでいる。表22は、表12ないし19のログファ
イルに対する例示的なポスト処理メッセージファイルを
含んでいる。ポスト処理メッセージファイルのライン番
号5は、エントリ「WM KEYDOWN192、18
7、8A」を含み、これは、WM KEYDOWNメッ
セージがハンドル8Aと共にウインドウに対するウイン
ドウ手順によって検索されそしてライン187において
メッセージのポスト処理をシュミレーションしなければ
ならないことをログファイルのライン番号192が記録
することを指示する。或いは又、送信メッセージファイ
ル及びポスト処理メッセージファイルがアプリケーショ
ンプログラムの実行中にロガーによって発生される。ス
テップ1003においては、SGAは、SGAエンジン
のルーチンを呼び出してアプリケーションプログラムの
実行をシュミレーションする。
【表20】
【表21】
【表22】
【0034】図14は、ルーチンGenerateSe
ntMessageFile(送信メッセージファイル
の作成)のフローチャートである。送信メッセージファ
イルは、SGAエンジンルーチンの処理効率を改善する
ために発生される。ステップ1101において、このル
ーチンは、送信メッセージファイルに初期化メッセージ
(INIT)を書き込む。この初期化メッセージは、S
GAエンジンのルーチンを初期化するための指示として
使用される。ステップ1102ないし1105では、こ
のルーチンは、コールバックルーチンの呼び出しをサー
チしてループしそして送信メッセージファイルにエント
リを書き込む。ステップ1102では、このルーチン
は、コールバックルーチンの呼び出しに対応する次のエ
ントリに対しログファイルをサーチする。ステップ11
03でログファイルの終了がサーチされた場合に、ルー
チンは復帰するが、さもなくば、ルーチンはステップ1
104に続く。ステップ1104では、このルーチン
は、メッセージ、エントリのライン番号、及びメッセー
ジが送信メッセージファイルに向けられるところのリソ
ースのハンドルを書き込み、そしてステップ1101へ
ループする。
【0035】図15は、ルーチンGeneratePo
stedMessageFile(ポスト処理メッセー
ジファイルの作成)のフローチャートである。このルー
チンは、各々のポスト処理されたメッセージに対してロ
グファイルをサーチし、そしてそのポスト処理されたメ
ッセージをSGAによってシュミレーションすべきとき
を決定する。ステップ1201において、このルーチン
は、ログファイルにおけるポスト処理メッセージを検索
するファンクションGetMessageか、又はポス
ト処理メッセージを探索しそしてそれらを検索してもし
なくてもよいファンクションPeekMessageの
次の呼び出しをサーチする。ステップ1202において
ログファイルの終了がサーチされた場合に、ルーチンは
復帰となるが、さもなくば、ルーチンはステップ120
3に続く。ステップ1203において、ルーチンは、フ
ァンクションGetMessage又はPeekMes
sageの呼び出しに対応するログファイルのライン番
号を記録する。このライン番号は、ポスト処理されたメ
ッセージに対応する事象をシュミレーションしなければ
ならないポイントを指示する。例えば、ポスト処理され
たメッセージがWM KEYDOWNである場合には、W
KEYDOWNメッセージを検索するファンクショ
ンGetMessageの実行をSGAがシュミレーシ
ョンする前に、又はメッセージ待ち行列における存在を
通知してもしなくてもよいファンクションPeekMe
ssageの実行の前に、WM KEYDOWNメッセ
ージをシュミレーションしなければならない。ステップ
1204では、このルーチンは、ポスト処理されたメッ
セージに一致するコールバックルーチンの呼び出しに対
応するエントリーに対しログファイルをサーチする。即
ち、ポスト処理されたメッセージをアプリケーションプ
ログラムへ送信したところのコールバックルーチンの呼
び出しである。ステップ1205では、このルーチン
は、コールバックルーチンの呼び出しに対応するログフ
ァイル内のエントリのライン番号を記録する。ステップ
1206では、このルーチンは、メッセージ、メッセー
ジライン番号、ポストライン番号、及びメッセージがポ
スト処理メッセージファイルに向けられるところのリソ
ースのハンドルを書き込み、そしてステップ1201へ
ループする。別の実施例では、送信メッセージ及びポス
ト処理メッセージのファイルは、ログファイルの単一の
通過中に作成される。又、送信メッセージ及びポスト処
理メッセージのファイルを作成する必要がなく、むし
ろ、シュミレーションの進行時にログファイルから情報
を決定することができる。
【0036】図16は、SGAエンジンルーチンのフロ
ーチャートである。このルーチンには、ウインドウハン
ドル及びメッセージが通される。このルーチンは、ログ
ファイルに記録されたメッセージのアプリケーションプ
ログラム処理をシュミレーションする。このルーチン
は、ログファイルのどのエントリが通されたメッセージ
に対応するかを決定する。好ましい実施例では、この決
定は、通されたメッセージと同じタイプで且つリソース
に対して同じハンドルをもつメッセージのログファイル
の第1エントリを選択する。次いで、このルーチンは、
メッセージの受け取りに応答して生じるアプリケーショ
ンプログラムの実行をシュミレーションする。応答して
生じる実行は、メッセージを処理するコールバックルー
チンの呼び出し内にネストされたログファイルのエント
リによって表される。SGAエンジンルーチンは、ネス
ト状のメッセージを処理するために繰り返し呼び出され
る。SGAエンジンルーチンを開始するために、メッセ
ージINITの送信に対応してログファイルのライン番
号0においてネストレベル0にダミーエントリが記憶さ
れる。SGAエンジンルーチンは、全ログファイルであ
るネストレベル0内にネスト構成されたログファイルの
全エントリの実行をシュミレーションする。ステップ1
301において、ルーチンは、通されたメッセージに対
応する送信メッセージファイル内のメッセージを見つ
け、そしてそのメッセージラインを記録する。ステップ
1302において、このルーチンは、見つけたメッセー
ジのネストレベルを決定する。ステップ1303におい
て、このルーチンは、通されたパラメータを有効化す
る。ステップ1304において、このルーチンは、その
通されたメッセージを処理したコールバックルーチン内
のファンクションの呼び出しに対応するログファイル内
の次のラインをサーチする。このルーチンは、そのライ
ンをコールラインとして記録する。例えば、通されたメ
ッセージがログファイルのライン番号8におけるメッセ
ージに対応する場合には、ライン番号9は、ネスト状フ
ァンクションの呼び出しを含む。ステップ1305にお
いてルーチンが次のラインを見つける場合は、ルーチン
はステップ1306に続き、さもなくば、ステップ13
10に続く。ステップ1306において、このルーチン
は、ルーチンSimulatePostedMessa
ge(ポスト処理メッセージのシュミレーション)を呼
び出し、もし適当であれば、メッセージのポスト処理を
シュミレーションする。ステップ1307において、こ
のルーチンは、ネスト状ファンクションの呼び出しの戻
りに対応するラインを見つける。ステップ1308にお
いて、このルーチンは、ネスト状ファンクションのサン
クファンクションを検索又は識別する。ステップ130
9において、このルーチンは、サンクファンクションを
呼び出し、ステップ1304へループする。ステップ1
310では、このルーチンは、ステップ1301で見つ
けたメッセージの呼び出しラインに関連した戻りライン
を見つける。ステップ1311では、このルーチンは、
適当な戻り値をセットし、復帰する。
【0037】図17は、ルーチンFindMessag
eInSentMessageFile(送信メッセー
ジファイルのメッセージの探索)のフローチャートであ
る。このルーチンにはメッセージ及びリソース(ウイン
ドウ)ハンドルが通される。このルーチンは、通された
リソースハンドルに対する通されたメッセージに対応す
る次のメッセージを送信メッセージファイルにおいて見
つける。このルーチンは、メッセージのログファイルに
おけるライン番号を戻す。このルーチンは、各リソース
ハンドルに対し各メッセージタイプごとに見つけた送信
メッセージファイル内の最後のエントリを追跡するアレ
ーを維持する。このルーチンは、この最後のエントリか
らサーチをスタートする。ステップ1401において、
このルーチンは、通されたメッセージタイプの通された
リソースハンドルに対して送信メッセージファイル内で
見つかった最後のメッセージのメッセージラインを検索
する。ステップ1402ないし1403において、この
ルーチンは、通されたリソースハンドルに対する通され
たメッセージ形式の次のメッセージに対し送信メッセー
ジファイルをサーチしてループする。ステップ1402
において、ルーチンはメッセージラインを増加する。ス
テップ1403において、送信メッセージファイルのメ
ッセージラインのメッセージが、通されたメッセージタ
イプ及び通されたリソースハンドルに等しい場合にはル
ーチンはステップ1404に続くが、さもなくば、ルー
チンはステップ1402へループする。ステップ140
4において、このルーチンは、通されたメッセージタイ
プ及び通されたリソースハンドルに対する最終メッセー
ジライン番号をメッセージラインにセットする。ステッ
プ1405において、ルーチンは、コールバックルーチ
ンの呼び出しに対応するエントリのログファイルにおけ
るライン番号を検索し、通されたメッセージを処理し
て、復帰する。
【0038】図18は、ルーチンSimulatePo
stedMessageのフローチャートである。この
ルーチンは、ポスト処理されたメッセージファイルを走
査して、通されたライン番号におけるログファイルのエ
ントリに対応するファンクションの実行をSGAがシュ
ミレーションする前にメッセージのポスト処理をシュミ
レーションしなければならないかどうかを判断する。次
いで、ルーチンは、もし適当であれば、メッセージのポ
スト処理をシュミレーションする。ステップ1501に
おいて、このルーチンは、ポスト処理されたメッセージ
ファイルを走査して、ログファイル内の通されたライン
番号におけるエントリのシュミレーションの前にメッセ
ージをポスト処理しなければならないかどうかを判断す
る。ステップ1502において、メッセージをポスト処
理しなければならない場合には、ルーチンはステップ1
503に続くが、さもなくば、ルーチンは復帰する。ス
テップ1503ないし1510において、ルーチンは、
どのメッセージをポスト処理しなければならないかを決
定し、適当なルーチンを呼び出して、メッセージのポス
ト処理をシュミレーションし、次いで、ルーチンは復帰
する。
【0039】図19は、WM KEYDOWNメッセー
ジのポスト処理をシュミレーションするルーチンのフロ
ーチャートである。このルーチンには、コールバックル
ーチンの呼び出しに対応する送信ルーチンと、メッセー
ジをその前にポスト処理すべきライン番号に対応するポ
ストライン番号とが通される。ステップ1601におい
て、このルーチンは、ログファイルから送信ラインにお
いてメッセージを検索する。ステップ1602におい
て、このルーチンは、新たなオペレーティングシステム
又はその等効物のファンクションPostMessag
eを呼び出し、検索されたWM KEYDOWNメッセ
ージをポスト処理して、復帰する。
【0040】図20は、WM MOUSEMOVEメッ
セージをシュミレーションするルーチンのフローチャー
トである。このルーチンには、コールバックルーチンの
呼び出しに対応するエントリのログファイルにおける送
信ライン番号と、メッセージのポスト処理をその前にシ
ュミレーションしなければならないライン番号に対応す
るポストラインとが通される。WM MOUSEMOV
Eメッセージをシュミレーションするために、このルー
チンは、ポスト処理されたWM MOUSEMOVEメ
ッセージを検索したファンクションGetMessag
eの呼び出し中に送られた送信メッセージをシュミレー
ションする。次いで、このルーチンは、WM MOUS
EMOVEメッセージを新たなオペレーティングシステ
ムに対してポスト処理する。例えば、ログファイルのラ
イン番号136は、WM MOUSEMOVEメッセー
ジの送信に対応し、そしてライン番号123は、WM
MOUSEMOVEメッセージのポスト処理をその前に
シュミレーションしなければならないラインに対応す
る。WM MOUSEMOVEメッセージをシュミレー
ションするために、ライン124におけるWM NCH
ITTESTメッセージの送信と、ライン128におけ
るWM SETCURSORメッセージの送信とをシュ
ミレーションしなければならない。このルーチンは、新
たなオペレーティングシステムにおいてファンクション
SendMessage(又はその等効物)を用いて、
これらメッセージを送信する。次いで、新たなオペレー
ティングシステムによりサンクコールバックルーチンが
呼び出され、メッセージをSGAへ送信する。メッセー
ジが送られた後に、SGAは、新たなオペレーティング
システムにおいてファンクションPostMessag
e(又はその等効物)を呼び出すことによりWM MO
USEMOVEメッセージをポスト処理する。ステップ
1701ないし1704において、このルーチンは、各
送信メッセージを検索し、そしてメッセージを新たなオ
ペレーティングシステムへ送信する。ステップ1701
において、このルーチンは、サーチのスタートをポスト
ラインにセットする。ステップ1702において、ログ
ファイルのサーチラインがポストラインにおけるファン
クションGetMessageの呼び出しからの戻りを
指示する場合には、ルーチンがステップ1705へ続
き、さもなくば、ルーチンはステップ1703へ続く。
ステップ1703において、ルーチンは、ログファイル
から次の送信メッセージを検索する。ステップ1704
において、ルーチンは、検索されたメッセージと共に新
たなオペレーティングシステムのファンクションSen
dMessageを呼び出し、そしてステップ1702
へループする。ステップ1705において、このルーチ
ンは、ポストラインにおけるファンクションGetMe
ssageの呼び出しからの復帰に対応するメッセージ
を検索する。ステップ1706において、このルーチン
は、検索されたメッセージと共に新たなオペレーティン
グシステムのファンクションPostMessageを
呼び出し、復帰となる。或いは又、WM MOUSEM
OVEメッセージをシュミレーションするルーチンは、
実際にWM MOUSEMOVEメッセージをシュミレ
ーションする新たなオペレーティングシステムのファン
クションSetCursorPosを呼び出すことがで
きる。
【0041】図21は、サンクウインドウ手順のフロー
チャートである。各サンクコールバックルーチンは同様
に動作する。ステップ1801において、このルーチン
は、どの古いウインドウハンドルが新たなオペレーティ
ングシステムによって通されたウインドウハンドルに対
応するかを決定する。新たなオペレーティングシステム
は、古いオペレーティングシステムによって使用された
実際のハンドルに必ずしも対応しないハンドルを使用す
る。従って、SGAは、古いオペレーティングシステム
のハンドルと、新たなオペレーティングシステムの対応
するハンドルとの間のマッピングを維持する。ステップ
1802において、このルーチンは、SGAエンジンル
ーチンを呼び出し、アプリケーションプログラムによる
ウインドウ手順の処理をシュミレーションし、復帰とな
る。
【0042】図22は、ルーチンThunkRegis
terClass(サンクレジスタクラス)のフローチ
ャートである。ステップ1901において、このルーチ
ンは次の未使用のサンクウインドウ手順を選択する。ス
テップ1902において、このルーチンは、クラス名
と、その選択されたサンクウインドウ手順との一致を確
立する。このクラスのウインドウが形成されるたびに、
その選択されたウインドウ手順が、その一致に基づいて
サンクウインドウ手順として使用される。ステップ19
03では、このルーチンは、通されたコールラインによ
って指示されたライン番号においてログファイルからの
ファンクションRegisterClassの呼び出し
に対するパラメータを検索する。ステップ1904で
は、このルーチンは、ウインドウ手順のアドレスを、そ
の選択されたサンクウインドウ手順のアドレスにセット
する。ステップ1905では、この手順は、新たなオペ
レーティングシステムのファンクションRegiste
rClassを呼び出す。ステップ1906では、この
ルーチンは、新たなオペレーティングシステムに対する
ファンクションRegisterClassの呼び出し
の戻り値が、ログファイルにおける戻りラインにより指
示された古いオペレーティングシステムに対するファン
クションRegisterClassの呼び出しの戻り
値に一致するかどうか判断し、もし一致しない場合はエ
ラーメッセージを報告する。次いで、ルーチンは、復帰
となる。
【0043】図23は、ルーチンThunkCreat
eWindow(サンククリエートウインドウ)のフロ
ーチャートである。ステップ2001において、このル
ーチンは、通されたコールラインによって指示されたラ
イン番号においてログファイルからのファンクションC
reateWindowの呼び出しに対し通されたパラ
メータを検索する。ステップ2002において、このル
ーチンは、1が指定された場合に、通された親ウインド
ウに対する新たなウインドウハンドルを決定する。ステ
ップ2003において、このルーチンは、1が指定され
た場合に、通されたメニューの新たなメニューハンドル
を決定する。ステップ2004では、このルーチンは、
このアプリケーションのインスタンス、SGAに対する
新たなハンドルを決定する。ステップ2005におい
て、このルーチンは、通された戻りラインによって指示
されたライン番号においてログファイルから戻りパラメ
ータを得る。ステップ2006では、このルーチンは、
新たなパラメータ(例えば、新たなハンドル)を通す新
たなオペレーティングシステムのファンクションCre
ateWindowを呼び出す。ステップ2007で
は、このルーチンは、新たなオペレーティングシステム
によって戻される新たなハンドルと、ログファイル内の
戻りパラメータにより指示されるように古いオペレーテ
ィングシステムにより使用される古いハンドルとの間の
一致を確立する。ステップ2008では、ルーチンは、
新たなオペレーティングシステムのファンクションCr
eateWindowの呼び出しによる戻りパラメータ
が、ログファイル内の戻りラインにより指示される古い
オペレーティングシステムのファンクションCreat
eWindowの呼び出しの戻りパラメータに一致する
かどうかを決定し、もし一致しなければエラーを報告す
る。次いで、ルーチンは復帰となる。
【0044】図24は、手順ThunkDestroy
Window(サンクデストロイウインドウ)のフロー
チャートである。ステップ2101において、このルー
チンは、通されたコールラインによって指示されたライ
ン番号においてログファイルから通されたパラメータを
検索する。ステップ2102では、このルーチンは、古
いウインドウハンドルに一致する新たなウインドウハン
ドルを決定する。ステップ2103では、このルーチン
は、通された戻りラインによって指示されたライン番号
においてログファイルから戻りパラメータを検索する。
ステップ2104では、このルーチンは、新たなオペレ
ーティングシステムのファンクションDestroyW
indowを呼び出す。ステップ2104において、こ
のルーチンは、新たなオペレーティングシステムのファ
ンクションDestroyWindowの呼び出しの戻
り値を、検索された戻りパラメータにより指示された古
いオペレーティングシステムのファンクションDest
royWindowの呼び出しと比較し、差があった場
合にエラーを報告する。次いで、ファンクションは復帰
となる。
【0045】図25は、テンプレートサンクファンクシ
ョンのフローチャートである。このサンクファンクショ
ンには、ファンクションの呼び出し(コールライン)及
び戻り(戻りライン)に対応するログファイル内のライ
ン番号が通される。ステップ2201ないし2202で
は、サンクファンクションは、ログファイルから通され
たパラメータを検索する。ステップ2203ないし22
04では、サンクファンクションは、ログファイルから
戻されたパラメータを検索する。ステップ2205で
は、サンクファンクションは、パラメータとして通され
た古いハンドルに対応する新たなハンドルを検索する。
ステップ2206では、このルーチンは、新たなオペレ
ーティングシステムにおいて古いオペレーティングシス
テムのファンクションをシュミレーションするファンク
ションを呼び出す。ステップ2207では、サンクファ
ンクションは、新たなオペレーティングシステムによっ
て戻された新たなハンドルと、古いオペレーティングシ
ステムの古いハンドルとの間の一致をセットする。ステ
ップ2208において、シュミレーションされたファン
クションからの戻されたパラメータがログファイルから
の戻されたパラメータに一致しない場合には、ステップ
2209においてエラーが報告され、ルーチンは復帰と
なる。
【0046】図26は、本発明の別の実施例のブロック
図である。リアルタイムロガー2302は、古いサーバ
プログラムに対して意図されたアプリケーションプログ
ラム2301のサービス要求(ファンクション呼び出
し)をインターセプトし、その要求をシュミレータプロ
グラム2303へ送る。シュミレータプログラムは、受
け取った要求を、新たなサーバプログラム2304のサ
ービス要求に対してマップする。新たなサーバプログラ
ムは、これらの要求を実行して、その結果をシュミレー
タを経てリアルタイムロガーへ通し、該ロガーはアプリ
ケーションプログラムへ復帰する。同様に、新たなサー
バプログラムがコールバックルーチンを呼び出すときに
は、シュミレータプログラムが呼び出しをロガーへ送
り、該ロガーはアプリケーションプログラムの適当なコ
ールバックルーチンを呼び出す。新たなサーバプログラ
ムは、外部事象を入力し、事象のインジケータをシュミ
レータ及びリアルタイムロガーを経てアプリケーション
プログラムへ送る。
【0047】当業者であれば、本発明の方法及びシステ
ムを使用して、グラフィックユーザシステムに関連して
オペレーティングシステム以外のもので与えられるAP
Iを用いたプログラムの実行をシュミレーションできる
ことが明らかであろう。例えば、データベースシステム
(サーバプログラム)は、そのAPIを構成する種々の
ファンクションを与えることができる。アプリケーショ
ンプログラム(クライエントプログラム)とデータベー
スシステムとの間の相互作用は、アプリケーションプロ
グラムの実行中に記録することができる。次いで、この
記録された相互作用を用いて、アプリケーションプログ
ラムをシュミレーションし、新たなデータベースシステ
ムをテストすることができる。
【0048】又、当業者であれば、新たなオペレーティ
ングシステムは、単に、幾つかのファンクションを再書
き込みし、向上し又は変更した古いオペレーティングシ
ステムとすることもできることが明らかであろう。この
場合に、既存のアプリケーションプログラムは新たなオ
ペレーティングシステムのもとで実行できるが、シュミ
レーションシステムを使用して、新たなオペレーティン
グシステムのファンクションによって戻されたパラメー
タ及び新たなオペレーティングシステムによりコールバ
ックルーチンに通されたパラメータをチェックすること
ができる。
【0049】更に、当業者であれば、本発明を使用し
て、第1のサーバプログラムのサービスを要求するよう
に開発されたクライエントプログラムの性能を、第2の
サーバプログラムにおけるシュミレーションされた性能
と比較することができる。これら性能を比較するため
に、クライエントプログラムが実行され、ログが形成さ
れる。第1及び第2の両方のサーバプログラムにおいて
実行がシュミレーションされ、性能特性が記録される。
性能特性は、両サーバプログラムに対するシュミレーシ
ョンオーバーヘッドを含み、比較に対する正規化された
ベースを構成する。或いは又、同様の解決策を用いて、
性能を第3のサーバプログラムと比較することができ
る。
【0050】好ましい実施例について本発明を説明した
が、本発明はこの実施例に限定されるものではない。本
発明の範囲内で変更がなされ得ることが当業者に明らか
であろう。本発明の範囲は、特許請求の範囲のみによっ
て限定されるものとする。
【図面の簡単な説明】
【図1】典型的なメッセージ駆動のオペレーティングシ
ステムのメッセージアーキテクチャを示すブロック図で
ある。
【図2】アプリケーションプログラムの相互作用及びシ
ュミレーションの記録を示すブロック図である。
【図3】アプリケーションプログラムの相互作用及びシ
ュミレーションの記録を示すブロック図である。
【図4】アプリケーションプログラムの相互作用及びシ
ュミレーションの記録を示すブロック図である。
【図5】ロガーの好ましいアーキテクチャを示すブロッ
ク図である。
【図6】例示的な代替えファンクションのフローチャー
トである。
【図7】ファンクションの呼び出しをロギングするルー
チンを示すフローチャートである。
【図8】値によって通される典型的な整数パラメータの
記録を示すフローチャートである。
【図9】ポインタとしてバッファに通されるパラメータ
を記録するルーチンを示すフローチャートである。
【図10】コールバックルーチンを指すパラメータの処
理のフローチャートである。
【図11】典型的な代替えコールバックルーチンのフロ
ーチャートである。
【図12】合成GUIアプリケーションを示す全体的な
図である。
【図13】合成GUIアプリケーションプログラムのフ
ローチャートである。
【図14】ルーチンGenerateSentMess
ageFileのフローチャートである。
【図15】ルーチンGeneratePostedMe
ssageFileのフローチャートである。
【図16】SGAエンジンルーチンのフローチャートで
ある。
【図17】ルーチンFindMessageInSen
tMessageFileのフローチャートである。
【図18】ルーチンSimulatePostedMe
ssageのフローチャートである。
【図19】WM KEYDOWNメッセージのポスト処
理をシュミレーションするルーチンのフローチャートで
ある。
【図20】WM MOUSEMOVEメッセージをシュ
ミレーションするルーチンのフローチャートである。
【図21】サンクウインドウ手順のフローチャートであ
る。
【図22】ルーチンThunkRegisterCla
ssのフローチャートである。
【図23】ルーチンThunkCreateWindo
wのフローチャートである。
【図24】手順ThunkDestroyWindow
のフローチャートである。
【図25】テンプレートサンクファンクションのフロー
チャートである。
【図26】本発明の別の実施例を示すブロック図であ
る。
【符号の説明】
110 アプリケーションプログラム 111 メイン手順 112 ウインドウ手順 113 メッセージループ 120 オペレーティングシステム 130 ディスプレイモニタ 210 アプリケーションプログラム 220 古いオペレーティングシステム 230 ロガー 240 ログファイル 250 合成GUIアプリケーション(SGA) 260 新たなオペレーティングシステム 311 代替えファンクション 312 代替えコールバックルーチン
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ロバート エフ デイ アメリカ合衆国 ワシントン州 98012 ボーセル フィルバート ドライヴ 19906

Claims (26)

    【特許請求の範囲】
  1. 【請求項1】 クライエントプログラムの実行をシュミ
    レーションするためのコンピュータシステムにおける方
    法であって、上記クライエントプログラムは第1のサー
    バプログラムのサービスを要求するためのもので、更
    に、上記クライエントプログラムは、その要求されたサ
    ービスの振る舞いの変化を識別するためのパラメータを
    指定し、上記方法は、 上記クライエントプログラムの実行中に、上記第1のサ
    ーバプログラムのサービスに対する複数の要求をロギン
    グし、その各々の要求は、要求したサービスの識別と、
    その要求したサービスで指定されるパラメータとを含
    み、そして上記ロギングされた要求に基づいて上記第1
    のサーバプログラムにより実行される振る舞いと同様の
    振る舞いを実行するように第2のサーバプログラムを要
    求し、これにより、上記クライエントコンピュータプロ
    グラムの実行の振る舞いをシュミレーションする、とい
    う段階を備えたことを特徴とする方法。
  2. 【請求項2】 上記サービスは、上記サーバプログラム
    によって与えられるファンクションを呼び出すことによ
    って要求され、振る舞いを実行するために第2のサーバ
    プログラムを要求する上記段階は、上記第2のサーバプ
    ログラムによって与えられるファンクションを呼び出す
    段階を含む請求項1に記載の方法。
  3. 【請求項3】 振る舞いを実行するために第2のサーバ
    プログラムを要求する上記段階は、 複数のロギングされた要求の各々に対し、 そのロギングされた要求の振る舞いをシュミレーション
    するように上記第2のサーバプログラムの1つ以上のサ
    ービスを選択し、そしてその選択されたサービスを実行
    するように上記第2のサーバプログラムを要求する、と
    いう段階を備えた請求項1に記載の方法。
  4. 【請求項4】 選択されたサービスを実行するように上
    記第2のサーバプログラムを要求する上記段階は、上記
    ロギングされた要求で指定されたパラメータを上記第2
    のサーバプログラムへ通す段階を含む請求項3に記載の
    方法。
  5. 【請求項5】 上記第2のサーバプログラムへパラメー
    タを通す前に、上記第1のサーバプログラムによって発
    生されたパラメータから、上記第2のサーバプログラム
    によって発生されたパラメータへとパラメータをマッピ
    ングする段階を備えた請求項4に記載の方法。
  6. 【請求項6】 上記マッピング段階は、コンピュータシ
    ステムで発生されたハンドルをマッピングする段階を含
    む請求項5に記載の方法。
  7. 【請求項7】 上記サービスは、上記サーバプログラム
    によって与えられるファンクションを呼び出すことによ
    って要求され、振る舞いを実行するために第2のサーバ
    プログラムを要求する上記段階は、 上記第1サーバプログラムによって与えられた各ファン
    クションにサンクファンクションを関連させ、各サンク
    ファンクションは、上記第1のサーバプログラムの関連
    ファンクションのプロートタイプと同様のプロートタイ
    プを有するものであり、そしてロギングされた要求のフ
    ァンクションに関連したサンクファンクションを呼び出
    して、そのロギングされた要求の振る舞いをシュミレー
    ションする、という段階を備えた請求項1に記載の方
    法。
  8. 【請求項8】 サンクファンクションを呼び出す上記段
    階は、上記ロギングされた要求のパラメータと同様のパ
    ラメータを通す段階を備えた請求項7に記載の方法。
  9. 【請求項9】 上記第2のサーバプログラムへパラメー
    タを通す前に、上記第1のサーバプログラムによって発
    生されたパラメータから、上記第2のサーバプログラム
    によって発生されたパラメータへとパラメータをマッピ
    ングする段階を備えた請求項8に記載の方法。
  10. 【請求項10】 上記サンクファンクションの呼び出し
    中に、そのサンクファンクションに関連したファンクシ
    ョンの振る舞いをシュミレーションするように上記第2
    のサーバプログラムの1つ以上のファンクションを呼び
    出すという段階を備えた請求項7に記載の方法。
  11. 【請求項11】 上記第2のサーバプログラムのファン
    クションから戻るときに、サンクファンクションによっ
    て戻されるべき戻りパラメータを指定するという段階を
    備えた請求項10に記載の方法。
  12. 【請求項12】 上記サービスは、上記サーバプログラ
    ムによって与えられるファンクションを呼び出すことに
    よって要求され、上記第1のサーバプログラムのサービ
    スに対する複数の要求をロギングする上記段階は、呼び
    出されたファンクションからの各戻りをロギングする段
    階を含み、各々のロギングされた戻りは、要求されたサ
    ービスの識別と、呼び出されたファンクションによって
    戻されるパラメータとを含む請求項1に記載の方法。
  13. 【請求項13】 要求をロギングする上記段階は、上記
    第2のサーバプログラムの要求を制御するシュミレーシ
    ョンプログラムへ要求を送る段階を含む請求項1に記載
    の方法。
  14. 【請求項14】 上記第1のサーバプログラムへ要求を
    送るのを抑制する段階を備えた請求項13に記載の方
    法。
  15. 【請求項15】 上記ロギング段階は、コールバックル
    ーチンの呼び出しをロギングする段階を含むと共に、各
    コールバックルーチンにサンクコールバックルーチンを
    関連させる段階を含み、上記サンクコールバックルーチ
    ンは、上記第2のサーバプログラムによって呼び出され
    たときにその関連コールバックの振る舞いをシュミレー
    ションする請求項1に記載の方法。
  16. 【請求項16】 上記第1のサーバプログラムはオペレ
    ーティングシステムであり、そして上記第2のサーバプ
    ログラムは、その同じオペレーティングシステムの異な
    るバージョンである請求項1に記載の方法。
  17. 【請求項17】 上記第1のサーバプログラムはオペレ
    ーティングシステムであり、そして上記第2のサーバプ
    ログラムは、異なるオペレーティングシステムである請
    求項1に記載の方法。
  18. 【請求項18】 第1のサーバプログラムでのクライエ
    ントプログラムの実行と、第2のサーバプログラムでの
    クライエントプログラムの実行との間で性能を比較する
    ためのコンピュータシステムにおける方法であって、上
    記クライエントプログラムは第3のサーバプログラムの
    サービスを要求するものであり、上記方法は、 上記クライエントプログラムの実行中に、上記第3のサ
    ーバプログラムのサービスに対する複数の要求をロギン
    グし、その各々の要求は、要求されたサービスの識別を
    含み、 上記ロギングされた要求を選択することにより上記第1
    のサーバプログラムでのクライエントプログラムの実行
    をシュミレーションし、各々の選択されたロギングされ
    た要求の要求された振る舞いを実行するように上記第1
    のサーバプログラムを要求し、そして上記第1のサーバ
    プログラムによる要求の性能の特性を記録し、 上記ロギングされた要求を選択することにより上記第2
    のサーバプログラムでのクライエントプログラムの実行
    をシュミレーションし、各々の選択されたロギングされ
    た要求の要求された振る舞いを実行するように上記第2
    のサーバプログラムを要求し、そして上記第2のサーバ
    プログラムによる要求の性能の特性を記録し、そして上
    記第1のサーバプログラム及び第2のサーバプログラム
    による要求の性能の記録された特性を分析する、という
    段階を備えたことを特徴とする方法。
  19. 【請求項19】 性能特性記録タイミング情報を記録す
    る段階を備えた請求項18に記載の方法。
  20. 【請求項20】 第1のサーバプログラムでのクライエ
    ントプログラムの実行をシュミレーションする段階は第
    1のコンピュータで行われ、そして第2のサーバプログ
    ラムでのクライエントプログラムの実行をシュミレーシ
    ョンする段階は第2のコンピュータで行われ、これら第
    1のコンピュータ及び第2のコンピュータは異なるアー
    キテクチャを有する請求項19に記載の方法。
  21. 【請求項21】 上記ロギング段階は、上記第1のコン
    ピュータ及び第2のコンピュータのアーキテクチャとは
    異なるアーキテクチャを有する第3のコンピュータで実
    行される請求項20に記載の方法。
  22. 【請求項22】 第2のサーバプログラムでクライエン
    トコンピュータプログラムを共働的に実行するためのコ
    ンピュータシステムにおける方法であって、上記クライ
    エントコンピュータプログラムは、第1のサーバプログ
    ラムのサービスを要求するために形成され、更に、上記
    クライエントプログラムは、サービスの名前と、要求さ
    れたサービスに対するパラメータとを指定し、上記方法
    は、 コンピュータシステムにおけるクライエントプログラム
    の実行中に、 上記第1のサーバプログラムのサービスに対する複数の
    要求をインターセプトし、各要求は、サービスの名前
    と、パラメータとを含むものであり、そしてサービスに
    対する各々のインターセプトされた要求をマッピングプ
    ログラムへ送り;その送られた要求をマッピングプログ
    ラムによって受け取ったときに、その受け取られた要求
    の振る舞いを実行するように上記第2のサーバプログラ
    ムを要求し;そして上記第2のサーバプログラムにより
    戻されるパラメータをクライエントプログラムへ送り、
    これにより、クライエントプログラムが実行を続ける;
    という段階を備えたことを特徴とする方法。
  23. 【請求項23】 上記クライエントプログラムは第1の
    コンピュータにおいて実行され、そして上記第2のサー
    バプログラムは第2のコンピュータにおいて実行される
    請求項22に記載の方法。
  24. 【請求項24】 上記マッピングプログラムは、上記ク
    ライエントプログラムと同じコンピュータにおいて実行
    され、そして上記第2のサーバプログラムのサービスに
    対する要求を上記第1コンピュータから第2コンピュー
    タへ送る段階を含む請求項23に記載の方法。
  25. 【請求項25】 上記サービスは、サービスプログラム
    によって与えられるファンクションを呼び出すことによ
    って要求され、そして振る舞いを実行するように上記第
    2のサーバプログラムを要求する上記段階は、上記第2
    のサーバプログラムによって与えられるファンクション
    を呼び出す段階を含む請求項22に記載の方法。
  26. 【請求項26】 振る舞いを実行するように上記第2の
    サーバプログラムを要求する上記段階は、 複数の送られた要求に対し、 その送られた要求の振る舞いをシュミレーションするよ
    うに上記第2のサーバプログラムの1つ以上のサービス
    を選択し、そしてその選択されたサービスを実行するよ
    うに上記第2のサーバプログラムを要求する、という段
    階を含む請求項22に記載の方法。
JP6147258A 1993-06-30 1994-06-29 コンピュータプログラムの実行をシュミレーションする方法及びシステム Withdrawn JPH07105044A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US8562193A 1993-06-30 1993-06-30
US08/085621 1993-06-30

Publications (1)

Publication Number Publication Date
JPH07105044A true JPH07105044A (ja) 1995-04-21

Family

ID=22192829

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6147258A Withdrawn JPH07105044A (ja) 1993-06-30 1994-06-29 コンピュータプログラムの実行をシュミレーションする方法及びシステム

Country Status (5)

Country Link
US (1) US5574854A (ja)
EP (1) EP0632377B1 (ja)
JP (1) JPH07105044A (ja)
CA (1) CA2127222A1 (ja)
DE (1) DE69415593T2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008507767A (ja) * 2004-07-20 2008-03-13 ソフトリシティ インコーポレイテッド コンピュータアプリケーションにおけるデータ損失を最小限にする方法およびシステム

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2714746B1 (fr) * 1993-12-31 1996-02-02 Bull Sa Procédé de simulation d'une architecture "serveur" à partir d'une architecture "client".
US5790800A (en) * 1995-10-13 1998-08-04 Digital Equipment Corporation Client application program mobilizer
US5987245A (en) 1996-07-01 1999-11-16 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture (#12) for a client-server state machine framework
US5848246A (en) 1996-07-01 1998-12-08 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server session manager in an interprise computing framework system
US6038590A (en) 1996-07-01 2000-03-14 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server state machine in an interprise computing framework system
US6266709B1 (en) 1996-07-01 2001-07-24 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server failure reporting process
US5999972A (en) 1996-07-01 1999-12-07 Sun Microsystems, Inc. System, method and article of manufacture for a distributed computer system framework
US6272555B1 (en) 1996-07-01 2001-08-07 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server-centric interprise computing framework system
US6434598B1 (en) 1996-07-01 2002-08-13 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server graphical user interface (#9) framework in an interprise computing framework system
US6424991B1 (en) 1996-07-01 2002-07-23 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server communication framework
US6304893B1 (en) 1996-07-01 2001-10-16 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server event driven message framework in an interprise computing framework system
US5790778A (en) * 1996-08-07 1998-08-04 Intrinsa Corporation Simulated program execution error detection method and apparatus
JP4633203B2 (ja) * 1996-08-07 2011-02-16 マイクロソフト コーポレーション シミュレートされたプログラムの実行エラーの検出方法および装置
US6078739A (en) * 1997-11-25 2000-06-20 Entelos, Inc. Method of managing objects and parameter values associated with the objects within a simulation model
US6047387A (en) * 1997-12-16 2000-04-04 Winbond Electronics Corp. Simulation system for testing and displaying integrated circuit's data transmission function of peripheral device
US7140005B2 (en) * 1998-12-21 2006-11-21 Intel Corporation Method and apparatus to test an instruction sequence
AU4466700A (en) 1999-04-16 2000-11-02 Entelos, Inc. Method and apparatus for conducting linked simulation operations utilizing a computer-based system model
US6442752B1 (en) * 1999-08-26 2002-08-27 Unisys Corporation Method, apparatus, and computer program product for replacing a dynamic link library (dll) of a first computing environment with a dll of a second computing environment that can be invoked from the first computing environment in a transparent manner
WO2001022227A1 (en) * 1999-09-20 2001-03-29 Actuarieel Adviesbureau Vermaase B.V. Computer program for multiple types of user interfaces and method for testing such computer programs
US6729699B1 (en) * 2000-10-04 2004-05-04 International Business Machines Corporation Invocation map based architecture for program execution
US6832181B1 (en) * 2000-11-03 2004-12-14 Hewlett-Packard Development Company, L.P. Method to distinguish between physical hardware and simulated hardware
US7865349B2 (en) * 2001-01-19 2011-01-04 National Instruments Corporation Simulation, measurement and/or control system and method with coordinated timing
US7072810B2 (en) * 2001-06-08 2006-07-04 Tata Consultancy Services Limited Method and apparatus for pattern based generation of graphical user interfaces (GUI)
US20030005168A1 (en) * 2001-06-29 2003-01-02 Leerssen Scott Alan System and method for auditing system call events with system call wrappers
US20040199828A1 (en) * 2003-04-01 2004-10-07 International Business Machines Corporation Method and apparatus for tracing troubleshooting events for aiding technical assistance
JP4020849B2 (ja) * 2003-09-25 2007-12-12 松下電器産業株式会社 シミュレーション装置、シミュレーションプログラム、記録媒体及びシミュレーション方法
US7496898B1 (en) * 2004-04-15 2009-02-24 Sun Microsystems, Inc. Error analysis and diagnosis for generic function calls
US7761282B2 (en) * 2005-12-16 2010-07-20 International Business Machines Corporation System and method to simulate conditions and drive control-flow in software
US7698603B2 (en) * 2007-09-07 2010-04-13 Microsoft Corporation Test results management
US8949103B2 (en) * 2009-05-01 2015-02-03 Microsoft Corporation Program code simulator
DE102010006572A1 (de) * 2010-02-02 2011-08-04 Giesecke & Devrient GmbH, 81677 Verfahren zum Ausführen einer Anwendung
US8938689B2 (en) * 2010-03-30 2015-01-20 Ncr Corporation Window suppression
US9111031B2 (en) * 2010-04-16 2015-08-18 Salesforce.Com, Inc. Method and system for simulating and analyzing code execution in an on-demand service environment
CN104487935B (zh) * 2012-07-27 2018-04-24 慧与发展有限责任合伙企业 记录外部过程
US9396044B2 (en) * 2014-04-25 2016-07-19 Sony Corporation Memory efficient thread-level speculation
CN110858163A (zh) * 2018-08-22 2020-03-03 阿里巴巴集团控股有限公司 数据处理方法、装置和机器可读介质
CN113722020B (zh) * 2020-05-26 2024-06-11 腾讯科技(深圳)有限公司 接口调用方法、装置和计算机可读存储介质

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4696003A (en) * 1986-03-10 1987-09-22 International Business Machines Corporation System for testing interactive software
US4819233A (en) * 1987-04-08 1989-04-04 Westinghouse Electric Corp. Verification of computer software
US4819234A (en) * 1987-05-01 1989-04-04 Prime Computer, Inc. Operating system debugger
IE60444B1 (en) * 1988-03-30 1994-07-13 Elverex Ltd A software verification apparatus
US5159669A (en) * 1988-12-15 1992-10-27 Xerox Corporation Automatically creating a second workspace operation record including history data and a unit ID based on a first workspace operation
US5226162A (en) * 1990-01-22 1993-07-06 International Business Machines Corporation Assist program for operating a debug program in conjunction with a user program
US5157782A (en) * 1990-01-31 1992-10-20 Hewlett-Packard Company System and method for testing computer hardware and software
US5218605A (en) * 1990-01-31 1993-06-08 Hewlett-Packard Company Software modules for testing computer hardware and software
US5157779A (en) * 1990-06-07 1992-10-20 Sun Microsystems, Inc. User extensible testing system
US5233611A (en) * 1990-08-20 1993-08-03 International Business Machines Corporation Automated function testing of application programs
US5339261A (en) * 1992-10-22 1994-08-16 Base 10 Systems, Inc. System for operating application software in a safety critical environment

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008507767A (ja) * 2004-07-20 2008-03-13 ソフトリシティ インコーポレイテッド コンピュータアプリケーションにおけるデータ損失を最小限にする方法およびシステム

Also Published As

Publication number Publication date
US5574854A (en) 1996-11-12
DE69415593T2 (de) 1999-05-20
DE69415593D1 (de) 1999-02-11
CA2127222A1 (en) 1994-12-31
EP0632377A1 (en) 1995-01-04
EP0632377B1 (en) 1998-12-30

Similar Documents

Publication Publication Date Title
JPH07105044A (ja) コンピュータプログラムの実行をシュミレーションする方法及びシステム
EP0785510B1 (en) Program debugging system for debugging a program having a graphical user interface
US6539501B1 (en) Method, system, and program for logging statements to monitor execution of a program
US5630049A (en) Method and apparatus for testing software on a computer network
US6182245B1 (en) Software test case client/server system and method
US6609246B1 (en) Integrated development environment for high speed transaction processing WWW applications on heterogeneous computer systems
US7321988B2 (en) Identifying a code library from the subset of base pointers that caused a failure generating instruction to be executed
US7380235B1 (en) Application program interface call replay tool
US7089535B2 (en) Code coverage with an integrated development environment
AU2017327823B2 (en) Test case generator built into data-integration workflow editor
US20060085798A1 (en) Method and apparatus for correlation of events in a distributed multi-system computing environment
US6467082B1 (en) Methods and apparatus for simulating external linkage points and control transfers in source translation systems
JP2001236246A (ja) ワークステーション・ソフトウエアの自動化回帰試験
US20050086022A1 (en) System and method for providing a standardized test framework
US8533683B2 (en) Stack walking enhancements using sensorpoints
US7086033B2 (en) Software debugger having a monitor for monitoring conditional statements within a software program
JPH03188535A (ja) プログラム・エラー検出方法
JPH08314760A (ja) プログラム開発支援装置
US7464044B2 (en) Method and system for using emulation objects for developing point of sale
JP3119400B2 (ja) モジュール試験支援装置
US20080066005A1 (en) Systems and Methods of Interfacing with Enterprise Resource Planning Systems
US6782523B2 (en) Parallel configurable IP design methodology
US20230186019A1 (en) Ai-based language testing process for ci/cd
TWI220187B (en) Testing system of data processing program and method thereof
EP0261690B1 (en) Method for using descriptor file describing control structures file used by a dump program

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20010904