(57)【要約】【課題】開発されるソフトウェアが情報処理装置の動作に悪影響を与えないことを当該情報処理装置にインストールされる前に確認可能なソフトウェア開発支援技術を提供する。【解決手段】第１の情報処理装置にインストールされる第１のソフトウェアの開発を支援するためのプログラムを実行する第２の情報処理装置は、第１のソフトウェアを実行し、第１のソフトウェアにより、第１の情報処理装置のデバイスＡＰＩが呼び出された場合、デバイス占有時間及びデバイス占有率を計算し、第１の情報処理装置にインストールされた第２のソフトウェアの実行によるデバイス占有率を示すデバイス占有率情報を取得し、これらのデバイス占有率を用いて、第１のソフトウェアと第２のソフトウェアとの実行によるデバイス競合の有無を評価する。【選択図】図１
2012103745.tif 000002
【特許請求の範囲】
【請求項１】
第１の情報処理装置にインストールされる第１のソフトウェアの開発を支援するためのプログラムであって、
第２の情報処理装置の有するコンピュータを、
前記第１のソフトウェアを実行する実行手段と、
前記実行手段が実行した前記第１のソフトウェアにより、前記第１の情報処理装置に搭載されたデバイスを操作するために用いられるデバイスＡＰＩ（Application Program Interface）が呼び出された場合、前記デバイスＡＰＩの呼び出しによって前記デバイスが占有されるデバイス占有時間及び前記デバイスが占有される割合を示すデバイス占有率を計算するシミュレーション計算手段と、
前記第１の情報処理装置にインストールされた第２のソフトウェアの実行によってデバイスが占有される割合であるデバイス占有率を示すデバイス占有率情報を取得する取得手段と、
前記シミュレーション計算手段が計算した前記デバイス占有率である第１のデバイス占有率と、前記デバイス占有率情報によって示される前記デバイス占有率である第２のデバイス占有率とを用いて、前記第１のソフトウェアと前記第２のソフトウェアとの実行によるデバイス競合の有無を評価する競合評価手段として機能させる
ことを特徴とするソフトウェア開発支援プログラム。
【請求項２】
前記実行手段は、テストシナリオに従って、前記第１のソフトウェアを実行する
ことを特徴とする請求項１に記載のソフトウェア開発支援プログラム。
【請求項３】
前記取得手段は、前記第２の情報処理装置と接続されるサーバから前記デバイス占有率情報を取得する
ことを特徴とする請求項１又は２に記載のソフトウェア開発支援プログラム。
【請求項４】
前記シミュレーション計算手段は、
前記実行手段が実行した前記第１のソフトウェアにより、前記デバイスＡＰＩが呼び出された場合、前記デバイス占有時間を計算する第１計算手段と、
前記第１の情報処理装置での前記第１のソフトウェアの実行性能と前記第２の情報処理装置での前記第１のソフトウェアの実行性能との性能差を表す係数を用いて、前記デバイス占有時間を補正する補正手段と、
前記補正手段が補正した前記デバイス占有時間を用いて、前記デバイス占有率を計算する第２計算手段とを有する
ことを特徴とする請求項１乃至３のいずれか一項に記載のソフトウェア開発支援プログラム。
【請求項５】
前記競合評価手段は、前記第１のデバイス占有率の時間推移と、前記第１のデバイス占有率の時間推移とを用いて、前記デバイス競合の有無を評価する
ことを特徴とする請求項４に記載のソフトウェア開発支援プログラム。
【請求項６】
前記競合評価手段は、前記係数を用いて、前記第１の情報処理装置と時間軸を合わせて、前記第１のデバイス占有率の時間推移を計算して、前記第１のデバイス占有率の時間推移と、前記第１のデバイス占有率の時間推移とを用いて、前記デバイス競合の有無を評価する
ことを特徴とする請求項５に記載のソフトウェア開発支援プログラム。
【請求項７】
前記第１の情報処理装置と前記第２の情報処理装置とで同一の前記第１のソフトウェアを同一の前記テストシナリオに従って実行した場合の実行時間の比率を用いて、前記係数を計算する係数計算手段として前記コンピュータを更に機能させる
ことを特徴とする請求項４乃至６のいずれか一項に記載のソフトウェア開発支援プログラム。
【請求項８】
前記競合評価手段は、
前記第１のデバイス占有率と、前記第２のデバイス占有率との最大値の和が所定値を超えているか否かを判定する判定手段と、
前記和が所定値を越えていると前記判定手段が判定した場合、前記第１のデバイス占有率及び第２のデバイス占有率の時間推移を計算して、前記第１のデバイス占有率及び第２のデバイス占有率の重ね合わせを、タイミングを異ならせて各々行うことにより、デバイス競合が発生するタイミングを探し出す探索手段と、
前記デバイス競合が発生するタイミングを前記探索手段が探し出した場合、当該タイミングで前記第１のデバイス占有率が前記所定値を超える部分の大きさから、前記デバイス競合の発生により起こり得る遅延時間を見積もる概算手段とを有する
ことを特徴とする請求項１乃至７のいずれか一項に記載のソフトウェア開発支援プログラム。
【請求項９】
許容範囲内の前記遅延時間である遅延許容時間を前記第１のソフトウェア毎に記憶する記憶手段として前記コンピュータを更に機能させ、
前記競合評価手段は、前記概算手段が見積もった前記遅延時間が、前記第１のソフトウェアに対して前記記憶手段に記憶された前記遅延許容時間より大きいか否かを判定することにより、前記デバイス競合の発生の有無を評価する第１評価手段を更に有する
ことを特徴とする請求項８に記載のソフトウェア開発支援プログラム。
【請求項１０】
前記第１のソフトウェアにおいて前記デバイスＡＰＩを呼び出す箇所のうち、前記実行手段が前記テストシナリオに従って前記第１のソフトウェアを実行した際に呼び出された箇所の割合を示すカバレッジを計測することにより、前記テストシナリオの妥当性を評価するシナリオ評価手段として前記コンピュータを機能させる
ことを特徴とする請求項１乃至９のいずれか一項に記載のソフトウェア開発支援プログラム。
【請求項１１】
前記シナリオ評価手段は、
前記第１のソフトウェアのソースコードを解析して、前記箇所を抽出する抽出手段と、
前記抽出手段が抽出した前記箇所に、前記デバイスＡＰＩが呼び出された箇所を示すログを出力するためのログ出力コードを埋め込む埋込手段と、
前記ログ出力コードを埋め込んだ前記ソースコードをビルドして、実行オブジェクトを作成するビルド手段と、
前記ビルド手段が作成した前記実行オブジェクトが実行された場合に出力された前記ログによって示される前記箇所と、前記抽出手段が抽出した前記箇所とを用いて、前記カバレッジを計測することにより、前記テスオシナリオの妥当性を評価する第２評価手段とを有し、
前記実行手段は、前記テストシナリオに従って、前記ビルド手段が作成した前記実行オブジェクトを実行する
ことを特徴とする請求項１０に記載のソフトウェア開発支援プログラム。
【請求項１２】
前記取得手段は、前記第１の情報処理装置に標準でインストールされるソフトウェア及び利用率が所定率以上であるソフトウェアのうち少なくとも一方である前記第２のソフトウェアの前記デバイス占有率情報を前記サーバから取得する
ことを特徴とする請求項３に記載のソフトウェア開発支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア開発支援プログラムに関するものである。
【背景技術】
【０００２】
近年、顧客の多様な要望に応えるために、ＳＤＫ（ソフトウェア開発キット：Software Development Kit）を用いて開発したソフトウェアがインストールされた情報処理装置が登場し始めている。このような情報処理装置では、機能を追加したり拡張したり修正したり、全く新しいサービスやソフトウェアを追加したりすることが可能である。ソフトウェアの追加による機能の拡張は、それまで装置製造元であるメーカによってのみ開発されていたソフトウェアの開発を外部開発者（3rdベンダ）により実施可能にしたことにより、以下の利点を生みつつある。例えば、情報処理装置の利用者と近い距離で開発を行うことで、コミュニケーション密度を向上し、利用者の要望を正確に素早く把握することができるという利点である。また、ソフトウェア開発者数の増加にともない、短期間で大量のきめ細やかなソフトウェアを開発することができるという利点である。
【０００３】
このようなＳＤＫについては、例えば、特許文献１に記載されている。特許文献１に記載されているＳＤＫでは、アプリケーションプログラムのソースコードで使用されるＡＰＩ（Application Program Interface）である使用ＡＰＩに関する情報を抽出して、開発元毎に異なる種類の解析を行い、使用ＡＰＩの集合と当該アプリケーションプログラムでの使用が許可されているＡＰＩの集合とを照合して、使用ＡＰＩの正当性を検証する。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、開発したソフトウェアの品質のバラツキが大きく、ソフトウェアがインストールされた情報処理装置の動作に悪影響を与えてしまう場合があるという問題がある。しかし、従来のＳＤＫでは、このような問題を検出することが困難であった。具体的には、例えば、複数のソフトウェアを同時に動作させると、同一のデバイスを同時に使用しようとして競合が発生してソフトウェアのパフォーマンスが低下したり、障害が発生したりする恐れがある。即ち、従来のＳＤＫでは、ソフトウェア単体で生じる問題を検出することは可能であるが、デバイスの占有や複数のソフトウェア同士の組み合わせによって生じる問題を検出することは困難であった。
【０００５】
本発明は、上記に鑑みてなされたものであって、開発されるソフトウェアが情報処理装置の動作に悪影響を与えないことを当該情報処理装置にインストールされる前に確認可能なソフトウェア開発支援プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上述した課題を解決し、目的を達成するために、本発明は、第１の情報処理装置にインストールされる第１のソフトウェアの開発を支援するためのプログラムであって、第２の情報処理装置の有するコンピュータを、前記第１のソフトウェアを実行する実行手段と、前記実行手段が実行した前記第１のソフトウェアにより、前記第１の情報処理装置に搭載されたデバイスを操作するために用いられるデバイスＡＰＩ（Application Program Interface）が呼び出された場合、前記デバイスＡＰＩの呼び出しによって前記デバイスが占有されるデバイス占有時間及び前記デバイスが占有される割合を示すデバイス占有率を計算するシミュレーション計算手段と、前記第１の情報処理装置にインストールされた第２のソフトウェアの実行によってデバイスが占有される割合であるデバイス占有率を示すデバイス占有率情報を取得する取得手段と、前記シミュレーション計算手段が計算した前記デバイス占有率である第１のデバイス占有率と、前記デバイス占有率情報によって示される前記デバイス占有率である第２のデバイス占有率とを用いて、前記第１のソフトウェアと前記第２のソフトウェアとの実行によるデバイス競合の有無を評価する競合評価手段として機能させることを特徴とする。
【発明の効果】
【０００７】
本発明によれば、開発されるソフトウェアが情報処理装置の動作に悪影響を与えないことを当該情報処理装置にインストールされる前に確認可能になる。
【図面の簡単な説明】
【０００８】
【図１】図１は、一実施の形態に係るソフトウェアライフサイクルを例示する図である。
【図２】図２は、汎用ＰＣ１０にインストールされるＳＤＫ５０の機能的構成を例示する図である。
【図３】図３は、デバイス競合評価処理の手順を示すフローチャートである。
【図４】図４は、プロッタ占有時間算出テーブルのデータ構成を例示する図である。
【図５】図５は、環境性能差補正係数計算処理の手順を示すフローチャートである。
【図６】図６は、図３のステップＳ８でデバイスシミュレーションモジュール５３がデバイス占有率を計算する方法を説明するための図である。
【図７】図７は、デバイス競合が発生する可能性の有無をデバイス競合評価モジュール５５が評価する方法を説明するための図である。
【図８】図８は、テストシナリオ妥当性評価処理の手順を示すフローチャートである。
【発明を実施するための形態】
【０００９】
以下に添付図面を参照して、この発明にかかるソフトウェア開発支援プログラムの一実施の形態を詳細に説明する。
【００１０】
まず、本実施の形態に係るソフトウェアライフサイクルについて図１を用いて説明する。本実施の形態においては、ソフトウェアを開発するための汎用ＰＣ（Personal Computer）１０にＳＤＫ５０（ソフトウェア開発キット：Software Development Kit）がインストールされ、当該汎用ＰＣ１０で当該ＳＤＫ５０が用いられてソフトウェアが作成される。ＳＤＫ５０のインストールは、当該ソフトウェアを記録した記録媒体を汎用ＰＣ１０が読み出すことにより行うようにしても良いし、当該ＳＤＫ５０を予め記憶したＲＯＭ（Read Only Memory）やＨＤＤ（Hard Disk Drive）などの記憶装置を汎用ＰＣ１０に組み込むことにより行うようにしても良い。汎用ＰＣ１０で作成されたソフトウェアは、情報処理装置２０にインストールされて当該情報処理装置２０で利用される。作成されたソフトウェアのインストールは、当該ソフトウェアを記録した記録媒体を情報処理装置２０で読み出すことにより行うようにしても良いし、当該ソフトウェアをソフトウェア提供用サーバ３０に一旦アップロードして、当該ソフトウェア提供用サーバ３０からネットワークを介して当該ソフトウェアを情報処理装置２０がダウンロードすることにより行うようにしても良い。ネットワークとは、例えば、ＬＡＮ（Local Area Network）、イントラネット、イーサネット（登録商標）又はインターネットなどである。情報処理装置２０は、例えば、画像を処理する画像処理装置であり、情報処理装置２０には、デバイスとして、例えば、画像を読み取るスキャナ、画像を形成するプロッタ、画像をＦＡＸ通信により送受信するＦＡＸ通信装置、画像を投影する画像投影装置などの画像の入出力に関わるデバイスが搭載されている。また、汎用ＰＣ１０は、評価情報サーバ４０とネットワークを介して接続される。評価情報サーバ４０は、既に開発されたソフトウェア（既存ソフトウェアという）に関する後述のデバイス占有率情報及びデバイス競合情報を含む評価情報や、テスト実行時間情報を記憶する。
【００１１】
ここで、汎用ＰＣ１０のハードウェア構成について説明する。本実施の形態の汎用ＰＣ１０は、装置全体を制御するＣＰＵ（Central Processing Unit）等の制御部と、各種データや各種プログラムを記憶するＲＯＭやＲＡＭ（Random Access Memory）等の主記憶部と、各種データや各種プログラム等の各種ソフトウェアを記憶するＨＤＤやＣＤ（Compact Disk）ドライブ装置等の補助記憶部と、これらを接続するバスとを備えており、通常のコンピュータを利用したハードウェア構成となっている。ＲＯＭには、例えば、ＯＳ（Operating System）等のソフトウェアが記憶される。ＨＤＤには、例えば、各種アプリケーションプログラム等のソフトウェアが記憶される。また、汎用ＰＣ１０には、情報を表示する表示部と、ユーザの指示入力を受け付けるキーボードやマウス等の操作入力部と、外部装置の通信を制御する通信Ｉ／Ｆ（interface）とが有線又は無線により各々接続される。
【００１２】
次に、このようなハードウェア構成の汎用ＰＣ１０にインストールされるＳＤＫ５０の機能的構成について図２を用いて説明する。本実施の形態に係るＳＤＫ５０は、情報処理装置シミュレータ５１と、デバイス競合評価モジュール５５と、環境性能差補正モジュール５６と、テストシナリオ妥当性評価モジュール５７と、ログ記録モジュール５８と、性能基準アプリ実行オブジェクト５９と、テストシナリオ実行モジュール６０と、ビルドモジュール６１と、ソースコードエディタモジュール６２とを有する。これらは例えば汎用ＰＣ１０の有するＨＤＤなどの補助記憶部に記憶されるプログラムモジュールであり、汎用ＰＣ１０の有するＣＰＵにより実行されることにより各種機能を実現させる。
【００１３】
情報処理装置シミュレータ５１は、開発されるソフトウェア（開発対象ソフトウェアという）を、当該開発対象ソフトウェアが実際に実行される情報処理装置２０を使わずに、汎用ＰＣ１０上で実行することにより、当該開発対象ソフトウェアの動作をシミュレートするものである。尚、ＳＤＫ５０によりデバイス競合の発生の有無を評価される開発対象ソフトウェアは、具体的には、そのソースコード（評価対象アプリソースコードという）と、当該評価対象アプリソースコードのビルドにより作成される実行オブジェクトである評価対象アプリ実行オブジェクトとを含む。情報処理装置シミュレータ５１は、アプリ管理モジュール５２と、デバイスシミュレーションモジュール５３と、一般ＡＰＩ提供モジュール５４とを有する。
【００１４】
アプリ管理モジュール５２は、評価対象実行オブジェクトや後述の性能基準アプリの実行オブジェクトである性能基準アプリ実行オブジェクト５９を汎用ＰＣ１０にインストールしたり汎用ＰＣ１０からアンインストールしたりする。デバイスシミュレーションモジュール５３は、情報処理装置２０に搭載されたデバイスを操作するために用いるＡＰＩであるデバイスＡＰＩを評価対象アプリ実行オブジェクトに提供し、また、デバイスＡＰＩ呼出時にデバイスを占有する時間（デバイス占有時間という）やデバイスを占有する割合（デバイス占有率という）をシミュレーション計算する。また、デバイスシミュレーションモジュール５３は、後述の環境性能差補正モジュール５６から与えられた性能差補正係数を用いて、シミュレーション計算したデバイス占有時間を補正する。一般ＡＰＩ提供モジュール５４は、情報処理装置２０の一般ＡＰＩ（デバイスＡＰＩ以外のＡＰＩ）を評価対象アプリ実行オブジェクトに提供する。
【００１５】
テストシナリオ実行モジュール６０には、評価対象アプリ実行オブジェクトに要求する処理の内容を示す任意のテストシナリオが設定され、テストシナリオ実行モジュール６０は、当該テストシナリオに従ってテストを実行して、情報処理装置シミュレータ５１によってインストールされた評価対象アプリ実行オブジェクトによって実現される各種機能を順次実現させる。また、後述の環境性能差補正モジュール５６が環境性能差補正係数を計算する際に、テストシナリオ実行モジュール６０には性能基準評価用テストシナリオが設定され、テストシナリオ実行モジュール６０は、当該性能基準評価用テストシナリオに従ってテストを実行して、情報処理装置シミュレータ５１によってインストールされた性能基準アプリ実行オブジェクト５９によって実現される各種機能を順次実現させる。デバイス競合評価モジュール５５は、評価対象アプリ実行オブジェクトによってデバイスＡＰＩが呼び出される場合、評価情報サーバ４０から１つ又は複数の既存ソフトウェアに関するデバイス占有率を示すデバイス占有率情報を取得して、当該デバイス占有率情報によって示されるデバイス占有率と、評価対象アプリ実行オブジェクトのデバイス占有率とを比較し、デバイス競合の発生の可能性の有無を評価する。
【００１６】
環境性能差補正モジュール５６は、情報処理装置２０での開発対象ソフトウェアの実行性能と情報処理装置シミュレータ５１での開発対象ソフトウェアの実行性能との性能差を示す環境性能差補正係数を計算してこれをデバイスシミュレーションモジュール５３に与える。性能基準アプリ実行オブジェクト５９は、環境性能差補正モジュール５６が環境性能差補正係数を計算する際にインストールされるものであり、テストシナリオ実行モジュール６０が性能基準評価用テストシナリオに従ってテストを実行して各種機能を実現させる際に、一般ＡＰＩを呼び出す。即ち、この性能基準アプリ実行オブジェクト５９は、デバイスＡＰＩを使用せず、一般ＡＰＩのみを使って機能を実現するように構成されている。
【００１７】
テストシナリオ妥当性評価モジュール５７は、テストシナリオ実行モジュール６０に設定されたテストシナリオが、開発対象ソフトウェアに関しデバイス競合の発生の可能性の有無を評価する上で妥当なものであるか否かを評価する。ログ記録モジュール５８は、テストシナリオ妥当性評価モジュール５７がテストシナリオの妥当性を評価する際に、評価対象アプリ実行オブジェクトの実行に際して、デバイスＡＰＩがどこから呼び出されたかを示すログを記録する。ビルドモジュール６１は、評価対象アプリソースコードをビルドし、評価対象アプリ実行オブジェクトを作成する。ソースコードエディタモジュール６２は、開発対象ソフトウェアのソースコードを記述するためのものである。
【００１８】
また、ＳＤＫ５０は、開発対象ソフトウェア毎に予め決められている後述の最大許容遅延時間を記憶する。これはＳＤＫ５０の汎用ＰＣ１０へのインストール時に例えばＨＤＤ等の補助記憶部に記憶される。
【００１９】
次に、開発対象ソフトウェアを他のソフトウェアと同時に動作させた場合にデバイス競合が発生する可能性があるか否かを評価するデバイス競合評価処理の手順について図３を用いて説明する。まず、ソフトウェア開発者が汎用ＰＣ１０の操作入力部において、デバイス競合評価処理の実行を指示する操作入力を行うと、汎用ＰＣ１０は、デバイス競合評価モジュール５５の機能により、当該操作入力を受け付ける（ステップＳ１）。デバイス競合評価モジュール５５は、開発対象ソフトウェアの実行オブジェクトである評価対象アプリ実行オブジェクトのインストールをアプリ管理モジュール５２に指示し（ステップＳ２）、テストシナリオ実行モジュール６０にテストシナリオを設定して（ステップＳ４）、テストの実行を指示する（ステップＳ５）。アプリ管理モジュール５２が評価対象アプリ実行オブジェクトを汎用ＰＣ１０にインストールし（ステップＳ３）、テストシナリオ実行モジュール６０は、設定されたテストシナリオに従って評価対象アプリ実行オブジェクトを実行し（ステップＳ６）、当該評価対象アプリ実行オブジェクトの実行により実現される各種機能を順次実現させる。このとき、評価対象アプリ実行オブジェクトは、機能を実現するために必要なＡＰＩを呼び出す。もしその際にデバイスＡＰＩが呼び出された場合は（ステップＳ７）、デバイスシミュレーションモジュール５３がデバイス占有時間やデバイス占有率をシミュレーション計算し（ステップＳ８）、デバイスＡＰＩの呼出順、呼び出しタイミング、デバイス占有時間及びデバイス占有率をログに記録する（ステップＳ９）。
【００２０】
テストシナリオ実行モジュール６０は、テストが完了すると、その旨を示すテスト完了通知をデバイス競合評価モジュール５５に渡す（ステップＳ１０）。デバイス競合評価モジュール５５は、テスト完了通知を受け取ると、評価対象アプリ実行オブジェクトのアンインストールをアプリ管理モジュール５２に指示する（ステップＳ１１）。アプリ管理モジュール５２が評価対象アプリ実行オブジェクトをアンインストールすると（ステップＳ１２）、デバイス競合評価モジュール５５は、デバイスシミュレーションモジュール５３が開発対象ソフトウェアに対してシミュレーション計算したデバイス占有率を取得し（ステップＳ１３）、既存ソフトウェアに関するデバイス占有率情報を評価情報サーバ４０から取得し（ステップＳ１４）、前者のデバイス占有率と、後者のデバイス占有率情報によって示されるデバイス占有率とを比較して、開発対象ソフトウェアと既存ソフトウェアとが同時に動作する場合にデバイス競合が発生する可能性があるか否かを評価する（ステップＳ１５）。
【００２１】
ここで開発対象ソフトウェアとのデバイス競合の発生の可能性の有無が評価される既存ソフトウェアは、１つでも複数でも構わない。また、当該既存ソフトウェアは、ソフトウェア開発者が任意に指定するようにしても良いし、評価情報サーバ４０が選択するようにしても良い。例えば、ソフトウェア開発者が汎用ＰＣ１０の操作入力部において開発対象ソフトウェアがインストールされる情報処理装置２０の機種名を指定する操作入力を行い、当該操作入力を受け付けた汎用ＰＣ１０が当該機種名を示す情報を評価情報サーバ４０に送信し、評価情報サーバ４０が、当該情報によって示される機種に標準でインストールされる既存ソフトウェアやユーザ数が多ったり（例えばユーザ数が所定数以上である）利用率が高かったり（例えば利用率が所定率以上である）する既存ソフトウェアを選択して、当該既存ソフトウェアに関するデバイス占有率情報を汎用ＰＣ１０に送信するようにしても良い。これらの既存ソフトウェアは、開発対象ソフトウェアと組み合わせて利用される可能性が高いので、デバイス競合評価モジュール５５がこのような既存ソフトウェアのデバイス占有率情報を取得して、当該既存ソフトウェアと当該開発対象ソフトウェアとのデバイス競合の発生の可能性の有無を評価することで、効率良く且つ漏れのない評価を行うことが可能になる。
【００２２】
そして、デバイス競合評価モジュール５５は、その評価結果を例えば汎用ＰＣ１０の表示部に表示させることによりソフトウェア開発者に通知する（ステップＳ１６）。当該評価結果を見たソフトウェア開発者は、開発対象ソフトウェアを修正する必要がないと判断した場合、当該開発対象ソフトウェアのデバイス占有率を示すデバイス占有率情報と、当該既存ソフトウェアとのデバイス競合の発生の可能性の有無を示すデバイス競合情報とを含む評価情報を評価情報サーバ４０に登録することができる。即ち、ソフトウェア開発者は、汎用ＰＣ１０の操作入力部において当該評価情報の登録を指示する操作入力を行うと、汎用ＰＣ１０は当該操作入力を受け付け（ステップＳ１７）、当該評価情報を評価情報サーバ４０に送信する（ステップＳ１８）。評価情報サーバ４０は、当該評価情報を受信すると、これを記憶する。このようにして、今回デバイス競合の発生の可能性の有無が評価された開発対象ソフトウェアに関する評価情報が既存ソフトウェアに関する評価情報として評価情報サーバ４０に記憶される。このような構成によれば、今回の開発対象ソフトウェアとは異なる他の開発対象ソフトウェアに対してデバイス競合の発生の有無を評価する際に、今回の開発対象ソフトウェアに関する評価情報を利用したり、当該他の開発対象ソフトウェアのインストール時にデバイス競合の発生の可能性がある旨を例えば表示部に表示させることによりソフトウェア開発者に通知したりすることができる。
【００２３】
次に、図３のステップＳ８でデバイスシミュレーションモジュール５３がデバイス占有時間を計算する方法について説明する。デバイス占有時間の計算方法は、デバイスの種類や、どれだけ精密なシミュレーションモデルを作るかによって様々であるが、ここでは、デバイスとしてプロッタを例にして、当該プロッタを占有するデバイス占有時間を、テーブル（プロッタ占有時間算出テーブルという）を用いて計算する方法について説明する。プロッタ占有時間算出テーブルは、ＳＤＫ５０の汎用ＰＣ１０へのインストール時にＨＤＤなどの補助記憶部に記憶される。図４は、プロッタ占有時間算出テーブルのデータ構成を例示する図である。プロッタ占有時間算出テーブルは、要求種別と、紙サイズと、印刷枚数毎のデバイス占有時間とを示す。要求種別は、プロッタでの画像の形成に際し、カラーで画像を形成する（カラー印刷）かモノクロで画像を形成する（モノクロ印刷）かを示す。紙サイズは、プロッタにより形成された画像が転写される印刷用紙の大きさを示す。同図では、印刷枚数毎のデバイス占有時間として、１枚目の印刷用紙及び２枚目以降の印刷用紙に対してそれぞれ画像の形成及び転写に係りプロッタが占有される時間が示される。
【００２４】
ここで、ステップＳ４でテストシナリオ実行モジュール６０に設定されるテストシナリオによって要求される処理の内容は、例えば、プロッタがＡ３の紙サイズの印刷用紙３枚に対してカラー印刷を行うことであるとする。この場合、開発対象ソフトウェアの実行オブジェクトである評価対象アプリ実行オブジェクトによって、プロッタを操作するためのデバイスＡＰＩが呼び出される。そして、ステップＳ８では、デバイスシミュレーションモジュール５３は、当該テストシナリオにおいてプロッタに対して要求される、Ａ３の紙サイズの印刷用紙３枚に対してカラー印刷を行うという処理内容に応じて、プロッタ占有時間算出テーブルを参照して、プロッタに対するデバイス占有時間を計算する。図４の例では、１枚目のデバイス占有時間は１０秒であり、２〜３枚目のデバイス占有時間は各々６秒であるから、これらの値を足し合わせることにより、上述のテストシナリオにおけるプロッタに対するデバイス占有時間は２２秒であると計算される。
【００２５】
ここで、ステップＳ８でデバイスシミュレーションモジュール５３がシミュレーション計算したデバイス占有時間を補正する場合に用いる環境性能差補正係数について説明する。デバイス占有時間を補正するのは以下の理由からである。情報処理装置２０での開発対象ソフトウェアの実行性能と情報処理装置シミュレータ５１での開発対象ソフトウェアの実行性能との性能差が大きい場合は、情報処理装置シミュレータ５１によるシミュレータ環境で開発対象ソフトウェアを実行した際にデバイスを用いる処理以外の処理に係る処理時間が、情報処理装置２０での動作環境に対して長すぎたり短すぎたりということが起こり得る。すると、デバイスを用いる処理以外の処理に係る処理時間とデバイスシミュレーションモジュール５３で計算したデバイス占有時間との比率が狂い、デバイス競合の発生の可能性の有無を評価する際にデバイス占有率の計算を正しく得ることができない恐れがあるからである。この場合、デバイス占有時間に環境性能差補正係数を乗じることによりデバイス占有時間を補正することで、正しいデバイス占有時間を得ることができる。例えば、情報処理装置２０での開発対象ソフトウェアの実行性能が情報処理装置シミュレータ５１での開発対象ソフトウェアの実行性能に対して0.5倍である場合は、0.5を環境性能差補正係数としてデバイス占有時間に乗じることで、補正後のデバイス占有時間を得ることができる。上述の例で、デバイス占有時間が２２秒であると計算された場合、図４に示されるように、補正後のデバイス占有時間は、「0.5×22=11秒」となる。
【００２６】
次に、環境性能差補正係数を計算する環境性能差補正係数計算処理の手順について図５を用いて説明する。ソフトウェア開発者が汎用ＰＣ１０の操作入力部において、環境性能差補正係数によるデバイス占有時間の補正を指示する操作入力を行うと、汎用ＰＣ１０は、環境性能差補正モジュール５６の機能により、当該操作入力を受け付ける（ステップＳ３０）。環境性能差補正モジュール５６は、性能基準アプリ実行オブジェクト５９のインストールをアプリ管理モジュール５２に指示し（ステップＳ３１）、性能基準評価用テストシナリオをテストシナリオ実行モジュール６０に設定し（ステップＳ３３）、テストの実行を指示する（ステップＳ３４）。アプリ管理モジュール５２は、性能基準アプリ実行オブジェクト５９を汎用ＰＣ１０にインストールし（ステップＳ３２）、テストシナリオ実行モジュール６０は、設定された性能基準評価用テストシナリオに従ってテストを実行して（ステップＳ３５）、性能基準アプリ実行オブジェクト５９により実現される各種機能を順次実現させて、一般ＡＰＩを呼び出す（ステップＳ３６）。テストシナリオ実行モジュール６０は、テストを完了すると、その旨を示すテスト完了通知を環境性能差補正モジュール５６に渡す（ステップＳ３７）。環境性能差補正モジュール５６は、テスト完了通知を受け取ると、性能基準アプリ実行オブジェクト５９のアンインストールをアプリ管理モジュール５２に指示する（ステップＳ３８）。アプリ管理モジュール５２は、性能基準アプリ実行オブジェクト５９を汎用ＰＣ１０からアンインストールする（ステップＳ３９）。
【００２７】
環境性能差補正モジュール５６は、テストの実行時間をテストシナリオ実行モジュール６０から取得し（ステップＳ４０）、当該開発対象ソフトウェアについて同じ性能基準評価用テストシナリオに従って当該開発ソフトウェアを実行した情報処理装置２０で測定されたテスト実行時間を示すテスト実行時間情報を評価情報サーバ４０から取得する（ステップＳ４１）。環境性能差補正モジュール５６は、前者のテスト実行時間と、後者のテスト実行時間情報によって示されるテスト実行時間とを用いて、環境性能差補正係数を計算して（ステップＳ４２）、これをデバイスシミュレーションモジュール５３に与える（ステップＳ４３）。例えば、情報処理装置シミュレータ５１でのシミュレータ環境におけるテスト実行時間が100秒であり、情報処理装置２０での動作環境におけるテスト実行時間が200秒であったとすると、「100/200=0.5」が環境性能差補正係数となる。デバイスシミュレーションモジュール５３は、環境性能差補正係数が与えられた場合、図３のステップＳ８では、シミュレーション計算したデバイス占有時間に当該環境性能補正係数を乗じることにより当該デバイス占有時間を補正する。
【００２８】
次に、図３のステップＳ８でデバイスシミュレーションモジュール５３がデバイス占有率を計算する方法について図６を用いて説明する。図５で説明した通り、デバイスシミュレーションモジュール５３は、デバイス占有時間を計算する際に環境性能差補正係数を乗じることで、デバイスを用いる処理以外の処理の処理速度との比率が狂わないようにすることができる。この結果を使ってデバイス占有率の時間推移を計算すると、実際に開発対象ソフトウェアを実行する情報処理装置２０での動作環境と比べて、環境性能差補正係数の分時間軸が伸び縮みすることになる。最終的に既存ソフトウェアのデバイス占有率と比較するには、時間軸を合わせる必要があるが、そのためには環境性能差補正係数の逆数を乗じれば良い。例えば、環境性能差補正係数が0.5の場合は、時間軸方向が0.5倍に縮んだデバイス占有率が得られる。これを元に戻すには、時間軸に0.5の逆数である「1/0.5=2」を乗じれば良い。
【００２９】
次に、図３のステップＳ１５で、開発対象ソフトウェアと他の既存ソフトウェアとが同時に動作している場合にデバイス競合が発生する可能性の有無をデバイス競合評価モジュール５５が評価する方法について図７を用いて説明する。この評価は、１次評価と２次評価と３次評価とに分けられる。１次評価では、デバイス競合評価モジュール５５は、双方のデバイス占有率の最大値の和を計算して、この値が100%を超えていない場合、競合が発生する可能性は無いと判定して、評価を終了し、この値が100%を超える場合、競合が発生する可能性があるため、より詳細な２次評価を行う。２次評価では、デバイス競合評価モジュール５５は、デバイス占有率の時間推移を用いる。デバイス競合評価モジュール５５は、双方のデバイス占有率を、タイミングを少しずつずらしながら何度も重ね合わせ、双方のデバイス占有率の和が100%を超えるタイミングを探す。100%を超えるタイミングがある場合は、デバイス競合評価モジュール５５は、そのタイミングで100%を超える部分の大きさから、デバイス競合による遅延時間を見積もる。こうして、デバイス競合評価モジュール５５は、開発対象ソフトウェアと他のソフトウェアとが同時に動作している場合に発生するデバイス競合により起こり得る最大の遅延時間（最大遅延時間という）を評価する。３次評価では、デバイス競合評価モジュール５５は、２次評価の結果として得られた最大遅延時間と、開発対象ソフトウェアに対して予め記憶された、許容範囲内の最大遅延時間である最大許容遅延時間とを比較して、最大遅延時間が最大許容遅延時間より大きいか否かを判定する。これにより、デバイス競合評価モジュール５５は、デバイス競合によって起こり得る遅延が開発対象ソフトウェアにとって問題か否かを評価する。最大遅延時間が最大許容遅延時間より大きい場合、開発対象ソフトウェアと当該他のソフトウェアとの組み合わせには問題があると言える。
【００３０】
次に、図３を用いて説明したデバイス競合評価処理において、テストシナリオ実行モジュール６０が実行するテストに使用するテストシナリオの妥当性を評価するテストシナリオ妥当性評価処理の手順について図８を用いて説明する。テストシナリオの妥当性の評価は、デバイスＡＰＩ呼出カバレッジ、即ち、開発対象ソフトウェアの実行オブジェクトである評価対象アプリ実行オブジェクトにおいてデバイスＡＰＩを呼び出す箇所（デバイスＡＰＩ呼出箇所）のうち、テストシナリオ実行モジュール６０に設定されたテストシナリオによってその呼び出しが実現された箇所の割合、を評価することによって行う。例えば、評価対象アプリ実行オブジェクトにおいてデバイスＡＰＩ呼出箇所が10箇所あり、テストシナリオ実行モジュール６０がテストシナリオに従って評価対象アプリ実行オブジェクトを実行した結果、そのうち5箇所しかその呼び出しが実現されなかった場合、デバイスＡＰＩ呼出カバレッジは「5/10=50%」である。このデバイスＡＰＩ呼出カバレッジが低いようだと、デバイス占有率を用いてデバイス競合の発生の可能性の有無を評価するためのテストシナリオとしては問題があると言える。
【００３１】
ソフトウェア開発者が汎用ＰＣ１０の操作入力部においてテストシナリオ妥当性評価処理の実施を指示する操作入力を行うと、汎用ＰＣ１０は、テストシナリオ妥当性評価モジュール５７の機能により、当該操作入力を受け付ける（ステップＳ５０）。テストシナリオ妥当性評価モジュール５７は、開発対象ソフトウェアのソースコードである評価対象アプリソースコードを解析して、デバイスＡＰＩ呼出箇所を抽出し（ステップＳ５１）、ソースコードエディタモジュール６２の機能により、当該デバイスＡＰＩ呼出箇所に、デバイスＡＰＩがどこから呼び出されたのかを示すログを出力するためのログ出力コードを埋め込む（ステップＳ５２）。テストシナリオ妥当性評価モジュール５７は、ログ出力コードを埋め込んだ評価対象アプリソースコードのビルドをビルドモジュール６１に指示する（ステップＳ５３）。ビルドモジュール６１は、当該評価対象アプリソースコードをビルドして（ステップＳ５４）、開発対象ソフトウェアの実行オブジェクトである評価対象アプリ実行オブジェクトを作成する（ステップＳ５５）。評価対象アプリ実行オブジェクトが作成されると、テストシナリオ妥当性評価モジュール５７は、当該評価対象アプリ実行オブジェクトのインストールをアプリ管理モジュール５２に指示する（ステップＳ５６）。アプリ管理モジュール５２は、当該開発対象ソフトウェアをインストールする（ステップＳ５７）。その後、テストシナリオ妥当性評価モジュール５７は、テストシナリオ実行モジュール６０にテストシナリオを設定して（ステップＳ５８）、テストの実行を指示する（ステップＳ５９）。テストシナリオ実行モジュール６０は、設定されたテストシナリオに従ってテストを実行して、評価対象アプリ実行オブジェクトによって実現される各種機能を順次実現させる（ステップＳ６０）。そして、ログ出力コードが埋め込まれた箇所、即ち、デバイスＡＰＩ呼出箇所に到達して、デバイスＡＰＩが呼び出されると（ステップＳ６１）、どこからデバイスＡＰＩが呼びだされたか（デバイスＡＰＩ呼出箇所）がログ記録モジュール５８によりログとして記録される（ステップＳ６２）。尚、デバイスシミュレーションモジュール５３でもログを記録しているが、ここで記録しているのはどのデバイスＡＰＩが呼び出されたかであり、そのデバイスＡＰＩがどこから呼ばれたかということではない。このため、テストシナリオ妥当性評価モジュール５７は、デバイスシミュレーションモジュール５３によって記録されるログを用いずにテストシナリオ妥当性評価処理を行う。
【００３２】
テストシナリオ実行モジュール６０は、当該テストが完了すると、その旨を示すテスト完了通知をテストシナリオ妥当性評価モジュール５７に渡す（ステップＳ６３）。テストシナリオ妥当性評価モジュール５７は、テスト完了通知を受け取ると、開発対象ソフトウェアのアンインストールをアプリ管理モジュール５２に指示する（ステップＳ６４）。アプリ管理モジュール５２は、開発対象ソフトウェアを汎用ＰＣ１０からアンインストールする（ステップＳ６５）。また、テストシナリオ妥当性評価モジュール５７は、ステップＳ６２で記録されたログをログ記録モジュール５８から取得して（ステップＳ６６）、当該ログによって示されるデバイスＡＰＩ呼出箇所と、ステップＳ５１で抽出したデバイスＡＰＩ呼出箇所とを用いて、デバイスＡＰＩ呼出カバレッジを計算することにより、テストシナリオの妥当性を評価する（ステップＳ６７）。そして、テストシナリオ妥当性評価モジュール５７は、デバイスＡＰＩ呼出カバレッジの計算結果を評価結果として例えば表示部に表示させることによりソフトウェア開発者に通知する（ステップＳ６８）。
【００３３】
尚、テストシナリオ妥当性評価処理においてテストシナリオ実行モジュール６０が実行するテストに用いるテストシナリオは１つであっても複数であっても構わない。複数である場合は、テストシナリオ妥当性評価モジュール５７は、テストシナリオ毎のデバイスＡＰＩ呼出カバレッジと、全てのテストシナリオトータルでのデバイスＡＰＩ呼出カバレッジとを計算する。
【００３４】
以上のように、本実施の形態においては、ＳＤＫ５０は、情報処理装置２０に搭載されるデバイスのシミュレータであるデバイスシミュレーションモジュール５３を有しており、デバイスＡＰＩの呼び出しに際して、実際のデバイスの代わりにデバイスシミュレーションモジュール５３を機能させて、開発対象ソフトウェアを動作させる。このデバイスシミュレーションモジュール５３により、開発対象ソフトウェアのデバイス占有時間やデバイス占有率をシミュレーション計算して、当該デバイス占有率と、複数の他の既存ソフトウェアのデバイス占有率とを比較することにより、開発対象ソフトウェアと既存ソフトウェアとが同時に動作した場合にデバイス競合が発生する可能性の有無を評価する。これにより、開発対象ソフトウェアが既存ソフトウェアの動作に悪影響を与えないか否かを確認することができる。
【００３５】
即ち、以上のような構成によれば、情報処理装置２０に新たに追加するソフトウェアの実行により、情報処理装置２０の有するデバイスを長時間占有してしまうことで、他のソフトウェアの実行により実現される他の機能に悪影響が出るか否かを予め確認することができる。この結果、デバイスを長時間占有するソフトウェアを情報処理装置２０に追加しないようにしたり、もしくは、デバイスが占有されることを承知の上で利用してもらうことで新しいワークフローの構築を支援したりすることが可能になる。新しいワークフローとしては、例えば、他のソフトウェアによって実現される機能に悪影響が出ることが検出されたソフトウェアについては、当該ソフトウェアの実行を禁止したり、特定の利用者のみに当該ソフトウェアの実行を許可したりするなどのことである。
【００３６】
また、開発対象ソフトウェアに関し、テストシナリオに従ってテストを実行することにより、デバイス占有率を計算して、デバイス競合が発生する可能性の有無を評価することで、デバイス占有率を同じ条件で何度でも計算することができ、開発対象ソフトウェアを修正したときに問題が改善されたか否かを明確に評価することができる。
【００３７】
また、既存ソフトウェアに関するデバイス占有時間情報を評価情報サーバ４０に記憶させておき、開発対象ソフトウェアとのデバイス競合の発生の可能性の有無を評価する際に、当該デバイス占有時間情報を評価情報サーバ４０から取得することで、当該評価を素早く簡単に行うことが可能になる。
【００３８】
また、当該評価の際に環境性能差補正係数を用いて、開発対象ソフトウェアに関するデバイス占有時間を補正することで、デバイス占有率を正しく計算することができ、既存ソフトウェアに関するデバイス占有率との比較を正しく行って、正しい評価結果を得ることが可能になる。また、当該環境性能差補正係数の計算の際に、当該開発対象ソフトウェアについて情報処理装置シミュレータ５１と同じ性能基準評価用テストシナリオに従って当該開発ソフトウェアを実行した情報処理装置２０で測定されたテスト実行結果を用いることにより、環境性能差補正係数を正しく計算することが可能になる。
【００３９】
また、当該評価の際に、１次評価、２次評価及び３次評価を行うことで、１次評価で開発対象ソフトウェアとデバイス競合が起こり得ない既存ソフトウェアを評価の対象から外すことにより、評価に係る全体の処理時間を短縮することができる。また、デバイス競合により起こり得る最大遅延時間を見積もることで、デバイス競合によって起こる問題の大きさを評価することができる。また、この最大遅延時間と、最大許容遅延時間とを比較することで、デバイス競合の発生の可能性の有無を明確に評価することが可能になる。
【００４０】
また、開発対象ソフトウェアのデバイス占有率は、実際にデバイスＡＰＩを呼び出すテストシナリオで行わなければ正確に計算できない恐れがあるが、本実施の形態においては、テストシナリオの妥当性を評価する際に、デバイスＡＰＩ呼出のカバレッジを計算することで、デバイス競合の発生の可能性の有無を評価するのに適したテストシナリオが用いられているかを評価することができる。また、このカバレッジを計算する際に、開発対象ソフトウェアのソースコードを解析してデバイスＡＰＩ呼出箇所を抽出し、当該デバイスＡＰＩ呼出箇所にログ出力コードを埋め込んで、テストシナリオに従ったテストを実行することにより、当該テストの実行時にデバイスＡＰＩ呼出箇所を確実に抽出することができ、カバレッジを正確に計算することが可能になる。
【００４１】
上述したように、例えば、情報処理装置２０が画像処理装置であり、当該情報処理装置２０が有するデバイスが画像の入出力に関するデバイスである場合、オフィス環境において、業務の生産性に影響を与えるシーンが多数ある。例えば、デバイスとしてプロッタを用いた印刷に要する時間が増大してしまうと、印刷待ち時間が発生してしまい会議資料が間に合わずに会議開始時間が遅れるなどの悪影響が出る恐れがある。これを回避すべく、会議資料を間に合わせるために、前日に残業をして印刷をすることになり、不必要な経費が増える可能性もある。また、例えば、デバイスとしてスキャナやＦＡＸ通信装置が利用できなくなってしまうと、ＦＡＸ送信ができなくなってしまうために、必要な書類を送信することができなくなり、この結果、ビジネスチャンスを失ったりお客様との信頼を失ったりする可能性がある。このように、画像処理装置が業務フローに組み込まれているオフィス環境においては、画像処理装置に搭載されたデバイスをいつでも使える状況にしておく事は非常に重要である。このため、本実施の形態の構成により、オフィス環境での利用者の利便性を向上させることができる。
【００４２】
[変形例]
なお、本発明は前記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、前記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。また、以下に例示するような種々の変形が可能である。
【００４３】
上述の実施の形態では、情報処理装置２０は、画像処理装置であり、デバイスとして、例えば、スキャナ、プロッタ、ＦＡＸ通信装置、画像投影装置などの画像の入出力に関わるデバイスが搭載されるとしたが、これに限らず、これらの全てが搭載されなくても良いし、これら以外のデバイスが搭載されるようにしても良い。
【００４４】
上述の実施の形態では、ＳＤＫ５０は、図２に例示されるように、複数のプログラムモジュールを有するように構成したが、これに限らず、これらの各種機能を実現させるものであれば、１つのプログラムにより構成されるようにしても良いし、図２に例示される少なくとも２つのプログラムモジュールを組み合わせるようにしても良い。
【符号の説明】
【００４５】
１０  汎用ＰＣ
２０  情報処理装置
３０  ソフトウェア提供用サーバ
４０  評価情報サーバ
５０  ＳＤＫ
５１  情報処理装置シミュレータ
５２  アプリ管理モジュール
５３  デバイスシミュレーションモジュール
５４  一般ＡＰＩ提供モジュール
５５  デバイス競合評価モジュール
５６  環境性能差補正モジュール
５７  テストシナリオ妥当性評価モジュール
５８  ログ記録モジュール
５９  性能基準アプリ実行オブジェクト
６０  テストシナリオ実行モジュール
６１  ビルドモジュール
６２  ソースコードエディタモジュール
【先行技術文献】
【特許文献】
【００４６】
【特許文献１】特開２００６−２９３４１７号公報
【図１】
2012103745.tif 000003
【図２】
2012103745.tif 000004
【図３】
2012103745.tif 000005
【図４】
2012103745.tif 000006
【図５】
2012103745.tif 000007
【図６】
2012103745.tif 000008
【図７】
2012103745.tif 000009
【図８】
2012103745.tif 000010