(57)【要約】【課題】シミュレーション機能により確認されたプログラム記述の妥当性を自動生成されたソースコードでも検証すること。【解決手段】シミュレータ８の解析部８ａとソースコードジェネレータ９の解析部９ａとが仕様データを同じように解析する。また、シミュレータ８のデバッグ情報追加部８ｂがシミュレーション時にデバッグ情報を追加して動作結果８２として出力し、ソースコードジェネレータ９のデバッグコード追加部９ｂが、デバッグ情報を出力するコードをソースコードに追加する。そして、比較確認部１０が、ソースコード９１から生成された実行ファイル９２が実機２０で実行されることにより得られる動作結果２１とシミュレータ８が出力した動作結果８２とを比較して、比較結果を結果報告書１０ａとして出力する。【選択図】図１
2016126700.tif 000002
【特許請求の範囲】
【請求項１】
プログラム記述から参照されるプログラム部品であって、デバック情報の出力指示を含むソースコードと、前記デバック情報の出力指示の対象のソースコード部分に対応するシミュレート動作に関する動作情報の出力指示を含むシミュレーション実行モジュールと、を含むプログラム部品を複数記憶した記憶部と、
前記記憶部から読み出された各プログラム部品の前記実行モジュールの実行によるシミュレーション動作を行うとともに、前記実行に応じて動作情報を出力する処理部と、
を備えたプログラム検証装置。
【請求項２】
請求項１記載のプログラム検証装置であって、前記動作情報と、前記記憶部から読みだされた各プログラム部品に対応するソースコードから生成された実行コードが実行されることで得られたデバッグ情報とを比較する比較処理を行う処理部を備えたことを特徴とするプログラム検証装置。
【請求項３】
コンピュータに、
プログラム記述から参照されるプログラム部品であって、デバック情報の出力指示を含むソースコードと、前記デバック情報の出力指示の対象のソースコード部分に対応するシミュレート動作に関する動作情報の出力指示を含むシミュレーション実行モジュールと、を含むプログラム部品を記憶部に複数記憶し、
前記記憶部から読み出された各プログラム部品の前記実行モジュールの実行によるシミュレーション動作を行うとともに、前記実行に応じて動作情報を出力する
処理を実行させることを特徴とするプログラム検証プログラム。
【請求項４】
コンピュータが、
プログラム記述から参照されるプログラム部品であって、デバック情報の出力指示を含むソースコードと、前記デバック情報の出力指示の対象のソースコード部分に対応するシミュレート動作に関する動作情報の出力指示を含むシミュレーション実行モジュールと、を含むプログラム部品を記憶部に複数記憶し、
前記記憶部から読み出された各プログラム部品の前記実行モジュールの実行によるシミュレーション動作を行うとともに、前記実行に応じて動作情報を出力する
処理を実行することを特徴とするプログラム検証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム検証装置、プログラム検証方法及びプログラム検証プログラムに関する。
【背景技術】
【０００２】
プログラムを開発する場合に、ソースコードを直接編集することなく、プログラム部品（以下単に「部品」という）を組み合わせたソースコードの自動生成を支援するプログラム開発支援システムがある。また、プログラム開発支援システムは、全ての部品が揃うより前の段階で、画面遷移や、複数の部品の連携等の確認のために、プログラムの動作をシミュレーションする機能を備える。
【０００３】
このようなプログラム開発支援システムを利用するプログラム開発では、プログラム開発の途中段階ではシミュレーションの機能が利用され、全ての部品が揃った段階ではソースコードの自動生成機能が利用される。
【０００４】
なお、プログラムの開発を支援する従来技術として、プログラムを構成する各処理の内容が記載された表からソースコード生成規則を適用してソースプログラムを生成するプログラム開発支援システムがある。
【０００５】
また、プログラムのデバッグを支援する従来技術として、バグが発見されたソースコードを修正してロードモジュールを再度ビルドするために必要な時間をなくすために、デバッグ対象アプリケーションを動作させたままアプリケーションを修正する技術がある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平９−１６３８２号公報
【特許文献２】特開２０１３−４１５４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、シミュレーション機能とソースコードの自動生成機能とを備えるプログラム開発支援システムでは、シミュレーション機能により確認されたプログラム記述の妥当性が、自動生成されたソースコードにも当てはまるとは限らないという問題がある。
【０００８】
従来は、プログラム開発の途中段階でシミュレーション機能が利用され、プログラム開発後のテスト段階でソースコードの自動生成機能が利用されていたため、双方が併用されることがなく、かかる問題が顕在化することがなかった。しかしながら、シミュレーション機能により確認されたプログラム記述の妥当性は、自動生成されたソースコードでも検証されることが望ましい。
【０００９】
本発明は、１つの側面では、シミュレーション機能により確認されたプログラム記述の妥当性を、自動生成されたソースコードでも検証可能とすることを目的とする。
【課題を解決するための手段】
【００１０】
本願の開示するプログラム検証装置は、１つの態様において、記憶部と処理部とを有する。前記記憶部は、プログラム記述から参照されるプログラム部品を複数記憶する。プログラム部品は、デバック情報の出力指示を含むソースコードと、前記デバック情報の出力指示の対象のソースコード部分に対応するシミュレート動作に関する動作情報の出力指示を含むシミュレーション実行モジュールとを含む。前記処理部は、前記記憶部から読み出された各プログラム部品の前記実行モジュールの実行によるシミュレーション動作を行うとともに、前記実行に応じて動作情報を出力する。
【発明の効果】
【００１１】
１実施態様によれば、シミュレーション機能により確認されたプログラム記述の妥当性を自動生成されたソースコードでも検証することができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施例に係るプログラム検証装置の機能構成を示す図である。
【図２】図２は、ＵＩ動作定義を説明するための図である。
【図３】図３は、動作定義フォーマットを示す図である。
【図４】図４は、仕様データの仕様表現の一例を示す図である。
【図５】図５は、動作結果の一例を示す図である。
【図６Ａ】図６Ａは、画面Ａに関して生成されるソースコードを示す図である。
【図６Ｂ】図６Ｂは、画面遷移に関して生成されるソースコードを示す図である。
【図６Ｃ】図６Ｃは、条件処理に関して生成されるソースコードを示す図である。
【図７】図７は、結果報告書の一例を示す図である。
【図８】図８は、実施例に係るプログラム検証装置の処理フローを示すフローチャートである。
【図９】図９は、問題箇所特定部による問題箇所特定処理のフローを示すフローチャートである。
【図１０】図１０は、実施例に係るプログラム検証プログラムを実行するコンピュータのハードウェア構成を示す図である。
【発明を実施するための形態】
【００１３】
以下に、本願の開示するプログラム検証装置、プログラム検証方法及びプログラム検証プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
【実施例】
【００１４】
まず、実施例に係るプログラム検証装置の機能構成について説明する。図１は、実施例に係るプログラム検証装置の機能構成を示す図である。図１に示すように、プログラム検証装置１は、ＵＩ（User  Interface：ユーザインタフェース）動作定義記憶部２と、部品情報記憶部３と、仕様記述編集部４と、仕様データ記憶部５とを有する。また、プログラム検証装置１は、テストケース生成部６と、テストデータ記憶部７と、シミュレータ８と、ソースコードジェネレータ９と、比較確認部１０と、問題箇所特定部１１とを有する。
【００１５】
ＵＩ動作定義記憶部２は、ユーザが画面に対して行った操作などに対する処理、画面遷移などを定義するＵＩ動作定義を記憶する。図２は、ＵＩ動作定義を説明するための図である。図２に示すように、ＵＩ動作定義には、「条件」と「処理」が含まれる。
【００１６】
「条件」としては、処理や画面遷移を起動する起動イベントと、処理や画面遷移の起動に必要な条件を示す条件動作とがある。起動イベントには、ユーザ操作、機能実行完了等がある。条件動作には、ＵＩ部品の状態、機能の状態等がある。「処理」は、起動イベントが発生して条件動作が成立するときに実行される処理や動作であり、画面遷移、機能実行等がある。
【００１７】
図３は、ＵＩ動作定義のためのフォーマットである動作定義フォーマットを示す図である。図３に示すように、起動イベントの定義には、例えば、「画面上の動きのトリガとなるもの」として「［ＵＩ部品あるいは機能部品］の［イベント］が発生した時」がある。ここで、［ＵＩ部品あるいは機能部品］は、部品情報記憶部３が情報を記憶する部品であり、［イベント］は、部品に関して発生する事象である。［ＵＩ部品あるいは機能部品］を画面上のボタンであるとすると、例えば［イベント］は「押下」である。
【００１８】
また、条件動作の定義には、例えば、「画面上の動きの実行条件」として「［ＵＩ部品あるいは機能部品］の［プロパティ（整数型）］が［定数（整数型）］なら」がある。ここで、［プロパティ（整数型）］は、部品の属性である。［ＵＩ部品あるいは機能部品］を画面上のボタンであるとすると、例えば［プロパティ（整数型）］は「ボタンの色」であり、［定数（整数型）］は「黒を示す整数値」である。
【００１９】
また、「処理」の定義には、例えば、「メソッドを呼び出すもの」として「［ＵＩ部品あるいは機能部品］の［メソッド］を実行する」がある。ここで、［メソッド］は、部品に対して定義される処理である。また、他の例には、「画面上の動き」として「［ＵＩ部品あるいは機能部品］の［プロパティ（文字型）］に、［他のＵＩ部品あるいは機能部品］の［プロパティ（文字型）］を代入する」がある。
【００２０】
図１に戻って、部品情報記憶部３は、複数の部品について部品に関する情報すなわち部品情報を記憶する。各部品に関する情報には、実行モジュール３１と、言語表現部３２と、ソースコード情報３３が含まれる。
【００２１】
実行モジュール３１は、シミュレーションで使用されるモジュールであり、部品が実機２０で動作するのと同様にシミュレータ８で動作する。ここで、実機２０は、プログラム検証装置１を使って開発されたプログラムを実行するコンピュータである。例えば、開発されたプログラムがカーナビ用のプログラムであれば、実機２０は、ＣＰＵ（Central  Processing  Unit）、メモリ等を備えるカーナビ装置である。
【００２２】
実行モジュール３１は、デバッグ情報受渡機能３１ａを有する。デバッグ情報受渡機能３１ａは、実行モジュール３１がシミュレータ８で実行されたときに出力するデバッグ情報をシミュレータ８に受け渡す機能である。ここで、デバッグ情報とは、動作した部品を示す情報であり、シミュレータ８により出力される情報である。また、デバッグ情報は、後述するソースコードジェネレータ９が生成するソースコードに挿入されたデバッグコードから出力される情報である。すなわち、シミュレータ８とソースコードに挿入されたデバッグコードとは、同一のデバッグ情報を出力する。このように、シミュレータ８とソースコードに挿入されたデバッグコードとが同一のデバッグ情報を出力することによって、シミュレーション機能により確認されたプログラム記述の妥当性を、自動生成されたソースコードでも検証可能とすることができる。なお、シミュレータ８は、デバッグ情報を後述する動作結果８２の一部として出力し、ソースコードに挿入されたデバッグコードは、デバッグ情報を後述する動作結果２１の一部として出力する。
【００２３】
言語表現部３２は、部品の「プロパティ」、「メソッド」、「イベント」等を自然言語により定義したものである。例えば、部品を画面上のボタンであるとすると、［プロパティ］として「ボタンの色」、［イベント］として「押下」等が定義される。
【００２４】
ソースコード情報３３は、ソースコードの自動生成に使用される情報である。ソースコード情報３３には、デバッグ情報コード出力機能３３ａが含まれる。デバッグ情報コード出力機能３３ａは、ソースコードの一部としてデバッグ情報を出力するコードを出力する機能である。デバッグ情報を出力するコードは、実機２０で実行されることにより、後述する動作結果２１を出力する。
【００２５】
仕様記述編集部４は、プログラムの仕様記述としてＵＩ動作定義を入力し、ＵＩ動作定義で使用される部品について部品情報記憶部３が記憶する言語表現部３２の情報を加えてプログラムの仕様データを作成する。仕様記述編集部４は、作成した仕様データを仕様データ記憶部５に書込む。
【００２６】
仕様データ記憶部５は、仕様記述編集部４が作成した仕様データを記憶する。図４は、仕様データの仕様表現の一例を示す図である。図４に示すように、仕様表現は、画面の構成と動作定義から構成される。画面の構成は、画面名をトップノードとするツリー構造で表現される。
【００２７】
図４では、画面Ａは、画面Ａ部品と、組合せ部品Ｘとを有する。組合せ部品Ｘは、２つの部品すなわち部品Ｘ1及びＸ2を有する。また、画面Ｂは、画面Ｂ部品と、組合せ部品Ｙとを有する。組合せ部品Ｙは、２つの部品すなわち部品Ｙ1及びＹ2を有する。
【００２８】
ツリー構造の末端の部品には、動作定義としてＵＩ動作定義に基づいて条件及び処理が定義されるものがある。部品に定義された処理が実行されると、図４の点線の矢印で示すように、部品の変化や画面遷移が行われる。図４では、部品Ｘ2に対して定義された処理が実行されると画面Ａから画面Ｂへの遷移が行われる。
【００２９】
テストケース生成部６は、仕様データに基づいてテストケースを生成し、テストケースに対応するテストデータを生成する。テストケース生成部６は、生成したテストデータをテストデータ記憶部７に書込む。テストデータ記憶部７は、テストケース生成部６により生成されたテストデータを記憶する。
【００３０】
シミュレータ８は、部品情報記憶部３が記憶する実行モジュール３１、仕様データ記憶部５が記憶する仕様データ及びテストデータ記憶部７が記憶するテストデータに基づいて対象プログラムの動作をシミュレートし、操作結果８１及び動作結果８２を出力する。操作結果８１は、シミュレーションにおけるユーザの画面操作を示す。
【００３１】
動作結果８２は、シミュレーションの動作内容を示す。動作結果８２は、実行モジュール３１がシミュレータ８で実行されたときに出力するデバッグ情報を動作した部品の順番に並べたものである。
【００３２】
シミュレータ８は、解析部８ａと、デバッグ情報追加部８ｂとを有する。解析部８ａは、仕様データを解析することによりシミュレーションを制御する。デバッグ情報追加部８ｂは、実行モジュール３１が実行されることでデバッグ情報受渡機能３１ａが受け渡すデバッグ情報を動作結果８２として出力する。
【００３３】
図５は、動作結果８２の一例を示す図である。図５に示すように、動作結果８２には、入力データと動作内容が含まれる。ここで、入力データとは、テストデータ記憶部５が記憶するテストデータである。この例では、カーナビのガソリンスタンド検索において、３つの条件「ガソリンスタンドが１０ｋｍ以内か」、「車両点検ができるか」及び「コンビニがあるか」の組み合わせにより２3＝８通りの入力データが用いられている。
【００３４】
図５に示すように、例えば、３つの入力データ「ガソリンスタンドが９ｋｍ」、「車両点検ができる」及び「コンビニがある」に対するシミュレーションでは、画面Ａの検索部品である画面Ａ部品が実行される。そして、組合せ部品Ｘの部品Ｘ1が動作し、３つの入力データに基づいて画面遷移が行われ、画面Ｂに遷移する。
【００３５】
このようなシミュレータ８の動作に基づいて、動作内容として「画面Ａ→画面Ａ部品（検索−ＳＷ部品)→組合せ部品Ｘ→動作部品Ｘ1→条件Ａ（ガソリンスタンド（選択部品）９ｋｍ（距離部品））→条件Ｂ（車両点検（選択部品）ができる）．．．」が出力される。
【００３６】
ソースコードジェネレータ９は、部品情報記憶部３が記憶するソースコード情報３３及び仕様データ記憶部５が記憶する仕様データに基づいて対象プログラムのソースコード９１を生成する。ソースコード９１はコンパイルされて実行ファイル９２に変換され、実機２０で実行される。実機２０は、テストデータを入力しながら実行ファイル９２を実行することにより、動作結果２１を出力する。動作結果２１には、図５に示した動作結果８２と同様のデバッグ情報が含まれる。
【００３７】
ソースコードジェネレータ９は、解析部９ａと、デバッグコード追加部９ｂとを有する。解析部９ａは、仕様データを解析することによりソースコードの生成を制御する。解析部９ａは、シミュレータ８が有する解析部８ａと同様の解析を行うことで、動作結果２１がシミュレータ８により出力される動作結果８２と同じになることを可能とする。デバッグコード追加部９ｂは、デバッグ情報を出力するコードを追加する。追加されたコードはソースコード９１の一部となる。
【００３８】
図６Ａ〜図６Ｃは、デバッグコード追加部９ｂにより追加されるコードの例を示す図である。図６Ａは、画面Ａに関して生成されるソースコードを示す。図６Ａに示すように、画面Ａデバッグソース及び画面Ａ部品（検索−ＳＷ部品）のデバッグソースが追加されている。
【００３９】
図６Ｂは、画面遷移に関して生成されるソースコードを示す。図６Ｂに示すように、画面遷移ＡＢデバッグソース、画面Ａデバッグソース、処理Ａデバッグソース、画面Ｂデバッグソース及び画面Ｂ部品のデバッグソースが追加されている。
【００４０】
図６Ｃは、条件処理に関して生成されるソースコードを示す。図６Ｃに示すように、条件Ａデバッグソース、処理Ａのデバッグソース、条件Ｂデバッグソース及び処理Ｂのデバッグソースが追加されている。
【００４１】
なお、ＵＩ動作定義、部品情報、仕様データ、テストケース生成部６、シミュレータ８及びソースコードジェネレータ９の詳細については、特開２０１２−０８３８６５に記載されている。
【００４２】
比較確認部１０は、動作結果８２と動作結果２１とを比較して一致するか否かを判定し、判定結果を結果報告書１０ａとして出力する。図７は、結果報告書１０ａの一例を示す図である。図７に示すように、結果報告書１０ａには、入力データと、動作内容と、比較結果とが対応付けて出力される。
【００４３】
比較結果は、２つの動作結果８２及び２１が一致した場合はＯＫであり、一致しない場合はＮＧである。動作内容としては、比較結果がＮＧの場合、すなわち、２つの動作結果８２及び２１が一致しない場合に両方の動作内容が出力される。例えば、図７において、入力データが「ガソリンスタンドが９ｋｍ」、「車両点検できない」及び「コンビニがある」の場合、比較結果がＮＧとなっている。その理由は、シミュレーション結果は「条件Ｂ（車両点検（選択部品）ができない）」、「画面遷移→画面Ｃ」であり、実行ファイルの実行結果は「条件Ｂ（車両点検（選択部品）ができる）」、「画面遷移→画面Ｂ」であり、両者が異なるためである。
【００４４】
問題箇所特定部１１は、結果報告書１０ａにＮＧがある場合に、部品情報、シミュレータ８、ソースコードジェネレータ９、仕様記述、その他のいずれに問題があるかをユーザと対話しながら特定する。
【００４５】
次に、実施例に係るプログラム検証装置１の処理フローについて説明する。図８は、実施例に係るプログラム検証装置１の処理フローを示すフローチャートである。なお、ユーザにより作成されたＵＩ動作定義をＵＩ動作定義記憶部２が記憶するものとする。
【００４６】
図８に示すように、仕様記述編集部４が、ＵＩ動作定義記憶部２が記憶するＵＩ動作定義及び部品情報記憶部３が記憶する部品情報に基づいて仕様データを作成し（ステップＳ１）、仕様データ記憶部５に書込む。そして、テストケース生成部６が、仕様データに基づきテストデータを生成する（ステップＳ２）。
【００４７】
そして、シミュレータ８がテストデータを入力データとして実行モジュール３１を用いてシミュレーションを実行し（ステップＳ３）、ソースコードジェネレータ９がソースコード情報３３を用いてソースコードを生成する（ステップＳ４）。なお、シミュレーションの実行とソースコードの生成の順序は、どちらが先でもよい。
【００４８】
そして、ソースコードから生成された実行ファイル９２を実機２０で実行することにより得られた動作結果２１とシミュレータ８が出力する動作結果８２とを比較確認部１０が比較して（ステップＳ５）、結果報告書１０ａを出力する。そして、問題箇所特定部１１が、結果報告書１０ａに基づきユーザと対話しながら問題箇所を特定する（ステップＳ６）。
【００４９】
このように、比較確認部１０が２つの動作結果２１及び８２を比較することにより、ユーザは、シミュレーション機能により確認されたＵＩ動作定義の妥当性を、自動生成されたソースコードで確認することができる。
【００５０】
次に、問題箇所特定部１１による問題箇所特定処理のフローについて説明する。図９は、問題箇所特定部１１による問題箇所特定処理のフローを示すフローチャートである。図９に示すように、問題箇所特定部１１は、結果報告書１０ａの比較結果にＯＫ以外が存在するか否かを判定する（ステップＳ１１）。その結果、比較結果にＯＫ以外が存在しない場合には、問題箇所特定部１１は処理を終了する。
【００５１】
一方、比較結果にＯＫ以外が存在する場合には、問題箇所特定部１１は、結果報告書１０ａの動作内容からシミュレータ８もしくは実行ファイル９２のどちらに問題があるかが特定できるかをユーザに問い合わせることによって判定する（ステップＳ１２）。なお、問題箇所特定部１１は、入力データに対する動作内容の正解を記憶し、正解と比較することにより自動でシミュレータ８もしくは実行ファイル９２のどちらに問題があるかを判定してもよい。そして、シミュレータ８もしくは実行ファイル９２のどちらに問題があるかが特定できた場合には、問題箇所特定部１１は処理を終了する。
【００５２】
一方、どちらに問題があるかが特定できなかった場合には、問題箇所特定部１１は、シミュレータ８もしくはソースコードジェネレータ９の解析情報を参照して問題が特定できたかをユーザに問い合わせることによって判定する（ステップＳ１３）。その結果、問題が特定できた場合には、問題箇所特定部１１は処理を終了する。
【００５３】
一方、問題が特定できなかった場合には、問題箇所特定部１１は、部品情報、及び、シミュレータ８又はソースコードジェネレータ９への受渡し情報及び受取り情報を参照して問題が特定できたかをユーザに問い合わせることによって判定する（ステップＳ１４）。その結果、問題が特定できた場合には、問題箇所特定部１１は処理を終了する。
【００５４】
一方、問題が特定できなかった場合には、問題箇所特定部１１は、仕様記述に問題がないか確認して仕様記述に問題があったかをユーザに問い合わせることによって判定する（ステップＳ１５）。その結果、仕様記述に問題があった場合には、問題箇所特定部１１は処理を終了する。
【００５５】
一方、仕様記述に問題がなかった場合には、問題箇所特定部１１は、部品情報、シミュレータ８、ソースコードジェネレータ９及び仕様記述以外に問題がなかったかをユーザに問い合わせることによって判定する（ステップＳ１６）。ここで、他の問題としては、例えば、プログラム検証装置１の環境の問題、仕様データの破壊などがある。
【００５６】
このように、問題箇所特定部１１は、ユーザと対話を行うことによって、問題が部品情報、シミュレータ８、ソースコードジェネレータ９、仕様記述等のどこにあるかを切り分けることができる。
【００５７】
上述してきたように、実施例では、シミュレータ８の解析部８ａとソースコードジェネレータ９の解析部９ａとが仕様データを同じように解析する。また、シミュレータ８のデバッグ情報追加部８ｂがシミュレーション時にデバッグ情報を追加して動作結果８２として出力し、ソースコードジェネレータ９のデバッグコード追加部９ｂが、デバッグ情報を出力するコードをソースコードに追加する。
【００５８】
そして、比較確認部１０が、ソースコード９１から生成された実行ファイル９２が実機２０で実行されることにより得られる動作結果２１とシミュレータ８が出力した動作結果８２とを比較して、比較結果を結果報告書１０ａとして出力する。したがって、ユーザは、シミュレーション機能により確認されたＵＩ動作定義の妥当性を、自動生成されたソースコードで確認することができる。
【００５９】
また、実施例では、問題箇所特定部１１が、ユーザと対話を行うことによって、問題が部品情報、シミュレータ８、ソースコードジェネレータ９、仕様記述等のどこにあるかを切り分けるので、ユーザは、問題箇所を容易に知ることができる。
【００６０】
なお、実施例では、プログラム検証装置について説明したが、プログラム検証装置が有する構成をソフトウェアによって実現することで、同様の機能を有するプログラム検証プログラムを得ることができる。そこで、プログラム検証プログラムを実行するコンピュータについて説明する。
【００６１】
図１０は、実施例に係るプログラム検証プログラムを実行するコンピュータのハードウェア構成を示す図である。図１０に示すように、コンピュータ４０は、メインメモリ４１と、ＣＰＵ４２と、ＬＡＮ（Local  Area  Network）インタフェース４３と、ＨＤＤ（Hard  Disk  Drive）４４とを有する。また、コンピュータ４０は、スーパーＩＯ（Input  Output）４５と、ＤＶＩ（Digital  Visual  Interface）４６と、ＯＤＤ（Optical  Disk  Drive）４７とを有する。
【００６２】
メインメモリ４１は、プログラムやプログラムの実行途中結果などを記憶するメモリである。ＣＰＵ４２は、メインメモリ４１からプログラムを読み出して実行する中央処理装置である。ＣＰＵ４２は、メモリコントローラを有するチップセットを含む。
【００６３】
ＬＡＮインタフェース４３は、コンピュータ４０をＬＡＮ経由で他のコンピュータに接続するためのインタフェースである。ＨＤＤ４４は、プログラムやデータを格納するディスク装置であり、スーパーＩＯ４５は、マウスやキーボードなどの入力装置を接続するためのインタフェースである。ＤＶＩ４６は、液晶表示装置を接続するインタフェースであり、ＯＤＤ４７は、ＤＶＤの読み書きを行う装置である。
【００６４】
ＬＡＮインタフェース４３は、ＰＣＩエクスプレスによりＣＰＵ４２に接続され、ＨＤＤ４４及びＯＤＤ４７は、ＳＡＴＡ（Serial  Advanced  Technology  Attachment）によりＣＰＵ４２に接続される。スーパーＩＯ４５は、ＬＰＣ（Low  Pin  Count）によりＣＰＵ４２に接続される。
【００６５】
そして、コンピュータ４０において実行されるプログラム検証プログラムは、ＤＶＤに記憶され、ＯＤＤ４７によってＤＶＤから読み出されてコンピュータ４０にインストールされる。あるいは、プログラム検証プログラムは、ＬＡＮインタフェース４３を介して接続された他のコンピュータシステムのデータベースなどに記憶され、これらのデータベースから読み出されてコンピュータ４０にインストールされる。そして、インストールされたプログラム検証プログラムは、ＨＤＤ４４に記憶され、メインメモリ４１に読み出されてＣＰＵ４２によって実行される。
【００６６】
また、実施例では、実行ファイル９２を実機２０を用いて実行する場合について説明した。しかしながら、本発明はこれに限定されるものではなく、例えば、実機２０で動作するＯＳと同様のＯＳを搭載した仮想マシンをコンピュータ４０上で動作させることによって、実機２０を用いない場合にも同様に適用することができる。
【００６７】
また、部品情報記憶部３は、デバッグ情報受渡機能３１ａのない実行モジュール３１とデバッグ情報コード出力機能３３ａのないソースコード情報も記憶する。また、プログラム検証装置１は、動作結果８２と動作結果２１とを比較する比較モードであるか否かを示すフラグを有する。そして、プログラム検証装置１は、比較モードである場合に、デバッグ情報受渡機能３１ａを有する実行モジュール３１とデバッグ情報コード出力機能３３ａを有するソースコード情報を部品情報記憶部３から出力する。
【符号の説明】
【００６８】
１    プログラム検証装置
２    ＵＩ動作定義記憶部
３    部品情報記憶部
４    仕様記述編集部
５    仕様データ記憶部
６    テストケース生成部
７    テストデータ記憶部
８    シミュレータ
８ａ    解析部
８ｂ    デバッグ情報追加部
９    ソースコードジェネレータ
９ａ    解析部
９ｂ    デバッグコード追加部
１０    比較確認部
１０ａ    結果報告書
１１    問題箇所特定部
２０    実機
２１    動作結果
３１    実行モジュール
３１ａ    デバッグ情報受渡機能
３２    言語表現部
３３    ソースコード情報
３３ａ    デバッグ情報コード出力機能
４０    コンピュータ
４１    メインメモリ
４２    ＣＰＵ
４３    ＬＡＮインタフェース
４４    ＨＤＤ
４５    スーパーＩＯ
４６    ＤＶＩ
４７    ＯＤＤ
８１    操作結果
８２    動作結果
９１    ソースコード
９２    実行ファイル
【図１】
2016126700.tif 000003
【図２】
2016126700.tif 000004
【図３】
2016126700.tif 000005
【図４】
2016126700.tif 000006
【図５】
2016126700.tif 000007
【図６Ａ】
2016126700.tif 000008
【図６Ｂ】
2016126700.tif 000009
【図６Ｃ】
2016126700.tif 000010
【図７】
2016126700.tif 000011
【図８】
2016126700.tif 000012
【図９】
2016126700.tif 000013
【図１０】
2016126700.tif 000014