(57)【要約】      （修正有）【課題】ソフトウェアの動作をその実行環境への導入前に検証することにより、安定性の高いソフトウェアを開発できるようにする。【解決手段】ホスト端末は、個別機能モジュールがホスト端末で使用するリソースの量を測定し、測定したリソースの量を、対象とする組込機器で使用するリソースの量に換算し、個別機能モジュールから上限値を取得し、換算したリソースの量および取得した上限値に基づいて、個別機能モジュールが使用するリソースの量が上限に達したことを示すログ情報を生成する。そして、ログファイルからログ情報を読み出し（Ｓ９００）、読み出したログ情報に基づいて個別機能モジュールが使用するリソースの量が上限に達したか否かを判定し（Ｓ９０２）、リソースの量が上限に達していないと判定したときは、個別機能モジュールの実行ファイルに電子署名情報を付加する（Ｓ９１０）。【選択図】図１８
2006293980.tif 000002
【特許請求の範囲】
【請求項１】
機能モジュールが第１実行環境で使用するリソースの量を測定するリソース測定手段と、前記リソース測定手段で測定したリソースの量を、前記機能モジュールが第２実行環境で使用するリソースの量に換算するリソース換算手段と、リソースの制限条件を示すリソース制限情報を取得するリソース制限情報取得手段と、前記リソース換算手段で換算したリソースの量および前記リソース制限情報取得手段で取得したリソース制限情報に基づいて、前記機能モジュールが使用するリソースの量が上限に達したことを示すログ情報を生成するログ情報生成手段とを備えるリソース管理システムにより生成された前記ログ情報に基づいて前記機能モジュールを含むソフトウェアを認証するソフトウェア認証システムであって、
前記ログ情報を取得するログ情報取得手段と、前記ログ情報取得手段で取得したログ情報に基づいて前記機能モジュールが使用するリソースの量が上限に達していないかを判定する動作判定手段と、前記動作判定手段が上限に達していないと判定したときは、前記ソフトウェアに認証情報を付加するソフトウェア認証手段とを備えることを特徴とするソフトウェア認証システム。
【請求項２】
機能モジュールが第１実行環境で使用するリソースの量を測定するリソース測定手段と、第２実行環境でのリソースの上限値を取得するリソース上限値取得手段と、前記リソース上限値取得手段で取得したリソースの上限値を、前記第１実行環境でのリソースの上限値に換算するリソース換算手段と、前記リソース測定手段で測定したリソースの量および前記リソース換算手段で換算したリソースの上限値に基づいて、前記機能モジュールが使用するリソースの量が上限に達したことを示すログ情報を生成するログ情報生成手段とを備えるリソース管理システムにより生成された前記ログ情報に基づいて前記機能モジュールを含むソフトウェアを認証するソフトウェア認証システムであって、
前記ログ情報を取得するログ情報取得手段と、前記ログ情報取得手段で取得したログ情報に基づいて前記機能モジュールが使用するリソースの量が上限に達していないかを判定する動作判定手段と、前記動作判定手段が上限に達していないと判定したときは、前記ソフトウェアに認証情報を付加するソフトウェア認証手段とを備えることを特徴とするソフトウェア認証システム。
【請求項３】
第１実行環境とは異なる第２実行環境で機能モジュールが使用するリソースの使用状況を監視するリソース監視手段と、前記リソース監視手段の監視結果に基づいて前記リソース使用状況を示すログ情報を生成するログ情報生成手段とを備えるリソース管理システムにより生成された前記ログ情報に基づいて前記機能モジュールを含むソフトウェアを認証するソフトウェア認証システムであって、
前記ログ情報を取得するログ情報取得手段と、前記ログ情報取得手段で取得したログ情報に基づいて前記リソース使用状況が前記第１実行環境に適合するかを判定する動作判定手段と、前記動作判定手段が適合すると判定したときは、前記ソフトウェアに認証情報を付加するソフトウェア認証手段とを備えることを特徴とするソフトウェア認証システム。
【請求項４】
請求項１ないし３のいずれか１項において、
前記機能モジュールの実行に必要な実行ファイルを取得する実行ファイル取得手段と、前記実行ファイル取得手段で取得した実行ファイルに基づいて、前記機能モジュールを構成する命令または命令群が前記第１実行環境で実行可能な命令または命令群のみからなるかを判定する第２動作判定手段とを備え、
前記ソフトウェア認証手段は、前記第２動作判定手段が前記第１実行環境で実行可能な命令または命令群のみからなると判定したときは、前記ソフトウェアに前記認証情報を付加するようになっていることを特徴とするソフトウェア認証システム。
【請求項５】
機能モジュールが第１実行環境で使用するリソースの量を測定するリソース測定手段と、前記リソース測定手段で測定したリソースの量を、前記機能モジュールが第２実行環境で使用するリソースの量に換算するリソース換算手段と、リソースの制限条件を示すリソース制限情報を取得するリソース制限情報取得手段と、前記リソース換算手段で換算したリソースの量および前記リソース制限情報取得手段で取得したリソース制限情報に基づいて、前記機能モジュールが使用するリソースの量が上限に達したことを示すログ情報を生成するログ情報生成手段とを備えるリソース管理システムにより生成された前記ログ情報に基づいて前記機能モジュールを含むソフトウェアを認証するソフトウェア認証プログラムであって、
前記ログ情報を取得するログ情報取得ステップと、前記ログ情報取得ステップで取得したログ情報に基づいて前記機能モジュールが使用するリソースの量が上限に達していないかを判定する動作判定ステップと、前記動作判定ステップで上限に達していないと判定したときは、前記ソフトウェアに認証情報を付加するソフトウェア認証ステップとからなる処理をコンピュータに実行させるためのプログラムを含むことを特徴とするソフトウェア認証プログラム。
【請求項６】
機能モジュールが第１実行環境で使用するリソースの量を測定するリソース測定手段と、第２実行環境でのリソースの上限値を取得するリソース上限値取得手段と、前記リソース上限値取得手段で取得したリソースの上限値を、前記第１実行環境でのリソースの上限値に換算するリソース換算手段と、前記リソース測定手段で測定したリソースの量および前記リソース換算手段で換算したリソースの上限値に基づいて、前記機能モジュールが使用するリソースの量が上限に達したことを示すログ情報を生成するログ情報生成手段とを備えるリソース管理システムにより生成された前記ログ情報に基づいて前記機能モジュールを含むソフトウェアを認証するソフトウェア認証プログラムであって、
前記ログ情報を取得するログ情報取得ステップと、前記ログ情報取得ステップで取得したログ情報に基づいて前記機能モジュールが使用するリソースの量が上限に達していないかを判定する動作判定ステップと、前記動作判定ステップで上限に達していないと判定したときは、前記ソフトウェアに認証情報を付加するソフトウェア認証ステップとからなる処理をコンピュータに実行させるためのプログラムを含むことを特徴とするソフトウェア認証プログラム。
【請求項７】
第１実行環境とは異なる第２実行環境で機能モジュールが使用するリソースの使用状況を監視するリソース監視手段と、前記リソース監視手段の監視結果に基づいて前記リソース使用状況を示すログ情報を生成するログ情報生成手段とを備えるリソース管理システムにより生成された前記ログ情報に基づいて前記機能モジュールを含むソフトウェアを認証するソフトウェア認証プログラムであって、
前記ログ情報を取得するログ情報取得ステップと、前記ログ情報取得ステップで取得したログ情報に基づいて前記リソース使用状況が前記第１実行環境に適合するかを判定する動作判定ステップと、前記動作判定ステップで適合すると判定したときは、前記ソフトウェアに認証情報を付加するソフトウェア認証ステップとからなる処理をコンピュータに実行させるためのプログラムを含むことを特徴とするソフトウェア認証プログラム。
【請求項８】
機能モジュールが第１実行環境で使用するリソースの量を測定するリソース測定手段と、前記リソース測定手段で測定したリソースの量を、前記機能モジュールが第２実行環境で使用するリソースの量に換算するリソース換算手段と、リソースの制限条件を示すリソース制限情報を取得するリソース制限情報取得手段と、前記リソース換算手段で換算したリソースの量および前記リソース制限情報取得手段で取得したリソース制限情報に基づいて、前記機能モジュールが使用するリソースの量が上限に達したことを示すログ情報を生成するログ情報生成手段とを備えるリソース管理システムにより生成された前記ログ情報に基づいて前記機能モジュールを含むソフトウェアを認証するソフトウェア認証方法であって、
前記ログ情報を取得するログ情報取得ステップと、前記ログ情報取得ステップで取得したログ情報に基づいて前記機能モジュールが使用するリソースの量が上限に達していないかを判定する動作判定ステップと、前記動作判定ステップで上限に達していないと判定したときは、前記ソフトウェアに認証情報を付加するソフトウェア認証ステップとを含むことを特徴とするソフトウェア認証方法。
【請求項９】
機能モジュールが第１実行環境で使用するリソースの量を測定するリソース測定手段と、第２実行環境でのリソースの上限値を取得するリソース上限値取得手段と、前記リソース上限値取得手段で取得したリソースの上限値を、前記第１実行環境でのリソースの上限値に換算するリソース換算手段と、前記リソース測定手段で測定したリソースの量および前記リソース換算手段で換算したリソースの上限値に基づいて、前記機能モジュールが使用するリソースの量が上限に達したことを示すログ情報を生成するログ情報生成手段とを備えるリソース管理システムにより生成された前記ログ情報に基づいて前記機能モジュールを含むソフトウェアを認証するソフトウェア認証方法であって、
前記ログ情報を取得するログ情報取得ステップと、前記ログ情報取得ステップで取得したログ情報に基づいて前記機能モジュールが使用するリソースの量が上限に達していないかを判定する動作判定ステップと、前記動作判定ステップで上限に達していないと判定したときは、前記ソフトウェアに認証情報を付加するソフトウェア認証ステップとを含むことを特徴とするソフトウェア認証方法。
【請求項１０】
第１実行環境とは異なる第２実行環境で機能モジュールが使用するリソースの使用状況を監視するリソース監視手段と、前記リソース監視手段の監視結果に基づいて前記リソース使用状況を示すログ情報を生成するログ情報生成手段とを備えるリソース管理システムにより生成された前記ログ情報に基づいて前記機能モジュールを含むソフトウェアを認証するソフトウェア認証方法であって、
前記ログ情報を取得するログ情報取得ステップと、前記ログ情報取得ステップで取得したログ情報に基づいて前記リソース使用状況が前記第１実行環境に適合するかを判定する動作判定ステップと、前記動作判定ステップで適合すると判定したときは、前記ソフトウェアに認証情報を付加するソフトウェア認証ステップとを含むことを特徴とするソフトウェア認証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアを認証するシステムおよびプログラム、並びに方法に係り、特に、ソフトウェアの動作をその実行環境への導入前に検証することにより、ソフトウェアの開発を容易にするとともに安定性の高いソフトウェアを開発するのに好適なソフトウェア認証システムおよびソフトウェア認証プログラム、並びにソフトウェア認証方法に関する。
【背景技術】
【０００２】
プリンタ等の組込機器には、組込用アプリケーションと呼ばれるソフトウェアを組み込んでその動作を制御している。しかしながら、組込用アプリケーションを作成するには、一般に専用の開発環境と専用のハードウェアを必要とするため、誰もが簡単に作成できるものではなかった。この問題を解決するために、特許文献１記載の情報処理装置が提案されている。
【０００３】
特許文献１記載の発明は、画像形成装置上で実行されるアプリケーションをＰＣ上で実行できるエミュレータを有して構成されている。これにより、組込機器を用いなくても組込用アプリケーションを開発することができる。
また、プログラミング技術が未熟な人が作成する組込用アプリケーションは、予期せぬ動作を引き起こし、組込機器自体の動作が続行できなくなるという問題がある。この問題を解決するために、特許文献２記載のリソース管理システムが提案されている。
【０００４】
特許文献２記載の発明は、ソフトウェアが情報機器で実行するときに利用するリソースに対して動作可能な範囲を設定する制限設定部と、制限設定部で設定した動作可能な範囲内で動作していることを検証する動作範囲検証部とを有して構成されている。動作範囲検証部は、ソフトウェアからリソース利用要求があったときに、設定してある動作可能な範囲と要求されたリソースの量とを比較し、動作可能な範囲外のときにはそのソフトウェアの実行を中止させる。
【特許文献１】特開２００４−１８５５９５号公報
【特許文献２】特開２００４−９４７８２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
特許文献１記載の発明では、組込用アプリケーションをＰＣ上で仮想的に実行することができるため、組込用アプリケーションの動作をＰＣ上である程度検証することができる。
しかしながら、組込用アプリケーションをＰＣ上で実行した場合と、実際にその組込用アプリエーションを組込機器上で実行した場合とでは、その組込用アプリエーションがそれぞれの実行環境で使用するリソース（例えば、メモリ）の量が完全には一致しない。これは、組込用アプリケーションを実行する環境が異なることに起因する。例えば、組込用アプリケーションを実行するために、ライブラリを使用するが、このライブラリは、ハードウェア構成の違いからＰＣ用と組込機器用とでそれぞれプログラム構造が異なる。そのため、同じ関数を使用する場合でも、ＰＣ上と組込機器上では、機能は同じであるがプログラム構造が異なるライブラリがリンクされてオブジェクトが生成される。それらオブジェクトは、プログラム構造が異なるので、当然に使用するリソースの量も完全には一致しない。したがって、ＰＣ上では適切に動作した組込用アプリケーションでも、実際に組込機器に組み込んだときに、使用するリソースの量が大きすぎるため、複数の組込用アプリケーションが組込機器上で起動した場合に、他の組込用アプリケーションと競合して動作が不安定となる可能性があった。特に、プリンタ等の組込機器は、ＰＣと異なり使用可能なリソースの量が極端に少ないため、個々の組込用アプリケーションが使用するリソースの量を詳細に管理することは安定動作を実現する上で極めて重要である。
【０００６】
また、組込用アプリケーション自体またはそれが取り扱うファイルについては、ファイル名やパス名に一定の制限がある。ＰＣでは使用することができる長さや文字種も組込機器では使用することができない場合がある。したがって、ＰＣ上では適切に動作した組込用アプリケーションでも、実際に組込機器に組み込んだときに、ファイル名やパス名が適切でないため、動作に不具合が生じる可能性があった。
【０００７】
一方、特許文献２記載の発明にあっては、あくまで組込用アプリケーションを組込機器上で実行した場合に動作が不安定になるのを防止するものであり、組込用アプリケーションが使用するリソースの量、ファイル名やパス名等を組込機器への導入前に検証することはできない。
このような問題は、組込用アプリケーションを組込機器上で実行する場合に限らず、特定の実行環境で実行させるソフトウェアを他の実行環境で開発するあらゆる場合についても同様に想定される。
【０００８】
そこで、本発明は、このような従来の技術の有する未解決の課題に着目してなされたものであって、ソフトウェアの動作をその実行環境への導入前に検証することにより、ソフトウェアの開発を容易にするとともに安定性の高いソフトウェアを開発するのに好適なソフトウェア認証システムおよびソフトウェア認証プログラム、並びにソフトウェア認証方法を提供することを目的としている。
【課題を解決するための手段】
【０００９】
〔形態１〕  上記目的を達成するために、形態１のソフトウェア認証システムは、
機能モジュールが第１実行環境で使用するリソースの量を測定するリソース測定手段と、前記リソース測定手段で測定したリソースの量を、前記機能モジュールが第２実行環境で使用するリソースの量に換算するリソース換算手段と、リソースの制限条件を示すリソース制限情報を取得するリソース制限情報取得手段と、前記リソース換算手段で換算したリソースの量および前記リソース制限情報取得手段で取得したリソース制限情報に基づいて、前記機能モジュールが使用するリソースの量が上限に達したことを示すログ情報を生成するログ情報生成手段とを備えるリソース管理システムにより生成された前記ログ情報に基づいて前記機能モジュールを含むソフトウェアを認証するソフトウェア認証システムであって、
前記ログ情報を取得するログ情報取得手段と、前記ログ情報取得手段で取得したログ情報に基づいて前記機能モジュールが使用するリソースの量が上限に達していないかを判定する動作判定手段と、前記動作判定手段が上限に達していないと判定したときは、前記ソフトウェアに認証情報を付加するソフトウェア認証手段とを備えることを特徴とする。
【００１０】
このような構成であれば、リソース管理システムでは、リソース測定手段により、機能モジュールが第１実行環境で使用するリソースの量が測定され、リソース換算手段により、測定されたリソースの量が、機能モジュールが第２実行環境で使用するリソースの量に換算される。また、リソース制限情報取得手段により、リソース制限情報が取得される。そして、ログ情報生成手段により、換算されたリソースの量および取得されたリソース制限情報に基づいて、機能モジュールが使用するリソースの量が上限に達したことを示すログ情報が生成される。
【００１１】
本システムでは、ログ情報取得手段により、このように生成されたログ情報が取得され、動作判定手段により、取得されたログ情報に基づいて機能モジュールが使用するリソースの量が上限に達したか否かが判定される。その結果、上限に達していないと判定されると、ソフトウェア認証手段により、ソフトウェアに認証情報が付加される。
これにより、機能モジュールが使用するリソースの量が上限に達しないソフトウェアに対してのみ認証情報が付加されるので、ソフトウェアの動作を比較的確実に保証することができる。したがって、従来に比して、ソフトウェアの開発を容易に行うことができるとともに安定性の高いソフトウェアを開発することができるという効果が得られる。
【００１２】
ここで、リソースとは、機能モジュールが使用可能な資源をいい、ハードウェア資源に限らず、ソフトウェア資源その他の資源が含まれる。以下、形態２および３のソフトウェア認証システム、形態５ないし７のソフトウェア認証プログラム、並びに形態９ないし１４のソフトウェア認証方法において同じである。
また、リソースの量としては、例えば、機能モジュールが使用するメモリ量、または起動可能な機能モジュールの数が含まれる。また、例えば、機能モジュールを利用するアプリケーションが確保するリソースの量（メモリ量、機能モジュール数）が含まれる。以下、形態２および３のソフトウェア認証システム、形態５ないし７のソフトウェア認証プログラム、並びに形態９ないし１４のソフトウェア認証方法において同じである。
【００１３】
また、ログ情報取得手段は、ログ情報を取得するようになっていればどのような構成であってもよく、例えば、入力装置等からログ情報を入力するようになっていてもよいし、外部の装置等からログ情報を獲得または受信するようになっていてもよいし、記憶装置や記憶媒体等からログ情報を読み出すようになっていてもよいし、機能モジュールその他のデータからログ情報を抽出するようになっていてもよい。したがって、取得には、少なくとも入力、獲得、受信、読出および抽出が含まれる。以下、形態２および３のソフトウェア認証システムにおいて同じである。
【００１４】
また、リソースの換算方法としては、例えば、次の方法が考えられる。第１の方法（一定割合換算方法）は、測定したリソース量に対して一定の割合のリソース量を増加または減少して換算後のリソース量を求める。第２の方法（一定量換算方法）は、測定したリソース量に関わらず、そのリソース量から一定量を増加または減少して換算後のリソース量を求める。第３の方法（定数換算方法）は、測定したリソース量に関わらず、そのリソース量を定数に置き換えて換算後のリソース量を求める。第４の方法（混合型換算方法）は、第１〜第３の方法のなかからリソースの種類または測定したリソース量に基づいて選択し、選択した方法により換算後のリソース量を求める。換算方法の選択は、例えば、次のように閾値Ａ、Ｂを設定して行うことができる。リソース量＜Ａのときは、定数換算方法を選択し、Ａ＜リソース量＜Ｂのときは、一定量換算方法を選択し、Ｂ＜リソース量のときは、一定割合換算方法を選択する。ただし、Ａ＜Ｂである。以下、形態２のソフトウェア認証システム、形態５および６のソフトウェア認証プログラム、並びに形態９ないし１２のソフトウェア認証方法において同じである。
【００１５】
また、リソースの制限条件としては、例えば、第２実行環境でのリソースの上限値を設定することができる。以下、形態５のソフトウェア認証プログラム、並びに形態９および１０のソフトウェア認証方法において同じである。
また、認証情報とは、第２実行環境でソフトウェアを実行するときに実行の可否を判定するために利用される情報であって、セキュリティの観点からは、他人が複製できず、実行の可否を判定できる情報であることが好ましい。また、情報の形式は任意のものを採用することができる。以下、形態２および３のソフトウェア認証システム、形態５ないし７のソフトウェア認証プログラム、並びに形態９ないし１４のソフトウェア認証方法において同じである。
【００１６】
また、本システムは、単一の装置、端末その他の機器として実現するようにしてもよいし、複数の装置、端末その他の機器を通信可能に接続したネットワークシステムとして実現するようにしてもよい。後者の場合、各構成要素は、それぞれ通信可能に接続されていれば、複数の機器等のうちいずれに属していてもよい。以下、形態２および３のソフトウェア認証システムにおいて同じである。
【００１７】
また、リソース管理システムのより具体的な構成としては、次の２つの構成を提案することができる。
第１の構成は、第１機能モジュールと、その実行に前記第１機能モジュールを必要とする複数の第２機能モジュールとを含むソフトウェアが使用するリソースを管理するリソース管理システムであって、前記第２機能モジュールが第１実行環境で使用するリソースの量を測定するリソース測定手段と、前記リソース測定手段で測定したリソースの量を、前記第２機能モジュールが第２実行環境で使用するリソースの量に換算するリソース換算手段と、前記第２実行環境でのリソースの制限条件を示すリソース制限情報を取得するリソース制限情報取得手段と、前記リソース換算手段で換算したリソースの量および前記リソース制限情報取得手段で取得したリソース制限情報に基づいて、前記機能モジュールが使用するリソースの量が上限に達したことを示すログ情報を生成するログ情報生成手段とを備える。
【００１８】
第２の構成は、第１機能モジュールと、その実行に前記第１機能モジュールを必要とする複数の第２機能モジュールとを含むソフトウェアが使用するリソースを管理するリソース管理システムであって、前記第１機能モジュールが前記第１実行環境で前記第２機能モジュールの実行に使用するリソースの量を測定するリソース測定手段と、前記リソース測定手段で測定したリソースの量を、前記第２機能モジュールが第２実行環境で使用するリソースの量に換算するリソース換算手段と、前記第２実行環境でのリソースの制限条件を示すリソース制限情報を取得するリソース制限情報取得手段と、前記リソース換算手段で換算したリソースの量および前記リソース制限情報取得手段で取得したリソース制限情報に基づいて、前記機能モジュールが使用するリソースの量が上限に達したことを示すログ情報を生成するログ情報生成手段とを備える。以下、形態５のソフトウェア認証プログラム、並びに形態９および１０のソフトウェア認証方法において同じである。
【００１９】
〔形態２〕  さらに、形態２のソフトウェア認証システムは、
機能モジュールが第１実行環境で使用するリソースの量を測定するリソース測定手段と、第２実行環境でのリソースの上限値を取得するリソース上限値取得手段と、前記リソース上限値取得手段で取得したリソースの上限値を、前記第１実行環境でのリソースの上限値に換算するリソース換算手段と、前記リソース測定手段で測定したリソースの量および前記リソース換算手段で換算したリソースの上限値に基づいて、前記機能モジュールが使用するリソースの量が上限に達したことを示すログ情報を生成するログ情報生成手段とを備えるリソース管理システムにより生成された前記ログ情報に基づいて前記機能モジュールを含むソフトウェアを認証するソフトウェア認証システムであって、
前記ログ情報を取得するログ情報取得手段と、前記ログ情報取得手段で取得したログ情報に基づいて前記機能モジュールが使用するリソースの量が上限に達していないかを判定する動作判定手段と、前記動作判定手段が上限に達していないと判定したときは、前記ソフトウェアに認証情報を付加するソフトウェア認証手段とを備えることを特徴とする。
【００２０】
このような構成であれば、リソース管理システムでは、リソース測定手段により、機能モジュールが第１実行環境で使用するリソースの量が測定される。また、リソース上限値取得手段により、第２実行環境でのリソースの上限値が取得され、リソース換算手段により、取得されたリソースの上限値が、第１実行環境でのリソースの上限値に換算される。そして、ログ情報生成手段により、測定されたリソースの量および換算されたリソースの上限値に基づいて、機能モジュールが使用するリソースの量が上限に達したことを示すログ情報が生成される。
【００２１】
本システムでは、ログ情報取得手段により、このように生成されたログ情報が取得され、動作判定手段により、取得されたログ情報に基づいて機能モジュールが使用するリソースの量が上限に達したか否かが判定される。その結果、上限に達していないと判定されると、ソフトウェア認証手段により、ソフトウェアに認証情報が付加される。
これにより、機能モジュールが使用するリソースの量が上限に達しないソフトウェアに対してのみ認証情報が付加されるので、ソフトウェアの動作を比較的確実に保証することができる。したがって、従来に比して、ソフトウェアの開発を容易に行うことができるとともに安定性の高いソフトウェアを開発することができるという効果が得られる。
【００２２】
ここで、リソース管理システムのより具体的な構成としては、次の２つの構成を提案することができる。
第１の構成は、第１機能モジュールと、その実行に前記第１機能モジュールを必要とする複数の第２機能モジュールとを含むソフトウェアが使用するリソースを管理するリソース管理システムであって、前記第２機能モジュールが第１実行環境で使用するリソースの量を測定するリソース測定手段と、第２実行環境でのリソースの上限値を取得するリソース上限値取得手段と、前記リソース上限値取得手段で取得したリソースの上限値を、前記第１実行環境でのリソースの上限値に換算するリソース換算手段と、前記リソース測定手段で測定したリソースの量および前記リソース換算手段で換算したリソースの上限値に基づいて、前記機能モジュールが使用するリソースの量が上限に達したことを示すログ情報を生成するログ情報生成手段とを備える。
【００２３】
第２の構成は、第１機能モジュールと、その実行に前記第１機能モジュールを必要とする複数の第２機能モジュールとを含むソフトウェアが使用するリソースを管理するリソース管理システムであって、前記第１機能モジュールが前記第１実行環境で前記第２機能モジュールの実行に使用するリソースの量を測定するリソース測定手段と、第２実行環境でのリソースの上限値を取得するリソース上限値取得手段と、前記リソース上限値取得手段で取得したリソースの上限値を、前記第１実行環境でのリソースの上限値に換算するリソース換算手段と、前記リソース測定手段で測定したリソースの量および前記リソース換算手段で換算したリソースの上限値に基づいて、前記機能モジュールが使用するリソースの量が上限に達したことを示すログ情報を生成するログ情報生成手段とを備える。以下、形態６のソフトウェア認証プログラム、並びに形態１１および１２のソフトウェア認証方法において同じである。
【００２４】
〔形態３〕  さらに、形態３のソフトウェア認証システムは、
第１実行環境とは異なる第２実行環境で機能モジュールが使用するリソースの使用状況を監視するリソース監視手段と、前記リソース監視手段の監視結果に基づいて前記リソース使用状況を示すログ情報を生成するログ情報生成手段とを備えるリソース管理システムにより生成された前記ログ情報に基づいて前記機能モジュールを含むソフトウェアを認証するソフトウェア認証システムであって、
前記ログ情報を取得するログ情報取得手段と、前記ログ情報取得手段で取得したログ情報に基づいて前記リソース使用状況が前記第１実行環境に適合するかを判定する動作判定手段と、前記動作判定手段が適合すると判定したときは、前記ソフトウェアに認証情報を付加するソフトウェア認証手段とを備えることを特徴とする。
【００２５】
このような構成であれば、リソース管理システムでは、リソース監視手段により、機能モジュールが第２実行環境で使用するリソースの使用状況が監視され、ログ情報生成手段により、その監視結果に基づいてリソース使用状況を示すログ情報が生成される。
本システムでは、ログ情報取得手段により、このように生成されたログ情報が取得され、動作判定手段により、取得されたログ情報に基づいてリソース使用状況が第１実行環境に適合するか否かが判定される。その結果、リソース使用状況が適合すると判定されると、ソフトウェア認証手段により、ソフトウェアに認証情報が付加される。
【００２６】
これにより、機能モジュールが使用するリソースの使用状況が第１実行環境に適合するソフトウェアに対してのみ認証情報が付加されるので、ソフトウェアの動作を比較的確実に保証することができる。したがって、従来に比して、ソフトウェアの開発を容易に行うことができるとともに安定性の高いソフトウェアを開発することができるという効果が得られる。
【００２７】
ここで、リソース使用状況としては、例えば、機能モジュール自体またはそれが取り扱うファイルについてのファイル名およびパス名の長さ、ファイル名およびパス名に使用される文字種が含まれる。以下、形態７のソフトウェア認証プログラム、並びに形態１３および１４のソフトウェア認証方法において同じである。
【００２８】
〔形態４〕  さらに、形態４のソフトウェア認証システムは、形態１ないし３のいずれか１のソフトウェア認証システムにおいて、
前記機能モジュールの実行に必要な実行ファイルを取得する実行ファイル取得手段と、前記実行ファイル取得手段で取得した実行ファイルに基づいて、前記機能モジュールを構成する命令または命令群が前記第１実行環境で実行可能な命令または命令群のみからなるかを判定する第２動作判定手段とを備え、
前記ソフトウェア認証手段は、前記第２動作判定手段が前記第１実行環境で実行可能な命令または命令群のみからなると判定したときは、前記ソフトウェアに前記認証情報を付加するようになっていることを特徴とする。
【００２９】
このような構成であれば、実行ファイル取得手段により、機能モジュールの実行に必要な実行ファイルが取得され、第２動作判定手段により、取得された実行ファイルに基づいて、機能モジュールを構成する命令または命令群が第１実行環境で実行可能な命令または命令群のみからなるか否かが判定される。その結果、第１実行環境で実行可能な命令または命令群のみからなると判定されると、ソフトウェア認証手段により、ソフトウェアに認証情報が付加される。
これにより、機能モジュールを構成する命令または命令群が第１実行環境で実行可能な命令または命令群のみからなるソフトウェアに対してのみ認証情報が付加されるので、ソフトウェアの動作をさらに確実に保証することができる。
【００３０】
〔形態５〕  一方、上記目的を達成するために、形態５のソフトウェア認証プログラムは、
機能モジュールが第１実行環境で使用するリソースの量を測定するリソース測定手段と、前記リソース測定手段で測定したリソースの量を、前記機能モジュールが第２実行環境で使用するリソースの量に換算するリソース換算手段と、リソースの制限条件を示すリソース制限情報を取得するリソース制限情報取得手段と、前記リソース換算手段で換算したリソースの量および前記リソース制限情報取得手段で取得したリソース制限情報に基づいて、前記機能モジュールが使用するリソースの量が上限に達したことを示すログ情報を生成するログ情報生成手段とを備えるリソース管理システムにより生成された前記ログ情報に基づいて前記機能モジュールを含むソフトウェアを認証するソフトウェア認証プログラムであって、
前記ログ情報を取得するログ情報取得ステップと、前記ログ情報取得ステップで取得したログ情報に基づいて前記機能モジュールが使用するリソースの量が上限に達していないかを判定する動作判定ステップと、前記動作判定ステップで上限に達していないと判定したときは、前記ソフトウェアに認証情報を付加するソフトウェア認証ステップとからなる処理をコンピュータに実行させるためのプログラムを含むことを特徴とする。
【００３１】
このような構成であれば、コンピュータによってプログラムが読み取られ、読み取られたプログラムに従ってコンピュータが処理を実行すると、形態１のソフトウェア認証システムと同等の作用および効果が得られる。
ここで、ログ情報取得ステップは、ログ情報を取得すればどのような形態であってもよく、例えば、入力装置等からログ情報を入力してもよいし、外部の装置等からログ情報を獲得または受信してもよいし、記憶装置や記憶媒体等からログ情報を読み出してもよいし、機能モジュールその他のデータからログ情報を抽出してもよい。したがって、取得には、少なくとも入力、獲得、受信、読出および抽出が含まれる。以下、形態６および７のソフトウェア認証プログラム、並びに形態９ないし１４のソフトウェア認証方法において同じである。
【００３２】
〔形態６〕  さらに、形態６のソフトウェア認証プログラムは、
機能モジュールが第１実行環境で使用するリソースの量を測定するリソース測定手段と、第２実行環境でのリソースの上限値を取得するリソース上限値取得手段と、前記リソース上限値取得手段で取得したリソースの上限値を、前記第１実行環境でのリソースの上限値に換算するリソース換算手段と、前記リソース測定手段で測定したリソースの量および前記リソース換算手段で換算したリソースの上限値に基づいて、前記機能モジュールが使用するリソースの量が上限に達したことを示すログ情報を生成するログ情報生成手段とを備えるリソース管理システムにより生成された前記ログ情報に基づいて前記機能モジュールを含むソフトウェアを認証するソフトウェア認証プログラムであって、
前記ログ情報を取得するログ情報取得ステップと、前記ログ情報取得ステップで取得したログ情報に基づいて前記機能モジュールが使用するリソースの量が上限に達していないかを判定する動作判定ステップと、前記動作判定ステップで上限に達していないと判定したときは、前記ソフトウェアに認証情報を付加するソフトウェア認証ステップとからなる処理をコンピュータに実行させるためのプログラムを含むことを特徴とする。
このような構成であれば、コンピュータによってプログラムが読み取られ、読み取られたプログラムに従ってコンピュータが処理を実行すると、形態２のソフトウェア認証システムと同等の作用および効果が得られる。
【００３３】
〔形態７〕  さらに、形態７のソフトウェア認証プログラムは、
第１実行環境とは異なる第２実行環境で機能モジュールが使用するリソースの使用状況を監視するリソース監視手段と、前記リソース監視手段の監視結果に基づいて前記リソース使用状況を示すログ情報を生成するログ情報生成手段とを備えるリソース管理システムにより生成された前記ログ情報に基づいて前記機能モジュールを含むソフトウェアを認証するソフトウェア認証プログラムであって、
前記ログ情報を取得するログ情報取得ステップと、前記ログ情報取得ステップで取得したログ情報に基づいて前記リソース使用状況が前記第１実行環境に適合するかを判定する動作判定ステップと、前記動作判定ステップで適合すると判定したときは、前記ソフトウェアに認証情報を付加するソフトウェア認証ステップとからなる処理をコンピュータに実行させるためのプログラムを含むことを特徴とする。
このような構成であれば、コンピュータによってプログラムが読み取られ、読み取られたプログラムに従ってコンピュータが処理を実行すると、形態３のソフトウェア認証システムと同等の作用および効果が得られる。
【００３４】
〔形態８〕  さらに、形態８のソフトウェア認証プログラムは、形態５ないし７のいずれか１のソフトウェア認証プログラムにおいて、
前記機能モジュールの実行に必要な実行ファイルを取得する実行ファイル取得ステップと、前記実行ファイル取得ステップで取得した実行ファイルに基づいて、前記機能モジュールを構成する命令または命令群が前記第１実行環境で実行可能な命令または命令群のみからなるかを判定する第２動作判定ステップとからなる処理をコンピュータに実行させるためのプログラムを含み、
前記ソフトウェア認証ステップは、前記第２動作判定ステップで前記第１実行環境で実行可能な命令または命令群のみからなると判定したときは、前記ソフトウェアに前記認証情報を付加することを特徴とする。
このような構成であれば、コンピュータによってプログラムが読み取られ、読み取られたプログラムに従ってコンピュータが処理を実行すると、形態４のソフトウェア認証システムと同等の作用および効果が得られる。
【００３５】
〔形態９〕  一方、上記目的を達成するために、形態９のソフトウェア認証方法は、
機能モジュールが第１実行環境で使用するリソースの量を測定するリソース測定手段と、前記リソース測定手段で測定したリソースの量を、前記機能モジュールが第２実行環境で使用するリソースの量に換算するリソース換算手段と、リソースの制限条件を示すリソース制限情報を取得するリソース制限情報取得手段と、前記リソース換算手段で換算したリソースの量および前記リソース制限情報取得手段で取得したリソース制限情報に基づいて、前記機能モジュールが使用するリソースの量が上限に達したことを示すログ情報を生成するログ情報生成手段とを備えるリソース管理システムにより生成された前記ログ情報に基づいて前記機能モジュールを含むソフトウェアを認証するソフトウェア認証方法であって、
前記ログ情報を取得するログ情報取得ステップと、前記ログ情報取得ステップで取得したログ情報に基づいて前記機能モジュールが使用するリソースの量が上限に達していないかを判定する動作判定ステップと、前記動作判定ステップで上限に達していないと判定したときは、前記ソフトウェアに認証情報を付加するソフトウェア認証ステップとを含むことを特徴とする。
これにより、形態１のソフトウェア認証システムと同等の効果が得られる。
【００３６】
〔形態１０〕  さらに、形態１０のソフトウェア認証方法は、
機能モジュールが第１実行環境で使用するリソースの量を測定するリソース測定手段と、前記リソース測定手段で測定したリソースの量を、前記機能モジュールが第２実行環境で使用するリソースの量に換算するリソース換算手段と、リソースの制限条件を示すリソース制限情報を取得するリソース制限情報取得手段と、前記リソース換算手段で換算したリソースの量および前記リソース制限情報取得手段で取得したリソース制限情報に基づいて、前記機能モジュールが使用するリソースの量が上限に達したことを示すログ情報を生成するログ情報生成手段とを備えるリソース管理システムにより生成された前記ログ情報に基づいて前記機能モジュールを含むソフトウェアを認証するソフトウェア認証方法であって、
演算手段が、前記ログ情報を取得するログ情報取得ステップと、
前記演算手段が、前記ログ情報取得ステップで取得したログ情報に基づいて前記機能モジュールが使用するリソースの量が上限に達していないかを判定する動作判定ステップと、
前記動作判定ステップで上限に達していないと判定したときは、前記演算手段が、前記ソフトウェアに認証情報を付加するソフトウェア認証ステップとを含むことを特徴とする。
これにより、形態１のソフトウェア認証システムと同等の効果が得られる。
【００３７】
〔形態１１〕  さらに、形態１１のソフトウェア認証方法は、
機能モジュールが第１実行環境で使用するリソースの量を測定するリソース測定手段と、第２実行環境でのリソースの上限値を取得するリソース上限値取得手段と、前記リソース上限値取得手段で取得したリソースの上限値を、前記第１実行環境でのリソースの上限値に換算するリソース換算手段と、前記リソース測定手段で測定したリソースの量および前記リソース換算手段で換算したリソースの上限値に基づいて、前記機能モジュールが使用するリソースの量が上限に達したことを示すログ情報を生成するログ情報生成手段とを備えるリソース管理システムにより生成された前記ログ情報に基づいて前記機能モジュールを含むソフトウェアを認証するソフトウェア認証方法であって、
前記ログ情報を取得するログ情報取得ステップと、前記ログ情報取得ステップで取得したログ情報に基づいて前記機能モジュールが使用するリソースの量が上限に達していないかを判定する動作判定ステップと、前記動作判定ステップで上限に達していないと判定したときは、前記ソフトウェアに認証情報を付加するソフトウェア認証ステップとを含むことを特徴とする。
これにより、形態２のソフトウェア認証システムと同等の効果が得られる。
【００３８】
〔形態１２〕  さらに、形態１２のソフトウェア認証方法は、
機能モジュールが第１実行環境で使用するリソースの量を測定するリソース測定手段と、第２実行環境でのリソースの上限値を取得するリソース上限値取得手段と、前記リソース上限値取得手段で取得したリソースの上限値を、前記第１実行環境でのリソースの上限値に換算するリソース換算手段と、前記リソース測定手段で測定したリソースの量および前記リソース換算手段で換算したリソースの上限値に基づいて、前記機能モジュールが使用するリソースの量が上限に達したことを示すログ情報を生成するログ情報生成手段とを備えるリソース管理システムにより生成された前記ログ情報に基づいて前記機能モジュールを含むソフトウェアを認証するソフトウェア認証方法であって、
演算手段が、前記ログ情報を取得するログ情報取得ステップと、
前記演算手段が、前記ログ情報取得ステップで取得したログ情報に基づいて前記機能モジュールが使用するリソースの量が上限に達していないかを判定する動作判定ステップと、
前記動作判定ステップで上限に達していないと判定したときは、前記演算手段が、前記ソフトウェアに認証情報を付加するソフトウェア認証ステップとを含むことを特徴とする。
これにより、形態２のソフトウェア認証システムと同等の効果が得られる。
【００３９】
〔形態１３〕  さらに、形態１３のソフトウェア認証方法は、
第１実行環境とは異なる第２実行環境で機能モジュールが使用するリソースの使用状況を監視するリソース監視手段と、前記リソース監視手段の監視結果に基づいて前記リソース使用状況を示すログ情報を生成するログ情報生成手段とを備えるリソース管理システムにより生成された前記ログ情報に基づいて前記機能モジュールを含むソフトウェアを認証するソフトウェア認証方法であって、
前記ログ情報を取得するログ情報取得ステップと、前記ログ情報取得ステップで取得したログ情報に基づいて前記リソース使用状況が前記第１実行環境に適合するかを判定する動作判定ステップと、前記動作判定ステップで適合すると判定したときは、前記ソフトウェアに認証情報を付加するソフトウェア認証ステップとを含むことを特徴とする。
これにより、形態３のソフトウェア認証システムと同等の効果が得られる。
【００４０】
〔形態１４〕  さらに、形態１４のソフトウェア認証方法は、
第１実行環境とは異なる第２実行環境で機能モジュールが使用するリソースの使用状況を監視するリソース監視手段と、前記リソース監視手段の監視結果に基づいて前記リソース使用状況を示すログ情報を生成するログ情報生成手段とを備えるリソース管理システムにより生成された前記ログ情報に基づいて前記機能モジュールを含むソフトウェアを認証するソフトウェア認証方法であって、
演算手段が、前記ログ情報を取得するログ情報取得ステップと、
前記演算手段が、前記ログ情報取得ステップで取得したログ情報に基づいて前記リソース使用状況が前記第１実行環境に適合するかを判定する動作判定ステップと、
前記動作判定ステップで適合すると判定したときは、前記演算手段が、前記ソフトウェアに認証情報を付加するソフトウェア認証ステップとを含むことを特徴とする。
これにより、形態３のソフトウェア認証システムと同等の効果が得られる。
【００４１】
〔形態１５〕  さらに、形態１５のソフトウェア認証方法は、形態９ないし１４のいずれか１のソフトウェア認証方法において、
前記機能モジュールの実行に必要な実行ファイルを取得する実行ファイル取得ステップと、前記実行ファイル取得ステップで取得した実行ファイルに基づいて、前記機能モジュールを構成する命令または命令群が前記第１実行環境で実行可能な命令または命令群のみからなるかを判定する第２動作判定ステップとを含み、
前記ソフトウェア認証ステップは、前記第２動作判定ステップで前記第１実行環境で実行可能な命令または命令群のみからなると判定したときは、前記ソフトウェアに前記認証情報を付加することを特徴とする。
これにより、形態４のソフトウェア認証システムと同等の効果が得られる。
【発明を実施するための最良の形態】
【００４２】
以下、本発明の第１の実施の形態を図面を参照しながら説明する。図１ないし図２１は、本発明に係るソフトウェア認証システムおよびソフトウェア認証プログラム、並びにソフトウェア認証方法の第１の実施の形態を示す図である。
本実施の形態は、本発明に係るソフトウェア認証システムおよびソフトウェア認証プログラム、並びにソフトウェア認証方法を、図２に示すように、ホスト端末１００上のＪＡＶＡ（登録商標）アプリケーションの実行環境において、ネットワークプリンタの動作を制御するためのＪＡＶＡ（登録商標）クラスセットをエミュレーションする場合について適用したものである。
【００４３】
まず、本発明を適用するホスト端末１００の機能概要を説明する。
図１は、ＪＡＶＡ（登録商標）ソフトウェアの構成を示す図である。
ＪＡＶＡ（登録商標）アプリケーションの実行環境では、ＪＡＶＡ（登録商標）クラスセットの実行を制御するＪＡＶＡ（登録商標）クラスおよびＪＶＭ（Java（登録商標） Virtual Machine）からなる共通機能モジュールをＯＳ（Operating System）上で実行し、ＪＡＶＡ（登録商標）クラスセットである個別機能モジュールを共通機能モジュール上で実行する。ここで、ＪＡＶＡ（登録商標）ソフトウェアは、共通機能モジュールおよび個別機能モジュールから構成される。
【００４４】
共通機能モジュールは、図１に示すように、複数の個別機能モジュールを実行可能となっている。図１の例では、共通機能モジュールａ上で２つの個別機能モジュールｂ，ｃが実行されている場合を示している。ここで、個別機能モジュールｂが使用するリソースの量をｘ１、共通機能モジュールａが個別機能モジュールｂの実行に使用するリソースの量をｘ２、個別機能モジュールｂが使用可能なリソースの上限値をＸmaxとした場合、本実施の形態では、ｘ１＋ｘ２≦Ｘmaxとなるようにリソースの量を制限する。
【００４５】
図２は、ホスト端末１００の機能概要を示す機能ブロック図である。
ホスト端末１００は、図２に示すように、ＯＳ１１０と、共通機能モジュール１２０と、複数の個別機能モジュール１３０と、アプリケーション認証部１４０とを有して構成されている。
ＯＳ１１０は、ＪＡＶＡ（登録商標）ソフトウェアが使用するリソースの量を測定するリソース測定部１０と、ＪＡＶＡ（登録商標）ソフトウェア全体が使用するリソースの量を制限するリソース制限部１２とを有して構成されている。
【００４６】
リソース制限部１２は、リソース測定部１０で測定したリソースの量が、ＪＡＶＡ（登録商標）ソフトウェアに割り当てられた所定の上限値未満となるように、ＪＡＶＡ（登録商標）ソフトウェアが使用するリソースを制限する。
共通機能モジュール１２０は、個別機能モジュール１３０の実行を管理する個別機能モジュール管理部１４と、個別機能モジュール管理部１４および個別機能モジュール１３０が使用するリソースの量を測定するリソース測定部１６と、ホスト端末１００で所定条件で使用されるリソースの量およびネットワークプリンタで同所定条件で使用されるリソースの量に基づき決定される換算率を登録したリソース換算テーブル２２と、リソースの量を換算するリソース換算部２４とを有して構成されている。
【００４７】
リソース測定部１６は、各個別機能モジュール１３０ごとに、その個別機能モジュール１３０が使用するリソースの量、および個別機能モジュール管理部１４がその個別機能モジュール１３０の実行に使用するリソースの量を測定する。
リソース換算部２４は、リソース換算テーブル２２に基づいて、リソース測定部１６で測定したリソースの量を、ネットワークプリンタで使用するリソースの量に換算する。
【００４８】
共通機能モジュール１２０は、さらに、個別機能モジュール１３０がネットワークプリンタでのリソースの上限値を取得する上限値取得部１８と、個別機能モジュール管理部１４および個別機能モジュール１３０が使用するリソースの量を制限するリソース制限部２０と、ログ情報を生成するログ情報生成部２６とを有して構成されている。
リソース制限部２０は、リソース換算部２４で換算したリソースの量が、上限値取得部１８で取得した上限値未満となるように、個別機能モジュール１３０が使用するリソースの量、および個別機能モジュール管理部１４がその個別機能モジュール１３０の実行に使用するリソースの量を制限する。
【００４９】
ログ情報生成部２６は、リソース換算部２４で換算したリソースの量が、上限値取得部１８で取得した上限値以上であると判定したときは、個別機能モジュール１３０が使用するリソースの量が上限に達したことを示すログ情報を生成する。
アプリケーション認証部１４０は、ログ情報生成部２６が生成したログ情報を取得するログ情報取得部２８と、ログ情報取得部２８で取得したログ情報に基づいて個別機能モジュール１３０が使用するリソースの量が上限に達したか否かを判定する動作判定部３０と、動作判定部３０が上限に達していないと判定したときは、個別機能モジュール１３０に電子署名情報を付加するモジュール認証部３２とを有して構成されている。
【００５０】
次に、ホスト端末１００の構成を説明する。
図３は、ホスト端末１００のハードウェア構成を示すブロック図である。
ホスト端末１００は、図３に示すように、制御プログラムに基づいて演算およびシステム全体を制御するＣＰＵ５０と、所定領域にあらかじめＣＰＵ５０の制御プログラム等を格納しているＲＯＭ５２と、ＲＯＭ５２等から読み出したデータやＣＰＵ５０の演算過程で必要な演算結果を格納するためのＲＡＭ５４と、外部装置に対してデータの入出力を媒介するＩ／Ｆ５８とで構成されており、これらは、データを転送するための信号線であるバス５９で相互にかつデータ授受可能に接続されている。
【００５１】
Ｉ／Ｆ５８には、外部装置として、ヒューマンインターフェースとしてデータの入力が可能なキーボードやマウス等からなる入力装置６０と、データやテーブル等をファイルとして格納する記憶装置６２と、画像信号に基づいて画面を表示する表示装置６４と、ネットワーク１９９に接続するための信号線とが接続されている。
次に、記憶装置６２のデータ構造を説明する。
【００５２】
記憶装置６２は、共通機能モジュール１２０および複数の個別機能モジュール１３０を記憶している。
個別機能モジュール１３０は、ネットワークプリンタでのリソースの上限値を格納したリソース制限情報を含んで構成されている。
図４は、リソース制限情報４００のデータ構造を示す図である。
【００５３】
リソース制限情報４００は、図４に示すように、個別機能モジュール１３０および共通機能モジュール１２０がその個別機能モジュール１３０の実行に使用可能なメモリ（ＲＡＭ５４）の上限値を格納したフィールド４０２と、個別機能モジュール１３０および共通機能モジュール１２０がその個別機能モジュール１３０の実行に起動可能なクラス数を格納したフィールド４０４とを含んで構成されている。
【００５４】
個別機能モジュール１３０は、さらに、個別機能モジュール１３０に関するモジュール情報を含んで構成されている。
図５は、モジュール情報４２０のデータ構造を示す図である。
モジュール情報４２０は、図５に示すように、個別機能モジュール１３０が使用するリソースの量を制限する対象（以下、リソース管理対象という。）とするか否かを格納したフィールド４２２と、個別機能モジュール１３０が実行可能なネットワークプリンタの機種を格納したフィールド４２４と、電子署名情報を格納したフィールド４２６とを含んで構成されている。
【００５５】
図５の例では、フィールド４２２には「有効」が格納されている。これは、個別機能モジュール１３０をリソース管理対象として管理することを示している。さらに、フィールド４２４には「TypeA」が、フィールド４２６には「Ｘ社」がそれぞれ格納されている。これは、個別機能モジュール１３０が実行可能な機種が「TypeA」であり、Ｘ社の電子署名を受けていることを示している。
【００５６】
記憶装置６２は、さらに、共通機能モジュール１２０の実行環境を示す実行環境情報を登録した実行環境情報登録テーブルを記憶している。
図６は、実行環境情報登録テーブル４４０のデータ構造を示す図である。
実行環境情報登録テーブル４４０は、図６に示すように、個別機能モジュール１３０の起動可能な個数の上限値を登録したフィールド４４２と、実行すべき個別機能モジュール１３０の名称を登録したフィールド４４４と、削除すべき個別機能モジュール１３０の名称を登録したフィールド４４６と、エミュレーションするネットワークプリンタの機種を登録したフィールド４４８と、対応可能な電子署名情報を登録したフィールド４５０とを含んで構成されている。
【００５７】
図６の例では、フィールド４４２には「５」が、フィールド４４４には「個別機能モジュールｂ，ｄ」が、フィールド４４６には「個別機能モジュールｃ」がそれぞれ登録されている。これは、個別機能モジュール１３０を最大５個まで起動することができ、共通機能モジュール１２０の起動時に、個別機能モジュールｂ，ｄを実行し、個別機能モジュールｃを削除すべきことを示している。さらに、フィールド４４８には「TypeA」が、フィールド４５０には「Ｘ社」がそれぞれ登録されている。これは、エミュレーションするネットワークプリンタの機種が「TypeA」であり、Ｘ社の電子署名情報を含む個別機能モジュール１３０を実行できることを示している。
【００５８】
記憶装置６２は、さらに、リソース換算テーブル２２を記憶している。
図７は、リソース換算テーブル２２のデータ構造を示す図である。
リソース換算テーブル２２には、図７に示すように、リソースの種別または使用形態ごとに１つのレコードが登録されている。各レコードは、リソースの名称を登録するフィールド５０２と、換算率を登録するフィールド５０４とを含んで構成されている。
【００５９】
図７の例では、第１段目のレコードには、リソースの名称として「メモリ  使用形態Ａ」が、換算率として「１」がそれぞれ登録されている。これは、個別機能モジュール１３０がメモリを使用形態Ａで使用する場合は、個別機能モジュール１３０がホスト端末１００で使用するメモリ量に換算率「１」を乗算することにより、ネットワークプリンタで使用するメモリ量への換算を行うことを示している。同様に、個別機能モジュール１３０がメモリを使用形態Ｂ，Ｃで使用する場合は、使用形態Ｂ，Ｃに対応する換算率を採用する。
【００６０】
メモリの使用形態Ａ〜Ｃは、共通機能モジュール１２０および個別機能モジュール１３０が使用する関数やライブラリによって決定される。例えば、整数型の変数を扱うライブラリ等を使用する場合は使用形態Ａとなり、ダブル型の変数を扱うライブラリ等を使用する場合は使用形態Ｂとなる。
また、第４段目のレコードには、リソースの名称として「クラス数」が、換算率として「１」がそれぞれ登録されている。これは、個別機能モジュール１３０がホスト端末１００で起動するクラス数に換算率「１」を乗算することにより、ネットワークプリンタで起動するクラス数への換算を行うことを示している。
【００６１】
なお、リソース換算テーブル２２には、複数のテストモジュールのそれぞれについて、ホスト端末１００およびネットワークプリンタでそのテストモジュールが使用するリソースの量に基づいて換算率を決定し、各テストモジュールについて決定された換算率のうち最大値が登録されている。
記憶装置６２は、さらに、リソース管理対象となる各個別機能モジュール１３０ごとに、その個別機能モジュール１３０が使用するリソースの量を管理するリソース管理テーブルを記憶している。リソース管理テーブルは、個別機能モジュール１３０がリソース管理対象である場合にその起動に伴って生成される。
【００６２】
図８は、リソース管理テーブル４６０のデータ構造を示す図である。
リソース管理テーブル４６０には、図８に示すように、リソースの種別ごとに１つのレコードが登録されている。各レコードは、リソースの名称を登録するフィールド４６２と、個別機能モジュール１３０がネットワークプリンタでのリソースの上限値を登録するフィールド４６４と、個別機能モジュール１３０がホスト端末１００で現在使用しているリソースの量を登録するフィールド４６６と、フィールド４６６の値を、ネットワークプリンタで使用するリソースの量に換算した値を登録するフィールド４６８とを含んで登録されている。
【００６３】
図８の例では、第１段目のレコードには、リソースの名称として「メモリ」が、上限値として「1000000」が、現在値としてメモリの使用形態Ａ〜Ｃごとに「200000」、「100000」および「150000」が、換算値として「650000」がそれぞれ登録されている。これは、個別機能モジュール１３０がネットワークプリンタでのメモリ量の上限値が1000000[byte]であり、現在メモリを、使用形態Ａで200000[byte]、使用形態Ｂで100000[byte]、使用形態Ｃで150000[byte]使用していることを示している。さらに、ネットワークプリンタで使用するメモリ量に換算した値（以下、換算メモリ量という。）が650000[byte]であることを示している。換算メモリ量は、図７のリソース換算テーブル２２を参照し、200000×１＋100000×1.5＋150000×２＝650000として算出することができる。
【００６４】
また、第２段目のレコードには、リソースの名称として「クラス数」が、上限値として「100」が、現在値として「20」が、換算値として「20」がそれぞれ登録されている。これは、個別機能モジュール１３０がネットワークプリンタで起動可能なクラス数の上限値が100個であり、現在クラスを20個起動していることを示している。さらに、ネットワークプリンタで起動するクラス数に換算した値（以下、換算クラス数という。）が20個であることを示している。換算クラス数は、図７のリソース換算テーブル２２を参照し、20×１＝20として算出することができる。
【００６５】
記憶装置６２は、さらに、個別機能モジュール１３０が受信するイベントを処理するイベントリスナを登録するイベントリスナテーブル４８０を記憶している。
図９は、イベントリスナテーブル４８０のデータ構造を示す図である。
イベントリスナテーブル４８０には、図９に示すように、個別機能モジュール１３０が登録するイベントリスナごとにレコードが登録される。各レコードは、イベントリスナの名称を登録するフィールド４８２を含んで登録されている。
【００６６】
図３に戻り、ＣＰＵ５０は、マイクロプロセッシングユニット等からなり、ＲＯＭ５２の所定領域に格納されている所定のプログラムを起動させ、そのプログラムに従って、図１０、図１４、図１５、図１７および図１８のフローチャートに示す個別機能モジュール制御処理、クラス読込処理、イベントリスナ制御処理、インスタンス削除処理およびモジュール認証処理を共通機能モジュール１２０の処理としてそれぞれ時分割で実行する。
【００６７】
初めに、個別機能モジュール制御処理を説明する。
図１０は、個別機能モジュール制御処理を示すフローチャートである。
個別機能モジュール制御処理は、個別機能モジュール１３０の削除および実行を制御する処理であって、ＣＰＵ５０において実行されると、図１０に示すように、まず、ステップＳ１００に移行する。
【００６８】
ステップＳ１００では、実行すべき個別機能モジュール１３０の名称および削除すべき個別機能モジュール１３０の名称を実行環境情報登録テーブル４４０から取得し、ステップＳ１０２に移行して、削除すべき個別機能モジュール１３０が存在するか否かを判定し、削除すべき個別機能モジュール１３０が存在すると判定したとき(Yes)は、ステップＳ１０４に移行する。
【００６９】
ステップＳ１０４では、取得した名称に基づいて該当の個別機能モジュール１３０を記憶装置６２から削除し、ステップＳ１０６に移行して、該当の個別機能モジュール１３０に含まれるモジュール情報４２０に基づいて、該当の個別機能モジュール１３０がリソース管理対象であるか否かを判定し、該当の個別機能モジュール１３０がリソース管理対象であると判定したとき(Yes)は、ステップＳ１０８に移行する。
【００７０】
ステップＳ１０８では、該当の個別機能モジュール１３０に対応するリソース管理テーブル４６０を記憶装置６２から削除し、ステップＳ１１０に移行して、現在起動中のモジュール数を示す変数の値から「１」を減算し、ステップＳ１０２に移行する。
一方、ステップＳ１０６で、該当の個別機能モジュール１３０がリソース管理対象でないと判定したとき(No)は、ステップＳ１０２に移行する。
【００７１】
一方、ステップＳ１０２で、削除すべき個別機能モジュール１３０が存在しないと判定したとき(No)は、ステップＳ１１２に移行して、実行すべき個別機能モジュール１３０が存在するか否かを判定し、実行すべき個別機能モジュール１３０が存在すると判定したとき(Yes)は、ステップＳ１１４に移行する。
ステップＳ１１４では、現在起動中のモジュール数を示す変数の値が所定の上限値未満であるか否かを判定し、所定の上限値未満であると判定したとき(Yes)は、ステップＳ１１６に移行する。
【００７２】
ステップＳ１１６では、取得した名称に基づいて該当の個別機能モジュール１３０を記憶装置６２から読み込み、ステップＳ１１８に移行して、読み込んだ個別機能モジュール１３０の実行可否を判定する実行可否判定処理を実行し、ステップＳ１２０に移行する。
ステップＳ１２０では、実行可否判定処理から個別機能モジュール１３０の実行を許可することを示す戻り値が返却されたか否かを判定し、実行を許可することを示す戻り値が返却されたと判定したとき(Yes)は、ステップＳ１２２に移行する。
【００７３】
ステップＳ１２２では、該当の個別機能モジュール１３０に含まれるモジュール情報４２０に基づいて、該当の個別機能モジュール１３０がリソース管理対象であるか否かを判定し、該当の個別機能モジュール１３０がリソース管理対象であると判定したとき(Yes)は、ステップＳ１２４に移行する。
ステップＳ１２４では、該当の個別機能モジュール１３０に対応するリソース管理テーブル４６０を生成し、該当の個別機能モジュール１３０に含まれるリソース制限情報４００から上限値を取得し、取得した上限値を、生成したリソース管理テーブル４６０に登録し、ステップＳ１２６に移行して、現在起動中のモジュール数を示す変数の値に「１」を加算し、ステップＳ１２８に移行する。
【００７４】
ステップＳ１２８では、生成したリソース管理テーブル４６０のアドレスをリソース確保先の参照ポインタに設定し、ステップＳ１３０に移行して、該当の個別機能モジュール１３０を起動するモジュール起動処理を実行し、ステップＳ１３２に移行して、リソース確保先の参照ポインタをクリアし、ステップＳ１１２に移行する。
一方、ステップＳ１２２で、該当の個別機能モジュール１３０がリソース管理対象でないと判定したとき(No)は、ステップＳ１３４に移行して、ステップＳ１３０と同様のモジュール起動処理を実行し、ステップＳ１１２に移行する。
【００７５】
一方、ステップＳ１２０で、実行可否判定処理から個別機能モジュール１３０の実行を許可しないことを示す戻り値が返却されたと判定したとき(No)は、ステップＳ１１２に移行する。
一方、ステップＳ１１４で、現在起動中のモジュール数を示す変数の値が所定の上限値以上であると判定したとき(No)は、ステップＳ１３６に移行して、モジュール数が上限に達したことを示すログ情報を生成し、生成したログ情報を記憶装置６２のログファイルに記録し、一連の処理を終了して元の処理に復帰させる。
【００７６】
一方、ステップＳ１１２で、実行すべき個別機能モジュール１３０が存在しないと判定したとき(No)は、一連の処理を終了して元の処理に復帰させる。
次に、ステップＳ１１８の実行可否判定処理を説明する。
図１１は、実行可否判定処理を示すフローチャートである。
実行可否判定処理は、ステップＳ１１８において実行されると、図１１に示すように、まず、ステップＳ２００に移行する。
【００７７】
ステップＳ２００では、個別機能モジュール１３０に含まれるモジュール情報４２０から機種情報を取得し、ステップＳ２０２に移行して、取得した機種情報と実行環境情報登録テーブル４４０の機種情報が一致しているか否かを判定し、それら機種情報が一致していると判定したとき(Yes)は、ステップＳ２０４に移行する。
ステップＳ２０４では、個別機能モジュール１３０に含まれるモジュール情報４２０から電子署名情報を取得し、ステップＳ２０６に移行して、実行環境情報登録テーブル４４０に基づいて、取得した電子署名情報が対応可能なものであるか否かを判定し、対応可能な電子署名情報であると判定したとき(Yes)は、ステップＳ２０８に移行する。
【００７８】
ステップＳ２０８では、個別機能モジュール１３０に含まれるモジュール情報４２０に基づいて、個別機能モジュール１３０がリソース管理対象であるか否かを判定し、リソース管理対象であると判定したとき(Yes)は、ステップＳ２０９に移行する。
ステップＳ２０９では、実行環境情報登録テーブル４４０に対応するリソース換算テーブル２２が存在するか否かを判定し、対応のリソース換算テーブル２２が存在すると判定したとき(Yes)は、ステップＳ２１０に移行して、対応のリソース換算テーブル２２を記憶装置６２から読み込み、ステップＳ２１１に移行する。
【００７９】
ステップＳ２１１では、個別機能モジュール１３０に含まれるリソース制限情報４００から上限値を取得し、ステップＳ２１２に移行して、上限値の取得に成功したか否かを判定し、上限値の取得に成功したと判定したとき(Yes)は、ステップＳ２１４に移行する。
ステップＳ２１４では、取得した上限値が全メモリ残量未満であるか否かを判定し、全メモリ残量未満であると判定したとき(Yes)は、ステップＳ２１６に移行して、個別機能モジュール１３０の実行を許可することを示す戻り値を返却し、一連の処理を終了して元の処理に復帰させる。
【００８０】
一方、ステップＳ２１４で、取得した上限値が全メモリ残量以上であると判定したとき(No)は、ステップＳ２１７に移行して、上限値が全メモリ残量以上であることを示すログ情報を生成し、生成したログ情報を記憶装置６２のログファイルに記録し、ステップＳ２１８に移行して、個別機能モジュール１３０の実行を許可しないことを示す戻り値を返却し、一連の処理を終了して元の処理に復帰させる。
【００８１】
一方、ステップＳ２１２で、上限値の取得に失敗したと判定したとき(No)、ステップＳ２０６で、対応可能な電子署名情報でないと判定したとき(No)、およびステップＳ２０２で、機種情報が一致しないと判定したとき(No)はいずれも、ステップＳ２１８に移行する。
一方、ステップＳ２０９で、実行環境情報登録テーブル４４０に対応するリソース換算テーブル２２が存在しないと判定したとき(No)は、ステップＳ２１１に移行する。
【００８２】
一方、ステップＳ２０８で、個別機能モジュール１３０がリソース管理対象でないと判定したとき(No)は、ステップＳ２１６に移行する。
次に、ステップＳ１３０，Ｓ１３４のモジュール起動処理を説明する。
図１２は、モジュール起動処理を示すフローチャートである。
モジュール起動処理は、ステップＳ１３０，Ｓ１３４において実行されると、図１２に示すように、まず、ステップＳ３００に移行する。
【００８３】
ステップＳ３００では、個別機能モジュール１３０からクラスを読み込むべきクラス読込命令を出力し、ステップＳ３０２に移行して、クラスの読込に成功したか否かを判定し、クラスの読込に成功したと判定したとき(Yes)は、ステップＳ３０４に移行する。
ステップＳ３０４では、リソース確保先の参照ポインタが設定されているか否かを判定し、リソース確保先の参照ポインタが設定されていると判定したとき(Yes)は、ステップＳ３０５に移行して、読み込んだクラスの実行に必要なメモリ量を算出し、ステップＳ３０６に移行する。
【００８４】
ステップＳ３０６では、読み込んだクラスが使用するライブラリ等からメモリの使用形態を特定し、特定したメモリの使用形態に対応する換算率を、読み込んだリソース換算テーブル２２から取得し、算出したメモリ量に、取得した換算率を乗算することにより、ネットワークプリンタで使用するメモリ量への換算を行う。
次いで、ステップＳ３０７に移行して、リソース確保先の参照ポインタが指し示すリソース管理テーブル４６０（以下、参照リソース管理テーブル４６０という。）の使用メモリ量に換算メモリ量を加算し、ステップＳ３０８に移行して、加算した合計のメモリ量が、参照リソース管理テーブル４６０の上限値未満であるか否かを判定し、上限値未満であると判定したとき(Yes)は、ステップＳ３１０に移行する。
【００８５】
ステップＳ３１０では、読み込んだクラスのインスタンスをメモリ上に生成し、ステップＳ３１２に移行して、リソース確保先の参照ポインタの値を示すリソース確保先参照情報を、生成したインスタンスに保存し、ステップＳ３１３に移行して、換算メモリ量を、生成したインスタンスに保存し、ステップＳ３１４に移行する。
ステップＳ３１４では、インスタンスの生成に成功したか否かを判定し、インスタンスの生成に成功したと判定したとき(Yes)は、ステップＳ３１６に移行して、読み込んだクラスの機能を呼び出すクラス機能呼出処理を実行し、ステップＳ３１８に移行して、個別機能モジュール１３０のイベントリスナを登録するイベントリスナ登録処理を実行し、一連の処理を終了して元の処理に復帰させる。
【００８６】
一方、ステップＳ３０８で、合計のメモリ量が上限値以上であると判定したとき(No)は、ステップＳ３２０に移行して、参照リソース管理テーブル４６０の使用メモリ量から換算メモリ量を減算し、ステップＳ３２１に移行する。
ステップＳ３２１では、個別機能モジュール１３０が使用するメモリ量が上限に達したことを示すログ情報を生成し、生成したログ情報を記憶装置６２のログファイルに記録し、ステップＳ３２２に移行して、エラーを通知し、ステップＳ３１４に移行する。
【００８７】
一方、ステップＳ３０４で、リソース確保先の参照ポインタが設定されていないと判定したとき(No)は、ステップＳ３２４に移行して、読み込んだクラスのインスタンスをメモリ上に生成し、ステップＳ３１４に移行する。
一方、ステップＳ３１４で、インスタンスの生成に失敗したと判定したとき(No)、およびステップＳ３０２で、クラスの読込に失敗したと判定したとき(No)はいずれも、ステップＳ３１８に移行する。
【００８８】
次に、ステップＳ３１８のイベントリスナ登録処理を説明する。
図１３は、イベントリスナ登録処理を示すフローチャートである。
イベントリスナ登録処理は、ステップＳ３１８において実行されると、図１３に示すように、まず、ステップＳ４００に移行する。
ステップＳ４００では、個別機能モジュール１３０からイベントリスナクラスを読み込むべきクラス読込命令を出力し、ステップＳ４０２に移行して、イベントリスナクラスの読込に成功したか否かを判定し、イベントリスナクラスの読込に成功したと判定したとき(Yes)は、ステップＳ４０４に移行する。
【００８９】
ステップＳ４０４では、リソース確保先の参照ポインタが設定されているか否かを判定し、リソース確保先の参照ポインタが設定されていると判定したとき(Yes)は、ステップＳ４０５に移行して、読み込んだイベントリスナクラスの実行に必要なメモリ量を算出し、ステップＳ４０６に移行する。
ステップＳ４０６では、読み込んだイベントリスナクラスが使用するライブラリ等からメモリの使用形態を特定し、特定したメモリの使用形態に対応する換算率を、読み込んだリソース換算テーブル２２から取得し、算出したメモリ量に、取得した換算率を乗算することにより、ネットワークプリンタで使用するメモリ量への換算を行う。
【００９０】
次いで、ステップＳ４０７に移行して、参照リソース管理テーブル４６０の使用メモリ量に換算メモリ量を加算し、ステップＳ４０８に移行して、加算した合計のメモリ量が、参照リソース管理テーブル４６０の上限値未満であるか否かを判定し、上限値未満であると判定したとき(Yes)は、ステップＳ４１０に移行する。
ステップＳ４１０では、読み込んだイベントリスナクラスのインスタンスをメモリ上に生成し、ステップＳ４１２に移行して、リソース確保先の参照ポインタの値を示すリソース確保先参照情報を、生成したインスタンスに保存し、ステップＳ４１３に移行して、換算メモリ量を、生成したインスタンスに保存し、ステップＳ４１４に移行する。
【００９１】
ステップＳ４１４では、インスタンスの生成に成功したか否かを判定し、インスタンスの生成に成功したと判定したとき(Yes)は、ステップＳ４１６に移行して、生成したインスタンスのイベントリスナをイベントリスナ実行リストに登録し、一連の処理を終了して元の処理に復帰させる。
一方、ステップＳ４０８で、合計のメモリ量が上限値以上であると判定したとき(No)は、ステップＳ４１８に移行して、参照リソース管理テーブル４６０の使用メモリ量から換算メモリ量を減算し、ステップＳ４１９に移行する。
【００９２】
ステップＳ４１９では、個別機能モジュール１３０が使用するメモリ量が上限に達したことを示すログ情報を生成し、生成したログ情報を記憶装置６２のログファイルに記録し、ステップＳ４２０に移行して、エラーを通知し、ステップＳ４１４に移行する。
一方、ステップＳ４０４で、リソース確保先の参照ポインタが設定されていないと判定したとき(No)は、ステップＳ４２２に移行して、読み込んだイベントリスナクラスのインスタンスをメモリ上に生成し、ステップＳ４１４に移行する。
【００９３】
一方、ステップＳ４１４で、インスタンスの生成に失敗したと判定したとき(No)、およびステップＳ４０２で、イベントリスナクラスの読込に失敗したと判定したとき(No)はいずれも、一連の処理を終了して元の処理に復帰させる。
次に、クラス読込処理を説明する。
図１４は、クラス読込処理を示すフローチャートである。
【００９４】
クラス読込処理は、クラス読込命令に応じてクラスを読み込む処理であって、ＣＰＵ５０において実行されると、図１４に示すように、まず、ステップＳ５００に移行する。
ステップＳ５００では、クラス読込命令を取得したか否かを判定し、クラス読込命令を取得したと判定したとき(Yes)は、ステップＳ５０２に移行するが、そうでないと判定したとき(No)は、クラス読込命令を取得するまでステップＳ５００で待機する。
【００９５】
ステップＳ５０２では、クラス読込命令に係るクラスがキャッシュテーブルに登録されているか否かを判定し、キャッシュテーブルに登録されていないと判定したとき(No)は、ステップＳ５０４に移行する。
ステップＳ５０４では、クラス読込命令に係るクラスが属する個別機能モジュール１３０を特定し、ステップＳ５０６に移行して、特定した該当の個別機能モジュール１３０に含まれるモジュール情報４２０に基づいて、該当の個別機能モジュール１３０がリソース管理対象であるか否かを判定し、リソース管理対象であると判定したとき(Yes)は、ステップＳ５０８に移行する。
【００９６】
ステップＳ５０８では、該当の個別機能モジュール１３０に対応するリソース管理テーブル４６０のアドレスをリソース確保先の参照ポインタに設定し、ステップＳ５０９に移行する。
ステップＳ５０９では、クラス数に対応する換算率を、読み込んだリソース換算テーブル２２から取得し、クラス読込命令に係るクラスの数「１」に、取得した換算率を乗算することにより、ネットワークプリンタで起動するクラス数への換算を行う。
【００９７】
次いで、ステップＳ５１０に移行して、参照リソース管理テーブル４６０の起動クラス数に換算クラス数を加算し、ステップＳ５１２に移行して、加算した合計のクラス数が、参照リソース管理テーブル４６０の上限値未満であるか否かを判定し、上限値未満であると判定したとき(Yes)は、ステップＳ５１４に移行する。
ステップＳ５１４では、クラス読込命令に係るクラスを個別機能モジュール１３０から読み込み、ステップＳ５１６に移行して、読み込んだクラスをキャッシュテーブルに登録し、ステップＳ５１７に移行する。
【００９８】
ステップＳ５１７では、換算クラス数を、読み込んだクラスに保存し、ステップＳ５１８に移行して、リソース確保先の参照ポインタをクリアし、一連の処理を終了して元の処理に復帰させる。
一方、ステップＳ５１２で、合計のクラス数が上限値以上であると判定したとき(No)は、ステップＳ５２０に移行して、参照リソース管理テーブル４６０の起動クラス数から換算クラス数を減算し、ステップＳ５２１に移行する。
【００９９】
ステップＳ５２１では、個別機能モジュール１３０が起動するクラス数が上限に達したことを示すログ情報を生成し、生成したログ情報を記憶装置６２のログファイルに記録し、ステップＳ５２２に移行して、エラーを通知し、ステップＳ５１８に移行する。
一方、ステップＳ５０６で、該当の個別機能モジュール１３０がリソース管理対象でないと判定したとき(No)は、ステップＳ５２４に移行して、クラス読込命令に係るクラスを個別機能モジュール１３０から読み込み、ステップＳ５２６に移行して、読み込んだクラスをキャッシュテーブルに登録し、一連の処理を終了して元の処理に復帰させる。
【０１００】
一方、ステップＳ５０２で、クラス読込命令に係るクラスがキャッシュテーブルに登録されていると判定したとき(Yes)は、一連の処理を終了して元の処理に復帰させる。
次に、イベントリスナ制御処理を説明する。
図１５は、イベントリスナ制御処理を示すフローチャートである。
イベントリスナ制御処理は、イベントリスナの実行を制御する処理であって、ＣＰＵ５０において実行されると、図１５に示すように、まず、ステップＳ６００に移行する。
【０１０１】
ステップＳ６００では、イベントリスナ実行リストを取得し、ステップＳ６０２に移行して、取得したイベントリスナ実行リストに基づいて、実行すべきイベントリスナが存在するか否かを判定し、実行すべきイベントリスナが存在すると判定したとき(Yes)は、ステップＳ６０４に移行する。
ステップＳ６０４では、該当のイベントリスナの生成元となった個別機能モジュール１３０を特定し、ステップＳ６０６に移行して、特定した該当の個別機能モジュール１３０に含まれるモジュール情報４２０に基づいて、該当の個別機能モジュール１３０がリソース管理対象であるか否かを判定し、リソース管理対象であると判定したとき(Yes)は、ステップＳ６０８に移行する。
【０１０２】
ステップＳ６０８では、該当の個別機能モジュール１３０に対応するリソース管理テーブル４６０のアドレスをリソース確保先の参照ポインタに設定し、ステップＳ６１０に移行して、該当のイベントリスナを実行するイベントリスナ実行処理を実行し、ステップＳ６１２に移行して、リソース確保先の参照ポインタをクリアし、ステップＳ６１４に移行する。
【０１０３】
ステップＳ６１４では、該当のイベントリスナをイベントリスナ実行リストから削除し、ステップＳ６０２に移行する。
一方、ステップＳ６０６で、該当の個別機能モジュール１３０がリソース管理対象でないと判定したとき(No)は、ステップＳ６１６に移行して、該当のイベントリスナを実行し、ステップＳ６１４に移行する。
【０１０４】
一方、ステップＳ６０２で、実行すべきイベントリスナが存在しないと判定したとき(No)は、一連の処理を終了して元の処理に復帰させる。
次に、ステップＳ６１０のイベントリスナ実行処理を説明する。
図１６は、イベントリスナ実行処理を示すフローチャートである。
イベントリスナ実行処理は、ステップＳ６１０において実行されると、図１６に示すように、まず、ステップＳ７００に移行する。
【０１０５】
ステップＳ７００では、イベントリスナに含まれる命令リストの先頭にプログラムポインタを移動し、ステップＳ７０２に移行して、プログラムポインタが指し示すアドレスに実行すべき命令が存在するか否かを判定し、実行すべき命令が存在すると判定したとき(Yes)は、ステップＳ７０３に移行して、命令の実行に必要なメモリ量を算出し、ステップＳ７０４に移行する。
【０１０６】
ステップＳ７０４では、命令の実行に使用するライブラリ等からメモリの使用形態を特定し、特定したメモリの使用形態に対応する換算率を、読み込んだリソース換算テーブル２２から取得し、算出したメモリ量に、取得した換算率を乗算することにより、ネットワークプリンタで使用するメモリ量への換算を行う。
次いで、ステップＳ７０５に移行して、参照リソース管理テーブル４６０の使用メモリ量に換算メモリ量を加算し、ステップＳ７０６に移行して、加算した合計のメモリ量が、参照リソース管理テーブル４６０の上限値未満であるか否かを判定し、上限値未満であると判定したとき(Yes)は、ステップＳ７０８に移行する。
【０１０７】
ステップＳ７０８では、メモリを確保し、ステップＳ７１０に移行して、プログラムポインタが指し示すアドレスの命令を実行し、ステップＳ７１２に移行して、イベントリスナに含まれる命令リストの次にプログラムポインタを移動し、ステップＳ７１３に移行して、所定の待機時間だけ処理を待機し、ステップＳ７０２に移行する。
一方、ステップＳ７０６で、合計のメモリ量が上限値以上であると判定したとき(No)は、ステップＳ７１４に移行して、参照リソース管理テーブル４６０の使用メモリ量から換算メモリ量を減算し、ステップＳ７１５に移行する。
【０１０８】
ステップＳ７１５では、個別機能モジュール１３０が使用するメモリ量が上限に達したことを示すログ情報を生成し、生成したログ情報を記憶装置６２のログファイルに記録し、ステップＳ７１６に移行して、エラーを通知し、ステップＳ７１２に移行する。
一方、ステップＳ７０２で、実行すべき命令が存在しないと判定したとき(No)は、一連の処理を終了して元の処理に復帰させる。
【０１０９】
次に、インスタンス削除処理を説明する。
図１７は、インスタンス削除処理を示すフローチャートである。
インスタンス削除処理は、インスタンスを削除する処理であって、ＣＰＵ５０において実行されると、図１７に示すように、まず、ステップＳ８００に移行する。
ステップＳ８００では、削除すべきインスタンスを登録したインスタンス削除リストを取得し、ステップＳ８０２に移行して、取得したインスタンス削除リストに基づいて、削除すべきインスタンスが存在するか否かを判定し、削除すべきインスタンスが存在すると判定したとき(Yes)は、ステップＳ８０４に移行する。
【０１１０】
ステップＳ８０４では、該当のインスタンスからリソース確保先参照情報を取得し、ステップＳ８０５に移行して、リソース確保先参照情報の取得に成功したか否かを判定し、リソース確保先参照情報の取得に成功したと判定したとき(Yes)は、ステップＳ８０６に移行する。
ステップＳ８０６では、取得したリソース確保先参照情報に基づいてリソース確保先の参照ポインタを設定し、ステップＳ８０８に移行して、該当のインスタンスを削除し、ステップＳ８１０に移行して、該当のインスタンスの実行に必要なメモリ量を参照リソース管理テーブル４６０の使用メモリ量から減算し、ステップＳ８１２に移行する。
【０１１１】
ステップＳ８１２では、リソース確保先の参照ポインタをクリアし、ステップＳ８１４に移行して、該当のインスタンスをインスタンス削除リストから削除し、ステップＳ８０２に移行する。
一方、ステップＳ８０５で、リソース確保先参照情報の取得に失敗したと判定したとき(No)は、ステップＳ８１６に移行して、該当のインスタンスを削除し、ステップＳ８１４に移行する。
【０１１２】
一方、ステップＳ８０２で、削除すべきインスタンスが存在しないと判定したとき(No)は、一連の処理を終了して元の処理に復帰させる。
次に、モジュール認証処理を説明する。
図１８は、モジュール認証処理を示すフローチャートである。
モジュール認証処理は、ＣＰＵ５０において実行されると、図１８に示すように、まず、ステップＳ９００に移行する。
【０１１３】
ステップＳ９００では、記憶装置６２のログファイルからログ情報を読み出し、ステップＳ９０２に移行して、読み出したログ情報に基づいて、個別機能モジュール１３０の起動クラス数または使用メモリ量が上限に達したか否かを判定し、起動クラス数または使用メモリ量が上限に達していないと判定したとき(No)は、ステップＳ９０４に移行する。
ステップＳ９０４では、読み出したログ情報に基づいて、個別機能モジュール１３０がネットワークプリンタにインストール不可能である否かを判定し、個別機能モジュール１３０がインストール可能であると判定したとき(No)は、ステップＳ９０６に移行する。
【０１１４】
ステップＳ９０６では、記憶装置６２のログファイルに未処理のログ情報が存在するか否かを判定し、未処理のログ情報が存在しないと判定したとき(No)は、ステップＳ９０８に移行して、個別機能モジュール１３０の実行ファイルを記憶装置６２から読み出し、ステップＳ９１０に移行する。
ステップＳ９１０では、読み出した実行ファイルに電子署名情報を付加し、ステップＳ９１２に移行して、電子署名情報を付加した実行ファイルを記憶装置６２に保存し、一連の処理を終了して元の処理に復帰させる。
【０１１５】
一方、ステップＳ９０６で、未処理のログ情報が存在すると判定したとき(Yes)は、ステップＳ９００に移行する。
一方、ステップＳ９０４で、個別機能モジュール１３０がインストール不可能であると判定したとき(Yes)、およびステップＳ９０２で、起動クラス数または使用メモリ量が上限に達したと判定したとき(Yes)はいずれも、ステップＳ９１４に移行して、個別機能モジュール１３０が認証不可能であることを示すメッセージを表示装置６４に表示し、一連の処理を終了して元の処理に復帰させる。
【０１１６】
次に、本実施の形態の動作を説明する。
初めに、リソース管理対象となる個別機能モジュール１３０を実行する場合を説明する。
ホスト端末１００では、共通機能モジュール１２０の実行により個別機能モジュール制御処理が実行される。個別機能モジュール制御処理では、ステップＳ１０２〜Ｓ１１０を経て、削除すべき個別機能モジュール１３０が存在する場合は、その個別機能モジュール１３０が削除される。次いで、ステップＳ１１４を経て、現在起動中のモジュール数が所定の上限値未満であると判定されると、ステップＳ１１６，Ｓ１１８を経て、該当の個別機能モジュール１３０が読み込まれ、読み込まれた個別機能モジュール１３０の実行可否が判定される。実行可否判定処理では、個別機能モジュール１３０について、一致する機種情報および対応可能な電子署名情報を有し、かつ、使用可能なメモリ量の上限値が全メモリ残量未満である場合に実行が許可される。
【０１１７】
個別機能モジュール１３０の実行が許可されると、ステップＳ１２４〜Ｓ１２８を経て、リソース管理テーブル４６０が生成され、現在起動中のモジュール数が「１」加算され、個別機能モジュール１３０が起動する。モジュール起動処理では、ステップＳ５０９，Ｓ５１０，Ｓ３０５〜Ｓ３０７を経て、個別機能モジュール１３０の起動クラス数および使用メモリ量が、ネットワークプリンタでの起動クラス数および使用メモリ量に換算されて加算される。このとき、起動クラス数および使用メモリ量のいずれかが上限値以上となると、ステップＳ５２１，Ｓ５２２またはステップＳ３２１，Ｓ３２２を経て、個別機能モジュール１３０の起動クラス数または使用メモリ量が上限に達したことを示すログ情報が生成されるとともにエラーが通知され、クラスの読込またはインスタンスの生成が中止される。
【０１１８】
これに対し、起動クラス数および使用メモリ量のいずれも上限値未満である場合は、ステップＳ５１４，Ｓ３１０，Ｓ３１８を経て、個別機能モジュール１３０のクラスが読み込まれ、読み込まれたクラスのインスタンスが生成され、個別機能モジュール１３０のイベントリスナが登録される。イベントリスナ登録処理では、ステップＳ５０９，Ｓ５１０，Ｓ４０５〜Ｓ４０７を経て、個別機能モジュール１３０の起動クラス数および使用メモリ量が、ネットワークプリンタでの起動クラス数および使用メモリ量に換算されて加算される。このとき、起動クラス数および使用メモリ量のいずれかが上限値以上となると、ステップＳ５２１，Ｓ５２２またはステップＳ４１９，Ｓ４２０を経て、個別機能モジュール１３０の起動クラス数または使用メモリ量が上限に達したことを示すログ情報が生成されるとともにエラーが通知され、イベントリスナクラスの読込またはインスタンスの生成が中止される。
【０１１９】
これに対し、起動クラス数および使用メモリ量のいずれも上限値未満である場合は、ステップＳ５１４，Ｓ４１０，Ｓ４１６を経て、イベントリスナクラスが読み込まれ、イベントリスナクラスのインスタンスが生成され、生成されたインスタンスのイベントリスナがイベントリスナ実行リストに登録される。
一方、ホスト端末１００では、共通機能モジュール１２０の実行によりイベントリスナ制御処理が実行される。イベントリスナ制御処理では、ステップＳ７０３〜Ｓ７０５を経て、実行すべきイベントリスナの生成元となった個別機能モジュール１３０の使用メモリ量が、ネットワークプリンタでの使用メモリ量に換算されて加算される。このとき、使用メモリ量が上限値以上となると、ステップＳ７１５，Ｓ７１６を経て、個別機能モジュール１３０が使用するメモリ量が上限に達したことを示すログ情報が生成されるとともにエラーが通知され、イベントリスナの実行が中止される。
【０１２０】
これに対し、使用メモリ量が上限値未満である場合は、ステップＳ７１０を経て、イベントリスナに含まれる命令が実行される。
一方、ホスト端末１００では、共通機能モジュール１２０の実行によりインスタンス削除処理が実行される。インスタンス削除処理では、削除すべきインスタンスが存在する場合は、ステップＳ８０８，Ｓ８１０を経て、そのインスタンスが削除され、そのイベントリスナの生成元となった個別機能モジュール１３０の使用メモリ量が減算される。
【０１２１】
図１９は、エラーが発生した場合のログファイルの内容を示す図である。
エラーが発生した場合、ログファイルには、図１９に示すように、個別機能モジュール１３０が起動および停止したことを示すログ情報のほか、個別機能モジュール１３０の起動クラス数または使用メモリ量が上限に達したことを示すログ情報が記録される。
図２０は、エラーが発生しない場合のログファイルの内容を示す図である。
【０１２２】
これに対し、エラーが発生しない場合、ログファイルには、図２０に示すように、個別機能モジュール１３０が起動および停止したことを示すログ情報のみが記録される。
次に、リソース管理対象でない個別機能モジュール１３０を実行する場合を説明する。
ホスト端末１００では、個別機能モジュール制御処理が実行されると、ステップＳ１１６，Ｓ１１８を経て、該当の個別機能モジュール１３０が読み込まれ、読み込まれた個別機能モジュール１３０の実行可否が判定される。
【０１２３】
個別機能モジュール１３０の実行が許可されると、ステップＳ１３４を経て、個別機能モジュール１３０が起動する。モジュール起動処理では、ステップＳ５２４，Ｓ３２４，Ｓ３１８を経て、個別機能モジュール１３０のクラスが読み込まれ、読み込まれたクラスのインスタンスが生成され、個別機能モジュール１３０のイベントリスナが登録される。イベントリスナ登録処理では、ステップＳ５２４，Ｓ４２２，Ｓ４１６を経て、イベントリスナクラスが読み込まれ、イベントリスナクラスのインスタンスが生成され、生成されたインスタンスのイベントリスナがイベントリスナ実行リストに登録される。
【０１２４】
一方、ホスト端末１００では、イベントリスナ制御処理が実行されると、ステップＳ６１６を経て、実行すべきイベントリスナに含まれる命令が実行される。
一方、ホスト端末１００では、インスタンス削除処理が実行されると、削除すべきインスタンスが存在する場合は、ステップＳ８１６を経て、そのインスタンスが削除される。
図２１は、リソース管理対象となる個別機能モジュールｂ，ｃを並列に実行した場合を示すタイムチャートである。
【０１２５】
図２１において、実線は、個別機能モジュールｂのスレッド、および共通機能モジュール１２０のスレッドのうち個別機能モジュールｂの実行に用いられるものを示している。また、一点鎖線は、個別機能モジュールｃのスレッド、および共通機能モジュール１２０のスレッドのうち個別機能モジュールｃの実行に用いられるものを示している。
個別機能モジュールｂが実行されると、共通機能モジュール１２０のＡＭスレッド（起動処理部）が実行され、個別機能モジュールｂが起動してそのスレッドが実行される。また、共通機能モジュール１２０のＡＭスレッドが実行され、個別機能モジュールｂのイベントリスナが生成される。そして、個別機能モジュールｂに対応するイベントが発生すると、共通機能モジュール１２０のＡＭスレッド（イベント処理部）が実行され、個別機能モジュールｂのクラスが読み込まれ、読み込まれたインスタンスが生成される。個別機能モジュールｂが不要となった場合は、共通機能モジュール１２０のインスタンス削除スレッドが実行され、個別機能モジュールｂのインスタンスが削除される。この一連の処理において、共通機能モジュール１２０および個別機能モジュールｂのスレッドの実行に伴って増減する起動クラス数および使用メモリ量は、個別機能モジュールｂが使用するリソースの量として管理され、個別機能モジュールｂに設定された所定の上限値未満となるように制限される。
【０１２６】
この動作は、個別機能モジュールｃについても同様である。ただし、その一連の処理において、共通機能モジュール１２０および個別機能モジュールｃのスレッドの実行に伴って増減する起動クラス数および使用メモリ量は、個別機能モジュールｃが使用するリソースの量として管理され、個別機能モジュールｃに設定された所定の上限値未満となるように制限される。
【０１２７】
次に、個別機能モジュール１３０を認証する場合を説明する。
ホスト端末１００では、ログファイルが生成されると、ステップＳ９００〜Ｓ９０６を繰り返しを経て、ログファイルからログ情報が順次読み出され、個別機能モジュール１３０の起動クラス数または使用メモリ量が上限に達したか否か、および個別機能モジュール１３０がネットワークプリンタにインストール不可能であるか否かが判定される。図２０に示すログファイルのように、ログファイルに含まれるすべてのログ情報について、起動クラス数または使用メモリ量が上限に達せずかつインストール可能であると判定されると、ステップＳ９０８〜Ｓ９１２を経て、個別機能モジュール１３０の実行ファイルが読み出され、読み出された実行ファイルに電子署名情報が付加されて保存される。
【０１２８】
これに対し、図１９に示すログファイルのように、ログファイルに含まれるいずれかのログ情報について、起動クラス数または使用メモリ量が上限に達しまたはインストール不可能であると判定されると、ステップＳ９１４を経て、認証不可能であることを示すメッセージが表示される。
このようにして、本実施の形態では、個別機能モジュール１３０がホスト端末１００で使用するリソースの量を測定し、測定したリソースの量を、ネットワークプリンタで使用するリソースの量に換算し、個別機能モジュール１３０から上限値を取得し、換算したリソースの量および取得した上限値に基づいて、個別機能モジュール１３０が使用するリソースの量が上限に達したことを示すログ情報を生成するようになっている。
【０１２９】
これにより、個別機能モジュール１３０がネットワークプリンタで使用するリソースの量が、リソースの上限値に達するかをネットワークプリンタへの導入前に検証することができる。したがって、従来に比して、ソフトウェアの開発を容易に行うことができるとともに安定性の高いソフトウェアを開発することができる。
さらに、本実施の形態では、リソース管理対象となる各個別機能モジュール１３０ごとに、その個別機能モジュール１３０が使用するメモリ量、並びに共通機能モジュール１２０がその個別機能モジュール１３０の実行に使用するメモリ量および起動するクラス数を測定するようになっている。
【０１３０】
これにより、共通機能モジュール１２０がネットワークプリンタで使用するリソースの量が、リソースの上限値に達するかを個別機能モジュール１３０単位で検証することができる。
さらに、本実施の形態では、換算したリソースの量および取得した上限値に基づいて個別機能モジュール１３０によるリソースの確保を禁止するようになっている。
【０１３１】
これにより、個別機能モジュール１３０が上限値を超えてリソースの量を使用するのを制限することができる。
さらに、本実施の形態では、ホスト端末１００で所定条件で使用されるリソースの量およびネットワークプリンタで同所定条件で使用されるリソースの量に基づき決定される換算率を登録したリソース換算テーブル２２に基づいて換算を行うようになっている。
【０１３２】
これにより、ホスト端末１００およびネットワークプリンタの間でリソースの量を比較的正確に換算することができる。
さらに、本実施の形態では、共通機能モジュール１２０および個別機能モジュール１３０が使用するリソースの種別に応じてリソース換算テーブル２２から対応する換算率を取得し、取得した換算率に基づいて換算を行うようになっている。
【０１３３】
これにより、共通機能モジュール１２０および個別機能モジュール１３０が使用するリソースの種別に応じた換算を行うことができるので、ホスト端末１００およびネットワークプリンタの間でリソースの量をさらに正確に換算することができる。
さらに、本実施の形態では、共通機能モジュール１２０および個別機能モジュール１３０が使用するリソースの形態に応じてリソース換算テーブル２２から対応する換算率を取得し、取得した換算率に基づいて換算を行うようになっている。
【０１３４】
これにより、共通機能モジュール１２０および個別機能モジュール１３０が使用するリソースの形態に応じた換算を行うことができるので、ホスト端末１００およびネットワークプリンタの間でリソースの量をさらに正確に換算することができる。
さらに、本実施の形態では、リソース換算テーブル２２は、複数のテストモジュールのそれぞれについて、ホスト端末１００およびネットワークプリンタでそのテストモジュールが使用するリソースの量に基づいて換算率を決定し、各テストモジュールについて決定された換算率のうち最大値を登録した。
【０１３５】
これにより、リソース換算テーブル２２には、各テストモジュールについて決定された換算率のうち最大値が登録されているので、共通機能モジュール１２０および個別機能モジュール１３０が使用するリソースの量を多めに見積もることができる。したがって、個別機能モジュール１３０の動作を比較的確実に保証することができる。
さらに、本実施の形態では、ログファイルからログ情報を読み出し、読み出したログ情報に基づいて個別機能モジュール１３０が使用するリソースの量が上限に達したか否かを判定し、リソースの量が上限に達していないと判定したときは、個別機能モジュール１３０の実行ファイルに電子署名情報を付加するようになっている。
【０１３６】
これにより、使用するリソースの量が上限に達しない個別機能モジュール１３０に対してのみ電子署名情報が付加されるので、個別機能モジュール１３０の動作を比較的確実に保証することができる。
さらに、本実施の形態では、ログファイルからログ情報を読み出し、読み出したログ情報に基づいて個別機能モジュール１３０がネットワークプリンタにインストール不可能であるか否かを判定し、インストール可能であると判定したときは、個別機能モジュール１３０の実行ファイルに電子署名情報を付加するようになっている。
【０１３７】
これにより、ネットワークプリンタにインストール可能である個別機能モジュール１３０に対してのみ電子署名情報が付加されるので、個別機能モジュール１３０の動作をさらに確実に保証することができる。
上記第１の実施の形態において、リソース測定部１６およびステップＳ３０５，Ｓ４０５，Ｓ７０３は、形態１、５、９または１０のリソース測定手段に対応し、リソース換算部２４およびステップＳ３０６，Ｓ４０６，Ｓ５０９，Ｓ７０４は、形態１、５、９または１０のリソース換算手段に対応している。また、上限値取得部１８およびステップＳ２１１は、形態１、５、９または１０のリソース制限情報取得手段に対応し、ログ情報生成部２６およびステップＳ３２１，Ｓ４１９，Ｓ５２１，Ｓ７１５は、形態１、５、９または１０のログ情報生成手段に対応している。
【０１３８】
また、上記第１の実施の形態において、ログ情報取得部２８およびステップＳ９００は、形態１のログ情報取得手段に対応し、ステップＳ９００は、形態５、９または１０のログ情報取得ステップに対応し、動作判定部３０およびステップＳ９０２は、形態１の動作判定手段に対応している。また、ステップＳ９００は、形態５、９または１０の動作判定ステップに対応し、モジュール認証部３２およびステップＳ９１０は、形態１のソフトウェア認証手段に対応し、ステップＳ９１０は、形態５、９または１０のソフトウェア認証ステップに対応している。
【０１３９】
また、上記第１の実施の形態において、電子署名情報は、形態１、５、９または１０の認証情報に対応し、ＣＰＵ５０は、形態１０の演算手段に対応している。
次に、本発明の第２の実施の形態を図面を参照しながら説明する。図２２ないし図２５は、本発明に係るソフトウェア認証システムおよびソフトウェア認証プログラム、並びにソフトウェア認証方法の第２の実施の形態を示す図である。
【０１４０】
本実施の形態は、本発明に係るソフトウェア認証システムおよびソフトウェア認証プログラム、並びにソフトウェア認証方法を、図２２に示すように、ホスト端末１００上のＪＡＶＡ（登録商標）アプリケーションの実行環境において、ネットワークプリンタの動作を制御するためのＪＡＶＡ（登録商標）クラスセットをエミュレーションする場合について適用したものであり、上記第１の実施の形態と異なるのは、リソースの上限値を換算する点にある。なお、以下、上記第１の実施の形態と異なる部分についてのみ説明し、上記第１の実施の形態と重複する部分については同一の符号を付して説明を省略する。
【０１４１】
まず、本発明を適用するホスト端末１００の機能概要を説明する。
図２２は、ホスト端末１００の機能概要を示す機能ブロック図である。
共通機能モジュール１２０は、図２２に示すように、個別機能モジュール管理部１４、リソース測定部１６、上限値取得部１８、リソース制限部２０、リソース換算テーブル２２およびログ情報生成部２６のほか、リソースの量を換算するリソース換算部３４を有して構成されている。
【０１４２】
リソース換算部３４は、リソース換算テーブル２２に基づいて、上限値取得部１８で取得したリソースの量を、ホスト端末１００でのリソースの上限値に換算する。
リソース制限部２０は、リソース測定部１６で測定したリソースの量が、リソース換算部３４で換算した上限値未満となるように、個別機能モジュール１３０が使用するリソースの量、および個別機能モジュール管理部１４がその個別機能モジュール１３０の実行に使用するリソースの量を制限する。
【０１４３】
ログ情報生成部２６は、リソース測定部１６で測定したリソースの量が、リソース換算部３４で換算した上限値以上であると判定したときは、個別機能モジュール１３０が使用するリソースの量が上限に達したことを示すログ情報を生成する。
次に、ホスト端末１００の構成を説明する。
記憶装置６２は、図７のリソース換算テーブル２２に代えて、図２３のリソース換算テーブル２２を記憶している。
【０１４４】
図２３は、リソース換算テーブル２２のデータ構造を示す図である。
リソース換算テーブル２２には、図２３に示すように、リソースの種別または使用形態ごとに１つのレコードが登録されている。各レコードは、リソースの名称を登録するフィールド５０２と、換算率を登録するフィールド５０４とを含んで構成されている。
図２３の例では、第１段目のレコードには、リソースの名称として「メモリ」が、換算率として「１」がそれぞれ登録されている。これは、個別機能モジュール１３０がネットワークプリンタでのメモリ量の上限値を換算率「１」で除算することにより、ホスト端末１００でのメモリ量の上限値への換算を行うことを示している。
【０１４５】
また、第２段目のレコードには、リソースの名称として「クラス数」が、換算率として「１」がそれぞれ登録されている。これは、個別機能モジュール１３０がネットワークプリンタで起動可能なクラス数の上限値を換算率「１」で除算することにより、ホスト端末１００で起動可能なクラス数への換算を行うことを示している。
なお、リソース換算テーブル２２には、複数のテストモジュールのそれぞれについて、ホスト端末１００およびネットワークプリンタでそのテストモジュールが使用するリソースの量に基づいて換算率を決定し、各テストモジュールについて決定された換算率のうち最大値が登録されている。
【０１４６】
記憶装置６２は、さらに、図８のリソース管理テーブル４６０に代えて、図２４のリソース管理テーブル４６０を記憶している。
図２４は、リソース管理テーブル４６０のデータ構造を示す図である。
リソース管理テーブル４６０には、図２４に示すように、リソースの種別ごとに１つのレコードが登録されている。各レコードは、リソースの名称を登録するフィールド４６２と、個別機能モジュール１３０がネットワークプリンタでのリソースの上限値を登録するフィールド４６４と、フィールド４６４の値を、ホスト端末１００でのリソースの上限値に換算した値を登録するフィールド４７０と、個別機能モジュール１３０がホスト端末１００で現在使用しているリソースの量を登録するフィールド４６６とを含んで登録されている。
【０１４７】
図２４の例では、第１段目のレコードには、上限値として「1000000」が、換算値として「666666」がそれぞれ登録されている。これは、個別機能モジュール１３０がネットワークプリンタでのメモリ量の上限値が1000000[byte]であり、ホスト端末１００でのメモリ量の上限値に換算した値（以下、換算メモリ上限値という。）が666666[byte]であることを示している。換算メモリ上限値は、図２３のリソース換算テーブル２２を参照し、1000000／1.5＝666666として算出することができる。
【０１４８】
また、第２段目のレコードには、上限値として「100」が、換算値として「20」がそれぞれ登録されている。これは、個別機能モジュール１３０がネットワークプリンタで起動可能なクラス数の上限値が100個であり、ホスト端末１００で起動可能なクラス数の上限値に換算した値（以下、換算クラス上限値という。）が20個であることを示している。換算クラス上限値は、図２３のリソース換算テーブル２２を参照し、20／１＝20として算出することができる。
【０１４９】
次に、ホスト端末１００で実行される処理を説明する。
ＣＰＵ５０は、図１１の実行可否判定処理に代えて、図２５のフローチャートに示す実行可否判定処理を実行する。
図２５は、実行可否判定処理を示すフローチャートである。
実行可否判定処理は、ステップＳ１１８において実行されると、図２５に示すように、まず、ステップＳ２００〜Ｓ２１２を経てステップＳ２１３に移行する。
【０１５０】
ステップＳ２１３では、取得した上限値に対応する換算率を、読み込んだリソース換算テーブル２２から取得し、取得した上限値を、取得した換算率で除算することにより、ホスト端末１００での上限値への換算を行う。
次いで、ステップＳ２１４に移行して、換算メモリ上限値が全メモリ残量未満であるか否かを判定し、全メモリ残量未満であると判定したとき(Yes)は、ステップＳ２１６に移行するが、そうでないと判定したとき(No)は、ステップＳ２１７に移行する。
【０１５１】
なお、上記第１の実施の形態においては、ステップＳ３０６，Ｓ４０６，Ｓ５０９，Ｓ７０４の処理を設けたが、本実施の形態では、それらの処理が不要となる。
また、上記第１の実施の形態においては、ステップＳ３１３，Ｓ３２０，Ｓ４１８，Ｓ５１７，Ｓ５２０，Ｓ７１４の処理で換算メモリ量および換算クラス数を取り扱ったが、本実施の形態では、ホスト端末１００での使用メモリ量および起動クラス数を取り扱う。
【０１５２】
また、上記第１の実施の形態においては、ステップＳ３０８，Ｓ４０８，Ｓ５１２，Ｓ７０６でネットワークプリンタでの使用メモリ量および起動クラス数を取り扱ったが、本実施の形態では、換算メモリ上限値および換算メモリを取り扱う。
次に、本実施の形態の動作を説明する。
初めに、リソース管理対象となる個別機能モジュール１３０を実行する場合を説明する。
【０１５３】
ホスト端末１００では、共通機能モジュール１２０の実行により個別機能モジュール制御処理が実行される。個別機能モジュール制御処理では、ステップＳ１０２〜Ｓ１１０を経て、削除すべき個別機能モジュール１３０が存在する場合は、その個別機能モジュール１３０が削除される。次いで、ステップＳ１１４を経て、現在起動中のモジュール数が所定の上限値未満であると判定されると、ステップＳ１１６，Ｓ１１８を経て、該当の個別機能モジュール１３０が読み込まれ、読み込まれた個別機能モジュール１３０の実行可否が判定される。実行可否判定処理では、ステップＳ２１３を経て、リソース制限情報４００から取得された上限値が、ホスト端末１００での上限値に換算される。そして、個別機能モジュール１３０について、一致する機種情報および対応可能な電子署名情報を有し、かつ、換算メモリ上限値が全メモリ残量未満である場合に実行が許可される。
【０１５４】
個別機能モジュール１３０の実行が許可されると、ステップＳ１２４〜Ｓ１２８を経て、リソース管理テーブル４６０が生成され、現在起動中のモジュール数が「１」加算され、個別機能モジュール１３０が起動する。モジュール起動処理では、ステップＳ５１０，Ｓ３０５，Ｓ３０７を経て、個別機能モジュール１３０の起動クラス数および使用メモリ量が加算される。このとき、起動クラス数および使用メモリ量のいずれかが換算上限値（換算クラス数または換算メモリ上限値をいう。以下、同様。）以上となると、ステップＳ５２１，Ｓ５２２またはステップＳ３２１，Ｓ３２２を経て、個別機能モジュール１３０の起動クラス数または使用メモリ量が上限に達したことを示すログ情報が生成されるとともにエラーが通知され、クラスの読込またはインスタンスの生成が中止される。
【０１５５】
これに対し、起動クラス数および使用メモリ量のいずれも換算上限値未満である場合は、ステップＳ５１４，Ｓ３１０，Ｓ３１８を経て、個別機能モジュール１３０のクラスが読み込まれ、読み込まれたクラスのインスタンスが生成され、個別機能モジュール１３０のイベントリスナが登録される。イベントリスナ登録処理では、ステップＳ５１０，Ｓ４０５，Ｓ４０７を経て、個別機能モジュール１３０の起動クラス数および使用メモリ量が加算される。このとき、起動クラス数および使用メモリ量のいずれかが換算上限値以上となると、ステップＳ５２１，Ｓ５２２またはステップＳ４１９，Ｓ４２０を経て、個別機能モジュール１３０の起動クラス数または使用メモリ量が上限に達したことを示すログ情報が生成されるとともにエラーが通知され、イベントリスナクラスの読込またはインスタンスの生成が中止される。
【０１５６】
これに対し、起動クラス数および使用メモリ量のいずれも換算上限値未満である場合は、ステップＳ５１４，Ｓ４１０，Ｓ４１６を経て、イベントリスナクラスが読み込まれ、イベントリスナクラスのインスタンスが生成され、生成されたインスタンスのイベントリスナがイベントリスナ実行リストに登録される。
一方、ホスト端末１００では、共通機能モジュール１２０の実行によりイベントリスナ制御処理が実行される。イベントリスナ制御処理では、ステップＳ７０３，Ｓ７０５を経て、実行すべきイベントリスナの生成元となった個別機能モジュール１３０の使用メモリ量が加算される。このとき、使用メモリ量が換算上限値以上となると、ステップＳ７１５，Ｓ７１６を経て、個別機能モジュール１３０が使用するメモリ量が上限に達したことを示すログ情報が生成されるとともにエラーが通知され、イベントリスナの実行が中止される。
【０１５７】
これに対し、使用メモリ量が換算上限値未満である場合は、ステップＳ７１０を経て、イベントリスナに含まれる命令が実行される。
このようにして、本実施の形態では、個別機能モジュール１３０がホスト端末１００で使用するリソースの量を測定し、個別機能モジュール１３０から上限値を取得し、取得した上限値を、ホスト端末１００でのリソースの上限値に換算し、測定したリソースの量および換算した上限値に基づいて、個別機能モジュール１３０が使用するリソースの量が上限に達したことを示すログ情報を生成するようになっている。
【０１５８】
これにより、個別機能モジュール１３０がネットワークプリンタで使用するリソースの量が、リソースの上限値に達するかをネットワークプリンタへの導入前に検証することができる。したがって、従来に比して、ソフトウェアの開発を容易に行うことができるとともに安定性の高いソフトウェアを開発することができる。
上記第２の実施の形態において、リソース測定部１６およびステップＳ３０５，Ｓ４０５，Ｓ７０３は、形態２、６、１１または１２のリソース測定手段に対応し、リソース換算部３４およびステップＳ２１３は、形態２、６、１１または１２のリソース換算手段に対応している。また、上限値取得部１８およびステップＳ２１１は、形態２、６、１１または１２のリソース上限値取得手段に対応し、ログ情報生成部２６およびステップＳ３２１，Ｓ４１９，Ｓ５２１，Ｓ７１５は、形態２、６、１１または１２のログ情報生成手段に対応している。
【０１５９】
また、上記第２の実施の形態において、ログ情報取得部２８およびステップＳ９００は、形態２のログ情報取得手段に対応し、ステップＳ９００は、形態６、１１または１２のログ情報取得ステップに対応し、動作判定部３０およびステップＳ９０２は、形態２の動作判定手段に対応している。また、ステップＳ９００は、形態６、１１または１２の動作判定ステップに対応し、モジュール認証部３２およびステップＳ９１０は、形態２のソフトウェア認証手段に対応し、ステップＳ９１０は、形態６、１１または１２のソフトウェア認証ステップに対応している。
【０１６０】
また、上記第２の実施の形態において、電子署名情報は、形態２、６、１１または１２の認証情報に対応し、ＣＰＵ５０は、形態１２の演算手段に対応している。
次に、本発明の第３の実施の形態を図面を参照しながら説明する。図２６ないし図３０は、本発明に係るソフトウェア認証システムおよびソフトウェア認証プログラム、並びにソフトウェア認証方法の第３の実施の形態を示す図である。
【０１６１】
本実施の形態は、本発明に係るソフトウェア認証システムおよびソフトウェア認証プログラム、並びにソフトウェア認証方法を、図２６に示すように、ホスト端末１００上のＪＡＶＡ（登録商標）アプリケーションの実行環境において、ネットワークプリンタの動作を制御するためのＪＡＶＡ（登録商標）クラスセットをエミュレーションする場合について適用したものであり、上記第１および第２の実施の形態と異なるのは、ファイル操作に関するログ情報に基づいて個別機能モジュール１３０を認証する点にある。なお、以下、上記第１および第２の実施の形態と異なる部分についてのみ説明し、上記第１および第２の実施の形態と重複する部分については同一の符号を付して説明を省略する。
【０１６２】
まず、本発明を適用するホスト端末１００の機能概要を説明する。
図２６は、ホスト端末１００の機能概要を示す機能ブロック図である。
共通機能モジュール１２０は、図２６に示すように、個別機能モジュール管理部１４およびログ情報生成部２６のほか、個別機能モジュール１３０が使用するリソースの使用状況を監視するリソース監視部３６を有して構成されている。
【０１６３】
ログ情報生成部２６は、リソース監視部３６の監視結果に基づいてリソース使用状況を示すログ情報を生成する。
次に、ホスト端末１００の構成を説明する。
ＣＰＵ５０は、図１６のイベントリスナ実行処理に代えて、図２７のフローチャートに示すイベントリスナ実行処理を実行する。また、図１８のモジュール認証処理に代えて、図２８のフローチャートに示すモジュール認証処理を実行する。
【０１６４】
初めに、イベントリスナ実行処理を説明する。
図２７は、イベントリスナ実行処理を示すフローチャートである。
イベントリスナ実行処理は、ステップＳ６１０において実行されると、図２７に示すように、まず、ステップＳ１０００に移行する。
ステップＳ１０００では、イベントリスナに含まれる命令リストの先頭にプログラムポインタを移動し、ステップＳ１００２に移行して、プログラムポインタが指し示すアドレスに実行すべき命令が存在するか否かを判定し、実行すべき命令が存在すると判定したとき(Yes)は、ステップＳ１００４に移行する。
【０１６５】
ステップＳ１００４では、実行すべき命令がファイル操作を行うファイル操作命令であるか否かを判定し、ファイル操作命令であると判定したとき(Yes)は、ステップＳ１００６に移行する。ファイル操作としては、例えば、ファイルの作成、ファイルの読込、ファイルの書込、ファイルの削除、ファイル名の確認、ファイル名の変更、ファイル属性の確認、ファイル属性の変更、ディレクトリの作成、ディレクトリの削除、ディレクトリ名の確認、ディレクトリ名の変更、ディレクトリ属性の確認およびディレクトリ属性の変更が挙げられる。ファイルまたはディレクトリの属性としては、読込専用等のアクセス権の設定に関する属性が含まれる。
【０１６６】
ステップＳ１００６では、ファイル操作の対象となるファイル名およびパス名を含むログ情報を生成し、生成したログ情報を記憶装置６２のログファイルに記録し、ステップＳ１００８に移行する。
ステップＳ１００８では、プログラムポインタが指し示すアドレスの命令を実行し、ステップＳ１０１０に移行して、イベントリスナに含まれる命令リストの次にプログラムポインタを移動し、ステップＳ１００２に移行する。
【０１６７】
一方、ステップＳ１００４で、ファイル操作命令でないと判定したとき(No)は、ステップＳ１００８に移行する。
一方、ステップＳ１００２で、実行すべき命令が存在しないと判定したとき(No)は、一連の処理を終了して元の処理に復帰させる。
次に、モジュール認証処理を説明する。
【０１６８】
図２８は、モジュール認証処理を示すフローチャートである。
モジュール認証処理は、ＣＰＵ５０において実行されると、図２８に示すように、まず、ステップＳ１１００に移行する。
ステップＳ１１００では、記憶装置６２のログファイルからログ情報を読み出し、ステップＳ１１０２に移行して、読み出したログ情報がファイル操作に関するログ情報であるか否かを判定し、ファイル操作に関するログ情報であると判定したとき(Yes)は、ステップＳ１１０４に移行する。
【０１６９】
ステップＳ１１０４では、読み出したログ情報からファイル名を取得し、ステップＳ１１０６に移行して、取得したファイル名が所定長（ネットワークプリンタプリンタで対応可能な長さ）以下であるか否かを判定し、ファイル名が所定長以下であると判定したとき(Yes)は、ステップＳ１１０８に移行する。
ステップＳ１１０８では、取得したファイル名にネットワークプリンタで使用できない文字種（漢字等）の文字が含まれているか否かを判定し、ファイル名に使用不可文字種の文字が含まれていないと判定したとき(No)は、ステップＳ１１１０に移行する。
【０１７０】
ステップＳ１１１０では、読み出したログ情報からパス名を取得し、ステップＳ１１１２に移行して、取得したパス名が所定長以下であるか否かを判定し、パス名が所定長以下であると判定したとき(Yes)は、ステップＳ１１１４に移行する。
ステップＳ１１１４では、取得したパス名に使用不可文字種の文字が含まれているか否かを判定し、パス名に使用不可文字種の文字が含まれていないと判定したとき(No)は、ステップＳ１１１６に移行する。
【０１７１】
ステップＳ１１１６では、記憶装置６２のログファイルに未処理のログ情報が存在するか否かを判定し、未処理のログ情報が存在しないと判定したとき(No)は、ステップＳ１１１８に移行して、個別機能モジュール１３０の実行ファイルを記憶装置６２から読み出し、ステップＳ１１２０に移行する。
ステップＳ１１２０では、読み出した実行ファイルに電子署名情報を付加し、ステップＳ１１２２に移行して、電子署名情報を付加した実行ファイルを記憶装置６２に保存し、一連の処理を終了して元の処理に復帰させる。
【０１７２】
一方、ステップＳ１１１６で、未処理のログ情報が存在すると判定したとき(Yes)は、ステップＳ１１００に移行する。
一方、ステップＳ１１０６で、ファイル名が所定長よりも大きいと判定したとき(No)、ステップＳ１１０８で、ファイル名に使用不可文字種の文字が含まれていると判定したとき(Yes)、ステップＳ１１１２で、パス名が所定長よりも大きいと判定したとき(No)、およびステップＳ１１１４で、パス名に使用不可文字種の文字が含まれていると判定したとき(Yes)はいずれも、ステップＳ１１２４に移行して、個別機能モジュール１３０が認証不可能であることを示すメッセージを表示装置６４に表示し、一連の処理を終了して元の処理に復帰させる。
【０１７３】
一方、ステップＳ１１０２で、読み出したログ情報がファイル操作に関するログ情報でないと判定したとき(No)は、ステップＳ１１１６に移行する。
次に、本実施の形態の動作を説明する。
ホスト端末１００では、個別機能モジュール１３０の実行によりファイル操作命令が実行されると、ステップＳ１００６を経て、ファイル操作の対象となるファイル名およびパス名を含むログ情報が生成される。
【０１７４】
図２９および図３０は、ファイル操作が行われた場合のログファイルの内容を示す図である。
ファイル操作が行われた場合、ログファイルには、図２９および図３０に示すように、個別機能モジュール１３０が起動および停止したことを示すログ情報と、ネットワークプリンタでのファイル名およびパス名の長さの上限値を示すログ情報と、ファイル操作の対象となったファイル名およびパス名を含むログ情報とが記録される。図２９の例では、第３〜第５段目のレコードが、図３０の例では、第３段目のレコードがファイル操作に関するログ情報を格納している。
【０１７５】
ホスト端末１００では、ログファイルが生成されると、ステップＳ１１００〜Ｓ１１１６を繰り返しを経て、ログファイルからログ情報が順次読み出され、読み出されたログ情報からファイル名およびパス名が取得され、取得されたファイル名およびパス名が所定長以下であるか否か、および取得されたファイル名およびパス名に使用不可文字種の文字が含まれているか否かが判定される。図３０に示すログファイルのように、ログファイルに含まれるファイル操作に関するすべてのログ情報について、ファイル名およびパス名が所定長以下であり、かつ、ファイル名およびパス名に使用不可文字種の文字が含まれていないと判定されると、ステップＳ１１１８〜Ｓ１１２２を経て、個別機能モジュール１３０の実行ファイルが読み出され、読み出された実行ファイルに電子署名情報が付加されて保存される。
【０１７６】
これに対し、図２９に示すログファイルのように、ログファイルに含まれるファイル操作に関するいずれかのログ情報について、ファイル名またはパス名が所定長よりも大きいと判定されると、ステップＳ１１２４を経て、認証不可能であることを示すメッセージが表示される。図２９の例では、第４および第５段目のレコードがこれに該当する。
このようにして、本実施の形態では、ファイル操作に関するログ情報をログファイルから読み出し、読み出したログ情報に基づいてファイル名およびパス名が所定長以下であるか否かを判定し、所定長以下であると判定したときは、個別機能モジュール１３０の実行ファイルに電子署名情報を付加するようになっている。
【０１７７】
これにより、ファイル操作の対象となるファイル名およびパス名がネットワークプリンタプリンタで対応可能な長さ以下の個別機能モジュール１３０に対してのみ電子署名情報が付加されるので、個別機能モジュール１３０の動作をさらに確実に保証することができる。
さらに、本実施の形態では、ファイル操作に関するログ情報をログファイルから読み出し、読み出したログ情報に基づいてファイル名およびパス名に使用不可文字種の文字が含まれているか否かを判定し、使用不可文字種の文字が含まれていないと判定したときは、個別機能モジュール１３０の実行ファイルに電子署名情報を付加するようになっている。
【０１７８】
これにより、ファイル操作の対象となるファイル名およびパス名にネットワークプリンタで使用できない文字種の文字を含まない個別機能モジュール１３０に対してのみ電子署名情報が付加されるので、個別機能モジュール１３０の動作をさらに確実に保証することができる。
上記第３の実施の形態において、リソース監視部３６およびステップＳ１００４は、形態３、７、１３または１４のリソース監視手段に対応し、ログ情報生成部２６およびステップＳ１００６は、形態３、７、１３または１４のログ情報生成手段に対応し、ログ情報取得部２８およびステップＳ１１００は、形態３のログ情報取得手段に対応している。また、ステップＳ１１００は、形態７、１３または１４のログ情報取得ステップに対応し、動作判定部３０およびステップＳ１１０６，Ｓ１１０８，Ｓ１１１２，Ｓ１１１４は、形態３の動作判定手段に対応し、ステップＳ１１０６，Ｓ１１０８，Ｓ１１１２，Ｓ１１１４は、形態７、１３または１４の動作判定ステップに対応している。
【０１７９】
また、上記第３の実施の形態において、モジュール認証部３２およびステップＳ１１２０は、形態３のソフトウェア認証手段に対応し、ステップＳ１１２０は、形態７、１３または１４のソフトウェア認証ステップに対応し、電子署名情報は、形態３、７、１３または１４の認証情報に対応している。また、ＣＰＵ５０は、形態１４の演算手段に対応している。
【０１８０】
次に、本発明の第４の実施の形態を図面を参照しながら説明する。図３１および図３２は、本発明に係るソフトウェア認証システムおよびソフトウェア認証プログラム、並びにソフトウェア認証方法の第４の実施の形態を示す図である。
本実施の形態は、本発明に係るソフトウェア認証システムおよびソフトウェア認証プログラム、並びにソフトウェア認証方法を、ホスト端末１００上のＪＡＶＡ（登録商標）アプリケーションの実行環境において、ネットワークプリンタの動作を制御するためのＪＡＶＡ（登録商標）クラスセットをエミュレーションする場合について適用したものであり、上記第１ないし第３の実施の形態と異なるのは、個別機能モジュール１３０の実行ファイルに基づいて個別機能モジュール１３０を認証する点にある。なお、以下、上記第１ないし第３の実施の形態と異なる部分についてのみ説明し、上記第１ないし第３の実施の形態と重複する部分については同一の符号を付して説明を省略する。
【０１８１】
まず、ホスト端末１００の構成を説明する。
ＣＰＵ５０は、図１８のモジュール認証処理に代えて、図３１のフローチャートに示すモジュール認証処理を実行する。
図３１は、モジュール認証処理を示すフローチャートである。
モジュール認証処理は、ＣＰＵ５０において実行されると、図３１に示すように、まず、ステップＳ１２００に移行する。
【０１８２】
ステップＳ１２００では、個別機能モジュール１３０の実行ファイルを読み出し、ステップＳ１２０１に移行して、読み出した個別機能モジュール１３０の実行ファイルからクラスファイルリストを取得し、ステップＳ１２０２に移行して、取得したクラスファイルリストに基づいてクラスの検証を行うクラス検証処理を実行し、ステップＳ１２０４に移行する。
【０１８３】
ステップＳ１２０４では、クラス検証処理からクラス不存在通知が出力されたか否かを判定し、クラス不存在通知が出力されないと判定したとき(No)は、ステップＳ１２０６に移行する。
ステップＳ１２０６では、記憶装置６２のログファイルに未処理のログ情報が存在するか否かを判定し、未処理のログ情報が存在しないと判定したとき(No)は、ステップＳ１２０８に移行して、個別機能モジュール１３０の実行ファイルを記憶装置６２から読み出し、ステップＳ１２１０に移行する。
【０１８４】
ステップＳ１２１０では、読み出した実行ファイルに電子署名情報を付加し、ステップＳ１２１２に移行して、電子署名情報を付加した実行ファイルを記憶装置６２に保存し、一連の処理を終了して元の処理に復帰させる。
一方、ステップＳ１２０６で、未処理のログ情報が存在すると判定したとき(Yes)は、ステップＳ１２０２に移行する。
【０１８５】
一方、ステップＳ１２０４で、クラス不存在通知が出力されたと判定したとき(Yes)は、ステップＳ１２１４に移行して、個別機能モジュール１３０が認証不可能であることを示すメッセージを表示装置６４に表示し、一連の処理を終了して元の処理に復帰させる。
次に、ステップＳ１２０２のクラス検証処理を説明する。
図３２は、クラス検証処理を示すフローチャートである。
【０１８６】
クラス検証処理は、ステップＳ１２０２において実行されると、図３２に示すように、まず、ステップＳ１３００に移行する。
ステップＳ１３００では、取得したクラスファイルリストに基づいてクラスファイルを読み込み、ステップＳ１３０２に移行して、読み込んだクラスファイルからクラス定義リストを生成し、ステップＳ１３０４に移行する。
【０１８７】
ステップＳ１３０４では、生成したクラス定義リストに未検証のクラス定義が存在するか否かを判定し、未検証のクラス定義が存在すると判定したとき(Yes)は、ステップＳ１３０６に移行して、クラスの読込に成功したか否かを判定し、クラスの読込に成功したと判定したとき(Yes)は、ステップＳ１３０８に移行する。
ステップＳ１３０８では、クラス定義に基づいてクラス解決パス上にクラスが存在するか否かを判定し、クラス解決パス上にクラスが存在しないと判定したとき(No)は、ステップＳ１３１０に移行して、クラス不存在通知を出力し、一連の処理を終了して元の処理に復帰させる。
【０１８８】
一方、ステップＳ１３０８で、クラス解決パス上にクラスが存在すると判定したとき(Yes)は、ステップＳ１３０４に移行する。
一方、ステップＳ１３０６で、クラスの読込に失敗したと判定したとき(No)、およびステップＳ１３０４で、未検証のクラス定義が存在しないと判定したとき(No)はいずれも、一連の処理を終了して元の処理に復帰させる。
【０１８９】
次に、本実施の形態の動作を説明する。
ホスト端末１００では、ステップＳ１２０２〜Ｓ１２０６を繰り返し経て、個別機能モジュール１３０が使用するクラスが、ネットワークプリンタで実行可能なクラスのみからなるか否かが判定される。その結果、ネットワークプリンタで実行可能なクラスのみからなると判定されると、ステップＳ１２０８〜Ｓ１２１２を経て、個別機能モジュール１３０の実行ファイルが読み出され、読み出された実行ファイルに電子署名情報が付加されて保存される。
【０１９０】
これに対し、個別機能モジュール１３０が使用するいずれかのクラスが、ネットワークプリンタで実行できないクラスであると判定されると、ステップＳ１２１４を経て、認証不可能であることを示すメッセージが表示される。
このようにして、本実施の形態では、個別機能モジュール１３０の実行ファイルを取得し、取得した実行ファイルに基づいて、個別機能モジュール１３０が使用するクラスが、ネットワークプリンタで実行可能なクラスのみからなるか否かを判定し、ネットワークプリンタで実行可能なクラスのみからなると判定したときは、個別機能モジュール１３０の実行ファイルに電子署名情報を付加するようになっている。
【０１９１】
これにより、ネットワークプリンタで実行可能なクラスのみを使用する個別機能モジュール１３０に対してのみ電子署名情報が付加されるので、個別機能モジュール１３０の動作をさらに確実に保証することができる。例えば、悪意を持った開発者が、ホスト端末１００からネットワークプリンタに移行する際に、クラスのバイナリを書き換えてしまうと、ネットワークプリンタで正しく動作しなくなる。このような不正行為も防止することができる。
【０１９２】
上記第４の実施の形態において、ステップＳ１２００は、形態４の実行ファイル取得手段、または形態８若しくは１５の実行ファイル取得ステップに対応し、ステップＳ１２０４は、形態４の第２動作判定手段、または形態８若しくは１５の第２動作判定ステップに対応している。また、ステップＳ１２１０は、形態４のソフトウェア認証手段、または形態８若しくは１５のソフトウェア認証ステップに対応している。
【０１９３】
なお、上記第１および第２の実施の形態においては、リソース換算テーブル２２は、各テストモジュールについて決定された換算率のうち最大値を登録して構成したが、これに限らず、各テストモジュールについて決定された換算率のうち平均値を登録して構成することもできる。
これにより、リソース換算テーブル２２には、各テストモジュールについて決定された換算率のうち平均値が登録されているので、機能モジュールの動作をある程度の確実性をもって保証することができるとともにネットワークプリンタで使用されるリソースの量を抑制することができる。
【０１９４】
また、上記第１および第２の実施の形態においては、個別機能モジュール１３０が使用するリソースの量が上限に達したことを示すログ情報を生成するように構成したが、これに限らず、個別機能モジュール１３０が使用するリソースの量が上限に達したことを示すメッセージを表示装置６４に表示するように構成することもできる。
また、上記第１および第２の実施の形態においては、リソース換算テーブル２２に換算率として「１」を登録した例を示したが、これに限らず、ホスト端末１００とネットワークプリンタの仕様の差異によってはそれ以外の値を登録することもできる。
【０１９５】
また、上記第１および第２の実施の形態においては、リソースの量として使用メモリ量および起動クラス数を制限するように構成したが、これに限らず、ソケット接続数、ファイル接続数、ファイル数、ファイル容量、クラスサイズ、ＺＩＰメモリ容量、ＣＰＵ利用量、ソケット通信量およびファイル読み書き量を制限するように構成することもできる。
また、上記第１ないし第４の実施の形態をそれぞれ別々に構成したが、これに限らず、それらの形態を複合的に組み合わせて構成することができる。すなわち、ステップＳ９０２，Ｓ９０４の判定処理、ステップＳ１１０６，Ｓ１１０８，Ｓ１１１２，Ｓ１１１４の判定処理、およびステップＳ１２０４の判定処理を任意に組み合わせることができる。最も好ましいのは、これら判定処理に係るすべての認証条件を満たした場合にのみ、個別機能モジュール１３０に電子署名情報を付加することである。
【０１９６】
また、上記第１ないし第４の実施の形態において、図１０ないし図１８、図２５、図２７、図２８、図３１および図３２のフローチャートに示す処理を実行するにあたってはいずれも、ＲＯＭ５２にあらかじめ格納されている制御プログラムを実行する場合について説明したが、これに限らず、これらの手順を示したプログラムが記憶された記憶媒体から、そのプログラムをＲＡＭ５４に読み込んで実行するようにしてもよい。
【０１９７】
ここで、記憶媒体とは、ＲＡＭ、ＲＯＭ等の半導体記憶媒体、ＦＤ、ＨＤ等の磁気記憶型記憶媒体、ＣＤ、ＣＤＶ、ＬＤ、ＤＶＤ等の光学的読取方式記憶媒体、ＭＯ等の磁気記憶型／光学的読取方式記憶媒体であって、電子的、磁気的、光学的等の読み取り方法のいかんにかかわらず、コンピュータで読み取り可能な記憶媒体であれば、あらゆる記憶媒体を含むものである。
【０１９８】
また、上記第１ないし第４の実施の形態においては、本発明に係るソフトウェア認証システムおよびソフトウェア認証プログラム、並びにソフトウェア認証方法を、ホスト端末１００上のＪＡＶＡ（登録商標）アプリケーションの実行環境において、ネットワークプリンタの動作を制御するためのＪＡＶＡ（登録商標）クラスセットをエミュレーションする場合について適用したが、これに限らず、本発明の主旨を逸脱しない範囲で他の場合にも適用可能である。ネットワークプリンタに代えて、例えば、プロジェクタ、電子ペーパ、ホームゲートウェイ、パソコン、ＰＤＡ（Personal Digital Assistant）、ネットワークストレージ、オーディオ機器、携帯電話、ＰＨＳ（登録商標）（Personal Handyphone System）、ウォッチ型ＰＤＡ、ＳＴＢ（Set Top Box）、ＰＯＳ（Point Of Sale）端末、ＦＡＸ機、電話（ＩＰ電話等も含む。）、その他のデバイスに適用することができる。
【図面の簡単な説明】
【０１９９】
【図１】ＪＡＶＡ（登録商標）ソフトウェアの構成を示す図である。
【図２】ホスト端末１００の機能概要を示す機能ブロック図である。
【図３】ホスト端末１００のハードウェア構成を示すブロック図である。
【図４】リソース制限情報４００のデータ構造を示す図である。
【図５】モジュール情報４２０のデータ構造を示す図である。
【図６】実行環境情報登録テーブル４４０のデータ構造を示す図である。
【図７】リソース換算テーブル２２のデータ構造を示す図である。
【図８】リソース管理テーブル４６０のデータ構造を示す図である。
【図９】イベントリスナテーブル４８０のデータ構造を示す図である。
【図１０】個別機能モジュール制御処理を示すフローチャートである。
【図１１】実行可否判定処理を示すフローチャートである。
【図１２】モジュール起動処理を示すフローチャートである。
【図１３】イベントリスナ登録処理を示すフローチャートである。
【図１４】クラス読込処理を示すフローチャートである。
【図１５】イベントリスナ制御処理を示すフローチャートである。
【図１６】イベントリスナ実行処理を示すフローチャートである。
【図１７】インスタンス削除処理を示すフローチャートである。
【図１８】モジュール認証処理を示すフローチャートである。
【図１９】エラーが発生した場合のログファイルの内容を示す図である。
【図２０】エラーが発生しない場合のログファイルの内容を示す図である。
【図２１】リソース管理対象となる個別機能モジュールｂ，ｃを並列に実行した場合を示すタイムチャートである。
【図２２】ホスト端末１００の機能概要を示す機能ブロック図である。
【図２３】リソース換算テーブル２２のデータ構造を示す図である。
【図２４】リソース管理テーブル４６０のデータ構造を示す図である。
【図２５】実行可否判定処理を示すフローチャートである。
【図２６】ホスト端末１００の機能概要を示す機能ブロック図である。
【図２７】イベントリスナ実行処理を示すフローチャートである。
【図２８】モジュール認証処理を示すフローチャートである。
【図２９】ファイル操作が行われた場合のログファイルの内容を示す図である。
【図３０】ファイル操作が行われた場合のログファイルの内容を示す図である。
【図３１】モジュール認証処理を示すフローチャートである。
【図３２】クラス検証処理を示すフローチャートである。
【符号の説明】
【０２００】
１００…ホスト端末，  １１０…ＯＳ，  １２０…共通機能モジュール，  １３０…個別機能モジュール，  １０，１６…リソース測定部，  １２，２０…リソース制限部，  １４…個別機能モジュール管理部，  １８…上限値取得部，  ２２…リソース換算テーブル，  ２４，３４…リソース換算部，  ２６…ログ情報生成部，  ２８…ログ情報取得部，  ３０…動作判定部，  ３２…モジュール認証部，  ３６…リソース監視部，  ５０…ＣＰＵ，  ５２…ＲＯＭ，  ５４…ＲＡＭ，  ５８…Ｉ／Ｆ，  ６０…入力装置，  ６２…記憶装置，  ６４…表示装置，  ４００…リソース制限情報，  ４２０…モジュール情報，  ４４０…実行環境情報登録テーブル，  ４６０…リソース管理テーブル，  ４８０…イベントリスナテーブル，  ５２０…実行結果登録テーブル，  １９９…ネットワーク
【図１】
2006293980.tif 000003
【図２】
2006293980.tif 000004
【図３】
2006293980.tif 000005
【図４】
2006293980.tif 000006
【図５】
2006293980.tif 000007
【図６】
2006293980.tif 000008
【図７】
2006293980.tif 000009
【図８】
2006293980.tif 000010
【図９】
2006293980.tif 000011
【図１０】
2006293980.tif 000012
【図１１】
2006293980.tif 000013
【図１２】
2006293980.tif 000014
【図１３】
2006293980.tif 000015
【図１４】
2006293980.tif 000016
【図１５】
2006293980.tif 000017
【図１６】
2006293980.tif 000018
【図１７】
2006293980.tif 000019
【図１８】
2006293980.tif 000020
【図１９】
2006293980.tif 000021
【図２０】
2006293980.tif 000022
【図２１】
2006293980.tif 000023
【図２２】
2006293980.tif 000024
【図２３】
2006293980.tif 000025
【図２４】
2006293980.tif 000026
【図２５】
2006293980.tif 000027
【図２６】
2006293980.tif 000028
【図２７】
2006293980.tif 000029
【図２８】
2006293980.tif 000030
【図２９】
2006293980.tif 000031
【図３０】
2006293980.tif 000032
【図３１】
2006293980.tif 000033
【図３２】
2006293980.tif 000034