(57)【要約】【課題】ソフトウェアにおける内部処理の検証を容易に実行できるようにする。【解決手段】情報処理装置シミュレータは、外部機器にインストールして用いられる開発対象ソフトウェアの、外部機器における動作環境を仮想的に提供する仮想環境を構築する。メモリ消費量測定ツールにより、仮想環境上でのメモリ消費量を測定することで、開発対象ソフトウェアの内部処理が適切であるか否かを判定する。仮想環境での開発対象ソフトウェアの追加、起動、動作中などの各状態に応じたメモリ消費量を測定し、測定されたメモリ消費量が各状態に対して予め決められたメモリ消費量以下である場合に、各状態での開発対象ソフトウェアの内部処理が適切であると判定する。【選択図】図３
2012103991.tif 000002
【特許請求の範囲】
【請求項１】
外部機器にインストールして用いられるソフトウェアの、該外部機器における動作環境を仮想的に提供する仮想環境を構築するシミュレート手段と、
前記仮想環境上でのメモリ消費量を測定し、測定された該メモリ消費量に基づき前記ソフトウェアの内部処理が適切であるか否かを判定する判定手段と
を備え、
前記判定手段は、
前記仮想環境における前記ソフトウェアの所定の状態での前記メモリ消費量を測定し、測定された該メモリ消費量が該所定の状態に応じて予め決められた規定メモリ消費量以下である場合に、該ソフトウェアの内部処理が適切であると判定する
ことを特徴とする検査装置。
【請求項２】
前記所定の状態は、前記ソフトウェアの、前記仮想環境に対する追加の状態と、前記仮想環境上での起動の状態と、前記仮想環境上での動作中とのうち少なくとも１つの状態である
ことを特徴とする請求項１に記載の検査装置。
【請求項３】
前記判定手段は、
前記ソフトウェアが前記仮想環境上において動作中に前記メモリ消費量を複数回測定し、測定された複数の前記メモリ消費量のうち最大のメモリ消費量が前記予め決められたメモリ消費量以下である場合に、該ソフトウェアの内部処理が適切であると判定する
ことを特徴とする請求項１または請求項２に記載の検査装置。
【請求項４】
前記シミュレート手段から前記ソフトウェアに対して実行要求を出し、該実行要求に応じて該ソフトウェアが該シミュレート手段に機能を実行させる場合の、該ソフトウェアの実行中の前記メモリ消費量を測定する
ことを特徴とする請求項２または請求項３に記載の検査装置。
【請求項５】
前記シミュレート手段は、前記外部機器が持つ機能を実行させる第１のインターフェイスを前記仮想環境上で実現する第２のインターフェイスを持ち、
前記判定手段は、
実行要求を受け付けて前記ソフトウェアが前記第２のインターフェイスを介して前記シミュレート手段に機能を実行させる場合の、該ソフトウェアの実行中の前記メモリ消費量を測定し、測定された該メモリ消費量に基づき前記判定を行い、
前記シミュレート手段に機能を実行させる際に該ソフトウェアに対して予め決められた該第２のインターフェイスを利用している場合に、該判定が妥当であると判定する
ことを特徴とする請求項２または請求項３に記載の検査装置。
【請求項６】
前記シミュレート手段は、
前記ソフトウェアから要求された動的メモリ確保を前記判定手段に通知し、
前記判定手段は、
前記シミュレート手段からの前記動的メモリ確保の通知に応じて前記メモリ消費量の測定を行う
ことを特徴とする請求項１乃至請求項５の何れか１項に記載の検査装置。
【請求項７】
前記判定手段は、
前記ソフトウェアの前記仮想環境上での動作中の前記メモリ消費量を測定し、測定された該メモリ消費量が、前記外部機器が機能のために使用可能な全メモリ容量と、前記外部機器が予め備える全ての標準機能が動作した場合のメモリ消費量との差分以下である場合に、該ソフトウェアの内部処理が適切であると判定する
ことを特徴とする請求項１乃至請求項６の何れか１項に記載の検査装置。
【請求項８】
前記ソフトウェアは、前記外部機器が予め備える標準機能のうち、該ソフトウェアと同時使用される標準機能を示す情報を含み、
前記判定手段は、
前記ソフトウェアの前記仮想環境上での動作中の前記メモリ消費量を測定し、測定された該メモリ消費量が、前記外部機器が機能のために使用可能な全メモリ容量と、前記同時使用される標準機能の動作中のメモリ消費量との差分以下である場合に、該ソフトウェアの内部処理が適切であると判定する
ことを特徴とする請求項１乃至請求項７の何れか１項に記載の検査装置。
【請求項９】
前記判定手段は、
前記仮想環境上での前記ソフトウェアの前記所定の状態での前記メモリ消費量を、前記外部機器の前記動作環境が備えるメモリの種類毎に測定し、測定された該メモリ消費量に基づき、該メモリの種類毎に該ソフトウェアの内部処理が適切であるか否かを判定する
ことを特徴とする請求項１乃至請求項８の何れか１項に記載の検査装置。
【請求項１０】
シミュレート手段が、外部機器にインストールして用いられるソフトウェアの、該外部機器における動作環境を仮想的に提供する仮想環境を構築するシミュレートステップと、
判定手段が、前記仮想環境上でのメモリ消費量を測定し、測定された該メモリ消費量に基づき前記ソフトウェアの内部処理が適切であるか否かを判定する判定ステップと
を備え、
前記判定ステップは、
前記仮想環境における前記ソフトウェアの所定の状態での前記メモリ消費量を測定し、測定された該メモリ消費量が該所定の状態に応じて予め決められた規定メモリ消費量以下である場合に、該ソフトウェアの内部処理が適切であると判定する
ことを特徴とする検査方法。
【請求項１１】
外部機器にインストールして用いられるソフトウェアの、該外部機器における動作環境を仮想的に提供する仮想環境を構築するシミュレートステップと、
前記仮想環境上でのメモリ消費量を測定し、測定された該メモリ消費量に基づき前記ソフトウェアの内部処理が適切であるか否かを判定する判定ステップと
を備え、
前記判定ステップは、
前記仮想環境における前記ソフトウェアの所定の状態での前記メモリ消費量を測定し、測定された該メモリ消費量が該所定の状態に応じて予め決められた規定メモリ消費量以下である場合に、該ソフトウェアの内部処理が適切であると判定する検査方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアの検査を行う検査装置、検査方法およびプログラムに関する。
【背景技術】
【０００２】
近年、特定の機能を実現する情報処理装置への顧客による多様な要望に応えるために、機能の追加、拡張および修正や、新たなサービスやアプリケーションを追加するためのソフトウェア（以下、機能拡張ソフトウェアと呼ぶ）を、当該情報処理装置に搭載することが行われている。また、このような機能拡張ソフトウェアの開発を容易とするために、専用のソフトウェア開発キット（ＳＤＫ）が用意されている。
【０００３】
従来では、このような機能拡張ソフトウェアの開発は、当該情報処理装置の開発元においてのみ、行われていた。これに対して、ソフトウェア開発キットを外部開発者（３ｒｄベンダ）に提供することで、各外部開発者による機能拡張ソフトウェアの開発が可能になる。これにより、当該情報処理装置のユーザと近い距離で機能拡張ソフトウェアを開発することが可能になり、ユーザの要望を素早く正確に把握することができ、より有用な機能拡張ソフトウェアの迅速な提供が可能となる。また、多数の外部開発者が機能拡張ソフトウェアの開発に参加することで、短期間で大量の機能拡張ソフトウェアを開発することが可能となると共に、よりきめ細かな機能を有する機能拡張ソフトウェアを提供することが可能となる。
【０００４】
ところで、多数の外部開発者が機能拡張ソフトウェアの開発に携わることが可能となったことで、開発された機能拡張ソフトウェアの品質のバラツキが大きくなってしまうという問題も生じている。そのため、外部開発者によって開発された機能拡張ソフトウェアの検査を行う必要がある。
【０００５】
この機能拡張ソフトウェアの検査については、様々な方法が提案および実用化されている。例えば、特許文献１では、ＡＰ(Application  Program)送信装置の使用ＡＰＩ(Application  Programming  Interface)抽出手段が、ソースコードで使用されるＡＰＩ（使用ＡＰＩ）に関する情報を抽出し、開発元毎に異なる種類の解析を行う技術が記載されている。特許文献１において、使用ＡＰＩの正当性のチェック機能では、使用ＡＰＩ集合と使用許可ＡＰＩ集合とを比較して、使用ＡＰＩの正当性を検証している。
【０００６】
また、特許文献２では、追加したデータが悪影響を与える可能性があるか否かを、当該データによる文字列の長さがバッファ領域を超えているか否かで判断する技術が記載されている。すなわち、文字列の長さは、ＡＰＩにより予め決められており、追加したデータによる文字列の長さがこの予め決められた長さを超えている場合、当該データがバッファ領域からはみ出して意図しない動作を引き起こしてしまう可能性がある。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上述した特許文献１および特許文献２は、共に、検証対象のソフトウェアが予め規定したＡＰＩに従い動作しているか否かを検証するものである。すなわち、これら特許文献１および特許文献２は、ソフトウェアのインターフェイスすなわち外部仕様の正当性を検証するものであって、ソフトウェアの内部処理に関する正当性は、検証していないという問題点があった。
【０００８】
ここで、ソフトウェアの内部処理の一つとして、ソフトウェアによるメモリの利用方法がある。この場合、ソフトウェアの内部処理の正当性の検証とは、メモリがソフトウェアに適切に利用されているか否かを検証するものとなる。すなわち、メモリがソフトウェアに適切に利用されておらず、ソフトウェアが不正なメモリアクセスを行うことで、メモリ領域の枯渇や、意図しないメモリの書き換えが発生してしまうおそれがある。この場合、システムが動作しなくなったり、システムデータの破壊により復旧不可能な状況が生じる可能性が大きい。
【０００９】
機能拡張ソフトウェアの内部処理に関する正当性を、当該機能拡張ソフトウェアが搭載される情報処理装置の開発元などで一括して検証することも考えられる。しかしながら、この場合、情報処理装置の開発元は、複数の外部開発者によって開発された複数の機能拡張ソフトウェアそれぞれに対して検証を行わなければならず、検証に多大な時間を要するという問題点があった。
【００１０】
また、外部開発者が、自ら開発した機能拡張ソフトウェアの内部処理に関する正当性を検証することも考えられる。しかしながら、この場合には、外部開発者が機能拡張ソフトウェアが搭載される情報処理装置を必ずしも所有しているとは限らず、また、当該情報処理装置における当該機能拡張ソフトウェアに関連する全ての機能を再現する環境を、外部開発者側で構築するのは手間がかかるため、正確な検証が困難であるという問題点があった。
【００１１】
本発明は、上記に鑑みてなされたものであって、ソフトウェアにおける内部処理の検証を容易に実行できるようにすることを目的とする。
【課題を解決するための手段】
【００１２】
上述した課題を解決し、目的を達成するために、本発明は、外部機器にインストールして用いられるソフトウェアの、外部機器における動作環境を仮想的に提供する仮想環境を構築するシミュレート手段と、仮想環境上でのメモリ消費量を測定し、測定されたメモリ消費量に基づきソフトウェアの内部処理が適切であるか否かを判定する判定手段とを備え、判定手段は、仮想環境におけるソフトウェアの所定の状態でのメモリ消費量を測定し、測定されたメモリ消費量が所定の状態に応じて予め決められた規定メモリ消費量以下である場合に、ソフトウェアの内部処理が適切であると判定することを特徴とする。
【００１３】
また、本発明は、シミュレート手段が、外部機器にインストールして用いられるソフトウェアの、外部機器における動作環境を仮想的に提供する仮想環境を構築するシミュレートステップと、判定手段が、仮想環境上でのメモリ消費量を測定し、測定されたメモリ消費量に基づきソフトウェアの内部処理が適切であるか否かを判定する判定ステップとを備え、判定ステップは、仮想環境におけるソフトウェアの所定の状態でのメモリ消費量を測定し、測定されたメモリ消費量が所定の状態に応じて予め決められた規定メモリ消費量以下である場合に、ソフトウェアの内部処理が適切であると判定することを特徴とする。
【００１４】
また、本発明は、外部機器にインストールして用いられるソフトウェアの、外部機器における動作環境を仮想的に提供する仮想環境を構築するシミュレートステップと、仮想環境上でのメモリ消費量を測定し、測定されたメモリ消費量に基づきソフトウェアの内部処理が適切であるか否かを判定する判定ステップとを備え、判定ステップは、仮想環境におけるソフトウェアの所定の状態でのメモリ消費量を測定し、測定されたメモリ消費量が所定の状態に応じて予め決められた規定メモリ消費量以下である場合に、ソフトウェアの内部処理が適切であると判定する検査方法をコンピュータに実行させるためのプログラムである。
【発明の効果】
【００１５】
本発明によれば、ソフトウェアにおける内部処理の検証を容易に実行できるという効果を奏する。
【図面の簡単な説明】
【００１６】
【図１】図１は、ソフトウェア開発キットを用いて開発した機能拡張ソフトウェアのライフサイクルを概念的に示す略線図である。
【図２】図２は、本発明の実施形態によるソフトウェア開発キットの機能を説明するための一例の機能ブロック図である。
【図３】図３は、本発明の実施形態に適用可能な一例のアーキテクチャ図である。
【図４】図４は、情報処理装置シミュレータの機能について説明するためのアーキテクチャ図である。
【図５】図５は、ＯＳ上に仮想システムを構築した場合の、一例のアーキテクチャ図である。
【図６】図６は、汎用ＰＣの一例の構成を示すブロック図である。
【図７】図７は、測定条件テーブルの一例を示す略線図である。
【図８】図８は、追加時における検証処理を示す一例のシーケンス図である。
【図９】図９は、情報処理装置シミュレータがメモリ上に確保する固定メモリ領域の例を示す略線図である。
【図１０】図１０は、仮想領域に対して開発対象ソフトウェアがインストールされた状態を模式的に示す略線図である。
【図１１】図１１は、起動時における検証処理を示す一例のシーケンス図である。
【図１２】図１２は、仮想領域上に開発対象ソフトウェアが展開されると共に、動的メモリ領域が確保された状態の例を示す略線図である。
【図１３】図１３は、動作開始トリガが情報処理シミュレータから与えられる場合の内部処理の検証処理を示す一例のシーケンス図である。
【図１４】図１４は、動作中の開発対象ソフトウェアにより動的メモリ領域が確保された状態の例を示す略線図である。
【図１５】図１５は、動作開始トリガが当該開発対象ソフトウェアのＵＩから与えられる場合の内部処理の検証処理を示す一例のシーケンス図である。
【図１６】図１６は、ＡＰＩ利用ログ記録ツールにより記録されるＡＰＩ利用ログの一例を示す略線図である。
【図１７】図１７は、インストール対象となる情報処理装置の種類に応じたＡＰＩについて説明するための略線図である。
【図１８】図１８は、測定条件テーブルの一例を示す略線図である。
【図１９】図１９は、本発明の実施形態の第１の変形例における検証処理を示す一例のシーケンス図である。
【図２０】図２０は、最大値テーブルの例を示す略線図である。
【図２１】図２１は、測定条件テーブルの一例を示す略線図である。
【図２２】図２２は、本発明の実施形態の第３の変形例による検証処理を示す一例のシーケンス図である。
【図２３】図２３は、同時利用プロパティの例を示す略線図である。
【図２４】図２４は、インストール先の情報処理装置が２つのメモリを持つ場合の測定条件テーブルの例を示す略線図である。
【図２５】図２５は、本発明の実施形態の第４の変形例における検証処理の一例のシーケンス図である。
【図２６】図２６は、メモリに２つの仮想領域を作成する例を示す略線図である。
【図２７】図２７は、メモリの２つの仮想領域それぞれに動的メモリ領域が確保されたことを示す略線図である。
【発明を実施するための形態】
【００１７】
以下に添付図面を参照して、本発明に係るソフトウェア検査装置の一実施形態を詳細に説明する。先ず、理解を容易とするために、情報処理装置に対して機能の追加や拡張、修正を行うソフトウェアと、当該機能拡張ソフトウェアの開発環境について説明する。以下では、機能の追加や拡張、修正を行うソフトウェアを、機能拡張ソフトウェアと呼ぶ。なお、ここでいう情報処理装置は、例えばプリンタ装置や映像投影装置、コピー機、さらには、プリンタ機能やスキャナ機能、ＦＡＸ機能などを１台の筐体で実現できるようにした複合機（ＭＦＰ）といった、特定の情報処理を実行するための装置であるものとする。
【００１８】
例えば情報処理装置の製造販売などを行うメーカは、外部の開発者（３ｒｄベンダ）に対し、当該機能拡張ソフトウェアを開発する開発環境を構築するための１または複数のプログラムを含むソフトウェア開発キット（ＳＤＫ：Software  Development  Kit）を提供する。外部開発者（以下、ユーザと呼ぶ）は、このソフトウェア開発キットを例えば汎用のパーソナルコンピュータ（以下、汎用ＰＣと呼ぶ）にインストールし、当該汎用ＰＣ上で機能拡張ソフトウェアの開発を行う。
【００１９】
図１は、このソフトウェア開発キットを用いて開発した機能拡張ソフトウェアのライフサイクルを概念的に示す。情報処理装置のメーカは、複数のソフトウェアやライブラリなどを含むソフトウェア開発キット１０を、ＣＤ(Compact  Disk)やＤＶＤ(Digital  Versatile  Disk)、フレキシブルディスク、脱着可能な不揮発性の半導体メモリといった記録媒体に格納して、ユーザに提供する。これに限らず、ソフトウェア開発キット１０を、インターネットなどのネットワークを介して外部開発者に提供してもよい。
【００２０】
ユーザは、提供されたソフトウェア開発キット１０に含まれる各プログラムを、汎用ＰＣ１１にインストールし、当該汎用ＰＣ１１上でソフトウェア開発キット１０に含まれるプログラムを用いて開発対象の機能拡張ソフトウェア１２の開発を行う。開発した機能拡張ソフトウェア１２は、記録媒体やネットワークを介して情報処理装置１３に供給される。これに限らず、開発した機能拡張ソフトウェア１２をネットワークを介してソフト提供用サーバ１４に供給し、このソフト提供用サーバ１４から情報処理装置１３に対して当該機能拡張ソフトウェア１２を配信するようにしてもよい。
【００２１】
情報処理装置１３に供給された機能拡張ソフトウェア１２は、当該情報処理装置１３にインストールされる。例えば、機能拡張ソフトウェア１２は、当該情報処理装置１３が有するＲＯＭ(Read  Only  Memory)またはＨＤＤ（ハードディスクドライブ）に所定の形態で格納されることで、当該情報処理装置１３に対してインストールされる。
【００２２】
機能拡張ソフトウェア１２は、インストールされた情報処理装置１３上で実行され、所定の機能を実現する。例えば、機能拡張ソフトウェア１２は、情報処理装置１３のＲＯＭから読み出され、当該情報処理装置１３が有するＲＡＭ(Random  Access  Memory)上に展開される。そして、当該情報処理装置１３の全体の動作を制御するＣＰＵ(Central  Processing  Unit)がＲＡＭ上に展開された機能拡張ソフトウェア１２を読み込み実行することで、情報処理装置１３上で機能拡張ソフトウェア１２の機能が実現される。
【００２３】
上述のように、ユーザの汎用ＰＣ１１上で開発された機能拡張ソフトウェア１２は、一般的には、当該汎用ＰＣ１１とは異なる実行環境を有する情報処理装置１３上で実行される。そのため、外部開発者は、汎用ＰＣ１１上で情報処理装置１３の環境をシミュレート可能な手段を用いて、開発した機能拡張ソフトウェア１２が情報処理装置１３で正常に動作するか否かの検査を行うことが好ましい。この、開発した機能拡張ソフトウェア１２の検査を行う検査ソフトウェアは、例えば、ソフトウェア開発キット１０に同梱されてユーザに提供される。
【００２４】
（本発明の実施形態による構成）
図２は、本発明の実施形態によるソフトウェア開発キット１０の機能を説明するための一例の機能ブロック図である。汎用ＰＣ１１は、ＣＰＵ１３１およびメモリ１２０を有し、ホストＯＳ(Operating  System)１３２がメモリ１２０に読み込まれ、ＣＰＵ１３１によって動作される。このホストＯＳ１３２上で、他の様々なソフトウェアが動作する。
【００２５】
ソフトウェア開発キット１０は、情報処理装置シミュレータ１００、メモリ消費量測定ツール１０１およびＡＰＩ利用ログ記録ツール１０２の各プログラムを含むと共に、ＡＰＩ操作用ライブラリ１１０と、開発対象ソフトウェア２０のソースコードを記述するために用いるソースコードエディタ１１１とを含む。これら情報処理装置シミュレータ１００、メモリ消費量測定ツール１０１およびＡＰＩ利用ログ記録ツール１０２は、メモリ１２０に読み込まれ、図３のアーキテクチャ図に例示されるように、ホストＯＳ１３２を介してＣＰＵ１３１によって動作される。
【００２６】
情報処理装置シミュレータ１００は、情報処理装置１３のプラットフォーム上で動作するプラットフォームソフトウェアが提供する様々な機能やサービスを仮想的に再現する仮想環境を、汎用ＰＣ１１上に構築する。例えば、情報処理装置シミュレータ１００は、情報処理装置１３のプラットフォームから機能拡張ソフトウェア１２に対してなされる指示などを、開発対象ソフトウェア２０に対して仮想的に行う。また例えば、情報処理装置シミュレータ１００は、開発対象ソフトウェア２０からの、情報処理装置１３のプラットフォームソフトウェアの利用要求に対して、当該プラットフォームソフトウェアの機能を利用するためのＡＰＩ(Application  Programming  Interface)を開発対象ソフトウェア２０に対して提供する。
【００２７】
なお、開発対象ソフトウェア２０は、情報処理装置１３に対して機能拡張ソフトウェア１２としてインストールされるものであって、機能拡張ソフトウェア１２と開発対象ソフトウェア２０とは同等なものである。以降、特に記載のない限り、機能拡張ソフトウェア１２および開発対象ソフトウェア２０を、開発対象ソフトウェア２０で代表させて説明を行う。
【００２８】
メモリ消費量測定ツール１０１は、汎用ＰＣ１１のメモリ１２０のメモリ消費量（メモリ使用量）を測定する。そして、測定されたメモリ消費量に基づき、メモリ１２０が適切に消費されているか否かを判定する。本実施形態では、メモリ消費量測定ツール１０１は、開発対象ソフトウェア２０の状態に応じてメモリ１２０におけるメモリ消費量を測定する。ある状態においてメモリ消費量が適切であると判定した場合、その状態での開発対象ソフトウェア２０の内部処理が適切であると判断することができる。
【００２９】
ＡＰＩ利用ログ記録ツール１０２は、情報処理装置シミュレータ１００が開発対象ソフトウェア２０に対して提供するＡＰＩ（サービス）が実行された場合に、その旨をログとして記録し、記録されたＡＰＩ利用ログ情報を出力する。
【００３０】
ＡＰＩ操作用ライブラリ１１０は、開発対象ソフトウェア２０が情報処理装置シミュレータ１００と通信を行うための外部インターフェイスであるＡＰＩを提供するＡＰＩ提供ライブラリである。このＡＰＩ操作用ライブラリ１１０に提供されるＡＰＩは、ホストＯＳ１３２における標準ライブラリを含むと共に、情報処理装置１３のプラットフォームが情報処理装置１３にインストールされるソフトウェアに提供するＡＰＩを含む。開発対象ソフトウェア２０の開発に際して、このＡＰＩ操作用ライブラリ１１０により提供されるＡＰＩを利用することができる。なお、ＡＰＩ操作用ライブラリ１１０は、ソフトウェア開発キット１０において利用される機能によっては、用いられない場合もあり、必須の構成ではない。
【００３１】
ソースコードエディタ１１１は、開発対象ソフトウェア２０のソースコードの記述および編集するツールである。ソースコードエディタ１１１は、必ずしもソフトウェア開発キット１０に含まれている必要はなく、別途用意したエディタを用いてもよい。
【００３２】
図４は、情報処理装置シミュレータ１００の機能について説明するためのアーキテクチャ図である。情報処理装置シミュレータ１００は、開発対象ソフトウェア２０に対するプラットフォームソフトウェアとして機能し、開発対象ソフトウェア２０との間で通信を行い当該開発対象ソフトウェア２０の追加、起動および動作を制御すると共に、当該開発対象ソフトウェア２０に対して所定のサービスを提供する。
【００３３】
なお、開発対象ソフトウェア２０の状態とは、例えば、開発対象ソフトウェア２０のシステムへの追加（インストール）、起動および動作のそれぞれをいう。
【００３４】
情報処理装置シミュレータ１００は、ソフトウェア起動機能１００ａ、機器状態通知機能１００ｂ、ソフトウェア追加機能１００ｃおよびメモリ管理機能１００ｄを有する。また、図４の例では、情報処理装置シミュレータ１００は、情報処理装置１３として複合機またはコピー機をシミュレートするものとされ、所定のサービスとして原稿読み取りサービス１１５ａおよび印刷サービス１１５ｂを含む。
【００３５】
情報処理装置シミュレータ１００は、開発対象ソフトウェア２０と通信を行って、当該開発対象ソフトウェア２０に対して様々な指示や情報を与える。例えば、情報処理装置シミュレータ１００のソフトウェア追加機能１００ｃは、開発対象ソフトウェア２０をシステムに追加（インストール）させる。ソフトウェア起動機能１００ａは、システムに追加された開発対象ソフトウェア２０を起動させる。機器状態通知機能１００ｂは、情報処理装置１３の状態をシミュレートする。シミュレートされた状態を示す情報は、例えば開発対象ソフトウェア２０に通知される。また、メモリ管理機能１００ｄは、メモリ領域の管理を行う。
【００３６】
情報処理装置シミュレータ１００は、例えば、情報処理装置１３において提供される各サービス（図４の例では原稿読み取りサービス１１５ａおよび印刷サービス１１５ｂ）のＡＰＩを備える。情報処理装置シミュレータ１００は、開発対象ソフトウェア２０からサービスの利用がＡＰＩを介して要求されると、要求に応じて、対応するライブラリをＡＰＩ操作用ライブラリ１１０から読み出して実行する。
【００３７】
本発明の実施形態では、汎用ＰＣ１１のＯＳ１３２上に仮想システムを構築し、この仮想システムによって、情報処理装置シミュレータ１００による、情報処理装置１３におけるソフトウェア動作環境の汎用ＰＣ１１上でのシミュレートを行っている。
【００３８】
図５は、ＯＳ１３２上に仮想システム１５０を構築した場合の、一例のアーキテクチャ図を示す。仮想システム１５０は、例えば汎用ソフトウェア１６０1、１６０2、１６０3と同様に、ＯＳ１３２上で動作する。仮想システム１５０は、メモリ１２０上に専用のメモリ領域１２２を確保すると共に、ＯＳ１３２に対するゲストＯＳ（図示しない）を導入する。仮想システム１５０は、メモリ１２０上に確保したメモリ領域１２２を、自身の物理メモリとして認識する。ＯＳ１３２は、メモリ１２０上の、仮想システム１５０専用のメモリ領域１２２以外の領域１２１を利用する。以下では、メモリ領域１２２を仮想領域１２２と呼び、領域１２１を実領域１２１と呼ぶ。
【００３９】
情報処理装置シミュレータ１００、メモリ消費量測定ツール１０１およびＡＰＩ利用ログ記録ツール１０２、ならびに、開発対象ソフトウェア２０は、それぞれ仮想システム１５０のゲストＯＳ上で、仮想領域１２２を利用して動作する。仮想領域１２２は、仮想システム１５０の専用領域であるため、ＯＳ１３２上で動作する汎用ソフトウェア１６０1、１６０2、１６０3の動作による実領域１２１のメモリ消費の影響を受けない。そのため、仮想システム１５０上で追加、起動および動作される開発対象ソフトウェア２０の各状態におけるメモリ消費量を正確に測定することが可能である。
【００４０】
このような仮想システム１５０を構築可能なソフトウェアとしてはＶＭｗａｒｅ（登録商標）がある。
【００４１】
図６は、汎用ＰＣ１１の一例の構成を示す。図６において、バス３００に対してＣＰＵ３１０、ＲＡＭ３１１、ＲＯＭ３１２、表示制御部３１３および通信Ｉ／Ｆ（インターフェイス）３１４が接続される。また、バス３００に対して、ＨＤＤ３１５、ドライブ装置３１６および入力Ｉ／Ｆ３１７が接続される。なお、ＣＰＵ３１０およびＲＡＭ３１１は、それぞれ図２におけるＣＰＵ１３１およびメモリ１２０に対応する。
【００４２】
ＣＰＵ３１０は、ＲＯＭ３１２やＨＤＤ３１５に記憶されるプログラムに従い、ＲＡＭ３１１をワークメモリとして用いて、このコンピュータにおける動作を制御する。表示制御部３１３は、ＣＰＵ３１０により生成された表示制御信号を、表示装置３２０が表示可能な信号に変換して出力する。
【００４３】
ＨＤＤ３１５は、ホストＯＳ１３２や、ＣＰＵ３１０が実行するためのプログラム、プログラムによって用いられるデータなどが格納される。ドライブ装置３１６は、脱着可能な記録媒体３２１が装填可能とされ、当該記録媒体３２１に対するデータの読み書きを行うことができる。ドライブ装置３１６が対応可能な記録媒体３２１としては、ＣＤ(Compact  Disk)、ＤＶＤ(Digital  Versatile  Disk)、フレキシブルディスクといったディスク記録媒体や、読み書き可能で不揮発性の半導体メモリが考えられる。
【００４４】
入力Ｉ／Ｆ３１７は、外部からのデータの入力を行う。例えば、入力Ｉ／Ｆ３１７は、ＵＳＢ(Universal  Serial  Bus)やＩＥＥＥ１３９４(Institute  of  Electrical  and  Electronics  Engineers  1394)といった所定のインターフェイスを有し、このインターフェイスにより外部の機器からのデータ入力を行う。また、入力Ｉ／Ｆ３１７に対して、キーボード３２２やマウス３２３といった入力デバイスが接続される。ユーザは、例えば表示装置３２０に対する表示に応じてこれら入力デバイスを操作することで、このコンピュータに対して指示を出すことができる。
【００４５】
通信Ｉ／Ｆ３１４は、所定のプロトコルを用いて外部の通信ネットワークと通信を行う。
【００４６】
ソフトウェア開発キット１０は、例えばディスク記録媒体に記録されて提供され、ドライブ装置３１６により当該ディスク記録媒体から読み出されてＨＤＤ３１５に所定に格納され、汎用ＰＣ１１に対してインストールされる。ユーザは、ソフトウェア開発キット１０に含まれるソースコードエディタ１１１を起動させ、キーボード３２２やマウス３２３などによりソースコードの入力や編集を行い、開発対象ソフトウェア２０の開発を行う。開発された開発対象ソフトウェア２０は、例えばＨＤＤ３１５に格納される。
【００４７】
開発対象ソフトウェア２０の品質検査を行う場合には、ユーザは、例えばＨＤＤ３１５に格納されたソフトウェア開発キット１０からメモリ消費量測定ツール１０１を起動させる。ユーザが、例えばメモリ消費量測定ツール１０１に対して品質検査の開始を指示すると、メモリ消費量測定ツール１０１は、情報処理装置シミュレータ１００を起動させる。以下、後述する各処理に従い開発対象ソフトウェア２０の品質検査が実行され、内部処理の検証が行われる。開発対象ソフトウェア２０は、例えば品質検査の結果、問題無いとされた場合、上述した機能拡張ソフトウェア１２として提供されることになる。
【００４８】
（実施形態による処理の詳細）
次に、本発明の一実施形態によるソフトの内部処理の検証について、より詳細に説明する。内部処理の検証は、開発対象ソフトウェア２０の各状態におけるメモリ消費量を測定し、測定されたメモリ消費量が各状態に対して予め決められた規定値以下である場合に、各状態における内部処理が適切であると判定する。なお、ソフトウェアの各状態とは、上述したように、例えば、ソフトウェアの追加（インストール）、起動および動作をいう。
【００４９】
開発対象ソフトウェア２０の各状態におけるメモリ消費量の規定値は、図７に例示されるような測定条件テーブルとして、メモリ消費量測定ツール１０１が保持している。
【００５０】
図７において、測定タイミングは、開発対象ソフトウェア２０の各状態にそれぞれ対応する。すなわち、ソフトウェア追加時および起動時は、それぞれ開発対象ソフトウェア２０のインストール時および起動時である。ソフトウェア動作中は、開発対象ソフトウェア２０の動作中であって、プラットフォーム（情報処理シミュレータ１００）側からの動作開始トリガにより開始された動作と、外部からの指示などによる開発対象ソフトウェア２０側の動作開始トリガにより開始された動作とがある。なお、開発対象ソフトウェア２０側の動作開始トリガでは、プラットフォーム側から提供されるＡＰＩが用いられる。
【００５１】
測定条件は、メモリ消費量の測定を行う条件を示す。図７の例では、ソフトウェア追加時においてはソフトウェアの追加の完了、ソフトウェア起動時においてはソフトの起動の完了が、それぞれメモリ消費量の測定を行う条件として記述される。ソフトウェア動作中においては、開始トリガの供給元に関わらず、一定間隔（図７の例では５秒間隔）でメモリ消費量の測定を行うことが記述される。
【００５２】
規定値は、各測定タイミングにおいて測定条件を満たして測定されたメモリ消費量の最大値、すなわち、許容されるべきメモリ消費量の上限値が記述される。図７の例では、ソフトウェア追加時に測定する測定モードでは規定値が５０ｋＢ（キロバイト）、起動時に測定する測定モードでは規定値が１００ｋＢとされている。また、動作中に測定する測定モードでは、開始トリガの供給元に関わらず規定値が５００ｋＢとされている。
【００５３】
動作ログ対象ＡＰＩは、ＡＰＩ利用ログ記録ツール１０２が取得対象とするＡＰＩの種類が記述される。図７の例では、測定モードがソフトウェア追加時および起動時である場合、ならびに、動作中における開始トリガが情報処理装置シミュレータ１００側から与えられるモードである場合に、対象ＡＰＩ無し、すなわちＡＰＩ利用ログを取得しないとされる。一方、測定モードが動作中における開始トリガが開発対象ソフトウェア２０の外部から与えられるモードである場合に、当該開発対象ソフトウェア２０が使用したサービス（ＡＰＩ）のログを取得するとされる。図７の例では、原稿読み取りのＡＰＩおよび印刷のＡＰＩをログ取得対象としている。
【００５４】
動作実行数は、開発対象ソフトウェア２０に対して同じ測定を繰り返して行う回数が記述される。図７の例では、測定モードがソフトウェア追加時である場合には、繰り返し無し、その他の測定モードの場合には、１０回繰り返し測定を行う旨が記述されている。測定の実行毎にメモリの消費量に変動が生じる可能性のある測定モードにおいては、複数回の測定を行って測定結果の妥当性を判断することが好ましい。
【００５５】
（追加時の検証処理）
先ず、追加時における内部処理の検証について、図８のシーケンス図を用いて説明する。追加時の検証処理は、開発対象ソフトウェア２０を仮想システム１５０にインストールした時点でのメモリ消費量を測定する。なお、以下では、メモリ消費量測定ツール１０１が情報処理装置シミュレータ１００を起動させるものとして説明を行う。これに限らず、情報処理装置シミュレータ１００をユーザ操作などにより直接的に起動させてもよい。
【００５６】
例えば、メモリ消費量測定ツール１０１は、ＵＩ(User  Interface)を有し、ＵＩに対するユーザ入力に応じて、情報処理装置シミュレータ１００の起動処理や、情報処理装置シミュレータ１００に対する様々な要求などを行う。また、検証対象である開発対象ソフトウェア２０は、例えばＨＤＤ３１５に格納されているものとする。
【００５７】
図８において、メモリ消費量測定ツール１０１に対して、開発対象ソフトウェア２０の追加時におけるメモリ消費量測定の開始が指示される（ステップＳ１０）。この指示に応じて、メモリ消費量測定ツール１０１は、情報処理装置シミュレータ１００を起動させる（ＳＥＱ１００）。情報処理装置シミュレータ１００は、起動すると、仮想領域１２２上に情報処理装置シミュレータ１００自身が動作するために必要な固定メモリ領域を確保する（ＳＥＱ１０１）。
【００５８】
図９に、情報処理装置シミュレータ１００がメモリ１２０上に確保する固定メモリ領域１００ａの例を示す。情報処理装置シミュレータ１００は、仮想領域１２２に対して固定メモリ領域１００ａを確保する。なお、実際には、仮想領域１２２には、メモリ消費量測定ツール１０１が動作するため必要な領域も確保されている（図示は省略する）。
【００５９】
なお、ここでは、仮想領域１２２の全体を１つの領域として扱っているが、これはこの例に限られず、例えば仮想領域１２２に対して、例えば情報処理装置１３のＲＯＭおよびＲＡＭにそれぞれ対応するＲＯＭ領域およびＲＡＭ領域を割り当てるようにしてもよい。この場合、固定メモリ領域１００ａは、ＲＯＭ領域に割り当てることができる。
【００６０】
情報処理装置シミュレータ１００は、固定メモリ領域１００ａの確保が完了すると、メモリ消費量測定ツール１０１に対して、情報処理装置シミュレータ１００の起動が完了した旨を通知する（ＳＥＱ１０２）。メモリ消費量測定ツール１０１は、この通知を受信すると、仮想領域１２２のメモリ使用量を測定する（ＳＥＱ１０３）。メモリ使用量の測定は、例えば、ゲストＯＳまたはホストＯＳ１３２に対して予め用意されたメモリ使用量取得のためのＡＰＩを用いて実行することができる。ＳＥＱ１０３でメモリ使用量を測定した測定値は、例えば測定値Ａとしてメモリ消費量測定ツール１０１に保持される。
【００６１】
メモリ消費量測定ツール１０１は、ＳＥＱ１０３でメモリ使用量を測定すると、情報処理装置シミュレータ１００に対して、開発対象ソフトウェア２０の追加を要求する（ＳＥＱ１０４）。情報処理装置シミュレータ１００は、この要求に応じて、開発対象ソフトウェア２０を例えばＨＤＤ３１５から読み出し、メモリ１２０の仮想領域１２２に対して追加する（ＳＥＱ１０５）。情報処理装置シミュレータ１００は、インストール時の初期化処理により、仮想領域１２２に対して、開発対象ソフトウェア２０を追加するための固定メモリ領域を確保する。そして、ＨＤＤ３１５から読み出した開発対象ソフトウェア２０を、当該固定メモリ領域に対して予め決められた手順でインストールする（ＳＥＱ１０６、ＳＥＱ１０６’）。
【００６２】
情報処理装置シミュレータ１００は、開発対象ソフトウェア２０の追加が完了すると、メモリ消費量測定ツール１０１に対して、追加完了を通知する（ＳＥＱ１０７、ＳＥＱ１０８）。メモリ消費量測定ツール１０１は、この通知に応じて、メモリ１２０の仮想領域１２２のその時点でのメモリ使用量を測定する（ＳＥＱ１０９）。
【００６３】
図１０は、仮想領域１２２に対して開発対象ソフトウェア２０がインストールされた状態を模式的に示す。開発対象ソフトウェア２０が仮想領域１２２にインストールされ、領域２０ａとして示される容量を消費する。
【００６４】
メモリ消費量測定ツール１０１は、ＳＥＱ１０９でメモリ使用量を測定した測定値Ｂと、上述のＳＥＱ１０３で測定した測定値Ａとを比較し、比較結果に基づき、開発対象ソフトウェア２０の追加によるメモリ使用量が適切であるか否かを判定する（ＳＥＱ１１０）。ここでは、メモリ使用量の測定値が、開発対象ソフトウェア２０の追加後の測定値から追加前の測定値を減じた値が、予め決められた規定値を超えていないことを以て、開発対象ソフトウェア２０の追加によるメモリ消費量が適切であると判定する。そして、メモリ消費量が適切であることを以て、開発対象ソフトウェア２０のメモリ使用量が妥当であるとする。
【００６５】
より具体的には、規定値ＭMAX1を、ソフトウェア追加時に対して予め規定されたメモリ消費量の上限値として、規定値ＭMAX1、測定値Ｂおよび測定値Ａの関係が下記の式（１）を満たしている場合に、メモリ消費量が適切であると判定し、式（１）を満たしていない場合に、メモリ消費量が異常であると判定する。メモリ消費量測定ツール１０１は、ソフトウェア追加時に対する規定値ＭMAX1を、図７を用いて説明した測定条件テーブルから取得する。
Ｂ−Ａ≦ＭMAX1    …（１）
【００６６】
メモリ消費量測定ツール１０１は、このメモリ消費量に関する判定結果を、ＵＩ機能により表示部３２０に表示させるなどにより、ユーザに通知することが好ましい。メモリ消費量が異常であると判定された場合は、測定対象とされた開発対象ソフトウェア２０の開発工程を見直すことが考えられる。
【００６７】
（起動時の検証処理）
次に、起動時における内部処理の検証について、図１１のシーケンス図を用いて説明する。起動時の検証処理は、仮想システム１５０にインストールされた開発対象ソフトウェア２０を起動した時点でのメモリ消費量を測定する。なお、図１１において、上述した図８と共通する部分には同一の符号を付して、詳細な説明を省略する。
【００６８】
図１１において、メモリ消費量測定ツール１０１に対して、開発対象ソフトウェア２０の起動時におけるメモリ消費量測定の開始が指示される（ステップＳ１１）。この指示に応じて、メモリ消費量測定ツール１０１は、情報処理装置シミュレータ１００を起動させる（ＳＥＱ１００）。情報処理装置シミュレータ１００は、起動すると、上述した追加時の検証処理と同様にして、仮想領域１２２上に固定メモリ領域１００ａを確保する（ＳＥＱ１０１）。
【００６９】
情報処理装置シミュレータ１００は、固定メモリ領域１００ａの確保が完了すると、メモリ消費量測定ツール１０１に対して、情報処理装置シミュレータ１００の起動が完了した旨を通知する（ＳＥＱ１０２）。メモリ消費量測定ツール１０１は、この通知を受信すると、情報処理装置シミュレータ１００に対して、開発対象ソフトウェア２０の追加を要求する（ＳＥＱ１０４）。情報処理装置シミュレータ１００は、この要求に応じて、開発対象ソフトウェア２０を仮想領域１２２に対して追加し、予め決められた手順でインストールする（ＳＥＱ１０６、ＳＥＱ１０６’）。
【００７０】
情報処理装置シミュレータ１００は、開発対象ソフトウェア２０の追加が完了すると、メモリ消費量測定ツール１０１に対して、追加完了を通知する（ＳＥＱ１０７、ＳＥＱ１０８）。メモリ消費量測定ツール１０１は、この通知に応じて、仮想領域１２２の、その時点でのメモリ使用量を測定する（ＳＥＱ１２０）。ＳＥＱ１２０でメモリ使用量を測定した測定値は、例えば測定値Ｃとしてメモリ消費量測定ツール１０１に保持される。
【００７１】
メモリ消費量測定ツール１０１は、ＳＥＱ１２０でメモリ使用量の測定が行われると、情報処理装置シミュレータ１００に対して、開発対象ソフトウェア２０の起動を要求する（ＳＥＱ１２１）。情報処理装置シミュレータ１００は、この要求に応じて、仮想領域１２２にインストールされている開発対象ソフトウェア２０を起動させる（ＳＥＱ１２２）。
【００７２】
例えば、情報処理装置シミュレータ１００は、起動時の初期化処理により、仮想領域１２２に対して例えば変数領域など動的メモリ領域を確保する。それと共に、情報処理装置シミュレータ１００は、インストールされている開発対象ソフトウェア２０を、予め決められた手順に従い仮想領域１２２上に展開する（ＳＥＱ１２３、ＳＥＱ１２３’）。
【００７３】
図１２は、仮想領域１２２上に開発対象ソフトウェア２０が展開されると共に、動的メモリ領域が確保された状態の例を示す。仮想領域１２２において、開発対象ソフトウェア２０および動的メモリ領域により、領域２０ｂとして示される容量が消費される。
【００７４】
開発対象ソフトウェア２０の起動が完了すると、その旨が情報処理装置シミュレータ１００からメモリ消費量測定ツール１０１に対して通知される（ＳＥＱ１２４、ＳＥＱ１２５）。メモリ消費量測定ツール１０１は、この通知に応じて、仮想領域１２２の、その時点でのメモリ使用量を測定する（ＳＥＱ１２６）。
【００７５】
メモリ消費量測定ツール１０１は、ＳＥＱ１２６でメモリ使用量を測定した測定値Ｄと、上述のＳＥＱ１２０で測定した測定値Ｃとを比較し、比較結果に基づき、開発対象ソフトウェア２０の起動によるメモリ使用量が適切であるか否かを判定する（ＳＥＱ１２７）。ここでは、開発対象ソフトウェア２０の起動直後の測定値から起動直前の測定値を減じた値が予め決められた規定値が超えていないことを以て、開発対象ソフトウェア２０の起動によるメモリ消費量が適切であると判定する。そして、メモリ消費量が適切であることを以て、開発対象ソフトウェア２０のメモリ使用量が妥当であるとする。
【００７６】
より具体的には、規定値ＭMAX2を、ソフトウェア起動時に対して予め規定されたメモリ消費量の上限値として、規定値ＭMAX2、測定値Ｄおよび測定値Ｃの関係が下記の式（２）を満たしている場合に、メモリ消費量が適切であると判定し、式（２）を満たしていない場合に、メモリ消費量が異常であると判定する。メモリ消費量測定ツール１０１は、ソフトウェア起動時に対する規定値ＭMAX2を、図７を用いて説明した測定条件テーブルから取得する。
Ｄ−Ｃ≦ＭMAX2    …（２）
【００７７】
メモリ消費量測定ツール１０１は、このメモリ消費量に関する判定結果を、ＵＩ機能により表示部３２０に表示させるなどにより、ユーザに通知することが好ましい。メモリ消費量が異常であると判定された場合は、測定対象とされた開発対象ソフトウェア２０を見直す必要があることになる。
【００７８】
（動作時の検証処理＃１）
次に、開発対象ソフトウェア２０に対する動作開始トリガが情報処理シミュレータ１００から与えられる場合の内部処理の検証について、図１３のシーケンス図を用いて説明する。なお、図１３において、上述した図８および図１１と共通する部分には同一の符号を付して詳細な説明を省略する。
【００７９】
図１３において、メモリ消費量測定ツール１０１に対して、開発対象ソフトウェア２０の動作時におけるメモリ消費量測定の開始が指示される（ステップＳ１２）。この指示に応じて、メモリ消費量測定ツール１０１は、情報処理装置シミュレータ１００を起動させる（ＳＥＱ１００）。以降、上述した図１１のＳＥＱ１０１〜ＳＥＱ１２５の説明と同様にして、開発対象ソフトウェア２０の追加処理、追加された開発対象ソフトウェア２０の起動処理が行われる。
【００８０】
メモリ消費量測定ツール１０１は、ＳＥＱ１２５で開発対象ソフトウェア２０の起動完了が通知されると、この通知に応じて、仮想領域１２２の、その時点でのメモリ使用量を測定する（ＳＥＱ１３０）。ＳＥＱ１３０で測定した測定値は、例えば測定値Ｅとしてメモリ消費量測定ツール１０１に保持される。
【００８１】
メモリ消費量測定ツール１０１は、ＳＥＱ１３０でメモリ使用量の測定が行われると、情報処理装置シミュレータ１００に対して、開発対象ソフトウェア２０の動作開始を要求する（ＳＥＱ１３１）。情報処理装置シミュレータ１００は、この要求に応じて、開発対象ソフトウェア２０の動作を開始させる。このとき、開発対象ソフトウェア２０は、情報処理装置シミュレータ１００から与えられた動作開始トリガにより動作を開始する。例えば、情報処理装置シミュレータ１００は、予め用意されたＡＰＩを実行することで、当該動作開始トリガを発生させる。開発対象ソフトウェア２０は、当該動作開始トリガに従い動作を開始する（ＳＥＱ１３２）。
【００８２】
例えば、対象となる情報処理装置１３が複合機やプリンタ装置である場合、エンジン状態変更（ドアオープン、トナーエンド、ペーパーエンド、省エネ状態など）や、機械異常（ジャム、サービスコール発生など）が生じると、当該情報処理装置１３から自発的にイベントが発生される。情報処理装置シミュレータ１００は、この自発的なイベントをシミュレートし、当該イベントを開発対象ソフトウェア２０が受け取った際に異常動作が発生しないことを確認する通知を、予め用意したＡＰＩとして利用する。
【００８３】
一例として、開発対象ソフトウェア２０が上述のＡＰＩによりＵＩの表示画面などを出力する場合、当該表示画面を描画させるための画像データが生成される。また、別の例として、開発対象ソフトウェア２０が上述のＡＰＩにより自身の状態を示すレポートなどを出力するような場合、所定の形式に従い当該レポートのデータが生成される。このように、動作中にデータが生成されるような場合には、仮想領域１２２に動的メモリ領域を確保する必要が生じることがある。
【００８４】
図１４は、動作中の開発対象ソフトウェア２０により動的メモリ領域が確保された状態の例を示す。開発対象ソフトウェア２０に起動処理時の初期化処理により消費される領域２０ｂの容量に加えて、さらに、動作中の開発対象ソフトウェア２０により、動的メモリ領域として領域２０ｃとして示される容量が消費される。
【００８５】
メモリ消費量測定ツール１０１は、開発対象ソフトウェア２０の動作中は、一定の時間間隔Ｔで仮想領域１２２のメモリ使用量を測定する（ＳＥＱ１３３1、ＳＥＱ１３３2、…、ＳＥＱ１３３n）。各タイミングで測定された測定値Ｆ1、Ｆ2、…、Ｆnのそれぞれは、メモリ消費量測定ツール１０１に保持される。
【００８６】
開発対象ソフトウェア２０の動作が終了されると、その旨が開発対象ソフトウェア２０から情報処理装置シミュレータ１００を介してメモリ消費量測定ツール１０１に通知される（ＳＥＱ１３４、ＳＥＱ１３５）。メモリ消費量測定ツール１０１は、この通知に応じて、仮想領域１２２の、その時点での使用量を測定する（ＳＥＱ１３６）。ＳＥＱ１３６で測定された測定値を、測定値Ｆmとする。
【００８７】
メモリ消費量測定ツール１０１は、ＳＥＱ１３０でメモリ使用量を測定した測定値Ｅと、ＳＥＱ１３３1、ＳＥＱ１３３2、…、ＳＥＱ１３３n、ならびに、ＳＥＱ１３６の各タイミングで測定された各測定値Ｆ1、Ｆ2、…、Ｆn、ならびに、測定値Ｆmとを比較する。そして、比較結果に基づき、動作開始トリガが情報処理装置シミュレータ１００から与えられて動作中の開発対象ソフトウェア２０によるメモリ使用量が適切であるか否かを判定する（ＳＥＱ１３７）。
【００８８】
ここでは、各タイミングで測定された使用量の各測定値Ｆ1、Ｆ2、…、Ｆn、ならびに、測定値ＦmそれぞれからＳＥＱ１３０で測定した測定値Ｅを減じた値のうち少なくとも１つが規定値を超えている場合に、開発対象ソフトウェア２０によるメモリ消費量が適切ではないと判定し、当該開発対象ソフトウェア２０の動作中のメモリ使用量が妥当ではないとする。
【００８９】
より具体的に説明する。規定値ＭMAX3を、情報処理装置シミュレータ１００からの動作開始トリガにより動作開始されたソフトウェアの動作時に対して予め規定されたメモリ消費量の上限値とする。各測定値Ｆx（すなわち測定値Ｆ1、Ｆ2、…、Ｆn、ならびに、測定値Ｆm）が下記の式（３）を全て満たしている場合に、メモリ消費量が適切であると判定する。一方、各測定値Ｆxのうち少なくとも１つが下記の式（３）を満たしていない場合に、メモリ消費量が異常であると判定する。
Ｆx−Ｅ≦ＭMAX3    …（３）
【００９０】
なお、メモリ消費量測定ツール１０１は、ソフトウェア動作時に対する規定値ＭMAX3と、メモリ使用量を測定する時間間隔Ｔとを、図７を用いて説明した測定条件テーブルから取得する。
【００９１】
なお、上述では、メモリ消費量測定ツール１０１は、開発対象ソフトウェア２０に対する１回の動作開始要求についてメモリ使用量の測定を行ってメモリ消費量の判定を行っているが、これはこの例に限定されない。すなわち、上述したような、情報処理装置１３から発生される自発的なイベントを様々に組み合わせて情報処理装置シミュレータ１００により実行させ、その都度、開発対象ソフトウェア２０により動的メモリ領域２０ｃを確保させ、仮想領域１２２のメモリ使用量を測定すると、より精度の高い結果が得られることが期待できる。
【００９２】
メモリ消費量測定ツール１０１は、このメモリ消費量に関する判定結果を、ＵＩ機能により表示部３２０に表示させるなどにより、ユーザに通知することが好ましい。メモリ消費量が異常であると判定された場合は、測定対象とされた開発対象ソフトウェア２０を見直す必要があることになる。
【００９３】
（動作時の検証処理＃２）
次に、開発対象ソフトウェア２０に対する動作開始トリガが当該開発対象ソフトウェア２０のＵＩから与えられる場合における内部処理の検証について、図１５のシーケンス図を用いて説明する。なお、図１５において、上述した図１３と共通する部分には同一の符号を付して詳細な説明を省略する。
【００９４】
この場合には、開発対象ソフトウェア２０は、例えばＵＩに対する操作に応じて、当該開発対象ソフトウェア２０が動作するプラットフォームが提供するサービス（ＡＰＩ）を利用することになる。そこで、開発対象ソフトウェア２０の実行中に利用したＡＰＩのログを、ＡＰＩ利用ログ記録ツール１０２を用いて記録し、メモリ消費量の検証の際に、ＡＰＩの利用が妥当であったか否かの判定を行う。
【００９５】
図１５において、メモリ消費量測定ツール１０１に対して、開発対象ソフトウェア２０の動作時におけるメモリ消費量測定の開始が指示される（ステップＳ１３）。この指示に応じて、メモリ消費量測定ツール１０１は、情報処理装置シミュレータ１００を起動させる（ＳＥＱ１００）。情報処理装置シミュレータ１００は、起動されると、ＡＰＩ利用ログ記録ツール１０２の機能を立ち上げる（ＳＥＱ１４０）。以降、上述した図１１のＳＥＱ１０１〜ＳＥＱ１２５の説明と同様にして、開発対象ソフトウェア２０の追加処理、追加された開発対象ソフトウェア２０の起動処理が行われる。
【００９６】
メモリ消費量測定ツール１０１は、ＳＥＱ１２５で情報処理装置シミュレータ１００の起動完了が通知されると、仮想領域１２２の、その時点でのメモリ使用量を測定する（ＳＥＱ１４１）。ＳＥＱ１４１で測定した測定値は、例えば測定値Ｇとしてメモリ消費量測定ツール１０１に保持される。
【００９７】
以降、メモリ消費量測定ツール１０１は、予め決められた一定時間間隔で仮想領域１２２のメモリ使用量を測定する（ＳＥＱ１４２1、ＳＥＱ１４２2、…、ＳＥＱ１４２n）。各タイミングで測定された測定値Ｈ1、Ｈ2、…、Ｈnのそれぞれは、メモリ消費量測定ツール１０１に保持される。メモリ使用量の測定は、開発対象ソフトウェア２０が動作しているか否かに関わらず、後述するステップＳ２１でメモリ消費量測定ツール１０１に対して測定終了が指示されるまで、継続して行われる。
【００９８】
また、ＳＥＱ１４１におけるメモリ使用量の測定後に、例えば開発対象ソフトウェア２０のＵＩを介して、開発対象ソフトウェア２０の動作の実行が指示される（ステップＳ２０）。開発対象ソフトウェア２０は、この指示をトリガとして動作を開始する（ＳＥＱ１４３）。開発対象ソフトウェア２０は、動作開始時に、先ず仮想領域１２２に動的メモリ領域を確保する。
【００９９】
開発対象ソフトウェア２０は、動作開始後、例えば当該開発対象ソフトウェア２０のＵＩを介してなされる指示（図示しない）に応じて、当該開発対象ソフトウェア２０に対して予め決められたＡＰＩを利用した機能を実行する（ＳＥＱ１４４1、ＳＥＱ１４４2）。すなわち、開発対象ソフトウェア２０は、指示に応じて、情報処理装置シミュレータ１００に対してＡＰＩから機能の実行を要求する。情報処理装置シミュレータ１００は、この要求に応じて、ＡＰＩ操作用ライブラリ１１０から指定されたＡＰＩに対応するライブラリを呼び出し、当該ＡＰＩに従い機能を実行する。
【０１００】
ここで、予め決められたＡＰＩを利用した機能の実行を、ＡＰＩの種類毎に１回ずつ行うようにしてもよいし、同一のＡＰＩについて複数回行うようにすることもできる。同一のＡＰＩについて複数回、機能を実行させることで、メモリ使用量の測定をより精度よく行うことができる。
【０１０１】
情報処理装置シミュレータ１００は、開発対象ソフトウェア２０によりＡＰＩが利用されると、利用されたＡＰＩの情報をＡＰＩ利用ログ記録ツール１０２に通知する。ＡＰＩ利用ログ記録ツール１０２は、この通知を受けて、開発対象ソフトウェア２０が利用したＡＰＩのログを記録する（ＳＥＱ１４５1、ＳＥＱ１４５2）。
【０１０２】
図１６は、ＡＰＩ利用ログ記録ツール１０２により記録されるＡＰＩ利用ログの一例を示す。項目「ＩＮ」は、開発対象ソフトウェア２０から利用されたＡＰＩの名称を示す。項目「ＯＵＴ」は、情報処理装置シミュレータ１００側が利用したＡＰＩの名称を示す。ＡＰＩ利用ログでは、これら利用されたＡＰＩの名称と、当該ＡＰＩを利用した時刻とが対応付けられて記述される。
【０１０３】
メモリ消費量測定ツール１０１に対して、メモリ消費量測定の終了が指示される（ステップＳ２１）。この指示に応じて、メモリ消費量測定ツール１０１は、メモリ使用量の測定を行った後（ＳＥＱ１４２m）、メモリ使用量の測定を終了させる。測定結果は、測定値Ｈmとしてメモリ消費量測定ツール１０１に保持される。そして、上述のＳＥＱ１４１、ＳＥＱ１４２1、ＳＥＱ１４２2、…、ＳＥＱ１４２n、ならびに、ＳＥＱ１４２mで測定された測定値Ｇ、測定値Ｈ1、Ｈ2、…、Ｈn、ならびに、測定値Ｈmに基づき、開発対象ソフトウェア２０によるメモリ使用量が適切であるか否かを判定する（ＳＥＱ１４６）。
【０１０４】
ここでは、各タイミングで測定された使用量の測定値Ｈ1、Ｈ2、…、Ｈn、ならびに、ＨmそれぞれからＳＥＱ１４１で測定した測定値Ｇを減じた値のうち少なくとも１つが規定値を超えている場合に、開発対象ソフトウェア２０によるメモリ消費量が適切ではないと判定し、当該開発対象ソフトウェア２０の動作中のメモリ使用量が妥当ではないとする。
【０１０５】
より具体的に説明する。規定値ＭMAX4を、開発対象ソフトウェア２０のＵＩによる動作開始トリガにより動作開始されたソフトウェアの動作時に対して予め規定されたメモリ消費量の上限値とする。各測定値Ｈx（すなわち測定値Ｈ1、Ｈ2、…、Ｈn、ならびに、測定値Ｈm）全てが下記の式（４）を満たしている場合に、メモリ消費量が適切であると判定する。一方、各測定値Ｈxのうち少なくとも１つが下記の式（４）を満たしていない場合に、メモリ消費量が異常であると判定する。
Ｈx−Ｇ≦ＭMAX4    …（４）
【０１０６】
なお、メモリ消費量測定ツール１０１は、ソフトウェア動作時に対する規定値ＭMAX4と、メモリ使用量を測定する時間間隔Ｔとを、図７を用いて説明した測定条件テーブルから取得する。
【０１０７】
メモリ消費量測定ツール１０１は、メモリ消費量の判定が終了すると、ＡＰＩ利用ログ記録ツール１０２からＡＰＩ利用ログを取得する（ＳＥＱ１４７）。そして、取得したＡＰＩ利用ログの内容を解析し、ＳＥＱ１４４1〜ＳＥＱ１４４mにおいて適切なＡＰＩが利用されたか否かを判定する（ＳＥＱ１４８）。ここでいう適切なＡＰＩとは、メモリ消費量測定ツール１０１により判定されたメモリ消費量が妥当であると判断できるＡＰＩを指す。
【０１０８】
より具体的には、ＡＰＩ利用ログを解析した結果、メモリ消費量の測定で利用されたＡＰＩ、すなわちＡＰＩ利用ログに記録されたＡＰＩの種類ＡＰＩlogが次式（５）を満たしている場合に、開発対象ソフトウェア２０に対して予め決められたＡＰＩが全て用いられたと判定する。一方、式（５）を満たさない場合は、メモリ消費量の測定方法に不備があると判断できる。なお、式（５）において、開発対象ソフトウェア２０に対して予め決められたＡＰＩの種類をＡＰＩAPPとする。
ＡＰＩlog⊇ＡＰＩAPP    …（５）
【０１０９】
このように、ＡＰＩ利用ログを解析することで、ユーザが手動で実施した検証処理の妥当性を判断することが可能となる。検証処理が妥当ではないと判断された場合に、その旨をユーザに通知すると好ましい。
【０１１０】
ここで、開発対象ソフトウェア２０に対して予め決められたＡＰＩについて説明する。開発対象ソフトウェア２０は、インストール先の情報処理装置１３の種類や機種に応じて実装すべき機能が異なり、用いるＡＰＩも異なる。
【０１１１】
図１７を用いて、開発対象ソフトウェア２０のインストール対象となる情報処理装置１３の種類に応じたＡＰＩについて、概略的に説明する。図１７（ａ）は、対象となる情報処理装置１３が複合機（ＭＦＰ）の場合の例である。この場合、開発対象ソフトウェア２０に対して予め決められたＡＰＩは、例えば、コピー実行、原稿読み取り実行および印刷実行のＡＰＩのうち１または複数のＡＰＩとされている。図１７（ｂ）は、対象となる情報処理装置１３がプリンタの場合の例である。この場合、開発対象ソフトウェア２０に対して予め決められたＡＰＩは、例えば、印刷実行のＡＰＩとされている。また、図１７（ｃ）は、対象となる情報処理装置１３が映像投影装置の場合の例である。この場合、開発対象ソフトウェア２０に対して予め決められたＡＰＩは、例えば、映像投影実行のＡＰＩとされている。
【０１１２】
メモリ消費量測定ツール１０１は、これら開発対象ソフトウェア２０に対して予め決められたＡＰＩの種類を、図７に示した測定条件テーブルにおける項目「動作ログ対象ＡＰＩ」から取得する。
【０１１３】
なお、上述では、開発対象ソフトウェア２０の追加、起動および動作中の全ての場合について内部動作の検証処理を行うように説明したが、これはこの例に限定されない。すなわち、これら追加、起動および動作中のうち１または複数を実施することができる。
【０１１４】
以上説明したように、本発明の実施形態によれば、情報処理装置シミュレータ１００およびメモリ消費量測定ツール１０１により、汎用ＰＣ１１上で開発した開発対象ソフトウェア２０の内部動作の検査を、当該汎用ＰＣ１１上で実行する仕組みが構成される。したがって、本実施形態を用いることで、汎用ＰＣ１１上で開発した開発対象ソフトウェア２０の品質検証を、当該開発対象ソフトウェア２０を情報処理装置１３にインストールすることなく、汎用ＰＣ１１上で安全に実行することができる。
【０１１５】
また、本実施形態では、プラットフォームソフトウェアを開発対象ソフトウェア２０が利用する際の外部インターフェイスであるＡＰＩの利用ログを記録している。そのため、このＡＰＩ利用ログを解析することで、開発対象ソフトウェア２０の動作中の検査そのものの妥当性を判定することができる。
【０１１６】
さらに、開発対象ソフトウェア２０の各状態でメモリ消費量の測定を行っているため、当該開発対象ソフトウェア２０の内部動作の品質確認を、当該開発対象ソフトウェア２０の各状態（追加、起動、動作中）に応じて段階的に行うことができる。そのため、問題箇所の特定が容易になり、汎用ＰＣ１１を用いるだけで、高品質の開発対象ソフトウェア２０を開発可能である。
【０１１７】
（実施形態の第１の変形例）
次に、本発明の実施形態の第１の変形例について説明する。上述した実施形態では、開発対象ソフトウェア２０の動作中のメモリ使用量の測定を、一定時間間隔で行っていた。これに対して、本第１の変形例では、開発対象ソフトウェア２０の動作中のメモリ使用量の測定を、開発対象ソフトウェア２０が動的メモリを確保するタイミング毎に行う。なお、本第１の変形例においては、図７に示した測定条件テーブルにおけるソフトウェア動作中の測定条件を、図１８に斜線を付して示されるように、「測定依頼時」とする。
【０１１８】
図１９は、本第１の変形例における内部処理の検証の一例のシーケンス図である。なお、図１９において、上述した図１３と共通する部分には同一の符号を付し、詳細な説明を省略する。
【０１１９】
図１９において、メモリ消費量測定ツール１０１に対して、開発対象ソフトウェア２０の動作時におけるメモリ消費量測定の開始が指示される（ステップＳ１４）。この指示に応じて、メモリ消費量測定ツール１０１は、情報処理装置シミュレータ１００を起動させる（ＳＥＱ１００）。以降、上述した図１１のＳＥＱ１０１〜ＳＥＱ１２５の説明と同様にして、開発対象ソフトウェア２０の追加処理、追加された開発対象ソフトウェア２０の起動処理が行われる。
【０１２０】
メモリ消費量測定ツール１０１は、ＳＥＱ１２５で開発対象ソフトウェア２０の起動完了が通知されると、この通知に応じて、仮想領域１２２の、その時点でのメモリ使用量を測定する（ＳＥＱ１５０）。ＳＥＱ１５０で測定した測定値は、例えば測定値Ｉとしてメモリ消費量測定ツール１０１に保持される。
【０１２１】
メモリ消費量測定ツール１０１は、ＳＥＱ１５０でメモリ使用量の測定が行われると、情報処理装置シミュレータ１００に対して、開発対象ソフトウェア２０の動作開始を要求する（ＳＥＱ１５１）。情報処理装置シミュレータ１００は、この要求に応じて、開発対象ソフトウェア２０の動作を開始させる。このとき、開発対象ソフトウェア２０は、情報処理装置シミュレータ１００から与えられた動作開始トリガにより動作を開始する。例えば、情報処理装置シミュレータ１００は、予め用意されたＡＰＩを実行することで、当該動作開始トリガを発生させる。開発対象ソフトウェア２０は、当該動作開始トリガに従い動作を開始し、当該動作開始トリガに応じた機能を実行する（ＳＥＱ１５２、ＳＥＱ１５３）。
【０１２２】
開発対象ソフトウェア２０は、動作を開始し実行状態となると、その動作に応じて、仮想領域１２２に動的メモリ領域を確保する。開発対象ソフトウェア２０は、動作中に動的メモリ領域の確保が必要となると、動的メモリ領域確保の要求を情報処理装置シミュレータ１００に通知する（ＳＥＱ１５４1）。
【０１２３】
例えば、情報処理装置シミュレータ１００は、仮想領域１２２に動的メモリ領域を確保するためのインターフェイスを有しており、開発対象ソフトウェア２０は、このインターフェイスを介して動的メモリ領域確保を行う。このインターフェイスは、既存の言語（例えばＣ言語）が標準的に装備しているメモリ確保コマンドを、情報処理装置シミュレータ１００が解釈可能な形式に変更して利用することで、実現できる。変更されたメモリ確保コマンドは、例えばＡＰＩ操作用ライブラリ１１０内のＡＰＩとして提供される。
【０１２４】
情報処理装置シミュレータ１００は、この要求に応じて、仮想領域１２２に対して開発対象ソフトウェア２０用の動的メモリ領域を確保すると共に、メモリ消費量測定ツール１０１に対して、メモリ使用量の測定を依頼する（ＳＥＱ１５５1）。メモリ消費量測定ツール１０１は、この依頼に応じて、仮想領域１２２のメモリ使用量を測定する（ＳＥＱ１５６1）。測定された測定値Ｊ1は、メモリ消費量測定ツール１０１に保持される。
【０１２５】
以降、情報処理装置シミュレータ１００は、開発対象ソフトウェア２０からの動的メモリ領域確保要求の通知を受け付ける毎（ＳＥＱ１５４2、ＳＥＱ１５４3、…、ＳＥＱ１５４n）に、動的メモリ領域確保を実行すると共に、メモリ消費量測定ツール１０１に対してメモリ使用量の測定を依頼する（ＳＥＱ１５５2、ＳＥＱ１５５3、…、ＳＥＱ１５５n）。メモリ消費量測定ツール１０１は、メモリ使用量測定の依頼に応じて、依頼を受けた時点での仮想領域１２２のメモリ使用量を測定する（ＳＥＱ１５６2、ＳＥＱ１５６3、…、ＳＥＱ１５６n）。測定された各測定値Ｊ2、Ｊ3、…、Ｊnは、メモリ消費量測定ツール１０１に保持される。
【０１２６】
開発対象ソフトウェア２０の動作が終了されると、その旨が開発対象ソフトウェア２０から情報処理装置シミュレータ１００を介してメモリ消費量測定ツール１０１に通知される（ＳＥＱ１５７、ＳＥＱ１５８）。メモリ消費量測定ツール１０１は、この通知に応じて、仮想領域１２２の、その時点でのメモリ使用量を測定する（ＳＥＱ１５９）。ＳＥＱ１５９で測定された測定値を、測定値Ｊmとする。
【０１２７】
メモリ消費量測定ツール１０１は、ＳＥＱ１５０でメモリ使用量を測定した測定値Ｉと、ＳＥＱ１５６1、ＳＥＱ１５６2、…、ＳＥＱ１５６nの各タイミングで測定された各測定値Ｊ1、Ｊ2、…、Ｊn、ならびに、測定値Ｊmとに基づき、動作中の開発対象ソフトウェア２０によるメモリ使用量が適切であるか否かを判定する（ＳＥＱ１６０）。
【０１２８】
ここでは、各タイミングで測定された使用量の測定値Ｊ1、Ｊ2、…、Ｊn、ならびに、測定値ＪmそれぞれからＳＥＱ１５０で測定した測定値Ｉを減じた値のうち少なくとも１つが規定値を超えている場合に、開発対象ソフトウェア２０によるメモリ消費量が適切ではないと判定し、当該開発対象ソフトウェア２０の動作中のメモリ使用量が妥当ではないとする。
【０１２９】
より具体的に説明する。規定値ＭMAX5を、情報処理装置シミュレータ１００からの動作開始トリガにより動作開始されたソフトウェアの動作時に対して予め規定されたメモリ消費量の上限値とする。各測定値Ｊx（すなわち測定値Ｊ1、Ｊ2、…、Ｊn、ならびに、測定値Ｊm）が下記の式（６）を全て満たしている場合に、メモリ消費量が適切であると判定する。一方、各測定値Ｊxのうち少なくとも１つが下記の式（６）を満たしていない場合に、メモリ消費量が異常であると判定する。
Ｊx−Ｉ≦ＭMAX5    …（６）
【０１３０】
メモリ消費量測定ツール１０１は、このメモリ消費量に関する判定結果を、ＵＩ機能により表示部３２０に表示させるなどにより、ユーザに通知することが好ましい。メモリ消費量が異常であると判定された場合は、測定対象とされた開発対象ソフトウェア２０を見直す必要があることになる。
【０１３１】
（実施形態の第２の変形例）
次に、本発明の実施形態の第２の変形例について説明する。本第２の変形例では、開発対象ソフトウェア２０すなわち機能拡張ソフトウェア１２のインストール対象である情報処理装置１３が、複合機など、標準機能を複数有し、この複数の標準機能の全てを並行して使用可能な装置である場合を想定して、開発対象ソフトウェア２０の内部処理の検証を行う。すなわち、機能拡張ソフトウェア１２が情報処理装置１３にインストールされた場合に、当該情報処理装置１３の標準機能をどのように組み合わせて使用しても、インストールされた機能拡張ソフトウェア１２が正常に動作するか否かを判定する。
【０１３２】
そこで、本第２の変形例では、メモリ消費量測定ツール１０１は、開発対象ソフトウェア２０の動作中のメモリ消費量を測定する。そして、測定されたメモリ消費量が、インストール対象の情報処理装置１３において機能に対して使用許可されている、当該情報処理装置１３全体の動作中の規定値（総量の規定値と呼ぶ）から、当該情報処理装置１３において並行して使用される標準機能の動作中の規定値の総和（総和の規定値と呼ぶ）を減じた値以下である場合に、当該開発対象ソフトウェア２０のメモリ使用量が適切であると判定する。
【０１３３】
なお、メモリ消費量測定ツール１０１は、上述した総量の規定値と総和の規定値とを、テーブル（最大値テーブルと呼ぶ）として予め保持する。また、最大値テーブルは、複数種類の情報処理装置１３について、総量の規定値と総和の規定値とを保持することができる。
【０１３４】
本第２の変形例について、より詳細に説明する。ここで、図７を用いて説明した測定条件テーブルに保持される、開発対象ソフトウェア２０が動作中の場合の規定値（メモリ消費量の最大値）を値ＭMAXとし、最大値テーブルに保持されるインストール対象の情報処理装置１３における総量の規定値および総和の規定値をそれぞれ値ＭALLおよび値ΣＭとする。この場合、各値が下記の式（７）を満たす場合は、測定条件テーブルの規定値の値をそのまま用いる。
ＭMAX≦ＭALL−ΣＭ    …（７）
【０１３５】
一方、値ＭMAX、値ＭALLおよび値ΣＭが式（７）の条件を満たさない場合には、開発対象ソフトウェア２０の動作中のメモリ消費量を、式（７）の右辺で求められる値に制限する。具体的には、メモリ消費量測定ツール１０１は、測定条件テーブルにおける規定値の値を、式（７）の右辺で求められる値に変更する。
【０１３６】
具体的な例を用いて説明する。図２０（ａ）は、コピー機能、プリンタ機能およびＦＡＸ機能の３つの機能を並行して使用可能とされた情報処理装置１３に対する最大値テーブルの例を示す。また、図２０（ｂ）は、コピー機能、プリンタ機能、ＦＡＸ機能およびスキャナ機能の４つの機能を並行して使用可能とされた情報処理装置１３に対する最大値テーブルの例が示されている。なお、ここでは情報処理装置１３の種類毎に最大値テーブルが保持されるように説明したが、これはこの例に限定されない。すなわち、複数種類の情報処理装置１３について、纏めて１つの最大値テーブルを作成し、情報処理装置１３のそれぞれを識別子などで判別可能としてもよい。
【０１３７】
図２０（ａ）に例示される最大値テーブルの場合、総量の規定値が２ＧＢ（ギガバイト）、総和の規定値が５００ｋＢ＋３００ｋＢ＋２００ｋＢ＝１ＧＢとなる。一方、図７に示す測定条件テーブルにおける規定値は、５００ｋＢである。したがって、ＭALL−ΣＭ＝２ＧＢ−１ＧＢ＝１ＧＢ＞５００ｋＢとなり、式（７）が満足され、図７の測定条件テーブルにおける規定値の値がそのまま用いられる。
【０１３８】
一方、図２０（ｂ）に例示される最大値テーブルの場合、総量の規定値が２ＧＢ、総和の規定値が５００ｋＢ＋３００ｋＢ＋２００ｋＢ＋６００ｋＢ＝１．６ＧＢとなる。したがって、ＭALL−ΣＭ＝２ＧＢ−１．６ＧＢ＝４００ｋＢ＜５００ｋＢとなり、式（７）が満足されない。この場合は、図７の測定条件テーブルにおける規定値の値が、式（７）を満足する値に変更される。この例の場合は、図２１に斜線を付して示すように、測定条件テーブルにおける動作中の規定値の値がＭALL−ΣＭ＝２ＧＢ−１．６ＧＢ＝４００ｋＢに変更される。
【０１３９】
メモリ消費量測定ツール１０１は、開発対象ソフトウェア２０の検査を行う際に、測定条件テーブルを参照して規定値を取得する。それと共に、メモリ消費量測定ツール１０１は、当該開発対象ソフトウェア２０のインストール対象である情報処理装置１３に対応する最大値テーブルを参照し、総量の規定値および総和の規定値をそれぞれ取得する。そして、測定条件テーブルから取得された規定値と、最大値テーブルから取得された総量の規定値および総和の規定値とを用いて上述の式（７）による判定を行い、判定結果に基づき必要に応じて測定条件テーブルの規定値を変更する。この規定値が変更された測定条件テーブルを参照して、図１３、図１５および図１９などを用いて説明したようにして、開発対象ソフトウェア２０の動作時におけるメモリ消費量の測定を行う。
【０１４０】
このように、本実施形態の第２の変形例を適用することで、開発対象ソフトウェア２０の動作中のメモリ消費量が適切であるか否かの判定を、開発対象ソフトウェア２０のインストール対象である情報処理装置１３の種類毎に、適切に行うことができる。
【０１４１】
（実施形態の第３の変形例）
次に、本発明の実施形態の第３の変形例について説明する。本第３の変形例では、開発対象ソフトウェア２０の内部処理の検証の際に、当該開発対象ソフトウェア２０のインストール対象である情報処理装置１３の機能のうち、当該開発対象ソフトウェア２０と同時に実行される機能を指定する。そして、メモリ消費量測定ツール１０１は、この指定された機能によるメモリ消費量を考慮して、当該開発対象ソフトウェア２０のメモリ消費量が適切であるか否かを判定する。
【０１４２】
図２２は、本第３の変形例による内部処理の検証の一例のシーケンス図を示す。以下では、開発対象ソフトウェア２０に対する動作開始トリガが情報処理シミュレータ１００から与えられる場合の検証処理について説明する。この例に限らず、開発対象ソフトウェア２０に対する動作開始トリガが、当該開発対象ソフトウェア２０のＵＩから与えられる場合にも、同様に、本第３の変形例を適用することができる。なお、図２２において、上述した図１３と共通する部分には同一の符号を付して詳細な説明を省略する。
【０１４３】
図２２において、メモリ消費量測定ツール１０１に対して、開発対象ソフトウェア２０の動作時におけるメモリ消費量測定の開始が指示される（ステップＳ１５）。この指示に応じて、メモリ消費量測定ツール１０１は、情報処理装置シミュレータ１００を起動させる（ＳＥＱ１００）。以降、上述した図１１のＳＥＱ１０１〜ＳＥＱ１２５の説明と同様にして、開発対象ソフトウェア２０の追加処理、追加された開発対象ソフトウェア２０の起動処理が行われる。
【０１４４】
メモリ消費量測定ツール１０１は、ＳＥＱ１２５で開発対象ソフトウェア２０の起動完了が通知されると、この通知に応じて、仮想領域１２２の、その時点でのメモリ使用量を測定する（ＳＥＱ１７０）。ＳＥＱ１７０で測定した測定値は、例えば測定値Ｋとしてメモリ消費量測定ツール１０１に保持される。
【０１４５】
メモリ消費量測定ツール１０１は、ＳＥＱ１３０でメモリ使用量の測定が行われると、情報処理装置シミュレータ１００に対して、開発対象ソフトウェア２０の動作開始を要求する（ＳＥＱ１７１）。情報処理装置シミュレータ１００は、この要求に応じて、先ず、開発対象ソフトウェア２０から、同時利用プロパティを読み取る（ＳＥＱ１７２ａ、ＳＥＱ１７２ｂ）。情報処理装置シミュレータ１００は、読み取った同時利用プロパティを、メモリ消費量測定ツール１０１に渡す。メモリ消費量測定ツール１０１は、この同時利用プロパティに基づき、当該開発対象ソフトウェア２０と同時に利用される情報処理装置１３の機能を示す情報を取得する（ＳＥＱ１７３）。
【０１４６】
図２３は、同時利用プロパティの例を示す。この同時利用プロパティは、開発対象ソフトウェア２０に予め含まれ、当該開発対象ソフトウェア２０が、インストール対象である情報処理装置１３の各標準機能との同時利用の可否が記述される。
【０１４７】
図２３の例では、同時利用プロパティには、情報処理装置１３が標準機能としてコピー機能、プリンタ機能、ＦＡＸ機能およびスキャナ機能を有する旨が記述されている。また、この同時利用プロパティに記述される各標準機能は、上述した第２の変形例における最大値テーブルに記述される各標準機能と対応する。例えば、図２３に示される同時利用プロパティは、図２０（ｂ）に示される最大値テーブルに対応し、コピー機能、プリンタ機能、ＦＡＸ機能およびスキャナ機能の動作中のメモリ消費量が、それぞれ５００ｋＢ、３００ｋＢ、２００ｋＢおよび６００ｋＢとなる。
【０１４８】
それと共に、同時利用プロパティに対して、この同時利用プロパティを含む開発対象ソフトウェア２０が、情報処理装置１３の各標準機能のうちスキャナ機能と同時利用が可能であり、他の、コピー機能、プリンタ機能およびＦＡＸ機能とは同時利用が不可である旨が記述されている。
【０１４９】
メモリ消費量測定ツール１０１は、上述したＳＥＱ１７３で同時利用プロパティを受け取り同時利用機能を取得すると、最大値テーブルを参照し、同時利用プロパティに同時利用が可能として記述される機能によるメモリ消費量（指定機能規定値と呼ぶ）を求める。そして、求めた指定機能規定値を、最大値テーブルに記述される情報処理装置１３の総量の規定値から減じた値と、測定条件テーブルに記述される、開発対象ソフトウェア２０が動作中の場合の規定値とを比較する。
【０１５０】
ここで、測定条件テーブルに記述される、開発対象ソフトウェア２０が動作中の場合の規定値を値ＭMAXとし、最大値テーブルに記述される総量の規定値を値ＭALLとする。さらに、同時利用プロパティと最大値テーブルとから求めた指定機能規定値を、値ΣＭSとする。この場合、各値が下記の式（８）を満たす場合は、測定条件テーブルの規定値の値をそのまま用いる。
ＭMAX≦ＭALL−ΣＭS    …（８）
【０１５１】
一方、値ＭMAX、値ＭALLおよび値ΣＭＳの各値が式（８）の条件を満たさない場合には、開発対象ソフトウェア２０の動作中のメモリ消費量を、式（８）の右辺で求められる値に制限する。この場合、メモリ消費量測定ツール１０１は、測定条件テーブルにおける規定値の値を、式（８）の右辺で求められる値に書き換える。
【０１５２】
図２０（ｂ）を用いて説明した最大値テーブルを例にとって、より具体的に説明する。この例の場合、総量の規定値ＭALLが２ＧＢ、指定機能規定値ΣＭSがスキャナ機能のメモリ消費量の６００ｋＢとなる。したがって、式（８）の右辺の値は、ＭALL−ΣＭS＝２ＧＢ−６００ｋＢ＝１．４ＧＢとなる。一方、規定値ＭMAXは、測定条件テーブルによれば５００ｋＢとなっているので、式（８）が満足され、測定条件テーブルは変更されない。
【０１５３】
情報処理装置シミュレータ１００は、メモリ消費量測定ツール１０１に同時利用プロパティを渡した後、開発対象ソフトウェア２０の動作を開始させる（ＳＥＱ１７４）。このとき、開発対象ソフトウェア２０は、情報処理装置シミュレータ１００から与えられた動作開始トリガにより動作を開始する（ＳＥＱ１７５）。開発対象ソフトウェア２０は、動作を開始すると、仮想領域１２２に対して動的メモリ領域を確保する。
【０１５４】
メモリ消費量測定ツール１０１は、開発対象ソフトウェア２０の動作中は、一定の時間間隔Ｔで仮想領域１２２のメモリ使用量を測定する（ＳＥＱ１７６1、ＳＥＱ１７６2、…、ＳＥＱ１７６n）。各タイミングで測定された測定値Ｌ1、Ｌ2、…、Ｌnのそれぞれは、メモリ消費量測定ツール１０１に保持される。
【０１５５】
開発対象ソフトウェア２０の動作が終了されると、その旨が開発対象ソフトウェア２０から情報処理装置シミュレータ１００を介してメモリ消費量測定ツール１０１に通知される（ＳＥＱ１７７、ＳＥＱ１７８）。メモリ消費量測定ツール１０１は、この通知に応じて、仮想領域１２２の、その時点での使用量を測定する（ＳＥＱ１７９）。ＳＥＱ１７９で測定された測定値を、測定値Ｌmとする。
【０１５６】
メモリ消費量測定ツール１０１は、ＳＥＱ１７０でメモリ使用量を測定した測定値Ｋから、ＳＥＱ１７６1、ＳＥＱ１７６2、…、ＳＥＱ１７６n、ならびに、ＳＥＱ１７９の各タイミングで測定された各測定値Ｌ1、Ｌ2、…、Ｌn、ならびに、測定値Ｌmをそれぞれ減じた値に基づき、動作中の開発対象ソフトウェア２０によるメモリ使用量が適切であるか否かを判定する（ＳＥＱ１８０）。
【０１５７】
既に説明したように、各タイミングで測定された使用量の測定値Ｌ1、Ｌ2、…、Ｌn、ならびに、測定値ＬmそれぞれからＳＥＱ１７０で測定した測定値Ｋを減じた値のうち少なくとも１つが、測定条件テーブルに記述される動作中の規定値を超えているか否かを判定する。メモリ消費量測定ツール１０１は、最大値テーブルと、上述のＳＥＱ１７３で取得した同時利用プロパティとに基づき測定条件テーブルを変更している場合には、変更した測定条件テーブルに記述される動作中の規定値を超えているか否かを判定する。若し、規定値を超えていると判定した場合には、開発対象ソフトウェア２０によるメモリ消費量が適切ではないと判定し、当該開発対象ソフトウェア２０の動作中のメモリ使用量が妥当ではないとする。
【０１５８】
より具体的に説明する。規定値ＭMAXを、測定条件テーブルに記述された動作中の規定値とする。測定条件テーブルが変更されている場合には、規定値ＭMAXは、変更後の動作中の規定値となる。各測定値Ｌx（すなわち測定値Ｌ1、Ｌ2、…、Ｌn、ならびに、測定値Ｌm）が下記の式（９）を全て満たしている場合に、メモリ消費量が適切であると判定する。一方、各測定値Ｌxのうち少なくとも１つが下記の式（９）を満たしていない場合に、メモリ消費量が異常であると判定する。
Ｌx−Ｋ≦ＭMAX    …（９）
【０１５９】
メモリ消費量測定ツール１０１は、このメモリ消費量に関する判定結果を、ＵＩ機能により表示部３２０に表示させるなどにより、ユーザに通知することが好ましい。メモリ消費量が異常であると判定された場合は、測定対象とされた開発対象ソフトウェア２０を見直す必要があることになる。
【０１６０】
このように、本実施形態の第３の変形例を適用することで、開発対象ソフトウェア２０の動作中のメモリ消費量が適切であるか否かの判定を、開発対象ソフトウェア２０のインストール対象である情報処理装置１３において同時利用する機能によるメモリ消費量を考慮して行うことができる。
【０１６１】
（実施形態の第４の変形例）
次に、本発明の実施形態の第４の変形例について説明する。本第４の変形例では、開発対象ソフトウェア２０のインストール先の情報処理装置１３が、ソフトウェアの実行のために物理的に複数のメモリを有する場合について、開発対象ソフトウェア２０による内部処理の検証を行う例である。
【０１６２】
例えば、情報処理装置１３が、ＨＤＤやＲＡＭ、ＲＯＭ、不揮発性で書き換え可能な半導体メモリなど、それぞれ性質や記憶容量の異なる複数のメモリを有する場合が考えられる。これに限らず、例えば互いに異なるアドレス管理を行う複数のＲＡＭなども考えられる。このような場合、機能拡張ソフトウェア１２が、これら複数のメモリそれぞれに、固定メモリ領域や動的メモリ領域を確保するようにできる。この場合、メモリ消費量測定ツール１０１は、複数のメモリそれぞれについて、測定条件テーブルを持つことができる。
【０１６３】
図２４は、開発対象ソフトウェア２０のインストール先の情報処理装置１３が、メモリ＃１およびメモリ＃２の２つのメモリを持つ場合の測定条件テーブルの例を示す。各項目の意味などについては、上述した図７と共通なので、ここでの詳細な説明を省略する。図２４（ａ）および図２４（ｂ）は、それぞれメモリ＃１およびメモリ＃２に対応する測定条件テーブルの例を示す。すなわち、メモリ＃１に対しては、図２４（ａ）に例示されるように、各規定値が追加時で５０ｋＢ、起動時で５０ｋＢ、動作時で１００ｋＢとなっている。また、メモリ＃２に対しては、図２４（ｂ）に例示されるように、各規定値が追加時で０ｋＢ、起動時で５０kＢ、動作時で４００ｋＢとなっている。
【０１６４】
なお、図２４（ａ）および図２４（ｂ）において、各動作時の測定条件として一定時間間隔と測定依頼時とが併記されているのは、これら図２４（ａ）および図２４（ｂ）の測定条件テーブルが、各動作時の測定条件として一定時間間隔および測定依頼時に共通して適用可能であることを示している。
【０１６５】
図２５は、本第４の変形例における内部処理の検証の一例のシーケンス図である。ここでは、開発対象ソフトウェア２０がメモリ＃１およびメモリ＃２の２つのメモリを利用して動作するものとする。なお、図２５において、上述した図１１と共通する部分には同一の符号を付し、詳細な説明を省略する。また、図２５では、各動作時の測定条件として、測定依頼時が採用されているものとする。
【０１６６】
これに限らず、各動作時の測定条件として、一定時間間隔毎の測定を採用してもよいし、動作開始トリガの発生元を情報処理装置シミュレータ１００側および開発対象ソフトウェア２０側の何れとしてもよい。また、動作開始トリガの発生元が開発対象ソフトウェア２０の場合には、ＡＰＩ利用ログを記録してもよい。
【０１６７】
図２５において、メモリ消費量測定ツール１０１に対して、開発対象ソフトウェア２０の動作時におけるメモリ消費量測定の開始が指示される（ステップＳ１６）。この指示に応じて、メモリ消費量測定ツール１０１は、情報処理装置シミュレータ１００を起動させる（ＳＥＱ１００）。以降、上述した図１１のＳＥＱ１０１〜ＳＥＱ１２５の説明と同様にして、開発対象ソフトウェア２０の追加処理、追加された開発対象ソフトウェア２０の起動処理が行われる。
【０１６８】
情報処理装置シミュレータ１００は、起動すると、メモリ１２０に対して、メモリ＃１およびメモリ＃２にそれぞれ対応する２つの仮想領域を割り当てる。例えば、情報処理シミュレータ１００は、図２６に例示されるように、メモリ１２０の仮想領域１２２を分割して新たに仮想領域１２２’を生成し、分割元の仮想領域１２２をメモリ＃１、分割で生成された仮想領域１２２’をメモリ＃２に割り当てることが考えられる。仮想領域１２２に対するメモリ＃１およびメモリ＃２の割り当て方法は、この例に限定されず、例えば仮想システム１５０の構築時に予め複数のメモリにそれぞれ対応する仮想領域を生成してもよい。
【０１６９】
メモリ消費量測定ツール１０１は、ＳＥＱ１２５で開発対象ソフトウェア２０の起動完了が通知されると、この通知に応じて、仮想領域１２２および仮想領域１２２’の、その時点でのメモリ使用量をそれぞれ測定する（ＳＥＱ１９０、ＳＥＱ１９１）。ＳＥＱ１９０およびＳＥＱ１９１で測定した、仮想領域１２２および１２２’の測定値は、例えばそれぞれ測定値Ｍ1および測定値Ｍ2としてメモリ消費量測定ツール１０１に保持される。
【０１７０】
メモリ消費量測定ツール１０１は、ＳＥＱ１９０およびＳＥＱ１９１でメモリ使用量の測定が行われると、情報処理装置シミュレータ１００に対して、開発対象ソフトウェア２０の動作開始を要求する（ＳＥＱ１９２）。情報処理装置シミュレータ１００は、この要求に応じて、開発対象ソフトウェア２０の動作を開始させる。この例では、開発対象ソフトウェア２０は、情報処理装置シミュレータ１００から与えられた動作開始トリガにより動作を開始する。開発対象ソフトウェア２０は、当該動作開始トリガに従い動作を開始し、当該動作開始トリガに応じた機能を実行する（ＳＥＱ１９３、ＳＥＱ１９４）。
【０１７１】
開発対象ソフトウェア２０は、動作を開始し実行状態となると、その動作に応じて、仮想領域１２２または仮想領域１２２’に動的メモリ領域を確保する。開発対象ソフトウェア２０は、動作中に動的メモリ領域の確保が必要となると、動的メモリ領域確保の要求を、動的メモリ領域をメモリ＃１およびメモリ＃２のうち何れに確保するかを指示する情報と共に、情報処理装置シミュレータ１００に通知する（ＳＥＱ１９５1）。なお、動的メモリ領域確保の要求の通知方法は、図１９のＳＥＱ１５４1で説明した方法と同様なので、ここでの詳細な説明を省略する。
【０１７２】
例えばメモリ＃２に対して動的メモリ領域を確保する場合、情報処理装置シミュレータ１００は、この要求に応じて、メモリ＃２に対応する仮想領域１２２’に対して、図２７に領域２０ｄとして例示されるように、開発対象ソフトウェア２０用の動的メモリ領域を確保すると共に、メモリ消費量測定ツール１０１に対して、仮想領域１２２’におけるメモリ使用量の測定を依頼する（ＳＥＱ１９６1）。メモリ消費量測定ツール１０１は、この依頼に応じて、仮想領域１２２’のメモリ使用量を測定する（ＳＥＱ１９７1）。測定された測定値Ｎ2-1は、メモリ消費量測定ツール１０１に保持される。
【０１７３】
また、開発対象ソフトウェア２０は、メモリ＃１に対する動的メモリ領域の確保が必要になると、動的メモリ領域確保の要求を、動的メモリ領域をメモリ＃１に確保することを指示する情報と共に、情報処理装置シミュレータ１００に通知する（ＳＥＱ１９５2）。情報処理装置シミュレータ１００は、この要求に応じて、メモリ＃１に対応する仮想領域１２２に対して、図２７に領域２０ｃとして例示されるように、開発対象ソフトウェア２０用の動的メモリ領域を確保すると共に、メモリ消費量測定ツール１０１に対して、仮想領域１２２におけるメモリ使用量の測定を依頼する（ＳＥＱ１９６2）。メモリ消費量測定ツール１０１は、この依頼に応じて、仮想領域１２２のメモリ使用量を測定する（ＳＥＱ１９７2）。測定された測定値Ｎ1-1は、メモリ消費量測定ツール１０１に保持される。
【０１７４】
以降、情報処理装置シミュレータ１００は、開発対象ソフトウェア２０から、動的メモリ領域確保の要求と、動的メモリ領域をメモリ＃１およびメモリ＃２の何れに確保するかを指示する情報とを受け取る毎（ＳＥＱ１９５3〜ＳＥＱ１９５n）に、指示に従い仮想領域１２２または１２２’に動的メモリ領域を確保すると共に、メモリ消費量測定ツール１０１に対して仮想領域１２２または１２２’におけるメモリ使用量の測定を依頼する（ＳＥＱ１９６3〜ＳＥＱ１９６n）。メモリ消費量測定ツール１０１は、メモリ使用量測定の依頼に応じて、依頼を受けた時点での仮想領域１２２または１２２’のメモリ使用量を測定する（ＳＥＱ１９７3〜ＳＥＱ１９７n）。仮想領域１２２の使用量について測定された各測定値Ｎ1-2、Ｎ1-3、…、Ｎ1-n、ならびに、仮想領域１２２’の使用量について測定された各測定値Ｎ2-2、Ｎ2-3、…、Ｎ2-nは、それぞれメモリ消費量測定ツール１０１に保持される。
【０１７５】
開発対象ソフトウェア２０の動作が終了されると、その旨が開発対象ソフトウェア２０から情報処理装置シミュレータ１００を介してメモリ消費量測定ツール１０１に通知される（ＳＥＱ１９９、ＳＥＱ２００）。メモリ消費量測定ツール１０１は、この通知に応じて、仮想領域１２２および１２２’それぞれについて、その時点でのメモリ使用量を測定する（ＳＥＱ２０１、ＳＥＱ２０２）。ＳＥＱ２０１で仮想領域１２２について測定された測定値を、測定値Ｎ1-mとし、ＳＥＱ２０２で仮想領域１２２’について測定された測定値を、測定値Ｎ2-mとする。
【０１７６】
メモリ消費量測定ツール１０１は、上述のＳＥＱ１９０およびＳＥＱ１９１、ＳＥＱ１９７1〜ＳＥＱ１９７n、ならびに、ＳＥＱ２０１およびＳＥＱ２０２で測定された測定値に基づき、仮想領域１２２および１２２’のそれぞれについて、動作中の開発対象ソフトウェア２０によるメモリ使用量が適切であるか否かを判定する（ＳＥＱ２０３）。
【０１７７】
すなわち、メモリ消費量測定ツール１０１は、仮想領域１２２について、ＳＥＱ１９７1以降の各タイミングで測定したメモリ使用量の測定値Ｎ1-1、Ｎ1-2、…のそれぞれから、ＳＥＱ１９０で測定した測定値Ｍ1を減じる。そして、減算結果のうち少なくとも１つが、図２４（ａ）に示したメモリ＃１用の測定条件テーブルにおける動作中の規定値を超えている場合に、当該開発対象ソフトウェア２０の動作中におけるメモリ＃１のメモリ消費量が適切ではないと判定する。
【０１７８】
より具体的に説明する。規定値ＭMAX6を、図２４（ａ）に示したメモリ＃１用の測定条件テーブルにおける動作中の規定値とする。各測定値Ｎ1-x（すなわち測定値Ｎ1-1、Ｎ1-2、…、ならびに、測定値Ｎ1-m）が下記の式（１０）を全て満たしている場合に、仮想領域１２２のメモリ消費量が適切であると判定する。一方、各測定値Ｎ1-xのうち少なくとも１つが下記の式（１０）を満たしていない場合に、仮想領域１２２のメモリ消費量が異常であると判定する。
Ｎ1-x−Ｍ1≦ＭMAX6    …（１０）
【０１７９】
同様に、メモリ消費量測定ツール１０１は、仮想領域１２２’について、ＳＥＱ１９７1以降の各タイミングで測定したメモリ使用量の測定値Ｎ2-1、Ｎ2-2、…のそれぞれから、ＳＥＱ１９１で測定した測定値Ｍ2を減じる。そして、減算結果のうち少なくとも１つが、図２４（ｂ）に示したメモリ＃２用の測定条件テーブルにおける動作中の規定値を超えている場合に、当該開発対象ソフトウェア２０の動作中におけるメモリ＃２のメモリ消費量が適切ではないと判定する。
【０１８０】
より具体的には、規定値ＭMAX7を、図２４（ｂ）に示したメモリ＃２用の測定条件テーブルにおける動作中の規定値とする。各測定値Ｎ2-x（すなわち測定値Ｎ2-1、Ｎ2-2、…、ならびに、測定値Ｎ2-m）が下記の式（１１）を全て満たしている場合に、仮想領域１２２’のメモリ消費量が適切であると判定する。一方、各測定値Ｎ2-xのうち少なくとも１つが下記の式（１１）を満たしていない場合に、仮想領域１２２’のメモリ消費量が異常であると判定する。
Ｎ2-x−Ｍ2≦ＭMAX7    …（１１）
【０１８１】
メモリ消費量測定ツール１０１は、このメモリ消費量に関する判定結果を、ＵＩ機能により表示部３２０に表示させるなどにより、ユーザに通知することが好ましい。メモリ消費量が異常であると判定された場合は、測定対象とされた開発対象ソフトウェア２０を見直す必要があることになる。
【０１８２】
なお、上述では、本実施形態の変形例４を、動作中のメモリ消費量について検査を行うものとして説明したが、これはこの例に限定されない。すなわち、開発対象ソフトウェア２０の追加および起動の際のメモリ消費量を、複数のメモリについて測定してもよい。
【０１８３】
このように、本実施形態の第４の変形例を用いることで、開発対象ソフトウェア２０が複数のメモリを用いて動作する場合についても、メモリ消費量の検査を行うことができる。
【０１８４】
なお、上述した本発明の実施形態および実施形態の各変形例では、開発対象ソフトウェア２０の内部処理の検証を、ＯＳ１３２上に構築された仮想システム１５０上で実行するように説明したが、これはこの例に限定されない。本実施形態による内部処理の検証は、内部処理の検証に係るソフトウェア以外の、例えば汎用ソフトウェアの動作を制限することで、仮想システム１５０を用いないＯＳ１３２上に情報処理装置１３におけるソフトウェアの実行環境を仮想的に構築し、この仮想環境上で開発対象ソフトウェア２０の内部処理の検証を実行するようにもできる。
【０１８５】
例えば、情報処理装置シミュレータ１００は、メモリ１２０に対して開発対象ソフトウェア２０が動作するための所定の領域を確保する。メモリ消費量測定ツール１０１は、このメモリ１２０に確保された領域のメモリ使用量を、各タイミングで測定する。それと共に、情報処理装置シミュレータ１００は、開発対象ソフトウェア２０のインストール対象である情報処理装置１３によるプラットフォームが有するＡＰＩを当該開発対象ソフトウェア２０に対して提供する。これにより、開発対象ソフトウェア２０が動作中のメモリ使用量を測定することができる。
【符号の説明】
【０１８６】
１０  ソフトウェア開発キット
１１  汎用ＰＣ
１２  機能拡張ソフトウェア
１３  情報処理装置
２０  開発対象ソフトウェア
１００  情報処理装置シミュレータ
１０１  メモリ消費量測定ツール
１０２  ＡＰＩ利用ログ記録ツール
１２０  メモリ
１２２  仮想領域
１３１  ＣＰＵ
１３２  ＯＳ
１５０  仮想システム
【先行技術文献】
【特許文献】
【０１８７】
【特許文献１】特開２００６−２９３４１７号公報
【特許文献２】特開２００６−２５２５５２号公報
【図１】
2012103991.tif 000003
【図２】
2012103991.tif 000004
【図３】
2012103991.tif 000005
【図４】
2012103991.tif 000006
【図５】
2012103991.tif 000007
【図６】
2012103991.tif 000008
【図７】
2012103991.tif 000009
【図８】
2012103991.tif 000010
【図９】
2012103991.tif 000011
【図１０】
2012103991.tif 000012
【図１１】
2012103991.tif 000013
【図１２】
2012103991.tif 000014
【図１３】
2012103991.tif 000015
【図１４】
2012103991.tif 000016
【図１５】
2012103991.tif 000017
【図１６】
2012103991.tif 000018
【図１７】
2012103991.tif 000019
【図１８】
2012103991.tif 000020
【図１９】
2012103991.tif 000021
【図２０】
2012103991.tif 000022
【図２１】
2012103991.tif 000023
【図２２】
2012103991.tif 000024
【図２３】
2012103991.tif 000025
【図２４】
2012103991.tif 000026
【図２５】
2012103991.tif 000027
【図２６】
2012103991.tif 000028
【図２７】
2012103991.tif 000029