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