(57)【要約】  【課題】  ソフトウェアコンポーネント間の通信を適切に行うことが可能な情報処理システム及び情報処理方法を提供する。  【解決手段】  ＭＦシステム１００は、情報処理に関するサービスを実現する複数のソフトウェアコンポーネントＡ乃至Ｎを実装するものであり、ソフトウェアコンポーネント間の関係を規定する起動用ＩＦモジュール及び応答用ＩＦモジュールを取得して、これら起動用ＩＦモジュール及び応答用ＩＦモジュールに基づいて、ソフトウェアコンポーネント間の双方向の通信を制御するコンポーネント通信機構１５０を有する。【選択図】  図１
2006092173.tif 000002
【特許請求の範囲】
【請求項１】
情報処理に関するサービスを実現する複数のソフトウェアコンポーネントを実装する情報処理システムであって、
前記ソフトウェアコンポーネント間の関係を規定するインタフェース情報を取得するインタフェース情報取得手段と、
前記インタフェース情報取得手段により取得された前記インタフェース情報に基づいて、前記ソフトウェアコンポーネント間の通信を制御する通信制御手段とを有することを特徴とする情報処理システム。
【請求項２】
前記インタフェース情報は、２つの前記ソフトウェアコンポーネントのうち、一方のソフトウェアコンポーネントの実行において、他方のソフトウェアコンポーネントを利用可能とするための起動用インタフェース情報と、前記他方のソフトウェアコンポーネントが前記一方のソフトウェアコンポーネントに対して応答可能とするための応答用インタフェース情報とにより構成され、
前記通信制御手段は、前記起動用インタフェース情報に基づいて、前記一方のソフトウェアコンポーネントの実行において、前記他方のソフトウェアコンポーネントを利用する制御を行い、前記応答用インタフェース情報に基づいて、前記他方のソフトウェアコンポーネントが前記一方のソフトウェアコンポーネントに対して応答する制御を行うことを特徴とする請求項１に記載の情報処理システム。
【請求項３】
前記起動用インタフェース情報及び前記応答用インタフェース情報は、複数の前記ソフトウェアコンポーネントに対応付けられることを特徴とする請求項２に記載の情報処理システム。
【請求項４】
前記インタフェース情報を定義するインタフェース定義情報と、前記ソフトウェアコンポーネントを定義するソフトウェアコンポーネント定義情報とに基づいて、前記ソフトウェアコンポーネントと、該ソフトウェアコンポーネントに対応付けられる前記起動用インタフェース情報及び前記応答用インタフェース情報とを生成する情報生成手段と、
前記情報生成手段により生成される前記ソフトウェアコンポーネントと、前記起動用インタフェース情報及び前記応答用インタフェース情報とを記憶する記憶手段とを有することを特徴とする請求項２又は３に記載の情報処理システム。
【請求項５】
前記インタフェース定義情報及び前記ソフトウェアコンポーネント定義情報は、特定のプログラミング言語に依存しない形式であることを特徴とする請求項４に記載の情報処理システム。
【請求項６】
前記情報生成手段は、前記情報処理システムの機能を構成する関数群に合致するコード形式で、前記ソフトウェアコンポーネントと、該ソフトウェアコンポーネントに対応付けられる前記起動用インタフェース情報及び前記応答用インタフェース情報とを生成することを特徴とする請求項４又は５に記載の情報処理システム。
【請求項７】
前記記憶手段は、利用者固有のキー情報が設定された場合に、前記情報生成手段により生成される前記ソフトウェアコンポーネントと、前記起動用インタフェース情報及び前記応答用インタフェース情報とを記憶することを特徴とする請求項４乃至６のいずれかに記載の情報処理システム。
【請求項８】
主記憶手段と、
前記ソフトウェアコンポーネントの実行時に該ソフトウェアコンポーネントを前記主記憶手段にロードするロード手段と、
前記主記憶手段にロードされたソフトウェアコンポーネントの実行の必要がなくなった場合に該ソフトウェアコンポーネントをアンロードするアンロード手段とを有することを特徴とする請求項１乃至７のいずれかに記載の情報処理システム。
【請求項９】
情報処理に関するサービスを実現する複数のソフトウェアコンポーネントを実装する情報処理システムにおける情報処理方法であって、
前記ソフトウェアコンポーネント間の関係を規定するインタフェース情報を取得するインタフェース情報取得ステップと、
前記インタフェース情報取得ステップにおいて取得された前記インタフェース情報に基づいて、前記ソフトウェアコンポーネント間の通信を制御する通信制御ステップとを有することを特徴とする情報処理方法。
【請求項１０】
前記インタフェース情報は、２つの前記ソフトウェアコンポーネントのうち、一方のソフトウェアコンポーネントの実行において、他方のソフトウェアコンポーネントを利用可能とするための起動用インタフェース情報と、前記他方のソフトウェアコンポーネントが前記一方のソフトウェアコンポーネントに対して応答可能とするための応答用インタフェース情報とにより構成され、
前記通信制御ステップは、前記起動用インタフェース情報に基づいて、前記一方のソフトウェアコンポーネントの実行において、前記他方のソフトウェアコンポーネントを利用する制御を行い、前記応答用インタフェース情報に基づいて、前記他方のソフトウェアコンポーネントが前記一方のソフトウェアコンポーネントに対して応答する制御を行うことを特徴とする請求項９に記載の情報処理方法。
【請求項１１】
前記インタフェース情報を定義するインタフェース定義情報と、前記ソフトウェアコンポーネントを定義するソフトウェアコンポーネント定義情報とに基づいて、前記ソフトウェアコンポーネントと、該ソフトウェアコンポーネントに対応付けられる前記起動用インタフェース情報及び前記応答用インタフェース情報とを生成する情報生成ステップと、
前記情報生成ステップにおいて生成される前記ソフトウェアコンポーネントと、前記起動用インタフェース情報及び前記応答用インタフェース情報とを記憶手段に記憶させる記憶ステップとを有することを特徴とする請求項９に記載の情報処理方法。
【請求項１２】
前記情報生成ステップは、前記情報処理システムの機能を構成する関数群に合致するコード形式で、前記ソフトウェアコンポーネントと、該ソフトウェアコンポーネントに対応付けられる前記起動用インタフェース情報及び前記応答用インタフェース情報とを生成することを特徴とする請求項１１に記載の情報処理方法。
【請求項１３】
前記記憶ステップは、利用者固有のキー情報が設定された場合に、前記情報生成ステップにおいて生成される前記ソフトウェアコンポーネントと、前記起動用インタフェース情報及び前記応答用インタフェース情報とを前記記憶手段に記憶させることを特徴とする請求項１１又は１２に記載の情報処理方法。
【請求項１４】
前記ソフトウェアコンポーネントの実行時に該ソフトウェアコンポーネントを主記憶手段にロードするロードステップと、
前記主記憶手段にロードされたソフトウェアコンポーネントの実行の必要がなくなった場合に該ソフトウェアコンポーネントをアンロードするアンロードステップとを有することを特徴とする請求項９乃至１３のいずれかに記載の情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理に関するサービスを実現する複数のソフトウェアコンポーネントを実装する情報処理システム及び当該情報処理システムにおける情報処理方法に関する。
【背景技術】
【０００２】
従来から、様々なソフトウェアコンポーネントを組み合わせて情報処理を行う情報処理システム（例えば、特許文献１及び２参照）が提供されている。このような情報処理システムは、機能の追加や変更等がなされる場合に、システムの変更範囲の局所化が可能であるという利点を有する。ソフトウェアコンポーネントにより構成される情報処理システムの開発（例えば、特許文献３及び４参照）における枠組みを規定するものとしては、ＣＯＲＢＡ、ＤＣＯＭ、Ｊａｖａ（登録商標）ＲＭＩ等のコンポーネントフレームワークと称されるものが存在する。システム開発は、このコンポーネントフレームワークに従って行われる。
【特許文献１】特開平１０−２１４１９６号公報
【特許文献２】特開２００２−３５８１９９号公報
【特許文献３】特開２００１−２９６９９６号公報
【特許文献４】特開２００２−３２２２１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、一般的なコンポーネントフレームワークでは、ソフトウェアコンポーネント間の関係を定義するための言語であるＩＤＬ（Interface Definition Language）は、ソフトウェアコンポーネントが他のソフトウェアコンポーネントを利用する際の定義しかサポートしていないため、ソフトウェアコンポーネント間での通信、例えば、メッセージング主体の非同期通信を適切に行うことができないという問題がある。
【０００４】
本発明は、前述したような従来の問題を解決するためになされたもので、ソフトウェアコンポーネント間の通信を適切に行うことが可能な情報処理システム及び情報処理方法を提供するものである。
【課題を解決するための手段】
【０００５】
本発明の情報処理システムは、情報処理に関するサービスを実現する複数のソフトウェアコンポーネントを実装するものであって、前記ソフトウェアコンポーネント間の関係を規定するインタフェース情報を取得するインタフェース情報取得手段と、前記インタフェース情報取得手段により取得された前記インタフェース情報に基づいて、前記ソフトウェアコンポーネント間の通信を制御する通信制御手段とを有する。
【０００６】
この構成により、ソフトウェアコンポーネント間において、インタフェース情報に基づいて通信が可能となり、ソフトウェアコンポーネント間の通信を適切に行うことが可能となる。
【０００７】
また、本発明の情報処理システムは、前記インタフェース情報が、２つの前記ソフトウェアコンポーネントのうち、一方のソフトウェアコンポーネントの実行において、他方のソフトウェアコンポーネントを利用可能とするための起動用インタフェース情報と、前記他方のソフトウェアコンポーネントが前記一方のソフトウェアコンポーネントに対して応答可能とするための応答用インタフェース情報とにより構成され、前記通信制御手段が、前記起動用インタフェース情報に基づいて、前記一方のソフトウェアコンポーネントの実行において、前記他方のソフトウェアコンポーネントを利用する制御を行い、前記応答用インタフェース情報に基づいて、前記他方のソフトウェアコンポーネントが前記一方のソフトウェアコンポーネントに対して応答する制御を行う。
【０００８】
この構成により、一方のソフトウェアコンポーネントが他方のソフトウェアコンポーネントを利用する場合に、インタフェース情報に基づいて、一方のソフトウェアコンポーネントの実行において、他方のソフトウェアコンポーネントを利用するのみならず、他方のソフトウェアコンポーネントが一方のソフトウェアコンポーネントに対して応答することが可能となる。
【０００９】
また、本発明の情報処理システムは、前記起動用インタフェース情報及び前記応答用インタフェース情報が、複数の前記ソフトウェアコンポーネントに対応付けられる。
【００１０】
この構成により、ソフトウェアコンポーネントが変更されても、起動用インタフェース情報及び応答用インタフェース情報が同一であれば、他のソフトウェアコンポーネントを変更することなく、これら起動用インタフェース情報及び応答用インタフェース情報に基づいて、変更前と同様に、他のソフトウェアコンポーネントとの通信を行うことが可能であり、ソフトウェアコンポーネントの独立性を高めることができる。
【００１１】
また、本発明の情報処理システムは、前記インタフェース情報を定義するインタフェース定義情報と、前記ソフトウェアコンポーネントを定義するソフトウェアコンポーネント定義情報とに基づいて、前記ソフトウェアコンポーネントと、該ソフトウェアコンポーネントに対応付けられる前記起動用インタフェース情報及び前記応答用インタフェース情報とを生成する情報生成手段と、前記情報生成手段により生成される前記ソフトウェアコンポーネントと、前記起動用インタフェース情報及び前記応答用インタフェース情報とを記憶する記憶手段とを有する。
【００１２】
また、本発明の情報処理システムは、前記インタフェース定義情報及び前記ソフトウェアコンポーネント定義情報が、特定のプログラミング言語に依存しない形式である。
【００１３】
いわゆる組込み制御系の情報処理システムの開発では、物理デバイスの制御に関するソフトウェアコンポーネントや、ミドルウェア、アプリケーションの制御部分のソフトウェアコンポーネント等の個々の特性により、開発に適したプログラミング言語が異なる場合があるが、インタフェース情報やソフトウェアコンポーネントの生成に必要なインタフェース定義情報及びソフトウェアコンポーネント定義情報が特定のプログラミング言語に依存しない形式であることにより、プログラミング言語が異なっていても、これらインタフェース定義情報及びソフトウェアコンポーネント定義情報を共用することができる。
【００１４】
また、本発明の情報処理システムは、前記情報生成手段が、前記情報処理システムの機能を構成する関数群に合致するコード形式で、前記ソフトウェアコンポーネントと、該ソフトウェアコンポーネントに対応付けられる前記起動用インタフェース情報及び前記応答用インタフェース情報とを生成する。
【００１５】
また、本発明の情報処理システムは、前記記憶手段が、利用者固有のキー情報が設定された場合に、前記情報生成手段により生成される前記ソフトウェアコンポーネントと、前記起動用インタフェース情報及び前記応答用インタフェース情報とを記憶する。
【００１６】
この構成により、ソフトウェアコンポーネントと、起動用インタフェース情報及び応答用インタフェース情報が不正に変更されることを防止し、安全性を向上させることができる。
【００１７】
また、本発明の情報処理システムは、主記憶手段と、前記ソフトウェアコンポーネントの実行時に該ソフトウェアコンポーネントを前記主記憶手段にロードするロード手段と、前記主記憶手段にロードされたソフトウェアコンポーネントの実行の必要がなくなった場合に該ソフトウェアコンポーネントをアンロードするアンロード手段とを有する。
【００１８】
いわゆる組込み制御系の情報処理システムでは、主記憶装置の容量が制約されるため、効率的な利用が必要とされる場合があるが、ソフトウェアコンポーネントの実行の必要がなくなった場合には、そのソフトウェアコンポーネントが主記憶装置からアンロードされることで、効率的な利用が確保される。
【００１９】
また、本発明の情報処理方法は、情報処理に関するサービスを実現する複数のソフトウェアコンポーネントを実装する情報処理システムにおけるものであって、前記ソフトウェアコンポーネント間の関係を規定するインタフェース情報を取得するインタフェース情報取得ステップと、前記インタフェース情報取得ステップにおいて取得された前記インタフェース情報に基づいて、前記ソフトウェアコンポーネント間の通信を制御する通信制御ステップとを有する。
【００２０】
また、本発明の情報処理方法は、前記インタフェース情報が、２つの前記ソフトウェアコンポーネントのうち、一方のソフトウェアコンポーネントの実行において、他方のソフトウェアコンポーネントを利用可能とするための起動用インタフェース情報と、前記他方のソフトウェアコンポーネントが前記一方のソフトウェアコンポーネントに対して応答可能とするための応答用インタフェース情報とにより構成され、前記通信制御ステップが、前記起動用インタフェース情報に基づいて、前記一方のソフトウェアコンポーネントの実行において、前記他方のソフトウェアコンポーネントを利用する制御を行い、前記応答用インタフェース情報に基づいて、前記他方のソフトウェアコンポーネントが前記一方のソフトウェアコンポーネントに対して応答する制御を行う。
【００２１】
また、本発明の情報処理方法は、前記インタフェース情報を定義するインタフェース定義情報と、前記ソフトウェアコンポーネントを定義するソフトウェアコンポーネント定義情報とに基づいて、前記ソフトウェアコンポーネントと、該ソフトウェアコンポーネントに対応付けられる前記起動用インタフェース情報及び前記応答用インタフェース情報とを生成する情報生成ステップと、前記情報生成ステップにおいて生成される前記ソフトウェアコンポーネントと、前記起動用インタフェース情報及び前記応答用インタフェース情報とを記憶手段に記憶させる記憶ステップとを有する。
【００２２】
また、本発明の情報処理方法は、前記情報生成ステップが、前記情報処理システムの機能を構成する関数群に合致するコード形式で、前記ソフトウェアコンポーネントと、該ソフトウェアコンポーネントに対応付けられる前記起動用インタフェース情報及び前記応答用インタフェース情報とを生成する。
【００２３】
また、本発明の情報処理方法は、前記記憶ステップが、利用者固有のキー情報が設定された場合に、前記情報生成ステップにおいて生成される前記ソフトウェアコンポーネントと、前記起動用インタフェース情報及び前記応答用インタフェース情報とを前記記憶手段に記憶させる。
【００２４】
また、本発明の情報処理方法は、前記ソフトウェアコンポーネントの実行時に該ソフトウェアコンポーネントを主記憶手段にロードするロードステップと、前記主記憶手段にロードされたソフトウェアコンポーネントの実行の必要がなくなった場合に該ソフトウェアコンポーネントをアンロードするアンロードステップとを有する。
【発明の効果】
【００２５】
本発明によれば、インタフェース情報に基づいて通信が可能となり、ソフトウェアコンポーネント間の通信を適切に行うことが可能となる。
【発明を実施するための最良の形態】
【００２６】
以下、本発明の実施の形態の情報処理システムについて、図面を用いて説明する。
【００２７】
図１は、本実施形態の情報処理システムとしてのマルチファンクションシステム（ＭＦシステム）の構成を示す図である。図１に示すＭＦシステム１００は、例えば、プリント機能、コピー機能、スキャナ機能等を有するいわゆるデジタル複合機であり、コントローラ１１０、主記憶装置１６０、不揮発記憶装置１７０、スキャナデバイス１８０及びＩＯＴデバイス１９０を有する。
【００２８】
これらのうち、コントローラ１１０は、複数のソフトウェアコンポーネント（以下、単に「コンポーネント」と称する）Ａ乃至Ｎを有する。例えば、コンポーネントＭは、スキャナデバイス１８０を動作させるためのものであり、コンポーネントＮは、ＩＯＴデバイス１９０を動作させるためのものである。また、コントローラ１１０は、コンポーネントＡ乃至ＮをＭＦシステム１００にインストールするためのコンポーネントインストーラ１３０と、これらコンポーネントＡ乃至Ｎを管理して様々な処理を行うコンポーネント管理機構１４０と、コンポーネントＡ乃至Ｎ間の通信を制御するコンポーネント通信機構１５０とを有する。
【００２９】
図２は、不揮発記憶装置１７０の格納状態を示す図である。図２に示す不揮発記憶装置１７０は、コンポーネント管理情報領域１７２、プログラムコード格納領域１７４及びアクセス制御部１７６を有する。
【００３０】
コンポーネント管理情報領域１７２には、各コンポーネントを特定するためのコンポーネント情報登録テーブルと、コンポーネント毎に構成され、コンポーネントＡ乃至Ｎに関する情報を含むコンポーネント情報テーブルとが格納される。また、プログラムコード格納領域１７４には、コンポーネントのプログラムコードが格納される。アクセス制御部１７６は、コンポーネント管理機構１４０との間の通信の制御を行う。
【００３１】
不揮発記憶装置１７０には、コンポーネント管理機構１４０によるコンポーネントのインストール処理によって各種情報が格納される。図３は、コンポーネントのインストール処理を示すフローチャートである。
【００３２】
コンポーネント管理機構１４０は、インストール対象のコンポーネントのプログラムコードと、そのコンポーネントに対応するコンポーネント定義記述情報とが入力され、利用者固有のキー情報が設定されると、そのキー情報に応じて不揮発記憶装置１７０へのアクセスを可能とし、コンポーネントインストーラ１３０を用い、入力されたコンポーネント定義記述情報を取得して、インストール対象のコンポーネントのコンポーネント管理情報領域１７２における登録状態を確認する（Ｓ１０１）。
【００３３】
コンポーネントインストーラ１３０の入力となるコンポーネントプログラムコードとコンポーネント定義記述情報は、以下のようにして生成される。図４は、コンポーネントプログラムコードとコンポーネント定義記述情報の生成を説明するための図である。
【００３４】
図４において、コンポーネントスペックの定義は、コンポーネントが実現するサービスを利用するためのインタフェースの定義を表すものであり、特定のプログラミング言語に依存しない形式で記述されている。また、コンポーネントの定義は、コンポーネントを特定するものであり、特定のプログラミング言語に依存しない形式で記述されている。
【００３５】
変換ツール２０２は、プログラミング言語（実装言語）が指定されると、その実装言語に応じて、コンポーネント管理機構１４０及びコンポーネント通信機構１５０を構成する関数群である基本ライブラリに合致するように、コンポーネントスペックの定義及びコンポーネントの定義を変換し、コンポーネント実装用定義ファイルと、コンポーネント定義記述情報としてのコンポーネント情報のバイナリデータとを生成する。
【００３６】
コンポーネント情報は、コンポーネントの名前、コンポーネントが従うコンポーネントスペックの名前、コンポーネントが従うコンポーネントスペックが公開するインタフェースの名前、当該インタフェースにおける処理であるメソッドの名前等により構成される。
【００３７】
コンパイラ・リンカ２０４は、コンポーネント実装用定義ファイルに基づいて、開発者が記述したプログラムを、コンポーネントプログラムコードとしてのプログラムのオブジェクトコードに変換する。このオブジェクトコードには、起動用インタフェース（ＩＦ）モジュール及び応答用インタフェース（ＩＦ）モジュールが含まれる。起動用ＩＦモジュールは、インストール対象以外のコンポーネントがインストール対象のコンポーネントのサービスを利用する際に必要となるものであり、１又は複数のメソッドを含む。一方、応答用ＩＦモジュールは、インストール対象のコンポーネントが他のコンポーネントのサービスを利用する際に、他のコンポーネントがインストール対象のコンポーネントに対して応答する際に必要となるものであり、１又は複数のメソッドを含む。
【００３８】
上述の通り、コンポーネントスペックの定義及びコンポーネントの定義は、特定のプログラミング言語に依存しない形式で記述されているため、プログラムの記述に用いられるプログラミング言語は限定されず、個々のコンポーネントに応じた適切なプログラミング言語の利用が可能である。
【００３９】
再び図３に戻って説明する。コンポーネント管理機構１４０は、インストール対象のコンポーネントのコンポーネント管理情報領域１７２における登録状態を確認すると、既に登録済みであるか否かを判定する（Ｓ１０２）。具体的には、コンポーネント管理機構１４０は、アクセス制御部１７６を介してコンポーネント管理情報領域１７２にアクセスする。そして、コンポーネント管理情報領域１７２に、コンポーネント定義記述情報により特定されるインストール対象のコンポーネントに関する情報が含まれている場合には、コンポーネント管理機構１４０は、既に登録済みであると判断する。
【００４０】
インストール対象のコンポーネントがコンポーネント管理情報領域１７２に既に登録済みである場合には、コンポーネント管理機構１４０は、インストールを中止する（Ｓ１０３）。
【００４１】
一方、インストール対象のコンポーネントがコンポーネント管理情報領域１７２にまだ登録されていない場合には、コンポーネント管理機構１４０は、コンポーネント管理情報領域１７２に、インストール対象のコンポーネントに対応するコンポーネント情報テーブルを１つ作成する。そして、コンポーネント管理機構１４０は、作成したコンポーネント情報テーブルに、インストール対象のコンポーネントのＩＤ（コンポーネントＩＤ）、インストール対象のコンポーネントが従うコンポーネントスペックのＩＤ（コンポーネントスペックＩＤ）を登録する（Ｓ１０４）。これらコンポーネントＩＤ及びコンポーネントスペックＩＤは、コンポーネント定義記述情報の内容に対応するものが登録される。
【００４２】
次に、コンポーネント管理機構１４０は、コンポーネント情報登録テーブルに新たにエントリを１つ追加し、Ｓ１０４で新規に作成したコンポーネント情報テーブルへのポインタ（コンポーネント情報テーブルのアドレス）を登録する（Ｓ１０５）。
【００４３】
次に、コンポーネント管理機構１４０は、コンポーネントインストーラ１３０を用い、入力されたコンポーネントプログラムコードを取得して、プログラムコード格納領域１７４に格納する。更に、コンポーネント管理機構１４０は、そのプログラム格納場所をＳ１０４で新規に作成したコンポーネント情報テーブルに登録する（Ｓ１０６）。
【００４４】
このようにしてコンポーネントのインストール処理が行われた後、自動的に、あるいは、利用者の操作指示に応じてコンポーネントの実行に際してロード処理が行われる。図５は、コンポーネントのロード処理を示すフローチャートである。
【００４５】
コンポーネント管理機構１４０は、ロード対象のコンポーネントのプログラムコードをプログラムコード格納領域１７４から取り出し、主記憶装置１６０に格納する（Ｓ２０１）。
【００４６】
次に、コンポーネント管理機構１４０は、コンポーネント管理情報領域１７２にロード対象のコンポーネントに対応するインタフェース（ＩＦ）情報テーブルを作成し、ロード対象のコンポーネントに含まれる起動用ＩＦモジュール及び応答用ＩＦモジュールへのポインタ（起動用ＩＦモジュール及び応答用ＩＦモジュールのアドレス）を登録する（Ｓ２０２）。
【００４７】
更に、コンポーネント管理機構１４０は、ＩＦ情報テーブルのアドレスを、ロード対象のコンポーネントに対応するコンポーネント情報テーブルに登録する（Ｓ２０３）。このようなロード処理によって、コントローラ１１０によるコンポーネントが実行可能となる。
【００４８】
コンポーネントの実行においては、他のコンポーネントのサービスを利用する必要が生じる場合がある。このような場合には、他のコンポーネントを検索する処理が行われる。図６は、コンポーネントの検索処理を示すフローチャートである。なお、以下においては、コンポーネントＡの実行においてコンポーネントＢのサービスが必要になり、当該コンポーネントＢが検索される場合を示す。
【００４９】
コンポーネント管理機構１４０は、コントローラ１１０によるコンポーネントAの実行中に、当該コントローラ１１０の指示に従って、コンポーネントＡの実行において利用されるコンポーネントＢの検索を実行開始する（Ｓ３０１）。次に、コンポーネント管理機構１４０は、利用されるコンポーネントＢに対応するコンポーネント管理情報領域１７２）における登録状態を確認し（Ｓ３０２）、コンポーネントＢが登録されているか否かを判定する（Ｓ３０３）。
【００５０】
コンポーネントＢがコンポーネント管理情報領域１７２に登録されていない場合には、コンポーネント管理機構１４０は、コンポーネントＡを実行するコントローラ１１０に対して、検索失敗の旨を通知する（Ｓ３０４）。
【００５１】
一方、コンポーネントＢがコンポーネント管理情報領域１７２に登録されている場合には、コンポーネント管理機構１４０は、コンポーネントＢの主記憶装置１６０におけるロード状態を確認し（Ｓ３０５）、コンポーネントＢがロード済みであるか否かを判定する（Ｓ３０６）。具体的には、コンポーネント管理機構１４０は、コンポーネント管理情報領域１７２にコンポーネントＢに対応するＩＦ情報テーブルが存在する場合には、コンポーネントＢがロード済みであると判断する。
【００５２】
コンポーネントＢが主記憶装置１６０にロードされていないと判定された場合には、コンポーネント管理機構１４０は、コンポーネントＢをロードする処理を行う（Ｓ３０７）。ロード処理の詳細は、図５に示す手順と同様である。
【００５３】
Ｓ３０６において、コンポーネントＢが主記憶装置１６０にロード済みであると判定された場合、及び、Ｓ３０７において、コンポーネントＢをロードする処理が行われた場合、コンポーネント管理機構１４０は、コンポーネント管理情報領域１７２内の利用状況情報テーブルのアドレスを、コンポーネントＡに対応するコンポーネント情報テーブルに登録する（Ｓ３０８）。更に、コンポーネント管理機構１４０は、登録したアドレスで特定されるコンポーネント管理情報領域１７２内の領域に、コンポーネントＡに対応する利用状況情報テーブルを作成し、コンポーネントＢに対応するコンポーネント情報テーブルのアドレスと、コンポーネントＢの起動用ＩＦモジュールのアドレスとを登録する（Ｓ３０９）。そして、コンポーネント管理機構１４０は、コンポーネントＡを実行するコントローラ１１０に対して、検索成功の旨を通知する（Ｓ３１０）。
【００５４】
このようにして、コンポーネントの実行において、利用される他のコンポーネントの検索が成功すると、当該他のコンポーネントが実行されて、コンポーネント間の通信が行われる。図７は、コンポーネント間の通信処理を示すフローチャートである。なお、以下においては、コンポーネントＡの実行においてコンポーネントＢのサービスが必要になり、当該コンポーネントＢが実行されて、コンポーネントＡとコンポーネントＢとの間で通信が行われる場合を示す。
【００５５】
コンポーネント通信機構１５０は、コンポーネントＡに対応する利用状況情報テーブルを参照し、コンポーネントＢの起動用ＩＦモジュールのアドレスを取得する（Ｓ４０１）。具体的には、コンポーネント通信機構１５０は、まず、コンポーネント管理情報領域１７２内のコンポーネント情報登録テーブルを参照し、コンポーネントＡに対応するコンポーネント情報テーブルのアドレスを取得する。次に、コンポーネント通信機構１５０は、取得したアドレスに基づいて、コンポーネントＡに対応するコンポーネント情報テーブルを参照し、そのコンポーネント情報テーブルに登録されているコンポーネントＡに対応する利用状況情報テーブルのアドレスを取得する。そして、コンポーネント通信機構１５０は、取得したアドレスに基づいて、コンポーネントＡに対応する利用状況情報テーブルを参照し、コンポーネントＢの起動用ＩＦモジュールのアドレスを取得し、コンポーネントＡに渡す。
【００５６】
次に、コンポーネントＡは、コンポーネント通信機構１５０から取得したアドレスに基づいて、コンポーネントＢの起動用ＩＦモジュールにアクセスし、当該起動用ＩＦモジュール内のいずれかのメソッドをコンポーネント通信機構１５０を通じて指定する（Ｓ４０２）。そして、コントローラ１１０は、コンポーネントＢにおける指定メソッドに対応するプログラムを実行する（Ｓ４０３）。
【００５７】
更に、コンポーネントＢは指定メソッドのプログラム実行において、コンポーネント通信機構１５０を通じて実行中のコンポーネントＡに対応するＩＦ情報テーブルを参照し、コンポーネントＡの応答用ＩＦモジュールのアドレスを取得する（Ｓ４０４）。具体的には、コンポーネント通信機構１５０は、まず、コンポーネント管理情報領域１７２内のコンポーネント情報登録テーブルを参照し、コンポーネントＡに対応するコンポーネント情報テーブルのアドレスを取得する。次に、コンポーネント通信機構１５０は、取得したアドレスに基づいて、コンポーネントＡに対応するコンポーネント情報テーブルを参照し、そのコンポーネント情報テーブルに登録されているコンポーネントＡに対応するＩＦ情報テーブルのアドレスを取得する。そして、コンポーネント通信機構１５０は、取得したアドレスに基づいて、コンポーネントＡに対応するＩＦ情報テーブルを参照し、コンポーネントＡの応答用ＩＦモジュールのアドレスを取得し、コンポーネントＢに渡す。
【００５８】
次に、コンポーネントＢは、取得したアドレスに基づいて、コンポーネントＡの応答用ＩＦモジュールにアクセスし、応答用ＩＦモジュール内のいずれかのメソッドをコンポーネント通信機構１５０を通じて指定する（Ｓ４０５）。そして、コントローラ１１０は、コンポーネントＡにおける指定メソッドに対応するプログラムを実行する（Ｓ４０６）。
【００５９】
図８は、コンポーネント間の通信を説明するための図である。図８は、コンポーネントＡの実行においてコンポーネントＢのサービスが必要になり、当該コンポーネントＢが実行されて、コンポーネントＡとコンポーネントＢとの間で通信が行われる場合の例であり、コンポーネントＡの実行においてコンポーネントＢを利用するための起動用ＩＦモジュールａ及びｂと、コンポーネントＢがコンポーネントＡに対して応答するための応答用ＩＦモジュールｃとが対応付けられて、コンポーネントＢを利用するためのコンポーネントスペックが構成される。コンポーネントＢは、このコンポーネントスペックに基づいて実装される。
【００６０】
コンポーネントＡの実行においてコンポーネントＢのサービスが必要になると、コンポーネント通信機構１５０は、コンポーネントスペックにアクセスし、起動用ＩＦモジュールａ及びｂ内のいずれかのメソッド（ここでは、起動用ＩＦモジュールａのメソッド０）を指定する。これにより、コンポーネントＢにおける指定メソッドに対応するプログラムが実行される。更に、コンポーネント通信機構１５０は、コンポーネントスペックにアクセスし、応答用ＩＦモジュールｃ内のいずれかのメソッド（ここでは、メソッド１）を指定する。これにより、コンポーネントＡにおける指定メソッドに対応するプログラムが実行される。
【００６１】
この場合、コンポーネントＢが当該コンポーネントＢと同じコンポーネントスペックに基づいて実装されるコンポーネントＢ´に交換されたとしても、コンポーネントＡには何ら改変の必要はない。換言すれば、コンポーネントが交換されても、交換前のコンポーネントと交換後のコンポーネントとが同一のコンポーネントスペックに基づいて実装される限りは、そのコンポーネントを利用する他のコンポーネントには何ら影響が及ぶことはない。従って、コンポーネントの独立性が向上する。
【００６２】
このようにして、コンポーネントの実行において、利用される他のコンポーネントが特定されて実行された後、当該他のコンポーネントが必要なくなった時にアンロードする処理が行われる。図９は、コンポーネントのアンロード処理を示すフローチャートである。なお、以下においては、コンポーネントＡの実行において利用されたコンポーネントＢの実行が終了した後に、コンポーネントＡが、コンポーネントＢを必要としなくなった場合の当該コンポーネントＢのアンロード処理を示す。
【００６３】
コンポーネント通信機構１５０は、コントローラ１１０によるコンポーネントＡに利用されるコンポーネントＢの実行が終了すると、その旨をコンポーネント管理機構１４０に通知する（Ｓ５０１）。コンポーネント管理機構１４０は、この通知を受けると、コンポーネントＡに対応する利用状況情報テーブルに登録されているコンポーネントＢのコンポーネント情報テーブルのアドレスと起動用ＩＦモジュールのアドレスとを削除する（Ｓ５０２）。更に、コンポーネント管理機構１４０は、コンポーネントＡに対応するコンポーネント情報テーブルに登録されている利用状況情報テーブルのアドレスを削除する（Ｓ５０３）。
【００６４】
次に、コンポーネント管理機構１４０は、コンポーネントＢを利用するコンポーネントＡ以外のコンポーネントの存在確認を行い（Ｓ５０４）、存在するか否かを判定する（Ｓ５０５）。具体的には、コンポーネント管理機構１４０は、コンポーネント管理情報領域１７２におけるコンポーネント毎の利用状況情報テーブルのいずれかに、コンポーネントＢのコンポーネント情報テーブルのアドレスと起動用ＩＦモジュールのアドレスとが登録されている場合には、コンポーネントＢを利用するコンポーネントＡ以外のコンポーネントが存在すると判断する。
【００６５】
コンポーネントＡ以外にコンポーネントＢを利用するコンポーネントが存在する場合には、コンポーネントＢのアンロードは行われずに一連の動作が終了する。
【００６６】
一方、コンポーネントＡ以外にコンポーネントＢを利用するコンポーネントが存在しない場合には、コンポーネント管理機構１４０は、コンポーネントＢに対応するＩＦ情報テーブルを削除する（Ｓ５０６）。次に、コンポーネント管理機構１４０は、コンポーネントＢに対応するコンポーネント情報テーブルにおけるＩＦ情報テーブルのアドレスを削除する（Ｓ５０７）。更に、コンポーネント管理機構１４０は、コンポーネントＢのプログラムコードを主記憶装置１６０からアンロードする（Ｓ５０８）。
【００６７】
このように、ＭＦシステム１００では、２つのソフトウェアコンポーネントのうち、一方のソフトウェアコンポーネントの実行において、他方のソフトウェアコンポーネントを利用可能とするための起動用ＩＦモジュールと、他方のソフトウェアコンポーネントが一方のソフトウェアコンポーネントに対して応答するための応答用ＩＦモジュールとによって構成されるコンポーネントスペックに基づいて、一方のソフトウェアコンポーネントの実行において、他方のソフトウェアコンポーネントを利用し、他方のソフトウェアコンポーネントが一方のソフトウェアコンポーネントに対して応答するという通信制御が行われる。従って、コンポーネントスペックを用いてソフトウェアコンポーネント間で双方向通信が可能となる。
【００６８】
なお、上述した実施形態では、情報処理システムとしてのＭＦシステム１００について説明したが、複数のソフトウェアコンポーネントが実装される他の情報処理システムにおいても、本発明を適用することができる。
【産業上の利用可能性】
【００６９】
以上、説明したように、本発明に係る情報処理システム及び情報処理方法は、ソフトウェアコンポーネント間の通信を適切に行うことが可能であり、情報処理システム及び情報処理方法として有用である。
【図面の簡単な説明】
【００７０】
【図１】ＭＦシステムの構成を示す図である。
【図２】不揮発記憶装置の格納状態を示す図である。
【図３】コンポーネントのインストール処理を示すフローチャートである。
【図４】コンポーネントプログラムコードとコンポーネント定義記述情報の生成を説明するための図である。
【図５】コンポーネントのロード処理を示すフローチャートである。
【図６】コンポーネントの検索処理を示すフローチャートである。
【図７】コンポーネント間の通信処理を示すフローチャートである。
【図８】コンポーネント間の通信を説明するための図である。
【図９】コンポーネントのアンロード処理を示すフローチャートである。
【符号の説明】
【００７１】
１００  ＭＦシステム
１１０  コントローラ
１３０  コンポーネントインストーラ
１４０  コンポーネント管理機構
１５０  コンポーネント通信機構
１６０  主記憶装置
１７０  不揮発記憶装置
１７２  コンポーネント管理情報領域
１７４  プログラムコード格納領域
１７４  アクセス制御部
１８０  スキャナデバイス
１９０  ＩＯＴデバイス
２０２  変換ツール
２０４  コンパイラ・リンカ
【図１】
2006092173.tif 000003
【図２】
2006092173.tif 000004
【図３】
2006092173.tif 000005
【図４】
2006092173.tif 000006
【図５】
2006092173.tif 000007
【図６】
2006092173.tif 000008
【図７】
2006092173.tif 000009
【図８】
2006092173.tif 000010
【図９】
2006092173.tif 000011