(57)【要約】ミドルウェアコード生成システムは、装置をネットワークに統合するためのプログラムコードを生成する。ミドルウェア統合コードを生成するために必要な情報を収納するデータベースを生成するために、様々なツールおよびユーザインタフェースが設けられている。コード生成システムは、生成されたコードに対するユーザ修正、および特にエラー処理のためのコードに対する修正を容易にするべく構成されている。好ましい実施形態において、コード生成システムは、生成された統合コードを１つのアプリケーションの中で使用する方法を明らかにするのに役立つサンプルテストアプリケーションも生成する。
2005508534.tif 000002
【特許請求の範囲】
【請求項１】
ミドルウェア仕様書に基づいてミドルウェア情報を収納するように構成された仕様書データベースと、
前記仕様書データベースに動作可能に接続され、前記ミドルウェア情報に基づいてミドルウェア統合コードを生成するように構成されたミドルウェアコード生成エンジンと、
を備えている、プログラム生成システム。
【請求項２】
１または複数のテンプレートを収納するように構成されたテンプレートデータベースを更に備え、前記ミドルウェアコード生成エンジンは、更に、前記ミドルウェア情報からのデータを使用して前記１または複数のテンプレートのインスタンスを作成することにより、前記ミドルウェア統合コードを生成するように構成されている、請求項１のプログラム生成システム。
【請求項３】
特定のリンクタイプに固有のリンク情報を収納するように構成されたプライベートリンクデータベースを更に有し、
前記リンク情報は、特定のリンクタイプによって使用されるリンク動作名と前記ミドルウェア情報内に含まれるミドルウェア動作名との間のマッピングを含み、
前記ミドルウェアコード生成エンジンは、更に、前記リンク情報に基づいて前記ミドルウェア統合コードを生成するように構成されている、請求項１のプログラム生成システム。
【請求項４】
前記ミドルウェアコード生成エンジンは、前記ミドルウェア情報に基づいて、サンプルテストアプリケーションコードを生成するように構成されている、請求項１のプログラム生成システム。
【請求項５】
前記ミドルウェアコード生成エンジンに動作可能に接続され、次の再使用のために前記ミドルウェア統合コードの少なくとも一部を記憶するように構成されているコードキャッシュを更に含んでいる、請求項１のプログラム生成システム。
【請求項６】
前記ミドルウェアコード生成エンジンは、前記ミドルウェア統合コードの少なくとも一部のユーザ修正を容易にするガイドライン情報も生成するように構成されている、請求項１のプログラム生成システム。
【請求項７】
前記ミドルウェアコード生成エンジンは、
コードモジュールを生成するように構成されたモジュールジェネレータ、
方法コードを生成するように構成された方法ジェネレータ、および
コード記述を生成するように構成されたコードセグメントジェネレータ、
のうちの少なくとも１つを含んでいる、請求項１のプログラム生成システム。
【請求項８】
前記方法ジェネレータおよび前記コードセグメントジェネレータの少なくとも一方は、方法テンプレートおよびコードセグメントテンプレートのそれぞれに基づいて、方法コードおよびコード記述を生成するように構成されている、請求項７のプログラム生成システム。
【請求項９】
前記ミドルウェア情報は、前記ミドルウェア情報に対応するネットワークを介して制御される装置の１または複数の機能に対してアプリケーションを接続するインタフェース情報を含んでいる、請求項１のプログラム生成システム。
【請求項１０】
前記仕様書データベースの生成を容易にするツールを含んでいるユーザインタフェースシステムを更に含んでいる、請求項１のプログラム生成システム。
【請求項１１】
ミドルウェア仕様書に基づいてミドルウェア情報を収納するように構成された仕様書データベースにアクセスし、
前記ミドルウェア情報に基づいてミドルウェア統合コードを生成する、プログラム生成方法。
【請求項１２】
１または複数のテンプレートを収納するように構成されたテンプレートデータベースにアクセスすることを更に含み、および
前記ミドルウェア統合コードの生成は、前記ミドルウェア情報からのデータを使用して、前記１または複数のテンプレートのインスタンスを作成することを更に含んでいる、請求項１１の方法。
【請求項１３】
特定のリンクタイプに固有のリンク情報を収納するように構成されたプライベートリンクデータベースにアクセスすることを更に含み、
前記リンク情報は、特定のリンクタイプによって使用されるリンク動作名と前記ミドルウェア情報内に含まれるミドルウェア動作名との間のマッピングを含み、および
前記ミドルウェア統合コードの生成は、前記リンク情報に基づいて前記ミドルウェア統合コードを生成することを更に含んでいる、請求項１１の方法。
【請求項１４】
前記ミドルウェア情報に基づいて、サンプルテストアプリケーションコードを生成することを更に含んでいる、請求項１１の方法。
【請求項１５】
次の再使用のために前記ミドルウェア統合コードの少なくとも一部を記憶することを更に含んでいる、請求項１１の方法。
【請求項１６】
前記ミドルウェア統合コードの少なくとも一部のユーザ修正を容易にするガイドライン情報を与えることを更に含んでいる、請求項１１の方法。
【請求項１７】
前記ミドルウェア統合コードの生成は、
コードモジュールを生成し、
方法コードを生成し、および
コード記述を生成する、
ことを含んでいる、請求項１１の方法。
【請求項１８】
前記方法コードおよび前記コード記述のうちの少なくとも一方の生成は、対応する方法テンプレートおよびコードセグメントテンプレートにそれぞれアクセスすることを含む、請求項１７の方法。
【請求項１９】
前記ミドルウェア情報に対応するネットワークを介して制御される装置の１または複数の機能に対してアプリケーションを接続するインタフェース情報を与えることを更に含む、請求項１１の方法。
【請求項２０】
前記仕様書データベースの作成を容易にするツールを与えることを更に含む、請求項１の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子ネットワークおよび家庭用電化製品の分野に関し、特に、ミドルウェアフレームワーク、例えばホームオートメーションネットワークのためのミドルウェアフレームワークに装置を統合するためのプログラムコードの生成に関する。
【背景技術】
【０００２】
ＤＴＶ、Ｄ−ＶＨＳ、電話、オーディオプレイヤー、更にはビデオカメラ等のデジタル電子装置は、益々普及しており、一般にネットワーク化された環境を介したこれらの装置の制御および管理を容易にするために、協会が形成されてミドルウェアが規定された。ＨＡＶｉ、ジニー、およびＵＰｎＰは、そのような成果の幾つかの例である。一般に理解されている「ミドルウェア」は、ネットワーク上の装置に関連付けられた識別、認証、セキュリティ、制御等のサービスを提供するアプリケーションとネットワークとの間のソフトウェアの層である。
【０００３】
装置をミドルウェアフレームワークに統合するためにソフトウェアを書き込むことは、取るに足らない仕事（タスク）である。デジタル装置は、主な機能のためのソフトウェアの他に、ミドルウェアによって必要とされる機能を実行し且つ他の装置および／またはソフトウェアによりネットワークを介してアクセス可能および制御可能な装置の能力を生成するソフトウェアも含んでいなければならない。
【０００４】
複数のミドルウェアの存在は、問題を増幅させる。装置をそのようなミドルウェアに統合するためのテンプレートの提供を装置の製造メーカが求められる場合には、製造メーカは、様々なテンプレートと、適切なテンプレートが使用されるようにする適切なスキームとを提供する必要がある。同様に、それぞれ異なるミドルウェアを有する複数のネットワークをユーザの環境が含んでいる場合、ユーザは、これらのネットワークのそれぞれのミドルウェア要件およびプログラミング言語を覚えなければならない。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明の目的は、装置をネットワークに接続するために必要なプログラムコードの生成を容易にする方法およびシステムを提供することである。本発明の更なる目的は、ネットワーク上での装置の制御を容易にするために必要なコードを提供することである。
【課題を解決するための手段】
【０００６】
これらの目的および他の目的は、装置をネットワークに統合するためのプログラムコードを生成するミドルウェアコード生成システムを提供することによって達成される。ミドルウェア統合コードを生成するために必要な情報を収納するデータベースをユーザが生成できる様々なツールおよびユーザインタフェースが設けられている。好ましい実施形態において、コード生成システムは、生成されたコードに対するユーザ修正および特にエラー処理のためのコードに対する修正を容易にするべく構成されている。好ましい実施形態において、コード生成システムは、生成された統合コードを１つのアプリケーションの中で使用する方法を明らかにするのに役立つサンプルテストアプリケーションも生成する。また、好ましい実施形態において、コード生成システムは、メイクファイル（Ｍａｋｅｆｉｌｅｓ）等のコンパイル機能も生成する。
【０００７】
添付図面を参照しながら、単なる一例として、本発明を更に詳細に説明する。
【０００８】
図面の全体にわたって、同じ参照符号は、類似する或いは対応する特徴または機能を示している。
【発明を実施するための最良の形態】
【０００９】
図１は、本発明に係るミドルウェアコード生成システム１００の一実施例のブロック図を示している。コード生成システム１００は、ソフトウェアツール１１０と、データベース１２０、１２５、１３０、１３５と、装置ミドルウェアおよび統合コードを含むコード生成エンジン１５０とを備えている。コード生成システムは、電子装置をＨＡＶｉネットワーク等のミドルウェアフレームワークに統合するソフトウェアを自動的に生成できるように構成されている。ソフトウェアツール１１０は、統合コード１８０のモジュールを生成するためにコード生成エンジン１５０によって要求される情報１２０〜１３５を提供するために使用されるユーザインタフェースを提供する。また、インタフェース装置１１０は、コード生成プロセスを制御するとともに、生成されたコードを修正して更新するために使用される。情報１２０〜１３５は、データベースの組み合わせとして組織化されて示されている。この場合、用語「データベース」は、コードを生成するために構造化される情報を収容する論理データ記憶装置を意味するために使用されている。情報１２０〜１３５は、仕様書データベース１２０と、スタック情報データベース１２５と、テンプレートデータベース１３０と、プライベートリンクデータベース１３５とを含んでいる。正確なデータベースを使用できるが、インコアデータ構造およびファイルを使用しても良い。
【００１０】
操作時、システム１００のユーザは、コード１８０が生成される装置の特徴および機能について知っている。一般的なコード生成プロセスにおいて、ユーザは、ソフトウェアツール１１０を使用して、コード１８０が生成される装置のタイプと、装置と通信するために使用されるプライベートリンクのタイプとを示す。例えば、ユーザは、装置がＶＣＲであり且つ装置がサブユニットとしてチューナとテープレコーダとテーププレーヤーとを含んでいる点に注目しても良い。また、ソフトウェアツール１１０により、ユーザは、ミドルウェア仕様書によってまだ網羅されていない装置の特徴を特定することができる。好ましい実施形態において、コード生成システム１５０は、装置のために統合コードモジュール１８０およびサンプルテストアプリケーション１８５を生成する。統合コード１８０は、装置をミドルウェア環境に統合するために設けられる。テストアプリケーションは、アプリケーション内での統合コード１８０の使用方法を示すために設けられる。また、コード生成エンジン１５０は、ユーザ修正が推奨される生成されたコード１８０の部分にインデックスを与えるライン番号およびファイル名等のポインタのリストを生成する。修正情報は、ユーザ修正のためのガイド１４５の形態で与えられることが好ましく、また、これらの修正は、ユーザがミドルウェアの知識を必要としないように規定されることが好ましい。一般に、提案される修正１４５は、エラー処理コードを含んでいる。また、コード１８０を修正する理由および方法をユーザに示すため、コード１８０中にはコメントが添えられる。好ましい実施形態において、ソフトウェアツール１１０は、コード１８０中のコードセグメントを１つずつユーザに示すために、インタフェースを提供するとともに、修正プロセスを通じてユーザを案内する。好ましい実施形態において、コード生成システム１００は、生成されたコードのためにメイクファイル（Ｍａｋｅｆｉｌｅｓ）等のコンパイルユーティリティを生成するように構成されている。
【００１１】
コード生成プロセスは、主に、ミドルフェア仕様書によって起動される。例えば、ＨＡＶｉビデオカセットレコーダ（ＶＣＲ）機能制御モジュール（ＦＣＭ）におけるコード生成は、HAVi VCR FCM仕様書によって起動される。これを達成するため、ミドルウェア仕様書中の関連する情報は、コード生成のために簡易に使用できる形式（１２０）に変換される。また、ソフトウェアツール１１０は、仕様書データベースへの仕様書の変換を支援する。これらのツール１１０を使用して、変換は、以下の２つのステップにより行なわれる。
【００１２】
ステップ１：ユーザガイド付きの自動変換。ソフトウェアツール１１０は、仕様書本文の構文に基づいて仕様書中の情報を仕様書データベース１２０に自動的に変換する構文解析ツールおよびフォーマッタを含んでいる。このステップは、必要な情報の主要部分を形成する。ソフトウェアツールにより、ユーザは、ビジネスに関連する仕様書の部分だけを選択することができる。例えば、会社がＶＣＲおよびカメラだけを製造している場合には、ＶＣＲおよびカメラに関連する仕様書の部分に関する情報だけが使用される。
【００１３】
ステップ２：ユーザ増大仕様書。意味情報が仕様書中で正式に規定されている場合、例えば、ＵＰｎＰの場合、その情報は、抽出されて明細書データベース１２０内に保持される。しかしながら、ＨＡＶｉの場合のように意味情報が仕様書中に正式に表わされていない場合には、ソフトウェアツール１１０により、ユーザは、仕様書によって規定された意味に基づいて、仕様書データベース１２０を増やすことができる。意味情報は、一般に、装置に関する知識および装置の仕様書に対する理解によってもたらされる。例えば、プレイコマンドがＶＣＲの搬送モードをバリュープレイに変更すると、この変更によってイベントがトリガされる。ユーザは、ツールを使用して、ミドルウェア仕様書およびプライベートリンク情報によって網羅されない特徴を特定することができる。例えば、カメラがＧＰＳ能力を有している場合、この能力は、これをミドルウェアにエクスポートするべく適当なコードを生成するために仕様書データベースに加えられる必要がある。ＨＡＶｉの場合、この能力は、カメラ装置のＦＣＭとしてモデル化することができる。また、ユーザは、ツールを使用して、テンプレート１３０を修正し、更なるコード構成に影響を与えることができる。
【００１４】
以下の説明において、用語「モジュール」および「方法（機能）」は、プログラミング言語で規定されている標準的な定義に従う。当分野で知られているように、様々なプログラミング言語は、一群の動作において様々な専門用語を使用する。すなわち、例えば、Java（登録商標）等のオブジェクト指向言語は「方法（method）」を使用する。Ｃ、パスカル（Pascal）、フォートラン（Fortran）等の手続き型言語は、「手続き（procedure）」、「サブルーチン」、「機能（function）」を使用する。参照を容易にするため、以下、「方法」のこのプログラミング解釈を区別するために、用語「方法（機能）」を使用する。この出願において、用語「コードセグメント」は、１または複数の連続する一連のプログラム文を示すために使用される。
【００１５】
ターゲットコード１８０（生成されるコード）のアーキテクチャおよびコーディングスタイルは、コード生成アルゴリズムを簡略化するように設計される。ターゲットコードモジュール１８０は、少数のグループに分類できるように設計され、１つのグループ内のモジュールの構造は、同様のパターンに従う。製造メーカの名前、装置のタイプやモデル等といったパラメータを使用して、所望のコードモジュールを関連性が無いモジュールから区別することができる。例えば、ユーザは、「フィリップスによって製造されたＶＣＲモデルｘｙｚ」を使用して、生成されるコードモジュールを特定することができる。コードのタイプ（例えば、ＦＣＭまたはＤＣＭ）および使用されるプロトコルのタイプ等といったパラメータを使用して、所望のモジュールを更に選択することができる。例えば、ユーザは、そのプライベートリンクとして１３９４にわたってＡＶ／Ｃプロトコルを使用するＶＣＲ用のＦＣＭジェネレータを選択しても良い。同様に、１つのモジュール内のコードセグメントおよび方法（機能）は、複数のグループに分割することもでき、また、１つのグループ内のセグメントおよび方法（機能）はそれぞれ、同様のパターンに従う。後述するように、ターゲットコード１８０の前述した構成により、コード生成エンジン１５０内のコードジェネレータ（図２の２５２、２５４、および２５６）およびテンプレート１３０を使用して、ターゲットコード１８０アーキテクチャをエンコードすることができる。同様のコードモジュールから成る１つのグループの骨組みは、モジュールジェネレータ２５４内に封入されることが好ましい。モジュールジェネレータ２５４は、コードモジュ−ル２８４を生成する。クライアント＿モジュール＿ジェネレータおよびサーバ＿モジュール＿ジェネレータは、モジュールジェネレータの一例であり、また、ジャバ・クラス・モジュールは、コードモジュールの一例である。同様の方法（機能）から成る１つのグループの骨組みは、方法ジェネレータ２５２内に封入される。方法ジェネレータ２５２は方法２８２を形成する。クライアント＿非同期＿方法ジェネレータおよびサーバ＿オペレーション＿方法＿ジェネレータは、方法ジェネレータの一例である。同様のコードセグメントから成る１つのグループの骨組みは、コードセグメントジェネレータ２５６内に封入される。コードセグメントの例は、警告セグメントであり、セグメント、エラー処理セグメント等を含んでいる。図２の各テンプレート２１０、２２０、すなわち、方法テンプレート２１０およびコードセグメントテンプレート２２０は、差にタグを付ける。コードセグメントジェネレータ２５６は、差を解いて、一連の連続する文２８６を生成する。アーギュメント＿リスト＿ジェネレータおよびインクルード＿ブロック＿ジェネレータは、セグメントジェネレータの一例である。
【００１６】
文から成る１つのグループのパターンおよび簡単な方法（機能）から成る１つのグループのパターンは、テンプレート１３０内に封入される。テンプレート１３０は、「Ｃ」等の選択されたプログラミング言語に従ってコードセグメントの固定部分と可変部分とを備えている。テンプレート１３０をコード１８０の有効なコードセグメントに変えるため、テンプレートの可変部分は、コード生成時に解かれる。コードセグメントジェネレータは、一般に、１または複数のテンプレートを含んでいる。テンプレート変数を解くことにより方法（機能）のコードを生成することができる場合には、これらのテンプレートを使用して、簡単な方法（機能）を示すことができる。
【００１７】
以下の説明において、用語ツリー（tree）、サブツリー（sub-tree）、ノード、リーフ（leaf）、ペアレント（parent）、チャイルド（child）は、コンピュータサイエンスで使用される標準的な定義に従う。コード生成エンジン１５０は、コード生成ノードのツリーを行き来することによりコードを生成するように構成されていることが好ましい。一般にツリーの根元は、ＦＣＭサーバプログラムやＦＣＭクライアントプログラム等のスタンドアロンプログラムのために生成される全てのモジュールを示している。根元の複数のチャイルドは、プログラムによって要求されるコードモジュールのためのモジュールジェネレータである。モジュールジェネレータノードは、モジュールの構成要素を生成するサブツリーの根元であり、サブツリーのノードは、方法ジェネレータおよびコードセグメントジェネレータである。同様に、方法ジェネレータを示すノードは、方法の構造を捕らえるサブツリーの根元であり、サブツリーのノードは、他の方法ジェネレータおよびコードセグメントジェネレータである。プログラムツリーのリーフは、コードセグメントジェネレータを備えている。コード生成プロセスを終了するため、サブツリーの根元は、同じサブツリーの任意のノードとして現われない。例えば、モジュールジェネレータは、それ自身のサブツリーの根元でないノードとして現われず、また、方法ジェネレータは、それ自身のサブツリーの内部ノードとして現われない。
【００１８】
前述したように、ターゲットコード１８０は、コードジェネレータ２５２、２５４、および２５６によって生成される。全てのコードジェネレータは、ターゲットコード１８０の特定の部分、例えばモジュール、機能、または、コ−ドセグメントを生成する方法についての知識を有している。コード生成プロセス中、ジェネレータ２５２、２５４、または２５６は、装置のタイプ、モデル、製造メーカ等のユーザ入力を使用して、データベース１２０、１２５、１３５から情報を見つけるとともに、その情報を使用して、その責任においてコードの一部を生成する。ジェネレータは、テンプレート１３０に出くわすと、データベース１２０、１２５、１３５からの知識を使用してテンプレート１３０の可変部分を解くとともに、テンプレート１３０を所望のコードに変更する。ペアレントコードジェネレータがツリーを行き来している間にチャイルドコードジェネレータに出くわすと、ペアレントジェネレータは、チャイルドジェネレータを呼び出して、それ自身のコード生成を続ける前に、コードの対応する部分を生成する。例えば、モジュールジェネレータは、方法ジェネレータに出くわすと、方法ジェネレータを呼び出して、所望の方法を生成する。方法が生成された後、ペアレントモジュールジェネレータは、その作業を再開する。同様に、方法ジェネレータは、チャイルド方法ジェネレータまたはチャイルドコードセグメントジェネレータに出くわすと、チャイルドコードジェネレータを呼び出し、チャイルドジェネレータの終了後においてのみ、それ自身の作業を再開する。
【００１９】
図１に示される本発明の好ましい実施形態において、コードキャッシュ１５５は、生成されたモジュールおよび方法（機能）を今後のコード生成のためにユーザが保存できるように設けられている。キャッシュ１５５は、コードを指すポインタ（例えばファイル名）と、コードが生成された状態とを含んでいる。そのような状態は、全てのデータベースのバージョン情報と、ユーザインタフェースを通じて入力されたユーザ仕様書とを含んでいる。コードキャッシュ１５５を使用する一般的なシナリオは、ユーザが装置仕様書１２０の一部を修正する場合、例えば、新たな特徴を加えてコードを再生成したいと考える場合である。本発明の好ましい実施形態におけるコード生成エンジン１５０は、影響された部分のためだけに新たなコード１８０を再生成するとともに、影響されていない部分のためにキャッシュ１５５内のコードを使用するように構成されている。
【００２０】
図１のスタック情報データベース１２５は、コード生成のために必要なミドルウェアスタック実施情報を含んでいる。また、データベース１２５は、スタック実施のバージョンのトラックを維持する。データベース１２５内の情報の主要部分は、スタック内に表わされたユーザ定義のタイプおよび宣言を含むファイル名である。この情報は、インクルードファイルを生成するために使用される。
【００２１】
図１のテンプレートデータベース１３０は、コード生成エンジン１５０によって使用される全てのテンプレートを含んでいる。データベース１３０の好ましい実施形態は、所定のディレクトリの下で、各テンプレートをファイルとして保存する。テンプレートの名前は、このテンプレートを使用できるコード生成場所を明示している。また、データベース１３０は、テンプレートのバージョンのトラックを維持する。
【００２２】
図１の新コード情報データベース１４０は、コード生成システムによって生成されたコードに関する情報を含んでいる。例えば、データベース１４０は、生成されたコード中に示されたユーザ定義のタイプおよび宣言を含むファイル名である。この情報は、インクルードファイルを生成するために使用される。
【００２３】
図１の仕様書データベース１２０は、装置ミドルウェア統合コード１８０を生成するために、ミドルウェア仕様書の構文情報および意味情報を、コード生成エンジン１５０によって有効に使用できる形態でエンコードする。また、仕様書デーダベース１２０は、バージョン情報を保持する。データベース１２０のバージョンは、一般に、対応するミドルウェア仕様書のバージョンと一致する。しかしながら、ユーザが新しい特徴をサポートするためにデータベース１２０を修正する場合、データベース１２０は、そのオリジナルバージョン番号に拡張子が与えられる。バージョン情報は、コードキャッシュ１５５から適切なコードを選択するために使用される。
【００２４】
データベース１２０は、特定のタイプの装置に固有の統合コード１８０の部分を生成するために必要な情報を提供する。例えば、ＨＡＶｉの実施形態において、データベース１２０は、装置制御モジュール（ＤＣＭ）および機能制御モジュール（ＦＣＭ）のための統合コードを生成するために必要な情報を含んでいる。
【００２５】
図３〜図７は、各ＦＣＭタイプ毎に維持される情報の実施例を示している。この実施例において、情報は、ツリーとして組織化される。
【００２６】
図３は、本発明に係るミドルウェアコード生成エンジン１５０によって使用できる機能制御モジュール（ＦＣＭ）データベース３１０の上位３レベルのブロック図の一例を示している。２番目のレベルは、一般ＦＣＭ仕様書ノード３２２と、ＶＣＲ３２４やチューナ３２６等のＦＣＭタイプによって見出しが付けられた仕様書情報ノードとを含んでいる。一般ＦＣＭ仕様書３２２は、全てのＦＣＭに適用可能な情報を含んでおり、また、他の仕様書は、特定のタイプの装置だけに対して適用される。３番目のレベルは、２番目のレベルのペアレントノードによって維持された情報のタイプを示している。例えば、図３に示されるように、ＶＣＲノード３２４の場合、３番目のレベルは、データ構造３３１、アプリケーションプログラムインタフェース（ＡＰＩ）３３２、イベント３３３、および通知属性３３４のノードを含んでいる。また、３番目のレベルは、このＦＣＭタイプ３２４と相互に作用するＨＡＶｉマネージャ（例えば、リソースマネージャ、ストリームマネージャ等）を記録するインターアクト・ウィズ・ノード（interact with node）３３５を含んでいる。モジュールキャッシュノード３３６は、ユーザによって保存されたモジュールコード２８４のバージョンのトラックを維持するとともに、コードモジュールが生成された状態を記録する。これにより、所定の生成状態と一致するコードを検索することができる。状態は、最新のユーザ修正の時間と、コードの生成で使用されるテンプレートおよび全てのデータベースのバージョンとを含んでいる。
【００２７】
ＨＡＶｉの場合、ＤＣＭは、１または複数のＦＣＭを備えている。本発明によると、ルート（根元）ノードＤＣＭ（図示せず）下の構造は、通知属性ノード３３４がＦＣＭノード（図示せず）に取って代えられている点を除き、図３のＦＣＭ３１０下の構造と同様である。ＦＣＭセクションは、装置制御モジュール（特定の機能を有する装置に対応する）内に含まれる機能制御モジュール（例えば、レコーダ、プレイヤー、チューナ）のトラックを維持する。
【００２８】
図４は、本発明に係る図１のミドルウェアコード生成エンジン１５０によって使用できる、図３のデータ構造データベース３３１内のデータ構造エントリ３３１'のブロック図の一例である。参照を容易にするため、同じ参照符号を有するデータ項目の一例を示すべく参照番号の後にプライム符号（'）が使用されている。データ構造３３１'は、特定のＦＣＭタイプ、例えばＶＣＲタイプのために規定されたデータ構造を記録する。図４は、ＦＣＭタイプに固有の宣言文およびインクルードファイルを生成するために使用され且つデータの有効性をチェックするコード１８５を生成するために使用される各データ構造における情報４１１〜４２４を示している。各データ構造３３１'は、関連データタイプ４１１および識別名４１２を有している。また、好ましい実施形態において、データ構造３３１'は、特定の特性４１８を有するとともに、随意的に所定のセットの法定価値４１６を有するように特徴付けられている。各データ構造３３１'は、１または複数の部分４１４を含んでおり、各部分は、所定のタイプ４２２および識別名４２４を有している。
【００２９】
ミドルウェアがＦＣＭを制御することができるように、ＦＣＭコードは、サービスをミドルウェアにエクスポートする。例えば、VCR FCMは、サービスである再生、記録、巻き戻し等をミドルウェアにエクスポートする。全てのサービスをエクスポートするため、ＡＰＩはミドルウェア仕様書によって規定される。また、仕様書データベース１２０は、コード生成のために、このＡＰＩを記録する。図５は、本発明に係る図１のミドルウェアコード生成エンジン１５０によって使用できる、図３のＡＰＩブロック３３２に対応するサービスＡＰＩエントリ３３２'のブロック図の一例を示している。図５は、各サービスＡＰＩ３３２'のために維持される情報５１１〜５２４の一例を示している。この情報は、様々なモジュールにおけるサービスに関連する方法（機能）を生成するために使用される。例えば、ＶＣＲ  ＦＣＭモジュールは、方法（機能）である「再生」、「記録」、「巻き戻し」、「早送り」等を含んでいる。
【００３０】
プロバイダエントリ５１１は、このサービスがサーバまたはクライアントによって与えられるべきか否かを示す。
【００３１】
リターンタイプエントリ５１２は、サービス（すなわち、サービスをエクスポートする方法）３３２'によって戻される項目のデータタイプを示す。
【００３２】
ネームエントリ５１３は、サービス３３２'の名前、例えば、再生、記録、または、早送り等を記録する。
【００３３】
アーギュメントエントリ５１４は、サービス３３２'に送られ或はサービス３３２'から戻されるべきパラメータを記録する。Ｉｎ／Ｏｕｔエントリ５２２は、パラメータが読み出し専用（入力）、書き込み専用（出力）、あるいは、読み出し・書き込み（入力および出力の両方）であるかどうかを示し、また、データ構造エントリ５２４は、各アーギュメントの構造を示す。
【００３４】
特性エントリ５１５は、サービスに関する情報、例えば、プライベートリンクを介してサービスが物理的な装置との通信を必要としているか否かの情報を記録するとともに、プライベートリンクへのインタフェースコード１８０（図１）を生成するために使用される。
【００３５】
副作用エントリ５１６は、その値がＡＰＩ３３２'の起動（仮に存在するとすれば）によって変化するデータ構造３２６を示している。また、副作用エントリ５１６は、変化後の各データ構造の新たな値を記録する。一般に、これらのデータ構造は、図３のＦＣＭ３１０の前述したデータ構造エントリ３３１'のサブセットである。副作用エントリ５１６の情報は、生成されたコード１８０内で通知コードを生成するために使用される。
【００３６】
例外エントリ５１７は、このサービスに関連するエラー状態および例外を示す。例外およびエラーを扱うためにデフォルトコードを生成することができるが、本発明の好ましい実施形態におけるコード生成システム１００は、前述したように、これらのコードセクションをユーザが修正することを推奨する。
【００３７】
有効呼び出し側エントリ５１８は、このＡＰＩ３３２'を呼び出すことができる有効なソフトウェア要素タイプを示しており、呼び出し側の同一性のチェックを必要とするコード１８０を生成するために使用される。
【００３８】
方法キャッシュエントリ５１９は、サービス３３２'のためにユーザが保存した方法（機能）のトラックを維持する。また、修正時間およびバージョン情報に加えて、方法キャッシュエントリ５１９は、方法（機能）が属する方法タイプも記録する。
【００３９】
図６は、本発明に係る図１のミドルウェアコード生成エンジン１５０によって使用できる、図３のイベントエントリ３３３のイベント３３３'のブロック図の一例を示している。イベントエントリ３３３'は、図３のＦＣＭタイプ３１０が含まれるべきイベントを記録する。図６は、各イベント３３３'毎に維持される情報を示している。この情報は、イベントに関連する方法（機能）およびコードセグメントを生成するために使用される。図６の各ノード６１２、６１３、６１４、６１９、６２２、６２４の意味は、図５の各ノード５１２、５１３、５１４、５１９、５２２、および５２４の意味と同じ意味、すなわち、リターンタイプ、ネーム、アーギュメント、Ｉｎ／Ｏｕｔ、データ構造、方法キャッシュである。
【００４０】
図７は、本発明に係る図１のミドルウェアコード生成エンジン１５０によって使用できる、図３の通知属性エントリ３３４の通知属性３３４'のブロック図の一例を示している。通知属性３３４'は、属性が値を変える時に通知を送るため、ＦＣＭをトリガする属性を記録する。データ構造７２４およびＩｎ／Ｏｕｔ７２２のエントリは、エントリ５２４、５２２に関して前述したように属性を規定する。通知属性情報３３４は、図２の通知に関連する方法（機能）２８２およびコード２８４のセグメントを生成するために使用される。
【００４１】
図８は、本発明に係る図１のミドルウェアコード生成エンジン１５０によって使用できる、図１のプライベートリンクエントリ１３５のプライベートリンク１３５'のブロック図の一例を示している。プライベートリンクエントリ１３５は、コード生成に関連する製造メーカに固有の情報、具体的には、各プライベートリンクに関する情報を記録する。図８は、リンクのために維持される情報の一例を示している。動作マップ８２１は、プライベートリンクによって規定される動作の名前と、ミドルウェア仕様書によって規定される名前との間の一致を与えるとともに、ミドルウェアからのコマンドを物理的な装置に対する対応する動作に変換するコード１８０を生成するために使用される。リンク状態応答８２３は、リンクから来る応答の名前を記録するとともに、応答を扱うコード１８０を生成するために使用される。
【００４２】
図９は、本発明に係るミドルウェアコード生成エンジン１５０によって使用できるリンク状態応答エントリ８２３のリンク状態応答８２３'のブロック図の一例を示すとともに、各リンク状態応答のために維持される情報を示している。ネームエントリ９２２は、応答の名前、例えばSUCCESSまたはNOT_IMPLEMENTEDである。イベントトリガエントリ９２４は、応答を扱う部分でなければならないイベントを示している。各イベント９２４毎に維持された情報は、イベント名９３１と、トリガ操作９３２と、状態データが読み出されるべきサーバー９３３すなわちターゲットサーバと、取られるべき動作（読み出しまたは送信（ｐｏｓｔ））９３４と、イベントが送信される場合のパラメータ値９３５とを含んでいる。方法キャッシュエントリ９２６は、各リンク状態応答８３２'のためにユーザが保存した方法（機能）を把握する。
【００４３】
図１０は、一例としてＨＡＶｉの単純な図を使用した、本発明に係るミドルウェアコード生成システム１００で生成されるコード１８０、１８５のインストレーションのブロック図１０００の一例を示している。２つのＨＡＶｉノード１０１０、１０２０に対して接続する１３９４スタック１０４０を有するＩＥＥＥ−１３９４インタフェースを介して、その装置主機能１０５２を制御できるように構成された装置１０５０が図示されている。ＨＡＶｉノード１０１０、１０２０は、ＨＡＶｉソフトウェア要素１０１２とＨＡＶｉメッセージングシステム１０３０と１３９４スタック１０４０とを含むソフトウェアコンテナである。この実施例では、テストアプリケーション１８５がノード１０１０上に設けられ、装置ＦＣＭがノード１０２０上に設けられているとする。この実施例におけるノード１０１０上のアプリケーション１８５は、ノード１０１０上のＦＣＭクライアントコード１８０ａを介して、ノード１０１０上のＦＣＭサーバコード１８０ｂと相互に作用する。アプリケーション１８５のために役割を果すＦＣＭクライアントコードは、ＨＡＶｉメッセージングシステムおよび１３９４スタックを介して、ノード１０２０上のＦＣＭサーバコードと通信する。その後、ＦＣＭサーバ１０２０は、アプリケーション１８５の制御下で、装置１０５０と相互に作用する。
【００４４】
以上の説明は、本発明の原理を単に示している。したがって、当業者であれば、ここに図示されて明確に記載されていないが、本発明の原理を具体化し、したがって、以下の請求項の思想および範囲内に入る様々な構成を考え出すことができることは言うまでもない。
【図面の簡単な説明】
【００４５】
【図１】本発明に係るミドルウェアコード生成システムの一例のブロック図を示している。
【図２】本発明に係るコード生成エンジンの一例のブロック図を示している。
【図３】ＨＡＶｉミドルウェアに対して装置を統合することを容易にする機能制御モジュール（ＦＣＭ）コードを生成する本発明に係るコード生成システムによって使用できる、ＨＡＶｉ仕様書データベースのＦＣＭ構成要素内に維持される情報の一例のブロック図を示している。
【図４】本発明に係るミドルウェアコード生成システムによって使用できる、ＦＣＭ構成要素のデータ構造の構成要素内に維持される情報の一例のブロック図を示している。
【図５】本発明に係るミドルウェアコード生成システムによって使用できる、ＦＣＭ構成要素のサービスアプリケーションプログラムインタフェース（ＡＰＩ）の構成要素内に維持される情報の一例のブロック図を示している。
【図６】本発明に係るミドルウェアコード生成システムによって使用できる、ＦＣＭ構成要素のイベント構成要素内に維持される情報の一例のブロック図を示している。
【図７】本発明に係るミドルウェアコード生成システムによって使用できる、ＦＣＭ構成要素の通知属性の構成要素内に維持される情報の一例のブロック図を示している。
【図８】本発明に係るミドルウェアコード生成システムによって使用できる、プライベートリンクデータベースのプライベートリンク構成要素内に維持される情報の一例のブロック図を示している。
【図９】本発明に係るミドルウェアコード生成システムによって使用できる、特定のリンクタイプのリンク状態応答の構成要素内に維持される情報の一例のブロック図を示している。
【図１０】本発明に係るミドルウェアコード生成システムで生成されるコードのインストレーションの一例のブロック図を示している。
【図１】
2005508534.tif 000003
【図２】
2005508534.tif 000004
【図３】
2005508534.tif 000005
【図４】
2005508534.tif 000006
【図５】
2005508534.tif 000007
【図６】
2005508534.tif 000008
【図７】
2005508534.tif 000009
【図８】
2005508534.tif 000010
【図９】
2005508534.tif 000011
【図１０】
2005508534.tif 000012
【国際公開パンフレット】
2005508534.tif 000013
2005508534.tif 000014
2005508534.tif 000015
2005508534.tif 000016
2005508534.tif 000017
2005508534.tif 000018
2005508534.tif 000019
2005508534.tif 000020
2005508534.tif 000021
2005508534.tif 000022
2005508534.tif 000023
2005508534.tif 000024
2005508534.tif 000025
2005508534.tif 000026
2005508534.tif 000027
2005508534.tif 000028
2005508534.tif 000029
2005508534.tif 000030
2005508534.tif 000031
2005508534.tif 000032
2005508534.tif 000033