【手続補正書】
【提出日】平成20年2月15日(2008.2.15)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】  環境のシミュレーションされる処理を実行するためにコンピュータシステムで用いられるコンピュータプログラムプロダクトであって、
コンピュータで読取り可能な複数のサービスプログラムコード手段であって、前記複数のサービスプログラムコード手段は、シミュレーションされる処理の下で環境のオブジェクトのシミュレーションされる属性を集合的に決定するように構成され、前記複数のサービスプログラムコード手段の中の少なくとも幾つかは、コンピュータで読取り可能な属性アクセスプログラムコード手段を含む、コンピュータで読取り可能なサービスプログラムコード手段と、
コンピュータで読取り可能なデータポートプログラムコード手段であって、前記データポートプログラムコード手段は、前記サービスプログラムコード手段の実行中に動作可能なように構成され、選択されたサービスプログラムコード手段を外部環境に連結するよう前記選択されたサービスプログラムコード手段に関連づけられることによって、前記選択されたサービスプログラムコード手段と前記データポートプログラムコード手段とが、前記シミュレーションされる環境と前記外部環境との間における属性値の相互通信を集合的に遂行することができる、コンピュータで読取り可能なデータポートプログラムコード手段と、
を備えることを特徴とするコンピュータプログラムプロダクト。
【請求項２】  前記選択されたサービスプログラムコード手段の内の少なくとも幾つかは、実質的に予め選択された頻度で属性にアクセスし、前記サービスプログラムコード手段に関連づけられたデータポートに前記アクセスされる属性を提供する請求項１に記載のプログラムプロダクト。
【請求項３】  前記データポートプログラムコード手段の内の少なくとも幾つかは、前記コンピュータシステムに関連づけられたデータファイル内のデータにアクセスし、前記アクセスされたデータをシミュレーションされたオブジェクト属性として書込むサービスプログラムコード手段へ前記アクセスされたデータを通信するための手段を備えている請求項１に記載のプログラムプロダクト。
【請求項４】  前記データポートプログラムコード手段の内の少なくとも幾つかは、前記コンピュータシステムによって実行されるが前記シミュレーションの一部ではないプログラムで生成されたデータにアクセスし、前記アクセスされたデータをシミュレーションされたオブジェクト属性として書込むサービスプログラムコード手段へ前記アクセスされたデータを通信するための手段を備えている請求項１に記載のプログラムプロダクト。
【請求項５】  前記選択されたサービスプログラムコード手段をユーザからの入力に基づいて制御するためのコンピュータで読取り可能なプログラムコード手段を更に備える請求項１に記載のプログラムプロダクト。
【請求項６】  前記ユーザからの入力は、前記選択されたサービスプログラムコード手段を停止するための指令を含む請求項５に記載のプログラムプロダクト。
【請求項７】  前記ユーザからの入力は、前記選択されたサービスプログラムコード手段を開始するための指令を含む請求項５に記載のプログラムプロダクト。
【請求項８】  前記選択されたサービスプログラムコード手段の内の少なくとも幾つかは、実質的に予め選択された頻度で属性にアクセスし、前記アクセスされる属性を前記サービスプログラムコード手段に関連づけられたデータポートへ提供し、
前記ユーザからの入力は、前記選択されたサービスプログラムコード手段が属性にアクセスする処理をする際に予め選択された頻度を変更するための指令を含む請求項５に記載のプログラムプロダクト。
【請求項９】  前記選択されたサービスプログラムコード手段を含む各サービスプログラムコード手段は、他のサービスプログラムコード手段から独立した頻度で実行されるように構成され、
前記プログラムプロダクトは、各サービスプログラムコード手段が前記オブジェクトの前記属性を含むオブジェクトコンテクスト内の前記オブジェクト属性全部の首尾一貫した表示をもつように、前記サービスプログラムコード手段と前記オブジェクトコンテクストとの間の相互通信を調整するためのコンピュータで読取り可能なプログラムコード手段を更に備える請求項１に記載のプログラムプロダクト。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００５
【補正方法】変更
【補正の内容】
【０００５】
【発明が解決しようとする課題】
様々に異なるシミュレーションの局面は様々な評価頻度要求を発生するので、其々の局面で最適な頻度で実行されることが望ましい。不幸にも、従来のシミュレーションは、シミュレーション全体を共通の頻度で実行させた。共通の頻度は、シミュレーションのある局面にとっては必要な頻度より多いし、他の局面にとっては理想的な頻度より少ない。例えば、もしエンジンでの熱蓄積の計算は、複雑なので一秒につき一回か二回しか実行されないならば、この場合、エンジンの部品位置の計算も遥かに簡単な演算なのに、一秒につき一回か二回しか実行されない。更に、位置が一秒につき一回か二回しか更新されないので、エンジンの周囲における動作の描画も著しく阻害される。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００８
【補正方法】変更
【補正の内容】
【０００８】
【課題を解決するための手段】
本発明の第１の形態によれば、環境のシミュレーションされる処理を実行するためにコンピュータシステムで用いられるコンピュータプログラムプロダクトであって、コンピュータで読取り可能な複数のサービスプログラムコード手段であって、前記コンピュータで読取り可能な複数のサービスプログラムコード手段は、シミュレーションされる処理の下で環境のオブジェクトのシミュレーションされる属性を集合的に決定するように構成され、前記コンピュータで読取り可能な複数のサービスプログラムコード手段の中の少なくとも幾つかは、コンピュータで読取り可能な属性アクセスプログラムコード手段を含むコンピュータで読取り可能なサービスプログラムコード手段と、コンピュータで読取り可能なデータポートプログラムコード手段であって、前記コンピュータで読取り可能なデータポートプログラムコード手段は、サービスプログラムコード手段の実行中に動作可能なように構成され、選択されたサービスプログラムコード手段を外部環境に連結するよう前記選択されたサービスプログラムコード手段に関連づけられることによって、前記選択されたサービスプログラムコード手段と前記データポートプログラムコード手段とが、シミュレーションされる環境と外部環境との間における属性値の相互通信を集合的に遂行することができる、コンピュータで読取り可能なデータポートプログラムコード手段と、を備えることを特徴とするコンピュータプログラムプロダクトが提供される。
コンピュータプログラムプロダクトは、環境のシミュレーションされる処理を実行するためにコンピュータシステムで使用されるものである。本プログラムプロダクトはコンピュータで読取り可能な複数のサービスプログラムコード手段で構成される。サービスプログラムコード手段は、シミュレーションされる処理における環境のオブジェクトのシミュレーションされる属性（Ｓｉｍｕｌａｔｅｄ ａｔｔｒｉｂｕｔｅ）を集合的に決定するように構成される。コンピュータで読取り可能なサービスプログラムコード手段の内の少なくとも幾つかは、コンピュータで読取り可能な属性アクセスプログラムコード手段で構成される。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０００９
【補正方法】変更
【補正の内容】
【０００９】
コンピュータで読取り可能なデータポートプログラムコード手段は、サービスプログラムコード手段の実行中に処理可能なように構成される。データポートプログラムコード手段は、選択されたサービスプログラムコード手段に関連づけられ選択されたサービスプログラムコード手段を外部環境に連結する。選択されたサービスプログラムコード手段とデータポートプログラムコード手段とは、シミュレーションされる環境と外部環境との間での属性値の相互通信を集合的に遂行する。データポートプログラムコード手段を介して、外部環境は、シミュレーションの実行中にシミュレーションと対話する。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００１４
【補正方法】変更
【補正の内容】
【００１４】
本発明の実施例によれば、多数のサービスが非同期的に動作する。しかし、多数の非同期的に動作するサービス間のデータ通信は、間違いなく同期化される。これは、サービスの様々な非同期的な「フレーム頻度（速度）」に適応しながらも実現される。様々なサービスによって必要とされるオブジェクトデータの複数の「一覧（表示）」を支援するために、サービスによりアクセスが要求されたオブジェクト全部が「ノード」ベースのクラスから引出される。ノードはサービスと交流してデータ要素にフレーム間違いのない（フレームセーフ）アクセスを行う。各ノードは、オブジェクト（あるいはオブジェクトの一部分）毎に多数の「ノード画像」を維持する。各サービスは、様々な時点で異なったセットの変更をとらえる可能性がある。ただし、サービスは全部が究極的には同一の値に作用する。一つの実施例によれば、メモリへの影響を低減するために、「ノード」と呼ばれるオブジェクト内において、比較的に木目の細かい粒度でデータの複写が行われる。ノードは、一般的に、比較的小さな単位（オブジェクトの一部）であり、データのコピーは、それを必要とするノードのためだけに保持される。こうして、メモリの複写は低減される。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００２０
【補正方法】変更
【補正の内容】
【００２０】
次に（または、ステップ３０４の判断が「否」ならば）、ステップ３０８で、ノードがノード画像を保持している他のサービスに、「最新の画像」が変更されたことを通知する。ステップ３１０で、要求された書込み処理がそのサービスのためのノード画像に対して実行される（そのノード画像がサービスに対応する「古い」ノード画像であろうとサービスに対応する新たに作成されたノード画像あろうと実行される）。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００２１
【補正方法】変更
【補正の内容】
【００２１】
通知（ステップ３０８）と通知されたサービスが通知にどのように応答するかについて述べる。図２に戻ると、通知は、変更要求処理ステップ２０４において「零（ヌル）」変更要求としてサービスによって処理される。特に、このような通知を受信すると、通知されたサービスは、通知したサービスによって変更されたノードに対する変更要求を作成する。しかし、この変更要求は「零（ヌル）」である。ノードによって表されるオブジェクトに書込まれるデータを含んでいないからである。むしろ、その変更要求は、ノード画像を必要に応じて「最新の画像」に対応した通知されたサービスに関連付けさせようという要求である。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００２５
【補正方法】変更
【補正の内容】
【００２５】
図７において、サービスは其々異なるフレーム頻度（異なる時間周期を使って）で実行される。各サービスは別個のスレッドで実行されてもよい。図７は、ノード処理によってどのように同期の見掛けがサービスに提供されるかを示す「実時間」の時間線図である。まず最初にサービスＡを取り上げる。サービスＡには処理のためにノード属性が提供されている（矢印６０２ａで示す）のが分かる（略記では、属性の「読取り」となっているが、この場合の「読取り」はノードオブジェクトを介して行われる）。その後のある時点において（矢印６０４ａで示す）、サービスＡはオブジェクト属性の書込み処理を待ち行列に入れる。更に後に（矢印６０６ａで示す）、保護された「クリティカル」処理セクションの間に、サービスＡは、適宜のノードにオブジェクト属性を画像（現在のあるいは「最新の」画像）に書込ませる（書込むよう要求する）。これは、サービスＢとサービスＣについても同様であり、図７においてサービスＡの場合と同じ参照番号に下付き文字ＢとＣとを用いて示す。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】００２８
【補正方法】変更
【補正の内容】
【００２８】
属性を使用しなければ、オブジェクトのハードコード化されたメンバである変数に、ユーザは、一般的には、オブジェクトによって提供される直接的な方法（経路７０８）すなわちユーザ専用のインターフェイス用対話を介してのみアクセス可能である。一方、図９に示すように、属性スキーマ７０２は、属性名（一般的には文字列）をシミュレーションの内部の「ハードコード化された」変数へリンクする関連マップを提供する。
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】００２９
【補正方法】変更
【補正の内容】
【００２９】
属性はユーザによって追加されることもある（すなわち、シミュレーションの「ハードコード化された」変数へマップされるのではなく）。この場合、属性スキーマ７０２には、属性文脈８０４内の属性を指示すポインタ値８０２が設定される。ユーザによって付加された属性はハードコード化されたものではないので、そのようなユーザによって付加された属性にアクセスするために専用のユーザインターフェイス用対話は存在しない。ユーザによって付加された属性には、包括的な属性アクセス用ユーザインターフェイス（一般的にはサービス１０４の一つとして実行される）を介してのみアクセス可能である。ユーザによって付加された属性は、一般的には、プロジェクトで使用される資源を追跡するために使用される。例えば、あるプロジェクトでは、ＡＢＳブレーキシステムの設計にかかわる数百もの資源を含有する。ユーザは、部品名、重量、大きさ、価格、製造日時などを設定するために構成部品に属性を割当てることができる。その後、ユーザは、問合せを利用して当該プロジェクトを検索し、価格が４０ドル以下で重量が３ポンド以下の１９９５年以降に製造された構成部品全部を探し出すことができる。
【手続補正１１】
【補正対象書類名】明細書
【補正対象項目名】００３１
【補正方法】変更
【補正の内容】
【００３１】
「ノード」全部（すなわち、システム内の全ての公開オブジェクト）の基本クラスは、文字列を変数の名称として使用して属性にアクセスする包括的な方法（メソッド）を提供する。処理時、属性オブジェクトは、属性の文字列定義名を対応する値が実際に格納された位置へ動的にマップする。これは、属性が「ハードコード化」された変数に対応しているか属性がユーザによって付加されたものかに係わりなく行われる。これは、コード開発者がオブジェクトのメンバ変数にアクセスする方法（ソースコード内でメンバ変数名を指定することによる）と対比をなす。すなわち、属性オブジェクトの処理が、属性の文字列定義名をオブジェクト内の値の格納位置に整合するあるレベルの抽象化を提供する。
【手続補正１２】
【補正対象書類名】明細書
【補正対象項目名】００３７
【補正方法】変更
【補正の内容】
【００３７】
入力データプローブは、シミュレーションの外部からデータを読取り（例えば、既存のデータファイルからあるいは外部アプリケーションから）、それを選択された構成部品の属性に注入する。例えば、入力データプローブを使用することで、構成部品の行動が実世界と同等物の行動に整合するように「実世界」のテストからデータが注入される。別の例では、複雑な行動の数学的モデルからデータ値を注入するために入力データプローブが使用される。
【手続補正１３】
【補正対象書類名】明細書
【補正対象項目名】００３８
【補正方法】変更
【補正の内容】
【００３８】
ユーザは、ユーザインターフェイスを用いてデータプローブが動作する頻度を指定できる。加えて、ユーザは、ユーザインターフェイスを介してシミュレーションの実行中にデータプローブを停止もしくは起動ができる。一つの具体的な実施例では、データプローブ内の内部タイミングは、ミリ秒の近似値をとる程度にしか正確でないことを知るべきである。従って、頻度全部を正確にモデル化できるわけではない。プローブの動作頻度の表示は、実際のプローブ速度を反映するように頻度値が自動的に更新される。例えば、特定のデータプローブに対して頻度６０ヘルツが設定された場合、データプローブは実際には５８．８２３５ヘルツで実行される（６０ヘルツは１回当り１６．６６６７ミリ秒と換算され、１６．６６６７ミリ秒が１７ミリ秒に丸められた場合、５８．８２３５ヘルツと換算される）。また、この値がプローブの頻度として表示される。データプローブは表示された頻度を上回ることはなく、可能ならば、その頻度を維持する。しかし、シミュレーションを実行するコンピュータの負荷が大きすぎる場合、プローブは一つ以上のフレームに対しスローダウンする（データプローブの出力ファイルに付加された時刻表示（タイムスタンプ）は、サンプルが取られる真の時刻を反映している）。
【手続補正１４】
【補正対象書類名】明細書
【補正対象項目名】００３９
【補正方法】変更
【補正の内容】
【００３９】
データプローブは、「データポート」を介して外部環境と通信する。幾つかの実施例で提供されるデータポートは、ファイル型データポートとパイプ型データポートとバッファ型データポートとを包含する。概念的には、データポートは、外部環境とのインターフェイスを取扱う。ファイル型ポートは、データプローブとファイルとの間で値を通信する。パイプ型ポートは、データプローブと外部処理との間で値を通信する。バッファ型ポートは、データプローブとメモリバッファとの間でサンプルを通信する。ファイル型ポートは、取分け、第三者のツールを用いてシミュレーションの様々な局面を図表化することあるいは表計算ソフトで値を調べることに有用である。パイプ型ポートは、シミュレーションがアプリケーションによって制御されるのが望ましいとき、または、アプリケーションがシミュレーションを制御するのが望ましいときに有用である。バッファ型ポートは、シミュレーション環境に統合されたツールで図表化するためにデータを供給する場合に有用である。