(57)【要約】  【課題】  ソフトウェアコンポーネント間の整合を図ることが可能な情報処理システム及びソフトウェアコンポーネント実行方法を提供する。  【解決手段】  ＭＦシステム１００は、情報処理に関するサービスを実現する複数のソフトウェアコンポーネントを実装するものであって、ソフトウェアコンポーネント間の関係を規定する基本コンポーネントスペックと、該基本コンポーネントスペックを拡張した拡張コンポーネントスペックとを保持し、拡張コンポーネントスペックを実装するソフトウェアコンポーネントを、基本コンポーネントスペック及び拡張コンポーネントスペックのいずれかを実装するソフトウェアコンポーネントとして実行する。【選択図】  図１
2006092238.tif 000002
【特許請求の範囲】
【請求項１】
情報処理に関するサービスを実現する複数のソフトウェアコンポーネントを実装する情報処理システムであって、
前記ソフトウェアコンポーネント間の関係を規定する基本インタフェース情報と、該基本インタフェース情報を拡張した拡張インタフェース情報とを保持するインタフェース情報保持手段と、
前記拡張インタフェース情報を実装するソフトウェアコンポーネントを、前記基本インタフェース情報及び拡張インタフェース情報のいずれかを実装するソフトウェアコンポーネントとして実行するソフトウェアコンポーネント実行手段とを有することを特徴とする情報処理システム。
【請求項２】
前記ソフトウェアコンポーネントが実装する基本インタフェース情報又は拡張インタフェース情報に応じた能力値を保持する能力値保持手段を有し、
前記ソフトウェアコンポーネント実行手段は、前記ソフトウェアコンポーネントの実行に際し、該ソフトウェアコンポーネントが利用可能なソフトウェアコンポーネントが実装する基本インタフェース情報又は拡張インタフェース情報に応じた能力値を取得し、該能力値に基づいて、前記ソフトウェアコンポーネントが利用する他のソフトウェアコンポーネントを決定することを特徴とする請求項１に記載の情報処理システム。
【請求項３】
前記ソフトウェアコンポーネント実行手段は、取得した前記能力値に基づいて、前記ソフトウェアコンポーネントが利用する他のソフトウェアコンポーネントが実装する基本インタフェース情報又は拡張インタフェース情報を特定し、前記拡張インタフェース情報を実装するソフトウェアコンポーネントを、前記特定した基本インタフェース情報又は拡張インタフェース情報を実装するソフトウェアコンポーネントとして実行することを特徴とする請求項２に記載の情報処理システム。
【請求項４】
前記基本インタフェース情報は、メソッド情報を含み、前記拡張インタフェース情報は、前記基本インタフェース情報に含まれるメソッド情報と、他のメソッド情報とを含むことを特徴とする請求項１乃至３のいずれかに記載の情報処理システム。
【請求項５】
情報処理に関するサービスを実現する複数のソフトウェアコンポーネントを実装する情報処理システムにおけるソフトウェアコンポーネント実行方法であって、
前記ソフトウェアコンポーネント間の関係を規定する基本インタフェース情報を拡張した拡張インタフェース情報を実装するソフトウェアコンポーネントを、前記基本インタフェース情報及び拡張インタフェース情報のいずれかを実装するソフトウェアコンポーネントとして実行するソフトウェアコンポーネント実行ステップを有することを特徴とするソフトウェアコンポーネント実行方法。
【請求項６】
前記ソフトウェアコンポーネント実行ステップは、
前記ソフトウェアコンポーネントの実行に際し、該ソフトウェアコンポーネントが利用可能なソフトウェアコンポーネントに対応する予め保持される基本インタフェース情報又は拡張インタフェース情報に応じた能力値を取得する能力値取得ステップと、
前記能力値取得ステップにおいて取得される能力値に基づいて、前記ソフトウェアコンポーネントが利用する他のソフトウェアコンポーネントを決定するソフトウェアコンポーネント決定ステップとを有することを特徴とする請求項５に記載のソフトウェアコンポーネント実行方法。
【請求項７】
前記ソフトウェアコンポーネント実行ステップは、
前記能力値取得ステップにおいて取得された能力値に基づいて、前記ソフトウェアコンポーネントが利用する他のソフトウェアコンポーネントが実装する基本インタフェース情報又は拡張インタフェース情報を特定するインタフェース情報特定ステップを有し、
前記拡張インタフェース情報を実装するソフトウェアコンポーネントを、前記インタフェース情報特定ステップにおいて特定される基本インタフェース情報又は拡張インタフェース情報を実装するソフトウェアコンポーネントとして実行することを特徴とする請求項６に記載のソフトウェアコンポーネント実行方法。
【請求項８】
前記基本インタフェース情報は、メソッド情報を含み、前記拡張インタフェース情報は、前記基本インタフェース情報に含まれるメソッド情報と、他のメソッド情報とを含むことを特徴とする請求項５乃至７のいずれかに記載のソフトウェアコンポーネント実行方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理に関するサービスを実現する複数のソフトウェアコンポーネントを実装する情報処理システム及び当該情報処理システムにおけるソフトウェアコンポーネント実行方法に関する。
【背景技術】
【０００２】
従来から、様々なソフトウェアコンポーネントを組み合わせて情報処理を行う情報処理システム（例えば、特許文献１及び２参照）が提供されている。このような情報処理システムは、機能の追加や変更等がなされる場合に、システムの変更範囲の局所化が可能であるという利点を有する。ソフトウェアコンポーネントにより構成される情報処理システムの開発における枠組みを規定するものとしては、ＣＯＲＢＡ、ＤＣＯＭ、Ｊａｖａ（登録商標）ＲＭＩ等のコンポーネントフレームワークと称されるものが存在する。システム開発は、このコンポーネントフレームワークに従って行われる。
【特許文献１】特開２００２−４１３０９号公報
【特許文献２】特開２００２−３１８６９０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
上述したような情報処理システムでは、ソフトウェアコンポーネントが他のソフトウェアコンポーネントを利用する場合、識別子や名前のみに基づく当該他のソフトウェアコンポーネントの検索が行われる。しかしながら、このような識別子や名前のみに基づくソフトウェアコンポーネントの検索では、ソフトウェアコンポーネントがバージョンアップしたような場合に、適切な検索を行うことができずに、ソフトウェアコンポーネントと検索した他のソフトウェアコンポーネントとの整合が図れないことがある。特に、いわゆる組込み制御系の情報処理システムでは、近似するサービスを提供する複数のソフトウェアコンポーネントが存在する場合が多く、識別子や名前のみに基づくソフトウェアコンポーネントの検索では、ソフトウェアコンポーネント間の整合が図れない場合が多い。
【０００４】
本発明は、前述したような従来の問題を解決するためになされたもので、ソフトウェアコンポーネント間の整合を図ることが可能な情報処理システム及びソフトウェアコンポーネント実行方法を提供するものである。
【課題を解決するための手段】
【０００５】
本発明の情報処理システムは、情報処理に関するサービスを実現する複数のソフトウェアコンポーネントを実装するものであって、前記ソフトウェアコンポーネント間の関係を規定する基本インタフェース情報と、該基本インタフェース情報を拡張した拡張インタフェース情報とを保持するインタフェース情報保持手段と、前記拡張インタフェース情報を実装するソフトウェアコンポーネントを、前記基本インタフェース情報及び拡張インタフェース情報のいずれかを実装するソフトウェアコンポーネントとして実行するソフトウェアコンポーネント実行手段とを有する。
【０００６】
この構成により、拡張インタフェース情報を実装するソフトウェアコンポーネントは、基本インタフェース情報及び拡張インタフェース情報のいずれかを実装するソフトウェアコンポーネントとして実行される。従って、ソフトウェアコンポーネントに対応するインタフェース情報と当該ソフトウェアコンポーネントが利用する他のソフトウェアコンポーネントに対応するインタフェース情報との整合が図られ、その結果、ソフトウェアコンポーネントと当該ソフトウェアコンポーネントが利用する他のソフトウェアコンポーネントとの整合が図られる。
【０００７】
また、本発明の情報処理システムは、前記ソフトウェアコンポーネントが実装する基本インタフェース情報又は拡張インタフェース情報に応じた能力値を保持する能力値保持手段を有し、前記ソフトウェアコンポーネント実行手段が、前記ソフトウェアコンポーネントの実行に際し、該ソフトウェアコンポーネントが利用可能なソフトウェアコンポーネントが実装する基本インタフェース情報又は拡張インタフェース情報に応じた能力値を取得し、該能力値に基づいて、前記ソフトウェアコンポーネントが利用する他のソフトウェアコンポーネントを決定する。
【０００８】
この構成により、ソフトウェアコンポーネントが利用する他のソフトウェアコンポーネントを適切に決定することができる。
【０００９】
また、本発明の情報処理システムは、前記ソフトウェアコンポーネント実行手段が、取得した前記能力値に基づいて、前記ソフトウェアコンポーネントが利用する他のソフトウェアコンポーネントが実装する基本インタフェース情報又は拡張インタフェース情報を特定し、前記拡張インタフェース情報を実装するソフトウェアコンポーネントを、前記特定した基本インタフェース情報又は拡張インタフェース情報を実装するソフトウェアコンポーネントとして実行する。
【００１０】
この構成により、ソフトウェアコンポーネントの実行において、当該ソフトウェアコンポーネントが利用する他のソフトウェアコンポーネントとの整合が図られる態様での実行が可能となる。
【００１１】
また、本発明の情報処理システムは、前記基本インタフェース情報が、メソッド情報を含み、前記拡張インタフェース情報が、前記基本インタフェース情報に含まれるメソッド情報と、他のメソッド情報とを含む。
【００１２】
また、本発明のソフトウェアコンポーネント実行方法は、情報処理に関するサービスを実現する複数のソフトウェアコンポーネントを実装する情報処理システムにおけるものであって、前記ソフトウェアコンポーネント間の関係を規定する基本インタフェース情報を拡張した拡張インタフェース情報を実装するソフトウェアコンポーネントを、前記基本インタフェース情報及び拡張インタフェース情報のいずれかを実装するソフトウェアコンポーネントとして実行するソフトウェアコンポーネント実行ステップを有する。
【００１３】
また、本発明のソフトウェアコンポーネント実行方法は、前記ソフトウェアコンポーネント実行ステップが、前記ソフトウェアコンポーネントの実行に際し、該ソフトウェアコンポーネントが利用可能なソフトウェアコンポーネントに対応する予め保持される基本インタフェース情報又は拡張インタフェース情報に応じた能力値を取得する能力値取得ステップと、前記能力値取得ステップにおいて取得される能力値に基づいて、前記ソフトウェアコンポーネントが利用する他のソフトウェアコンポーネントを決定するソフトウェアコンポーネント決定ステップとを有する。
【００１４】
また、本発明のソフトウェアコンポーネント実行方法は、前記ソフトウェアコンポーネント実行ステップが、前記能力値取得ステップにおいて取得された能力値に基づいて、前記ソフトウェアコンポーネントが利用する他のソフトウェアコンポーネントが実装する基本インタフェース情報又は拡張インタフェース情報を特定するインタフェース情報特定ステップを有し、前記拡張インタフェース情報を実装するソフトウェアコンポーネントを、前記インタフェース情報特定ステップにおいて特定される基本インタフェース情報又は拡張インタフェース情報を実装するソフトウェアコンポーネントとして実行する。
【００１５】
また、本発明のソフトウェアコンポーネント実行方法は、前記基本インタフェース情報は、メソッド情報を含み、前記拡張インタフェース情報は、前記基本インタフェース情報に含まれるメソッド情報と、他のメソッド情報とを含む。
【発明の効果】
【００１６】
本発明によれば、ソフトウェアコンポーネントに対応するインタフェース情報と当該ソフトウェアコンポーネントが利用する他のソフトウェアコンポーネントに対応するインタフェース情報との整合が図られ、その結果、ソフトウェアコンポーネントと当該ソフトウェアコンポーネントが利用する他のソフトウェアコンポーネントとの整合が図られる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の実施の形態の情報処理システムについて、図面を用いて説明する。
【００１８】
図１は、本実施形態の情報処理システムとしてのマルチファンクションシステム（ＭＦシステム）の構成を示す図である。図１に示すＭＦシステム１００は、例えば、プリント機能、コピー機能、スキャナ機能等を有するいわゆるデジタル複合機であり、コントローラ１１０、主記憶装置１６０、不揮発記憶装置１７０、スキャナデバイス１８０及びＩＯＴデバイス１９０を有する。
【００１９】
これらのうち、コントローラ１１０は、複数のソフトウェアコンポーネント（以下、単に「コンポーネント」と称する）ＣＡ乃至ＣＺを有する。例えば、コンポーネントＣＹは、スキャナデバイス１８０を動作させるためのものであり、コンポーネントＣＺは、ＩＯＴデバイス１９０を動作させるためのものである。また、コントローラ１１０は、コンポーネントＣＡ乃至ＣＺをＭＦシステム１００にインストールするためのコンポーネントインストーラ１３０と、これらコンポーネントＣＡ乃至ＣＺを管理して様々な処理を行うコンポーネント管理機構１４０と、コンポーネントＣＡ乃至ＣＺ間の通信を制御するコンポーネント通信機構１５０とを有する。
【００２０】
図２は、不揮発記憶装置１７０の格納状態を示す図である。図２に示す不揮発記憶装置１７０には、コンポーネント管理情報１７２が格納されている。
【００２１】
コンポーネント管理情報１７２は、コンポーネント情報登録テーブル、コンポーネント情報テーブル、インタフェース（ＩＦ）情報テーブル、メソッド情報テーブル、能力値テーブル及び拡張ＩＦ情報テーブルにより構成される。コンポーネント情報登録テーブルは、各コンポーネントを特定するためのものであり、コンポーネント情報テーブルは、コンポーネント毎に構成され、各コンポーネントに関する情報を含む。メソッド情報テーブルは、コンポーネントが他のコンポーネントを利用する場合に必要となるインタフェース（ＩＦ）情報に含まれるメソッドへのポインタを格納する。ＩＦ情報テーブルは、コンポーネント毎に構成され、メソッド情報テーブルへのポインタを格納する。能力値テーブルは、対応するコンポーネントの能力に応じた名前（能力名）とその能力値とを対応付けて格納する。
【００２２】
また、アクセス制御部１７６は、コンポーネント管理機構１４０との間の通信の制御を行う。
【００２３】
コンポーネントが他のコンポーネントを利用する場合における、これら２つのコンポーネント間の通信では、一方のコンポーネントの実行において他方のコンポーネントを利用するためのインタフェース情報である起動用ＩＦモジュールと、他方のコンポーネントが一方のコンポーネントに対して応答するためのインタフェース情報である応答用ＩＦモジュールとが対応付けられて、一方のコンポーネントが他方のコンポーネントを利用するためのコンポーネントスペックが構成される。このコンポーネントスペックは、拡張可能である。各コンポーネントは、コンポーネントスペックを実装している。
【００２４】
図３は、コンポーネント、コンポーネントスペック及びインタフェース情報の論理的定義の一例を示す図であり、ＵＭＬ（Unified Modeling Language）で表記される例を示す。図３では、コンポーネントＣＸがコンポーネントスペックＸを実装し、コンポーネントＣＹがコンポーネントスペックＹを実装する。
【００２５】
コンポーネントスペックＸは、メソッドＡ及びＢからなるインタフェース情報ＸＸＸＩＦを含む。一方、コンポーネントスペックＹは、コンポーネントスペックＸを拡張するものであり、コンポーネントスペックＸの変更部分に相当するインタフェース情報を含む。具体的には、コンポーネントスペックＹは、コンポーネントスペックＸにおけるインタフェース情報ＸＸＸＩＦを置き換えるものであって、メソッドＡ及びＢにメソッドＣを追加するインタフェース情報ＷＷＷＩＦと、新たに追加されるインタフェース情報ＶＶＶＩＦとにより構成され、コンポーネントスペックＸよりも拡張された構成となっている。なお、図４は、図３に示すコンポーネント、コンポーネントスペック及びインタフェース情報の論理的定義を、ＸＭＬ（eXtensible Markup Language）で表記したものである。
【００２６】
図５は、上述したコンポーネント、コンポーネントスペック及びインタフェース情報の論理的定義とＭＦシステム１００において実際に動作するプログラムコードとの対応関係を示す図である。図４は、コンポーネント（クライアントコンポーネント）ＣＣの実行において他のコンポーネント（サーバコンポーネント）ＣＸ又はＣＹが利用される場合の例であり、論理的定義は図３に示すものと同様である。
【００２７】
コンポーネントＣＣが他のコンポーネントＣＸ又はＣＹを利用可能である場合、まず、これら利用可能なコンポーネントＣＸ及びＣＹの能力に基づいて、当該コンポーネントＣＸ及びＣＹの検索が行われる。ここで、コンポーネントＣＣがコンポーネントスペックＹを実装している場合には、コンポーネントスペックＸを実装しているコンポーネントＣＸが利用されるよりも、コンポーネントスペックＸを拡張するコンポーネントスペックＹを実装するコンポーネントＣＹが利用されることが好ましい。
【００２８】
従って、コンポーネントスペックＸに含まれるインタフェース情報ＸＸＸＩＦを取り出すメソッドとともに、コンポーネントＣＣが実装するコンポーネントスペックＹに含まれるＷＷＷＩＦとを取り出すメソッドが実行されて、コンポーネントＣＹのコンポーネントスペックＹ用のスタブコード（プログラムコード）が生成される。更には、コンポーネントスペックＸに含まれるインタフェース情報ＸＸＸＩＦを構成するメソッドＡ、Ｂが呼び出されて、コンポーネントＣＹのインタフェース情報ＸＸＸＩＦ用のスタブコード（プログラムコード）が生成されるとともに、コンポーネントＣＣが実装するコンポーネントスペックＹに含まれるインタフェース情報ＷＷＷＩＦを構成するメソッドＣが呼び出されて、コンポーネントＣＹのインタフェース情報ＷＷＷＩＦ用のスタブコード（プログラムコード）が生成される。
【００２９】
そして、これらコンポーネントＣＹのコンポーネントスペックＣＹ用のスタブコード、コンポーネントＣＹのインタフェース情報ＸＸＸＩＦ用のスタブコード、及び、コンポーネントＣＹのインタフェース情報ＷＷＷＩＦ用のスタブコードからコンポーネントＣＹの実装コードが生成され、コンポーネントＣＣの実装コードの実行において実行される。
【００３０】
次に、コンポーネントが他のコンポーネントを利用する場合における、当該他のコンポーネントの検索処理と、検索されたコンポーネントから適切なコンポーネントを選択して実行する処理の詳細について説明する。
【００３１】
図６は、コンポーネントの検索処理及び実行処理を示すフローチャートである。なお、以下においては、コンポーネント、コンポーネントスペック及びインタフェース情報の論理的定義が図３に示すようになされており、コンポーネントＣＣが他のコンポーネントＣＹを検索し、利用する場合について説明する。
【００３２】
まず、コンポーネントＣＣは、コンポーネント管理機構１４０に対し、コンポーネントスペックＸを実装したコンポーネントの検索を依頼する（Ｓ１０１）。コンポーネント管理機構１４０は、この検索依頼に応じて、不揮発記憶装置１７０内のコンポーネント管理情報１７２に基づいて、コンポーネントスペックＸを実装したコンポーネント（ここではコンポーネントＣＹ）を特定する。例えば、コンポーネント管理機構１４０は、各コンポーネントに対応するコンポーネント情報テーブルのコンポーネントスペックＩＤを参照し、当該コンポーネントスペックＩＤがコンポーネントスペックＸのＩＤとなっているコンポーネントを特定する。そして、コンポーネント管理機構１４０は、この特定したコンポーネントＣＹのスタブコードを生成あるいは取得してコンポーネントＣＣに返す（Ｓ１０２）。
【００３３】
次に、コンポーネントＣＣは、自身が、コンポーネントスペックＹが定義された後に開発されたものであるか否かを判定する（Ｓ１０３）。例えば、コンポーネントＣＣが、自身の開発日時の情報を含むとともに、ＭＦシステム１００が、コンポーネントスペックＹの定義日時の情報を保持し、コンポーネントＣＣは、これらコンポーネントＣＣの開発日時の情報と、コンポーネントスペックＹの定義日時の情報とを比較する。
【００３４】
コンポーネントＣＣが、コンポーネントスペックＹが定義された後に開発されたものである場合、当該コンポーネントＣＣはコンポーネントスペックＹを実装しているとみなされる。この場合、コンポーネントＣＣは、コンポーネント管理機構１４０からのコンポーネントＣＹのスタブコードに基づいて、当該コンポーネントＣＹの能力名（ここではα）を取得し、この能力名αに対応する能力値（コンポーネントＣＹの能力値）を、能力値テーブルから取得する。更に、コンポーネントＣＣは、取得したコンポーネントＣＹの能力値が、コンポーネントＣＹがコンポーネントスペックＸを拡張したコンポーネントスペックＹを実装する条件を満たしているか否かを確認する（Ｓ１０４、１０５）。
【００３５】
コンポーネントＣＹの能力値が、コンポーネントＣＹがコンポーネントスペックＸを拡張したコンポーネントスペックＹを実装する条件を満たしている場合、当該コンポーネントＣＹはコンポーネントスペックＹを実装しているとみなされる。この場合、コンポーネントＣＣは、コンポーネントスペックＹで定義されたインタフェース情報（ＷＷＷＩＦ、ＹＹＹＩＦ、ＶＶＶＩＦ）を通じたコンポーネントＣＹのサービスを受けながら自身の処理を実行する（Ｓ１０６）。
【００３６】
一方、コンポーネントＣＹの能力値が、コンポーネントＣＹがコンポーネントスペックＸを拡張したコンポーネントスペックＹを実装する条件を満たしていない場合、当該コンポーネントＣＹはコンポーネントスペックＹを実装しておらず、コンポーネントスペックＸを実装しているとみなされる。この場合、コンポーネントＣＣは、コンポーネントスペックＸで定義されたインタフェース情報（ＸＸＸＩＦ、ＹＹＹＩＦ）を通じたコンポーネントＣＹのサービスを受けながら自身の処理を実行する（Ｓ１０７）。
【００３７】
また、Ｓ１０４において、コンポーネントＣＣが、コンポーネントスペックＹが定義される前に開発されたものであると判断された場合、当該コンポーネントＣＣはコンポーネントスペックＹを実装しておらず、コンポーネントスペックＸを実装しているとみなされる。この場合には、コンポーネントＣＹがコンポーネントスペックＹを実装しているか否かに関わらず、コンポーネントＣＣは、コンポーネントスペックＸで定義されたインタフェース情報（ＸＸＸＩＦ、ＹＹＹＩＦ）を通じたコンポーネントＣＹのサービスを受けながら自身の処理を実行する（Ｓ１０７）。
【００３８】
次に、上述したＳ１０６及びＳ１０７におけるコンポーネントの実行処理の詳細を説明する。図７は、Ｓ１０６における処理の詳細を示すフローチャートである。まず、コンポーネントＣＣは、コンポーネントＣＹのスタブコードからインタフェース情報ＸＸＸＩＦへの参照情報を抽出する（Ｓ２０１）。更に、コンポーネントＣＣは、抽出したインタフェース情報ＸＸＸＩＦへの参照情報に基づいて、インタフェース情報ＸＸＸＩＦ用のスタブコードを生成あるいは取得し、当該インタフェース情報ＸＸＸＩＦ上で定義されたメソッドであるｍｅｔｈｏｄＡをコールする（Ｓ２０２）。
【００３９】
次に、ＸＸＸＩＦ用スタブコードは、コンポーネントＣＹのスタブコードからインタフェース情報ＷＷＷＩＦへの参照情報を抽出する（Ｓ２０３）。更に、ＸＸＸＩＦ用スタブコードは、抽出したインタフェース情報ＷＷＷＩＦへの参照情報に基づいて、インタフェース情報ＷＷＷＩＦ用のスタブコードを生成あるいは取得し、当該インタフェース情報ＷＷＷＩＦ上で定義されたメソッドであるｍｅｔｈｏｄＡをコールする（Ｓ２０４）。
【００４０】
次に、ＷＷＷＩＦ用のスタブコードは、ｍｅｔｈｏｄＡコールの転送をコンポーネント通信機構１５０を通じてコンポーネントＣＹへ依頼する（Ｓ２０５）。この依頼が発生すると、コンポーネント管理機構１４０は、コンポーネントＣＹ、コンポーネントスペックＹ及びコンポーネント管理情報１７２に基づいて、コンポーネントＣＹに対応するインタフェース情報ＷＷＷＩＦにおけるｍｅｔｈｏｄＡの実装を見つけ、当該ｍｅｔｈｏｄＡに対応する処理を起動する（Ｓ２０６）。具体的には、コンポーネント管理機構１４０は、コンポーネント管理情報１７２内のコンポーネント情報登録テーブルを参照して、コンポーネントＣＹに対応するコンポーネント情報テーブルのアドレスを取得する。次に、コンポーネント管理機構１４０は、取得したアドレスに基づいて、コンポーネントＣＹに対応するコンポーネント情報テーブルを参照し、そのコンポーネント情報テーブルに登録されているコンポーネントＣＹに対応するＩＦ情報テーブルのアドレスを取得する。更に、コンポーネント管理機構１４０は、取得したアドレスに基づいて、メソッド情報テーブル内のｍｅｔｈｏｄＡへのポインタが登録されたアドレスを取得する。そして、コンポーネント管理機構１４０は、取得したアドレスに基づいて、メソッド情報テーブル内のｍｅｔｈｏｄＡへのポインタを取得し、当該ポインタで指定されるｍｅｔｈｏｄＡのコードを取得して起動する。
【００４１】
一方、図８は、Ｓ１０７における処理の詳細を示すフローチャートである。まず、コンポーネントＣＣは、コンポーネントＣＹのスタブコードからインタフェース情報ＸＸＸＩＦへの参照情報を抽出する（Ｓ３０１）。更に、コンポーネントＣＣは、抽出したインタフェース情報ＸＸＸＩＦへの参照情報に基づいて、インタフェース情報ＸＸＸＩＦ用のスタブコードを生成あるいは取得し、当該インタフェース情報ＸＸＸＩＦ上で定義されたメソッドであるｍｅｔｈｏｄＡをコールする（Ｓ３０２）。
【００４２】
次に、ＸＸＸＩＦ用スタブコードは、ｍｅｔｈｏｄＡコールの転送をコンポーネント通信機構１５０を通じてコンポーネントＣＹへ依頼する（Ｓ３０３）。この依頼が発生すると、コンポーネント管理機構１４０は、コンポーネントＣＹ、コンポーネントスペックＸ及びコンポーネント管理情報１７２に基づいて、コンポーネントＣＹに対応するインタフェース情報ＸＸＸＩＦにおけるｍｅｔｈｏｄＡの実装を見つけ、当該ｍｅｔｈｏｄＡに対応する処理を起動する（Ｓ３０４）。具体的な処理は、図７のＳ２０６と同様である。すなわち、コンポーネント管理機構１４０は、コンポーネント管理情報１７２内のコンポーネント情報登録テーブルを参照して、コンポーネントＣＹに対応するコンポーネント情報テーブルのアドレスを取得する。次に、コンポーネント管理機構１４０は、取得したアドレスに基づいて、コンポーネントＣＹに対応するコンポーネント情報テーブルを参照し、そのコンポーネント情報テーブルに登録されているコンポーネントＣＹに対応するＩＦ情報テーブルのアドレスを取得する。更に、コンポーネント管理機構１４０は、取得したアドレスに基づいて、メソッド情報テーブル内のｍｅｔｈｏｄＡへのポインタが登録されたアドレスを取得する。そして、コンポーネント管理機構１４０は、取得したアドレスに基づいて、メソッド情報テーブル内のｍｅｔｈｏｄＡへのポインタを取得し、当該ポインタで指定されるｍｅｔｈｏｄＡのコードを取得して起動する。
【００４３】
このように、ＭＦシステム１００では、基本となるコンポーネントスペック（基本コンポーネントスペック）を拡張したコンポーネントスペック（拡張コンポーネントスペック）を実装するコンポーネントの実行において、他のコンポーネントが利用される場合、当該他のコンポーネントが基本コンポーネントスペックを実装している場合には、拡張コンポーネントスペックを実装するコンポーネントは、基本コンポーネントスペックを実装するコンポーネントとして実行され、他のコンポーネントが拡張コンポーネントスペックを実装している場合には、拡張コンポーネントスペックを実装するコンポーネントは、そのまま拡張コンポーネントスペックを実装するコンポーネントとして実行される。
【００４４】
また、ＭＦシステム１００では、基本コンポーネントスペックを実装するコンポーネントの実行において、他のコンポーネントが利用される場合、当該他のコンポーネントは、拡張コンポーネントスペックを実装しているか否かに関わらず、基本コンポーネントスペックを実装するコンポーネントとして実行される。
【００４５】
従って、コンポーネントと、当該コンポーネントが利用する他のコンポーネントとの間において、コンポーネントスペックの整合が図られ、その結果、コンポーネントと当該コンポーネントが利用する他のコンポーネントとの整合が図られる。
【００４６】
なお、上述した実施形態では、情報処理システムとしてのＭＦシステム１００について説明したが、複数のソフトウェアコンポーネントが実装される他の情報処理システムにおいても、本発明を適用することができる。
【産業上の利用可能性】
【００４７】
以上、説明したように、本発明に係る情報処理システム及びソフトウェアコンポーネント実行方法は、ソフトウェアコンポーネント間の整合を図ることが可能であり、情報処理システム及びソフトウェアコンポーネント実行方法として有用である。
【図面の簡単な説明】
【００４８】
【図１】ＭＦシステムの構成を示す図である。
【図２】不揮発記憶装置の格納状態を示す図である。
【図３】コンポーネント、コンポーネントスペック及びインタフェース情報の論理的定義の第１の例を示す図である。
【図４】コンポーネント、コンポーネントスペック及びインタフェース情報の論理的定義の第２の例を示す図である。
【図５】コンポーネント、コンポーネントスペック及びインタフェース情報の論理的定義とプログラムコードとの対応関係を示す図である。
【図６】コンポーネントの検索処理及び実行処理を示すフローチャートである。
【図７】コンポーネントの実行処理の詳細を示す第１のフローチャートである。
【図８】コンポーネントの実行処理の詳細を示す第２のフローチャートである。
【符号の説明】
【００４９】
１００  ＭＦシステム
１１０  コントローラ
１３０  コンポーネントインストーラ
１４０  コンポーネント管理機構
１５０  コンポーネント通信機構
１６０  主記憶装置
１７０  不揮発記憶装置
１７２  コンポーネント管理情報
１７４  アクセス制御部
１８０  スキャナデバイス
１９０  ＩＯＴデバイス
【図１】
2006092238.tif 000003
【図２】
2006092238.tif 000004
【図３】
2006092238.tif 000005
【図４】
2006092238.tif 000006
【図５】
2006092238.tif 000007
【図６】
2006092238.tif 000008
【図７】
2006092238.tif 000009
【図８】
2006092238.tif 000010