(57)【要約】【課題】  アプリケーションソフトウェアのコンポーネント間のリアルタイムな通信を保証できるようにする。【解決手段】  ＩＤＬコンパイル装置５のＩＤＬ定義解析装置５１は、ＩＤＬ定義２を入力しＩＤＬ定義解析情報５２を生成する。スケジュール解析装置５３は、スケジュール情報６を入力し、入力したスケジュール情報６に基づいて、コンポーネント間で通信を行う際の通信基盤Ｃ１１３の帯域の割り当てを決定する。また、スケジュール解析装置５３は、帯域の割り当て結果に基づいて、スケジュール解析情報５４を生成する。リアルタイムコード生成装置５５は、ＩＤＬ定義解析情報５２及びスケジュール解析情報５４に基づいて、リアルタイムスタブ７、リアルタイムスケルトン８及びスケジューリングモジュール９を生成する。【選択図】  図１
2006277053.tif 000002
【特許請求の範囲】
【請求項１】
ＩＤＬ定義データに基づいてスタブ又はスケルトンを生成するＩＤＬコンパイル装置であって、
ソフトウェアに含まれるコンポーネント間で行う各通信のスケジュールを示す通信スケジュール情報を入力するスケジュール情報入力手段と、
前記スケジュール情報入力手段が入力した通信スケジュール情報に基づいて、前記コンポーネント間で各通信を行う際の通信基盤の帯域の割り当てを決定する帯域割当手段と、
前記ＩＤＬ定義データ及び前記帯域割当手段の割り当て結果に基づいて、所定のコードデータを生成するコードデータ生成手段とを
備えたことを特徴とするＩＤＬコンパイル装置。
【請求項２】
スケジュール情報入力手段は、コンポーネント間で行う各通信の優先度、前記各通信を行う際に許容される遅延時間、又は前記各通信において送受信されるデータ量を含む通信スケジュール情報を入力し、
帯域割当手段は、前記スケジュール情報入力手段が入力した通信スケジュール情報に示される優先度、遅延時間又はデータ量に従って、コンポーネント間で通信を行う際の通信基盤の帯域の割り当てを決定する
請求項１記載のＩＤＬコンパイル装置。
【請求項３】
コードデータ生成手段は、コードデータとして、コンポーネント間で行う各通信への通信基盤の帯域の割り当て、及び前記コンポーネント間で行う各通信のタイミングを制御するためのスケジューリングモジュールを生成する請求項１又は請求項２記載のＩＤＬコンパイル装置。
【請求項４】
コードデータ生成手段は、スケジュールリングモジュールと連携してコンポーネント間で通信を行うためのスタブ又はスケルトンを生成する請求項３記載のＩＤＬコンパイル装置。
【請求項５】
帯域割当手段は、スケジュール情報入力手段が入力した通信スケジュール情報に基づいて、コンポーネント間で行う各通信に割り当てた通信基盤の帯域量、及び前記コンポーネント間で行う各通信のタイミングを示すタイミング情報を含むスケジュール解析情報を生成する請求項１から請求項４のうちのいずれか１項に記載のＩＤＬコンパイル装置。
【請求項６】
コードデータ生成手段は、帯域割当手段が生成したスケジュール解析情報に基づいて、コンポーネント間で行う各通信に割り当てた通信基盤の帯域量を示すコード、及び前記コンポーネント間で行う各通信のタイミングを示すコードを含むスケジューリングモジュールを生成する請求項５記載のＩＤＬコンパイル装置。
【請求項７】
ソフトウェアに含まれるコンポーネント間で通信を行うことによって処理を実行する情報処理システムであって、
ＩＤＬ定義データに基づいてスタブ又はスケルトンを生成するＩＤＬコンパイル装置と、
前記ソフトウェアに従って処理を実行する情報処理装置とを備え、
前記ＩＤＬコンパイル装置は、
前記ソフトウェアに含まれるコンポーネント間で行う各通信のスケジュールを示す通信スケジュール情報を入力するスケジュール情報入力手段と、
前記スケジュール情報入力手段が入力した通信スケジュール情報に基づいて、前記コンポーネント間で各通信を行う際の通信基盤の帯域の割り当てを決定する帯域割当手段と、
前記ＩＤＬ定義データ及び前記帯域割当手段の割り当て結果に基づいて、所定のコードデータを生成するコードデータ生成手段とを含み、
前記情報処理装置は、前記ＩＤＬコンパイル装置が生成したコードデータに従って、コンポーネント間で行う通信毎に通信基盤の帯域を割り当て、前記割り当てた帯域を用いてコンポーネント間で通信を行うコンポーネント間通信手段を含む
ことを特徴とする情報処理システム。
【請求項８】
ＩＤＬ定義データに基づいてスタブ又はスケルトンを生成するＩＤＬコンパイル方法であって、
ソフトウェアに含まれるコンポーネント間で行う各通信のスケジュールを示す通信スケジュール情報を入力するステップと、
前記入力した通信スケジュール情報に基づいて、前記コンポーネント間で各通信を行う際の通信基盤の帯域の割り当てを決定するステップと、
前記ＩＤＬ定義データ及び前記割り当て結果に基づいて、所定のコードデータを生成するステップとを
含むことを特徴とするＩＤＬコンパイル方法。
【請求項９】
ソフトウェアに含まれるコンポーネント間で通信を行うことによって処理を実行する情報処理方法であって、
ＩＤＬ定義データに基づいてスタブ又はスケルトンを生成するＩＤＬコンパイル装置が、前記ソフトウェアに含まれるコンポーネント間で行う各通信のスケジュールを示す通信スケジュール情報を入力するステップと、
前記ＩＤＬコンパイル装置が、前記入力した通信スケジュール情報に基づいて、前記コンポーネント間で各通信を行う際の通信基盤の帯域の割り当てを決定するステップと、
前記ＩＤＬコンパイル装置が、前記ＩＤＬ定義データ及び前記割り当て結果に基づいて、所定のコードデータを生成するステップと、
前記ソフトウェアに従って処理を実行する情報処理装置が、前記ＩＤＬコンパイル装置が生成したコードデータに従って、コンポーネント間で行う通信毎に通信基盤の帯域を割り当て、前記割り当てた帯域を用いてコンポーネント間で通信を行うステップとを含む
ことを特徴とする情報処理方法。
【請求項１０】
ＩＤＬ定義データに基づいてスタブ又はスケルトンを生成するためのＩＤＬコンパイラであって、
コンピュータに、
ソフトウェアに含まれるコンポーネント間で行う各通信のスケジュールを示す通信スケジュール情報を入力する処理と、
前記入力した通信スケジュール情報に基づいて、前記コンポーネント間で各通信を行う際の通信基盤の帯域の割り当てを決定する処理と、
前記ＩＤＬ定義データ及び前記割り当て結果に基づいて、所定のコードデータを生成する処理とを
実行させるＩＤＬコンパイラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＩＤＬ定義データをコンパイルして、アプリケーションソフトウェアのコンポーネントで用いられるスタブやスケルトンを生成するＩＤＬコンパイル装置、ＩＤＬコンパイル方法及びＩＤＬコンパイラに関する。また、本発明は、ＩＤＬコンパイラを用いた情報処理システム及び情報処理方法に関する。
【背景技術】
【０００２】
Common Object Request Broker Architecture （ＣＯＲＢＡ）技術を利用したアプリケーションソフトウェアのソフトウェアコンポーネント（コンポーネント）で用いられるスタブやスケルトンを生成するために、Interface Definition Language （ＩＤＬ）コンパイラが用いられる。図１２は、ＩＤＬコンパイラに従って動作するＩＤＬコンパイル装置の構成の一例を示すブロック図である。図１２に示すように、ＩＤＬコンパイル装置９１０は、ＩＤＬ定義解析装置９１１及びコード生成装置９１３を含む。ＩＤＬコンパイル装置９１０は、ＩＤＬ定義９２０を入力し、クライアント機能をもつコンポーネントが用いるスタブ９３０や、サーバ機能をもつコンポーネントが用いるスケルトン９４０を生成する。
【０００３】
図１２において、ＩＤＬ定義９２０は、ＣＯＲＢＡ技術を用いたコンポーネント間で送受信されるデータ型（以下、ＩＤＬ型という）の定義である。また、ＩＤＬ定義解析装置９１１は、文字列等の形式で入力したＩＤＬ定義９２０を解析し、ＩＤＬ定義９２０をＩＤＬコンパイル装置９１０の各装置が使用可能なデータ形式の情報（以下、ＩＤＬ定義解析情報９１２という）に変換する装置である。また、コード生成装置９１３は、ＩＤＬ定義解析装置９１１が生成したＩＤＬ定義解析情報９１２に基づいて、スタブ９３０やスケルトン９４０を生成する装置である。
【０００４】
例えば、特許文献１には、ＩＤＬソースを入力として、ＣＯＢＯＬ言語で記述されたスタブ及びスケルトンを出力するＩＤＬコンパイラが記載されている。また、特許文献２には、優先度及び直近の特定期間の使用頻度に応じて帯域を動的に割り当てることができるパケットスケジューリング方法が記載されている。
【０００５】
【特許文献１】特開平１１−２９６３５９号公報（段落００２８−００４４、図４−５）
【特許文献１】特開２００２−１１８５８５号公報（段落００３５−００４２、図１）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
特許文献１に記載されたＩＤＬコンパイラ等を用いて、コンポーネント間において、１つの通信基盤を介して、ＣＯＲＢＡを用いた複数のリアルタイム通信が行われることがある。この場合、コンポーネント間の通信時間がなるべく変動しないように対処したり、低い優先度の通信が高い優先度の通信を阻害しないように対処したりする必要がある。通信時間の変動や通信の阻害を防止するために、一般に通信時間の変動が少ない通信基盤を用いることが考えられるが、通信基盤のコストが大きい。
【０００７】
また、通信時間の変動や通信の阻害を防止するために、通信の優先度毎に通信基盤の帯域の割り当てを行うことが考えられる。図１３は、通信の優先度に応じて通信基盤の帯域の割り当てを行った場合の例を示す説明図である。図１３に示すように、優先度毎に帯域を割り当てる場合、高い優先度の通信だけを送信できる専用の帯域を常時確保する方法がとられることが多い。しかし、高い優先度の通信が発生していない場合、帯域に余裕があるにもかかわらず優先度の低い通信が制限されることになり、帯域が有効活用されない可能性がある。
【０００８】
また、特許文献２に記載されたパケットスケジューリング方法をコンポーネント間の通信に適用すれば、通信のトラヒック特性量を解析することによって、動的に通信基盤の帯域を割り当てることができる。しかし、アプリケーションの実行時に帯域の割り当てを行っているので、リアルタイムに通信基盤の帯域の割り当てを行えるとは限らない。
【０００９】
そこで、本発明は、アプリケーションソフトウェアのコンポーネント間のリアルタイムな通信を保証できるＩＤＬコンパイル装置、情報処理システム、ＩＤＬコンパイル方法、情報処理方法及びＩＤＬコンパイラを提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明によるＩＤＬコンパイル装置は、ＩＤＬ定義データ（例えば、ＩＤＬ定義２）に基づいてスタブ又はスケルトンを生成するＩＤＬコンパイル装置（例えば、ＩＤＬコンパイラに従って動作する情報処理装置によって実現される）であって、ソフトウェアに含まれるコンポーネント間で行う各通信のスケジュールを示す通信スケジュール情報（例えば、スケジュール情報６）を入力するスケジュール情報入力手段（例えば、スケジュール解析装置５３によって実現される）と、スケジュール情報入力手段が入力した通信スケジュール情報に基づいて、コンポーネント間で各通信を行う際の通信基盤（例えば、ネットワーク）の帯域の割り当てを決定する帯域割当手段（例えば、スケジュール解析装置５３によって実現される）と、ＩＤＬ定義データ及び帯域割当手段の割り当て結果に基づいて、所定のコードデータ（例えば、スケジューリングモジュール９）を生成するコードデータ生成手段（例えば、リアルタイムコード生成装置５５によって実現される）とを備えたことを特徴とする。
【００１１】
また、ＩＤＬコンパイル装置において、スケジュール情報入力手段は、コンポーネント間で行う各通信の優先度、各通信を行う際に許容される遅延時間、又は各通信において送受信されるデータ量を含む通信スケジュール情報を入力し、帯域割当手段は、スケジュール情報入力手段が入力した通信スケジュール情報に示される優先度、遅延時間又はデータ量に従って、コンポーネント間で通信を行う際の通信基盤の帯域の割り当てを決定するものであってもよい。
【００１２】
また、ＩＤＬコンパイル装置において、コードデータ生成手段は、コードデータとして、コンポーネント間で行う各通信への通信基盤の帯域の割り当て、及びコンポーネント間で行う各通信のタイミングを制御するためのスケジューリングモジュールを生成するものであってもよい。
【００１３】
また、ＩＤＬコンパイル装置において、コードデータ生成手段は、スケジュールリングモジュールと連携してコンポーネント間で通信を行うためのスタブ（例えば、リアルタイムスタブ７）又はスケルトン（例えば、リアルタイムスケルトン８）を生成するものであってもよい。
【００１４】
また、ＩＤＬコンパイル装置において、帯域割当手段は、スケジュール情報入力手段が入力した通信スケジュール情報に基づいて、コンポーネント間で行う各通信に割り当てた通信基盤の帯域量、及びコンポーネント間で行う各通信のタイミングを示すタイミング情報を含むスケジュール解析情報を生成するものであってもよい。
【００１５】
また、ＩＤＬコンパイル装置において、コードデータ生成手段は、帯域割当手段が生成したスケジュール解析情報に基づいて、コンポーネント間で行う各通信に割り当てた通信基盤の帯域量を示すコード、及びコンポーネント間で行う各通信のタイミングを示すコードを含むスケジューリングモジュールを生成するものであってもよい。
【００１６】
本発明による情報処理システムは、ソフトウェアに含まれるコンポーネント間で通信を行うことによって処理を実行する情報処理システムであって、ＩＤＬ定義データに基づいてスタブ又はスケルトンを生成するＩＤＬコンパイル装置と、ソフトウェアに従って処理を実行する情報処理装置（例えば、コンピュータＡ１１１やコンピュータＢ１１２）とを備え、ＩＤＬコンパイル装置は、ソフトウェアに含まれるコンポーネント間で行う各通信のスケジュールを示す通信スケジュール情報を入力するスケジュール情報入力手段と、スケジュール情報入力手段が入力した通信スケジュール情報に基づいて、コンポーネント間で各通信を行う際の通信基盤の帯域の割り当てを決定する帯域割当手段と、ＩＤＬ定義データ及び帯域割当手段の割り当て結果に基づいて、所定のコードデータを生成するコードデータ生成手段とを含み、情報処理装置は、ＩＤＬコンパイル装置が生成したコードデータに従って、コンポーネント間で行う通信毎に通信基盤の帯域を割り当て、割り当てた帯域を用いてコンポーネント間で通信を行うコンポーネント間通信手段（例えば、コンピュータＡ１１１やコンピュータＢ１１２のＣＰＵ及びネットワークインタフェース部によって実現される）を含むことを特徴とする。
【００１７】
本発明によるＩＤＬコンパイル方法は、ＩＤＬ定義データに基づいてスタブ又はスケルトンを生成するＩＤＬコンパイル方法であって、ソフトウェアに含まれるコンポーネント間で行う各通信のスケジュールを示す通信スケジュール情報を入力するステップと、入力した通信スケジュール情報に基づいて、コンポーネント間で各通信を行う際の通信基盤の帯域の割り当てを決定するステップと、ＩＤＬ定義データ及び割り当て結果に基づいて、所定のコードデータを生成するステップとを含むことを特徴とする。
【００１８】
本発明による情報処理方法は、ソフトウェアに含まれるコンポーネント間で通信を行うことによって処理を実行する情報処理方法であって、ＩＤＬ定義データに基づいてスタブ又はスケルトンを生成するＩＤＬコンパイル装置が、ソフトウェアに含まれるコンポーネント間で行う各通信のスケジュールを示す通信スケジュール情報を入力するステップと、ＩＤＬコンパイル装置が、入力した通信スケジュール情報に基づいて、コンポーネント間で各通信を行う際の通信基盤の帯域の割り当てを決定するステップと、ＩＤＬコンパイル装置が、ＩＤＬ定義データ及び割り当て結果に基づいて、所定のコードデータを生成するステップと、ソフトウェアに従って処理を実行する情報処理装置が、ＩＤＬコンパイル装置が生成したコードデータに従って、コンポーネント間で行う通信毎に通信基盤の帯域を割り当て、割り当てた帯域を用いてコンポーネント間で通信を行うステップとを含むことを特徴とする。
【００１９】
本発明によるＩＤＬコンパイラは、ＩＤＬ定義データに基づいてスタブ又はスケルトンを生成するためのＩＤＬコンパイラであって、コンピュータに、ソフトウェアに含まれるコンポーネント間で行う各通信のスケジュールを示す通信スケジュール情報を入力する処理と、入力した通信スケジュール情報に基づいて、コンポーネント間で各通信を行う際の通信基盤の帯域の割り当てを決定する処理と、ＩＤＬ定義データ及び割り当て結果に基づいて、所定のコードデータを生成する処理とを実行させることを特徴とする。
【発明の効果】
【００２０】
本発明によれば、通信スケジュール情報に基づいて、所定のコードデータを生成する。そのため、生成したコードデータを用いて、コンポーネント間でリアルタイム性が求められる通信を、適切な周期且つ適切なタイミングで行うことができる。従って、アプリケーションソフトウェアのコンポーネント間のリアルタイムな通信を保証することができる。
【００２１】
また、本発明において、コードデータとして、各通信への通信基盤の帯域の割り当て及び各通信のタイミングを制御するためのスケジューリングモジュールを生成するように構成すれば、コンポーネント間で通信を行う際に通信基盤の帯域を適切に割り当てることができ、適切なタイミングでコンポーネント間の通信を行うことができる。
【００２２】
また、本発明において、スケジューリングモジュールと連携してコンポーネント間で通信を行うためのスタブ又はスケルトンを生成するように構成すれば、スタブ又はスケルトンを用いて、適切な周期且つ適切なタイミングでコンポーネント間の通信を行うことができる。
【発明を実施するための最良の形態】
【００２３】
以下、本発明の実施の形態を図面を参照して説明する。まず、本発明によるＩＤＬコンパイラの概念を説明する。本実施の形態において、ＩＤＬコンパイラは、ＣＯＲＢＡ技術を用いた複数のソフトウェアコンポーネント（以下、単にコンポーネントという）から構成される、アプリケーションソフトウェア（以下、単にアプリケーションという）が用いるスタブやスケルトンを生成する。
【００２４】
本実施の形態において、ＩＤＬコンパイラは、アプリケーションに含まれるコンポーネント間で行う各通信のスケジュールを示すスケジュール情報に基づいて、スタブやスケルトンを生成する。本実施の形態では、ＩＤＬコンパイラは、通信基盤（ネットワーク）の帯域の情報とコンポーネント間の通信に要求される性能要件の情報とを含むスケジュール情報を用いて、スタブやスケルトンを生成する。そのようにすることによって、コンポーネント間で規定された時間以内に必ず送受信を完了させなければならない所定の通信（以下、リアルタイム通信という）を可能とし、且つ通信基盤の帯域を効率よく使用することを可能とするスタブ、スケルトン及びスケジューリングモジュールを自動生成する。
【００２５】
次に、ＩＤＬコンパイラに従って動作するＩＤＬコンパイル装置の構成について説明する。図１は、ＩＤＬコンパイル装置の構成の一例を示すブロック図である。本実施の形態において、ＩＤＬコンパイル装置５は、具体的には、ＩＤＬコンパイラに従って動作するワークステーションやパーソナルコンピュータ等の情報処理装置によって実現される。図１に示すように、ＩＤＬコンパイル装置５は、ＩＤＬ定義解析装置５１、スケジュール解析装置５３及びリアルタイムコード生成装置５５を含む。
【００２６】
図１に示すように、本実施の形態において、ＩＤＬコンパイル装置５は、ＩＤＬ定義２に加えて、スケジュール情報６を入力する。そして、ＩＤＬコンパイル装置５は、通信基盤の帯域の割り当ての制御とデータ送受信のタイミングの制御とを行うためのコードデータであるスケジューリングモジュール９を生成する。また、ＩＤＬコンパイル装置５は、スケジューリングモジュール９と連携してリアルタイム通信におけるデータの送受信を行うためのスタブであるリアルタイムスタブ７を生成する。また、ＩＤＬコンパイル装置５は、スケジューリングモジュール９と連携してリアルタイム通信におけるデータの送受信を行うためのスケルトンであるリアルタイムスケルトン８を生成する。また、ＩＤＬコンパイル装置５は、従来のＩＤＬコンパイル装置が備えるＩＤＬ定義解析装置５１に加えて、スケジュール解析装置５３及びリアルタイムコード生成装置５５を含むことを特徴とする。
【００２７】
ＩＤＬ定義解析装置５１は、ＣＯＲＢＡ技術を用いたコンポーネント間で送受信されるデータ型（ＩＤＬ型）の定義を含むデータであるＩＤＬ定義２を入力する機能を備える。本実施の形態では、ＩＤＬ定義解析装置５１は、文字列等の形式のデータとしてＩＤＬ定義２を入力する。また、ＩＤＬ定義解析装置５１は、入力したＩＤＬ定義２を解析し、ＩＤＬ定義２をＩＤＬコンパイル装置５の各装置が使用可能なデータ形式の情報に変換したＩＤＬ定義解析情報５２を生成する機能を備える。
【００２８】
スケジュール解析装置５３は、通信基盤の帯域の情報及び各コンポーネント間の通信に要求される性能要件の情報を含むスケジュール情報６を入力する機能を備える。例えば、スケジュール解析装置５３は、通信のデータ量、最大許容遅延時間及び優先度等の情報を含むスケジュール情報６を入力する。また、スケジュール解析装置５３は、入力したスケジュール情報６を解析して通信基盤の帯域の割り当てを決定し、通信基盤の帯域の割り当て結果を含むスケジュール解析情報５４を生成する機能を備える。
【００２９】
リアルタイムコード生成装置５５は、ＩＤＬ定義解析装置５１が生成したＩＤＬ定義解析情報５２と、スケジュール解析装置５３が生成したスケジュール解析情報５４とを入力する機能を備える。また、リアルタイムコード生成装置５５は、入力したＩＤＬ定義解析情報５２及びスケジュール解析情報５４に基づいて、リアルタイムスタブ７、リアルタイムスケルトン８、及びスケジューリングモジュール９を生成し出力する機能を備える。
【００３０】
次に、動作について具体例を用いて説明する。本実施の形態において、ＩＤＬコンパイル装置５は、通信基盤を介して、アプリケーション内のコンポーネント間の通信を行う情報処理システムに適用される。図２は、ＩＤＬコンパイル装置５を用いた情報処理システムの一例を示す説明図である。図２に示すように、本実施の形態では、情報処理システム１１が、２つのコンピュータ１１１，１１２を含む場合を例に説明する。また、図３は、図２に示す情報処理システム１１が実行するアプリケーションの構成の例を示す説明図である。図３に示すように、本実施の形態では、情報処理システム１１が、２つのコンポーネント１０１，１０２を含むアプリケーション１０に従って、処理を実行する場合を例に説明する。
【００３１】
本実施の形態において、コンピュータＡ１１１は、アプリケーション１０に含まれるコンポーネントＸ１０１に従って処理を実行する装置である。また、コンピュータＢ１１２は、アプリケーション１０に含まれるコンポーネントＹ１０２に従って処理を実行する装置である。また、図２に示すように、コンピュータＡ１１１とコンピュータＢ１１２とは、所定の通信基盤Ｃ（ネットワーク）１１３を介して接続される。そして、コンポーネントＸ１０１とコンポーネントＹ１０２とは、通信基盤Ｃ１１３を介してリアルタイム通信を含む各種通信を行う。
【００３２】
なお、本実施の形態では、コンポーネントＸ１０１とコンポーネントＹ１０２とが通信を行う等の表現を用いるが、実際には、コンピュータＡ１１１やコンピュータＢ１１２が、コンポーネントＸ１０１やコンポーネントＹ１０２に従って処理を実行する。このことは、他のソフトウェアやソフトウェアによって実現される手段についても同様である。
【００３３】
また、図４は、図２及び図３に示すコンポーネント１０１，１０２間で通信を行う場合のＩＤＬコンパイル装置５の具体的な構成例を示すブロック図である。本実施の形態では、ＩＤＬコンパイル装置５は、図３に示すアプリケーション１０が用いるスタブ、スケルトン及びスケジューリングモジュールを生成する。本実施の形態では、ＩＤＬコンパイル装置５は、図４に示すように、ＩＤＬ定義２及びスケジュール情報６を入力し、コンポーネントＸ用リアルタイムスタブ７１、及びコンポーネントＹ用リアルタイムスタブ７２を生成する。また、ＩＤＬコンパイル装置５は、コンポーネントＸ用リアルタイムスケルトン８１、及びコンポーネントＹ用リアルタイムスケルトン８２を生成する。また、ＩＤＬコンパイル装置５は、コンポーネントＸ用スケジューリングモジュール９１、及びコンポーネントＹ用スケジューリングモジュール９２を生成する。
【００３４】
図５は、ＩＤＬ定義２の例を示す説明図である。本実施の形態において、ＩＤＬ定義２は、図５に示すように、アプリケーション１０全体で用いるＩＤＬ型の定義を含む。本実施の形態では、ＩＤＬ定義２は、ＩＤＬ型の定義として、配列Ｐ１型２１、配列Ｐ２型２２、配列Ｐ３型２３、インタフェースＩ１型２４及びインタフェースＩ２型２５を含む。
【００３５】
図６は、スケジュール情報６の例を示す説明図である。本実施の形態において、スケジュール情報６は、図６に示すように、通信基盤Ｃ１１３の性能要件の情報（以下、バス性能情報という）６１を含む。また、スケジュール情報６は、通信基盤Ｃ１１３上のリアルタイム通信の優先度、最大許容遅延時間及びデータ量を示す情報（以下、リアルタイム通信情報という）を含む。本実施の形態では、図６に示すように、スケジュール情報６は、３つのリアルタイム通信Ｋ，Ｌ，Ｍに対するリアルタイム通信情報６２，６３，６４を含む。
【００３６】
また、図４に示すように、ＩＤＬコンパイル装置５は、ＩＤＬ定義解析装置５１、スケジュール解析装置５３及びリアルタイムコード生成装置５５を含む。ＩＤＬ定義解析装置５１は、所定のＩＤＬ定義解析手順を実行し、ＩＤＬ定義２に含まれるＩＤＬ型の解析を行い、ＩＤＬ定義解析情報５２を生成する。スケジュール解析装置５３は、所定のスケジュール解析手順を実行し、スケジュール情報６の解析を行い、通信基盤Ｃ１１３の帯域の割り当てを計算する。そして、スケジュール解析装置５３は、スケジュール解析情報５４を生成する。
【００３７】
リアルタイムコード生成装置５５は、所定のリアルタイムコード生成手順を実行し、ＩＤＬ定義解析情報５２及びスケジュール解析情報５４に基づいて、個々のコンポーネント１０１，１０２用のリアルタイムスタブ、リアルタイムスケルトン及びスケジューリングモジュールを生成する。
【００３８】
図７は、ＩＤＬコンパイル装置５が実行するＩＤＬコンパイル手順の処理の一例を示す流れ図である。図７に示すように、ＩＤＬコンパイル手順は、ＩＤＬ定義解析手順、スケジュール解析手順、及びリアルタイムコード生成手順の各ステップを含む。また、ＩＤＬコンパイル手順は、ＩＤＬコンパイル装置５が、ＩＤＬ定義２及びスケジュール情報６を入力し、個々のコンポーネント１０１，１０２用のリアルタイムスタブ、リアルタイムスケルトン及びスケジューリングモジュールを生成するための手順である。
【００３９】
ＩＤＬコンパイル装置５は、ＩＤＬコンパイル手順の処理を開始すると、ＩＤＬ定義２を解析するＩＤＬ定義解析手順の処理を実行する（ステップＳ２００）。ステップＳ２００において、ＩＤＬコンパイル装置５は、ファイル等からＩＤＬ定義２を読み込み、読み込んだＩＤＬ定義２に基づいて、ＩＤＬ定義２で定義されたＩＤＬ型がもつ要素やオペレーション、引数等の解析を行い、ＩＤＬ定義解析情報５２を生成する。
【００４０】
また、ＩＤＬコンパイル装置５は、スケジュール情報６を解析するスケジュール解析手順の処理を実行する（ステップＳ３００）。ステップＳ３００において、ＩＤＬコンパイル装置５は、外部（例えば、ＣＤ−ＲＯＭ等の記憶媒体や、ネットワークを介して接続されたコンピュータ）から読み込んだスケジュール情報６に基づいて、バス性能情報及びリアルタイム通信情報の解析を行う。そして、ＩＤＬコンパイル装置５は、通信基盤毎の帯域の割り当てを計算し、スケジュール解析情報５４を生成する。
【００４１】
また、ＩＤＬコンパイル装置５は、各種リアルタイムコードを生成するリアルタイムコード生成手順の処理を実行する（ステップＳ４００）。ステップＳ４００において、ＩＤＬコンパイル装置５は、ＩＤＬ定義解析情報５２及びスケジュール解析情報５４に基づいて、個々のコンポーネント１０１，１０２用のリアルタイムスタブ、リアルタイムスケルトン及びスケジューリングモジュールを生成する。
【００４２】
図８は、ステップＳ２００のＩＤＬ定義解析手順の処理の一例を示す流れ図である。ステップＳ２００のＩＤＬ定義解析手順において、ＩＤＬコンパイル装置５のＩＤＬ定義解析装置５１は、ファイル等に保存されているＩＤＬ定義２を読み込む（ステップＳ２０１）。
【００４３】
また、ＩＤＬ定義解析装置５１は、読み込んだＩＤＬ定義２で定義されているＩＤＬ型がどのような要素やオペレーション、引数をもつかを解析する（ステップＳ２０２）。また、ＩＤＬ定義解析装置５１は、ＩＤＬ定義解析情報５２を生成し、生成したＩＤＬ定義解析情報５２に解析結果を書き込んで加える。
【００４４】
また、ＩＤＬ定義解析装置５１は、ＩＤＬ定義２で定義されている全てのＩＤＬ型の解析を終了したか否かを判断する（ステップＳ２０３）。全てのＩＤＬ型の解析を終了していない（ＩＤＬ定義２に含まれるＩＤＬ型の定義で未解析のものがある）と判断した場合、ＩＤＬ定義解析装置５１は、ステップＳ２０２に戻り、未解析のＩＤＬ型の解析を行う。そして、ＩＤＬ定義解析装置５１は、ＩＤＬ定義解析情報５２に解析結果を書き込んで加える。
【００４５】
ステップＳ２０３で全てのＩＤＬ型の解析を終了した（未解析のＩＤＬ型がない）と判断した場合、ＩＤＬ定義解析装置５１は、生成したＩＤＬ定義解析情報５２をリアルタイムコード生成装置５５に送信（出力）する（ステップＳ２０４）。
【００４６】
本実施の形態では、ＩＤＬ定義解析装置５１は、図５に示すＩＤＬ定義２に基づいて、アプリケーション１０が用いるＩＤＬ型が配列Ｐ１型２１、配列Ｐ２型２２、配列Ｐ３型２３、インタフェースＩ１型２４及びインタフェースＩ２型２５である旨の解析結果を含むＩＤＬ定義解析情報５２を生成する。
【００４７】
例えば、ＩＤＬ定義解析装置５１は、配列Ｐ１型２１が octet型の要素を１００個もち、配列Ｐ２型２２が octet型の要素を１０００個もち、配列Ｐ３型２３が octet型の要素を２００個もつ旨の解析結果を含むＩＤＬ定義解析情報５２を生成する。また、ＩＤＬ定義解析装置５１は、インタフェースＩ１型２４がオペレーションop1_1 及びop1_2 をもち、オペレーションop1_1 が引数として配列Ｐ１型２１の要素をもち、オペレーションop1_2 が引数として配列Ｐ３型２３の要素をもつ旨の解析結果を含むＩＤＬ定義解析情報５２を生成する。また、ＩＤＬ定義解析装置５１は、インタフェースＩ２型２５がオペレーションop2_1 をもち、オペレーションop2_1 が引数として配列Ｐ２型２２の要素をもつ旨の解析結果を含むＩＤＬ定義解析情報５２を生成する。
【００４８】
図９は、ステップＳ３００のスケジュール解析手順の処理の一例を示す流れ図である。ステップＳ３００のスケジュール解析手順において、ＩＤＬコンパイル装置５のスケジュール解析装置５３は、外部からスケジュール情報６を読み込む（ステップＳ３０１）。
【００４９】
本実施の形態では、図６に示すように、通信基盤Ｃ１１３は、１００μ秒周期で１０００バイトのデータを転送できる。また、本実施の形態では、通信基盤Ｃ１１３を介して、３種類のリアルタイム通信が行われる。本実施の形態では、図６に示すように、スケジュール解析装置５３は、リアルタイム通信ＫがコンポーネントＹ１０２からコンポーネントＸ１０１への通信である旨のリアルタイム通信情報６２を含むスケジュール情報６を読み込む。また、スケジュール解析装置５３は、リアルタイム通信Ｋが、オペレーションI1::op1_1 を用いて、１００バイトのデータを２００μ秒以内にコンポーネントＸ１０１に送られなければならない通信である旨のリアルタイム通信情報６２を含むスケジュール情報６を読み込む。
【００５０】
また、スケジュール解析装置５３は、リアルタイム通信Ｌ及びＭが、コンポーネントＹ１０２からコンポーネントＸ１０１への通信である旨のリアルタイム通信情報６３，６４を含むスケジュール情報６を読み込む。また、スケジュール解析装置５３は、リアルタイム通信Ｌ及びＭが、オペレーションI2::op2_1 を用いて、１０００バイトのデータを４００μ秒以内にコンポーネントＸ１０１に送れなければならない旨のリアルタイム通信情報６３，６４を含むスケジュール情報６を読み込む。
【００５１】
また、スケジュール解析装置５３は、読み込んだスケジュール情報６に基づいて、通信基盤Ｃ１１３に流れる通信の最小の周期を解析する（ステップＳ３０２）。そして、スケジュール解析装置５３は、スケジュール解析情報５４を生成し、解析結果をスケジュール解析情報５４に書き込んで加える。
【００５２】
本実施の形態では、図６に示すように、スケジュール情報６に含まれるバス性能情報６１から、バスの転送周期が１００μ秒であることがわかる。また、スケジュール情報６に含まれるリアルタイム通信情報６２，６３，６４から、リアルタイム通信Ｋ，Ｌ，Ｍの許容遅延時間がそれぞれ２００μ秒、４００μ秒及び４００μ秒であることがわかる。そのため、スケジュール解析装置５３は、スケジュール情報６に基づいて、０〜４００μ秒を１周期としてスケジューリングを行う。この周期を繰り返すことによって、全てのリアルタイム通信Ｋ，Ｌ，Ｍの性能要件を満たすことができる。
【００５３】
また、スケジュール解析装置５３は、個々のリアルタイム通信情報６２，６３，６４にに基づいて、各リアルタイム通信Ｋ，Ｌ，Ｍへの帯域の割り当てを決定する（ステップＳ３０３）。また、スケジュール解析装置５３は、割り当て結果（割り当てた帯域量）をスケジュール解析情報５４に書き込んで加える。また、スケジュール解析装置５３は、各リアルタイム通信Ｋ，Ｌ，Ｍを行うタイミングを示すタイミング情報をスケジュール解析情報５４に書き込んで加える。
【００５４】
スケジュール解析装置５３は、全てのリアルタイム通信について帯域の割り当てを終了したか否かを判断する（ステップＳ３０４）。全てのリアルタイム通信について帯域の割り当てを終了していない（スケジュール解析情報５４に割り当てを行っていないリアルタイム通信がある）と判断した場合、スケジュール解析装置５３は、ステップＳ３０３に戻り、未処理のリアルタイム通信について帯域の割り当てを行う。そして、スケジュール解析装置５３は、スケジュール解析情報５４に割り当て結果を書き込んで加える。
【００５５】
ステップＳ３０４で全てのリアルタイム通信について割り当てを終わったと判断すると、スケジュール解析装置５３は、生成したスケジュール解析情報５４をリアルタイムコード生成装置５５に送信（出力）する（ステップＳ３０５）。
【００５６】
図１０は、スケジュール解析装置５３が行うリアルタイム通信への帯域の割り当て結果の例を示す説明図である。本実施の形態では、図１０に示すように、スケジュール解析装置５３は、リアルタイム通信情報Ｋについて、２００μ秒以内に１００バイトのデータ伝送が必要であるので、０〜１００μ秒及び２００〜３００μ秒に帯域を１００バイトずつ割り当てる。また、スケジュール解析装置５３は、リアルタイム通信情報Ｌについて、４００μ秒以内に１０００バイトのデータ伝送が必要であるので、１００〜２００μ秒に帯域を１０００バイト割り当てる。また、スケジュール解析装置５３は、リアルタイム通信情報Ｍについて、３００〜４００μ秒に帯域を１０００バイト割り当てる。なお、図１０において、割り当てを行った帯域以外の残りは、空き帯域となる。
【００５７】
図１１は、ステップＳ４００のリアルタイムコード生成手順の処理の一例を示す流れ図である。ステップＳ４００のリアルタイムコード生成手順において、ＩＤＬコンパイル装置５のリアルタイムコード生成装置５５は、ＩＤＬ定義解析装置５１からのＩＤＬ定義解析情報５２を受信（入力）する（ステップＳ４０１）。次に、リアルタイムコード生成装置５５は、スケジュール解析装置５３からのスケジュール解析情報５４を受信（入力）する（ステップＳ４０２）。
【００５８】
また、リアルタイムコード生成装置５５は、オペレーションの実装に相当する部分以外の部分について、コード（スタブ及びスケルトンのコード）の生成を行う（ステップＳ４０３）。本実施の形態では、リアルタイムコード生成装置５５は、ステップＳ４０３において、配列Ｐ１型２１、配列Ｐ２型２２及び配列Ｐ３型２３のコードを生成する。また、リアルタイムコード生成装置５５は、インタフェースＩ１型２４、インタフェースＩ２型２５のオペレーションの実装に相当する部分以外の部分のコードを生成する。
【００５９】
また、リアルタイムコード生成装置５５は、ステップＳ４０４からステップＳ４０８までの処理を実行することによって、オペレーションの実装部分のコード生成を行う。まず、リアルタイムコード生成装置５５は、オペレーションの実装部分のうちリアルタイム通信と非リアルタイム通信との共通部分のコード（スタブ、スケルトン及びモジュールのコード）を生成する（ステップＳ４０４）。
【００６０】
また、リアルタイムコード生成装置５５は、コード生成中のオペレーションが、リアルタイム通信のオペレーションであるか非リアルタイム通信のオペレーションであるかを判定する。すなわち、リアルタイムコード生成装置５５は、リアルタイム通信を行う必要があるオペレーションであるか否かを判定する（ステップＳ４０５）。
【００６１】
リアルタイム通信を行うと判断した場合、リアルタイムコード生成装置５５は、ＩＤＬ定義解析情報５２及びスケジュール解析情報５５に基づいて、リアルタイム通信用のスタブ、スケルトン及びスケジューリングモジュールのコードを生成する（ステップＳ４０６）。
【００６２】
本実施の形態では、コンポーネントＹ１０２からコンポーネントＸ１０１への オペレーションI1::op1_1及び I2::op2_1の通信がリアルタイム通信である。そのため、リアルタイムコード生成装置５５は、それぞれオペレーションI1::op1_1及び I2::op2_1についてリアルタイム通信用のコードを生成する。例えば、リアルタイムコード生成装置５５は、各オペレーション用に割り当てられた帯域を取得又は解放するコードや、指定されたタイミングで通信基盤Ｃ１１３のバッファに書き込まれたデータを送信する旨のコードを生成し出力することになる。
【００６３】
すなわち、リアルタイムコード生成装置５５は、スケジュール解析情報５４に基づいて、コンポーネント間で行うリアルタイム通信に割り当てた通信基盤Ｃ１１３の帯域量を示すコード、及びコンポーネント間で行う各リアルタイム通信のタイミングを示すコードを含むスケジューリングモジュール９を生成する。また、リアルタイムコード生成装置５５は、スケジューリングモジュール９と連携してコンポーネント間で通信を行うためのリアルタイムスタブ７やリアルタイムスケルトン８を生成する。
【００６４】
非リアルタイム通信を行うと判断した場合、リアルタイムコード生成装置５５は、ＩＤＬ定義解析情報５２及びスケジュール解析情報５４に基づいて、非リアルタイム通信用のスタブ、スケルトン及びスケジューリングモジュールのコードを生成する（ステップＳ４０７）。
【００６５】
本実施の形態では、リアルタイムコード生成装置５５は、オペレーション I1::op2について、スケジュール情報６にリアルタイム通信の定義が存在しないので、非リアルタイム通信用コードを生成する。例えば、リアルタイムコード生成装置５５は、リアルタイム通信用に割り当てられていない空き帯域から必要な分だけの帯域を確保するためのコード等を生成し出力することになる。
【００６６】
リアルタイムコード生成装置５５は、インタフェースの全てのオペレーションについてコード生成を終了したか否かを判定する（ステップＳ４０８）。未処理のオペレーションがある（コードを生成していないオペレーションがある）と判断した場合、リアルタイムコード生成装置５５は、ステップＳ４０４に戻り、未処理のオペレーションのコードを生成する。
【００６７】
未処理のオペレーションが存在しない（全てのオペレーションについてコードを生成した）と判断した場合、リアルタイムコード生成装置５５は、未処理のコンポーネントが存在するか否か（全てのコンポーネントについて処理を終了したか否か）を判定する（ステップＳ４０９）。未処理のコンポーネントがあると判断した場合、リアルタイムコード生成装置５５は、ステップＳ４０３に戻り、未処理のコンポーネントのコード生成を行う。未処理のコンポーネントが存在しないと判断した場合、リアルタイムコード生成装置５５は、リアルタイムコード生成手順の処理を終了する。
【００６８】
情報処理システム１１は、ＩＤＬコンパイル装置５が生成した各コードデータに基づいて、コンポーネント１０１，１０２間で通信を行うことによって、各種処理を実行する。本実施の形態では、情報処理システム１１において、コンピュータＡ１１１は、ＩＤＬコンパイル装置５が生成した各コードデータ７１，８１，９１に基づいて、処理を実行する。この場合、コンピュータＡ１１１は、各コードデータ７１，８１，９１に従って、コンポーネント１０１，１０２間で行うリアルタイム通信毎に通信基盤Ｃ１１３を割り当る。そして、コンピュータＡ１１１は、割り当てた帯域を用いてコンポーネント１０１，１０２間の通信を行う。
【００６９】
同様に、コンピュータＢ１１２は、ＩＤＬコンパイル装置５が生成した各コードデータ７２，８２，９２に基づいて、処理を実行する。この場合、コンピュータＢ１１２は、各コードデータ７２，８２，９２に従って、コンポーネント１０１，１０２間で行うリアルタイム通信毎に通信基盤Ｃ１１３を割り当る。そして、コンピュータＢ１１２は、割り当てた帯域を用いてコンポーネント１０１，１０２間の通信を行う。
【００７０】
以上のように、本実施の形態によれば、ＩＤＬコンパイル装置５は、コンポーネント間のリアルタイム通信の性能要件を示すスケジュール情報６に基づいて、リアルタイム通信の性能要件を満たす帯域スケジューリングを行うためのスケジューリングモジュール９を生成する。また、ＩＤＬコンパイル装置５は、スケジューリングモジュール９と連携してリアルタイム通信を行うためのリアルタイムスタブ７やリアルタイムスケルトン８を生成する。そのため、リアルタイムスタブ７やリアルタイムスケルトン８、スケジューリングモジュール９を用いて、コンポーネント間でリアルタイム性が求められる通信を、適切な周期且つ適切なタイミングで発生させることができる。従って、アプリケーションソフトウェアのコンポーネント間のリアルタイムな通信を保証することができる。
【００７１】
また、本実施の形態によれば、通信基盤Ｃ１１３の帯域のスケジューリングによって割り当てを行うので、高い優先度の通信に対して、リアルタイム通信を保証するための帯域を常に確保しておく必要がなくなる。そのため、優先度の高いリアルタイム通信が通信基盤Ｃ１１３帯域を使用しない間には、低い優先度の通信に効率よく帯域を割り当てることができる。従って、通信基盤Ｃ１１３の帯域を有効に活用することができ、通信基盤Ｃ１１３のコストを低減することができる。
【００７２】
また、本実施の形態によれば、予めスケジュール情報６に基づいて通信基盤Ｃ１１３の帯域の割り当てを行う。そのため、アプリケーションの実行時に割り当てを行う場合と比較して、より確実にコンポーネント間のリアルタイムな通信を保証することができる。
【産業上の利用可能性】
【００７３】
本発明は、ハードウェアの制御系等のリアルタイム性の高い通信を要する通信基盤を用いたシステムに適用できる。また、大量のデータ転送が継続的に必要なマルチメディア通信の通信基盤を用いたシステムの用途にも適用できる。 
【図面の簡単な説明】
【００７４】
【図１】本発明によるＩＤＬコンパイラに従って動作するＩＤＬコンパイル装置の構成の一例を示すブロック図である。
【図２】ＩＤＬコンパイル装置を用いた情報処理システムの一例を示す説明図である。
【図３】図２に示す情報処理システムが実行するアプリケーションの構成の例を示す説明図である。
【図４】図２及び図３に示すコンポーネント間で通信を行う場合のＩＤＬコンパイル装置の具体的な構成例を示すブロック図である。
【図５】ＩＤＬ定義の例を示す説明図である。
【図６】スケジュール情報の例を示す説明図である。
【図７】ＩＤＬコンパイル装置が実行するＩＤＬコンパイル手順の処理の一例を示す流れ図である。
【図８】ＩＤＬ定義解析手順の処理の一例を示す流れ図である。
【図９】スケジュール解析手順の処理の一例を示す流れ図である。
【図１０】スケジュール解析装置が行うリアルタイム通信への帯域の割り当て結果の例を示す説明図である。
【図１１】リアルタイムコード生成手順の処理の一例を示す流れ図である。
【図１２】ＩＤＬコンパイラに従って動作するＩＤＬコンパイル装置の構成の一例を示すブロック図である。
【図１３】通信の優先度に応じて通信基盤の帯域の割り当てを行った場合の例を示す説明図である。
【符号の説明】
【００７５】
２  ＩＤＬ定義
５  ＩＤＬコンパイル装置
６  スケジュール情報
７  リアルタイムスタブ
８  リアルタイムスケルトン
９  スケジューリングモジュール
５１  ＩＤＬ定義解析装置
５２  ＩＤＬ定義解析情報
５３  スケジュール解析装置
５４  スケジュール解析情報
５５  リアルタイムコード生成装置
【図１】
2006277053.tif 000003
【図２】
2006277053.tif 000004
【図３】
2006277053.tif 000005
【図４】
2006277053.tif 000006
【図５】
2006277053.tif 000007
【図６】
2006277053.tif 000008
【図７】
2006277053.tif 000009
【図８】
2006277053.tif 000010
【図９】
2006277053.tif 000011
【図１０】
2006277053.tif 000012
【図１１】
2006277053.tif 000013
【図１２】
2006277053.tif 000014
【図１３】
2006277053.tif 000015