(57)【要約】      （修正有）【課題】プログラム間の互換性を判定する。【解決手段】本情報処理装置は、旧版の第１プログラムのコードに基づき、旧版の第１プログラムの構成及びインタフェースの少なくともいずれかについての情報を含む第１の情報を生成し、新版の第１プログラムのコードに基づき、新版の第１プログラムの構成及びインタフェースの少なくともいずれかについての情報を含む第２の情報を生成する第１生成部と、第１生成部により生成された第１の情報と第２の情報とに差分が有るか否かに基づき、旧版の第１プログラムと新版の第１プログラムとの互換性についての情報を生成する第２生成部とを有する。【選択図】図２
2018005857.tif 000002
【特許請求の範囲】
【請求項１】
旧版の第１プログラムのコードに基づき、前記旧版の前記第１プログラムの構成及びインタフェースの少なくともいずれかについての情報を含む第１の情報を生成し、新版の前記第１プログラムのコードに基づき、前記新版の前記第１プログラムの構成及びインタフェースの少なくともいずれかについての情報を含む第２の情報を生成する第１生成部と、
前記第１生成部により生成された前記第１の情報と前記第２の情報とに差分が有るか否かに基づき、前記旧版の前記第１プログラムと前記新版の前記第１プログラムとの互換性についての情報を生成する第２生成部と、
を有する情報処理装置。
【請求項２】
前記旧版の前記第１プログラムのコードは、前記第１の情報を生成するためのコードを含み、前記新版の前記第１プログラムのコードは、前記第２の情報を生成するためのコードを含み、
前記第１生成部は、
前記旧版の前記第１プログラムのコードをコンパイルすることで前記第１の情報を生成し、前記新版の前記第１プログラムのコードをコンパイルすることで前記第２の情報を生成する、
請求項１記載の情報処理装置。
【請求項３】
前記第１の情報は、前記旧版の前記第１プログラムの構造体の数、当該構造体の合計サイズ、当該構造体の各メンバのサイズおよびメンバの数についての情報を含み、前記第２の情報は、前記新版の前記第１プログラムの構造体の数、当該構造体の合計サイズ、当該構造体の各メンバのサイズおよびメンバの数についての情報を含む、
請求項１又は２記載の情報処理装置。
【請求項４】
前記第１の情報は、前記旧版の前記第１プログラムのインタフェースの数、当該インタフェースの合計サイズ、当該インタフェースの各パラメタのサイズおよびパラメタの数についての情報を含み、前記第２の情報は、前記新版の前記第１プログラムのインタフェースの数、当該インタフェースの合計サイズ、当該インタフェースの各パラメタのサイズおよびパラメタの数についての情報を含む、
請求項１又は２記載の情報処理装置。
【請求項５】
前記第１生成部は、
前記新版の前記第１プログラムのコードに基づき、前記新版の前記第１プログラムのインタフェースについての情報を含む前記第２の情報を生成し、
前記新版の第２プログラムのコードに基づき、前記新版の前記第２プログラムのインタフェースについての情報を含む第３の情報を生成し、
前記情報処理装置は、
前記第２の情報と前記第３の情報とに差分が有るか否かに基づき、前記旧版から前記新版への更新の可否を表す情報を生成する第３生成部
をさらに有する請求項１記載の情報処理装置。
【請求項６】
前記第２の情報は、前記新版の前記第１プログラムのインタフェースの数、当該インタフェースの合計サイズ、当該インタフェースの各パラメタのサイズおよびパラメタの数についての情報を含み、前記第３の情報は、前記新版の前記第２プログラムのインタフェースの数、当該インタフェースの合計サイズ、当該インタフェースの各パラメタのサイズおよびパラメタの数についての情報を含む、
請求項５記載の情報処理装置。
【請求項７】
コンピュータが、
旧版の第１プログラムのコードに基づき、前記旧版の前記第１プログラムの構成及びインタフェースの少なくともいずれかについての情報を含む第１の情報を生成し、
新版の前記第１プログラムのコードに基づき、前記新版の前記第１プログラムの構成及びインタフェースの少なくともいずれかについての情報を含む第２の情報を生成し、
生成された前記第１の情報と前記第２の情報とに差分が有るか否かに基づき、前記旧版の前記第１プログラムと前記新版の前記第１プログラムとの互換性についての情報を生成する、
処理を実行する情報処理方法。
【請求項８】
コンピュータに、
旧版の第１プログラムのコードに基づき、前記旧版の前記第１プログラムの構成及びインタフェースの少なくともいずれかについての情報を含む第１の情報を生成し、
新版の前記第１プログラムのコードに基づき、前記新版の前記第１プログラムの構成及びインタフェースの少なくともいずれかについての情報を含む第２の情報を生成し、
生成された前記第１の情報と前記第２の情報とに差分が有るか否かに基づき、前記旧版の前記第１プログラムと前記新版の前記第１プログラムとの互換性についての情報を生成する、
処理を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムの管理技術に関する。
【背景技術】
【０００２】
サーバに搭載されるファームウエアの機能の追加又は修正の際には、オンラインアップデートが実行されることがある。オンラインアップデートとは、インターネット等のネットワークを介して取得したデータに基づき、ファームウエア等のプログラムをサーバを稼働した状態で更新することである。
【０００３】
但し、旧版のファームウエアと新版のファームウエアに互換性が無い場合、新版のファームウエアの実行時にサーバがハングアップすることがある。また、更新されたファームウエアと他のファームウエアとの間でのファームウエア間通信に異常が発生することがある。したがって、更新時に問題が発生する場合には更新をすることができないが、旧版のファームウエアと新版のファームウエアとの互換性を判定する技術は文献には開示されていない。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−１４５９１０号公報
【特許文献２】特開２０１２−１４６３２９号公報
【特許文献３】特開２０１２−１９０１９９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の目的は、１つの側面では、プログラム間の互換性を判定するための技術を提供することである。
【課題を解決するための手段】
【０００６】
本発明に係る情報処理装置は、旧版の第１プログラムのコードに基づき、旧版の第１プログラムの構成及びインタフェースの少なくともいずれかについての情報を含む第１の情報を生成し、新版の第１プログラムのコードに基づき、新版の第１プログラムの構成及びインタフェースの少なくともいずれかについての情報を含む第２の情報を生成する第１生成部と、第１生成部により生成された第１の情報と第２の情報とに差分が有るか否かに基づき、旧版の第１プログラムと新版の第１プログラムとの互換性についての情報を生成する第２生成部とを有する。
【発明の効果】
【０００７】
１つの側面では、プログラム間の互換性を判定できるようになる。
【図面の簡単な説明】
【０００８】
【図１】図１は、本実施の形態のシステム概要を示す図である。
【図２】図２は、情報処理装置の機能ブロック図である。
【図３】図３は、統合ファームウエアの生成について説明するための図である。
【図４】図４は、統合ファームウエアの一例を示す図である。
【図５】図５は、コンパイル部が実行する処理の処理フローを示す図である。
【図６Ａ】図６Ａは、第１の実施の形態におけるファームウエアのコードの一例を示す図である。
【図６Ｂ】図６Ｂは、第１の実施の形態におけるファームウエアのコードの一例を示す図である。
【図６Ｃ】図６Ｃは、第１の実施の形態におけるファームウエアのコードの一例を示す図である。
【図６Ｄ】図６Ｄは、第１の実施の形態におけるファームウエアのコードの一例を示す図である。
【図７Ａ】図７Ａは、第１の実施の形態におけるファームウエアの構成についての管理データの一例を示す図である。
【図７Ｂ】図７Ｂは、第１の実施の形態におけるファームウエアの構成についての管理データの一例を示す図である。
【図７Ｃ】図７Ｃは、第１の実施の形態におけるファームウエアのインタフェースについての管理データの一例を示す図である。
【図７Ｄ】図７Ｄは、第１の実施の形態におけるファームウエアのインタフェースについての管理データの一例を示す図である。
【図８】図８は、第１の実施の形態における第１管理部が実行する処理の処理フローを示す図である。
【図９】図９は、互換性データの一例を示す図である。
【図１０】図１０は、第１の実施の形態における第１管理部が実行する処理の処理フローを示す図である。
【図１１】図１１は、第１の実施の形態における第２管理部が実行する処理の処理フローを示す図である。
【図１２】図１２は、互換性データの一例を示す図である。
【図１３】図１３は、第１の実施の形態における第２管理部が実行する処理の処理フローを示す図である。
【図１４】図１４は、第３管理部が実行する処理の処理フローを示す図である。
【図１５】図１５は、互換性データの一例を示す図である。
【図１６Ａ】図１６Ａは、第３管理部が実行する処理の処理フローを示す図である。
【図１６Ｂ】図１６Ｂは、統合部が実行する処理の処理フローを示す図である。
【図１７Ａ】図１７Ａは、第２の実施の形態におけるファームウエアの構成情報の一例を示す図である。
【図１７Ｂ】図１７Ｂは、第２の実施の形態におけるファームウエアの構成情報の一例を示す図である。
【図１７Ｃ】図１７Ｃは、第２の実施の形態におけるファームウエアの構成情報の一例を示す図である。
【図１７Ｄ】図１７Ｄは、第２の実施の形態におけるファームウエアの構成情報の一例を示す図である。
【図１８Ａ】図１８Ａは、第２の実施の形態における管理データの一例を示す図である。
【図１８Ｂ】図１８Ｂは、第２の実施の形態における管理データの一例を示す図である。
【図１９】図１９は、第２の実施の形態における第１管理部が実行する処理の処理フローを示す図である。
【図２０】図２０は、第２の実施の形態における第１管理部が実行する処理の処理フローを示す図である。
【図２１Ａ】図２１Ａは、構成情報の差異の検出についての具体例を示す図である。
【図２１Ｂ】図２１Ｂは、構成情報の差異の検出についての具体例を示す図である。
【図２１Ｃ】図２１Ｃは、構成情報の差異の検出についての具体例を示す図である。
【図２２Ａ】図２２Ａは、構成情報の差異の検出についての具体例を示す図である。
【図２２Ｂ】図２２Ｂは、構成情報の差異の検出についての具体例を示す図である。
【図２２Ｃ】図２２Ｃは、構成情報の差異の検出についての具体例を示す図である。
【図２３Ａ】図２３Ａは、構成情報の差異の検出についての具体例を示す図である。
【図２３Ｂ】図２３Ｂは、構成情報の差異の検出についての具体例を示す図である。
【図２３Ｃ】図２３Ｃは、構成情報の差異の検出についての具体例を示す図である。
【図２４Ａ】図２４Ａは、構成情報の差異の検出についての具体例を示す図である。
【図２４Ｂ】図２４Ｂは、構成情報の差異の検出についての具体例を示す図である。
【図２４Ｃ】図２４Ｃは、構成情報の差異の検出についての具体例を示す図である。
【図２５Ａ】図２５Ａは、第３の実施の形態におけるファームウエアのインタフェースの一例を示す図である。
【図２５Ｂ】図２５Ｂは、第３の実施の形態におけるファームウエアのインタフェースの一例を示す図である。
【図２６Ａ】図２６Ａは、第３の実施の形態におけるファームウエアのインタフェースの一例を示す図である。
【図２６Ｂ】図２６Ｂは、第３の実施の形態におけるファームウエアのインタフェースの一例を示す図である。
【図２７】図２７は、第３の実施の形態におけるファームウエアのインタフェースの一例を示す図である。
【図２８Ａ】図２８Ａは、第３の実施の形態における管理データの一例を示す図である。
【図２８Ｂ】図２８Ｂは、第３の実施の形態における管理データの一例を示す図である。
【図２８Ｃ】図２８Ｃは、第３の実施の形態における管理データの一例を示す図である。
【図２９】図２９は、第３の実施の形態における第２管理部が実行する処理の処理フローを示す図である。
【図３０】図３０は、第３の実施の形態における第２管理部が実行する処理の処理フローを示す図である。
【図３１Ａ】図３１Ａは、インタフェースの差異の検出についての具体例を示す図である。
【図３１Ｂ】図３１Ｂは、インタフェースの差異の検出についての具体例を示す図である。
【図３１Ｃ】図３１Ｃは、インタフェースの差異の検出についての具体例を示す図である。
【図３２Ａ】図３２Ａは、インタフェースの差異の検出についての具体例を示す図である。
【図３２Ｂ】図３２Ｂは、インタフェースの差異の検出についての具体例を示す図である。
【図３２Ｃ】図３２Ｃは、インタフェースの差異の検出についての具体例を示す図である。
【図３３Ａ】図３３Ａは、インタフェースの差異の検出についての具体例を示す図である。
【図３３Ｂ】図３３Ｂは、インタフェースの差異の検出についての具体例を示す図である。
【図３３Ｃ】図３３Ｃは、インタフェースの差異の検出についての具体例を示す図である。
【図３４Ａ】図３４Ａは、インタフェースの差異の検出についての具体例を示す図である。
【図３４Ｂ】図３４Ｂは、インタフェースの差異の検出についての具体例を示す図である。
【図３４Ｃ】図３４Ｃは、インタフェースの差異の検出についての具体例を示す図である。
【図３５】図３５は、コンピュータの機能ブロック図である。
【発明を実施するための形態】
【０００９】
［実施の形態１］
図１に、本実施の形態のシステム概要を示す。本実施の形態の主要な処理を実行する情報処理装置１は、例えばインターネット等のネットワーク５に接続される。ネットワーク５にはファームウエア提供装置３が接続される。情報処理装置１は、ファームウエア提供装置３から提供されるファームウエアをネットワーク５を介して受信し、受信したファームウエアによって情報処理装置１内のファームウエアを更新（例えばオンラインアップデート）する。
【００１０】
図２に、情報処理装置１の機能ブロック図を示す。情報処理装置１は、ファームウエア格納部１０１と、コンパイル部１０２と、オブジェクトコード格納部１０３と、管理データ格納部１０４と、管理部１０５と、互換性データ格納部１０６と、統合部１０７と、統合ファームウエア格納部１０８とを含む。管理部１０５は、第１管理部１０５１と、第２管理部１０５２と、第３管理部１０５３とを含む。
【００１１】
ファームウエア格納部１０１には、情報処理装置１がファームウエア提供装置３から受信したファームウエアが格納される。本実施の形態においては、ＢＩＯＳ（Basic Input Output System）ファームウエアと、ＭＭＢ（Maintenance Management Board）ファームウエアと、ＢＭＣ（Baseboard Management Controller）ファームウエアとが、ファームウエアの機能追加或いは修正等の際にファームウエア提供装置３から受信される。
【００１２】
コンパイル部１０２は、ファームウエア格納部１０１に格納されているファームウエアのコンパイルを実行することで、オブジェクトコード及び管理データを生成する。コンパイル部１０２は、生成したオブジェクトコードをオブジェクトコード格納部１０３に格納し、生成した管理データを管理データ格納部１０４に格納する。ファームウエアのコードは、管理データを生成するためのコードを含むため、ファームウエアのコードをコンパイルすることで管理データが生成される。管理データを生成するためのコードを、情報処理装置１が受信したファームウエアのコードに対して情報処理装置１の管理者が追加してもよいし、管理データを生成するためのコードがファームウエア提供装置３から提供されるファームウエアのコードに含まれていてもよい。
【００１３】
管理部１０５は、管理データ格納部１０４に格納されたデータに基づき、ファームウエアの互換性を判定する処理を実行する。具体的には、第１管理部１０５１は、旧版のファームウエアの構成と新版のファームウエアの構成とに基づき互換性を判定する処理を実行する。第２管理部１０５２は、旧版のファームウエアのインタフェースと新版のファームウエアのインタフェースとに基づき互換性を判定する処理を実行する。第３管理部１０５３は、同じ統合ファームウエアに含まれる或るファームウエアのインタフェースと別のファームウエアのインタフェースとに基づきファームウエアの互換性を判定する処理を実行する。
【００１４】
なお、ファームウエアの構成とは、例えばファームウエアのデータフォーマットである。ファームウエアのインタフェースとは、例えばファームウエア間の通信コマンドのフォーマットである。
【００１５】
統合部１０７は、オブジェクトコード格納部１０３に格納されたオブジェクトコードと、互換性データ格納部１０６に格納されている互換性データとに基づき統合ファームウエアを生成し、生成した統合ファームウエアを統合ファームウエア格納部１０８に格納する。本実施の形態においては、図３に示すように、ＭＭＢファームウエアとＢＩＯＳファームウエアとＢＭＣファームウエアとを含む統合ファームウエアが生成される。より詳細には、図４に示すように、互換性データと、統合ファームウエアに含まれるファームウエアのリストの情報を含むヘッダと、ＭＭＢファームウエアと、ＢＩＯＳファームウエアと、ＢＭＣファームウエアとが統合ファームウエアに含まれる。
【００１６】
次に、図５乃至図７Ｄを用いて、情報処理装置１の動作を説明する。
【００１７】
まず、図５を用いて、ファームウエアから管理データを生成する処理について説明する。
【００１８】
コンパイル部１０２は、ファームウエア格納部１０１から未処理のファームウエアのコードを読み出す（図５：ステップＳ１）。例えば、ＢＭＣファームウエアとＭＭＢファームウエアとが未処理である場合、いずれかのファームウエアのコードが読み出される。
【００１９】
コンパイル部１０２は、ステップＳ１において読み出されたファームウエアのコードをコンパイルすることで、オブジェクトコードと、構成及びインタフェースについての管理データとを生成する（ステップＳ３）。コンパイル部１０２は、生成したオブジェクトコードをオブジェクトコード格納部１０３に格納し、生成した管理データを管理データ格納部１０４に格納する。
【００２０】
図６Ａ乃至図６Ｄに、ファームウエアのコードの一例を示す。図６Ａ及び図６Ｂには、ファームウエアの構成情報がＣ言語で記述されており、図６Ｃ及び図６Ｄには、構成情報についての管理データがＣ言語で記述されている。ヘッダファイルは各構成情報部分に対して設けられるので、コンパイル時にヘッダファイルをカウントすることで構成情報ＩＤ（IDentifier）の数を算出することができる。
【００２１】
図７Ａ乃至図７Ｄに、管理データの一例を示す。図７Ａ及び図７Ｂはファームウエアの構成についての管理データの一例を示す図であり、図７Ｃ及び図７Ｄはファームウエアのインタフェースについての管理データの一例を示す図である。
【００２２】
図７Ａ及び図７Ｂに示すように、ファームウエアの構成についての管理データは、構成情報ＩＤの数と、全構成情報の合計サイズとを含む。また、各構成情報ＩＤについて、構成情報のメンバ数と、構成情報のサイズと、各メンバのＩＤと、各メンバのサイズと、各メンバの本体とが含まれる。この例であれば、構成情報ＩＤの数はＮ（Ｎは自然数）であり、全構成情報の合計サイズは構成情報１乃至Ｎのサイズの合計である。
【００２３】
図７Ｃ及び図７Ｄに示すように、ファームウエアのインタフェースについての管理データは、インタフェースＩＤの数と、全インタフェースのパラメータの合計サイズとを含む。また、各インタフェースＩＤについて、インタフェースのパラメータ数と、パラメータの合計サイズと、各パラメータのＩＤと、各パラメータのサイズと、各パラメータの本体とが含まれる。
【００２４】
図５の説明に戻り、コンパイル部１０２は、未処理のファームウエアが有るか判定する（ステップＳ５）。未処理のファームウエアが有る場合（ステップＳ５：Ｙｅｓルート）、処理はステップＳ１に戻る。一方、未処理のファームウエアが無い場合（ステップＳ５：Ｎｏルート）、処理は終了する。
【００２５】
以上のように、バイナリデータのビルド時に管理データを生成しておくことで、後の処理において管理データを使用することができるようになる。
【００２６】
次に、図８乃至図１０を用いて、第１管理部１０５１が実行する処理を説明する。以下では、処理対象のファームウエアを対象ファームウエアと呼ぶ。
【００２７】
第１管理部１０５１は、互換性データ格納部１０６に格納されている、対象ファームウエアの構成についての互換性データを「ｙｅｓ」に設定する（図８：ステップＳ１１）。ステップＳ１１の処理は初期化に相当する。
【００２８】
図９に、旧版の構成と新版の構成とについての互換性データの一例を示す。図９の例においては、ファームウエアの名前と、旧版の識別番号と、新版の識別番号と、構成についての互換性を表すデータが格納される。「ｙｅｓ」は互換性が有ることを表し、「ｎｏ」は互換性が無いことを表す。
【００２９】
第１管理部１０５１は、構成情報ＩＤを表すカウンタＣをＣ＝１と設定する（ステップＳ１３）。
【００３０】
第１管理部１０５１は、対象ファームウエアについて、新版ファームウエアの管理データ及び旧版ファームウエアの管理データを管理データ格納部１０４から読み出す（ステップＳ１５）。
【００３１】
第１管理部１０５１は、新版のファームウエアについての構成情報ＩＤの数と旧版のファームウエアについての構成情報ＩＤの数とが一致するか判定する（ステップＳ１７）。ここでは、構成情報ＩＤの数をＮと表す。
【００３２】
新版のファームウエアについての構成情報ＩＤの数Ｎと旧版のファームウエアについての構成情報ＩＤの数Ｎとが一致しない場合（ステップＳ１７：Ｎｏルート）、新版のファームウエアと旧版のファームウエアとの互換性が無い（すなわち、旧版から新版へオンラインアップデートを行うと異常が発生する可能性がある）。従って、処理は端子Ａを介して図１０のステップＳ２９に移行する。
【００３３】
一方、新版のファームウエアについての構成情報ＩＤの数Ｎと旧版のファームウエアについての構成情報ＩＤの数Ｎとが一致する場合（ステップＳ１７：Ｙｅｓルート）、第１管理部１０５１は、新版のファームウエアの全構成情報の合計サイズと旧版のファームウエアの全構成情報の合計サイズとが一致するか判定する（ステップＳ１９）。ここでは、全構成情報の合計サイズをＳと表す。
【００３４】
新版のファームウエアの全構成情報の合計サイズＳと旧版のファームウエアの全構成情報の合計サイズＳとが一致しない場合（ステップＳ１９：Ｎｏルート）、新版のファームウエアと旧版のファームウエアとの互換性が無い（すなわち、旧版から新版へオンラインアップデートを行うと異常が発生する可能性がある）。従って、処理は端子Ａを介して図１０のステップＳ２９に移行する。
【００３５】
一方、新版のファームウエアの全構成情報の合計サイズＳと旧版のファームウエアの全構成情報の合計サイズＳとが一致する場合（ステップＳ１９：Ｙｅｓルート）、処理は端子Ｂを介して図１０のステップＳ２１に移行する。
【００３６】
図１０の説明に移行し、第１管理部１０５１は、メンバを表すカウンタｃをｃ＝１と設定する（図１０：ステップＳ２１）。
【００３７】
第１管理部１０５１は、カウンタＣが表す構成情報（例えば、カウンタＣの値が１である場合には構成情報１）について、新版のメンバ数と旧版のメンバ数とが一致するか判定する（ステップＳ２３）。ここでは、メンバ数をｎと表す。
【００３８】
新版のメンバ数ｎと旧版のメンバ数ｎとが一致しない場合（ステップＳ２３：Ｎｏルート）、新版のファームウエアと旧版のファームウエアとの互換性が無い（すなわち、旧版から新版へオンラインアップデートを行うと異常が発生する可能性がある）。従って、処理はステップＳ２９に移行する。
【００３９】
一方、新版のメンバ数ｎと旧版のメンバ数ｎとが一致する場合（ステップＳ２３：Ｙｅｓルート）、第１管理部１０５１は、カウンタＣが表す構成情報について、新版の構成情報サイズと旧版の構成情報サイズとが一致するか判定する（ステップＳ２５）。ここでは、構成情報サイズをｓとする。
【００４０】
新版の構成情報サイズｓと旧版の構成情報サイズｓとが一致しない場合（ステップＳ２５：Ｎｏルート）、新版のファームウエアと旧版のファームウエアとの互換性が無い（すなわち、旧版から新版へオンラインアップデートを行うと異常が発生する可能性がある）。従って、処理はステップＳ２９に移行する。
【００４１】
新版の構成情報サイズｓと旧版の構成情報サイズｓとが一致する場合（ステップＳ２５：Ｙｅｓルート）、第１管理部１０５１は、カウンタＣが表す構成情報について、旧版のメンバであってカウンタｃが表すメンバのサイズと新版のメンバであってカウンタｃが表すメンバのサイズとが一致するか判定する（ステップＳ２７）。
【００４２】
カウンタＣが表す構成情報について、旧版のメンバであってカウンタｃが表すメンバのサイズと新版のメンバであってカウンタｃが表すメンバのサイズとが一致しない場合（ステップＳ２７：Ｎｏルート）、第１管理部１０５１は、互換性データ格納部１０６に格納されている、対象ファームウエアの構成についての互換性データを「ｎｏ」に設定する（ステップＳ２９）。そして処理は終了する。
【００４３】
一方、カウンタＣが表す構成情報について、旧版のメンバであってカウンタｃが表すメンバのサイズと新版のメンバであってカウンタｃが表すメンバのサイズとが一致する場合（ステップＳ２７：Ｙｅｓルート）、第１管理部１０５１は、ｃ＝＝ｎ（すなわち、ｃとｎが等しい）が成立するか判定する（ステップＳ３１）。
【００４４】
ｃ＝＝ｎが成立しない場合（ステップＳ３１：Ｎｏルート）、第１管理部１０５１は、カウンタｃの値を１インクリメントする（ステップＳ３３）。そして処理はステップＳ２７に戻る。
【００４５】
一方、ｃ＝＝ｎが成立する場合（ステップＳ３１：Ｙｅｓルート）、第１管理部１０５１は、Ｃ＝＝Ｎ（すなわち、ＣとＮが等しい）が成立するか判定する（ステップＳ３５）。
【００４６】
Ｃ＝＝Ｎが成立しない場合（ステップＳ３５：Ｎｏルート）、第１管理部１０５１は、カウンタＣを１インクリメントする（ステップＳ３７）。そして処理はステップＳ２１に戻る。一方、Ｃ＝＝Ｎが成立する場合（ステップＳ３５：Ｙｅｓルート）、処理は終了する。
【００４７】
以上のように、新版のファームウエアの構成と旧版のファームウエアの構成とが一致しない場合には、構成の互換性が無いことを表す互換性データが生成されるようになる。
【００４８】
次に、図１１乃至図１３を用いて、第２管理部１０５２が実行する処理を説明する。以下では、処理対象のファームウエアを対象ファームウエアと呼ぶ。
【００４９】
第２管理部１０５２は、互換性データ格納部１０６に格納されている、対象ファームウエアのインタフェースについての互換性データを「ｙｅｓ」に設定する（図１１：ステップＳ４１）。ステップＳ４１の処理は初期化に相当する。
【００５０】
図１２に、旧版のインタフェースと新版のインタフェースとについての互換性データの一例を示す。図１２の例においては、ファームウエアの名前と、旧版の識別番号と、新版の識別番号と、インタフェースについての互換性を表すデータが格納される。「ｙｅｓ」は互換性が有ることを表し、「ｎｏ」は互換性が無いことを表す。
【００５１】
第２管理部１０５２は、インタフェースＩＤを表すカウンタＣをＣ＝１と設定する（ステップＳ４３）。
【００５２】
第２管理部１０５２は、対象ファームウエアについて、新版ファームウエアの管理データ及び旧版ファームウエアの管理データを管理データ格納部１０４から読み出す（ステップＳ４５）。
【００５３】
第２管理部１０５２は、新版のファームウエアについてのインタフェースＩＤの数と旧版のファームウエアについてのインタフェースＩＤの数とが一致するか判定する（ステップＳ４７）。ここでは、インタフェースＩＤの数をＮと表す。
【００５４】
新版のファームウエアについてのインタフェースＩＤの数Ｎと旧版のファームウエアについてのインタフェースＩＤの数Ｎとが一致しない場合（ステップＳ４７：Ｎｏルート）、新版のファームウエアと旧版のファームウエアとの互換性が無い（すなわち、旧版から新版へオンラインアップデートを行うと異常が発生する可能性がある）。従って、処理は端子Ｃを介して図１３のステップＳ５９に移行する。
【００５５】
一方、新版のファームウエアについてのインタフェースＩＤの数Ｎと旧版のファームウエアについてのインタフェースＩＤの数Ｎとが一致する場合（ステップＳ４７：Ｙｅｓルート）、第２管理部１０５２は、新版のファームウエアの全インタフェースのパラメータの合計サイズと旧版のファームウエアの全インタフェースのパラメータの合計サイズとが一致するか判定する（ステップＳ４９）。ここでは、全インタフェースのパラメータの合計サイズをＳと表す。
【００５６】
新版のファームウエアの全インタフェースのパラメータの合計サイズＳと旧版のファームウエアの全インタフェースのパラメータの合計サイズＳとが一致しない場合（ステップＳ４９：Ｎｏルート）、新版のファームウエアと旧版のファームウエアとの互換性が無い（すなわち、旧版から新版へオンラインアップデートを行うと異常が発生する可能性がある）。従って、処理は端子Ｃを介して図１３のステップＳ５９に移行する。
【００５７】
一方、新版のファームウエアの全インタフェースのパラメータの合計サイズＳと旧版のファームウエアの全インタフェースのパラメータの合計サイズＳとが一致する場合（ステップＳ４９：Ｙｅｓルート）、処理は端子Ｄを介して図１３のステップＳ５１に移行する。
【００５８】
図１３の説明に移行し、第２管理部１０５２は、パラメータを表すカウンタｃをｃ＝１と設定する（図１３：ステップＳ５１）。
【００５９】
第２管理部１０５２は、カウンタＣが表すインタフェース（例えば、カウンタＣの値が１である場合にはインタフェース１）について、新版のパラメータ数と旧版のパラメータ数とが一致するか判定する（ステップＳ５３）。ここでは、パラメータ数をｎと表す。
【００６０】
新版のパラメータ数ｎと旧版のパラメータ数ｎとが一致しない場合（ステップＳ５３：Ｎｏルート）、新版のファームウエアと旧版のファームウエアとの互換性が無い（すなわち、旧版から新版へオンラインアップデートを行うと異常が発生する可能性がある）。従って、処理はステップＳ５９に移行する。
【００６１】
一方、新版のパラメータ数ｎと旧版のパラメータ数ｎとが一致する場合（ステップＳ５３：Ｙｅｓルート）、第２管理部１０５２は、カウンタＣが表すインタフェースについて、新版のパラメータの合計サイズと旧版のパラメータの合計サイズとが一致するか判定する（ステップＳ５５）。ここでは、パラメータの合計サイズをｓとする。
【００６２】
新版のパラメータの合計サイズｓと旧版のパラメータの合計サイズｓとが一致しない場合（ステップＳ５５：Ｎｏルート）、新版のファームウエアと旧版のファームウエアとの互換性が無い（すなわち、旧版から新版へオンラインアップデートを行うと異常が発生する可能性がある）。従って、処理はステップＳ５９に移行する。
【００６３】
一方、新版のパラメータの合計サイズｓと旧版のパラメータの合計サイズｓとが一致する場合（ステップＳ５５：Ｙｅｓルート）、第２管理部１０５２は、カウンタＣが表すインタフェースについて、旧版のパラメータであってカウンタｃが表すパラメータのサイズと新版のパラメータであってカウンタｃが表すパラメータのサイズとが一致するか判定する（ステップＳ５７）。ステップＳ５７においては、少なくとも１つのパラメータのサイズが異なる場合には、差が有ると判定される。
【００６４】
カウンタＣが表すインタフェースについて、旧版のパラメータであってカウンタｃが表すパラメータのサイズと新版のパラメータであってカウンタｃが表すパラメータのサイズとが一致しない場合（ステップＳ５７：Ｎｏルート）、第２管理部１０５２は、互換性データ格納部１０６に格納されている、対象ファームウエアのインタフェースについての互換性データを「ｎｏ」に設定する（ステップＳ５９）。そして処理は終了する。
【００６５】
一方、カウンタＣが表すインタフェースについて、旧版のパラメータであってカウンタｃが表すパラメータのサイズと新版のパラメータであってカウンタｃが表すパラメータのサイズとが一致する場合（ステップＳ５７：Ｙｅｓルート）、第２管理部１０５２は、ｃ＝＝ｎ（すなわち、ｃとｎが等しい）が成立するか判定する（ステップＳ６１）。
【００６６】
ｃ＝＝ｎが成立しない場合（ステップＳ６１：Ｎｏルート）、第２管理部１０５２は、カウンタｃの値を１インクリメントする（ステップＳ６３）。そして処理はステップＳ５７に戻る。
【００６７】
一方、ｃ＝＝ｎが成立する場合（ステップＳ６１：Ｙｅｓルート）、第２管理部１０５２は、Ｃ＝＝Ｎ（すなわち、ＣとＮが等しい）が成立するか判定する（ステップＳ６５）。
【００６８】
Ｃ＝＝Ｎが成立しない場合（ステップＳ６５：Ｎｏルート）、第２管理部１０５２は、カウンタＣを１インクリメントする（ステップＳ６７）。そして処理はステップＳ５１に戻る。一方、Ｃ＝＝Ｎが成立する場合（ステップＳ６５：Ｙｅｓルート）、処理は終了する。
【００６９】
以上のように、新版のファームウエアのインタフェースと旧版のファームウエアのインタフェースとが一致しない場合には、インタフェースの互換性が無いことを表す互換性データが生成されるようになる。
【００７０】
次に、図１４乃至図１６Ａを用いて、第３管理部１０５３が実行する処理を説明する。第３管理部１０５３は、同一の統合ファームウエアに含まれる或るファームウエアのインタフェースと別のファームウエアのインタフェースとの間の互換性を判定する処理を実行する。すなわち、同一の統合ファームウエアに含まれるファームウエア間でのファームウエア通信がオンラインアップデート後に問題無く行われるかが判定される。
【００７１】
第３管理部１０５３は、互換性データ格納部１０６に格納されており且つ対象ファームウエアの組合せについてインタフェースの互換性を表す互換性データを「ｙｅｓ」に設定する（図１４：ステップＳ７１）。ステップＳ７１の処理は初期化に相当する。
【００７２】
図１５に、同一の統合ファームウエアに含まれるファームウエア間のインタフェースについての互換性データの一例を示す。図１５の例においては、ファームウエアの組合せに対して、インタフェースについての互換性を表すデータが格納される。「ｙｅｓ」は互換性が有ることを表し、「ｎｏ」は互換性が無いことを表す。
【００７３】
第３管理部１０５３は、比較元のインタフェースを表す比較元カウンタＣをＣ＝１と設定し、比較先のインタフェースを表す比較先カウンタＳＣをＳＣ＝１と設定する（ステップＳ７３）。
【００７４】
第３管理部１０５３は、管理データ格納部１０４から、比較元カウンタＣが表すインタフェース（以下、比較元インタフェースと呼ぶ）のＩＤを特定する（ステップＳ７５）。
【００７５】
第３管理部１０５３は、管理データ格納部１０４から、比較先カウンタＳＣが表すインタフェース（以下、比較先インタフェースと呼ぶ）のＩＤを特定する（ステップＳ７７）。
【００７６】
第３管理部１０５３は、比較元インタフェースのＩＤと比較先インタフェースのＩＤとが一致するか判定する（ステップＳ７９）。
【００７７】
比較元インタフェースのＩＤと比較先インタフェースのＩＤとが一致しない場合（ステップＳ７９：Ｎｏルート）、第３管理部１０５３は、ＳＣ＝＝Ｎが成立するか判定する（ステップＳ８１）。Ｎは、インタフェースＩＤの数である。
【００７８】
ＳＣ＝＝Ｎが成立しない場合（ステップＳ８１：Ｎｏルート）、比較先カウンタＳＣを１インクリメントする（ステップＳ８３）。そして処理はステップＳ７７に戻る。一方、ＳＣ＝＝Ｎが成立する場合（ステップＳ８１：Ｙｅｓルート）、処理は端子Ｅを介して図１６ＡのステップＳ９９に移行する。
【００７９】
一方、比較元インタフェースのＩＤと比較先インタフェースのＩＤとが一致する場合（ステップＳ７９：Ｙｅｓルート）、第３管理部１０５３は、パラメータを表すカウンタｃをｃ＝１と設定する（ステップＳ８５）。処理は端子Ｆを介して図１６ＡのステップＳ８７に移行する。
【００８０】
図１６Ａの説明に移行し、第３管理部１０５３は、比較元インタフェースのパラメータ数と比較先インタフェースのパラメータ数とが一致するか判定する（図１６Ａ：ステップＳ８７）。ここでは、パラメータ数をｎとする。
【００８１】
比較元インタフェースのパラメータ数ｎと比較先インタフェースのパラメータ数ｎとが一致しない場合（ステップＳ８７：Ｎｏルート）、処理はステップＳ９３に移行する。
【００８２】
一方、比較元インタフェースのパラメータ数ｎと比較先インタフェースのパラメータ数ｎとが一致する場合（ステップＳ８７：Ｙｅｓルート）、第３管理部１０５３は、比較元インタフェースのパラメータの合計サイズと比較先インタフェースのパラメータの合計サイズとが一致するか判定する（ステップＳ８９）。ここでは、パラメータの合計サイズをｓとする。
【００８３】
比較元インタフェースのパラメータの合計サイズｓと比較先インタフェースのパラメータの合計サイズｓとが一致しない場合（ステップＳ８９：Ｎｏルート）、処理はステップＳ９３に移行する。
【００８４】
一方、比較元インタフェースのパラメータの合計サイズｓと比較先インタフェースのパラメータの合計サイズｓとが一致する場合（ステップＳ８９：Ｙｅｓルート）、第３管理部１０５３は、比較元インタフェースのパラメータであってカウンタｃが表すパラメータのサイズと比較先インタフェースのパラメータであってカウンタｃが表すパラメータのサイズとが一致するか判定する（ステップＳ９１）。
【００８５】
比較元インタフェースのパラメータであってカウンタｃが表すパラメータのサイズと比較先インタフェースのパラメータであってカウンタｃが表すパラメータのサイズとが一致しない場合（ステップＳ９１：Ｎｏルート）、第３管理部１０５３は、互換性データ格納部１０６に格納されており且つ対象ファームウエアの組合せについてインタフェースの互換性を表す互換性データを「ｎｏ」に設定する（ステップＳ９３）。そして処理は終了する。
【００８６】
一方、比較元インタフェースのパラメータであってカウンタｃが表すパラメータのサイズと比較先インタフェースのパラメータであってカウンタｃが表すパラメータのサイズとが一致する場合（ステップＳ９１：Ｙｅｓルート）、第３管理部１０５３は、ｃ＝＝ｎが成立するか判定する（ステップＳ９５）。
【００８７】
ｃ＝＝ｎが成立しない場合（ステップＳ９５：Ｎｏルート）、第３管理部１０５３は、カウンタｃを１インクリメントする（ステップＳ９７）。そして処理はステップＳ９１に戻る。
【００８８】
一方、ｃ＝＝ｎが成立する場合（ステップＳ９５：Ｙｅｓルート）、第３管理部１０５３は、カウンタＳＣをＳＣ＝１と設定（すなわち初期化）する（ステップＳ９９）。
【００８９】
第３管理部１０５３は、Ｃ＝＝Ｎが成立するか判定する（ステップＳ１０１）。Ｃ＝＝Ｎが成立しない場合（ステップＳ１０１：Ｎｏルート）、第３管理部１０５３は、カウンタＣを１インクリメントする（ステップＳ１０３）。処理は端子Ｇを介して図１４のステップＳ７５に戻る。一方、Ｃ＝＝Ｎが成立する場合（ステップＳ１０１：Ｙｅｓルート）、処理は終了する。
【００９０】
以上のように、オンラインアップデート後にファームウエア間の通信に問題が発生する可能性がある場合には、インタフェースの互換性が無いことを表す互換性データが生成されるようになる。
【００９１】
次に、図１６Ｂを用いて、統合部１０７が実行する処理を説明する。
【００９２】
まず、統合部１０７は、新版のＢＩＯＳファームウエア、新版のＭＭＢファームウエア及び新版のＢＭＣファームウエアのオブジェクトコードを、オブジェクトコード格納部１０３から読み出す（図１６Ｂ：ステップＳ２０１）。
【００９３】
統合部１０７は、統合されるファームウエアのリストの情報を含むヘッダを生成する（ステップＳ２０３）。
【００９４】
統合部１０７は、新版のＢＩＯＳファームウエア、新版のＭＭＢファームウエア及び新版のＢＭＣファームウエアについて、互換性データ（ここでは、第１管理部１０５１乃至第３管理部１０５３の処理によって生成された互換性データ）を互換性データ格納部１０６から読み出す（ステップＳ２０５）。
【００９５】
統合部１０７は、ステップＳ２０１において読み出されたオブジェクトコードと、ステップＳ２０３において生成されたヘッダと、ステップＳ２０５において読み出された互換性データとを含む統合ファームウエアを生成する（ステップＳ２０７）。そして、統合部１０７は、生成した統合ファームウエアを統合ファームウエア格納部１０８に格納する。そして処理は終了する。
【００９６】
以上のような処理を実行すれば、生成された統合ファームウエアに基づくオンラインアップデートを実行してよいか否かを判定できるようになる。本実施の形態においては、「ｎｏ」に設定された互換性データが存在する場合には、異常が発生する可能性があるためオンラインアップデートを行うことは好ましくない。
【００９７】
［実施の形態２］
第２の実施の形態においては、第１の実施の形態において示した構成情報より具体的な構成情報を例にして、第１管理部１０５１が実行する処理について説明する。第２の実施の形態における第１管理部１０５１の基本的な動作は第１の実施の形態のそれと同様である。
【００９８】
図１７Ａ乃至図１７Ｄに、第２の実施の形態におけるファームウエアの構成情報の一例を示す。
【００９９】
図１８Ａ及び図１８Ｂに、図１７Ａ乃至図１７Ｄに示した構成情報に対応する管理データの一例を示す。図１８Ａに示すように、本実施の形態においては、構成情報ＩＤの数をＣ＿Ｎとし、全構成情報の合計サイズをＣ＿Ｓとする。また、図１８Ｂに示すように、構成情報の項目（すなわちメンバ）の数をｃ＿ｎとし、構成情報のサイズをｃ＿ｓとする。
【０１００】
次に、図１９及び図２０を用いて、第１管理部１０５１が実行する処理を説明する。以下では、処理対象のファームウエアを対象ファームウエアと呼ぶ。
【０１０１】
第１管理部１０５１は、互換性データ格納部１０６に格納されている、対象ファームウエアの構成についての互換性データを「ｙｅｓ」に設定する（図１９：ステップＳ１１１）。ステップＳ１１１の処理は初期化に相当する。
【０１０２】
第１管理部１０５１は、構成情報ＩＤを表すカウンタＣをＣ＝１と設定する（ステップＳ１１３）。
【０１０３】
第１管理部１０５１は、対象ファームウエアについて、新版ファームウエアの管理データ及び旧版ファームウエアの管理データを管理データ格納部１０４から読み出す。そして、第１管理部１０５１は、新版のファームウエアについての構成情報ＩＤの数Ｃ＿Ｎと旧版のファームウエアについての構成情報ＩＤの数Ｃ＿Ｎとが一致するか判定する（ステップＳ１１５）。
【０１０４】
新版のファームウエアについての構成情報ＩＤの数Ｃ＿Ｎと旧版のファームウエアについての構成情報ＩＤの数Ｃ＿Ｎとが一致しない場合（ステップＳ１１５：Ｎｏルート）、新版のファームウエアと旧版のファームウエアとの互換性が無い（すなわち、旧版から新版へオンラインアップデートを行うと異常が発生する可能性がある）。従って、処理は端子Ｈを介して図２０のステップＳ１２９に移行する。
【０１０５】
一方、新版のファームウエアについての構成情報ＩＤの数Ｃ＿Ｎと旧版のファームウエアについての構成情報ＩＤの数Ｃ＿Ｎとが一致する場合（ステップＳ１１５：Ｙｅｓルート）、第１管理部１０５１は、新版のファームウエアの全構成情報の合計サイズＣ＿Ｓと旧版のファームウエアの全構成情報の合計サイズＣ＿Ｓとが一致するか判定する（ステップＳ１１７）。
【０１０６】
新版のファームウエアの全構成情報の合計サイズＣ＿Ｓと旧版のファームウエアの全構成情報の合計サイズＣ＿Ｓとが一致しない場合（ステップＳ１１７：Ｎｏルート）、新版のファームウエアと旧版のファームウエアとの互換性が無い（すなわち、旧版から新版へオンラインアップデートを行うと異常が発生する可能性がある）。従って、処理は端子Ｈを介して図２０のステップＳ１２９に移行する。
【０１０７】
一方、新版のファームウエアの全構成情報の合計サイズＣ＿Ｓと旧版のファームウエアの全構成情報の合計サイズＣ＿Ｓとが一致する場合（ステップＳ１１７：Ｙｅｓルート）、処理は端子Ｉを介して図２０のステップＳ１１９に移行する。
【０１０８】
図２０の説明に移行し、第１管理部１０５１は、項目を表すカウンタｃをｃ＝１と設定する（図２０：ステップＳ１１９）。
【０１０９】
第１管理部１０５１は、カウンタＣが表す構成情報（例えば、カウンタＣの値が１である場合にはＮＥＴＷＯＲＫ＿ＩＮＴＥＲＦＡＣＥ＿ＳＴＲＵＣＴ）について、新版の項目数ｃ＿ｎと旧版の項目数ｃ＿ｎとが一致するか判定する（ステップＳ１２３）。
【０１１０】
新版の項目数ｃ＿ｎと旧版の項目数ｃ＿ｎとが一致しない場合（ステップＳ１２３：Ｎｏルート）、新版のファームウエアと旧版のファームウエアとの互換性が無い（すなわち、旧版から新版へオンラインアップデートを行うと異常が発生する可能性がある）。従って、処理はステップＳ１２９に移行する。
【０１１１】
一方、新版の項目数ｃ＿ｎと旧版の項目数ｃ＿ｎとが一致する場合（ステップＳ１２３：Ｙｅｓルート）、第１管理部１０５１は、カウンタＣが表す構成情報について、新版の構成情報サイズｃ＿ｓと旧版の構成情報サイズｃ＿ｓとが一致するか判定する（ステップＳ１２５）。ここでは、構成情報サイズをｃ＿ｓとする。
【０１１２】
新版の構成情報サイズｃ＿ｓと旧版の構成情報サイズｃ＿ｓとが一致しない場合（ステップＳ１２５：Ｎｏルート）、新版のファームウエアと旧版のファームウエアとの互換性が無い（すなわち、旧版から新版へオンラインアップデートを行うと異常が発生する可能性がある）。従って、処理はステップＳ１２９に移行する。
【０１１３】
一方、新版の構成情報サイズｃ＿ｓと旧版の構成情報サイズｃ＿ｓとが一致する場合（ステップＳ１２５：Ｙｅｓルート）、第１管理部１０５１は、カウンタＣが表す構成情報について、旧版の項目であってカウンタｃが表す項目のサイズと新版の項目であってカウンタｃが表す項目のサイズとが一致するか判定する（ステップＳ１２７）。
【０１１４】
カウンタＣが表す構成情報について、旧版の項目であってカウンタｃが表す項目のサイズと新版の項目であってカウンタｃが表す項目のサイズとが一致しない場合（ステップＳ１２７：Ｎｏルート）、第１管理部１０５１は、互換性データ格納部１０６に格納されている、対象ファームウエアの構成についての互換性データを「ｎｏ」に設定する（ステップＳ１２９）。そして処理は終了する。
【０１１５】
一方、カウンタＣが表す構成情報について、旧版の項目であってカウンタｃが表す項目のサイズと新版の項目であってカウンタｃが表す項目のサイズとが一致する場合（ステップＳ１２７：Ｙｅｓルート）、第１管理部１０５１は、ｃ＝＝ｃ＿ｎ（すなわち、ｃとｃ＿ｎが等しい）が成立するか判定する（ステップＳ１３１）。
【０１１６】
ｃ＝＝ｃ＿ｎが成立しない場合（ステップＳ１３１：Ｎｏルート）、第１管理部１０５１は、カウンタｃの値を１インクリメントする（ステップＳ１３３）。そして処理はステップＳ１２７に戻る。
【０１１７】
一方、ｃ＝＝ｃ＿ｎが成立する場合（ステップＳ１３１：Ｙｅｓルート）、第１管理部１０５１は、Ｃ＝＝Ｃ＿Ｎ（すなわち、ＣとＣ＿Ｎが等しい）が成立するか判定する（ステップＳ１３５）。
【０１１８】
Ｃ＝＝Ｃ＿Ｎが成立しない場合（ステップＳ１３５：Ｎｏルート）、第１管理部１０５１は、カウンタＣを１インクリメントする（ステップＳ１３７）。そして処理はステップＳ１１９に戻る。一方、Ｃ＝＝Ｃ＿Ｎが成立する場合（ステップＳ１３５：Ｙｅｓルート）、処理は終了する。
【０１１９】
図２１Ａ乃至図２４Ｃに、構成情報の差異の検出についての具体例を示す。
【０１２０】
図２１Ａに、比較対象の構成情報を示す。図２１Ａに示した構成情報に対応する管理データを、図２１Ｂに示す。さらに、図２１Ｂに示した各項目のサイズの詳細を、図２１Ｃに示す。なお、図２２Ａ乃至図２４Ｃにおいて、構成情報の変更部分は太枠で示されている。
【０１２１】
図２２Ａに示すように、ＮＴＰ＿ＳＥＲＶＥＲ＿ＮＵＭが３から４に変更されたとする。この場合、図２２Ｂ及び図２２Ｃに示すように管理データが変更される。具体的には、ＤＡＴＥ＿ＴＩＭＥ＿ＳＴＲＵＣＴ．ＮＴＰＳｅｒｖｅｒのサイズが１２（＝４＊３）から１６（＝４＊４）に変更されたことで、ＤＡＴＥ＿ＴＩＭＥ＿ＳＴＲＵＣＴのサイズが２２６から２３０に変更される。このようなケースにおいては構成情報の差異が有ると判定される。
【０１２２】
このように、本実施の形態によれば、全構成情報の合計サイズが変更された場合にはその変更が検出される。
【０１２３】
また、図２３Ａに示すように、ＮＴＰ＿ＳＥＲＶＥＲ＿ＮＵＭが３から４に変更され、ｒｅｓｅｒｖｅ２［２０８］がｒｅｓｅｒｖｅ２［２０４］に変更されたとする。この場合、図２３Ｂ及び図２３Ｃに示すように管理データが変更される。具体的には、ＤＡＴＥ＿ＴＩＭＥ＿ＳＴＲＵＣＴ．ＮＴＰＳｅｒｖｅｒのサイズが１２（＝４＊３）から１６（＝４＊４）に変更され、ＤＡＴＥ＿ＴＩＭＥ＿ＳＴＲＵＣＴ．ｒｅｓｅｒｖｅ２のサイズが２０８から２０４に変更されているが、全構成情報の合計サイズは変更されていない。このようなケースにおいても構成情報の差異があると判定される。
【０１２４】
このように、本実施の形態によれば、たとえ全構成情報の合計サイズが変更されていなくてもいずれかの項目（すなわちメンバ）のサイズが変更された場合にはその変更が検出される。
【０１２５】
また、図２４Ａに示すように、ＤＡＴＥ＿ＴＩＭＥ＿ＳＴＲＵＣＴ＿ｎｕｍが６から７に変更され、項目「ｔｉｍｅＺｏｎｅＩｄ」が追加され、ｒｅｓｅｒｖｅ２［２０８］がｒｅｓｅｒｖｅ２［２０６］に変更されたとする。この場合、図２４Ｂ及び図２４Ｃに示すように管理データが変更される。具体的には、サイズが２であるＤＡＴＥ＿ＴＩＭＥ＿ＳＴＲＵＣＴ．ｔｉｍｅＺｏｎｅＩｄが追加され、ＤＡＴＥ＿ＴＩＭＥ＿ＳＴＲＵＣＴ．ｒｅｓｅｒｖｅ２のサイズが２０８から２０６に変更されているが、全構成情報の合計サイズは変更されていない。このようなケースにおいても構成情報の差異があると判定される。
【０１２６】
このように、本実施の形態によれば、たとえ全構成情報の合計サイズが変更されていなくても項目の数が変更された場合には、構成情報の差異があると判定される。
【０１２７】
［実施の形態３］
第３の実施の形態においては、第１の実施の形態で示したインタフェースより具体的なインタフェースを例にして、第２管理部１０５２が実行する処理について説明する。第３の実施の形態における第２管理部１０５２の基本的な動作は第１の実施の形態のそれと同様である。
【０１２８】
図２５Ａ乃至図２７に、第３の実施の形態におけるファームウエアのインタフェースの一例を示す。図２５Ａ及び図２５Ｂは、Ｇｅｔ Ｄｅｖｉｃｅ ＩＤというコマンドのフィールドを示す図である。図２６Ａ及び図２６Ｂは、Ｍａｎｕｆａｃｔｕｒｉｎｇ Ｔｅｓｔ Ｏｎ Ｃｏｍｍａｎｄというコマンドのフィールドを示す図である。図２７は、Ｇｅｔ Ｍａｎｕｆａｃｔｕｒｉｎｇ Ｔｅｓｔ Ｏｎ Ｃｏｍｍａｎｄというコマンドのインタフェースを示す図である。
【０１２９】
図２８Ａ乃至図２８Ｃに、図２５Ａ乃至図２７に示したインタフェースに対応する管理データの一例を示す。図２８Ａに示すように、本実施の形態においては、全インタフェースの数をＦ＿Ｎとし、全インタフェースのパラメータの合計サイズをＦ＿Ｓとする。また、図２８Ｂ及び図２８Ｃに示すように、リクエストデータのフィールド数をｆ＿ｎ1とし、リクエストデータのサイズをｆ＿ｓ1とし、レスポンスデータのフィールド数をｆ＿ｎ2とし、レスポンスデータのサイズをｆ＿ｓ2とする。
【０１３０】
次に、図２９及び図３０を用いて、第２管理部１０５２が実行する処理を説明する。以下では、処理対象のファームウエアを対象ファームウエアと呼ぶ。
【０１３１】
第２管理部１０５２は、互換性データ格納部１０６に格納されている、対象ファームウエアのインタフェースについての互換性データが「ｙｅｓ」に設定されているか判定する（図２９：ステップＳ１４１）。
【０１３２】
互換性データ格納部１０６に格納されている、対象ファームウエアのインタフェースについての互換性データが「ｙｅｓ」に設定されていない場合（ステップＳ１４１：Ｎｏルート）、新版のファームウエアと旧版のファームウエアとの互換性が無い（すなわち、旧版から新版へオンラインアップデートを行うと異常が発生する可能性がある）。従って、処理は端子Ｊを介して図３０に移行し終了する。
【０１３３】
互換性データ格納部１０６に格納されている、対象ファームウエアのインタフェースについての互換性データが「ｙｅｓ」に設定されている場合（ステップＳ１４１：Ｙｅｓルート）、第２管理部１０５２は、インタフェースＩＤを表すカウンタＣをＣ＝１と設定する（ステップＳ１４３）。
【０１３４】
第２管理部１０５２は、対象ファームウエアについて、新版ファームウエアの管理データ及び旧版ファームウエアの管理データを管理データ格納部１０４から読み出す（ステップＳ１４５）。
【０１３５】
第２管理部１０５２は、新版のファームウエアについてのインタフェースＩＤの数Ｆ＿Ｎと旧版のファームウエアについてのインタフェースＩＤの数Ｆ＿Ｎとが一致するか判定する（ステップＳ１４７）。
【０１３６】
新版のファームウエアについてのインタフェースＩＤの数Ｆ＿Ｎと旧版のファームウエアについてのインタフェースＩＤの数Ｆ＿Ｎとが一致しない場合（ステップＳ１４７：Ｎｏルート）、新版のファームウエアと旧版のファームウエアとの互換性が無い（すなわち、旧版から新版へオンラインアップデートを行うと異常が発生する可能性がある）。従って、処理は端子Ｋを介して図３０のステップＳ１６９に移行する。
【０１３７】
一方、新版のファームウエアについてのインタフェースＩＤの数Ｆ＿Ｎと旧版のファームウエアについてのインタフェースＩＤの数Ｆ＿Ｎとが一致する場合（ステップＳ１４７：Ｙｅｓルート）、第２管理部１０５２は、新版のファームウエアの全インタフェースのパラメータの合計サイズＦ＿Ｓと旧版のファームウエアの全インタフェースのパラメータの合計サイズＦ＿Ｓとが一致するか判定する（ステップＳ１４９）。
【０１３８】
新版のファームウエアの全インタフェースのパラメータの合計サイズＦ＿Ｓと旧版のファームウエアの全インタフェースのパラメータの合計サイズＦ＿Ｓとが一致しない場合（ステップＳ１４９：Ｎｏルート）、新版のファームウエアと旧版のファームウエアとの互換性が無い（すなわち、旧版から新版へオンラインアップデートを行うと異常が発生する可能性がある）。従って、処理は端子Ｋを介して図３０のステップＳ１６９に移行する。
【０１３９】
一方、新版のファームウエアの全インタフェースのパラメータの合計サイズＦ＿Ｓと旧版のファームウエアの全インタフェースのパラメータの合計サイズＦ＿Ｓとが一致する場合（ステップＳ１４９：Ｙｅｓルート）、第２管理部１０５２は、リクエストデータを表すカウンタｃ1をｃ1＝１と設定し、レスポンスデータを表すカウンタｃ2をｃ2＝１と設定する（ステップＳ１５１）。
【０１４０】
第２管理部１０５２は、カウンタＣが表すインタフェース（例えば、カウンタＣの値が１である場合にはＧｅｔ Ｄｅｖｉｃｅ ＩＤ）について、新版のリクエストデータのフィールド数ｆ＿ｎ1と旧版のリクエストデータのフィールド数ｆ＿ｎ1とが一致するか判定する（ステップＳ１５３）。
【０１４１】
カウンタＣが表すインタフェースについて、新版のリクエストデータのフィールド数ｆ＿ｎ1と旧版のリクエストデータのフィールド数ｆ＿ｎ1とが一致しない場合（ステップＳ１５３：Ｎｏルート）、処理は端子Ｋを介して図３０のステップＳ１６９に移行する。
【０１４２】
一方、カウンタＣが表すインタフェースについて、新版のリクエストデータのフィールド数ｆ＿ｎ1と旧版のリクエストデータのフィールド数ｆ＿ｎ1とが一致する場合（ステップＳ１５３：Ｙｅｓルート）、第２管理部１０５２は、カウンタＣが表すインタフェースについて、新版のリクエストデータのサイズｆ＿ｓ1と旧版のリクエストデータのサイズｆ＿ｓ1とが一致するか判定する（ステップＳ１５５）。
【０１４３】
カウンタＣが表すインタフェースについて、新版のリクエストデータのサイズｆ＿ｓ1と旧版のリクエストデータのサイズｆ＿ｓ1とが一致しない場合（ステップＳ１５５：Ｎｏルート）、処理は端子Ｋを介して図３０のステップＳ１６９に移行する。
【０１４４】
一方、カウンタＣが表すインタフェースについて、新版のリクエストデータのサイズｆ＿ｓ1と旧版のリクエストデータのサイズｆ＿ｓ1とが一致する場合（ステップＳ１５５：Ｙｅｓルート）、処理は端子Ｌを介して図３０のステップＳ１５７に移行する。
【０１４５】
図３０の説明に移行し、第２管理部１０５２は、カウンタＣが表すインタフェースについて、旧版のフィールドであってカウンタｃ1が表すフィールドのデータサイズと新版のフィールドであってカウンタｃ1が表すフィールドのデータサイズとが一致するか判定する（図３０：ステップＳ１５７）。
【０１４６】
カウンタＣが表すインタフェースについて、旧版のフィールドであってカウンタｃ1が表すフィールドのデータサイズと新版のフィールドであってカウンタｃ1が表すフィールドのデータサイズとが一致しない場合（ステップＳ１５７：Ｎｏルート）、処理はステップＳ１６９に移行する。
【０１４７】
一方、カウンタＣが表すインタフェースについて、旧版のフィールドであってカウンタｃ1が表すフィールドのデータサイズと新版のフィールドであってカウンタｃ1が表すフィールドのデータサイズとが一致する場合（ステップＳ１５７：Ｎｏルート）、第２管理部１０５２は、ｃ1＝＝ｆ＿ｎ1（すなわち、ｃ1とｆ＿ｎ1が等しい）が成立するか判定する（ステップＳ１５９）。
【０１４８】
ｃ1＝＝ｆ＿ｎ1が成立しない場合（ステップＳ１５９：Ｎｏルート）、第２管理部１０５２は、カウンタｃ1を１インクリメントする（ステップＳ１６１）。そして処理はステップＳ１５７に戻る。
【０１４９】
一方、ｃ1＝＝ｆ＿ｎ1が成立する場合（ステップＳ１５９：Ｙｅｓルート）、第２管理部１０５２は、カウンタＣが表すインタフェースについて、新版のレスポンスデータのフィールド数ｆ＿ｎ2と旧版のレスポンスデータのフィールド数ｆ＿ｎ2とが一致するか判定する（ステップＳ１６３）。
【０１５０】
カウンタＣが表すインタフェースについて、新版のレスポンスデータのフィールド数ｆ＿ｎ2と旧版のレスポンスデータのフィールド数ｆ＿ｎ2とが一致しない場合（ステップＳ１６３：Ｎｏルート）、処理はステップＳ１６９に移行する。
【０１５１】
一方、カウンタＣが表すインタフェースについて、新版のレスポンスデータのフィールド数ｆ＿ｎ2と旧版のレスポンスデータのフィールド数ｆ＿ｎ2とが一致する場合（ステップＳ１６３：Ｙｅｓルート）、第２管理部１０５２は、カウンタＣが表すインタフェースについて、新版のレスポンスデータのサイズｆ＿ｓ2と旧版のレスポンスデータのサイズｆ＿ｓ2とが一致するか判定する（ステップＳ１６５）。
【０１５２】
カウンタＣが表すインタフェースについて、新版のレスポンスデータのサイズｆ＿ｓ2と旧版のレスポンスデータのサイズｆ＿ｓ2とが一致しない場合（ステップＳ１６５：Ｎｏルート）、処理はステップＳ１６９に移行する。
【０１５３】
一方、カウンタＣが表すインタフェースについて、新版のレスポンスデータのサイズｆ＿ｓ2と旧版のレスポンスデータのサイズｆ＿ｓ2とが一致する場合（ステップＳ１６５：Ｙｅｓルート）、第２管理部１０５２は、カウンタＣが表すインタフェースについて、旧版のフィールドであってカウンタｃ2が表すフィールドのデータサイズと新版のフィールドであってカウンタｃ2が表すフィールドのデータサイズとが一致するか判定する（ステップＳ１６７）。
【０１５４】
カウンタＣが表すインタフェースについて、旧版のフィールドであってカウンタｃ2が表すフィールドのデータサイズと新版のフィールドであってカウンタｃ2が表すフィールドのデータサイズとが一致しない場合（ステップＳ１６７：Ｎｏルート）、第２管理部１０５２は、互換性データ格納部１０６に格納されている、対象ファームウエアのインタフェースについての互換性データを「ｎｏ」に設定する（ステップＳ１６９）。そして処理は終了する。
【０１５５】
一方、カウンタＣが表すインタフェースについて、旧版のフィールドであってカウンタｃ2が表すフィールドのデータサイズと新版のフィールドであってカウンタｃ2が表すフィールドのデータサイズとが一致する場合（ステップＳ１６７：Ｙｅｓルート）、第２管理部１０５２は、ｃ2＝＝ｆ＿ｎ2（すなわち、ｃ2とｆ＿ｎ2が等しい）が成立するか判定する（ステップＳ１７１）。
【０１５６】
ｃ2＝＝ｆ＿ｎ2が成立しない場合（ステップＳ１７１：Ｎｏルート）、第２管理部１０５２は、カウンタｃ2を１インクリメントする（ステップＳ１７３）。そして処理はステップＳ１６７に戻る。
【０１５７】
一方、ｃ2＝＝ｆ＿ｎ2が成立する場合（ステップＳ１７１：Ｙｅｓルート）、第２管理部１０５２は、Ｃ＝＝Ｆ＿Ｎ（すなわち、ＣとＦ＿Ｎが等しい）が成立するか判定する（ステップＳ１７５）。
【０１５８】
Ｃ＝＝Ｆ＿Ｎが成立しない場合（ステップＳ１７５：Ｎｏルート）、第２管理部１０５２は、カウンタＣを１インクリメントする（ステップＳ１７７）。そして処理は端子Ｍを介して図２９のステップＳ１５１に戻る。一方、Ｃ＝＝Ｆ＿Ｎが成立する場合（ステップＳ１７５：Ｙｅｓルート）、処理は終了する。
【０１５９】
図３１Ａ乃至図３４Ｃに、インタフェースの差異の検出についての具体例を示す。
【０１６０】
図３１Ａに、比較対象のインタフェースを示す。図３１Ａに示したインタフェースに対応する管理データを、図３１Ｂに示す。さらに、図３１Ｂに示した各フィールドのデータサイズの詳細を、図３１Ｃに示す。なお、図３２Ａ乃至図３４Ｃにおいて、インタフェースの変更部分は太枠で示されている。
【０１６１】
図３２Ａに示すように、ａｕｘｉｌｉａｒｙＦｉｒｍＲｅｖｉｓｉｏｎＩｎｆｏ［４］がａｕｘｉｌｉａｒｙＦｉｒｍＲｅｖｉｓｉｏｎＩｎｆｏ［６］に変更されたとする。この場合、図３２Ｂ及び図３２Ｃに示すように管理データが変更される。具体的には、ＧｅｔＤｅｖｉｃｅＩＤ＿Ｒｅｓｐｏｎｓｅ．ａｕｘｉｌｉａｒｙＦｉｒｍＲｅｖｉｓｏｎＩｎｆｏのサイズが４（＝１＊４）から６（＝１＊６）に変更されたことで、合計サイズが１６から１８に変更される。このようなケースにおいてはインタフェースの差異が有ると判定される。
【０１６２】
このように、本実施の形態によれば、パラメータの合計データサイズが変更された場合にはその変更が検出される。
【０１６３】
また、図３３Ａに示すように、ＭａｎｕｆａｃｔｕｒｅｒＩＤ［３］がＭａｎｕｆａｃｔｕｒｅｒＩＤ［２］に変更され、ａｕｘｉｌｉａｒｙＦｉｒｍＲｅｖｉｓｉｏｎＩｎｆｏ［４］がａｕｘｉｌｉａｒｙＦｉｒｍＲｅｖｉｓｉｏｎＩｎｆｏ［５］に変更されたとする。この場合、図３３Ｂ及び図３３Ｃに示すように管理データが変更される。具体的には、ＧｅｔＤｅｖｉｃｅＩＤ＿Ｒｅｓｐｏｎｓｅ．ＭａｎｕｆａｃｔｕｒｅｒＩＤのサイズが３（＝１＊３）から２（＝１＊２）に変更され、ＧｅｔＤｅｖｉｃｅＩＤ＿Ｒｅｓｐｏｎｓｅ．ａｕｘｉｌｉａｒｙＦｉｒｍＲｅｖｉｓｉｏｎＩｎｆｏのサイズが４（＝１＊４）から５（＝１＊５）に変更されているが、パラメータのの合計データサイズは変更されていない。このようなケースにおいては構成情報の差異があると判定される。
【０１６４】
このように、本実施の形態によれば、たとえパラメータの合計データサイズが変更されていなくてもいずれかのパラメータのデータサイズが変更された場合にはその変更が検出される。
【０１６５】
また、図３４Ａに示すように、ＧｅｔＤｅｖｉｃｅＩＤ＿ＲｅｓｐｏｎｓｅＮｕｍが９から１０に変更され、ａｕｘｉｌｉａｒｙＦｉｒｍＲｅｖｉｓｉｏｎＩｎｆｏ［４］がａｕｘｉｌｉａｒｙＦｉｒｍＲｅｖｉｓｉｏｎＩｎｆｏ［３］に変更され、フィールド「ａｄｄｉｔｉｏｎａｌＩｎｆｏ」が追加されたとする。この場合、図３４Ｂ及び図３４Ｃに示すように管理データが変更される。具体的には、サイズが１であるフィールドが追加されたことによりレスポンスデータのフィールド数が１０から１１に変更され、ＧｅｔＤｅｖｉｃｅＩＤ＿Ｒｅｓｐｏｎｓｅ．ａｕｘｉｌｉａｒｙＦｉｒｍＲｅｖｉｓｉｏｎＩｎｆｏのサイズが４（＝１＊４）から３（＝１＊３）に変更され、サイズが１であるＧｅｔＤｅｖｉｃｅＩＤ＿Ｒｅｓｐｏｎｓｅ．ａｄｄｉｔｉｏｎａｌＩｎｆｏが追加されているが、パラメータの合計データサイズは変更されていない。このようなケースにおいては構成情報の差異があると判定される。
【０１６６】
このように、本実施の形態によれば、たとえパラメータの合計データサイズが変更されていなくてもパラメータの数が変更された場合には、構成情報の差異があると判定される。
【０１６７】
以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上で説明した情報処理装置１の機能ブロック構成は実際のプログラムモジュール構成に一致しない場合もある。
【０１６８】
また、上で説明したデータ構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
【０１６９】
なお、上で述べた情報処理装置１は、コンピュータ装置であって、図３５に示すように、メモリ２５０１とＣＰＵ（Central Processing Unit）２５０３とハードディスク・ドライブ（ＨＤＤ：Hard Disk Drive）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティング・システム（ＯＳ：Operating System）及び本実施例における処理を実施するためのアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。ＣＰＵ２５０３は、アプリケーション・プログラムの処理内容に応じて表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ２５０１に格納されるが、ＨＤＤ２５０５に格納されるようにしてもよい。本発明の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク２５１１に格納されて頒布され、ドライブ装置２５１３からＨＤＤ２５０５にインストールされる。インターネットなどのネットワーク及び通信制御部２５１７を経由して、ＨＤＤ２５０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【０１７０】
以上述べた本発明の実施の形態をまとめると、以下のようになる。
【０１７１】
本実施の形態に係る情報処理装置は、（Ａ）旧版の第１プログラム（例えばファームウエア）のコードに基づき、旧版の第１プログラムの構成及びインタフェースの少なくともいずれかについての情報を含む第１の情報を生成し、新版の第１プログラムのコードに基づき、新版の第１プログラムの構成及びインタフェースの少なくともいずれかについての情報を含む第２の情報を生成する第１生成部（例えばコンパイル部１０２）と、（Ｂ）第１生成部により生成された第１の情報と第２の情報とに差分が有るか否かに基づき、旧版の第１プログラムと新版の第１プログラムとの互換性についての情報を生成する第２生成部（例えば第１管理部１０５１及び第２管理部１０５２）とを有する。
【０１７２】
構成又はインタフェースが変わるとプログラムの実行時に異常（例えばハングアップ）が発生することがあるため、上で述べたようにすれば、互換性を確認できるようになる。
【０１７３】
また、旧版の第１プログラムのコードは、第１の情報を生成するためのコードを含み、新版の第１プログラムのコードは、第２の情報を生成するためのコードを含んでもよい。そして、第１生成部は、（ａ１）旧版の第１プログラムのコードをコンパイルすることで第１の情報を生成し、新版の第１プログラムのコードをコンパイルすることで第２の情報を生成してもよい。コンパイル時に生成されるので簡便に判定を行えるようになる。
【０１７４】
また、第１の情報は、旧版の第１プログラムの構造体の数、当該構造体の合計サイズ、当該構造体の各メンバのサイズおよびメンバの数についての情報を含み、第２の情報は、新版の第１プログラムの構造体の数、当該構造体の合計サイズ、当該構造体の各メンバのサイズおよびメンバの数についての情報を含んでもよい。構成の変更を適切に検出できるようになる。
【０１７５】
また、第１の情報は、旧版の第１プログラムのインタフェースの数、当該インタフェースの合計サイズ、当該インタフェースの各パラメタのサイズおよびパラメタの数についての情報を含み、第２の情報は、新版の第１プログラムのインタフェースの数、当該インタフェースの合計サイズ、当該インタフェースの各パラメタのサイズおよびパラメタの数についての情報を含んでもよい。インタフェースの変更を適切に検出できるようになる。
【０１７６】
また、第１生成部は、（ａ２）新版の第１プログラムのコードに基づき、新版の第１プログラムのインタフェースについての情報を含む第２の情報を生成し、（ａ２）新版の第２プログラムのコードに基づき、新版の第２プログラムのインタフェースについての情報を含む第３の情報を生成してもよい。そして、本情報処理装置は、（Ｃ）第２の情報と第３の情報とに差分が有るか否かに基づき、旧版から新版への更新の可否を表す情報を生成する第３生成部（例えば第３管理部１０５３）をさらに有してもよい。プログラム間のインタフェースが異なるとプログラム間の通信を行えなくなることがあるため、旧版から新版への更新を行うことができない。そこで、上で述べたようにすれば、新版のプログラム間のインタフェースの観点から更新の可否を判定できるようになる。
【０１７７】
また、第２の情報は、新版の第１プログラムのインタフェースの数、当該インタフェースの合計サイズ、当該インタフェースの各パラメタのサイズおよびパラメタの数についての情報を含み、第３の情報は、新版の第２プログラムのインタフェースの数、当該インタフェースの合計サイズ、当該インタフェースの各パラメタのサイズおよびパラメタの数についての情報を含んでもよい。インタフェースの変更を適切に検出できるようになる。
【０１７８】
本実施の形態の第２の態様に係る情報処理方法は、（Ｄ）旧版の第１プログラムのコードに基づき、旧版の第１プログラムの構成及びインタフェースの少なくともいずれかについての情報を含む第１の情報を生成し、（Ｅ）新版の第１プログラムのコードに基づき、新版の第１プログラムの構成及びインタフェースの少なくともいずれかについての情報を含む第２の情報を生成し、（Ｆ）生成された第１の情報と第２の情報とに差分が有るか否かに基づき、旧版の第１プログラムと新版の第１プログラムとの互換性についての情報を生成する処理を含む。
【０１７９】
なお、上記方法による処理をプロセッサに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
【０１８０】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１８１】
（付記１）
旧版の第１プログラムのコードに基づき、前記旧版の前記第１プログラムの構成及びインタフェースの少なくともいずれかについての情報を含む第１の情報を生成し、新版の前記第１プログラムのコードに基づき、前記新版の前記第１プログラムの構成及びインタフェースの少なくともいずれかについての情報を含む第２の情報を生成する第１生成部と、
前記第１生成部により生成された前記第１の情報と前記第２の情報とに差分が有るか否かに基づき、前記旧版の前記第１プログラムと前記新版の前記第１プログラムとの互換性についての情報を生成する第２生成部と、
を有する情報処理装置。
【０１８２】
（付記２）
前記旧版の前記第１プログラムのコードは、前記第１の情報を生成するためのコードを含み、前記新版の前記第１プログラムのコードは、前記第２の情報を生成するためのコードを含み、
前記第１生成部は、
前記旧版の前記第１プログラムのコードをコンパイルすることで前記第１の情報を生成し、前記新版の前記第１プログラムのコードをコンパイルすることで前記第２の情報を生成する、
付記１記載の情報処理装置。
【０１８３】
（付記３）
前記第１の情報は、前記旧版の前記第１プログラムの構造体の数、当該構造体の合計サイズ、当該構造体の各メンバのサイズおよびメンバの数についての情報を含み、前記第２の情報は、前記新版の前記第１プログラムの構造体の数、当該構造体の合計サイズ、当該構造体の各メンバのサイズおよびメンバの数についての情報を含む、
付記１又は２記載の情報処理装置。
【０１８４】
（付記４）
前記第１の情報は、前記旧版の前記第１プログラムのインタフェースの数、当該インタフェースの合計サイズ、当該インタフェースの各パラメタのサイズおよびパラメタの数についての情報を含み、前記第２の情報は、前記新版の前記第１プログラムのインタフェースの数、当該インタフェースの合計サイズ、当該インタフェースの各パラメタのサイズおよびパラメタの数についての情報を含む、
付記１又は２記載の情報処理装置。
【０１８５】
（付記５）
前記第１生成部は、
前記新版の前記第１プログラムのコードに基づき、前記新版の前記第１プログラムのインタフェースについての情報を含む前記第２の情報を生成し、
前記新版の第２プログラムのコードに基づき、前記新版の前記第２プログラムのインタフェースについての情報を含む第３の情報を生成し、
前記情報処理装置は、
前記第２の情報と前記第３の情報とに差分が有るか否かに基づき、前記旧版から前記新版への更新の可否を表す情報を生成する第３生成部
をさらに有する付記１記載の情報処理装置。
【０１８６】
（付記６）
前記第２の情報は、前記新版の前記第１プログラムのインタフェースの数、当該インタフェースの合計サイズ、当該インタフェースの各パラメタのサイズおよびパラメタの数についての情報を含み、前記第３の情報は、前記新版の前記第２プログラムのインタフェースの数、当該インタフェースの合計サイズ、当該インタフェースの各パラメタのサイズおよびパラメタの数についての情報を含む、
付記５記載の情報処理装置。
【０１８７】
（付記７）
コンピュータが、
旧版の第１プログラムのコードに基づき、前記旧版の前記第１プログラムの構成及びインタフェースの少なくともいずれかについての情報を含む第１の情報を生成し、
新版の前記第１プログラムのコードに基づき、前記新版の前記第１プログラムの構成及びインタフェースの少なくともいずれかについての情報を含む第２の情報を生成し、
生成された前記第１の情報と前記第２の情報とに差分が有るか否かに基づき、前記旧版の前記第１プログラムと前記新版の前記第１プログラムとの互換性についての情報を生成する、
処理を実行する情報処理方法。
【０１８８】
（付記８）
コンピュータに、
旧版の第１プログラムのコードに基づき、前記旧版の前記第１プログラムの構成及びインタフェースの少なくともいずれかについての情報を含む第１の情報を生成し、
新版の前記第１プログラムのコードに基づき、前記新版の前記第１プログラムの構成及びインタフェースの少なくともいずれかについての情報を含む第２の情報を生成し、
生成された前記第１の情報と前記第２の情報とに差分が有るか否かに基づき、前記旧版の前記第１プログラムと前記新版の前記第１プログラムとの互換性についての情報を生成する、
処理を実行させるプログラム。
【符号の説明】
【０１８９】
１  情報処理装置    ３  ファームウエア提供装置
５  ネットワーク
１０１  ファームウエア格納部    １０２  コンパイル部
１０３  オブジェクトコード格納部    １０４  管理データ格納部
１０５  管理部    １０５１  第１管理部
１０５２  第２管理部    １０５３  第３管理部
１０６  互換性データ格納部    １０７  統合部
１０８  統合ファームウエア格納部
【図１】
2018005857.tif 000003
【図２】
2018005857.tif 000004
【図３】
2018005857.tif 000005
【図４】
2018005857.tif 000006
【図５】
2018005857.tif 000007
【図６Ａ】
2018005857.tif 000008
【図６Ｂ】
2018005857.tif 000009
【図６Ｃ】
2018005857.tif 000010
【図６Ｄ】
2018005857.tif 000011
【図７Ａ】
2018005857.tif 000012
【図７Ｂ】
2018005857.tif 000013
【図７Ｃ】
2018005857.tif 000014
【図７Ｄ】
2018005857.tif 000015
【図８】
2018005857.tif 000016
【図９】
2018005857.tif 000017
【図１０】
2018005857.tif 000018
【図１１】
2018005857.tif 000019
【図１２】
2018005857.tif 000020
【図１３】
2018005857.tif 000021
【図１４】
2018005857.tif 000022
【図１５】
2018005857.tif 000023
【図１６Ａ】
2018005857.tif 000024
【図１６Ｂ】
2018005857.tif 000025
【図１７Ａ】
2018005857.tif 000026
【図１７Ｂ】
2018005857.tif 000027
【図１７Ｃ】
2018005857.tif 000028
【図１７Ｄ】
2018005857.tif 000029
【図１８Ａ】
2018005857.tif 000030
【図１８Ｂ】
2018005857.tif 000031
【図１９】
2018005857.tif 000032
【図２０】
2018005857.tif 000033
【図２１Ａ】
2018005857.tif 000034
【図２１Ｂ】
2018005857.tif 000035
【図２１Ｃ】
2018005857.tif 000036
【図２２Ａ】
2018005857.tif 000037
【図２２Ｂ】
2018005857.tif 000038
【図２２Ｃ】
2018005857.tif 000039
【図２３Ａ】
2018005857.tif 000040
【図２３Ｂ】
2018005857.tif 000041
【図２３Ｃ】
2018005857.tif 000042
【図２４Ａ】
2018005857.tif 000043
【図２４Ｂ】
2018005857.tif 000044
【図２４Ｃ】
2018005857.tif 000045
【図２５Ａ】
2018005857.tif 000046
【図２５Ｂ】
2018005857.tif 000047
【図２６Ａ】
2018005857.tif 000048
【図２６Ｂ】
2018005857.tif 000049
【図２７】
2018005857.tif 000050
【図２８Ａ】
2018005857.tif 000051
【図２８Ｂ】
2018005857.tif 000052
【図２８Ｃ】
2018005857.tif 000053
【図２９】
2018005857.tif 000054
【図３０】
2018005857.tif 000055
【図３１Ａ】
2018005857.tif 000056
【図３１Ｂ】
2018005857.tif 000057
【図３１Ｃ】
2018005857.tif 000058
【図３２Ａ】
2018005857.tif 000059
【図３２Ｂ】
2018005857.tif 000060
【図３２Ｃ】
2018005857.tif 000061
【図３３Ａ】
2018005857.tif 000062
【図３３Ｂ】
2018005857.tif 000063
【図３３Ｃ】
2018005857.tif 000064
【図３４Ａ】
2018005857.tif 000065
【図３４Ｂ】
2018005857.tif 000066
【図３４Ｃ】
2018005857.tif 000067
【図３５】
2018005857.tif 000068