(57)【特許請求の範囲】
【請求項１】
計算機システムであって、
通信経路を介して接続される、それぞれソフトウェア資産を有するユーザＡ、及びユーザＢの計算機環境を含み、
前記ユーザＢの計算機環境が、当該ユーザＢの計算機環境が所有する前記ソフトウェア資産の複製と、前記ユーザＡが要求するシミュレーションモデルを含む仮想計算機環境を、前記ユーザＡの計算機環境に送信することにより、協調シミュレーションを実現する、ことを特徴とする計算機システム。
【請求項２】
請求項１に記載の計算機システムであって、
前記シミュレーションモデルは、
前記ユーザＡの計算機環境上で実行される前記協調シミュレーションの実行状態と、前記ユーザＢのソフトウェア資産の複製の利用状況を元に認証キーを生成し、生成した前記認証キーを前記ユーザＢに送信する認証クエリ生成部を含み、
前記ユーザＢの計算機環境は、前記ユーザＡの前記認証クエリ生成部から送信された前記認証キーを、前記ユーザＡに対し許可した前記ソフトウェア資産の利用状況を元に照合する認証クエリ照合部を備える、
ことを特徴とする計算機システム。
【請求項３】
請求項２に記載の計算機システムであって、
前記ユーザＡの計算機環境は、
前記ユーザＡが、前記ユーザＢのソフトウェア資産を不正に利用していると判断された時に、前記仮想計算機環境を破壊し、前記協調シミュレーションを停止して前記ユーザＡの計算機環境上からの消去を行う、
ことを特徴とする計算機システム。
【請求項４】
請求項２に記載の計算機システムであって、
前記ユーザＡの前記認証クエリ生成部は、
前記認証キーを、前記ユーザＡの計算機環境上で実行される前記協調シミュレーションでは用いられていない、前記ユーザＢのソフトウェア資産の複製を利用して生成する、
ことを特徴とする計算機システム。
【請求項５】
請求項２に記載の計算機システムであって、
前記ユーザＢの計算機環境の前記認証クエリ照合部は、
前記ユーザＡの計算機環境上で実行される前記協調シミュレーションで用いられている、前記ユーザＢのソフトウェア資産の一部または全体を用いて照合を実行する、
ことを特徴とする計算機システム。
【請求項６】
ネットワークと、
前記ネットワークに接続される、ソフトウェア資産を有するユーザＡの計算機環境と、
前記ネットワークに接続される、ソフトウェア資産を有するユーザＢの計算機環境とを備え、
前記ユーザＢの計算機環境は、
当該ユーザＢの計算機環境が所有する前記ソフトウェア資産の複製と、前記ユーザＡが前記ユーザＢに要求するシミュレーションモデルとを含む仮想計算機環境を生成する仮想計算機生成部を備え、
前記ユーザＡの計算機環境は、
前記ユーザＢの計算機環境から受信した前記仮想計算機環境と、前記ユーザＡの前記ソフトウェア資産を用いて協調シミュレーションを実行する、
ことを特徴とする計算機システム。
【請求項７】
請求項６に記載の計算機システムであって、
前記ユーザＡの計算機環境は、
前記ユーザＡの計算機環境で実行される前記協調シミュレーションの実行状態と、前記ユーザＢのソフトウェア資産の複製の利用状況を元にして認証キーを生成する認証クエリ生成部を、前記シミュレーションモデルとして受信し、
前記ユーザＢの計算機環境は、
前記ユーザＡの計算機環境で動作する前記認証クエリ生成部から送信される前記認証キーを、前記ユーザＡに対し許可した前記ソフトウェア資産の利用状況を用いて照合する認証クエリ照合部を備える、
ことを特徴とする計算機システム。
【請求項８】
請求項７に記載の計算機システムであって、
前記ユーザＡの計算機環境は、
前記認証クエリ照合部で、前記ユーザＡが前記ユーザＢのソフトウェア資産を不正に利用していると判定した場合、前記仮想計算機環境を破壊する破壊コマンドを生成する仮想環境操作エージェントを備え、
前記仮想環境操作エージェントが前記破壊コマンドを生成した場合、前前記ユーザＡの計算機環境から前記協調シミュレーションを消去する、
ことを特徴とする計算機システム。
【請求項９】
請求項７に記載の計算機システムであって、
前記ユーザＡの計算機環境で動作する前記認証クエリ生成部は、
前記ユーザＡの計算機環境で実行される前記協調シミュレーションでは用いられていない、前記ユーザＢのソフトウェア資産の複製を利用して前記認証キーを生成する、
ことを特徴とする計算機システム。
【請求項１０】
請求項７に記載の計算機システムであって、
前記ユーザＢの計算機環境で動作する前記認証クエリ照合部は、
前記ユーザＡの計算機環境上で実行される前記協調シミュレーションで用いられている、前記ユーザＢのソフトウェア資産の一部または全体を用いて照合を行う、
ことを特徴とする計算機システム。
【請求項１１】
計算機環境で実行されるプログラムであって、
ユーザＡの計算機環境で、
ネットワークを介して、ユーザＢのソフトウェア資産の複製と、前記ユーザＡが前記ユーザＢに要求するシミュレーションモデルとを含む仮想計算機環境を受信し、
前記仮想計算機環境と、前記ユーザＡのソフトウェア資産とを用いて協調シミュレーションを実行し、
前記ユーザＡの計算機環境上で実行される前記協調シミュレーションの実行状態と、前記ユーザＢのソフトウェア資産の複製の利用状況とを用いて認証キーを生成する、
ことを特徴とするプログラム。
【請求項１２】
請求項１１に記載のプログラムであって、
前記ユーザＡの計算機環境で、
前記ユーザＢの計算機環境で、前記ユーザＡが前記ユーザＢのソフトウェア資産を不正に利用していると判定した場合に、前記仮想計算機環境を破壊する破壊コマンドを生成し、前記破壊コマンドに従い、前記ユーザＡの計算機環境から前記協調シミュレーションを消去する、
ことを特徴とするプログラム。
【請求項１３】
請求項１１に記載のプログラムであって、
前記ユーザＡの計算機環境で、
前記認証キーを、前記ユーザＡの計算機環境で実行される前記協調シミュレーションでは用いられていない、前記ユーザＢのソフトウェア資産の複製を利用して生成する、
ことを特徴とするプログラム。
【請求項１４】
請求項１１に記載のプログラムであって、
前記ユーザＢの計算機環境で、
前記ユーザＡの計算機環境から送信される前記認証キーを受信し、前記ユーザＡに対し許可した前記ソフトウェア資産の利用状況を用いて、
前記認証キーを照合する、ことを特徴とするプログラム。
【請求項１５】
請求項１４に記載のプログラムであって、
前記ユーザＢの計算機環境で、
前記ユーザＡの計算機環境上で実行される前記協調シミュレーションで用いられている、前記ユーザＢのソフトウェア資産の一部または全体を用いて照合を実行する、
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は計算機システム、特に複数のシミュレータが連携するシミュレーションを実行する開発環境で使用されるシステム技術に関わる。
【背景技術】
【０００２】
組込みシステムの開発においては、複数のシミュレータが連携する複雑なシミュレーションを実行する開発環境が必要となる。この組込みシステムとは、制御対象を構成するメカと、メカから受け取った物理量を元に制御演算を行い、メカに制御値の出力を行なうハードウェアと、ハードウェア上で動作するソフトウェアから構成されるシステムである。例えば自動車の組込みシステムでは、制御対象であるエンジンとエンジンを制御するマイコン等の電子機器とその上で動作するソフトウェアを指す。組込みシステムに含まれるソフトウェアの挙動は制御対象のメカとハードウェアの構成に強く依存するため、メカ、ハードウェア、ソフトウェアを併せた挙動の解析が必要である。【０００３】
近年、自動車、電気機器等の高信頼化、高機能化により組込みシステムが複雑化しており、作業期間短縮のためハードウェア、ソフトウェアの各部品を細分化して分業化が行なわれ、複数拠点での同時開発が行われている。分業化が進むにあたり、部品毎の動作確認だけではなく、部品の組み立て時に判明する性能不足、仕様の不具合が増加し、製品出荷前の最終段階での手戻りによる開発期間の遅延が多発しており、開発効率の悪化が問題となっている。このような複数拠点での同時開発に関する先行技術文献としては、例えば、本出願人が先に出願した特許文献１がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】ＷＯ２０１１／０１６３２７号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述した複数拠点での同時開発の問題を解決するため、設計時点でのメカ・ハードウェア・ソフトウェア協調のシミュレーションによる性能評価、検証手法が用いることが考えられる。従来、このような複数シミュレータを相互結合させた協調シミュレーションを行なうには、各個人の計算機上に実行環境を構築する必要があり、以下の５つの問題が存在する。１つ目は、複数拠点での同時開発のため、設計ファイルの共有、 進捗の管理が困難になる事である。２つ目は、異なるシミュレータを接続する必要があるため、個々のシミュレータ及びシミュレータ間の接続のパラメータ調整を人手で行なうコストが増大する事である。３つ目は、複数のシミュレータを使用するため、その導入及び保守のコストが高い事である。４つ目は、複数のシミュレータを動作させるため、計算能力が不足する事である。５つ目は、設計ファイルが個人ＰＣ上に格納されているため、情報漏えいのリスクが高まる事である。【０００６】
これらの課題に対する対処法の一つとして開発環境の一元化が考えられる。この開発環境の一元化を行うための方法として、本件発明者等が先に出願した特許出願が特許文献１である。特許文献１では、単一グループのユーザに対して、一元化された計算機環境上で実行される協調シミュレーションの提供を可能にする。一方で自動車を始めとした、組込みシステムの産業では一製品を構成するコンポーネントを複数の会社が担当し、システムの組立を担当する上位に位置する会社（以下ＯＥＭと称する）がそれらの部品を組み合わせるといった、階層的な構造をしている。【０００７】
これらの階層構造は複雑であり、ある一つの部品供給者（以下サプライヤと称する）が複数の納入先をもつ場合も存在する。このような階層的な部品構造は、その製品の協調シミュレーションにも適用される。しかし、製品を構成するコンポーネントと同様に、そのコンポーネントの動作を模擬するソフトウェア(以下、モデル）をＯＥＭに対し納入する事は、技術的機密の保護、動作環境の整備、更にはコストの観点で実現が難しい。【０００８】
上記の問題を解決する構成として、サプライヤとＯＥＭがそれぞれの会社内で一元化されたシミュレーション環境を持ち、協調シミュレーションを実行する必要が有る場合のみ相互に結合し、協調シミュレーションの実行に必要なデータのみを交換するという構造が考えられる。しかし、この構造においては、シミュレータ間のデータ交換がインターネットを通じて行われるため、シミュレーションのスループットがインターネットの通信遅延によって律速されてしまうという問題がある。【０００９】
本発明の目的は、上記の課題を解決し、製品のコンポーネントの動作を模擬するソフトウェアの内部構造、実行環境を利用者から秘匿するという課題と、ネットワーク遅延の解決の両立を可能とする計算機システム、及びプログラムを提供することにある。
【課題を解決するための手段】
【００１０】
本発明においては、上記の目的を達成するため、計算機システムであって、
通信経路を介して接続される、それぞれソフトウェア資産を有するユーザＡ、及びユーザＢの計算機環境を含み、ユーザＢの計算機環境が、ユーザＢの計算機環境が所有するソフトウェア資産の複製と、ユーザＡが要求するシミュレーションモデルとを含む仮想計算機環境を、ユーザＡの計算機環境に送信することにより、協調シミュレーションを実現する構成の計算機システムを提供する。【００１１】
また、本発明においては、上記の目的を達成するため、ネットワークと、ネットワークに接続される、ソフトウェア資産を有するユーザＡの計算機環境と、
ネットワークに接続される、ソフトウェア資産を有するユーザＢの計算機環境とを備え、ユーザＢの計算機環境は、当該ユーザＢの計算機環境が所有するソフトウェア資産の複製と、ユーザＡがユーザＢに要求するシミュレーションモデルとを含む仮想計算機環境を生成する仮想計算機生成部を備え、ユーザＡの計算機環境は、ユーザＢの計算機環境から受信した仮想計算機環境と、ユーザＡのソフトウェア資産を用いて協調シミュレーションを行う構成の計算機システムを提供する。【００１２】
更に、本発明においては、上記の目的を達成するため、計算機環境で実行されるプログラムであって、ユーザＡの計算機環境で、ネットワークを介して、ユーザＢのソフトウェア資産の複製と、ユーザＡがユーザＢに要求するシミュレーションモデルとを含む仮想計算機環境を受信し、仮想計算機環境と、ユーザＡのソフトウェア資産とを用いて協調シミュレーションを実行し、ユーザＡの計算機環境上で実行される協調シミュレーションの実行状態と、ユーザＢのソフトウェア資産の複製の利用状況とを用いて認証キーを生成するプログラム提供する。
【発明の効果】
【００１３】
本発明によれば、ソフトウェア資産の不正な利用・複製を防止し、シミュレーション速度の低下をきたすことのない協調シミュレーションを提供することが可能となる。
【図面の簡単な説明】
【００１４】
【図１】第１の実施例に係る計算機システムの全体構成の一例を示す図である。
【図２Ａ】協調シミュレーション環境のシミュレーションモデル構成の一例を示す図である。
【図２Ｂ】協調シミュレーション環境のシミュレーション実行に必要な要素の一例を示す図である。
【図３】複数の会社をまたいだ協調シミュレーションの構成例を説明する図である。
【図４】協調シミュレーション時のシミュレータ内部時間と、実時間の遷移状況の一例を示す図である。
【図５Ａ】第１の実施例に係る、ソフトウェア資産を集約して実行する会社をまたいだ協調シミュレーションの構成例を示す図である。
【図５Ｂ】第１の実施例に係る、ライセンスサーバ以外のソフトウェア資産を集約する会社をまたいだ協調シミュレーションの構成例を示す図である。
【図６Ａ】第１の実施例に係る、ソフトウェア資産の集約方法と、協調シミュレーションの実施手順及び、ソフトウェア資産利用権の認証フロー前半を示す図である。
【図６Ｂ】第１の実施例に係る、ソフトウェア資産の集約方法と、協調シミュレーションの実施手順及び、ソフトウェア資産利用権の認証フロー後半を示す図である。
【図７】第１の実施例に係る、仮想計算機環境の構成とその接続例を示す図である。
【図８】第１の実施例に係る、仮想計算機環境やキー認証プログラムを生成するフローの一例を示す図である。
【図９】第１の実施例の計算機システムで管理する、ソフトウェア資産の分類を示す図である。
【図１０】第１の実施例に係る、認証キーを生成／照合する４つのプログラムを生成するプロセスの一具体例を示す図である。
【図１１】第１の実施例に係る、認証キーを用いた、ＯＥＭ側とサプライヤ側間のトランザクションの一例を示す図である。
【図１２】第１の実施例に係る、計算機システムに用いる計算機ハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【００１５】
本発明を実施するための形態を図面に従い順次説明するが、それに先立ち本発明の前提となる協調シミュレーション環境下の計算機システムの構成を、協調シミュレーション環境のモデル構成の一例を示す図２Ａ、協調シミュレーション環境のシミュレーション実行に必要な要素の一例を示す図２Ｂ、協調シミュレーション時のシミュレータ内部時間と、会社をまたいだ協調シミュレーションの構成例を模式的に示す図３を用いて説明する。
【００１６】
図２Ａは、協調シミュレーション環境における、ＥＣＵ（Engine Control Unit）モデル０２０３、０２０５、エンジンモデル０２０４、ブレーキモデル０２０６など複数のモデルからなる構成例を示す図である。ここでモデルとは、自動車等の製品のコンポーネントの動作を模擬するソフトウェアを意味する。例えば、メカ・ハードウェア・ソフトウェア協調のシミュレーションでは、シミュレーション対象となるエンジンやブレーキ等のメカやハードウェアの構成によって利用できるシミュレータが異なる事と、すでに特定のシミュレータ用に作成されたシミュレーションモデルの蓄積がある事から、異種シミュレータの相互接続による製品全体レベルの協調シミュレーションが図２Ａに示すような構成で行なわれる。
【００１７】
このような協調シミュレーションにおいて、外部環境モデル２０１、通信モデル０２０２を含んだ複数シミュレータを相互結合させた協調シミュレーションを実現するには、各個人の計算機上に実行環境を構築する必要があり、上述した５つの問題が存在し、それらの課題に対する対処法の一つが、開発環境の一元化である。組込みシステムの産業では一製品を構成するコンポーネントを複数の会社が担当し、ＯＥＭがそれらの部品を組み合わせるといった階層的な構造をしているので、階層的な部品構造は、その製品の協調シミュレーションにも適用される。しかし、製品を構成するコンポーネントと同様に、そのコンポーネントの動作を模擬するソフトウェアであるモデルをＯＥＭに対し納入する事は、技術的機密の保護、動作環境の整備の観点で実現が難しいことは上述の通りである。
【００１８】
その理由として、モデルには模擬対象とするコンポーネントの動作を再現させるために、そのコンポーネントの内部構造が実装されていることが多く、納入されたモデルを閲覧することで、サプライヤが秘匿したい情報であってもＯＥＭが知り得る状況となってしまう。また、モデルはそれぞれ特定のシミュレータ上でのみ動作するように実装される場合が多く、ＯＥＭがそのモデルを実行するためにはサプライヤと同等のモデル実行環境を必要とする。
【００１９】
図２Ｂに、シミュレーション実行に必要な要素の一例を示す。サプライヤａ、ｂ、ｃが供給するモデルＡ、Ｂ、Ｃがそれぞれ連携して動く協調シミュレーションにおいて、モデルＡとＣがシミュレータＸ０２０７、モデルＢがシミュレータＹ０２０８上で実行されるとき、サプライヤａ、ｃはシミュレータＸのライセンスを、サプライヤｂはシミュレータＹのライセンスを所持している必要がある。また、ＯＥＭが協調シミュレーションを実行しようとするときは、ライセンスサーバ０２０９は、シミュレータＸとＹ両方のライセンスを所持している必要がある。これは多種のモデルを組み合わせる必要があるＯＥＭにとって、協調シミュレーションのための環境構築コストが大きくなることを意味している。
【００２０】
上記の問題を解決する構成として、サプライヤとＯＥＭがそれぞれの会社内で一元化されたシミュレーション環境を持ち、協調シミュレーションを実行する必要が有る場合のみ相互に結合し、協調シミュレーションの実行に必要なデータのみを交換するという構造が考えられる。
図３に、この構造を構築した際のシミュレータと、実行する計算機と、そのネットワークの構成の一例を示す。この構造では、Ａ社、Ｂ社、Ｃ社それぞれの計算機環境０１００、０１０１、０１０２中のシミュレータＸ、Ｙ、Ｗ、Ｚ、Ｐ、Ｑ間のデータ交換がインターネット等のネットワークである通信経路０１０７を通じて行われる。これによってシミュレーションのスループットがインターネット等の通信経路０１０７の通信遅延によって律速されてしまうという問題が発生する。
【００２１】
シミュレータ間の通信はそのシミュレータの動作精度にも依存するが、組込みシステムの動作検証ではだいたいシミュレータの実行時間数ミリ秒毎に１キロバイト程度のデータ交換を行うケースが多い。２つ以上のシミュレータ間で協調するためには、図４で示すように予め定められた期間（同期周期）の分、シミュレーションを行い、その時点での結果を共有することによって進む。したがってこのシミュレータ間のデータ交換はバッファリングしてまとめて送受信することが不可能であり、データの交換期間０４０１中は次の同期周期分のシミュレーションを続行することは不可能である。
【００２２】
このシミュレータ間同期通信によるデータ交換の期間０４０１は、図４中の同期周期ｔ０の区間に対応するが、その長さはシミュレータ間のネットワーク遅延に比例する。ネットワーク遅延は、おおよそ接続された２点間の地理的な距離に比例する。地理的に離れた場所の場合そのネットワークは専用線を利用しない限り、インターネットを経由し、その遅延はどれだけ小さくとも数百ミリ秒単位となる。こうなると、数ミリ秒のシミュレーションの実行時間は、シミュレータの実行時間に加え 数百ミリ秒の通信遅延が加算されるため、シミュレーション速度は低下し、いかに高速なシミュレータ環境を用いても限られたテストケースだけ実行可能な状態となってしまう。
【００２３】
以上説明したように、ネットワークの通信遅延を解決するためには、その接続構造を変え、協調シミュレーションを行う計算機同士をネットワーク的に近い位置に配置する必要がある。
【００２４】
そこで、図５Ａに示したように、サプライヤ側計算機環境がＯＥＭから要求された協調シミュレーションに必要な計算機環境をＢ社、Ｃ社仮想計算機環境０１１０、０１０９として仮想計算機上に構築し、ＯＥＭ側のＡ社計算機環境０１００へと送付する計算機システムと、ＯＥＭ側で受信した仮想計算機を実行して、協調シミュレーションを実行する計算機システムを組合せることで、サプライヤ側の一元化された計算機環境をＯＥＭ側に送付しつつも、仮想的にサプライヤとＯＥＭ間での計算機環境の論理的な分断を保つ手法が考えられる。
【００２５】
これにより図５Ａで示す構造では、通信遅延の大きいインターネット経由で行なっていたシミュレータ間の同期通信を、物理的距離が近く、通信遅延の小さなＯＥＭ側の内部ネットワーク０１１５に留めることが可能であるため、非常に高速なシミュレーションを実行することが可能になる。この手法を適用した場合、サプライヤとＯＥＭ間でやり取りされる仮想計算機には、要求されたモデルと、モデルの実行に必要なソフトウェア群、さらに前記ソフトウェアの実行に必要なＢ社ライセンスサーバ０１１７、Ｃ社ライセンスサーバ０１１６などのライセンス提供ソフトウェア等のソフトウェア資産が含まれている。これらをＯＥＭ側計算機環境上で不正に利用される可能性があるため、サプライヤが許可した間に限りこれらのソフトウェア資産が動作するように仮想計算機が設定されている必要がある。
【００２６】
これを防ぐための手法として、図５Ｂで示すようにサプライヤが持つソフトウェア資産のうち、ソフトウェアのライセンスを提供するライセンスサーバ０１１６、０１１７をサプライヤのローカル環境に置く方法が考えられる。しかし、この構成の場合シミュレータからライセンスサーバへの要求がおよそ数秒周期で実行されてしまうことから、これも通信遅延の影響を受ける可能性がある点、ソフトウェア資産を外部からのアクセスに応じて公開する上に、その利用用途に関して検査する手段を備えていないため、これも目的外の利用をＯＥＭ側に許してしまうライセンス上の問題が生じる点が懸念される。また副次的に発生する課題として、ＯＥＭ側に仕様を許可しているソフトウェア資産はサプライヤ側にも残っているため、サプライヤ側が自由に利用可能である点が考えられる。
【００２７】
図９は以上検討してきた計算機システムで管理する、ソフトウェア資産の分類を示す図である。
まず、ある計算機システムには１つ以上のソフトウェア資産９００が含まれている。ユーザが協調シミュレーションを実行しようとした時、計算機システムはそのソフトウェア資産を一つ以上一時的に専有して計算を行う。この時、ユーザが協調シミュレーションに使用するソフトウェア資産９０２と、使用されないソフトウェア資産９０１にソフトウェア資産９００は分割される。
【００２８】
本システムを用いて、サプライヤ側のソフトウェア資産の一部ないし全体の複製を協調シミュレーションの相手、すなわちＯＥＭ側に一時的に使用許諾する場合を想定すると、協調シミュレーションに使用するソフトウェア資産９０２は、サプライヤ側では協調シミュレーションと同時の使用が禁止されるべきソフトウェア資産９０４であり、協調シミュレーションに使用されないソフトウェア資産９０１は、ＯＥＭ側では協調シミュレーションと同時の使用が禁止されるべきソフトウェア資産９０３となる。
【００２９】
第三者から提供されるソフトウェア資産の利用権限を管理する機構の改造は不可能であるため、その機構の外部から適切に対象ソフトウェア資産を該当協調シミュレーション実行時のみ無効化する必要がある。したがって、ソフトウェア資産９０４は、サプライヤ側で実行される、以下の実施例で詳述するサプライヤ側の認証クエリ照合部が消費するべきソフトウェア資産９０６と同じ意味で、ソフトウェア資産９０３は、以下の実施例で詳述するＯＥＭ側で実行される認証クエリ生成部によって消費されるべきソフトウェア資産９０５と同じ意味となる。以上が、以下に説明する本発明の実施例の計算機システムとなる協調シミュレーション環境を実現する計算機システムである。
【００３０】
本発明の好適な態様にあっては、サプライヤ側であるユーザＢの計算機環境は、ユーザＡであるＯＥＭ側から要求された協調シミュレーションに必要となるソフトウェア資産を仮想計算機環境にまとめて構築し、その仮想計算機環境ファイルをユーザＡの計算機環境に送付し、ユーザＡの計算機環境は、その仮想計算機環境を受け取って実行する。
【００３１】
また、ソフトウェア資産の複製によって生じる、ユーザＢ、ユーザＡの計算機環境で同時に利用してはいけないソフトウェア資産の組合せ情報と、ユーザＡの計算機環境で実行されるソフトウェアの動作情報を元に認証キーを生成し、生成された認証キーをユーザＢとユーザＡの計算機環境でやり取りすることにより、ソフトウェア資産利用の妥当性を認証し、認証に成功した場合のみ、仮想計算機の実行を継続し、失敗した際に仮想計算機の構成ファイルを、ユーザＡの計算機環境から消去する。
【００３２】
更に、ユーザＢの計算機環境で、協調シミュレーションと同時の使用が禁止されるべきソフトウェア資産と、ユーザＡの計算機環境で、協調シミュレーションと同時の使用が禁止されるべきソフトウェア資産を用いてキー認証させることで、許可された間だけのソフトウェア資産の使用許諾と、ユーザＡの計算機環境とユーザＢの計算機環境で重複するソフトウェア資産の無効化を実現する。
【００３３】
以下、本発明の実施例を図面に従い説明する。以下の説明において、各計算機環境中の処理部で実行されるソフトウェアを、プログラム、部、或いは機能と呼ぶ。例えば、認証クエリ生成プログラム、認証クエリ生成部、認証クエリ生成機能等である。また、以下の説明においては、連携シミュレーションを実現する計算機システムは、複数の事業者、例えばＡ社、Ｂ社、Ｃ社等の計算機環境をインターネット等のネットワークを介して接続することにより実現されるが、便宜上、Ａ社の計算機環境をユーザＡの計算機環境と、その他のＢ社、Ｃ社等の計算機環境を、ユーザＢの計算機環境と呼ぶ場合がある。
【実施例１】
【００３４】
図1に第１の実施例の計算機システムの全体構成の一例を示した。
第１の実施例に係る計算機システムは、インターネットまたは専用線等の通信経路によって接続されている、複数の事業社または、複数の遠隔拠点間で各自の持つソフトウェア資産を利用した協調シミュレーションを実現するための計算機システムである。本実施例は、計算機システムであって、通信経路を介して接続される、それぞれソフトウェア資産を有するユーザＡ、及びユーザＢの計算機環境を含み、ユーザＢの計算機環境が、当該ユーザＢの計算機環境が所有するソフトウェア資産の複製と、ユーザＡが要求するシミュレーションモデルとを含む仮想計算機環境を、ユーザＡの計算機環境に送信することにより協調シミュレーションを実現する構成の計算機システムの実施例である。【００３５】
同図においては、Ａ社がＢ社、Ｃ社のソフトウェア資産を用いて３社の間で協調シミュレーションをする場合の構成例を示している。同図において、０１００、０１０１、０１０２は、Ａ社、Ｂ社、Ｃ社それぞれの計算機環境を、０１０７は通信経路を示している。本システム構成において、Ｂ社、Ｃ社は、Ａ社に対してソフトウェア資産を提供する側に当たるため、サプライヤと称し、Ａ社は自身とＢ社、Ｃ社のソフトウェア資産をまとめ、協調シミュレーションを実行するため、ＯＥＭと呼称する。Ｂ社とＣ社はＡ社に提供するソフトウェア資産の種類は違うものの、利用する本システムのコンポーネントは同一の物を使う。また、シミュレーションの内容、またはその主体が変わることによってＯＥＭ側となるか、サプライヤ側となるかが入れ替わるため、Ａ社と同じシステム構成をＢ、Ｃ社が持つことも可能であり、またその逆も可能である。以下の説明においては、Ａ社を協調シミュレーションの実行主体であるマスターユーザ、Ｂ社、Ｃ社を協調シミュレーションにおいて従属的立場にあるスレーブユーザとして位置付けて説明する。【００３６】
なお、このような計算機システムを構成するＡ社、Ｂ社、Ｃ社それぞれの計算機環境は、通常の計算機で実現できることは言うまでもない。上述の通り、Ａ社の計算機環境はユーザＡの計算機環境、Ｂ社、或いはＣ社の計算機環境は、ユーザＢの計算機環境となる。【００３７】
図１２に、そのような計算機環境を実現するコンピュータ構成の一例を示した。同図に示すように、コンピュータ１２００内の処理部であるプロセッサ１２０１、コントローラ１２０２、データやプログラムを記憶する記憶部であるメモリ１２０３、アクセラレータ１２０４等が内部バスによってネットワークインタフェース１２０５に接続され、ネットワークインタフェース１２０５から、インターネットなどの通信経路０１０７に接続される。また、後で説明する各種のデータベース（ＤＢ）等を蓄積するための外部記憶装置や、ディスプレイやキーボート等の入出力部を、必要に応じて付加可能であることは、通常のコンピュータと同様である。本明細書にあっては、特に断らない限り、コンピュータ１２００のプロセッサ１２０１は、種々のプログラムを処理することにより、以下で説明するような計算機環境、仮想計算機環境等を実現する。【００３８】
本実施例の計算機システムは、先に説明したように、サプライヤ側が協調シミュレーションに必要なソフトウェア資産を仮想計算機環境上にまとめ、ＯＥＭ側に送付し、ＯＥＭ側計算機環境０１０１、０１０２内部で協調シミュレーションを行う。このため、ＯＥＭ側の計算機環境０１００では、自身のソフトウェア資産とサプライヤの仮想計算機環境０１０９、０１１０が内部ネットワーク０１１５を通じて接続されている。各サプライヤの仮想計算機環境０１０９、０１１０は、ＯＥＭ側の計算機環境０１００中の仮想環境操作エージェント０１０８によって、通信回線０１０７を用いてサプライヤ側の計算機環境０１０１、０１０２と接続されている。【００３９】
図１に明らかなように、サプライヤの仮想計算機環境０１０９、０１１０の内部は、ＯＥＭ側ソフトウェア資産０１０３と内部ネットワーク０１１５を通じ接続されているソフトウェア資産複製０１１１、０１１２と、サプライヤ側のソフトウェア資産を用いた協調シミュレーションを制御する、言い換えるなら協調シミュレーションの一部を起動するシミュレーション実行エージェント０１１４と、サプライヤ側とソフトウェア資産利用権限の認証を行う認証クエリ生成部０１１３によって構成されている。【００４０】
一方、サプライヤ側の計算機環境０１０１、０１０２は、ＯＥＭ側計算機環境０１００に送付する仮想計算機環境を生成する仮想計算機生成部０１０４とＯＥＭ側からのソフトウェア資産利用権限の認証を行う認証クエリ照合部０１０５と、ＯＥＭ側に送付する仮想計算機環境０１１０、０１０９に複製されるソフトウェア資産の原本となるソフトウェア資産０１０３ｂ、０１０３ｃによって構築される。【００４１】
続いて、図６Ａ、６Ｂを用いて、本実施例の計算機システムが管理する協調シミュレーションとキー認証の流れを説明する。
図６Ａ、６Ｂにおいて、０６００から０６０８、０６１２から０６１３、０６１５から０６１６、０６１９から０６２０にステップはサプライヤ側計算機環境０１０１、０１０２で、その他の０６０１、０６０９から０６１１、０６１４、０６１７から０６１８のステップはＯＥＭ側計算機環境０１００で実行される。なお、図６Ａ、６Ｂは、図示の都合上、前段と後段に分離して図示したものであり、丸Ａ、Ｂ、Ｃそれぞれにおいて連結する。【００４２】
まず、ステップ０６００に対応する初期状態では、サプライヤ側計算機環境０１０１、０１０２はＯＥＭ側計算環境０１００からの協調シミュレーション実行要求を待ち受ける。なお、本実施例においては、ＯＥＭとサプライヤ間で予め協調シミュレーションを行うモデルの組合せは確定しているものとし、ある協調シミュレーションで用いるモデルの組合せに対して一意に決まる識別子が事前に与えられているものとする。【００４３】
次に、ステップ０６１０で、ＯＥＭ側から協調シミュレーション実行要求が、１または複数のサプライヤに対して発行され、それが各サプライヤ側計算機環境０１０１、０１０２で受け取られると、サプライヤ側計算機環境０１０１、０１０２はステップ０６０２に進む。サプライヤ側計算機環境は受け取った協調シミュレーション実行要求の内容を解析し、そこに記載される前述の協調シミュレーションで用いるモデルの組合せと対応する識別子を取得する。そして、その識別子を元に協調シミュレーションで用いるモデルの組合せを取得する。その情報を元に以下のステップ６０３、６０４、６０５を処理する。【００４４】
ステップ６０３では、協調シミュレーションで用いるソフトウェア資産を全て利用したシミュレーションモデルとして、サプライヤ側計算機環境０１０１、０１０２で動作する認証クエリ照合部０１０５を生成する。次にステップ６０４では、ＯＥＭ側が要求するシミュレーションモデルとして、協調シミュレーションで用いないソフトウェア資産、すなわち、ＯＥＭ側計算機環境０１００に導入されたソフトウェア資産と、協調シミュレーションで用いるソフトウェア資産の集合の差分を全て用いるシミュレーションモデルとして、ＯＥＭ側で動作する認証クエリ生成部０１１３を生成する。【００４５】
ＯＥＭ側計算機環境で動作する認証クエリ生成部は、認証キーを、ユーザＡの計算機環境で実行される協調シミュレーションでは用いられていない、ユーザＢのソフトウェア資産の複製を利用して生成する。一方、サプライヤ側計算機環境で動作する認証クエリ照合部は、ＯＥＭ側計算機環境上で実行される協調シミュレーションで用いられている、サプライヤのソフトウェア資産の一部または全体を用いて照合を行う。【００４６】
ステップ０６０５では、協調シミュレーションで用いるモデルを全て動作させることができる、ソフトウェア資産を全て導入している仮想計算機環境を生成する。あるいは既に作成されたものがキャッシュされている場合、その仮想計算機環境を用いる。次のステップ６０６で、先のステップ０６０５で生成した仮想計算機環境に対して、ステップ６０４で生成した認証クエリ生成部０１１３を導入した仮想計算機環境を、ＯＥＭ側計算機環境０１００の仮想計算機環境操作エージェント０１０８に対して送信する。以上の５ステップの具体的実装例は、後で図１０を用いて詳説する。【００４７】
図６Ａ、６Ｂにおいて、以降のステップはＯＥＭ側での協調シミュレーションの実行と、それと並列して実行される。ステップ０６０７から０６１８に対し、具体的な認証キーの実装を用いたフローについて、後に図１１を用いて詳説する。ステップ０６０７において、サプライヤ側計算機環境０１０１、０１０２は、ステップ０６０３で生成した認証クエリ照合部０１０５を用いてシミュレーションを開始する。そして、ＯＥＭ側計算機環境０１００からの問い合わせクエリの受信を待ち受ける（ステップ０６０８）。【００４８】
同時にＯＥＭ側計算機環境０１００では、ステップ０６０６でサプライヤ側計算機環境０１０１から送信された、協調シミュレーションを実行するための仮想計算機環境の受信が終了すると、仮想環境操作エージェント０１０８は受信した仮想計算機環境０１０９、０１１０を実行開始する。仮想計算機環境の開始をトリガとして、シミュレーション実行エージェント０１１４が起動し協調シミュレーションのサプライヤ側のモデル分が開始され、協調シミュレーションのうちＯＥＭ側のモデルは既にステップ０６０１の段階で起動されて、サプライヤ側のモデルの応答を待機しているため、自動的に協調シミュレーションが開始され、データの記録が始まる（ステップ０６０９）。【００４９】
協調シミュレーションの開始と同時に、仮想環境操作エージェント０１０８は認証クエリ生成部０１１３を起動する。認証クエリ生成部０１１３はその生成時に定められた、一定のシミュレーション時間毎にシミュレーションの実行時間や仮想計算機環境の識別子等を元に、ある長さのビット列を生成し、それを問い合わせクエリとしてサプライヤ側計算機環境０１０１、０１０２の認証クエリ照合部０１０５へ送信する（ステップ０６１０）。【００５０】
送信が終了すると、認証クエリ生成部０１０５はＯＥＭ側計算機環境０１００から認証クエリが送信されてくるのを待ち受け、その間ＯＥＭ側計算機環境０１００での協調シミュレーションは続行される（ステップ０６１１）。【００５１】
ステップ０６０８から問い合わせクエリの待受状態にあったサプライヤ側の認証クエリ照合部０１０５は、問い合わせクエリを受信すると、そこに含まれるシミュレーション実行時間等を元にある長さのビット列を生成し、それを認証クエリとしてＯＥＭ側計算機環境０１００の認証クエリ生成部０１１３に送信する（ステップ０６１２）。送信後、サプライヤ側の認証クエリ照合部０１１３は、ＯＥＭ側計算機環境０１００から送信される応答クエリを待受ける（ステップ０６１３）。【００５２】
認証クエリを受け取ったＯＥＭ側計算機環境０１００の認証クエリ生成部０１１３は、この認証クエリに含まれる情報をもとに、認証クエリ生成部０１１３を構成するシミュレーションモデルから内部状態を抜き出し、応答クエリとしてサプライヤ側計算機環境の認証クエリ照合部０１０５まで送信する（ステップ０６１４）。【００５３】
サプライヤ側計算機環境０１０１、０１０２で、認証クエリ照合部０１０５が応答クエリを受信すると、認証クエリ照合部０１０５はクエリに含まれるシミュレーションモデルの内部状態と、認証クエリ照合部０１０５に含まれるシミュレーションモデルの内部状態を比較し、期待された値であるかどうか判定する。判定結果はＯＥＭ側計算環境０１００の仮想環境操作エージェント０１０８へと送信する（ステップ０６１５及びステップ０６１６）。【００５４】
ＯＥＭ側計算環境０１００の仮想環境操作エージェント０１０８が受け取った判定結果が合格である場合、協調シミュレーションが続行され、ステップ０６１０に戻り、再度、問い合わせクエリ生成から認証フローが繰り返される。不合格であった場合、ライセンスの不正利用があったと判断し、仮想環境操作エージェント０１０８は協調シミュレーションを行なっている仮想計算機環境０１０９、０１１０を破棄し、協調シミュレーションを強制停止させる。【００５５】
もしも協調シミュレーションがすでに終了していた場合は、ステップ０６１０で生成される問い合わせクエリが不変値となるため、認証フローが不合格と判定され、仮想計算機環境を破棄されるため、一度目の協調シミュレーションが終了した時点で、その結果にかかわらずサプライヤ側から送信した仮想計算機環境０１０９、０１１０はＯＥＭ側計算機環境０１００から消去される。仮想計算機環境の破棄手法は、仮想計算機環境の構築に使う、仮想ＯＳ（Operating System）マネージャの機能を使う手法のほか、仮想計算機環境内部でファイルシステムを破壊するなどの方法が考えられるが、本システムはいずれの手法も利用可能である。【００５６】
またサプライヤ側でステップ６１６のあと、認証フローの結果が合格と判定された場合は、協調シミュレーションが続行し、キー認証フローも継続させる必要があるため、ステップ０６０８に戻り、再度問い合わせクエリの待受をする。結果が不合格であった場合、サプライヤ側計算機環境で実行中の認証クエリ照合部０１０５に含まれるシミュレーションを停止させる（ステップ０６１９）。その後、本協調シミュレーションのために生成された、認証クエリ照合部０１０５を破棄し、ステップ６００に戻りＯＥＭ側の協調シミュレーション要求の待ち受け状態に戻る。【００５７】
図７は、図１に示した本実施例の計算機システムにおける、ＯＥＭ側計算機環境０１００に送付された仮想計算機環境０１０９、０１１０の内部構造の一例の詳細と、それらの接続関係を示す図である。
ＯＥＭ側計算機環境０１００にはまず、仮想環境操作エージェント０１０８が１またはこのＯＥＭと協調シミュレーションを実行するサプライヤの数だけ導入されている。仮想環境操作エージェント０１０８は以下の４コンポーネントによって構築されている。【００５８】
すなわち、サプライヤ側から送信される仮想計算機環境を受信する仮想計算機受信部０７１２と、仮想計算機受信部が受信完了した後に、その仮想計算機環境を起動する仮想計算起動コマンド０７１３と、サプライヤ側計算機環境とキー認証を行う際にそのキーのやり取りを行う、キー送受信部０７１５と、キー送受信部０７１５からの要求を受け、仮想計算機環境内部で実行されているシミュレーションを停止させ、仮想計算機環境を破棄する仮想計算機破棄コマンド０７１４の４コンポーネントである。【００５９】
仮想計算機起動コマンド０７１３と、仮想計算機破棄コマンド０７１４は、仮想マシンの起動と停止及び仮想計算機を構成するファイルの破棄を行うため、この仮想計算機環境に動作を管理する仮想計算機コントローラ０７０６と接続されている。なお、この仮想計算機コントローラ７０６は既存の仮想計算機ソフトウェアの機能をそのまま利用することが可能である。【００６０】
仮想計算機環境０１１０内部にはシミュレーション実行エージェント０１１４と、認証クエリ生成部０１１３と、サプライヤ側のソフトウェア資産の全体または部分集合の複製０１１１と、サプライヤ側の協調シミュレーション０７００が存在する。
この協調シミュレーション０７００はシミュレータ間インターフェイス０７０４を用いてＯＥＭや他サプライヤ仮想計算機上の協調シミュレーション０７０１と接続されている。【００６１】
認証クエリ生成部０１１３は、問い合わせクエリ生成プログラム０７０２とクエリ照合プログラム０７０３によって構成されている。問い合わせクエリ生成プログラム０７０２は、シミュレーション実行エージェント０１１４のシミュレーション実行時間取得コマンド０７１０の出力を受取り、問い合わせクエリを生成し、シミュレーション実行エージェント０１１４のキー送受信部０７１１へと送る。また、クエリ照合プログラム０７０３はキー送受信部０７１１から送られる認証クエリを受取り、クエリ照合プログラム０７０３内部の状態を用いて応答クエリを生成して、キー送受信部０７１１へと送信する。【００６２】
なお、サプライヤ側の協調シミュレーション０７００、及び認証クエリ生成部０１１３を構成する、問い合わせクエリ生成プログラム０７０２とクエリ照合プログラム０７０３のいずれも、サプライヤ側ソフトウェア資産の全体または部分集合の複製を用いて動作するシミュレータプログラムである。特に、認証クエリ生成部０１１３では、ＯＥＭ側の計算機環境０１００で実行される協調シミュレーションでは用いられていないサプライヤ側ソフトウェア資産の複製を利用することにより、ＯＥＭ側のユーザがサプライヤ側ソフトウェア資産を不正使用することを禁止可能とできる。【００６３】
シミュレーション実行エージェント０１１４は、サプライヤ側協調シミュレーション０７００と認証クエリ生成部０１１３の動作をコントロールするコンポーネントであり、以下の３つのコンポーネントによって構成される。【００６４】
シミュレーション起動用コマンド０７０８は仮想環境操作エージェント０１０８の仮想計算機起動コマンド０７１３と連動し、この仮想計算機環境の起動をトリガとして実行が開始される。すなわち仮想計算機環境が実行されると自動で協調シミュレーションが実行開始される構造となっている。【００６５】
シミュレーション停止コマンド０７０９は、仮想環境操作エージェント０１０８の仮想計算機破棄コマンド０７１４と連動しており、この仮想計算機環境０１１０が破壊される前に協調シミュレーション０７００を安全に停止するために実装されている。【００６６】
シミュレーション実行時間取得コマンド０７１０は、問い合わせクエリ生成プログラム０７０２で利用されるシミュレーション実行時間を出力するプログラムであって、サプライヤ側協調シミュレーション０７００を実行しているシミュレータのいずれか、または全体、またはそれらを管理しているシミュレータ間インターフェイスで管理されている協調シミュレーションの実行時間を取得することが可能である。
以上がシミュレーション実行エージェント０１１４を構成するコンポーネントの機能である。【００６７】
続いて、図８を用いて、図１のサプライヤ側計算機環境０１０１、０１０２の具体的構成例を説明する。
図８はサプライヤ側計算機環境０１０１、０１０２の認証クエリ照合部０１０５と仮想計算機生成部０１０４の詳細な構成の一例と、それらのＯＥＭ側計算機環境０１００との接続を示す。【００６８】
図８に明らかなように、これらは協調シミュレーション要求受信部０８０２と、仮想計算機生成部０１０４と、認証クエリ照合部０１０５と、サプライヤ側のソフトウェア資産０８０５と、仮想計算機テンプレート用データベース（ＤＢ）０８０４、仮想計算機テンプレート導入ソフトＤＢ０８０３によって構成されている。なお、サプライヤ側ソフトウェア資産０８０５は、先のソフトウェア資産１０３ｂ、１０３ｃに対応する。【００６９】
協調シミュレーション要求受信部０８０２はＯＥＭ側の仮想環境操作エージェント０１０８の協調シミュレーション実行指示送信部０８００から送信された協調シミュレーション実行要求を受取り、そのクエリ中に記載された実行したい協調シミュレーションの識別子を抽出し、仮想計算機生成部０１０４に出力する。【００７０】
仮想計算機生成部０１０４はＯＥＭ側計算機環境０１００の望む協調シミュレーションを実現可能な仮想計算機環境を生成し、さらにソフトウェアの利用権限を認証するプログラムを生成する機能を持ち、２つのＤＢを含めた１０コンポーネントで構成される。
まず、ソフトウェア資産利用ハッシュ生成部０８１６は、協調シミュレーション要求受信部０８０２が出力する、ＯＥＭが望む協調シミュレーション構成の識別子を受取り、ソフトウェア資産利用ハッシュ値と呼ばれる、ある長さのビット列を生成する。【００７１】
一方、仮想計算機選択部０８１７は、ＯＥＭが望む協調シミュレーション構成の識別子を元に、協調シミュレーションの実行に必要なソフトウェアの集合を生成する。その集合値を元に、仮想計算機テンプレート導入ソフトＤＢ０８０３を検索する。そして、仮想計算機テンプレート導入ソフトＤＢ０８０３が保持する、導入されているソフトウェア群が前記集合知を完全に含むデータを探し、対応する仮想計算機テンプレート名を取得する。【００７２】
次に仮想計算機選択部０８１７は、仮想計算機テンプレート用ＤＢ０８０４を上記で取得した仮想計算機テンプレート名で検索し、対応する仮想計算機テンプレートを取得する。もし対応する仮想計算機テンプレートが見つからなかった場合、仮想計算機選択部０８１７は協調シミュレーションの実行に必要なソフトウェアを全て含む仮想計算機環境を生成し、仮想計算機テンプレート用ＤＢと仮想計算機テンプレート導入ソフトＤＢ０８０３にデータを追加し、その新しい仮想計算機環境を用いる。
得られた仮想計算機テンプレートは２つにコピーされ、一つは送信用仮想計算機生成部０８１１に、もうひとつはローカル用仮想計算機生成部０８１０に出力される。【００７３】
仮想計算機テンプレート用ＤＢ０８０４は協調シミュレーションやキー認証に用いる仮想計算機のテンプレートとなる仮想計算機を構成するファイルを保存するデータベースである。各仮想計算機のテンプレートは固有の識別子を付与され、仮想計算機構成ファイルの実体またはそのファイルパスとセットされデータベースに格納される。各仮想計算機のテンプレートには1つ以上のソフトウェア資産と、シミュレーション実行エージェントが一つ導入されている。【００７４】
問い合わせクエリ生成プログラム生成部０８１２は協調シミュレーション要求と、ソフトウェア資産利用ハッシュ値を用いて問い合わせクエリ生成プログラムを生成し、送信用仮想計算機生成部０８１１に送信する。
クエリ照合プログラム生成部０８１３はソフトウェア資産利用ハッシュ値を用いてクエリ照合プログラムを生成し、送信用仮想計算機生成部０８１１に送信する。
キー認証プログラム生成部０８１４はソフトウェア資産利用ハッシュ値を用いてキー認証プログラムを生成し、ローカル用仮想計算機生成部０８１０に送信する。
クエリ応答プログラム生成部０８１５はソフトウェア資産利用ハッシュ値を用いて問い合わせクエリ応答プログラムを生成し、ローカル用仮想計算機生成部０８１０に送信する。
上記の４コンポーネントの動作フローは後で図１０を用いて詳説する。【００７５】
送信用仮想計算機生成部０８１１は問い合わせクエリ生成プログラム、クエリ照合プログラムを仮想計算機生成部０１０４によって生成された仮想計算機テンプレートの内部に挿入して、認証クエリ生成部を作成し、ＯＥＭ側計算機環境０１００の仮想環境操作エージェント０１０８中の仮想計算機受信部０８００に送信する。【００７６】
ローカル用仮想計算機生成部０８１０はキー認証プログラム０８１９、クエリ応答プログラム０８２０を仮想計算機生成部０１０４によって生成された仮想計算機テンプレート内部に挿入して、認証クエリ照合部０１０５にローカル用仮想計算機０８１８として送り、実行開始する。
これらのキー認証プログラム０８１９及びクエリ応答プログラム０８２０はソフトウェア資産を用いるシミュレーションプログラムとして動作し、キー送信部０８２１を仲介して、ＯＥＭ側計算機環境０１００との間との認証キーの交換を行う。【００７７】
図１０は、図８で説明した認証フローで用いることが可能な認証キーを生成／照合する４つのプログラムを生成するプロセスの一具体例を示す図である。
本プロセスは５つのコンポーネントに分かれており、４つのプログラムに対し共通な部品を生成するキー生成共通部分であるステップ１０００からステップ１００８と、問い合わせクエリ生成プログラム生成部０８１２に対応するステップ１０１０、ステップ１０１１、キー認証プログラム生成部０８１４に対応するステップ１０２０からステップ１０２３、クエリ応答プログラム生成部０８１５に対応するステップ１０３０からステップ１０３３、クエリ照合プログラム生成部０８１３に対応するステップ１０４０からステップ１０４２、によって構成される。【００７８】
なお、本実施例の計算機システムにあっては、図１０で示すような認証キー生成等のプログラムの生成プロセスでなくとも、シミュレータ上で実装されたキー生成と照合が可能な４つのプログラムを用いて、何らかの既存の暗号のエンコード・デコード処理を行う構成であればいかなる内部実装、またはフローを利用することが可能である。以下、図１０に示す各ステップについて順次説明する。
（ステップ１０００）
ＯＥＭ側での協調シミュレーションに用いる仮想計算機に導入されているソフトウェア資産のリストを仮想計算機テンプレート導入ソフトＤＢ０８０３から取得する。このリストをＬと定義する。【００７９】
（ステップ１００１）
取得したリストＬと現在時刻を元に後のステップで共通して利用される乱数シードを複数生成する。
（ステップ１００２）
乱数シード値を一つ使い自然数Ｎ（１２８＜Ｎ＜１０２４）を生成する。サイズＮ×Ｎの行列を定義し、行列の要素を０、１、２からランダムに選び初期化する。
（ステップ１００３）
サイズＮ×Ｎの単位行列を定義する。【００８０】
（ステップ１００４）
ステップ１００２とステップ１００３で生成した行列の各要素の論理和を取り、一つの行列Ｒを得る。そして、この行列Ｒを隣接行列とする頂点数Ｎの有向グラフＧを定義する。
（ステップ１００５）
リストＬの要素数をＫと定義する。
（ステップ１００６）
ＧをＫ個の部分グラフに分割する。
（ステップ１００７）
部分グラフのリストと各部分グラフに含まれる頂点集合を取得し、それぞれＳＬ、ＶＳＬと定義する。
（ステップ１００８）
ことなる部分グラフに含まれる２つの頂点を接続する枝の集合をカットと定義し、各部分グラフ間のカットのリストをＫＬと定義する。上記の共通ステップで定義した、  ＳＬ、ＶＳＬ、ＫＬ、Ｎ、Ｌを用いて以下のステップで実際にキー生成・照合プログラムを生成する。【００８１】
（ステップ１０１０）
問い合わせクエリ生成プログラム生成部０８１２において、乱数シード値の時間でオーバーフローするカウンタ回路とオーバーフロー時にシミュレーション時間を出力するプログラムを生成。
（ステップ１０１１）
ステップ１０１０で生成したプログラムをＬに含まれる適当なソフトウェア資産上で実装させたプログラムを問い合わせクエリ生成プログラムとして保存する。【００８２】
（ステップ１０２０）
キー認証プログラム生成部０８１４において、まずリスト中のサプライヤ側で消費するべきソフトウェア資産のリストを取得し、Ｌ１と定義する。
（ステップ１０２１）
ＳＬの要素一つまたは複数に対しＬ１に含まれるソフトウェア資産を一つ対応させた連想リストを生成しＡＬ０とする。【００８３】
（ステップ１０２２）
ＶＳＬのそれぞれの要素に含まれる頂点集合をビットとみなし、同一ＶＳＬに含まれる頂点同士の有向枝を配線とみなしたバイナリカウンタを構築し、ＡＬ０上で対応するソフトウェア資産上で動作するシミュレーションモデルとして生成する。グラフＧ中のカットの部分、すなわちＶＳＬの各要素をまたぐ有向枝を、シミュレーション間のインターフェイス接続であるとみなして接続する。
（ステップ１０２３）
ステップ１０２２で構築した、複数個のシミュレーションモデルがシミュレータ間接続によって接続されたプログラムをキー認証プログラムとして保存する。【００８４】
（ステップ１０３０）
クエリ応答プログラム生成部０８１３において、リスト中のＯＥＭ側で消費するべきソフトウェア資産のリストを取得しＬ２と定義し、その要素数をＭと定義する。
（ステップ１０３１）
シミュレーション時間を入力とし１からＭ（Ｍ−１）／２までの正数をランダムに発生させるプログラムを生成する。
（ステップ１０３２）
前ステップで生成したプログラムをＬ２に含まれる適当なソフトウェア資産上で実装させたプログラムを問い合わせクエリ応答プログラムとして保存する。【００８５】
（ステップ１０４０）
クエリ照合プログラム生成部０８１５において、ＳＬの要素からランダムにＭ個を抽出したものをＳＳＬと定義する。ＳＳＬの各要素に対し、Ｌ２に含まれるソフトウェア資産一つを対応付けた連想リストＡＬ１を生成する。
（ステップ１０４１）
ＳＳＬのそれぞれの要素に含まれる頂点集合をビットとみなし、同一のＳＳＬ要素に含まれる頂点同士の有向枝を配線とみなしたバイナリカウンタを構築し、
ＡＬ１上で対応するソフトウェア資産上で動作するシミュレーションモデルとして生成する。グラフＧ中のカットの部分、すなわちＳＳＬの各要素をまたぐ有向枝を、シミュレーション間のインターフェイス接続であるとみなして接続する。
（ステップ１０４２）
ステップ１０４１で構築した、複数個のシミュレーションモデルがシミュレータ間接続によって接続されたプログラムをクエリ照合プログラムとして保存する。【００８６】
図１１では図１０で生成される認証キーを用いた、ＯＥＭ側とサプライヤ側間のトランザクションの一例を示す。
（ステップ１１００）
問い合わせクエリ生成プログラムに予め導入されている、  カウンタがオーバーフローした際に実行時間を取得して問い合わせクエリとしてキー送受信部に送信する。オーバーフローしたカウンタは協調シミュレーションが続く限り、引き続きインクリメントし続ける。これによってステップ１１００以下の工程は協調シミュレーション実行中に一定周期で実行される。【００８７】
（ステップ１１０１）
クエリ応答プログラムが問い合わせクエリを受信すると、クエリ応答プログラムの認証クエリ生成関数がトリガされる。認証クエリ生成関数にはこの関数生成時に定数Ｍが定義されている。定数Ｍの値は前述したＯＥＭ側で消費されるべきソフトウェア資産の数に相当する。【００８８】
認証クエリ生成関数は受信した問い合わせクエリのシミュレーション実行時間をシードとして、１とｍ（ｍ−１）／２の間の範囲の正数一つをランダムに選択し、カット選択値と定義する。またこの乱数値を受信したシミュレーション実行時間に加算した結果を、ターゲットシミュレーション時間と定義する。カット選択値とターゲットシミュレーション時間を組にして認証クエリとして送信する。【００８９】
下記のステップ１１０２とステップ１１０３はそれぞれサプライヤ側、ＯＥＭ側で並行して実行される。
（ステップ１１０２）
キー認証プログラムは認証クエリをクエリ応答プログラムと共有している。上記がステップ１１０１によって認証クエリが更新された場合、キー認証プログラムはこれを用いて、ＯＥＭ側が返送してくることが期待される、応答クエリの期待値を算出する。キー認証プログラムに組み込まれた、シミュレータをまたぐバイナリカウンタをターゲットシミュレーション時間まで動作させ、停止する。そして、カット選択値に対応するシミュレータ間インターフェイスのその時点でやり取りしている値を取得する。これを応答クエリの期待値として一時保存される。【００９０】
（ステップ１１０３）
クエリ照合プログラムが認証クエリを受信すると、クエリ照合プログラムは応答クエリを算出する。クエリ照合プログラムに組み込まれた、シミュレータをまたぐバイナリカウンタをターゲットシミュレーション時間まで動作させ、停止する。そして、カット選択値に対応するシミュレータ間インターフェイスのその時点でやり取りしている値を取得する。これを応答クエリとして送信する。【００９１】
（ステップ１１０４）
キー認証プログラムはクエリ照合プログラムから送信された応答クエリを受信すると、ステップ１１０２で予め計算した応答クエリ期待値と、受信した応答クエリを比較し、その結果をＯＥＭ側のキー送受信部に送信する。【００９２】
（ステップ１１０５）
キー送受信部が応答クエリの比較結果を受信、一致の場合シミュレーションを続行する、すなわち（ステップ１１００）に戻る。不一致または一定期間結果が帰らなかった場合は、仮想環境操作エージェントに実装された仮想計算機破棄コマンドを実行し、シミュレーションを強制的に停止する。【００９３】
以上詳述してきたように、本発明は複数のソフトウェアが連動して高速に動作する計算機システム、または開発システムのプログラムに適用することができる。そして、例えば、サプライヤ側が予め設定した利用条件下でのみＯＥＭ側に送付した仮想計算機が動作し、その条件から外れると共に実行中の仮想計算機が消去される事により、ソフトウェア資産の不正な利用・複製を防止することが可能である。【００９４】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明のより良い理解のために詳細に説明したのであり、必ずしも説明の全ての構成を備えるものに限定されものではない。また、実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。更に、上述した各構成、機能、処理部等は、それらの一部又は全部を実現するプログラムを作成する例を説明したが、それらの一部又は全部を例えば集積回路で設計する等によりハードウェアで実現しても良いことは言うまでもない。
【符号の説明】
【００９５】
０１００  Ａ社計算機環境
０１０１  Ｂ社計算機環境
０１０２  Ｃ社計算機環境
０１０３  Ａ社ソフトウェア資産
０１０３ｂ  Ｂ社ソフトウェア資産
０１０３ｃ  Ｃ社ソフトウェア資産
０１０４  仮想計算機生成部
０１０５  認証クエリ照合部
０１０７  通信経路
０１０８仮想環境操作エージェント
０１１０  Ｂ社仮想計算機環境
０１０９  Ｃ社仮想計算機環境
０１１１  Ｂ社ソフトウェア資産複製
０１１２  Ｃ社ソフトウェア資産複製
０１１３  認証クエリ生成部
０１１４  シミュレーション実行エージェント
０１１５  内部ネットワーク
０７００  サプライヤ側協調シミュレーション
０７０１  他仮想環境上の協調シミュレーション
０７０２  問い合わせクエリ生成プログラム
０７０３  クエリ照合プログラム
０７０４  シミュレータ間インターフェイス
０７０６  仮想計算機コントローラ
０７０８  シミュレーション起動用コマンド
０７０９  シミュレーション停止コマンド
０７１０  シミュレーション実行時間取得コマンド
０７１２  仮想計算機受信部
０７１３  仮想計算機起動コマンド
０７１４  仮想計算機破棄コマンド
０７１５  キー送受信部
０８００  協調シミュレーション実行指示送受信部
０８０２  協調シミュレーション要求受信部
０８０３  仮想計算機テンプレート導入ソフトＤＢ
０８０４  仮想計算機テンプレート用ＤＢ
０８０６  仮想計算機テンプレート
０８０７  キー送受信部
０８０８  クエリ応答プログラム
０８０９  キー認証プログラム
０８１０  ローカル用計算機生成部
０８１１  送信用仮想計算機生成部
０８１２  問い合わせクエリ生成プログラム生成部
０８１３  クエリ照合プログラム生成部
０８１４  キー認証プログラム生成部
０８１５  クエリ応答プログラム生成部
０８１６  ソフトウェア資産利用ハッシュ生成部
０８１７  仮想計算機選択部
０８１８  ローカル用仮想計算機
０８１９  キー認証プログラム
０８２０  クエリ応答プログラム
０８２１  キー送受信部
０９００  ソフトウェア資産全体
０９０１  ある協調シミュレーションで利用されないソフトウェア資産
０９０２  ある協調シミュレーションで利用されるソフトウェア資産
０９０３  ＯＥＭ側で本システムが空費するべきソフトウェア資産
０９０４  サプライヤ側で本システムが空費するべきソフトウェア資産
０９０５  認証クエリ生成部が消費するソフトウェア資産
０９０６  認証クエリ照合部が消費するソフトウェア
１２００  コンピュータ
１２０１  プロセッサ
１２０２  コントローラ
１２０３  メモリ
１２０４  アクセラレータ
１２０５  ネットワークインタフェース
【図１】
0005956613.tif 000002
【図２Ａ】
0005956613.tif 000003
【図２Ｂ】
0005956613.tif 000004
【図３】
0005956613.tif 000005
【図４】
0005956613.tif 000006
【図５Ａ】
0005956613.tif 000007
【図５Ｂ】
0005956613.tif 000008
【図６Ａ】
0005956613.tif 000009
【図６Ｂ】
0005956613.tif 000010
【図７】
0005956613.tif 000011
【図８】
0005956613.tif 000012
【図９】
0005956613.tif 000013
【図１０】
0005956613.tif 000014
【図１１】
0005956613.tif 000015
【図１２】
0005956613.tif 000016