JP5574017B2 - 情報処理装置、互換性評価方法、及びプログラム - Google Patents

情報処理装置、互換性評価方法、及びプログラム Download PDF

Info

Publication number
JP5574017B2
JP5574017B2 JP2013114368A JP2013114368A JP5574017B2 JP 5574017 B2 JP5574017 B2 JP 5574017B2 JP 2013114368 A JP2013114368 A JP 2013114368A JP 2013114368 A JP2013114368 A JP 2013114368A JP 5574017 B2 JP5574017 B2 JP 5574017B2
Authority
JP
Japan
Prior art keywords
program
interface
meet
specifications
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2013114368A
Other languages
English (en)
Other versions
JP2013164879A (ja
Inventor
健治 新村
勉 大石
拓 井川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP2013114368A priority Critical patent/JP5574017B2/ja
Publication of JP2013164879A publication Critical patent/JP2013164879A/ja
Application granted granted Critical
Publication of JP5574017B2 publication Critical patent/JP5574017B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Description

本発明は、情報処理装置、互換性評価方法、及びプログラムに関し、特にプラットフォームの非互換に関してアプリケーションを評価する情報処理装置、互換性評価方法、及びプログラムに関する。
従来、主に複合機と呼ばれる画像形成装置において、アプリケーションプログラム(以下、単に「アプリケーション」という。)を動作させるためのプラットフォームプログラム(以下、単に「プログラム」という。)を有し、当該プラットフォームが提供するAPI(Application Program Interface)が公開されているものがある(例えば、特許文献1)。このような画像形成装置に対しては、上記APIを利用して、画像形成装置のメーカー以外の外部のソフトウェアベンダ等によっても新たなアプリケーションの開発が可能となる。
斯かるプラットフォームのリリース期間は短縮化しており、例えば、半年に1回程度の頻度でバージョンアップが行われている。バージョンアップに伴い上記APIの追加等が行われ、旧バージョンのプラットフォーム上におけるAPIと、新バージョンのプラットフォーム上におけるAPIとの間に、APIの種類上における非互換が生じうる。
また、上記APIは、画像形成装置の機種に対して共通化されているものの、機種間におけるハードウェアリソースの相違に基づいて、APIの振る舞いを完全に一致させるのは困難な場合がある。したがって、機種間においてAPIの振る舞い上における非互換が生じうる。
以上のような非互換の発生の結果、アプリケーションの開発者は、全てのバージョン及び全ての機種について、¥アプリケーションの動作を保証することが困難な状況となっている。また、多種のプラットフォームの存在は、プラットフォームの提供者にとっても大きな負担となりつつある。
すなわち、バージョン及び機種の組み合わせに応じて多数存在するプラットフォームのそれぞれについてアプリケーションの動作を評価(テスト)するのは、アプリケーションの開発者にとって大きな負担である。
また、アプリケーションの評価の過程において予期せぬ動作が発生した場合、アプリケーションの開発者からプラットフォームの提供者に対して問い合わせが行われる。多種多様なアプリケーションが市場において提供され、多数のプラットフォームが存在する状況において、このような問い合わせの殺到は、プラットフォームの提供者にとって大きな作業負担となる。
そこで、特許文献2に記載された技術を利用して、プラットフォームの非互換に関してアプリケーションの評価を行うことが考えられる。
しかしながら、特許文献2に記載された技術では、プラットフォーム側において公開されている全てのインタフェースについて所定の定義言語による定義情報が記述される必要がある。上記のように、プラットフォームが頻繁にバージョンアップされる状況において、全てのインタフェースに関する定義情報の記述は、プラットフォームの提供者にとって非常に大きな作業負担となってしまう。
本発明は、上記の点に鑑みてなされたものであって、プラットフォームプログラムの非互換に関するアプリケーションプログラムの評価を効率化することのできる情報処理装置、互換性評価方法、及びプログラムの提供を目的とする。
そこで上記課題を解決するため、本発明は、第一のプログラムと該第一のプログラムが提供する、機器の機能を利用させるインタフェースを利用する第二のプログラムとの互換性を評価する情報処理装置であって、前記第二のプログラムから、前記第二のプログラムが利用している一又は複数の前記インタフェースを抽出する抽出手段と、前記第一のプログラムが提供するインタフェースの中で仕様を満たしていない非互換のインタフェースごとに、非互換を解消するための修正方法を示す情報を記憶した非互換インタフェース情報記憶手段を用いて、前記第二のプログラムが利用している前記一又は複数のインタフェースから前記非互換のインタフェースに該当するインタフェースを抽出する非互換インタフェース利用判定手段と、前記非互換インタフェース利用判定手段によって抽出されたインタフェースごとに、前記非互換を解消するための修正方法を提示する提示手段とを有する。
このような情報処理装置では、プラットフォームプログラムの非互換に関するアプリケーションプログラムの評価を効率化することができる。
本発明によれば、プラットフォームプログラムの非互換に関するアプリケーションプログラムの評価を効率化することができる。
本発明の実施の形態において互換性の評価対象とされるプログラムの例を示す図である。 本発明の実施の形態における互換性評価装置のハードウェア構成例を示す図である。 第一の実施の形態における互換性評価装置の機能構成例を示す図である。 非互換インタフェース情報の生成処理の処理手順を説明するためのシーケンス図である。 第一の実施の形態におけるプラットフォームソースコードの例を示す図である。 第一の実施の形態における非互換インタフェース情報の例を示す図である。 機種依存互換性に関する評価処理の処理手順を説明するためのシーケンス図である。 インタフェースリストの例を示す図である。 機種依存非互換に関する互換性レポートの例を示す図である。 バージョン依存互換性に関する評価処理の処理手順を説明するためのシーケンス図である。 バージョン依存互換性に関する互換性レポートの例を示す図である。 第二の実施の形態における互換性評価装置の機能構成例を示す図である。 第二の実施の形態におけるプラットフォームソースコードの例を示す図である。 第二の実施の形態における非互換インタフェース情報の例を示す図である。 第二の実施の形態における非互換部分の修正処理の処理手順を説明するためのシーケンス図である。 第三の実施の形態における互換性評価装置の機能構成例を示す図である。 第三の実施の形態におけるプラットフォームソースコードの例を示す図である。 第三の実施の形態における非互換インタフェース情報の例を示す図である。 第三の実施の形態における非互換部分の修正処理の処理手順を説明するためのシーケンス図である。
以下、図面に基づいて本発明の実施の形態を説明する。図1は、本発明の実施の形態において互換性の評価対象とされるプログラムの例を示す図である。本実施の形態では、同図に示される画像形成装置20におけるプログラムを互換性の評価対象とする。
画像形成装置20は、標準アプリ21、SDKアプリ22、SDKプラットフォーム23、及びサービス層24等のソフトウェアを有する。
標準アプリ21は、画像形成装置20に標準的に(出荷時に予め)実装されているアプリケーションの集合である。同図では、スキャンアプリ211、プリンタアプリ212、コピーアプリ213、及びFAXアプリ214が例示されている。スキャンアプリ211は、スキャンジョブを実行する。プリンタアプリ212はネットワークを介して印刷データを受信し、受信された印刷データに基づいて印刷ジョブを実行する。すなわち、画像形成装置20の印刷ポート宛に送信される印刷データは、プリンタアプリ212によって処理される。コピーアプリ213は、コピージョブを実行する。FAXアプリ214は、FAXの送信ジョブ又は受信ジョブを実行する。
サービス層24は、各種のハードウェアリソースの制御機能や管理情報等の管理機能等を上位アプリケーション等に対して提供する部分である。
SDKアプリ22は、画像形成装置20の出荷後において、画像形成装置20の機能拡張を図るためのプラグインとして追加的にインストールされるアプリケーションプログラムである。同図では、SDKアプリ22として、SDKアプリ22a、SDKアプリ22b、及びSDKアプリ22cが例示されている。
SDKプラットフォーム23は、SDKアプリ22の実行環境を提供するプログラム又はプログラム群である。すなわち、SDKプラットフォーム23上で動作するアプリケーションがSDKアプリ22である。各SDKアプリ22は、SDKプラットフォーム23が提供(公開)するAPI(Application Program Interface)を介して画像形成装置20の各種の機能を利用する(実行させる)ことができる。例えば、当該API(以下、「SDKAPI」という。)は、スキャン機能を利用させるためのインタフェース、印刷機能を利用させるためのインタフェース、コピー機能を利用させるためのインタフェース等を含む。
なお、SDKプラットフォーム23の実装内容は、そのバージョン又はSDKプラットフォーム23が搭載される画像形成装置20の機種に応じて異なりうる(非互換部分が存在しうる)。SDKプラットフォーム23のバージョン間を跨る互換性を「バージョン依存互換性」といい、バージョン依存互換性が無いことを「バージョン依存非互換」という。バージョン依存非互換が発生する例としては、新バージョンにおいて新たなSDKAPIが追加される場合が挙げられる。
また、SDKプラットフォーム23が搭載される機種間を跨る互換性を「機種依存互換性」といい、機種依存互換性が無いことを「機種依存非互換」という。機種依存非互換が発生する例としては、同じバージョンのSDKプラットフォーム23において、機種Aに対するSDKプラットフォーム23におけるメソッドAと、機種Bに対するSDKプラットフォーム23におけるメソッドAとの振る舞いが異なる例が挙げられる。
本実施の形態では、或るSDKプラットフォーム23上において開発されたSDKアプリ22が、他のバージョン又は他の機種のSDKプラットフォーム23上において正しく動作するか否かを評価するための互換性評価装置、互換性評価方法、及びプログラムについて説明する。
図2は、本発明の実施の形態における互換性評価装置のハードウェア構成例を示す図である。同図において互換性評価装置10は、それぞれバスBで相互に接続されているドライブ装置100と、補助記憶装置102と、メモリ装置103と、CPU104と、インタフェース装置105と、表示装置106と、入力装置107とを有する。
互換性評価装置10での処理を実現するプログラムは、CD−ROM等の記録媒体101によって提供される。プログラムを記録した記録媒体101がドライブ装置100にセットされると、プログラムが記録媒体101からドライブ装置100を介して補助記憶装置102にインストールされる。但し、プログラムのインストールは必ずしも記録媒体101より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置102は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
メモリ装置103は、プログラムの起動指示があった場合に、補助記憶装置102からプログラムを読み出して格納する。CPU104は、メモリ装置103に格納されたプログラムに従って互換性評価装置10に係る機能を実現する。インタフェース装置105は、ネットワークに接続するためのインタフェースとして用いられる。表示装置106はプログラムによるGUI(Graphical User Interface)等を表示する。入力装置107はキーボード及びマウス等で構成され、様々な操作指示を入力させるために用いられる。
図3は、第一の実施の形態における互換性評価装置の機能構成例を示す図である。同図において、互換性評価装置10は、互換性判定制御部11、実行コード解析部12、非互換インタフェース抽出部13、非互換インタフェース利用判定部14、実行時結合可否判定部15、及び互換性レポート作成部16等を有する。これら各部は、互換性評価装置10にインストールされたプログラムが、CPU104に実行させる処理によって実現される。
互換性判定制御部11は、評価対象として選択されたSDKアプリ22(以下、「評価対象アプリ」という。)と、評価対象として選択されたSDKプラットフォーム23(以下、「評価対象プラットフォーム」という。)との互換性の有無を判定するための処理を制御する。
実行コード解析部12は、SDKアプリ実行コード110を解析し、SDKアプリ実行コード110内において呼び出されている(利用されている)SDKAPIのメソッド又はイベント等の一覧(以下、「インタフェースリスト」という。)を生成する。SDKアプリ実行コード110は、評価対象アプリの実行コード(実行オブジェクトとも呼ばれる。)である。例えば、SDKアプリ22がJava(登録商標)で記述されている場合、SDKアプリ実行コード110は、Java(登録商標)バイトコードを含むJAR(Java(登録商標) Archive)又はクラスファイル等である。但し、このことは、本実施の形態による評価対象がJava(登録商標)言語で記述されているプログラムに限定されることを意味するものではない。例えば、C言語やC++言語であれば、SDKアプリ実行コード110は、オブジェクトファイルであってもよい。また、プログラミング言語を問わず、SDKアプリ実行コード110の代わりに評価対象アプリのソースコードを実行コード解析部12による解析対象としてもよい。ソースコードであっても、SDKAPIのメソッドの呼び出しが行われているか否かは解析可能だからである。なお、SDKアプリ22内においては、SDKAPIのみならず、プログラム言語において標準の関数又はクラスのメソッド等の呼び出しも行われている可能性がある。また、SDKアプリ22内において独自に定義されている関数又はクラスのメソッド等の呼び出しも行われている可能性もある。これらの関数又はメソッドとSDKAPIとの区別は、関数名又はメソッド名に基づいて行えばよい。例えば、所定の命名規則にしたがった名前を有する(Java(登録商標)であれば所定のパッケージ名に係る)クラス又はメソッドであれば、SDKAPIであると判断するといった具合である。
非互換インタフェース抽出部13は、評価対象プラットフォームのソースコードであるプラットフォームソースコード120より非互換インタフェース情報130を抽出する。非互換インタフェース情報130は、評価対象プラットフォームについて、機種依存非互換部分に該当するメソッド等の一覧情報である。当該一覧情報には、評価対象プラットフォームが属するバージョンの仕様(本来の振る舞い)に対する、評価対象プラットフォームの非互換の内容を示す情報も含まれる。例えば、当該バージョンに対する仕様としてZ折りを実行するメソッドが定義されている場合であって、評価対象プラットフォームがZ折りのためのハードウェアを有さない機種に対するSDKプラットフォーム23である場合、評価対象プラットフォームにおける当該メソッドは、「Z折りを実行する」という仕様を満たすことはできない。このようなことを示す情報が非互換インタフェース情報130に含まれる。
非互換インタフェース利用判定部14は、非互換インタフェース情報130の中から、実行コード解析部12によって生成されたインタフェースリストに含まれているメソッド等に対応する情報を抽出する。すなわち、非互換インタフェース利用判定部14は、評価対象アプリに利用されているメソッド等の中で、評価対象プラットフォームの機種依存非互換部分に該当するメソッド等の一覧情報を抽出する。
実行時結合可否判定部15は、実行コード解析部12によって生成されたインタフェースリストに含まれるメソッド等の中に、評価対象プラットフォームが備えていないメソッド等が存在するか否かを判定する。すなわち、実行結合可否判定部は、バージョン依存非互換の有無を判定する。なお、実行時結合可否判定部15は、評価対象プラットフォームが備えているメソッド等の一覧をプラットフォーム実行コード140を解析することにより取得する。但し、プラットフォームソースコード120が実行時結合可否判定部15によって解析されてもよい。
プラットフォーム実行コード140は、評価対象プラットフォームの実行コードであり、プラットフォームソースをコンパイルすることにより生成される。プラットフォーム実行コード140は、SDKプラットフォーム23のバージョン及び動作環境(機種)毎に1つ存在する。
互換性レポート作成部16は、非互換インタフェース利用判定部14によるバージョン依存非互換に関する判定結果と、実行結合可否判定部による機種依存非互換に関する判定結果とに基づいて、評価対象アプリを評価対象プラットフォーム上で動作させる際の互換性に関するレポート(評価情報)を作成する。
なお、SDKアプリ実行コード110、プラットフォームソースコード120、及びプラットフォーム実行コード140は、互換性評価装置10の補助記憶装置102に記録されていてもよいし、互換性評価装置10がネットワークを介してアクセス可能な記憶装置等に記録されていてもよい。又は、CD−ROM等の携帯可能な記録媒体に記録されていてもよい。
以下、互換性評価装置10の処理手順について説明する。図4は、非互換インタフェース情報の生成処理の処理手順を説明するためのシーケンス図である。
例えば、ユーザ(評価者又はテスト実行者)による指示入力に応じ、非互換インタフェース抽出部13は、プラットフォームソースコード120より非互換インタフェース情報130を抽出する(S101、S102)。
図5は、第一の実施の形態におけるプラットフォームソースコードの例を示す図である。本実施の形態においては、便宜上、Java(登録商標)によってSDKプラットフォーム23が記述されていることとする。
同図のプラットフォームソースコード120aは、Aクラスに関するソースコードの例である。同図には、「XXX_EVENT」イベントに関する定義122、及びsetXメソッドに関する定義124が含まれている。また、非互換部分については、非互換情報(非互換に関する情報)が記述されている。例えば、記述121は、定義122に対する非互換情報であり、このイベント(XXX_EVENT)は(当該SDKプラットフォーム23では)通知されないことを示すメッセージが記述されている。また、記述123は、記述124に対する非互換情報であり、このメソッドは(当該SDKプラットフォーム23では)サポートされていないこと、及びこのメソッドを利用しているアプリ(SDKアプリ22)は、BクラスのsetYを(このメソッドの代わりに)利用するように修正することを促すことを示すメッセージが記述されている。なお、記述121及び記述123には、当該記述が非互換情報であることを示す識別用の文字列(以下、「非互換タグ」という。)が所定の形式で付加されている。すなわち、記述121における「@not_notified」、及び記述312における「@unsupported」は、非互換タグに該当する。本実施の形態において、非互換タグは、「@」で開始される文字列である。また、非互換タグのタグ名は、非互換のタイプ(種別)又は意味を示す。例えば、「not_notified」は、対応するイベントが通知されないといった非互換を示す。「unsupported」は、対応するメソッドはサポートされていないといった非互換を示す。なお、本実施の形態において、メソッドがサポートされていないことと、メソッドが存在しないこととは明確に区別される。メソッドがサポートされていないことは、メソッドは存在するが、仕様を満たした処理は実行されないことを意味する。
なお、図5に示した非互換のタイプ(非互換タイプ)は一例に過ぎない。非互換の種類や程度に応じて適宜必要な非互換タイプを定義すればよい。
非互換インタフェース抽出部13は、プラットフォームソースコード120aより、非互換タグを検出し、当該非互換タグのタグ名、非互換タグに続いて記述されている文字列(通知メッセージ)、非互換タグが検出されたメソッド名又はイベント名等の定義要素名(以下、「インタフェース名」という。)、及び非互換タグが検出されたクラス名等を対応付けた情報を、非互換インタフェース情報130として抽出する。
続いて、非互換インタフェース抽出部13は、抽出された非互換インタフェース情報130を所定の形式に成形し、補助記憶装置102に保存する(S103)。
図6は、第一の実施の形態における非互換インタフェース情報の例を示す図である。同図に示される非互換インタフェース情報130aは、非互換部分として抽出されたメソッド等ごとに、クラス名、インタフェース名、非互換タイプ、及び通知メッセージを含む。同図では、図5のプラットフォームソースコード120aより抽出された非互換インタフェース情報130の例が示されている。すなわち、1行目は、記述121に基づいて抽出されたものであり、2行目は、記述123に基づいて抽出されたものである。図5と図6との対比より明らかなように、クラス名には非互換部分(非互換インタフェース)が存在した(非互換タグが検出された)クラスのクラス名が記録される。インタフェース名には、非互換インタフェースであるメソッド又はイベント等の名前が記録される。非互換タイプには、非互換タグのタグ名が記録される。通知メッセージには、非互換タグに続いて記述されている文字列が記録される。
なお、上記した非互換インタフェース情報130の抽出処理は、SDKプラットフォーム23の開発者等によって、プラットフォームソースコード120内に非互換情報が記述されることが前提とされる。ここで、非互換情報の記述場所は、必ずしもプラットフォームソースコード120内でなくてもよい。プラットフォームソースコード120と関連付けて管理されうるファイル内に記述されていてもよい。当該関連付けは、例えば、非互換情報が独立して記述されたファイルのファイル名に、非互換インタフェースを含むクラスのクラス名を含めること等によって行われてもよいし、当該ファイルが非互換インタフェースを含むクラスのソースファイルと一体化(書庫化)されることによって行われてもよい。非互換情報が独立して記述されたファイルの内容を、非互換インタフェース情報130と同様としてもよい。この場合、非互換インタフェース情報130の抽出処理は不要となる。
続いて、機種依存互換性に関する評価処理について説明する。図7は、機種依存互換性に関する評価処理の処理手順を説明するためのシーケンス図である。
例えば、ユーザによって評価対象アプリが指定され、機種依存互換性の評価要求が入力されると、互換性判定制御部11は、評価対象アプリのSDKアプリ実行コード110の解析を実行コード解析部12に要求する(S201)。実行コード解析部12は、SDKアプリ実行コード110を解析し、SDKアプリ実行コード110が利用しているインタフェース(メソッド、イベント等)を抽出する。実行コード解析部12は、抽出されたインタフェースの一覧をインタフェースリストとして互換性判定制御部11に返却する(S202)。
図8は、インタフェースリストの例を示す図である。同図において、インタフェースリストには、抽出されたインタフェースごとに、クラス名及びインタフェース名が含まれている。同図の例では、SDKアプリ実行コード110は、AクラスのsetXメソッド、CクラスのsetYメソッド、及びCクラスのsetZメソッド等を利用していることが分かる。なお、インタフェースリストに含まれる情報は、プログラム言語等に応じて各インタフェース(メソッド、イベント等)を識別可能な情報であればよい。例えば、オブジェクト指向プログラミング言語で無い場合、クラス名は不要である。一方、ネームスペース等を定義することにより、同一クラス名の存在を許容している場合、ネームスペース名もインタフェースリストに含めるようにすればよい。
続いて、互換性判定制御部11は、インタフェースリストを非互換インタフェース利用判定部14に入力する(S203)。非互換インタフェース利用判定部14は、図4の処理によって予め生成され、補助記憶装置102の所定の位置に保存されている非互換インタフェース情報130を取得する(S204、S205)。続いて、非互換インタフェース利用判定部14は、非互換インタフェース情報130から、入力されたインタフェースリストに含まれているインタフェースに係る情報を抽出し、抽出された情報(非互換インタフェース利用情報)を互換性判定制御部11に返却する(S206)。例えば、図6の非互換インタフェース情報130と図8のインタフェースリストとが処理対象とされる場合、非互換インタフェース情報130の中のAクラスのsetXメソッドに係る情報(行)が抽出される。なお、該当する情報が抽出されなかった場合、非互換インタフェース利用判定部14は、該当する情報が無いことを示す応答を互換性判定制御部11に返却する。
非互換インタフェース利用判定部14より非互換インタフェース利用情報が返却された場合、互換性判定制御部11は、非互換インタフェース利用情報を互換性レポート作成部16に入力し、互換性レポート150の作成を要求する(S207)。互換性レポート作成部16は、非互換インタフェース利用情報に基づいて互換性レポート150を作成し、作成された互換性レポート150を補助記憶装置102に保存する。
図9は、機種依存非互換に関する互換性レポートの例を示す図である。同図に示されるように、互換性レポート150aには、非互換インタフェース利用情報に含まれているインタフェースについて、非互換タイプ、インタフェース名、及び通知メッセージが記録されている。ユーザは、互換性レポート150を表示装置106に表示させたり、非図示のプリンタに印刷させたりすることにより、評価対象アプリを評価対象プラットフォーム上で動作させた場合における機種依存非互換に関する問題点を容易に把握することができる。また、当該問題点を解決するための適切な対処を行うこともできる。例えば、図9の例では、評価対象アプリのソースコードにおいて、クラスAのsetYメソッドを呼び出している箇所をクラスBのsetYメソッドに置き換えることができる。その結果、評価対象プラットフォーム上における評価対象アプリの動作をより適切なものとすることができる。
続いて、バージョン依存互換性に関する評価処理について説明する。図10は、バージョン依存互換性に関する評価処理の処理手順を説明するためのシーケンス図である。
例えば、ユーザによって評価対象アプリ及び評価対象プラットフォームが指定され、バージョン依存互換性の評価要求が入力されると、互換性判定制御部11は、評価対象アプリのSDKアプリ実行コード110の解析を実行コード解析部12に要求する(S301)。実行コード解析部12による処理内容は、図7(機種依存互換性に関する評価処理)の場合と同様である。したがって、ステップS302では、図8に示されるようなインタフェースリストが互換性判定制御部11に返却される。
続いて、互換性判定制御部11は、インタフェースリストを実行時結合可否判定部15に入力する(S303)。実行時結合可否判定部15は、予め補助記憶装置102の所定の位置に保存されているプラットフォーム実行コード140を取得する(S304、S305)。続いて、実行時結合可否判定部15は、プラットフォーム実行コード140を解析し、入力されたインタフェースリストに含まれているインタフェースの中から、プラットフォーム実行コード140内に存在しないインタフェース(プラットフォーム実行コード140においてSDKアプリ22の実行時に結合不可能(リンク不可能)なインタフェース)を抽出(リストアップ)する。実行時結合可否判定部15は、抽出されたインタフェースの一覧情報(例えば、インタフェース名の一覧)を互換性判定制御部11に返却する(S306)。なお、該当するインタフェースが抽出されなかった場合、実行時結合可否判定部15は、該当するインタフェースは無いことを示す応答を互換性判定制御部11に返却する。
実行時結合可否判定部15よりインタフェースの一覧情報が返却された場合、互換性判定制御部11は、当該インタフェースの一覧情報を互換性レポート作成部16に入力し、互換性レポート150の作成を要求する(S307)。互換性レポート作成部16は、当該インタフェースの一覧情報に基づいて互換性レポート150を作成し、作成された互換性レポート150を補助記憶装置102に保存する。
図11は、バージョン依存互換性に関する互換性レポートの例を示す図である。同図の互換性レポート150bでは、クラスCのsetZメソッドが評価対象プラットフォームには存在しないことが示されている。ユーザは、互換性レポート150bを表示装置106に表示させたり、非図示のプリンタに印刷させたりすることにより、評価対象アプリを評価対象プラットフォーム上で動作させた場合におけるバージョン依存非互換に関する問題点を容易に把握することができる。
なお、上記では、機種依存互換性に関する評価とバージョン依存互換性に関する評価とが別々に実行される例を示したが、双方の評価が一度に実行されるようにしてもよい。そうする場合、図7のステップS202とS203、又はS206とS207の間に図10のステップS303〜S306が実行されるようにすればよい。また、互換性レポート作成部16は、非互換インタフェース利用判定部14によって抽出された非互換インタフェース利用情報と、実行時結合可否判定部15によって抽出されたインタフェースの一覧情報とに基づいて互換性レポート150を生成するようにすればよい。その結果として生成される互換性レポート150は、図9と図11とをマージしたものとなる。
上述したように、第一の実施の形態によれば、SDKプラットフォーム23の非互換に関するSDKアプリ22の評価を効率的に行うことができる。すなわち、本実施の形態では、非互換インタフェース情報130はプラットフォームソースコード120より自動的に抽出され、また、存在しないインタフェースの一覧はプラットフォーム実行コード130に基づいて自動的に抽出されるため、SDKプラットフォーム23の全てのインタフェースに関して定義情報を記述する必要はない。なお、非互換インタフェース情報130をユーザが予め作成する場合であっても、対象とされるインタフェースは非互換インタフェースに限定される。したがって、全てのインタフェースについて定義情報を作成する場合に比べてユーザに対する作業負担を著しく軽減することができる。
次に、第二の実施の形態について説明する。図12は、第二の実施の形態における互換性評価装置の機能構成例を示す図である。図12中、図3と同一部分には同一符号を付し、その説明は省略する。
第二の実施の形態では、実行コード修正制御部17及び実行コード編集部18が新たに追加されている。実行コード修正制御部17は、SDKアプリ実行コード110が非互換インタフェースを利用している場合に、非互換を解消するための修正処理を制御する。実行コード編集部18は、SDKアプリ実行コード110を編集し、非互換を解消する。
図13は、第二の実施の形態におけるプラットフォームソースコードの例を示す図である。図13中、図5と同一部分には同一符号を付し、その説明は省略する。図13に示されるプラットフォームソースコード120bにおいて、記述123b内の非互換タグ(@unsupported)にはrule属性が付加されている。すなわち、ルール属性の値「around B#setY(Object obj)」は、当該非互換を解消するための修正ルール(修正方法)を示す。aroundコマンドは、置換を意味し、aroundコマンドの引数は置換先のインタフェース情報を示す。したがって、記述123bのrule属性では、AクラスsetXメソッドは、BクラスのsetYメソッドに置換すべきことが示されている。
プラットフォームソースコード120bに対して図4において説明した処理を実行した場合、第二の実施の形態の非互換インタフェース抽出部13は、図14に示されるような非互換インタフェース情報130bを生成する。
図14は、第二の実施の形態における非互換インタフェース情報の例を示す図である。同図に示される非互換インタフェース情報130bは、修正ルールを含みうる点が第一の実施の形態の非互換インタフェース情報130aと異なる。修正ルールには、修正ルール属性の値が記録される。同図の例では、図13のプラットフォームソースコード120bに基づいて、AクラスのsetXメソッドについて修正ルールが記録されている。
以下、第二の実施の形態の互換性評価装置10による処理手順について説明する。図15は、第二の実施の形態における非互換部分の修正処理の処理手順を説明するためのシーケンス図である。
同図の処理は、非互換インタフェース情報130bが生成されていることが前提となる。
例えば、ユーザによって、修正対象のSDKアプリ実行コード110及び非互換インタフェース情報130bが指定され、非互換部分の修正指示が入力されると、実行コード修正制御部17は、指定された非互換インタフェース情報130bより修正ルールを取得する(S401、S402)。続いて、実行コード修正制御部17は、修正ルールに含まれているaroundコマンドの実行を実行コード編集部18に要求する(S403)。実行コード編集部18は、指定されたSDKアプリ実行コード110に対し、aroundコマンドに応じた編集を行う(S404)。例えば、非互換インタフェース情報130bの修正ルールに基づく場合、クラスAにおいてsetXメソッドを呼び出していた箇所が、クラスBのsetYメソッドを呼び出すように変更される。その結果、修正済みSDKアプリ実行コード160が生成される。
上述したように、第二の実施の形態によれば、非互換インタフェース情報130に基づいてSDKアプリ実行コード110を自動的に編集し、非互換部分を解消することができる。したがって、ユーザによる作業負担を著しく低減することができる。なお、第二の実施の形態において、SDKアプリ実行コード110の代わりに、当該SDKアプリ22のソースコードが利用されてもよい。この場合、ソースコードに対して自動的な編集が行われる。したがって、ユーザは編集されたソースコードをコンパイルして修正済みSDKアプリ実行コード160を生成すればよい。
次に、第三の実施の形態について説明する。図16は、第三の実施の形態における互換性評価装置の機能構成例を示す図である。図16中、図12と同一部分には同一符号を付し、その説明は省略する。
第三の実施の形態では、実行コード取得部19が新たに追加されている。実行コード取得部19は、互換性評価装置10とネットワークを介して接続される修正プログラム蓄積サーバ30より、非互換を解消するためのパッチを取得する。修正プログラム蓄積サーバ30は、各種の非互換を解消するためのパッチが蓄積されているコンピュータである。なお、本実施の形態におけるパッチとは、プラットフォーム実行コード140に対する修正部分に対応するプログラム又はプログラムモジュール(例えば、一つのクラスファイル)をいう。
図17は、第三の実施の形態におけるプラットフォームソースコードの例を示す図である。図17中、図13と同一部分には同一符号を付し、その説明は省略する。図17に示されるプラットフォームソースコード120cにおいて、記述123c内のrule属性の値「download Patch001.class, around Patch001#setX(Object obj)」が第二の実施の形態と異なる。すなわち、当該値には、二つのコマンドが含まれている。一つ目は、downloadコマンドである。downloadコマンドは、引数にその識別名(ファイル名)が指定されたプログラム(Patch001.class)をパッチとして修正プログラム蓄積サーバ30よりダウンロードすることを示す。なお、downloadコマンドの引数に修正プログラム蓄積サーバ30の識別情報(例えば、IPアドレス等)を指定可能としてもよい。本実施の形態においては、便宜上、修正プログラム蓄積サーバ30の識別情報は、補助記憶装置102内に予め記録されていることとする。二つ目はaroundコマンドである。aroundコマンドについては、第二の実施の形態において説明した通りである。但し、第三の実施の形態では、置換先のメソッドがPatch001クラスのsetXメソッドとされている。Patch001クラスは、downloadコマンドによってダウンロードされるパッチ(Patch001.class)に実装されているメソッドである。
プラットフォームソースコード120cに対して図4において説明した処理を実行した場合、第三の実施の形態の非互換インタフェース抽出部13は、図18に示されるような非互換インタフェース情報130cを生成する。
図18は、第三の実施の形態における非互換インタフェース情報の例を示す図である。同図に示される非互換インタフェース情報130cでは、クラスAのsetXメソッドの修正ルールに、プラットフォームソースコード120cの記述123cのrule属性の値が記録されている。
以下、第三の実施の形態の互換性評価装置10による処理手順について説明する。図19は、第三の実施の形態における非互換部分の修正処理の処理手順を説明するためのシーケンス図である。同図の処理は、非互換インタフェース情報130cが生成されていることが前提となる。
ステップS501、S502は、図15のステップS401、S402と同じである。但し、取得される修正ルールの内容は異なる。続いて、実行コード修正制御部17は、修正ルールに含まれているdownloadコマンドの実行を実行コード取得部19に要求する(S503)。実行コード取得部19は、downloadコマンドの引数に指定されているパッチ(Patch001.class)のダウンロードを修正プログラム蓄積サーバに要求し(S504)、当該パッチを取得する(S505)。続いて、実行コード取得部19は、取得されたパッチをプラットフォーム実行コード140に適用する(S506)。具体的には、取得されたパッチを補助記憶装置102内の所定の記憶領域(フォルダ)に保存する。続いて、実行コード取得部19は、処理の完了を実行コード修正制御部17に通知する(S507)。
続くステップS508、S509の処理手順は、図15のステップS403、S404と同じである。したがって、実行コード編集部18によって、SDKアプリ実行コード110が編集される。但し、編集内容は第二の実施の形態と異なる。すなわち、第三の実施の形態では、クラスAにおいてsetXメソッドを呼び出していた箇所が、Patch001クラスのsetXメソッド、すなわち、プラットフォーム実行コード140に適用されたパッチに実装されているメソッドを呼び出すように変更される。
上述したように、第三の実施の形態によれば、非互換インタフェース情報130に基づいてSDKプラットフォーム23に対して自動的にパッチを適用することができる。したがって、ユーザによる作業負担を著しく低減することができる。なお、パッチの適用のみで十分な場合、SDKアプリ実行コード110の修正は行われなくてもよい。
なお、上記では、画像形成装置20において利用されるプログラムが互換性の評価対象とされる例について説明した。但し、本実施の形態によって評価可能なプログラムは、画像形成装置20において利用されるものに限定されない。他の電子機器又は汎用的なコンピュータにおいて利用されるプログラムについても、本実施の形態は有効に適用されうる。
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
10 互換性評価装置
11 互換性判定制御部
12 実行コード解析部
13 非互換インタフェース抽出部
14 非互換インタフェース利用判定部
15 実行時結合可否判定部
16 互換性レポート作成部
17 実行コード修正制御部
18 実行コード編集部
19 実行コード取得部
20 画像形成装置
21 標準アプリ
22 SDKアプリ
23 SDKプラットフォーム
24 サービス層
100 ドライブ装置
101 記録媒体
102 補助記憶装置
103 メモリ装置
104 CPU
105 インタフェース装置
106 表示装置
107 入力装置
110 SDKアプリ実行コード
120 プラットフォームソースコード
130 非互換インタフェース情報
140 プラットフォーム実行コード
150 互換性レポート
211 スキャンアプリ
212 プリンタアプリ
213 コピーアプリ
214 FAXアプリ
B バス
特開2005−269619号公報 特表2001−518658号公報

Claims (12)

  1. 第一のプログラムと該第一のプログラムが提供する、機器の機能を利用させるインタフェースを利用する第二のプログラムとの互換性を評価する情報処理装置であって、
    前記第二のプログラムから、前記第二のプログラムが利用している一又は複数の前記インタフェースを抽出する第一の抽出手段と、
    前記第一のプログラムが提供するインタフェースの中で、特定の機器においては前記第一のプログラムに対する仕様を満たしていないインタフェースごとに、前記仕様を満たしていないことへの対処方法を示す情報を記憶したンタフェース情報記憶手段を用いて、前記第二のプログラムが利用している前記一又は複数のインタフェースから前記仕様を満たしていないインタフェースを抽出する第二の抽出手段と、
    前記第二の抽出手段によって抽出されたインタフェースごとに、前記仕様を満たしていないことへの対処方法を提示する提示手段とを有する情報処理装置。
  2. 前記仕様を満たしていないことへの対処方法を示す情報を前記第一のプログラムのソースコードより抽出する第三の抽出手段を有する請求項1記載の情報処理装置。
  3. 記インタフェース情報記憶手段は、少なくとも一部の前記仕様を満たしていないインタフェースについて、前記仕様を満たしていないことへの対処方法として置換先のインタフェース情報を記憶し、
    前記第二のプログラムにおける前記仕様を満たしていないインタフェースの利用箇所を、前記置換先のインタフェース情報に基づいて修正する編集手段を有する請求項1又は2記載の情報処理装置。
  4. 記インタフェース情報記憶手段は、少なくとも一部の前記仕様を満たしていないインタフェースについて、前記仕様を満たしていないことへの対処方法として取得すべきプログラムの識別名を記憶し、
    前記プログラムをネットワークを介して取得し、前記第一のプログラムに対して適用するプログラム取得手段を有する請求項1又は2項記載の情報処理装置。
  5. コンピュータが、第一のプログラムと該第一のプログラムが提供する、機器の機能を利用させるインタフェースを利用する第二のプログラムとの互換性を評価する互換性評価方法であって、
    前記第二のプログラムから、前記第二のプログラムが利用している一又は複数の前記インタフェースを抽出する第一の抽出手順と、
    前記第一のプログラムが提供するインタフェースの中で、特定の機器においては前記第一のプログラムに対する仕様を満たしていないインタフェースごとに、前記仕様を満たしていないことへの対処方法を示す情報を記憶したンタフェース情報記憶手段を用いて、前記第二のプログラムが利用している前記一又は複数のインタフェースから前記仕様を満たしていないインタフェースを抽出する第二の抽出手順と、
    前記第二の抽出手順において抽出されたインタフェースごとに、前記仕様を満たしていないことへの対処方法を提示する提示手順とを有する互換性評価方法。
  6. 前記仕様を満たしていないことへの対処方法を示す情報を前記第一のプログラムのソースコードより抽出する第三の抽出手順を前記コンピュータが実行する請求項5記載の互換性評価方法。
  7. 記インタフェース情報記憶手段は、少なくとも一部の前記仕様を満たしていないインタフェースについて、前記仕様を満たしていないことへの対処方法として置換先のインタフェース情報を記憶し、
    前記第二のプログラムにおける前記仕様を満たしていないインタフェースの利用箇所を、前記置換先のインタフェース情報に基づいて修正する編集手順を前記コンピュータが実行する請求項5又は6記載の互換性評価方法。
  8. 記インタフェース情報記憶手段は、少なくとも一部の前記仕様を満たしていないインタフェースについて、前記仕様を満たしていないことへの対処方法として取得すべきプログラムの識別名を記憶し、
    前記プログラムをネットワークを介して取得し、前記第一のプログラムに対して適用するプログラム取得手順を有する請求項5又は6記載の互換性評価方法。
  9. コンピュータに、第一のプログラムと該第一のプログラムが提供する、機器の機能を利用させるインタフェースを利用する第二のプログラムとの互換性を評価させるプログラムであって、
    前記第二のプログラムから、前記第二のプログラムが利用している一又は複数の前記インタフェースを抽出する第一の抽出手順と、
    前記第一のプログラムが提供するインタフェースの中で、特定の機器においては前記第一のプログラムに対する仕様を満たしていないインタフェースごとに、前記仕様を満たしていないことへの対処方法を示す情報を記憶したンタフェース情報記憶手段を用いて、前記第二のプログラムが利用している前記一又は複数のインタフェースから前記仕様を満たしていないインタフェースを抽出する第二の抽出手順と、
    前記第二の抽出手順において抽出されたインタフェースごとに、前記仕様を満たしていないことへの対処方法を提示する提示手順とを実行させるためのプログラム。
  10. 前記仕様を満たしていないことへの対処方法を示す情報を前記第一のプログラムのソースコードより抽出する第三の抽出手順を前記コンピュータに実行させる請求項9記載のプログラム。
  11. 記インタフェース情報記憶手段は、少なくとも一部の前記仕様を満たしていないインタフェースについて、前記仕様を満たしていないことへの対処方法として置換先のインタフェース情報を記憶し、
    前記第二のプログラムにおける前記仕様を満たしていないインタフェースの利用箇所を、前記置換先のインタフェース情報に基づいて修正する編集手順を前記コンピュータに実行させる請求項9又は10記載のプログラム。
  12. 記インタフェース情報記憶手段は、少なくとも一部の前記仕様を満たしていないインタフェースについて、前記仕様を満たしていないことへの対処方法として取得すべきプログラムの識別名を記憶し、
    前記プログラムをネットワークを介して取得し、前記第一のプログラムに対して適用するプログラム取得手順を有する請求項9又は10記載のプログラム。
JP2013114368A 2013-05-30 2013-05-30 情報処理装置、互換性評価方法、及びプログラム Expired - Fee Related JP5574017B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013114368A JP5574017B2 (ja) 2013-05-30 2013-05-30 情報処理装置、互換性評価方法、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013114368A JP5574017B2 (ja) 2013-05-30 2013-05-30 情報処理装置、互換性評価方法、及びプログラム

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2009150817A Division JP5282677B2 (ja) 2009-06-25 2009-06-25 互換性評価装置、互換性評価方法、及びプログラム

Publications (2)

Publication Number Publication Date
JP2013164879A JP2013164879A (ja) 2013-08-22
JP5574017B2 true JP5574017B2 (ja) 2014-08-20

Family

ID=49176142

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013114368A Expired - Fee Related JP5574017B2 (ja) 2013-05-30 2013-05-30 情報処理装置、互換性評価方法、及びプログラム

Country Status (1)

Country Link
JP (1) JP5574017B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6987541B2 (ja) * 2017-06-16 2022-01-05 株式会社東芝 画像形成装置及び画像形成装置の制御方法
EP4310670A4 (en) 2021-03-16 2024-05-01 Fujitsu Limited INFORMATION PROCESSING PROGRAM, INFORMATION PROCESSING METHOD AND INFORMATION PROCESSING DEVICE
WO2022254504A1 (ja) * 2021-05-31 2022-12-08 富士通株式会社 情報処理プログラム、情報処理方法および情報処理装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0511983A (ja) * 1991-07-04 1993-01-22 Nec Software Ltd 他言語プログラム間インタフエースの整合性検査と自動修復方式
US6425126B1 (en) * 1999-05-19 2002-07-23 International Business Machines Corporation Apparatus and method for synchronizing software between computers
JP2008171318A (ja) * 2007-01-15 2008-07-24 Matsushita Electric Ind Co Ltd ソフトウェア開発ツール
JP2008293486A (ja) * 2007-04-25 2008-12-04 Hitachi Ltd ソースコード解析機器、解析プログラムおよび解析方法

Also Published As

Publication number Publication date
JP2013164879A (ja) 2013-08-22

Similar Documents

Publication Publication Date Title
JP5282677B2 (ja) 互換性評価装置、互換性評価方法、及びプログラム
US8549514B2 (en) Distributing customized software products
US8572566B2 (en) Systems and methods for analyzing changes in application code from a previous instance of the application code
US8898627B2 (en) Systems and methods for applying rules to transform objects of an application
US8671222B2 (en) Systems and methods for dynamically deploying an application transformation tool over a network
CN103077024B (zh) 一种支持SaaS应用流程按需定制与运行的装置及方法
US20130067459A1 (en) Order-Independent Deployment Collections with Dependency Package Identifiers
US9754242B2 (en) Deployment mechanism for non-versioning business process artifacts
US8219854B2 (en) Validating configuration of distributed applications
US20130111277A1 (en) System and Method of Error Handling in a Platform as a Service Environment
US9189223B2 (en) Connecting method and apparatus for connecting a component included in an application with an external service
JP2015046075A (ja) 情報処理装置、その制御方法、及びコンピュータプログラム
US20090177910A1 (en) Method of recovering from software failures using replanning
CN116301951B (zh) 一种基于kubernetes的微服务应用安装升级方法及装置
JP5574017B2 (ja) 情報処理装置、互換性評価方法、及びプログラム
JP2007065837A (ja) 状態制御方法、状態制御プログラムおよび状態制御プログラムを記録した記録媒体
KR102337962B1 (ko) 마이크로서비스 아키텍처 애플리케이션 실행 시스템과 방법 및 이를 위한 컴퓨터 프로그램
US8392469B2 (en) Model based distributed application management
JP2009037589A (ja) プログラム判定装置、プログラム判定方法及びプログラム
JP5013999B2 (ja) 画像形成装置、プログラム制御方法、及び制御プログラム
CN111158777A (zh) 组件调用方法、装置及计算机可读存储介质
JP4976329B2 (ja) 追加プログラムを実行可能な装置、障害解析支援方法、及び障害解析支援プログラム
JP2014032687A (ja) 統合管理装置、制御方法及びプログラム
JP5263358B2 (ja) 情報処理装置、プログラム制御方法、及び制御プログラム
JP5798973B2 (ja) 処理状態が遷移する複数のプログラムを実行する装置及び方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130530

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140120

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140204

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140312

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140603

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140616

R151 Written notification of patent or utility model registration

Ref document number: 5574017

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

LAPS Cancellation because of no payment of annual fees