(57)【特許請求の範囲】
【請求項１】
第一のプログラムと該第一のプログラムが提供する、機器の機能を利用させるインタフェースを利用する第二のプログラムとの互換性を評価する情報処理装置であって、
前記第二のプログラムから、前記第二のプログラムが利用している一又は複数の前記インタフェースを抽出する第一の抽出手段と、
前記第一のプログラムが提供するインタフェースの中で、特定の機器においては前記第一のプログラムに対する仕様を満たしていないインタフェースごとに、前記仕様を満たしていないことへの対処方法を示す情報を記憶したインタフェース情報記憶手段を用いて、前記第二のプログラムが利用している前記一又は複数のインタフェースから前記仕様を満たしていないインタフェースを抽出する第二の抽出手段と、
前記第二の抽出手段によって抽出されたインタフェースごとに、前記仕様を満たしていないことへの対処方法を提示する提示手段とを有する情報処理装置。
【請求項２】
前記仕様を満たしていないことへの対処方法を示す情報を前記第一のプログラムのソースコードより抽出する第三の抽出手段を有する請求項１記載の情報処理装置。
【請求項３】
前記インタフェース情報記憶手段は、少なくとも一部の前記仕様を満たしていないインタフェースについて、前記仕様を満たしていないことへの対処方法として置換先のインタフェース情報を記憶し、
前記第二のプログラムにおける前記仕様を満たしていないインタフェースの利用箇所を、前記置換先のインタフェース情報に基づいて修正する編集手段を有する請求項１又は２記載の情報処理装置。
【請求項４】
前記インタフェース情報記憶手段は、少なくとも一部の前記仕様を満たしていないインタフェースについて、前記仕様を満たしていないことへの対処方法として取得すべきプログラムの識別名を記憶し、
前記プログラムをネットワークを介して取得し、前記第一のプログラムに対して適用するプログラム取得手段を有する請求項１又は２項記載の情報処理装置。
【請求項５】
コンピュータが、第一のプログラムと該第一のプログラムが提供する、機器の機能を利用させるインタフェースを利用する第二のプログラムとの互換性を評価する互換性評価方法であって、
前記第二のプログラムから、前記第二のプログラムが利用している一又は複数の前記インタフェースを抽出する第一の抽出手順と、
前記第一のプログラムが提供するインタフェースの中で、特定の機器においては前記第一のプログラムに対する仕様を満たしていないインタフェースごとに、前記仕様を満たしていないことへの対処方法を示す情報を記憶したインタフェース情報記憶手段を用いて、前記第二のプログラムが利用している前記一又は複数のインタフェースから前記仕様を満たしていないインタフェースを抽出する第二の抽出手順と、
前記第二の抽出手順において抽出されたインタフェースごとに、前記仕様を満たしていないことへの対処方法を提示する提示手順とを有する互換性評価方法。
【請求項６】
前記仕様を満たしていないことへの対処方法を示す情報を前記第一のプログラムのソースコードより抽出する第三の抽出手順を前記コンピュータが実行する請求項５記載の互換性評価方法。
【請求項７】
前記インタフェース情報記憶手段は、少なくとも一部の前記仕様を満たしていないインタフェースについて、前記仕様を満たしていないことへの対処方法として置換先のインタフェース情報を記憶し、
前記第二のプログラムにおける前記仕様を満たしていないインタフェースの利用箇所を、前記置換先のインタフェース情報に基づいて修正する編集手順を前記コンピュータが実行する請求項５又は６記載の互換性評価方法。
【請求項８】
前記インタフェース情報記憶手段は、少なくとも一部の前記仕様を満たしていないインタフェースについて、前記仕様を満たしていないことへの対処方法として取得すべきプログラムの識別名を記憶し、
前記プログラムをネットワークを介して取得し、前記第一のプログラムに対して適用するプログラム取得手順を有する請求項５又は６記載の互換性評価方法。
【請求項９】
コンピュータに、第一のプログラムと該第一のプログラムが提供する、機器の機能を利用させるインタフェースを利用する第二のプログラムとの互換性を評価させるプログラムであって、
前記第二のプログラムから、前記第二のプログラムが利用している一又は複数の前記インタフェースを抽出する第一の抽出手順と、
前記第一のプログラムが提供するインタフェースの中で、特定の機器においては前記第一のプログラムに対する仕様を満たしていないインタフェースごとに、前記仕様を満たしていないことへの対処方法を示す情報を記憶したインタフェース情報記憶手段を用いて、前記第二のプログラムが利用している前記一又は複数のインタフェースから前記仕様を満たしていないインタフェースを抽出する第二の抽出手順と、
前記第二の抽出手順において抽出されたインタフェースごとに、前記仕様を満たしていないことへの対処方法を提示する提示手順とを実行させるためのプログラム。
【請求項１０】
前記仕様を満たしていないことへの対処方法を示す情報を前記第一のプログラムのソースコードより抽出する第三の抽出手順を前記コンピュータに実行させる請求項９記載のプログラム。
【請求項１１】
前記インタフェース情報記憶手段は、少なくとも一部の前記仕様を満たしていないインタフェースについて、前記仕様を満たしていないことへの対処方法として置換先のインタフェース情報を記憶し、
前記第二のプログラムにおける前記仕様を満たしていないインタフェースの利用箇所を、前記置換先のインタフェース情報に基づいて修正する編集手順を前記コンピュータに実行させる請求項９又は１０記載のプログラム。
【請求項１２】
前記インタフェース情報記憶手段は、少なくとも一部の前記仕様を満たしていないインタフェースについて、前記仕様を満たしていないことへの対処方法として取得すべきプログラムの識別名を記憶し、
前記プログラムをネットワークを介して取得し、前記第一のプログラムに対して適用するプログラム取得手順を有する請求項９又は１０記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、互換性評価方法、及びプログラムに関し、特にプラットフォームの非互換に関してアプリケーションを評価する情報処理装置、互換性評価方法、及びプログラムに関する。
【背景技術】
【０００２】
従来、主に複合機と呼ばれる画像形成装置において、アプリケーションプログラム（以下、単に「アプリケーション」という。）を動作させるためのプラットフォームプログラム（以下、単に「プログラム」という。）を有し、当該プラットフォームが提供するＡＰＩ（Application Program Interface）が公開されているものがある（例えば、特許文献１）。このような画像形成装置に対しては、上記ＡＰＩを利用して、画像形成装置のメーカー以外の外部のソフトウェアベンダ等によっても新たなアプリケーションの開発が可能となる。
【０００３】
斯かるプラットフォームのリリース期間は短縮化しており、例えば、半年に１回程度の頻度でバージョンアップが行われている。バージョンアップに伴い上記ＡＰＩの追加等が行われ、旧バージョンのプラットフォーム上におけるＡＰＩと、新バージョンのプラットフォーム上におけるＡＰＩとの間に、ＡＰＩの種類上における非互換が生じうる。
【０００４】
また、上記ＡＰＩは、画像形成装置の機種に対して共通化されているものの、機種間におけるハードウェアリソースの相違に基づいて、ＡＰＩの振る舞いを完全に一致させるのは困難な場合がある。したがって、機種間においてＡＰＩの振る舞い上における非互換が生じうる。
【０００５】
以上のような非互換の発生の結果、アプリケーションの開発者は、全てのバージョン及び全ての機種について、￥アプリケーションの動作を保証することが困難な状況となっている。また、多種のプラットフォームの存在は、プラットフォームの提供者にとっても大きな負担となりつつある。
【０００６】
すなわち、バージョン及び機種の組み合わせに応じて多数存在するプラットフォームのそれぞれについてアプリケーションの動作を評価（テスト）するのは、アプリケーションの開発者にとって大きな負担である。
【０００７】
また、アプリケーションの評価の過程において予期せぬ動作が発生した場合、アプリケーションの開発者からプラットフォームの提供者に対して問い合わせが行われる。多種多様なアプリケーションが市場において提供され、多数のプラットフォームが存在する状況において、このような問い合わせの殺到は、プラットフォームの提供者にとって大きな作業負担となる。
【０００８】
そこで、特許文献２に記載された技術を利用して、プラットフォームの非互換に関してアプリケーションの評価を行うことが考えられる。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、特許文献２に記載された技術では、プラットフォーム側において公開されている全てのインタフェースについて所定の定義言語による定義情報が記述される必要がある。上記のように、プラットフォームが頻繁にバージョンアップされる状況において、全てのインタフェースに関する定義情報の記述は、プラットフォームの提供者にとって非常に大きな作業負担となってしまう。
【００１０】
本発明は、上記の点に鑑みてなされたものであって、プラットフォームプログラムの非互換に関するアプリケーションプログラムの評価を効率化することのできる情報処理装置、互換性評価方法、及びプログラムの提供を目的とする。
【課題を解決するための手段】
【００１１】
そこで上記課題を解決するため、本発明は、第一のプログラムと該第一のプログラムが提供する、機器の機能を利用させるインタフェースを利用する第二のプログラムとの互換性を評価する情報処理装置であって、前記第二のプログラムから、前記第二のプログラムが利用している一又は複数の前記インタフェースを抽出する抽出手段と、前記第一のプログラムが提供するインタフェースの中で仕様を満たしていない非互換のインタフェースごとに、非互換を解消するための修正方法を示す情報を記憶した非互換インタフェース情報記憶手段を用いて、前記第二のプログラムが利用している前記一又は複数のインタフェースから前記非互換のインタフェースに該当するインタフェースを抽出する非互換インタフェース利用判定手段と、前記非互換インタフェース利用判定手段によって抽出されたインタフェースごとに、前記非互換を解消するための修正方法を提示する提示手段とを有する。
【００１２】
このような情報処理装置では、プラットフォームプログラムの非互換に関するアプリケーションプログラムの評価を効率化することができる。
【発明の効果】
【００１３】
本発明によれば、プラットフォームプログラムの非互換に関するアプリケーションプログラムの評価を効率化することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施の形態において互換性の評価対象とされるプログラムの例を示す図である。
【図２】本発明の実施の形態における互換性評価装置のハードウェア構成例を示す図である。
【図３】第一の実施の形態における互換性評価装置の機能構成例を示す図である。
【図４】非互換インタフェース情報の生成処理の処理手順を説明するためのシーケンス図である。
【図５】第一の実施の形態におけるプラットフォームソースコードの例を示す図である。
【図６】第一の実施の形態における非互換インタフェース情報の例を示す図である。
【図７】機種依存互換性に関する評価処理の処理手順を説明するためのシーケンス図である。
【図８】インタフェースリストの例を示す図である。
【図９】機種依存非互換に関する互換性レポートの例を示す図である。
【図１０】バージョン依存互換性に関する評価処理の処理手順を説明するためのシーケンス図である。
【図１１】バージョン依存互換性に関する互換性レポートの例を示す図である。
【図１２】第二の実施の形態における互換性評価装置の機能構成例を示す図である。
【図１３】第二の実施の形態におけるプラットフォームソースコードの例を示す図である。
【図１４】第二の実施の形態における非互換インタフェース情報の例を示す図である。
【図１５】第二の実施の形態における非互換部分の修正処理の処理手順を説明するためのシーケンス図である。
【図１６】第三の実施の形態における互換性評価装置の機能構成例を示す図である。
【図１７】第三の実施の形態におけるプラットフォームソースコードの例を示す図である。
【図１８】第三の実施の形態における非互換インタフェース情報の例を示す図である。
【図１９】第三の実施の形態における非互換部分の修正処理の処理手順を説明するためのシーケンス図である。
【発明を実施するための形態】
【００１５】
以下、図面に基づいて本発明の実施の形態を説明する。図１は、本発明の実施の形態において互換性の評価対象とされるプログラムの例を示す図である。本実施の形態では、同図に示される画像形成装置２０におけるプログラムを互換性の評価対象とする。
【００１６】
画像形成装置２０は、標準アプリ２１、ＳＤＫアプリ２２、ＳＤＫプラットフォーム２３、及びサービス層２４等のソフトウェアを有する。
【００１７】
標準アプリ２１は、画像形成装置２０に標準的に（出荷時に予め）実装されているアプリケーションの集合である。同図では、スキャンアプリ２１１、プリンタアプリ２１２、コピーアプリ２１３、及びＦＡＸアプリ２１４が例示されている。スキャンアプリ２１１は、スキャンジョブを実行する。プリンタアプリ２１２はネットワークを介して印刷データを受信し、受信された印刷データに基づいて印刷ジョブを実行する。すなわち、画像形成装置２０の印刷ポート宛に送信される印刷データは、プリンタアプリ２１２によって処理される。コピーアプリ２１３は、コピージョブを実行する。ＦＡＸアプリ２１４は、ＦＡＸの送信ジョブ又は受信ジョブを実行する。
【００１８】
サービス層２４は、各種のハードウェアリソースの制御機能や管理情報等の管理機能等を上位アプリケーション等に対して提供する部分である。
【００１９】
ＳＤＫアプリ２２は、画像形成装置２０の出荷後において、画像形成装置２０の機能拡張を図るためのプラグインとして追加的にインストールされるアプリケーションプログラムである。同図では、ＳＤＫアプリ２２として、ＳＤＫアプリ２２ａ、ＳＤＫアプリ２２ｂ、及びＳＤＫアプリ２２ｃが例示されている。
【００２０】
ＳＤＫプラットフォーム２３は、ＳＤＫアプリ２２の実行環境を提供するプログラム又はプログラム群である。すなわち、ＳＤＫプラットフォーム２３上で動作するアプリケーションがＳＤＫアプリ２２である。各ＳＤＫアプリ２２は、ＳＤＫプラットフォーム２３が提供（公開）するＡＰＩ（Application Program Interface）を介して画像形成装置２０の各種の機能を利用する（実行させる）ことができる。例えば、当該ＡＰＩ（以下、「ＳＤＫＡＰＩ」という。）は、スキャン機能を利用させるためのインタフェース、印刷機能を利用させるためのインタフェース、コピー機能を利用させるためのインタフェース等を含む。
【００２１】
なお、ＳＤＫプラットフォーム２３の実装内容は、そのバージョン又はＳＤＫプラットフォーム２３が搭載される画像形成装置２０の機種に応じて異なりうる（非互換部分が存在しうる）。ＳＤＫプラットフォーム２３のバージョン間を跨る互換性を「バージョン依存互換性」といい、バージョン依存互換性が無いことを「バージョン依存非互換」という。バージョン依存非互換が発生する例としては、新バージョンにおいて新たなＳＤＫＡＰＩが追加される場合が挙げられる。
【００２２】
また、ＳＤＫプラットフォーム２３が搭載される機種間を跨る互換性を「機種依存互換性」といい、機種依存互換性が無いことを「機種依存非互換」という。機種依存非互換が発生する例としては、同じバージョンのＳＤＫプラットフォーム２３において、機種Ａに対するＳＤＫプラットフォーム２３におけるメソッドＡと、機種Ｂに対するＳＤＫプラットフォーム２３におけるメソッドＡとの振る舞いが異なる例が挙げられる。
【００２３】
本実施の形態では、或るＳＤＫプラットフォーム２３上において開発されたＳＤＫアプリ２２が、他のバージョン又は他の機種のＳＤＫプラットフォーム２３上において正しく動作するか否かを評価するための互換性評価装置、互換性評価方法、及びプログラムについて説明する。
【００２４】
図２は、本発明の実施の形態における互換性評価装置のハードウェア構成例を示す図である。同図において互換性評価装置１０は、それぞれバスBで相互に接続されているドライブ装置１００と、補助記憶装置１０２と、メモリ装置１０３と、ＣＰＵ１０４と、インタフェース装置１０５と、表示装置１０６と、入力装置１０７とを有する。
【００２５】
互換性評価装置１０での処理を実現するプログラムは、ＣＤ−ＲＯＭ等の記録媒体１０１によって提供される。プログラムを記録した記録媒体１０１がドライブ装置１００にセットされると、プログラムが記録媒体１０１からドライブ装置１００を介して補助記憶装置１０２にインストールされる。但し、プログラムのインストールは必ずしも記録媒体１０１より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置１０２は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【００２６】
メモリ装置１０３は、プログラムの起動指示があった場合に、補助記憶装置１０２からプログラムを読み出して格納する。ＣＰＵ１０４は、メモリ装置１０３に格納されたプログラムに従って互換性評価装置１０に係る機能を実現する。インタフェース装置１０５は、ネットワークに接続するためのインタフェースとして用いられる。表示装置１０６はプログラムによるＧＵＩ（Graphical User Interface）等を表示する。入力装置１０７はキーボード及びマウス等で構成され、様々な操作指示を入力させるために用いられる。
【００２７】
図３は、第一の実施の形態における互換性評価装置の機能構成例を示す図である。同図において、互換性評価装置１０は、互換性判定制御部１１、実行コード解析部１２、非互換インタフェース抽出部１３、非互換インタフェース利用判定部１４、実行時結合可否判定部１５、及び互換性レポート作成部１６等を有する。これら各部は、互換性評価装置１０にインストールされたプログラムが、ＣＰＵ１０４に実行させる処理によって実現される。
【００２８】
互換性判定制御部１１は、評価対象として選択されたＳＤＫアプリ２２（以下、「評価対象アプリ」という。）と、評価対象として選択されたＳＤＫプラットフォーム２３（以下、「評価対象プラットフォーム」という。）との互換性の有無を判定するための処理を制御する。
【００２９】
実行コード解析部１２は、ＳＤＫアプリ実行コード１１０を解析し、ＳＤＫアプリ実行コード１１０内において呼び出されている（利用されている）ＳＤＫＡＰＩのメソッド又はイベント等の一覧（以下、「インタフェースリスト」という。）を生成する。ＳＤＫアプリ実行コード１１０は、評価対象アプリの実行コード（実行オブジェクトとも呼ばれる。）である。例えば、ＳＤＫアプリ２２がＪａｖａ（登録商標）で記述されている場合、ＳＤＫアプリ実行コード１１０は、Ｊａｖａ（登録商標）バイトコードを含むＪＡＲ（Java（登録商標） Archive）又はクラスファイル等である。但し、このことは、本実施の形態による評価対象がＪａｖａ（登録商標）言語で記述されているプログラムに限定されることを意味するものではない。例えば、Ｃ言語やＣ＋＋言語であれば、ＳＤＫアプリ実行コード１１０は、オブジェクトファイルであってもよい。また、プログラミング言語を問わず、ＳＤＫアプリ実行コード１１０の代わりに評価対象アプリのソースコードを実行コード解析部１２による解析対象としてもよい。ソースコードであっても、ＳＤＫＡＰＩのメソッドの呼び出しが行われているか否かは解析可能だからである。なお、ＳＤＫアプリ２２内においては、ＳＤＫＡＰＩのみならず、プログラム言語において標準の関数又はクラスのメソッド等の呼び出しも行われている可能性がある。また、ＳＤＫアプリ２２内において独自に定義されている関数又はクラスのメソッド等の呼び出しも行われている可能性もある。これらの関数又はメソッドとＳＤＫＡＰＩとの区別は、関数名又はメソッド名に基づいて行えばよい。例えば、所定の命名規則にしたがった名前を有する（Ｊａｖａ（登録商標）であれば所定のパッケージ名に係る）クラス又はメソッドであれば、ＳＤＫＡＰＩであると判断するといった具合である。
【００３０】
非互換インタフェース抽出部１３は、評価対象プラットフォームのソースコードであるプラットフォームソースコード１２０より非互換インタフェース情報１３０を抽出する。非互換インタフェース情報１３０は、評価対象プラットフォームについて、機種依存非互換部分に該当するメソッド等の一覧情報である。当該一覧情報には、評価対象プラットフォームが属するバージョンの仕様（本来の振る舞い）に対する、評価対象プラットフォームの非互換の内容を示す情報も含まれる。例えば、当該バージョンに対する仕様としてＺ折りを実行するメソッドが定義されている場合であって、評価対象プラットフォームがＺ折りのためのハードウェアを有さない機種に対するＳＤＫプラットフォーム２３である場合、評価対象プラットフォームにおける当該メソッドは、「Ｚ折りを実行する」という仕様を満たすことはできない。このようなことを示す情報が非互換インタフェース情報１３０に含まれる。
【００３１】
非互換インタフェース利用判定部１４は、非互換インタフェース情報１３０の中から、実行コード解析部１２によって生成されたインタフェースリストに含まれているメソッド等に対応する情報を抽出する。すなわち、非互換インタフェース利用判定部１４は、評価対象アプリに利用されているメソッド等の中で、評価対象プラットフォームの機種依存非互換部分に該当するメソッド等の一覧情報を抽出する。
【００３２】
実行時結合可否判定部１５は、実行コード解析部１２によって生成されたインタフェースリストに含まれるメソッド等の中に、評価対象プラットフォームが備えていないメソッド等が存在するか否かを判定する。すなわち、実行結合可否判定部は、バージョン依存非互換の有無を判定する。なお、実行時結合可否判定部１５は、評価対象プラットフォームが備えているメソッド等の一覧をプラットフォーム実行コード１４０を解析することにより取得する。但し、プラットフォームソースコード１２０が実行時結合可否判定部１５によって解析されてもよい。
【００３３】
プラットフォーム実行コード１４０は、評価対象プラットフォームの実行コードであり、プラットフォームソースをコンパイルすることにより生成される。プラットフォーム実行コード１４０は、ＳＤＫプラットフォーム２３のバージョン及び動作環境（機種）毎に１つ存在する。
【００３４】
互換性レポート作成部１６は、非互換インタフェース利用判定部１４によるバージョン依存非互換に関する判定結果と、実行結合可否判定部による機種依存非互換に関する判定結果とに基づいて、評価対象アプリを評価対象プラットフォーム上で動作させる際の互換性に関するレポート（評価情報）を作成する。
【００３５】
なお、ＳＤＫアプリ実行コード１１０、プラットフォームソースコード１２０、及びプラットフォーム実行コード１４０は、互換性評価装置１０の補助記憶装置１０２に記録されていてもよいし、互換性評価装置１０がネットワークを介してアクセス可能な記憶装置等に記録されていてもよい。又は、ＣＤ−ＲＯＭ等の携帯可能な記録媒体に記録されていてもよい。
【００３６】
以下、互換性評価装置１０の処理手順について説明する。図４は、非互換インタフェース情報の生成処理の処理手順を説明するためのシーケンス図である。
【００３７】
例えば、ユーザ（評価者又はテスト実行者）による指示入力に応じ、非互換インタフェース抽出部１３は、プラットフォームソースコード１２０より非互換インタフェース情報１３０を抽出する（Ｓ１０１、Ｓ１０２）。
【００３８】
図５は、第一の実施の形態におけるプラットフォームソースコードの例を示す図である。本実施の形態においては、便宜上、Ｊａｖａ（登録商標）によってＳＤＫプラットフォーム２３が記述されていることとする。
【００３９】
同図のプラットフォームソースコード１２０ａは、Ａクラスに関するソースコードの例である。同図には、「ＸＸＸ＿ＥＶＥＮＴ」イベントに関する定義１２２、及びｓｅｔＸメソッドに関する定義１２４が含まれている。また、非互換部分については、非互換情報（非互換に関する情報）が記述されている。例えば、記述１２１は、定義１２２に対する非互換情報であり、このイベント（ＸＸＸ＿ＥＶＥＮＴ）は（当該ＳＤＫプラットフォーム２３では）通知されないことを示すメッセージが記述されている。また、記述１２３は、記述１２４に対する非互換情報であり、このメソッドは（当該ＳＤＫプラットフォーム２３では）サポートされていないこと、及びこのメソッドを利用しているアプリ（ＳＤＫアプリ２２）は、ＢクラスのｓｅｔＹを（このメソッドの代わりに）利用するように修正することを促すことを示すメッセージが記述されている。なお、記述１２１及び記述１２３には、当該記述が非互換情報であることを示す識別用の文字列（以下、「非互換タグ」という。）が所定の形式で付加されている。すなわち、記述１２１における「＠ｎｏｔ＿ｎｏｔｉｆｉｅｄ」、及び記述３１２における「＠ｕｎｓｕｐｐｏｒｔｅｄ」は、非互換タグに該当する。本実施の形態において、非互換タグは、「＠」で開始される文字列である。また、非互換タグのタグ名は、非互換のタイプ（種別）又は意味を示す。例えば、「ｎｏｔ＿ｎｏｔｉｆｉｅｄ」は、対応するイベントが通知されないといった非互換を示す。「ｕｎｓｕｐｐｏｒｔｅｄ」は、対応するメソッドはサポートされていないといった非互換を示す。なお、本実施の形態において、メソッドがサポートされていないことと、メソッドが存在しないこととは明確に区別される。メソッドがサポートされていないことは、メソッドは存在するが、仕様を満たした処理は実行されないことを意味する。
【００４０】
なお、図５に示した非互換のタイプ（非互換タイプ）は一例に過ぎない。非互換の種類や程度に応じて適宜必要な非互換タイプを定義すればよい。
【００４１】
非互換インタフェース抽出部１３は、プラットフォームソースコード１２０ａより、非互換タグを検出し、当該非互換タグのタグ名、非互換タグに続いて記述されている文字列（通知メッセージ）、非互換タグが検出されたメソッド名又はイベント名等の定義要素名（以下、「インタフェース名」という。）、及び非互換タグが検出されたクラス名等を対応付けた情報を、非互換インタフェース情報１３０として抽出する。
【００４２】
続いて、非互換インタフェース抽出部１３は、抽出された非互換インタフェース情報１３０を所定の形式に成形し、補助記憶装置１０２に保存する（Ｓ１０３）。
【００４３】
図６は、第一の実施の形態における非互換インタフェース情報の例を示す図である。同図に示される非互換インタフェース情報１３０ａは、非互換部分として抽出されたメソッド等ごとに、クラス名、インタフェース名、非互換タイプ、及び通知メッセージを含む。同図では、図５のプラットフォームソースコード１２０ａより抽出された非互換インタフェース情報１３０の例が示されている。すなわち、１行目は、記述１２１に基づいて抽出されたものであり、２行目は、記述１２３に基づいて抽出されたものである。図５と図６との対比より明らかなように、クラス名には非互換部分（非互換インタフェース）が存在した（非互換タグが検出された）クラスのクラス名が記録される。インタフェース名には、非互換インタフェースであるメソッド又はイベント等の名前が記録される。非互換タイプには、非互換タグのタグ名が記録される。通知メッセージには、非互換タグに続いて記述されている文字列が記録される。
【００４４】
なお、上記した非互換インタフェース情報１３０の抽出処理は、ＳＤＫプラットフォーム２３の開発者等によって、プラットフォームソースコード１２０内に非互換情報が記述されることが前提とされる。ここで、非互換情報の記述場所は、必ずしもプラットフォームソースコード１２０内でなくてもよい。プラットフォームソースコード１２０と関連付けて管理されうるファイル内に記述されていてもよい。当該関連付けは、例えば、非互換情報が独立して記述されたファイルのファイル名に、非互換インタフェースを含むクラスのクラス名を含めること等によって行われてもよいし、当該ファイルが非互換インタフェースを含むクラスのソースファイルと一体化（書庫化）されることによって行われてもよい。非互換情報が独立して記述されたファイルの内容を、非互換インタフェース情報１３０と同様としてもよい。この場合、非互換インタフェース情報１３０の抽出処理は不要となる。
【００４５】
続いて、機種依存互換性に関する評価処理について説明する。図７は、機種依存互換性に関する評価処理の処理手順を説明するためのシーケンス図である。
【００４６】
例えば、ユーザによって評価対象アプリが指定され、機種依存互換性の評価要求が入力されると、互換性判定制御部１１は、評価対象アプリのＳＤＫアプリ実行コード１１０の解析を実行コード解析部１２に要求する（Ｓ２０１）。実行コード解析部１２は、ＳＤＫアプリ実行コード１１０を解析し、ＳＤＫアプリ実行コード１１０が利用しているインタフェース（メソッド、イベント等）を抽出する。実行コード解析部１２は、抽出されたインタフェースの一覧をインタフェースリストとして互換性判定制御部１１に返却する（Ｓ２０２）。
【００４７】
図８は、インタフェースリストの例を示す図である。同図において、インタフェースリストには、抽出されたインタフェースごとに、クラス名及びインタフェース名が含まれている。同図の例では、ＳＤＫアプリ実行コード１１０は、ＡクラスのｓｅｔＸメソッド、ＣクラスのｓｅｔＹメソッド、及びＣクラスのｓｅｔＺメソッド等を利用していることが分かる。なお、インタフェースリストに含まれる情報は、プログラム言語等に応じて各インタフェース（メソッド、イベント等）を識別可能な情報であればよい。例えば、オブジェクト指向プログラミング言語で無い場合、クラス名は不要である。一方、ネームスペース等を定義することにより、同一クラス名の存在を許容している場合、ネームスペース名もインタフェースリストに含めるようにすればよい。
【００４８】
続いて、互換性判定制御部１１は、インタフェースリストを非互換インタフェース利用判定部１４に入力する（Ｓ２０３）。非互換インタフェース利用判定部１４は、図４の処理によって予め生成され、補助記憶装置１０２の所定の位置に保存されている非互換インタフェース情報１３０を取得する（Ｓ２０４、Ｓ２０５）。続いて、非互換インタフェース利用判定部１４は、非互換インタフェース情報１３０から、入力されたインタフェースリストに含まれているインタフェースに係る情報を抽出し、抽出された情報（非互換インタフェース利用情報）を互換性判定制御部１１に返却する（Ｓ２０６）。例えば、図６の非互換インタフェース情報１３０と図８のインタフェースリストとが処理対象とされる場合、非互換インタフェース情報１３０の中のＡクラスのｓｅｔＸメソッドに係る情報（行）が抽出される。なお、該当する情報が抽出されなかった場合、非互換インタフェース利用判定部１４は、該当する情報が無いことを示す応答を互換性判定制御部１１に返却する。
【００４９】
非互換インタフェース利用判定部１４より非互換インタフェース利用情報が返却された場合、互換性判定制御部１１は、非互換インタフェース利用情報を互換性レポート作成部１６に入力し、互換性レポート１５０の作成を要求する（Ｓ２０７）。互換性レポート作成部１６は、非互換インタフェース利用情報に基づいて互換性レポート１５０を作成し、作成された互換性レポート１５０を補助記憶装置１０２に保存する。
【００５０】
図９は、機種依存非互換に関する互換性レポートの例を示す図である。同図に示されるように、互換性レポート１５０ａには、非互換インタフェース利用情報に含まれているインタフェースについて、非互換タイプ、インタフェース名、及び通知メッセージが記録されている。ユーザは、互換性レポート１５０を表示装置１０６に表示させたり、非図示のプリンタに印刷させたりすることにより、評価対象アプリを評価対象プラットフォーム上で動作させた場合における機種依存非互換に関する問題点を容易に把握することができる。また、当該問題点を解決するための適切な対処を行うこともできる。例えば、図９の例では、評価対象アプリのソースコードにおいて、クラスＡのｓｅｔＹメソッドを呼び出している箇所をクラスＢのｓｅｔＹメソッドに置き換えることができる。その結果、評価対象プラットフォーム上における評価対象アプリの動作をより適切なものとすることができる。
【００５１】
続いて、バージョン依存互換性に関する評価処理について説明する。図１０は、バージョン依存互換性に関する評価処理の処理手順を説明するためのシーケンス図である。
【００５２】
例えば、ユーザによって評価対象アプリ及び評価対象プラットフォームが指定され、バージョン依存互換性の評価要求が入力されると、互換性判定制御部１１は、評価対象アプリのＳＤＫアプリ実行コード１１０の解析を実行コード解析部１２に要求する（Ｓ３０１）。実行コード解析部１２による処理内容は、図７（機種依存互換性に関する評価処理）の場合と同様である。したがって、ステップＳ３０２では、図８に示されるようなインタフェースリストが互換性判定制御部１１に返却される。
【００５３】
続いて、互換性判定制御部１１は、インタフェースリストを実行時結合可否判定部１５に入力する（Ｓ３０３）。実行時結合可否判定部１５は、予め補助記憶装置１０２の所定の位置に保存されているプラットフォーム実行コード１４０を取得する（Ｓ３０４、Ｓ３０５）。続いて、実行時結合可否判定部１５は、プラットフォーム実行コード１４０を解析し、入力されたインタフェースリストに含まれているインタフェースの中から、プラットフォーム実行コード１４０内に存在しないインタフェース（プラットフォーム実行コード１４０においてＳＤＫアプリ２２の実行時に結合不可能（リンク不可能）なインタフェース）を抽出（リストアップ）する。実行時結合可否判定部１５は、抽出されたインタフェースの一覧情報（例えば、インタフェース名の一覧）を互換性判定制御部１１に返却する（Ｓ３０６）。なお、該当するインタフェースが抽出されなかった場合、実行時結合可否判定部１５は、該当するインタフェースは無いことを示す応答を互換性判定制御部１１に返却する。
【００５４】
実行時結合可否判定部１５よりインタフェースの一覧情報が返却された場合、互換性判定制御部１１は、当該インタフェースの一覧情報を互換性レポート作成部１６に入力し、互換性レポート１５０の作成を要求する（Ｓ３０７）。互換性レポート作成部１６は、当該インタフェースの一覧情報に基づいて互換性レポート１５０を作成し、作成された互換性レポート１５０を補助記憶装置１０２に保存する。
【００５５】
図１１は、バージョン依存互換性に関する互換性レポートの例を示す図である。同図の互換性レポート１５０ｂでは、クラスＣのｓｅｔＺメソッドが評価対象プラットフォームには存在しないことが示されている。ユーザは、互換性レポート１５０ｂを表示装置１０６に表示させたり、非図示のプリンタに印刷させたりすることにより、評価対象アプリを評価対象プラットフォーム上で動作させた場合におけるバージョン依存非互換に関する問題点を容易に把握することができる。
【００５６】
なお、上記では、機種依存互換性に関する評価とバージョン依存互換性に関する評価とが別々に実行される例を示したが、双方の評価が一度に実行されるようにしてもよい。そうする場合、図７のステップＳ２０２とＳ２０３、又はＳ２０６とＳ２０７の間に図１０のステップＳ３０３〜Ｓ３０６が実行されるようにすればよい。また、互換性レポート作成部１６は、非互換インタフェース利用判定部１４によって抽出された非互換インタフェース利用情報と、実行時結合可否判定部１５によって抽出されたインタフェースの一覧情報とに基づいて互換性レポート１５０を生成するようにすればよい。その結果として生成される互換性レポート１５０は、図９と図１１とをマージしたものとなる。
【００５７】
上述したように、第一の実施の形態によれば、ＳＤＫプラットフォーム２３の非互換に関するＳＤＫアプリ２２の評価を効率的に行うことができる。すなわち、本実施の形態では、非互換インタフェース情報１３０はプラットフォームソースコード１２０より自動的に抽出され、また、存在しないインタフェースの一覧はプラットフォーム実行コード１３０に基づいて自動的に抽出されるため、ＳＤＫプラットフォーム２３の全てのインタフェースに関して定義情報を記述する必要はない。なお、非互換インタフェース情報１３０をユーザが予め作成する場合であっても、対象とされるインタフェースは非互換インタフェースに限定される。したがって、全てのインタフェースについて定義情報を作成する場合に比べてユーザに対する作業負担を著しく軽減することができる。
【００５８】
次に、第二の実施の形態について説明する。図１２は、第二の実施の形態における互換性評価装置の機能構成例を示す図である。図１２中、図３と同一部分には同一符号を付し、その説明は省略する。
【００５９】
第二の実施の形態では、実行コード修正制御部１７及び実行コード編集部１８が新たに追加されている。実行コード修正制御部１７は、ＳＤＫアプリ実行コード１１０が非互換インタフェースを利用している場合に、非互換を解消するための修正処理を制御する。実行コード編集部１８は、ＳＤＫアプリ実行コード１１０を編集し、非互換を解消する。
【００６０】
図１３は、第二の実施の形態におけるプラットフォームソースコードの例を示す図である。図１３中、図５と同一部分には同一符号を付し、その説明は省略する。図１３に示されるプラットフォームソースコード１２０ｂにおいて、記述１２３ｂ内の非互換タグ（＠ｕｎｓｕｐｐｏｒｔｅｄ）にはｒｕｌｅ属性が付加されている。すなわち、ルール属性の値「around B#setY(Object obj)」は、当該非互換を解消するための修正ルール（修正方法）を示す。ａｒｏｕｎｄコマンドは、置換を意味し、ａｒｏｕｎｄコマンドの引数は置換先のインタフェース情報を示す。したがって、記述１２３ｂのｒｕｌｅ属性では、ＡクラスｓｅｔＸメソッドは、ＢクラスのｓｅｔＹメソッドに置換すべきことが示されている。
【００６１】
プラットフォームソースコード１２０ｂに対して図４において説明した処理を実行した場合、第二の実施の形態の非互換インタフェース抽出部１３は、図１４に示されるような非互換インタフェース情報１３０ｂを生成する。
【００６２】
図１４は、第二の実施の形態における非互換インタフェース情報の例を示す図である。同図に示される非互換インタフェース情報１３０ｂは、修正ルールを含みうる点が第一の実施の形態の非互換インタフェース情報１３０ａと異なる。修正ルールには、修正ルール属性の値が記録される。同図の例では、図１３のプラットフォームソースコード１２０ｂに基づいて、ＡクラスのｓｅｔＸメソッドについて修正ルールが記録されている。
【００６３】
以下、第二の実施の形態の互換性評価装置１０による処理手順について説明する。図１５は、第二の実施の形態における非互換部分の修正処理の処理手順を説明するためのシーケンス図である。
同図の処理は、非互換インタフェース情報１３０ｂが生成されていることが前提となる。
【００６４】
例えば、ユーザによって、修正対象のＳＤＫアプリ実行コード１１０及び非互換インタフェース情報１３０ｂが指定され、非互換部分の修正指示が入力されると、実行コード修正制御部１７は、指定された非互換インタフェース情報１３０ｂより修正ルールを取得する（Ｓ４０１、Ｓ４０２）。続いて、実行コード修正制御部１７は、修正ルールに含まれているａｒｏｕｎｄコマンドの実行を実行コード編集部１８に要求する（Ｓ４０３）。実行コード編集部１８は、指定されたＳＤＫアプリ実行コード１１０に対し、ａｒｏｕｎｄコマンドに応じた編集を行う（Ｓ４０４）。例えば、非互換インタフェース情報１３０ｂの修正ルールに基づく場合、クラスＡにおいてｓｅｔＸメソッドを呼び出していた箇所が、クラスＢのｓｅｔＹメソッドを呼び出すように変更される。その結果、修正済みＳＤＫアプリ実行コード１６０が生成される。
【００６５】
上述したように、第二の実施の形態によれば、非互換インタフェース情報１３０に基づいてＳＤＫアプリ実行コード１１０を自動的に編集し、非互換部分を解消することができる。したがって、ユーザによる作業負担を著しく低減することができる。なお、第二の実施の形態において、ＳＤＫアプリ実行コード１１０の代わりに、当該ＳＤＫアプリ２２のソースコードが利用されてもよい。この場合、ソースコードに対して自動的な編集が行われる。したがって、ユーザは編集されたソースコードをコンパイルして修正済みＳＤＫアプリ実行コード１６０を生成すればよい。
【００６６】
次に、第三の実施の形態について説明する。図１６は、第三の実施の形態における互換性評価装置の機能構成例を示す図である。図１６中、図１２と同一部分には同一符号を付し、その説明は省略する。
【００６７】
第三の実施の形態では、実行コード取得部１９が新たに追加されている。実行コード取得部１９は、互換性評価装置１０とネットワークを介して接続される修正プログラム蓄積サーバ３０より、非互換を解消するためのパッチを取得する。修正プログラム蓄積サーバ３０は、各種の非互換を解消するためのパッチが蓄積されているコンピュータである。なお、本実施の形態におけるパッチとは、プラットフォーム実行コード１４０に対する修正部分に対応するプログラム又はプログラムモジュール（例えば、一つのクラスファイル）をいう。
【００６８】
図１７は、第三の実施の形態におけるプラットフォームソースコードの例を示す図である。図１７中、図１３と同一部分には同一符号を付し、その説明は省略する。図１７に示されるプラットフォームソースコード１２０ｃにおいて、記述１２３ｃ内のｒｕｌｅ属性の値「download Patch001.class, around Patch001#setX(Object obj)」が第二の実施の形態と異なる。すなわち、当該値には、二つのコマンドが含まれている。一つ目は、ｄｏｗｎｌｏａｄコマンドである。ｄｏｗｎｌｏａｄコマンドは、引数にその識別名（ファイル名）が指定されたプログラム（Ｐａｔｃｈ００１．ｃｌａｓｓ）をパッチとして修正プログラム蓄積サーバ３０よりダウンロードすることを示す。なお、ｄｏｗｎｌｏａｄコマンドの引数に修正プログラム蓄積サーバ３０の識別情報（例えば、ＩＰアドレス等）を指定可能としてもよい。本実施の形態においては、便宜上、修正プログラム蓄積サーバ３０の識別情報は、補助記憶装置１０２内に予め記録されていることとする。二つ目はａｒｏｕｎｄコマンドである。ａｒｏｕｎｄコマンドについては、第二の実施の形態において説明した通りである。但し、第三の実施の形態では、置換先のメソッドがＰａｔｃｈ００１クラスのｓｅｔＸメソッドとされている。Ｐａｔｃｈ００１クラスは、ｄｏｗｎｌｏａｄコマンドによってダウンロードされるパッチ（Ｐａｔｃｈ００１．ｃｌａｓｓ）に実装されているメソッドである。
【００６９】
プラットフォームソースコード１２０ｃに対して図４において説明した処理を実行した場合、第三の実施の形態の非互換インタフェース抽出部１３は、図１８に示されるような非互換インタフェース情報１３０ｃを生成する。
【００７０】
図１８は、第三の実施の形態における非互換インタフェース情報の例を示す図である。同図に示される非互換インタフェース情報１３０ｃでは、クラスＡのｓｅｔＸメソッドの修正ルールに、プラットフォームソースコード１２０ｃの記述１２３ｃのｒｕｌｅ属性の値が記録されている。
【００７１】
以下、第三の実施の形態の互換性評価装置１０による処理手順について説明する。図１９は、第三の実施の形態における非互換部分の修正処理の処理手順を説明するためのシーケンス図である。同図の処理は、非互換インタフェース情報１３０ｃが生成されていることが前提となる。
【００７２】
ステップＳ５０１、Ｓ５０２は、図１５のステップＳ４０１、Ｓ４０２と同じである。但し、取得される修正ルールの内容は異なる。続いて、実行コード修正制御部１７は、修正ルールに含まれているｄｏｗｎｌｏａｄコマンドの実行を実行コード取得部１９に要求する（Ｓ５０３）。実行コード取得部１９は、ｄｏｗｎｌｏａｄコマンドの引数に指定されているパッチ（Ｐａｔｃｈ００１．ｃｌａｓｓ）のダウンロードを修正プログラム蓄積サーバに要求し（Ｓ５０４）、当該パッチを取得する（Ｓ５０５）。続いて、実行コード取得部１９は、取得されたパッチをプラットフォーム実行コード１４０に適用する（Ｓ５０６）。具体的には、取得されたパッチを補助記憶装置１０２内の所定の記憶領域（フォルダ）に保存する。続いて、実行コード取得部１９は、処理の完了を実行コード修正制御部１７に通知する（Ｓ５０７）。
【００７３】
続くステップＳ５０８、Ｓ５０９の処理手順は、図１５のステップＳ４０３、Ｓ４０４と同じである。したがって、実行コード編集部１８によって、ＳＤＫアプリ実行コード１１０が編集される。但し、編集内容は第二の実施の形態と異なる。すなわち、第三の実施の形態では、クラスＡにおいてｓｅｔＸメソッドを呼び出していた箇所が、Ｐａｔｃｈ００１クラスのｓｅｔＸメソッド、すなわち、プラットフォーム実行コード１４０に適用されたパッチに実装されているメソッドを呼び出すように変更される。
【００７４】
上述したように、第三の実施の形態によれば、非互換インタフェース情報１３０に基づいてＳＤＫプラットフォーム２３に対して自動的にパッチを適用することができる。したがって、ユーザによる作業負担を著しく低減することができる。なお、パッチの適用のみで十分な場合、ＳＤＫアプリ実行コード１１０の修正は行われなくてもよい。
【００７５】
なお、上記では、画像形成装置２０において利用されるプログラムが互換性の評価対象とされる例について説明した。但し、本実施の形態によって評価可能なプログラムは、画像形成装置２０において利用されるものに限定されない。他の電子機器又は汎用的なコンピュータにおいて利用されるプログラムについても、本実施の形態は有効に適用されうる。
【００７６】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００７７】
１０          互換性評価装置
１１          互換性判定制御部
１２          実行コード解析部
１３          非互換インタフェース抽出部
１４          非互換インタフェース利用判定部
１５          実行時結合可否判定部
１６          互換性レポート作成部
１７          実行コード修正制御部
１８          実行コード編集部
１９          実行コード取得部
２０          画像形成装置
２１          標準アプリ
２２          ＳＤＫアプリ
２３          ＳＤＫプラットフォーム
２４          サービス層
１００        ドライブ装置
１０１        記録媒体
１０２        補助記憶装置
１０３        メモリ装置
１０４        ＣＰＵ
１０５        インタフェース装置
１０６        表示装置
１０７        入力装置
１１０        ＳＤＫアプリ実行コード
１２０        プラットフォームソースコード
１３０        非互換インタフェース情報
１４０        プラットフォーム実行コード
１５０        互換性レポート
２１１        スキャンアプリ
２１２        プリンタアプリ
２１３        コピーアプリ
２１４        ＦＡＸアプリ
Ｂ            バス
【先行技術文献】
【特許文献】
【００７８】
【特許文献１】特開２００５−２６９６１９号公報
【特許文献２】特表２００１−５１８６５８号公報
【図１】
0005574017.tif 000002
【図２】
0005574017.tif 000003
【図３】
0005574017.tif 000004
【図４】
0005574017.tif 000005
【図５】
0005574017.tif 000006
【図６】
0005574017.tif 000007
【図７】
0005574017.tif 000008
【図８】
0005574017.tif 000009
【図９】
0005574017.tif 000010
【図１０】
0005574017.tif 000011
【図１１】
0005574017.tif 000012
【図１２】
0005574017.tif 000013
【図１３】
0005574017.tif 000014
【図１４】
0005574017.tif 000015
【図１５】
0005574017.tif 000016
【図１６】
0005574017.tif 000017
【図１７】
0005574017.tif 000018
【図１８】
0005574017.tif 000019
【図１９】
0005574017.tif 000020