(57)【要約】【課題】新規にソフトウェアを追加する際に、既存の診断プログラムを変更することなく、既存のソフトウェアと同様に新規に追加したソフトウェアの情報収集又は診断ができる画像形成装置を提供する。【解決手段】複合機１０は、アプリケーションモジュールとアプリケーションモジュールに対応したインターフェースとを含むソフトウェアコンポーネントを記憶するソフト記憶部２０と、ソフト記憶部２０により記憶されたソフトウェアコンポーネントからインターフェースを取得して動作解析又は診断に用いられるインターフェース情報を生成するＩ／Ｆ情報生成部２２と、Ｉ／Ｆ情報生成部２２により生成されたインターフェース情報を記憶するＩ／Ｆ情報記憶部２３とを含む。【選択図】図２
2008182650.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションモジュールと当該アプリケーションモジュールに対応したインターフェースとを含むソフトウェアコンポーネントを取得する取得手段と、
前記取得手段により取得される前記ソフトウェアコンポーネントから前記インターフェースを取得して動作解析又は診断に用いられるインターフェース情報を生成するＩ／Ｆ情報生成手段と、
前記Ｉ／Ｆ情報生成手段により生成された前記インターフェース情報を記憶するＩ／Ｆ情報記憶手段と
を含むことを特徴とする画像形成装置。
【請求項２】
異常発生時に出力されるエラーコードに基づいて、異常が発生した前記アプリケーションモジュールを特定する特定手段と、
前記特定手段により特定された前記アプリケーションモジュールに対する前記インターフェース情報を前記Ｉ／Ｆ情報記憶手段から取得するＩ／Ｆ情報取得手段と、
前記Ｉ／Ｆ情報取得手段により取得された前記インターフェース情報に対応する前記ソフトウェアコンポーネントにアクセスして、当該ソフトウェアコンポーネントの状態情報を収集する情報収集手段と
を更に含むことを特徴とする請求項１に記載の画像形成装置。
【請求項３】
前記Ｉ／Ｆ情報記憶手段は、依存関係のある他のソフトウェアコンポーネントのインターフェース情報を当該Ｉ／Ｆ情報記憶手段が記憶している前記インターフェース情報と関係付けて記憶し、
前記Ｉ／Ｆ情報取得手段は、前記特定手段により特定された前記アプリケーションモジュールと依存関係のある前記他のソフトウェアコンポーネントの前記インターフェース情報を前記Ｉ／Ｆ情報記憶手段から取得し、
前記情報収集手段は、前記Ｉ／Ｆ情報取得手段により取得された前記他のソフトウェアコンポーネントにアクセスして前記状態情報を収集することを特徴とする請求項２に記載の画像形成装置。
【請求項４】
前記Ｉ／Ｆ情報取得手段は、前記特定手段により特定された前記他のソフトウェアコンポーネントのうち前記依存関係が少ない当該他のソフトウェアコンポーネントから順に前記インターフェース情報を取得することを特徴とする請求項３に記載の画像形成装置。
【請求項５】
前記情報収集手段により収集された前記状態情報を、前記依存関係を有する前記ソフトウェアコンポーネントと共に表示する表示手段を更に含むことを特徴とする請求項３に記載の画像形成装置。
【請求項６】
異常発生時に出力されるエラーコードに基づいて、異常が発生した前記アプリケーションモジュールを特定する特定手段と、
前記特定手段により特定された前記アプリケーションモジュールに対する前記インターフェース情報を前記Ｉ／Ｆ情報記憶手段から取得するＩ／Ｆ情報取得手段と、
前記Ｉ／Ｆ情報取得手段により取得された前記インターフェース情報に対応する前記ソフトウェアコンポーネントにアクセスして、当該ソフトウェアコンポーネントを診断する診断手段と
を更に含むことを特徴とする請求項１に記載の画像形成装置。
【請求項７】
前記Ｉ／Ｆ情報記憶手段は、依存関係のある他のソフトウェアコンポーネントのインターフェース情報を当該Ｉ／Ｆ情報記憶手段が記憶している前記インターフェース情報と関係付けて記憶し、
前記Ｉ／Ｆ情報取得手段は、前記特定手段により特定された前記アプリケーションモジュールと依存関係のある前記他のソフトウェアコンポーネントの前記インターフェース情報を前記Ｉ／Ｆ情報記憶手段から取得し、
前記診断手段は、前記特定手段により特定された前記アプリケーションモジュールの前記ソフトウェアコンポーネントへのアクセスに先行して、前記Ｉ／Ｆ情報取得手段により取得された前記他のソフトウェアコンポーネントにアクセスして診断することを特徴とする請求項６に記載の画像形成装置。
【請求項８】
前記診断手段による診断結果を保持する保持手段を更に含み、
前記診断手段は、一回の診断において同じ前記他のソフトウェアコンポーネントに対して複数回の診断要求がされた場合に、２回目以降の当該診断要求には前記保持手段にて保持された初回の前記診断結果を出力することを特徴とする請求項７に記載の画像形成装置。
【請求項９】
コンピュータに、
取得されるソフトウェアコンポーネントの中から、当該ソフトウェアコンポーネントに含まれるインターフェースを取得して動作解析又は診断に用いられるインターフェース情報を生成するＩ／Ｆ情報生成機能と、
生成された前記インターフェース情報をＩ／Ｆ情報記憶手段に記憶させるＩ／Ｆ情報記憶機能と
を実現させることを特徴とするプログラム。
【請求項１０】
コンピュータに、
異常発生時に出力されるエラーコードに基づいて、異常が発生したアプリケーションモジュールを特定する特定機能と、
特定された前記アプリケーションモジュールのインターフェース情報を、ソフトウェアコンポーネントの動作解析又は診断に用いられるインターフェース情報を記憶したＩ／Ｆ情報記憶手段から取得するＩ／Ｆ情報取得機能と、
取得された前記インターフェース情報に対応する前記ソフトウェアコンポーネントにアクセスして、当該ソフトウェアコンポーネントの状態情報を収集する情報収集機能と
を実現させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像形成装置及びプログラムの技術分野に関する。
【背景技術】
【０００２】
コピー機能やファクシミリ送受信機能、スキャナ機能、プリンタ機能等を有したいわゆる複合機と呼ばれる画像形成装置、画像処理装置等の情報処理装置では、ユーザの要求に応じて、新規のソフトウェア機能を追加し、或いは、認証機器等のハードウェアを追加する場合がある。
【０００３】
アプリケーションの追加で機能拡張を容易にするものとして、プリンタ、コピー及びファクリミリ機能を備えた複合機において、階層を持つ構成が提案されている。共通の機能を下位の層で機能提供を行うことにより、アプリケーションの追加で機能拡張を容易にする技術が存在する（例えば、特許文献１参照。）。
また、他の公報記載の技術として、アプリケーション及びプラットフォームは診断用に通常とは別のスレッドを用意し、擬似的な（プロセスに閉じた）診断を実施可能とする技術が存在する（例えば、特許文献２参照。）。
【０００４】
【特許文献１】特開２００２−８２８０６号公報
【特許文献２】特開２００３−７８６８８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ここで、例えば、認証機器等のハードウェアを追加する場合に、オプションソフトウェアを新規に追加し、或いは、ＵＳＢ等の汎用インターフェースなどを用いて認証機器やスキャナ、ストレージデバイス等のハードウェアを追加する場合に、新たな機能を簡単に追加できる必要がある。
ところで、このように新規に機能を追加した情報処理装置でなんらかの故障が発生した場合、既存の機能だけではなく新規に追加した機能を含む情報処理装置全体の診断を実施する必要がある。これを実現するためには新規に追加した機能を診断するために既存の診断プログラムを修正する必要があるため、新規機能追加の際には、拡張する機能の追加だけでは十分ではなく、診断プログラム等既存のソフトウェアの入れ替えも必要であった。
【０００６】
本発明は、かかる技術的課題を解決するためになされたものであって、その目的とするところは、新規にソフトウェアを追加する際に、既存の診断プログラムを変更することなく、既存のソフトウェアと同様に新規に追加したソフトウェアの情報収集又は診断ができる画像形成装置を提供することにある。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明にかかる画像形成装置は、アプリケーションモジュールとアプリケーションモジュールに対応したインターフェースとを含むソフトウェアコンポーネントを取得する取得手段と、取得手段により取得されるソフトウェアコンポーネントからインターフェースを取得して動作解析又は診断に用いられるインターフェース情報を生成するＩ／Ｆ情報生成手段と、Ｉ／Ｆ情報生成手段により生成されたインターフェース情報を記憶するＩ／Ｆ情報記憶手段とを含むことを特徴とする。
【０００８】
上記画像形成装置において、異常発生時に出力されるエラーコードに基づいて、異常が発生したアプリケーションモジュールを特定する特定手段と、特定手段により特定されたアプリケーションモジュールに対するインターフェース情報をＩ／Ｆ情報記憶手段から取得するＩ／Ｆ情報取得手段と、Ｉ／Ｆ情報取得手段により取得されたインターフェース情報に対応するソフトウェアコンポーネントにアクセスして、ソフトウェアコンポーネントの状態情報を収集する情報収集手段とを更に含むことを特徴とする。
上記画像形成装置において、Ｉ／Ｆ情報記憶手段は、依存関係のある他のソフトウェアコンポーネントのインターフェース情報をＩ／Ｆ情報記憶手段が記憶しているインターフェース情報と関係付けて記憶し、Ｉ／Ｆ情報取得手段は、特定手段により特定されたアプリケーションモジュールと依存関係のある他のソフトウェアコンポーネントのインターフェース情報をＩ／Ｆ情報記憶手段から取得し、情報収集手段は、Ｉ／Ｆ情報取得手段により取得された他のソフトウェアコンポーネントにアクセスして状態情報を収集することを特徴とする。
【０００９】
上記画像形成装置において、Ｉ／Ｆ情報取得手段は、特定手段により特定された他のソフトウェアコンポーネントのうち依存関係が少ない他のソフトウェアコンポーネントから順にインターフェース情報を取得することを特徴とする。
上記画像形成装置において、情報収集手段により収集された状態情報を、依存関係を有するソフトウェアコンポーネントと共に表示する表示手段を更に含むことを特徴とする。
【００１０】
上記画像形成装置において、異常発生時に出力されるエラーコードに基づいて、異常が発生したアプリケーションモジュールを特定する特定手段と、特定手段により特定されたアプリケーションモジュールに対するインターフェース情報をＩ／Ｆ情報記憶手段から取得するＩ／Ｆ情報取得手段と、Ｉ／Ｆ情報取得手段により取得されたインターフェース情報に対応するソフトウェアコンポーネントにアクセスして、ソフトウェアコンポーネントを診断する診断手段とを更に含むことを特徴とする。
上記画像形成装置において、Ｉ／Ｆ情報記憶手段は、依存関係のある他のソフトウェアコンポーネントのインターフェース情報をＩ／Ｆ情報記憶手段が記憶しているインターフェース情報と関係付けて記憶し、Ｉ／Ｆ情報取得手段は、特定手段により特定されたアプリケーションモジュールと依存関係のある他のソフトウェアコンポーネントのインターフェース情報をＩ／Ｆ情報記憶手段から取得し、診断手段は、特定手段により特定されたアプリケーションモジュールのソフトウェアコンポーネントへのアクセスに先行して、Ｉ／Ｆ情報取得手段により取得された他のソフトウェアコンポーネントにアクセスして診断することを特徴とする。
上記画像形成装置において、診断手段による診断結果を保持する保持手段を更に含み、診断手段は、一回の診断において同じ他のソフトウェアコンポーネントに対して複数回の診断要求がされた場合に、２回目以降の診断要求には保持手段にて保持された初回の診断結果を出力することを特徴とする。
【００１１】
上記課題を解決するために、本発明にかかるプログラムは、コンピュータに、取得されるソフトウェアコンポーネントの中から、ソフトウェアコンポーネントに含まれるインターフェースを取得して動作解析又は診断に用いられるインターフェース情報を生成するＩ／Ｆ情報生成機能と、生成されたインターフェース情報をＩ／Ｆ情報記憶手段に記憶させるＩ／Ｆ情報記憶機能とを実現させることを特徴とする。
【００１２】
上記課題を解決するために、本発明にかかるプログラムは、コンピュータに、異常発生時に出力されるエラーコードに基づいて、異常が発生したアプリケーションモジュールを特定する特定機能と、特定されたアプリケーションモジュールのインターフェース情報を、ソフトウェアコンポーネントの動作解析又は診断に用いられるインターフェース情報を記憶したＩ／Ｆ情報記憶手段から取得するＩ／Ｆ情報取得機能と、取得されたインターフェース情報に対応するソフトウェアコンポーネントにアクセスして、ソフトウェアコンポーネントの状態情報を収集する情報収集機能とを実現させることを特徴とする。
【発明の効果】
【００１３】
請求項１にかかる発明によれば、動作確認又は診断に用いられるインターフェース情報が記憶されたＩ／Ｆ情報記憶手段を検索するだけでソフトウェアコンポーネントのインターフェースを知ることができ、本発明を採用しない場合に比べて、取得されるソフトウェアコンポーネントの情報収集又は診断が容易となる。
【００１４】
請求項２にかかる発明によれば、本発明を採用しない場合に比べて、異常発生時に特定されたアプリケーションモジュールのソフトウェアコンポーネントからの状態情報の収集が容易となる。
請求項３にかかる発明によれば、本発明を採用しない場合に比べて、アプリケーションモジュールの異常検出時に依存関係のある他のソフトウェアコンポーネントからの状態情報の収集が容易となる。
【００１５】
請求項４にかかる発明によれば、本発明を採用しない場合に比べて、情報収集の対象となるソフトウェアコンポーネントを絞り込むことができ、迅速な情報収集が実現できる。
請求項５にかかる発明によれば、本発明を採用しない場合に比べて、異常検出の原因追及が容易となる。
【００１６】
請求項６にかかる発明によれば、本発明を採用しない場合に比べて、異常発生時に特定されたアプリケーションモジュールのソフトウェアコンポーネントの診断が容易となる。
請求項７にかかる発明によれば、本発明を採用しない場合に比べて、アプリケーションモジュールの異常検出時に依存関係のある他のソフトウェアコンポーネントを先行して診断できる。
請求項８にかかる発明によれば、本発明を採用しない場合に比べて、重複した診断を省くことができる。
【００１７】
請求項９にかかる発明によれば、動作確認又は診断に用いられるインターフェース情報が記憶されたＩ／Ｆ情報記憶手段を検索するだけでソフトウェアコンポーネントのインターフェースを知ることができ、本発明を採用しない場合に比べて、取得されるソフトウェアコンポーネントの情報収集又は診断が容易となる。
【００１８】
請求項１０にかかる発明によれば、本発明を採用しない場合に比べて、異常発生時に特定されたアプリケーションモジュールのソフトウェアコンポーネントからの状態情報の収集が容易となる。
【発明を実施するための最良の形態】
【００１９】
（第一の実施例）
以下、本発明を実施するための最良の形態（実施の形態）を図面を用いて説明する。
図１は、本発明にかかる画像形成装置の一例としての複合機１０の構成概略を示す図である。
複合機１０は、システムと、情報収集用プログラムと、診断用プログラムとを有している。また、複合機１０は、工場出荷時に予め既にインストールされた自社製の複数のソフトウェアコンポーネントＸ，Ｙ，Ｚと、工場出荷後に追加してインストールされた自社又は他社α、β製の１又は複数のソフトウェアコンポーネントＡ〜Ｄとを備えて構成されている。
【００２０】
ここで、システムとは、複合機１０にインストールされているソフトウェアコンポーネントの各種情報を管理している部分、ソフト及びハードである。
また、システムは、インストールされているソフトウェアコンポーネントの名称のリスト、ソフトウェアコンポーネントが定義しているＩ／Ｆ、ソフトウェアコンポーネントが依存する他のソフトウェアコンポーネントのリストを管理している。
【００２１】
情報収集用プログラムは、動作解析のために複合機１０の状態情報を収集するプログラムである。診断用プログラムは、複合機１０にインストールされたソフトウェアコンポーネントの状態を診断するためのプログラムである。情報収集用プログラムと診断用プログラムとはいずれも複合機１０に予めインストールされている。これらのプログラムの動作については後述する。
新たなソフトウェアコンポーネントがインストールされると、そのソフトウェアコンポーネントが備えているＩ／Ｆがシステムに登録される（（１）Ｉ／Ｆ情報の登録）。そして、情報収集用プログラム又は診断用プログラムは、異常が検出されたときに、システムにアクセスして登録されているＩ／Ｆ情報を検索して取得する（（２）Ｉ／Ｆ情報の検索）。そして、取得したＩ／Ｆ情報を基にして情報収集用プログラム又は診断用プログラムはソフトウェアコンポーネントにアクセスし、ソフトウェアコンポーネントが有するＩ／Ｆにアクセスする（（３）Ｉ／Ｆへのアクセス）。
【００２２】
（画像形成装置の構成）
図２は、本発明の画像形成装置の一例としての複合機１０を説明するための機能ブロック図である。
複合機１０は、取得手段の一例としてのソフト記憶部２０と、Ｉ／Ｆ情報生成部２２と、Ｉ／Ｆ情報記憶部２３と、Ｉ／Ｆ情報取得部２５と、情報収集部２６と、診断部２７と、表示部２８と、特定部２９とを有して構成される。
【００２３】
ソフト記憶部２０は、例えばハードディスク等の情報記憶手段により構成される。ソフト記憶部２０には、ソフトウェアコンポーネントＡ１１Ａ〜ソフトウェアコンポーネントＤ１１Ｄ等が記憶されている。ここで、ソフトウェアコンポーネントＡ１１Ａは、例えば、複合機１０の制御ソフトウェアを構成するアプリケーションモジュール１２Ａと、通信を制御するインターフェース（以下、Ｉ／Ｆとする）１３Ａとを含んで構成される。Ｉ／Ｆ１３Ａには、例えば、情報収集用Ｉ／Ｆや診断用Ｉ／Ｆがある。
尚、複合機１０にインストールされるソフトウェアコンポーネントＡ１１Ａ〜ソフトウェアコンポーネントＤ１１Ｄには、複合機１０を製造した製造者が作成したソフトウェアコンポーネントの他に、製造者とは関係のないいわゆるサードベンダα、βが製作した制御ソフトウェア等のソフトウェアコンポーネントも含まれる。工場出荷時にインストールされているソフトウェアコンポーネントもあるし、また、出荷後に追加されるソフトウェアコンポーネントもある。
【００２４】
Ｉ／Ｆ情報生成部２２は、例えばＣＰＵ（中央処理装置）等がＩ／Ｆ情報生成工程（図４のステップ１０６）などを実行することにより実現される。Ｉ／Ｆ情報生成部２２は、ソフトウェアコンポーネントＡ１１Ａ等をソフト記憶部２０にインストールするとき、ソフト記憶部２０に記憶されるソフトウェアコンポーネントＡ１１Ａ等からＩ／Ｆ１３Ａを取得してＩ／Ｆ情報記憶部２３への記憶に適した形式（図３参照）のＩ／Ｆ情報を生成して出力する。
Ｉ／Ｆ情報記憶部２３は、例えばハードディスク等により構成される。Ｉ／Ｆ情報記憶部２３は、複合機１０にインストールされてソフト記憶部２０に記憶されているすべてのソフトウェアコンポーネントの内訳であるインストール情報と、Ｉ／Ｆ情報生成部２２にて生成されたソフトウェアコンポーネントＡ１１Ａ等のＩ／Ｆ情報とを記憶する。
【００２５】
また、Ｉ／Ｆ情報記憶部２３が記憶するインストール情報が、後述する図３に示す形式にて記憶されている。更に、Ｉ／Ｆ情報記憶部２３は、後述するアクセスオブジェクトを予め記憶している。尚、Ｉ／Ｆ情報には、例えば、情報収集用Ｉ／Ｆ情報scan()と診断用Ｉ／Ｆ情報diag()とがある。
【００２６】
ここで、Ｉ／Ｆ情報生成部２２によって生成されるＩ／Ｆ情報の例を説明する。
図３は、Ｉ／Ｆ情報生成部２２によって生成されるソフトウェアコンポーネントのＩ／Ｆ情報のデータ構造の例を示す図である。
図３に示すように、複合機１０にインストールされているソフトウェアコンポーネントのベンダー名、ソフトウェアコンポーネントの名称、各ソフトウェアコンポーネントが依存する他のソフトウェアコンポーネント群のリスト、各ソフトウェアコンポーネントが提供しているＩ／Ｆがリスト形式で記憶されている。
【００２７】
図２に戻って、Ｉ／Ｆ情報取得部２５は、例えばＣＰＵが情報取得工程（図５のステップ２０３，２０４）などを実行することにより実現される。Ｉ／Ｆ情報取得部２５は、エラーコードに基づくソフトウェアコンポーネントＡ１１Ａ等（目的ソフトウェアコンポーネント）のＩ／Ｆ情報を求めて、Ｉ／Ｆ情報記憶部２３を検索してＩ／Ｆ情報を取得する。
情報収集部２６は、例えばＣＰＵが情報収集工程（図５のステップ２０５）などを起動することにより実現される。情報収集部２６は、Ｉ／Ｆ情報取得部２５にて取得されたＩ／Ｆ情報を用いて目的ソフトウェアコンポーネントＡ１１ＡのＩ／Ｆにアクセスし、その目的ソフトウェアコンポーネントＡ１１Ａの状態情報を収集する。
【００２８】
診断部２７は、例えばＣＰＵが図６に示す診断用プログラムを起動することにより実現される。Ｉ／Ｆ情報取得部２５にて取得されたＩ／Ｆ情報と診断のためのアクセスプログラムであるアクセスオブジェクトとを用いて目的ソフトウェアコンポーネントＡ１１Ａにアクセスし、検査プログラムを動作させて目的ソフトウェアコンポーネントＡ１１Ａを診断する。
表示部２８は、例えば複合機１０に備わった液晶表示部などの表示ユニットが該当する。表示部２８は、情報収集部２６にて情報収集された状態情報又は診断部２７にて診断された診断結果を、情報収集又は診断の対象となった目的ソフトウェアコンポーネントＡ１１Ａと共に表示する。
【００２９】
特定部２９は、例えばＣＰＵがエラーコード取得工程（図５のステップ２０１，２０２）などを実行することにより実現される。特定部２９は、取得したエラーコードに基づいて情報収集又は診断の対象となるソフトウェアコンポーネント（目的ソフトウェアコンポーネント）を特定する。
【００３０】
（インストール時のＩ／Ｆ情報の登録）
ＣＤ−ＲＯＭ等の情報記録媒体、或いは、インターネットを通じて入手したソフトウェアコンポーネントＡ１１Ａ等を複合機１０にインストールするときに、複合機１０が内部で行うシステムへのＩ／Ｆ情報の登録を以下に説明する。
図４は、ソフトウェアコンポーネントＡ１１Ａを複合機１０にインストールする時の登録作業を説明するためのフローチャートである。
複合機１０においてソフトウェアコンポーネントＡ１１Ａのインストールが開始されると、Ｉ／Ｆ情報生成部２２においてＩ／Ｆ情報生成プログラムが起動する。
【００３１】
ソフト記憶部２０は、ソフトウェアコンポーネントＡ１１Ａを記憶（インストール）する（インストール工程）（ステップ１０１）。
インストール工程が終了したとき、Ｉ／Ｆ情報生成部２２は、インストールが完了したソフトウェアコンポーネントＡ１１Ａのインストール情報をＩ／Ｆ情報記憶部２３に登録する（インストール情報登録工程）（ステップ１０２）。具体的には、標準オブジェクトファイルを、Ｉ／Ｆ情報記憶部２３内の登録を示す所定のディレクトリに置く。
【００３２】
続いて、Ｉ／Ｆ情報生成部２２は、インストールしたソフトウェアコンポーネントＡ１１Ａ等を取得する（取得工程）（ステップ１０３）。
Ｉ／Ｆ情報生成部２２は、取得したソフトウェアコンポーネントＡ１１ＡがＩ／Ｆ１３Ａを有しているかを判断する（判断工程）（ステップ１０４）。
そして、ソフトウェアコンポーネントＡ１１ＡがＩ／Ｆ１３Ａを有しているとＩ／Ｆ情報生成部２２が判断したとき（ステップ１０４：Ｙ）、Ｉ／Ｆ情報生成部２２はソフトウェアコンポーネントＡ１１ＡからＩ／Ｆ１３Ａを取得する（Ｉ／Ｆ取得工程）（ステップ１０５）。
【００３３】
Ｉ／Ｆ情報生成部２２は、取得したＩ／Ｆ１３Ａに基づいてＩ／Ｆ情報を生成する（Ｉ／Ｆ情報生成工程）（ステップ１０６）。具体的には、抽出したＩ／Ｆ１３Ａを図３に示すＩ／Ｆ情報記録部２３の記録に適した形式に変換してＩ／Ｆ情報を生成する。
これに対して、判断工程（ステップ１０４）にてソフトウェアコンポーネントＡ１１ＡはＩ／Ｆ１３Ａを有していないとＩ／Ｆ情報生成部２２が判断したとき（ステップ１０４：Ｎ）、Ｉ／Ｆ情報生成部２２はソフトウェアコンポーネント名を抽出してＩ／Ｆ情報として出力する（ソフトウェアコンポーネント名抽出工程）（ステップ１２１）。
【００３４】
Ｉ／Ｆ情報生成工程（ステップ１０６）又はソフトウェアコンポーネント名抽出工程（ステップ１２１）が終了した後、Ｉ／Ｆ情報生成部２２は生成したＩ／Ｆ情報をＩ／Ｆ情報記憶部２３に送り、Ｉ／Ｆ情報記憶部２３はＩ／Ｆ情報を記憶する（Ｉ／Ｆ情報記憶工程）（ステップ１０７）。以上により、インストールを終了する。
これにより、インストールされたソフトウェアコンポーネントのＩ／Ｆ情報はＩ／Ｆ情報記憶部２３に記憶される。後述する異常検出時にＩ／Ｆ情報取得部２５がＩ／Ｆ情報記憶部２３にアクセスすることで、情報収集又は診断すべき目的ソフトウェアコンポーネントを知ることが可能となる。
【００３５】
（情報収集）
以上でソフトウェアコンポーネントのインストールを説明したので、次に、異常を検出したときに複合機１０が行う動作解析のための情報収集の動作を以下に説明する。
図５は、異常を検出したときの複合機１０内部での情報収集用プログラムの動作を説明するためのフローチャートである。
異常を検出してユーザが情報収集用プログラムを起動すると、本プログラムは動作を開始する。
【００３６】
特定部２９は、異常を検出したときのエラーコードを取得する（エラーコード取得工程）（ステップ２０１）。
そして、特定部２９は、取得したエラーコードに関連するアプリケーションモジュールを特定する（特定のための判断工程）（ステップ２０２）。具体的には、エラーコードに関連するアプリケーションモジュールは多くの場合予め定まっているので、取得したエラーコードに基づいて関連するアプリケーションモジュールを特定する。
【００３７】
アプリケーションモジュールを特定できた場合（ステップ２０２：Ｙ）、Ｉ／Ｆ情報取得部２５は、特定したアプリケーションモジュールの情報収集用Ｉ／Ｆ情報をＩ／Ｆ情報記憶部２３から取得する。具体的には、Ｉ／Ｆ情報取得部２５は、特定されたアプリケーションモジュールに基づいてＩ／Ｆ情報記憶部２３に記憶されている情報収集用Ｉ／Ｆ情報を検索し（情報収集用Ｉ／Ｆ情報検索工程）（ステップ２０３）、検出したエラーコードに関連するＩ／Ｆを有するソフトウェアコンポーネントをすべて抽出して、リスト形式で取得する。このとき、抽出したソフトウェアコンポーネントにアクセスするためのオブジェクト（アクセスオブジェクト）をＩ／Ｆ情報記憶部２３から取得する（検索結果取得工程）（ステップ２０４）。
【００３８】
取得した情報収集用Ｉ／Ｆ情報に基づいて情報収集部２６はソフトウェアコンポーネントにアクセスし、取得したアクセスオブジェクトを用いて特定したアプリケーションモジュールに対応するソフトウェアコンポーネントにアクセスし、アクセスしたソフトウェアコンポーネントのインターフェースを呼び出すオブジェクトを取得する。そして、そのオブジェクトを使ってＩ／Ｆを呼び出し、そのソフトウェアコンポーネントの情報を収集する（情報収集工程）（ステップ２０５）。具体的には、情報収集部２６は、エラー発生前のそのソフトウェアコンポーネントの内部データの値を取得する。
ここで、内部データとは、ジョブ管理用ソフトウェアコンポーネントであれば、現在実行しているジョブの情報、動作中のジョブの数などである。情報収集工程（ステップ２０５）では、監視用スレッドを動作させて、通常動作時の（即ち、エラー発生前の）スレッドのトレース情報やスタックの情報を取得するようにしても良い。
【００３９】
これに対して、関連するアプリケーションモジュールが予め定まっていないエラーコードを取得した場合など、特定部２９がアプリケーションモジュールを特定できない場合（ステップ２０２：Ｎ）、情報収集部２６はインストールされているすべてのソフトウェアコンポーネントに順次アクセスをする。
まず、Ｉ／Ｆ情報取得部２５はＩ／Ｆ情報記憶部２３にアクセスして、ソフト記憶部２０にインストールされているすべてのソフトウェアコンポーネントのインストール情報と、Ｉ／Ｆ情報と、アクセスオブジェクトとを取得する（インストール情報取得工程）（ステップ２２１）。ここで、インストール情報は複合機１０にインストールされているすべてのソフトウェアコンポーネントを含むが、Ｉ／Ｆ情報とアクセスオブジェクトは本実施の形態の記憶形式に適合した形式のソフトウェアコンポーネントだけを含んでいる。
【００４０】
続いて、情報収集部２６がソフトウェアコンポーネントＡ１１Ａ〜ソフトウェアコンポーネントＤ１１Ｄにアクセスして状態情報を収集する（情報収集工程）（ステップ２２２）。このとき、アクセスするソフトウェアコンポーネントに対応するＩ／Ｆ情報とアクセスオブジェクトとを取得できていれば、それを用いてソフトウェアコンポーネントにアクセスする。
これに対して、アクセスするソフトウェアコンポーネントに対応するＩ／Ｆ情報とアクセスオブジェクトとを取得していない場合には、情報収集部２６は、Ｉ／Ｆ情報とアクセスオブジェクトを有しない状態で直接ソフトウェアコンポーネントにアクセスする。
すべてのソフトウェアコンポーネントにアクセスしていない場合（判断工程：ステップ２２３：Ｎ）、情報収集工程（ステップ２２２）を繰り返し実行する。
【００４１】
そして、複合機１０にインストールされているすべてのソフトウェアコンポーネントにアクセスして情報を収集し終えたとき（判断工程：ステップ２２３：Ｙ）、取得したソフトウェアコンポーネントから異常発生の原因となったソフトウェアコンポーネントを推測する（原因コンポ推測工程）（ステップ２２４）。
具体的には、例えば、収集した状態情報に基づいて、通常動作時とは異なる状態情報を有するソフトウェアコンポーネントに異常が発生しているかも知れないと推測する。或いは、収集した状態情報を別の検査プログラムを用いて解析し、異常発生の原因を推測する。
【００４２】
情報収集工程（ステップ２０５）の終了後、或いは、原因コンポ推測工程（ステップ２２４）の終了後、収集した状態情報と動作解析結果とを表示部２８が表示して（表示工程）（ステップ２０６）、情報収集用プログラムを終了する。
以上により、エラーコードに関連するアプリケーションモジュール１２Ａの情報収集用Ｉ／Ｆ情報がＩ／Ｆ情報記憶部２３に記憶されている場合、Ｉ／Ｆ情報取得部２５がＩ／Ｆ情報記憶部２３にアクセスするだけで情報収集用Ｉ／Ｆ情報を取得でき、情報収集部２６の情報収集が容易にできる。また、情報収集用Ｉ／Ｆ情報がＩ／Ｆ情報記憶部２３に記憶されていない場合であっても、従来どおりの方法で、情報収集部２６はアプリケーションモジュールにアクセスして状態情報を収集することが可能である。
【００４３】
（診断）
以上に説明した情報収集は、異常検出の前後の動作を示すログや各変数の内容のダンプなどの情報収集を目的とし、収集した状態情報を別の検査プログラムにて解析することを想定している。これに対して、以下に説明する診断は、異常を検出したときに複合機１０が異常個所を検出するために、アプリケーションモジュール内で検査プログラムを動作させる点で相違する。
【００４４】
図６は、異常を検出したときの複合機１０内部での診断用プログラムの動作を説明するためのフローチャートである。
異常を検出したユーザによって診断用プログラムが診断部２７において起動されると、本プログラムは動作を開始する。
【００４５】
特定部２９は、異常を検出したときのエラーコードを取得する（エラーコード取得工程）（ステップ３０１）。
そして、特定部２９は、取得したエラーコードに関連するアプリケーションモジュールを特定する（特定のための判断工程）（ステップ３０２）。例えば、複合機１０がコピー実行中にコピーアプリケーションの異常が発生すると、特定部２９はコピーの実行ができなかった旨のエラーコードをコピーアプリケーションモジュールから取得する。ユーザが診断部２７に対して診断要求をすると、特定部２９はエラーコードに基づいてエラーコードに関連するコピーアプリケーションモジュールを特定する。
【００４６】
アプリケーションモジュールを特定できた場合（ステップ３０２：Ｙ）、Ｉ／Ｆ情報取得部２５はＩ／Ｆ情報記憶部２３にアクセスして特定したアプリケーションモジュールの診断用Ｉ／Ｆ情報diag()を検索し（診断用Ｉ／Ｆ情報検索工程）（ステップ３０３）、検出したエラーコードに関連する診断用Ｉ／Ｆ情報diag()を有するソフトウェアコンポーネントをすべて抽出して、リスト形式で取得する。このとき、Ｉ／Ｆ情報取得部２５は、診断用Ｉ／Ｆ情報diag()と、抽出したソフトウェアコンポーネントにアクセスするためのアクセスオブジェクトをＩ／Ｆ情報記憶部２３から併せて取得する（検索結果取得工程）（ステップ３０４）。
【００４７】
取得した診断用Ｉ／Ｆ情報diag()に基づいて、診断部２７はソフトウェアコンポーネントＡ１１Ａ〜ソフトウェアコンポーネントＤ１１Ｄにアクセスし、アクセスしたソフトウェアコンポーネントＡ１１Ａ〜ソフトウェアコンポーネントＤ１１Ｄが内部に有している検査プログラムを実行させる（検査プログラム実行工程）（ステップ３０５）。
そして、検査結果である診断結果を取得する（診断結果取得工程）（ステップ３０６）。
【００４８】
これに対して、アプリケーションモジュールを特定できない場合（ステップ３０２：Ｎ）、診断部２７はインストールされているすべてのソフトウェアコンポーネントに順次アクセスをする。
具体的には、Ｉ／Ｆ情報取得部２５がＩ／Ｆ情報記憶部２３にアクセスして、ソフト記憶部２０にインストールされているすべてのソフトウェアコンポーネントのインストール情報と、Ｉ／Ｆ情報と、アクセスオブジェクトとを取得する（インストール情報取得工程）（ステップ３２１）。
【００４９】
続いて、診断部２７がソフトウェアコンポーネントにアクセスして診断する（診断工程）（ステップ３２２）。アクセスするソフトウェアコンポーネントに対応するＩ／Ｆ情報とアクセスオブジェクトとを取得できていれば、それを用いてソフトウェアコンポーネントにアクセスする。
これに対して、アクセスするソフトウェアコンポーネントに対応するＩ／Ｆ情報とアクセスオブジェクトとを取得していない場合には、情報収集部２６は、Ｉ／Ｆ情報とアクセスオブジェクトを有しない状態で直接ソフトウェアコンポーネントにアクセスして診断する。
すべてのソフトウェアコンポーネントにアクセスしていない場合（判断工程：ステップ３２３：Ｎ）、診断工程（ステップ３２２）を繰り返し実行する。
【００５０】
そして、診断結果を取得したとき（ステップ３０６）、或いは、複合機１０にインストールされているすべてのソフトウェアコンポーネントにアクセスして診断したとき（判断工程：ステップ３２３：Ｙ）、表示部２８は取得した検査結果である診断結果を表示して（表示工程）（ステップ３０７）、診断用プログラムを終了する。
尚、診断用Ｉ／Ｆを備えていないソフトウェアコンポーネントに関しては、表示工程（ステップ３０７）において診断結果に替えてそのソフトウェアコンポーネントは診断用Ｉ／Ｆを有しない旨を表示するようにしても良い。
以上により、エラーコードに関連するアプリケーションモジュールの診断用Ｉ／Ｆ情報がＩ／Ｆ情報記憶部２３に記憶されている場合、Ｉ／Ｆ情報取得部２５がＩ／Ｆ情報記憶部２３にアクセスするだけで診断用Ｉ／Ｆ情報を取得でき、診断部２７による診断が容易にできる。また、診断用Ｉ／Ｆ情報がＩ／Ｆ情報記憶部２３に記憶されていない場合であっても、診断部２７はアプリケーションモジュールにアクセスして診断することが可能である。
【００５１】
第一の実施例によれば、ソフトウェアコンポーネントインストール時にＩ／Ｆ情報生成部２２が生成したＩ／Ｆ情報がＩ／Ｆ情報記憶部２３に記憶されるので、Ｉ／Ｆ情報取得部２５はＩ／Ｆ情報記憶部２３にアクセスするだけでＩ／Ｆ情報の取得が可能となる。
第一の実施例によれば、新規のソフトウェアコンポーネントを追加した場合であっても、追加したソフトウェアコンポーネントに対する情報収集又は診断を既存のソフトウェアコンポーネントと同様に実現することができる。これにより、情報収集用プログラムを変更することなく、新規に追加されたソフトウェアコンポーネントの情報収集が可能となり、機能追加が容易になるとともに、適切な情報収集が可能となる。
【００５２】
第一の実施例によれば、新規ソフトウェアコンポーネントの開発の際に、ソフトウェアコンポーネントに対する情報収集機能または診断機能を容易に作成することが可能になると共に、関連するソフトウェアコンポーネントの開発が少なくて済むので、インストールパッケージの作成簡易化、インストール対象ソフトウェアコンポーネントの削減による管理の簡略化（バージョンの整合を取るなど）が可能となる。
第一の実施例によれば、異常検出時に、特定部２９が異常発生に関係するアプリケーションモジュールを特定するので、特定されたアプリケーションモジュールに限定して情報収集や診断を実施することにより、情報収集や診断の時間を短くできる。
【００５３】
尚、第一の実施例では、異常検出時にユーザによる操作をトリガーとして情報収集用プログラム及び診断用プログラムが起動する例を説明したが、必ずしも異常検出時に限定されるわけではない。ソフトウェアコンポーネントの状況を知りたくてユーザがＰＣ（図示省略）を操作して、複合機１０内部の情報収集や診断をする場合にも適用可能である。
また、図５又は図６に示すフローチャートのプログラムは、工場出荷後にソフトウェアコンポーネントの新たな追加を行わない複合機にも適用可能である。
【００５４】
（第二の実施例）
上記第一の実施例では、異常が発生したアプリケーションモジュールはそれを含むソフトウェアコンポーネントが異常発生の原因を有している場合であったが、第二の実施例では、他のソフトウェアコンポーネントに依存して動作するソフトウェアコンポーネントに異常が発生した場合に本発明を適用する例を説明する。
【００５５】
（依存関係）
第二の実施例は、ソフトウェアコンポーネントは動作する際に他のソフトウェアコンポーネントと依存関係がある例である。ここで、依存関係とは、あるソフトウェアコンポーネントの動作時に他のソフトウェアコンポーネントの動作を伴う関係をいう。この依存関係は、図３に示したように、Ｉ／Ｆ情報生成部２２によって生成されるＩ／Ｆ情報の各ソフトウェアコンポーネントが依存している他のソフトウェアコンポーネント群のリストに含まれる。依存するソフトウェアコンポーネントの数から、依存関係の多寡がわかる。例えば、各レイヤのソフトウェアコンポーネントは、同列のレイヤ又は下位のレイヤのソフトウェアコンポーネントに依存し、上位のレイヤのソフトウェアコンポーネントには依存しないので、通常は一番下のレイヤのソフトウェアコンポーネントがもっとも依存関係が少ない。
【００５６】
（画像形成装置の構成）
図７は、第二の実施例にかかる複合機１５を説明するための機能ブロック図である。
図２に示す第一の実施例と同じ構成部は同じ参照符号を用いることで以下の説明を省略する。
複合機１５は、Ｉ／Ｆ情報記憶部４１と、Ｉ／Ｆ情報取得部４２と、保持部４３とを有して構成される。
【００５７】
Ｉ／Ｆ情報記憶部４１は、例えばハードディスク等で構成される。Ｉ／Ｆ情報記憶部４１は、アプリケーションモジュールの実行と依存関係のあるソフトウェアコンポーネント（第二ソフトウェアコンポーネント）を、アプリケーションモジュールを含むソフトウェアコンポーネント（第一ソフトウェアコンポーネント）と関係付けて蓄積する。
Ｉ／Ｆ情報取得部４２は、例えばＣＰＵが依存関係抽出工程（図８のステップ４０６）などを実行することで実現される。Ｉ／Ｆ情報取得部４２は、Ｉ／Ｆ情報記憶部４１を検索して、特定部２９により特定された第一ソフトウェアコンポーネントと依存関係のある第二ソフトウェアコンポーネントを抽出する。
保持部４３は、例えばメモリ等で構成される。保持部４３は、診断のための情報を保持する。
【００５８】
（インストール時の動作）
以上の構成を有する複合機１５がソフトウェアコンポーネントＡ１１Ａ等をインストールしたときに、複合機１５が内部で行うＩ／Ｆ情報の登録作業を以下に説明する。
図８は、依存関係を有しているソフトウェアコンポーネントのインストール時の登録作業を説明するためのフローチャートである。
複合機１５においてソフトウェアコンポーネントＡ１１Ａのインストールが開始されると、Ｉ／Ｆ情報生成部２２においてＩ／Ｆ情報生成プログラムが起動する。
【００５９】
ソフト記憶部２０は、ソフトウェアコンポーネントＡ１１Ａをインストールする（インストール工程）（ステップ４０１）。
インストール工程（ステップ４０１）が終了したとき、Ｉ／Ｆ情報生成部２２は、インストールが完了したソフトウェアコンポーネントＡ１１Ａのインストール情報をＩ／Ｆ情報記憶部４１に登録する（インストール情報登録工程）（ステップ４０２）。
【００６０】
続いて、Ｉ／Ｆ情報生成部２２が、インストールしたソフトウェアコンポーネントＡ１１Ａ等を取得する（取得工程）（ステップ４０３）。
Ｉ／Ｆ情報生成部２２は、取得したソフトウェアコンポーネントＡ１１ＡがＩ／Ｆ１３Ａを有しているか否かを判断する（判断工程）（ステップ４０４）。
そして、ソフトウェアコンポーネントＡ１１ＡがＩ／Ｆ１３Ａを有しているとＩ／Ｆ情報生成部２２が判断したとき（ステップ４０４：Ｙ）、Ｉ／Ｆ情報生成部２２はソフトウェアコンポーネントＡ１１ＡからＩ／Ｆ１３Ａを取得する（Ｉ／Ｆ取得工程）（ステップ４０５）。
【００６１】
Ｉ／Ｆ情報生成部２２は、取得したＩ／Ｆ１３Ａに基づいて、アプリケーションモジュールの実行と依存関係のある他のソフトウェアコンポーネント（第二ソフトウェアコンポーネント）を抽出する（依存関係抽出工程）（ステップ４０６）。そして、Ｉ／Ｆ情報生成部２２は、抽出した第二ソフトウェアコンポーネントを、アプリケーションモジュールを含む第一ソフトウェアコンポーネントと関係付けて、Ｉ／Ｆ情報を生成する（Ｉ／Ｆ情報生成工程）（ステップ４０７）。
これに対して、判断工程（ステップ４０４）にてソフトウェアコンポーネントＡ１１ＡはＩ／Ｆ１３Ａを有していないとＩ／Ｆ情報生成部２２が判断したとき（ステップ４０４：Ｎ）、Ｉ／Ｆ情報生成部２２はソフトウェアコンポーネント名を抽出してＩ／Ｆ情報として出力する（ソフトウェアコンポーネント名抽出工程）（ステップ４２１）。
【００６２】
Ｉ／Ｆ情報生成工程（ステップ４０７）又はソフトウェアコンポーネント名抽出工程（ステップ４２１）が終了した後、Ｉ／Ｆ情報生成部２２は生成したＩ／Ｆ情報をＩ／Ｆ情報記憶部４１に送り、Ｉ／Ｆ情報記憶部４１はＩ／Ｆ情報を記憶する（Ｉ／Ｆ情報記憶工程）（ステップ４０８）。以上により、インストールを終了する。
これにより、インストールされた第一ソフトウェアコンポーネントのＩ／Ｆ情報が、依存関係を有する第二ソフトウェアコンポーネントと関係付けられてＩ／Ｆ情報記憶部４１に蓄積される。後述する異常検出時にＩ／Ｆ情報取得部４２がＩ／Ｆ情報記憶部４１にアクセスすることで、情報収集又は診断すべき目的ソフトウェアコンポーネントの依存関係の範囲を知ることが可能となる。
【００６３】
（情報収集）
以上に説明したフローチャートに従って、インストールされた第一ソフトウェアコンポーネントのＩ／Ｆ情報は、依存関係を有する第二ソフトウェアコンポーネントと関係付けられてＩ／Ｆ情報記憶部４１に記憶されたので、以下では、複合機１５が実際に使用されて異常が発生したときの情報収集の動作を説明する。
図９は、異常が発生したときの複合機１５内部での情報収集用プログラムの動作を説明するためのフローチャートである。
異常を検出してユーザが情報収集用プログラムを起動すると、本プログラムは動作を開始する。
【００６４】
特定部２９は、異常を検出したときのエラーコードを取得する（エラーコード取得工程）（ステップ５０１）。
そして、特定部２９は、取得したエラーコードに基づいて、関連するアプリケーションモジュールを特定する（特定のための判断工程）（ステップ５０２）。
【００６５】
アプリケーションモジュールを特定できた場合（ステップ５０２：Ｙ）、Ｉ／Ｆ情報取得部４２は、特定したアプリケーションモジュールに対応する第一ソフトウェアコンポーネントと依存関係を有する第二ソフトウェアコンポーネントの情報収集用Ｉ／Ｆ情報を、Ｉ／Ｆ情報記憶部４１から取得する。具体的には、Ｉ／Ｆ情報取得部４２が、Ｉ／Ｆ情報記憶部４１に記憶されている第二ソフトウェアコンポーネントの情報収集用Ｉ／Ｆ情報を検索し（情報収集用Ｉ／Ｆ情報検索工程）（ステップ５０３）、検出したエラーコードに関連する情報収集用Ｉ／Ｆを有する第二ソフトウェアコンポーネントをすべて抽出して、リスト形式で取得する（検索結果取得工程）（ステップ５０４）。
【００６６】
そして、Ｉ／Ｆ情報取得部４２は、取得した第二ソフトウェアコンポーネントの中で依存関係の少ない第二ソフトウェアコンポーネントを抽出する（依存関係抽出工程）（ステップ５０５）。具体的には、Ｉ／Ｆ情報取得部４２は、取得したリストの中で依存しているソフトウェアコンポーネントの数とアプリケーションモジュールとを抽出する。
そして、Ｉ／Ｆ情報取得部４２は、抽出したアプリケーションモジュールの情報収集用Ｉ／Ｆ情報と、アクセスするためのアクセスオブジェクトとを、依存関係の数の少ない順にＩ／Ｆ情報記憶部４１から取得する（Ｉ／Ｆ情報取得工程）（ステップ５０６）。
【００６７】
取得した情報収集用Ｉ／Ｆ情報に基づいて情報収集部２６は第二ソフトウェアコンポーネントにアクセスし、取得したアクセスオブジェクトを用いて特定したアプリケーションモジュールに対応する第二ソフトウェアコンポーネントにアクセスし、アクセスした第二ソフトウェアコンポーネントのＩ／Ｆを呼び出すオブジェクトを取得する。そして、そのオブジェクトを使ってＩ／Ｆを呼び出し、エラー発生前の内部データの値等の情報を収集する（情報収集工程）（ステップ５０７）。或いは、監視用スレッドを動作させて、通常動作時のスレッドのトレース情報やスタックの情報を取得するようにしても良い。
【００６８】
これに対して、アプリケーションモジュールを特定できない場合（ステップ５０２：Ｎ）、情報収集部２６はインストールされているすべてのソフトウェアコンポーネントに順次アクセスをする。
まず、Ｉ／Ｆ情報取得部４２がＩ／Ｆ情報記憶部４１にアクセスして、ソフト記憶部２０にインストールされているすべてのソフトウェアコンポーネントのインストール情報と、Ｉ／Ｆ情報と、アクセスオブジェクトとを取得する（インストール情報取得工程）（ステップ５２１）。
【００６９】
続いて、情報収集部２６がソフトウェアコンポーネントにアクセスして情報を収集する（情報収集工程）（ステップ５２２）。このとき、アクセスするソフトウェアコンポーネントに対応するＩ／Ｆ情報とアクセスオブジェクトとを取得できていれば、それを用いてソフトウェアコンポーネントにアクセスする。
これに対して、アクセスするソフトウェアコンポーネントに対応するＩ／Ｆ情報とアクセスオブジェクトとを取得していない場合には、情報収集部２６は、Ｉ／Ｆ情報とアクセスオブジェクトを有しない状態で直接ソフトウェアコンポーネントにアクセスする。
【００７０】
すべてのソフトウェアコンポーネントにアクセスしていない場合（判断工程）（ステップ５２３：Ｎ）、情報収集工程（ステップ５２２）を繰り返して実行する。
そして、複合機１５にインストールされているすべてのソフトウェアコンポーネントにアクセスして情報を収集し終えたとき（判断工程：ステップ５２３：Ｙ）、取得したソフトウェアコンポーネントから異常発生の原因となったソフトウェアコンポーネントを推測する（原因コンポ推測工程）（ステップ５２４）。
【００７１】
情報収集工程（ステップ５０７）の終了後、或いは、原因コンポ推測工程（ステップ５２４）の終了後、収集した状態情報と動作解析結果とを表示部２８が表示して（表示工程）（ステップ５０８）、情報収集用プログラムを終了する。
以上により、エラーコードに関連するアプリケーションモジュールに対応する第一ソフトウェアコンポーネントと依存関係を有する第二ソフトウェアコンポーネントの情報収集用Ｉ／Ｆ情報がＩ／Ｆ情報記憶部４１に記憶されている場合、Ｉ／Ｆ情報取得部４２がＩ／Ｆ情報記憶部４１にアクセスするだけで第二ソフトウェアコンポーネントの情報収集用Ｉ／Ｆ情報を取得でき、情報収集部２６の情報収集が容易にできる。また、情報収集用Ｉ／Ｆ情報がＩ／Ｆ情報記憶部４１に記憶されていない場合であっても、従来どおりの方法で、情報収集部２６はアプリケーションモジュールにアクセスして情報を収集することが可能である。
【００７２】
（診断）
次に、異常が発生したときの診断の動作を説明する。
図１０は、異常を検出したときの複合機１５内部での診断用プログラムの動作を説明するためのフローチャートである。
異常を検出したユーザによって診断用プログラムが診断部２７において起動されると、本プログラムは動作を開始する。
【００７３】
特定部２９は、異常を検出したときのエラーコードを取得する（エラーコード取得工程）（ステップ６０１）。
そして、特定部２９は、取得したエラーコードに基づいて関連するアプリケーションモジュールを特定する（特定のための判断工程）（ステップ６０２）。
【００７４】
アプリケーションモジュールを特定できた場合（ステップ６０２：Ｙ）、Ｉ／Ｆ情報取得部４２はＩ／Ｆ情報記憶部４１にアクセスして、特定したアプリケーションモジュールに対応する第一ソフトウェアコンポーネントと依存関係を有する第二ソフトウェアコンポーネントの診断用Ｉ／Ｆ情報を検索する（診断用Ｉ／Ｆ情報検索工程）（ステップ６０３）。
そして、Ｉ／Ｆ情報取得部４２は、検出したエラーコードに関連する第一ソフトウェアコンポーネントと依存関係を有する第二ソフトウェアコンポーネントの診断用Ｉ／Ｆを有する第二ソフトウェアコンポーネントをすべて抽出して、リスト形式でＩ／Ｆ情報記憶部４１から取得する（検索結果取得工程）（ステップ６０４）。
【００７５】
その後、Ｉ／Ｆ情報取得部４２は、取得した第二ソフトウェアコンポーネントの中で依存関係の少ない第二ソフトウェアコンポーネントを抽出する（依存関係抽出工程）（ステップ６０５）。
そして、Ｉ／Ｆ情報取得部４２は、抽出したアプリケーションモジュールの診断用Ｉ／Ｆ情報と、アクセスするためのアクセスオブジェクトとを、依存関係の数の少ない順にＩ／Ｆ情報記憶部４１から取得する（Ｉ／Ｆ情報取得工程）（ステップ６０６）。
【００７６】
取得した診断用Ｉ／Ｆ情報に基づいて、診断部２７は第二ソフトウェアコンポーネントにアクセスし、アクセスした第二ソフトウェアコンポーネントが内部に有している検査プログラムを実行させる（検査プログラム実行工程）（ステップ６０７）。
そして、診断部２７は検査結果である診断結果を取得する（検査結果取得工程）（ステップ６０８）。具体的には、診断用Ｉ／Ｆから各第二ソフトウェアコンポーネントの内部データを取得する。内部データとは、異常発生時に実行していたジョブの情報やジョブの数などである。
【００７７】
これに対して、アプリケーションモジュールを特定できない場合（ステップ６０２：Ｎ）、診断部２７はインストールされているすべてのソフトウェアコンポーネントに順次アクセスをする。
具体的には、Ｉ／Ｆ情報取得部４２がＩ／Ｆ情報記憶部４１にアクセスして、ソフト記憶部２０にインストールされているすべてのソフトウェアコンポーネントのインストール情報と、Ｉ／Ｆ情報と、アクセスオブジェクトとを取得する（インストール情報取得工程）（ステップ６２１）。ここで、インストール情報は複合機１０にインストールされているすべてのソフトウェアコンポーネントを含むが、Ｉ／Ｆ情報とアクセスオブジェクトは本実施の形態の記憶形式に適合した形式のソフトウェアコンポーネントだけを含んでいる。
【００７８】
続いて、診断部２７がソフトウェアコンポーネントにアクセスして診断する（診断工程）（ステップ６２２）。アクセスするソフトウェアコンポーネントに対応するＩ／Ｆ情報とアクセスオブジェクトとを取得できていれば、それを用いてソフトウェアコンポーネントにアクセスする。
これに対して、アクセスするソフトウェアコンポーネントに対応するＩ／Ｆ情報とアクセスオブジェクトとを取得していない場合には、情報収集部２６は、Ｉ／Ｆ情報とアクセスオブジェクトを有しない状態で直接ソフトウェアコンポーネントにアクセスして診断する。
【００７９】
すべてのソフトウェアコンポーネントにアクセスしていない場合（判断工程：ステップ６２３：Ｎ）、診断工程（ステップ６２２）を繰り返して実行する。
そして、診断結果を取得したとき（ステップ６０８）、或いは、複合機１５にインストールされているすべてのソフトウェアコンポーネントにアクセスして診断したとき（判断工程：ステップ６２３：Ｙ）、表示部２８は診断結果とを表示して（表示工程）（ステップ６０９）、診断用プログラムを終了する。
以上により、エラーコードに関連するアプリケーションモジュールに対応する第一ソフトウェアコンポーネントと依存関係を有する第二ソフトウェアコンポーネントの診断用Ｉ／Ｆ情報がＩ／Ｆ情報記憶部４１に記憶されている場合、Ｉ／Ｆ情報取得部４２がＩ／Ｆ情報記憶部４１にアクセスするだけで第二ソフトウェアコンポーネントの診断用Ｉ／Ｆ情報を取得でき、診断部２７による診断が容易にできる。また、診断用Ｉ／Ｆ情報がＩ／Ｆ情報記憶部４１に記憶されていない場合であっても、診断部２７はアプリケーションモジュールにアクセスして診断することが可能である。
【００８０】
尚、第二の実施例において、複合機１５は、診断部２７による診断結果を保持する保持部４３を備える構成としても良い。診断部２７は、一回の診断において同じ第二ソフトウェアコンポーネントに対して複数回のアクセス要求がされた際に、２回目以降のアクセス要求には保持部４３にて保持された初回の診断結果を用いることもできる。
例えば、上位のレイヤの第一ソフトウェアコンポーネントから診断を行ったとき、各第一ソフトウェアコンポーネントは依存している第二ソフトウェアコンポーネントの診断機能を呼び出すので、複数の第一ソフトウェアコンポーネントから呼び出される第二ソフトウェアコンポーネントも存在し得る。より具体的は、ジョブ管理のソフトウェアコンポーネントは、コピーアプリケーションモジュールからもスキャンアプリケーションモジュールからも呼び出される。これにより、診断の繰り返しを省き、迅速な診断が可能となる。
【００８１】
第二の実施例によれば、エラーコードに関連するアプリケーションモジュールが依存関係を有する場合に、依存関係の少ないレイヤ（下位のレイヤ）から診断を行うので、対象となるソフトウェアコンポーネントを絞り込むことができ、情報収集又は診断が迅速且つ容易に実行することができる。
【００８２】
図４，５，６に示したフローチャートに対応するプログラムをフレキシブルディスク又はハードディスク等の情報記録媒体に記録しておき、又はこれらのプログラムをインターネット等のネットワークを介して配信して記録しておき、これを複合機１０が有する汎用のコンピュータ等により読み出して実行させることにより、このコンピュータ等を複合機１０の一部として機能させることも可能である。
図８，９，１０に示したフローチャートに対応するプログラムをフレキシブルディスク又はハードディスク等の情報記録媒体に記録しておき、又はこれらのプログラムをインターネット等のネットワークを介して配信して記録しておき、これを複合機１５が有する汎用のコンピュータ等により読み出して実行させることにより、このコンピュータ等を複合機１５の一部として機能させることも可能である。
【図面の簡単な説明】
【００８３】
【図１】本発明にかかる画像形成装置の構成概略を示す図である。
【図２】本発明の画像形成装置の一例としての複合機を説明するための機能ブロック図である。
【図３】Ｉ／Ｆ情報生成部によって生成されるソフトウェアコンポーネントのＩ／Ｆ情報のデータ構造の例を示す図である。
【図４】ソフトウェアコンポーネントをインストールする時の登録作業を説明するためのフローチャートである。
【図５】異常を検出したときの複合機内部での情報収集用プログラムの動作を説明するためのフローチャートである。
【図６】異常を検出したときの複合機内部での診断用プログラムの動作を説明するためのフローチャートである。
【図７】第二の実施例にかかる複合機を説明するための機能ブロック図である。
【図８】依存関係を有しているソフトウェアコンポーネントのインストール時の登録作業を説明するためのフローチャートである。
【図９】異常が発生したときの複合機内部での情報収集用プログラムの動作を説明するためのフローチャートである。
【図１０】異常を検出したときの複合機内部での診断用プログラムの動作を説明するためのフローチャートである。
【符号の説明】
【００８４】
１０，１５…複合機（画像形成装置）、１１Ａ〜１１Ｄ…ソフトウェアコンポーネント、１２Ａ…アプリケーションモジュール、１３Ａ…インターフェース（Ｉ／Ｆ）、２０…ソフト記憶部、２２…Ｉ／Ｆ情報生成部、２３…Ｉ／Ｆ情報記憶部、２５…Ｉ／Ｆ情報取得部、２６…情報収集部、２７…診断部、２８…表示部、２９…特定部、４１…Ｉ／Ｆ情報記憶部、４２…Ｉ／Ｆ情報取得部、４３…保持部
【図１】
2008182650.tif 000003
【図２】
2008182650.tif 000004
【図３】
2008182650.tif 000005
【図４】
2008182650.tif 000006
【図５】
2008182650.tif 000007
【図６】
2008182650.tif 000008
【図７】
2008182650.tif 000009
【図８】
2008182650.tif 000010
【図９】
2008182650.tif 000011
【図１０】
2008182650.tif 000012