(57)【特許請求の範囲】
【請求項１】
第一命令パターンに対応するソースコードを、当該第一命令パターンに対応する１以上の第二命令パターンに対応するソースコードに変換して得られたソースプログラムが格納され得るソースプログラム格納部と、
前記ソースプログラム格納部に格納されているソースプログラムに基づくプログラムを実行させた場合に使用されるソースコードである実行済ソースコードを当該ソースプログラムから検出する実行済ソースコード検出部と、
前記検出された実行済ソースコードのうちの、前記第二命令パターンに対応するソースコードに変換された部分に関する情報である変換関連情報を取得する変換関連情報取得部と、
前記変換関連情報取得部が取得した変換関連情報を出力する出力部とを備えたプログラム検証装置。
【請求項２】
前記変換関連情報取得部は、
前記実行済ソースコードに含まれるソースコードと対応する前記第二命令パターンである実行済命令パターンを検出する実行済命令パターン検出手段と、
前記実行済命令パターン検出手段が検出した第二命令パターンに関する情報を含む前記変換関連情報を取得する第一変換関連情報取得手段とを備えた請求項１記載のプログラム検証装置。
【請求項３】
前記変換関連情報は、前記実行済命令パターン検出手段が検出した第二命令パターンの出現量に関する情報である請求項２記載のプログラム検証装置。
【請求項４】
前記変換関連情報取得部は、
前記ソースプログラムに含まれるソースコードと対応する前記第二命令パターンである変換命令パターンを検出する変換命令パターン検出手段を更に備え、
前記第一変換関連情報取得手段は、
前記変換命令パターン検出手段が検出した異なる変換命令パターンの数に対する、前記実行済命令パターン検出手段が検出した異なる実行済命令パターンの数の比率を示す情報を含む前記変換関連情報を取得する請求項２または請求項３記載のプログラム検証装置。
【請求項５】
前記変換関連情報取得部は、
前記ソースプログラムに基づくプログラムを実行させた場合に実行されうる各ステップに対応するソースプログラム内のソースコードであって、前記実行済ソースコードに含まれるとともに、前記第二命令パターンに対応するソースコードを含むソースコードであるステップ対応実行済コードを検出するステップ対応実行済コード検出手段と、
前記ステップ対応実行済コード検出手段が検出したステップ対応実行済コードに関する情報を含む前記変換関連情報を取得する第二変換関連情報取得手段とを備えた請求項１から請求項４いずれか記載のプログラム検証装置。
【請求項６】
前記変換関連情報は、前記ステップ対応実行済コード検出手段が検出したステップ対応実行済コードの出現量に関する情報である請求項５記載のプログラム検証装置。
【請求項７】
前記変換関連情報取得部は、
前記ソースプログラムに基づくプログラムを実行させた場合に実行されうる各ステップに対応するソースプログラム内のソースコードであって、前記第二命令パターンと対応するソースコードを含むソースコードであるステップ対応変換コードを検出するステップ対応変換コード検出手段を更に備え、
前記第二変換関連情報取得手段は、
前記ステップ対応変換コード検出手段が検出したステップ対応変換コードの数に対する、前記ステップ対応実行済コード検出手段が検出したステップ対応実行済コードの数の比率を示す情報を含む前記変換関連情報を取得する請求項５または請求項６記載のプログラム検証装置。
【請求項８】
前記ソースプログラム格納部には、前記ソースプログラムの変換に用いられた第二命令パターンを示す情報と、当該第二命令パターンにより変換された当該ソースプログラム内のソースコードとが対応付けて格納されており、
前記実行済命令パターン検出手段は、前記ソースプログラム格納部に格納されている第二命令パターンを示す情報から、前記実行済ソースコード検出部が検出した実行済ソースコード内に含まれるソースコードと対応付けられた第二命令パターンを示す情報を検出して、実行済命令パターンである第二命令パターンを検出する請求項２から請求項４いずれか記載のプログラム検証装置。
【請求項９】
前記ソースプログラムの変換に用いられた第二命令パターンを含む第二命令パターンが格納され得る第二命令パターン格納部を更に備え、
前記実行済命令パターン検出手段は、前記実行済ソースコード検出部が検出した実行済ソースコードと前記第二命令パターン格納部に格納されている前記第二命令パターンとのパターンマッチングを行って、前記実行済ソースコードに含まれるソースコードと対応する前記第二命令パターンを検出する請求項２から請求項４いずれか記載のプログラム検証装置。
【請求項１０】
第一命令パターンに対応するソースコードを、当該第一命令パターンに対応する１以上の第二命令パターンに対応するソースコードに変換して得られたソースプログラムが格納され得るソースプログラム格納部と、実行済ソースコード検出部と、変換関連情報取得部と、出力部とを用いて行われるプログラム検証方法であって、
前記実行済ソースコード検出部が、前記ソースプログラム格納部に格納されているソースプログラムに基づくプログラムを実行させた場合に使用されるソースコードである実行済ソースコードを当該ソースプログラムから検出する実行済ソースコード検出ステップと、
前記変換関連情報取得部が、前記検出された実行済ソースコードのうちの、前記第二命令パターンに対応するソースコードに変換された部分に関する情報である変換関連情報を取得する変換関連情報取得ステップと、
前記出力部が、前記変換関連情報取得ステップで取得した変換関連情報を出力する出力ステップとを備えたプログラム検証方法。
【請求項１１】
コンピュータを、
第一命令パターンに対応するソースコードを、当該第一命令パターンに対応する１以上の第二命令パターンに対応するソースコードに変換して得られたソースプログラムが格納され得るソースプログラム格納部に格納されているソースプログラムに基づくプログラムを実行させた場合に使用されるソースコードである実行済ソースコードを当該ソースプログラムから検出する実行済ソースコード検出部と、
前記検出された実行済ソースコードのうちの、前記第二命令パターンに対応するソースコードに変換された部分に関する情報である変換関連情報を取得する変換関連情報取得部と、
前記変換関連情報取得部が取得した変換関連情報を出力する出力部として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、命令パターンを用いて自動変換されたソースプログラムの検証等を行う装置等に関するものである。
【背景技術】
【０００２】
従来、ソースプログラムを命令パターン等を用いて変換する装置等が知られていた。例えば、一の環境で動作していたプログラムである旧ソースプログラムを、他の環境で動作させるための新ソースプログラムに変換するプログラム自動変換装置であって、旧ソースプログラムの命令パターンを示す情報である第一命令パターン情報と新ソースプログラムの命令パターンを示す情報である第二命令パターン情報の対を１以上、格納している命令パターン対応情報格納部と、旧ソースプログラムを格納しているプログラム格納部と、前記旧ソースプログラムにおいて、前記１以上の第一命令パターン情報が何回出現するかを解析する解析部と、前記解析部において第一命令パターン情報の出現回数が、所定回数（所定回数は２以上である）以上であると解析された第一命令パターン情報に対応する旧ソースプログラムの記述箇所をコメントアウトした情報を含むように、当該旧ソースプログラムの記述箇所を当該第一命令パターン情報と対になる第二命令パターン情報に対応するように変換する命令パターン変換部と、前記命令パターン変換部において前記変換する処理が行われた後、前記命令パターン変換部でコメントアウトされた情報を含む手作業前の新ソースプログラムであり、前記命令パターン変換部で前記旧ソースプログラムを変換した結果である手作業前の新ソースプログラムを出力する新プログラム出力部と、前記新プログラム出力部において、前記手作業前の新ソースプログラムが出力された後、前記解析部において第一命令パターン情報の出現回数が前記所定回数未満であると解析された第一命令パターン情報に対応する、前記手作業前の新ソースプログラムの記述箇所に対して、ユーザの手作業による変更の入力を行う入力手段とを具備するプログラム自動変換装置等が知られていた（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第４３５４５１４号公報（第１頁、第１図等）
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来においては、ソースプログラムの自動変換された箇所が正常に変換されたか否か等を、適切に確認することが困難であるという課題があった。
【０００５】
例えば、自動変換されたソースプログラムを実行させ、予め用意されたテストデータ等を処理させたり、シミュレーションを行うことで、ソースプログラムが正常に実行されるか否かをテストすることは可能であるが、このテストの際にソースプログラム内の自動変換された箇所が全て利用されたか否かを判断することが困難である。つまり、テストにおいて利用されなかった部分にも自動変換されたソースコードが存在する場合があり、このような部分については、自動変換されたソースコードが正常であるか否かの判断ができなかった。したがって、例えば、自動変換されたソースプログラム内に、テストされていない箇所がどの程度存在しているか判断できず、自動変換が正常に行われたか否かの適切な判断を行うことができない、という問題があった。
【０００６】
また、自動変換したソースコードに対して行うテストが、自動変換された部分を十分にテストできるテストであるか否かを判断することが困難であるため、ソースプログラムを十分に検証するためには、冗長なテストを行う必要があった。
【課題を解決するための手段】
【０００７】
本発明のプログラム検証装置は、第一命令パターンに対応するソースコードを、第一命令パターンに対応する１以上の第二命令パターンに対応するソースコードに変換して得られたソースプログラムが格納され得るソースプログラム格納部と、ソースプログラム格納部に格納されているソースプログラムに基づくプログラムを実行させた場合に使用されるソースコードである実行済ソースコードをソースプログラムから検出する実行済ソースコード検出部と、検出された実行済ソースコードのうちの、第二命令パターンに対応するソースコードに変換された部分に関する情報である変換関連情報を取得する変換関連情報取得部と、変換関連情報取得部が取得した変換関連情報を出力する出力部とを備えたプログラム検証装置である。
【０００８】
かかる構成により、命令パターンを用いて行われた変換の検証が十分にできたか否かを示すことができる。これにより、命令パターンを用いた変換が正常に行われたか否かの検証や、変換を検証するために行われるテストの妥当性等の検証等を行うことができる。
【０００９】
また、本発明のプログラム検証装置は、前記プログラム検証装置において、変換関連情報取得部は、実行済ソースコードに含まれるソースコードと対応する第二命令パターンである実行済命令パターンを検出する実行済命令パターン検出手段と、実行済命令パターン検出手段が検出した第二命令パターンに関する情報を含む変換関連情報を取得する第一変換関連情報取得手段とを備えたプログラム検証装置である。
【００１０】
かかる構成により、例えば、ソースプログラムの変換に用いられた第二命令パターンのうちの、ソースプログラムに対応したプログラムの実行時に使用されたソースプログラムに対応した第二命令パターンに関する情報、例えばパターン数等についての情報を知ることができる。
【００１１】
また、本発明のプログラム検証装置は、前記プログラム検証装置において、変換関連情報は、実行済命令パターン検出手段が検出した第二命令パターンの出現量に関する情報であるプログラム検証装置である。
【００１２】
かかる構成により、例えば、ソースプログラムの変換に用いられた第二命令パターンのうちの、ソースプログラムに対応したプログラムの実行時に使用されたソースプログラムに対応した第二命令パターンの出現量についての情報を知ることができる。
【００１３】
また、本発明のプログラム検証装置は、前記プログラム検証装置において、変換関連情報取得部は、ソースプログラムに含まれるソースコードと対応する第二命令パターンである変換命令パターンを検出する変換命令パターン検出手段を更に備え、第一変換関連情報取得手段は、変換命令パターン検出手段が検出した異なる変換命令パターンの数に対する、実行済命令パターン検出手段が検出した異なる実行済命令パターンの数の比率を示す情報を含む変換関連情報を取得するプログラム検証装置である。
【００１４】
かかる構成により、ソースプログラムの変換に用いられた第二命令パターン数に対する、ソースプログラムに対応したプログラムの実行時に使用されたソースコードの変換に用いられた第二命令パターン数の比率を知ることができる。これにより、例えば、変換に用いられた第二命令パターンにおける、テスト等によって検証されたと考えられる第二命令パターンの比率を知ることができる。
【００１５】
また、本発明のプログラム検証装置は、前記プログラム検証装置において、変換関連情報取得部は、ソースプログラムに基づくプログラムを実行させた場合に実行されうる各ステップに対応するソースプログラム内のソースコードであって、実行済ソースコードに含まれるとともに、第二命令パターンに対応するソースコードを含むソースコードであるステップ対応実行済コードを検出するステップ対応実行済コード検出手段と、ステップ対応実行済コード検出手段が検出したステップ対応実行済コードに関する情報を含む変換関連情報を取得する第二変換関連情報取得手段とを備えたプログラム検証装置である。
【００１６】
かかる構成により、例えば、ソースプログラムに対応したプログラムを実行させた場合に実行されうるステップのうちの、第二命令パターンに対応するよう変更されたソースコードに対応したステップに関する情報、例えば処理されたステップに対応するソースコードの情報等を取得することができる。
【００１７】
また、本発明のプログラム検証装置は、前記プログラム検証装置において、変換関連情報は、ステップ対応実行済コード検出手段が検出したステップ対応実行済コードの出現量に関する情報であるプログラム検証装置である。
【００１８】
かかる構成により、例えば、ソースプログラムに対応したプログラムを実行させた場合に実行されうるステップのうちの、第二命令パターンに対応するよう変更されたソースコードに対応したステップの出現量の情報を取得することができる。
【００１９】
また、本発明のプログラム検証装置は、前記プログラム検証装置において、変換関連情報取得部は、ソースプログラムに基づくプログラムを実行させた場合に実行されうる各ステップに対応するソースプログラム内のソースコードであって、第二命令パターンと対応するソースコードを含むソースコードであるステップ対応変換コードを検出するステップ対応変換コード検出手段を更に備え、第二変換関連情報取得手段は、ステップ対応変換コード検出手段が検出したステップ対応変換コードの数に対する、ステップ対応実行済コード検出手段が検出したステップ対応実行済コードの数の比率を示す情報を含む変換関連情報を取得するプログラム検証装置である。
【００２０】
かかる構成により、例えば、ソースプログラムに対応したプログラムを実行させた場合に実行されうるステップのうちの、第二命令パターンに対応するよう変更されたソースコードに対応したステップが、テスト等のためにソースプログラムに対応したプログラムを実行する時にどの程度使用されたかを知ることができる。
【００２１】
また、本発明のプログラム検証装置は、前記プログラム検証装置において、ソースプログラム格納部には、ソースプログラムの変換に用いられた第二命令パターンを示す情報と、第二命令パターンにより変換されたソースプログラム内のソースコードとが対応付けて格納されており、実行済命令パターン検出手段は、ソースプログラム格納部に格納されている第二命令パターンを示す情報から、実行済ソースコード検出部が検出した実行済ソースコード内に含まれるソースコードと対応付けられた第二命令パターンを示す情報を検出して、実行済命令パターンである第二命令パターンを検出するプログラム検証装置である。
【００２２】
かかる構成により、実行済命令パターンを検出する際に、ソースプログラムに対して、第二命令パターンに対応するソースコードを検出する必要がなくなり、処理の高速化を図ることができる。
【００２３】
また、本発明のプログラム検証装置は、前記プログラム検証装置において、ソースプログラムの変換に用いられた第二命令パターンを含む第二命令パターンが格納され得る第二命令パターン格納部を更に備え、実行済命令パターン検出手段は、実行済ソースコード検出部が検出した実行済ソースコードと第二命令パターン格納部に格納されている第二命令パターンとのパターンマッチングを行って、実行済ソースコードに含まれるソースコードに対応する第二命令パターンを検出するプログラム検証装置実行済ソースコードに含まれるソースコードと対応する第二命令パターンを検出するプログラム検証装置である。
【００２４】
かかる構成により、ソースプログラムと、変換に用いられた第二命令パターンとの対応関係が分からなくても、実行済命令パターンを検出することができ、汎用性を高くすることができる。
【発明の効果】
【００２５】
本発明によるプログラム検証装置等によれば、命令パターンを用いて行われた変換の検証が十分にできたか否かを示すことができる。
【図面の簡単な説明】
【００２６】
【図１】本発明の実施の形態１におけるプログラム検証装置のブロック図
【図２】同プログラム検証装置の動作を示すフローチャート
【図３】同プログラム検証装置の動作の変形例について示すフローチャート
【図４】同プログラム検証装置の動作を説明するためのパターン管理表を示す図
【図５】同プログラム検証装置の動作を説明するための、ソースプログラム格納部に格納されているソースプログラムの一例を示す図
【図６】同プログラム検証装置の動作を説明するための、実行済ソースコード検出部が検出した実行済ソースコードの行番号を示す図
【図７】同プログラム検証装置の動作を説明するための、蓄積された実行済命令パターンＩＤを示す図
【図８】同プログラム検証装置の動作を説明するための、重複をなくした実行済命令パターンＩＤを示す図
【図９】同プログラム検証装置の動作を説明するための、重複を削除して得られた変換命令パターンＩＤを示す図
【図１０】同プログラム検証装置の動作を説明するための、変換関連情報の出力例を示す図
【図１１】本発明の実施の形態２におけるプログラム検証装置のブロック図
【図１２】同プログラム検証装置の動作を示すフローチャート
【図１３】同プログラム検証装置の動作を説明するための、取得した実行済コードＩＤを示す図
【図１４】同プログラム検証装置の動作を説明するための、取得した変換コードＩＤを示す図
【図１５】同プログラム検証装置の動作を説明するための、変換関連情報の出力例を示す図
【図１６】本発明の各実施の形態におけるコンピュータシステムの外観の一例を示す図
【図１７】本発明の各実施の形態におけるコンピュータシステムの構成の一例を示す図
【発明を実施するための形態】
【００２７】
以下、プログラム検証装置等の実施形態について図面を参照して説明する。なお、実施の形態において同じ符号を付した構成要素は同様の動作を行うので、再度の説明を省略する場合がある。
【００２８】
（実施の形態１）
図１は、本実施の形態におけるプログラム検証装置１のブロック図である。
プログラム検証装置１は、ソースプログラム格納部１０１、実行済ソースコード検出部１０２、変換関連情報取得部１０３、出力部１０４、および第二命令パターン格納部１０５を備える。
【００２９】
変換関連情報取得部１０３は、実行済命令パターン検出手段１０３１、変換命令パターン検出手段１０３２、および第一変換関連情報取得手段１０３３を備える。
【００３０】
ソースプログラム格納部１０１には、第一命令パターンに対応するソースコードを、第一命令パターンに対応する１以上の第二命令パターンに対応するソースコードに変換して得られたソースプログラムが１以上格納され得る。ソースコードは、例えば、プログラミング言語の言語仕様等に従って記述されたコンピュータに対する一連の指示であり、文字列等で構成される。ソースプログラムは１以上のソースコードにより構成される。ソースプログラムは、例えば、１以上のソースコードにより構成される１以上のソースファイルであっても良い。ここで述べるソースプログラムは、マイグレーションされたソースプログラムであると考えても良い。ソースプログラムは、ＣＯＢＯＬ言語や、Ｃ言語、ｐｅｒｌ言語等、どのような言語のソースプログラムであっても良い。また、スクリプト等であっても良い。ソースプログラム格納部１０１に格納されているソースプログラムに対する第一命令パターンと第二命令パターンとを用いたソースプログラムの変換がどのように行われたものであるかは問わない。例えば、ソースプログラムの変換の一例については、特許文献１等に開示されている。ここで述べるプログラムとは、例えば、コンピュータの行う処理（演算・動作・通信など）の手順を指示したもののことである。ソースプログラム格納部１０１に格納されているソースプログラムは、例えば、第二命令パターンを用いて旧ソースプログラムを変換して得られた、変換後の新ソースプログラムである。
【００３１】
第二命令パターンとは、例えば、変換後（例えばマイグレーション後）のソースプログラムに含まれるソースコードで構成される命令のパターンを示す情報である。第二命令パターンは、変換後のソースプログラムの言語や、変換後のソースプログラムが利用される環境等に対応した命令のパターンでも良い。第二命令パターンに対応するソースコードとは、第二命令パターンに沿って記載されたソースコードである。
【００３２】
第二命令パターンは、ソースプログラムにおいて出現するソースコードのうちの一部、例えば、変数やリテラル文字や関数名等を、固定されていない文字列であることを示すための、予め指定されている字句要素（例えば単語）で置き換えた情報であっても良い。この置き換える情報を、ここでは、例えば変換語と呼ぶ。また、変数やリテラル文字や関数名やこれらを含む文字列等の固定されていない文字列をここでは非固定語と呼ぶ。逆に、これ以外の固定されている文字列を固定語と呼ぶ。変換語は、非固定語を正規表現化したものと考えても良い。変換語は、当該変換語が配置されている位置に配置される情報のデータタイプやデータサイズや属性等が判断可能な情報であることが好ましい。変換語は、ソースプログラムの少なくとも一部を構成する文字列が、変数、関数名、またはリテラル文字の少なくとも一つを含む非固定語のタイプのうちの、いずれのタイプの非固定語であるかを示す文字列と考えても良い。例えば、ソースプログラムの少なくとも一部を構成する文字列が、どのような属性を有する非固定語であるかを示す文字列と考えても良い。すなわち、変換語を、ソースプログラムの少なくとも一部に含まれる、変数、関数名、またはリテラル文字の少なくとも一つを含む文字列（例えば単語）が、どのような属性の文字列であるかを示す文字列と考えても良い。この属性は、ソースプログラムの文字列が、変数、関数名、またはリテラル文字のいずれであるかを示す属性であっても良いし、ソースプログラムの文字列の用途等や、文字列が指定するものの種別等を示す属性であっても良い。また、この属性は、ソースプログラムの文字列の文字数や、文字の種類等を示す属性であっても良い。変換語は、例えば、変数やリテラル文字や関数名等の非予約語を置き換える情報と考えてもよく、この場合、変換語は、いずれのタイプの非予約語であるか、例えば属性の非予約語であるかを示す文字列と考えても良い。第二命令パターンは、例えば、命令語と、ユーザ指定語と、変換語と、その他の文字列とのうちの１以上の組み合わせで構成される。命令語、ユーザ指定語、変換語等の詳細については後述する。第二命令パターンは、ソースプログラムにおける命令語等の固定語の出現するパターン、非固定語（例えば、変数やリテラル文字や関数名等）の出現するパターン、または固定語および非固定語の出現するパターンと考えても良い。また、第二命令パターンを、ソースプログラムにおける予約語（例えば命令語等）の出現するパターン、非予約語（例えば、変数やリテラル文字や関数名等）の出現するパターン、または予約語および非予約語の出現するパターンと考えても良く、この場合、第二命令パターンは、例えば、ソースプログラムにおける予約語の出現するパターン、非予約語の出現するパターン、または予約語および非予約語の出現するパターンの少なくとも一つを示す情報であってもよい。具体例を挙げると、第二命令パターンは、「命令語  ＜引数１＞  ＜引数２＞」という予約語と非予約語の配列パターンを示す情報である。ただし、この場合、「命令語」は、「ＯＰＥＮ」や「ＭＯＶＥ」、「ＣＡＬＬ」等の予約語であり、「＜引数１＞」、「＜引数２＞」は変数文字列である非予約��である。また、第二命令パターン情報は、固定語や非固定語がどのような順番で配列されているかを示す情報等であっても良い。また、第二命令パターン情報は、特定の予約語、例えば命令語や不特定の予約語がどのような順番で配列されているかを示す情報等であっても良い。なお、予約語とは、プログラミング言語の仕様等で定められた、変数名や関数名、クラス名等の識別子名として使用できない字句要素である。また、ここでは、命令語でない予約語を非予約語と呼ぶようにしても良い。
【００３３】
第一命令パターンとは、例えば、変換前（例えばマイグレーション前）のソースプログラムに現れる命令のパターンである。第一命令パターンは、変換前のソースプログラムの言語や、変換後のソースプログラムが利用される環境等に対応した命令のパターンでも良い。第一命令パターンは、変換前のソースプログラムに対応したものである点を除けば、上述した第二命令パターンと同様の命令パターンである。第一命令パターンに対応するソースコードとは、第一命令パターンに沿って記載されたソースコードである。あるいは、変換前のソースプログラムにあらわれるソースコードから取得された命令パターンである。
【００３４】
第一命令パターンに対応するソースコードとは、例えば、第一命令パターンを用いたパターンマッチングにより検出されるソースコードや、第一命令パターンを正規表現化された検索キーとして検索した場合に一致すると判断されるソースコードである。
【００３５】
マイグレーション等のソースプログラムの変換は、例えば、予め用意された第一命令パターンと対応付けられた第二命令パターンを用いて、変換前のソースプログラムの一の第一命令パターンに対応するソースコードを、この一の第一命令パターンに対応する第二命令パターンに対応するソースコードに変換することで行われる。
【００３６】
ソースプログラム格納部１０１には、ソースプログラムの変換に用いられた第二命令パターンを示す情報と、第二命令パターンにより変換されたソースプログラム内のソースコードとが対応付けて格納されていてもよい。第二命令パターンを示す情報は、変換に用いられた第二命令パターンそのものであっても良いし、変換に用いられた第二命令パターンと対応付けられた第一命令パターンであっても良い。あるいは、変換に用いられた第二命令パターンあるいはこれと対応付けられた第一命令パターンを識別するための識別情報であってもよい。また、第二命令パターンで変更されたソースコードと、変更が行われた部分であることを示す情報、例えばフラグ等とが対応付けられていても良い。このような変換に用いられた第二命令パターンを示す情報と、変換されたソースコードとの対応付けは、どのように管理されていても良い。例えば、ソースプログラム内の第二命令パターンで変換された部分の近傍、例えばコメント欄やコメント領域等に、第二命令パターンを示す情報が配置されていても良い。あるいは、変換されたソースコードの位置を示す情報（例えば行番号等）と、変換に用いられた第二命令パターンを示す情報とが、一のレコードの２つの項目として図示しない格納部等に格納されている管理テーブル等で管理されていても良い。なお、ソースプログラム格納部１０１は、物理的に複数の記憶媒体等で実現されても良く、この場合、ソースプログラムと、ソースプログラム内のソースコードに対応する第二命令パターンとが、異なる記憶媒体に格納されていても良い。
【００３７】
ソースプログラム格納部１０１にソースプログラムが蓄積される過程は問わない。ソースプログラム格納部１０１は、不揮発性の記録媒体が好適であるが、揮発性の記録媒体でも実現可能である。
【００３８】
実行済ソースコード検出部１０２は、ソースプログラム格納部１０１に格納されているソースプログラムに基づくプログラムを実行させた場合に使用されるソースコードである実行済ソースコードを検出する。
【００３９】
ソースプログラムに基づくプログラムとは、ソースプログラムに対応した実行用のコードで構成されるプログラムである。ここでのソースプログラムは、例えば、旧ソースプログラムを、第二命令パターンを用いて変換後して得られた、変換後の新ソースプログラムである。例えば、ソースプログラムに基づくプログラムは、ソースプログラムそのものであっても良いし、ソースプログラムに対してコンパイル等の変換を行って得られたプログラムであっても良い。例えば、ソースプログラム格納部１０１に格納されたソースプログラムがインタプリタ型のソースプログラムである場合、ソースプログラムに基づくプログラムは、ソースプログラムそのものであり、ソースプログラムは、予め指定された単位、例えば行単位で読み出されて、解釈実行される。また、ソースプログラム格納部１０１に格納されたソースプログラムがインタプリタ型でない場合、ソースプログラムに基づくプログラムは、ソースプログラムがコンパイルされて得られたプログラムである。
【００４０】
ソースプログラムに基づくプログラムを実行させた場合とは、ソースプログラムに基づくプログラムを実行させ、例えばソースプログラムのテスト用に用意された１以上のテストデータを用いて、予め指定された処理のテストを行うことであっても良いし、ソースプログラムに基づくプログラムに対して、予め指定された処理のテストのシミュレーションを行うことであってもよい。このシミュレーションは、例えばソースプログラムに基づくプログラムに予め指定された処理を実行させた場合に使用されるソースコードを検出するためのシミュレーションと考えてもよい。ここでのテストは、例えばソースプログラムの変換が正常に行われたか否かを判断するためのテスト等である。使用されたソースコードとは、例えば、インタプリタ型のソースプログラムのように、ソースプログラムの少なくとも一部がそのまま読み出されて実行されるソースプログラムである場合、読み出されたソースコードと考えても良い。またインタプリタ型以外のソースプログラムのようにソースプログラムが一旦コンパイルされ、コンパイルされて得られたプログラムが実行される場合、使用されたソースコードとは、コンパイルされたプログラムの実行された部分に対応する、コンパイル前のソースプログラム内のソースコードと考えても良い。なお、テストデータや、どのようなテストを行うかを指定する情報等は、図示しない記憶媒体等に予め蓄積しておくようにすればよい。ソースプログラムに基づくプログラムを実行させた場合に使用されるソースコードとは、ここでは、ソースプログラムに基づくプログラムのうちの、実行される部分に対応したソースコードを意味する。具体的には、ソースプログラムに基づくプログラムのうちの、実行されているオブジェクトコードや命令セットに対応するソースコードである。ここでのソースコードの使用とは、間接的な使用も含む概念と考えても良い。
【００４１】
ソースプログラムに基づくプログラムを実行させた場合に使用されるソースコードを検出するための構成やその処理については、検証対象となるソースプログラムに予め指定された処理を実行させた場合に、検証対象のソースプログラム内のソースコードをどれだけ網羅したかを測定するいわゆるコードカバレッジの技術や、デバッガの技術として公知であるので、ここでは説明を省略する。
【００４２】
実行済ソースコード検出部１０２は、使用されるソースコードを検出する毎に、検出したソースコードを順次取得してもよいし、ソースプログラムに基づくプログラムの実行が終了した時点で、使用されたソースコードを取得しても良い。取得したソースコードは、例えば、図示しない記憶媒体等に蓄積する。また、ソースプログラム内の実行済ソースコードの存在する部分に、実行済ソースコードであることを示す情報、例えばフラグ等を対応付けても良いし、属性等を示す情報を付与しても良い。例えば、ソースプログラム内の実行済ソースコードが含まれる部分を示す情報、例えば、実行済ソースコードが含まれる行の行番号等を取得して、図示しない記憶媒体等に蓄積しても良い。
【００４３】
実行済ソースコード検出部１０２は、通常、ＭＰＵやメモリ等から実現され得る。実行済ソースコード検出部１０２の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。
【００４４】
なお、実行済ソースコード検出部１０２は、ソースプログラムに基づくプログラムを実行させて、例えば予め指定された１以上のテスト等を行うための実行部（図示せず）を備えていると考えても良い。また、このテストに用いられるデータやテスト手順等を示すデータ等が格納されているテストデータ格納部（図示せず）等を備えていると考えても良い。ただし、実行部やテストデータ格納部を実行済ソースコード検出部１０２の外部に備えていても良い。このような実行部は、例えば、ＭＰＵやメモリ等から実現され、処理手順は、通常、ソフトウェアで実現される。また、テストデータ格納部は、不揮発性または揮発性の記憶媒体等において実現される。
【００４５】
変換関連情報取得部１０３は、実行済ソースコード検出部１０２で検出された実行済ソースコードのうちの、第二命令パターンに対応するソースコードに変換された部分に関する情報である変換関連情報を取得する。第二命令パターンに対応するソースコードに変換された部分とは、具体的には、ソースプログラム内の第二命令パターンが示すパターンとなるように変換されたソースコードであり、第二命令パターンを用いて変換されたソースコードと考えても良い。
【００４６】
変換関連情報取得部１０３は、例えば、実行済ソースコード検出部１０２で検出された実行済ソースコードのうちの、第二命令パターンに対応するソースコードに変換された部分を検出し、この検出した情報を用いて変換関連情報を取得する。変換関連情報は、第二命令パターンに対応するソースコードに変換された部分に関する情報であれば、変換されたソースコードについての情報や、このソースコードを含む情報であっても良いし、変換に用いられた第二命令パターンに関する情報であっても良い。
【００４７】
変換関連情報取得部１０３は、例えば、実行済ソースコードのうちの、第二命令パターンに対応するソースコードに変換された部分の変換に用いられた異なる第二命令パターンを示す情報である変換関連情報を取得しても良い。言い換えれば実行済ソースコードの変換に用いられた第二命令パターンのパターン（パターンの種類）を示す情報、例えば第二命令パターンを示すリスト等の情報である変換関連情報を取得しても良い。第二命令パターンを示す情報とは、第二命令パターンそのものであっても良いし、第二命令パターンの識別情報であっても良い。
【００４８】
また、変換関連情報取得部１０３は、例えば、実行済ソースコードのうちの、第二命令パターンに対応するソースコードに変換された部分の変換に用いられた異なる第二命令パターンの出現量に関する情報を変換関連情報として取得しても良い。即ち、実行済ソースコードを構成するソースコードの変換に用いられた第二命令パターンの出現量に関する情報を取得してもよい。異なる第二命令パターンの出現量は、出現する、即ち変換に用いられた第二命令パターンの種類の数と考えても良いし、変換に用いられた第二命令パターンの総数、即ち第二命令パターンのいずれかで変換された部分の数であっても良い。出現量に関する変換関連情報とは、例えば、出現する第二命令パターンの数を示す情報であっても良いし、出現する異なる第二命令パターンの数を示す情報であっても良い。また、例えば、ソースプログラムの第二命令パターンに対応するソースコードに変換された部分の変換に用いられた異なる第二命令パターンの数に対する、実行済ソースコードのうちの、第二命令パターンに対応するソースコードに変換された部分の変換に用いられた異なる第二命令パターンの数の比率を示す情報でもよい。つまり、変換されたソースプログラム内のソースコードに対応する異なる全てあるいは一部の第二命令パターン数に対する、実行済ソースコードに含まれるソースコードに対応する異なる全てあるいは一部の第二命令パターン数の比率を示す情報であってもよい。
【００４９】
この実施の形態においては、変換関連情報取得部１０３が、後述する実行済命令パターン検出手段１０３１、変換命令パターン検出手段１０３２、および第一変換関連情報取得手段１０３３を用いて変換関連情報を取得する場合を例に挙げて説明する。
【００５０】
変換関連情報取得部１０３は、通常、ＭＰＵやメモリ等の記憶媒体等から実現され得る。変換関連情報取得部１０３の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。
【００５１】
実行済命令パターン検出手段１０３１は、実行済ソースコード検出部１０２は、実行済ソースコードに含まれるソースコードと対応する第二命令パターンである実行済命令パターンを検出する。なお、ここでの第二命令パターンの検出とは、第二命令パターンそのものを検出することと考えても良いし、第二命令パターンを示す情報、具体的には第二命令パターンの識別情報を検出することと考えても良い。
【００５２】
実行済命令パターン検出手段１０３１は、例えば、上述したように、ソースプログラム内のソースコードと、当該ソースコードに対応する第二命令パターンを示す情報とが対応付けてソースプログラム格納部１０１に格納されている場合、ソースプログラム格納部１０１にソースコードと対応付けて格納されている第二命令パターンを示す情報の中から、実行済ソースコード検出部１０２が検出した実行済ソースコード内に含まれるソースコードと対応付けられた第二命令パターンを示す情報を検出することにより実行済命令パターンである第二命令パターンを検出する。なお、第二命令パターンを示す情報が第二命令パターンそのものではない場合において、第二命令パターンそのものの検出が必要な場合、検出した第二命令パターンを示す情報から、この情報が示す第二命令パターンを検出すればよい。
【００５３】
また、実行済命令パターン検出手段１０３１は、実行済ソースコード検出部１０２が検出した実行済ソースコードと、後述する第二命令パターン格納部１０５に格納されている第二命令パターンとのパターンマッチングを順次行って、実行済ソースコードに含まれるソースコードに対応する第二命令パターンを検出してもよい。ここでのパターンマッチングは、正規表現を用いた検索処理と同様の処理と考えても良い。例えば、実行済命令パターン検出手段１０３１は、パターンマッチングにより第二命令パターンの固定語や変換語等の出現パターンと対応する固定語や非固定語等の出現パターンを有するソースコードを、実行済ソースコード内において検出する。ここでの対応とは、パターンマッチングや正規表現を用いた検索における一致と考えても良い。このとき、第二命令パターン内の変換語の部分については、この変換語に対応した属性の文字列の非固定語がソースコード内に検出された場合に、対応する、あるいは一致すると判断する。例えば、識別情報が「Ｃ０００１」である第二命令パターンが「ｍｏｖｅ  ＊  ｔｏ  ＊」であり、「ｍｏｖｅ」と「ｔｏ」が固定語であり、「＊」がアルファベットまたは数字のいずれかを示す変換語であったとすると、第二命令パターン「Ｃ０００１」が、実行済ソースコード内の「ｍｏｖｅ  Ａ００１  ｔｏ  ＊Ｂ００１」というソースコードに対応している第二命令パターンであるとして検出される。
【００５４】
なお、パターンマッチングを行う際には、実行済ソースコードから、予め指定されたルールに従って、ソースコードが命令パターンに変換される単位と同じ単位ごとに、ソースコードを切り出し、この切り出したソースコードと，第二命令パターンとのパターンマッチングを行うようにしても良い。特に、ソースプログラムに対応したプログラムの実行時にソースプログラムから読み出すソースコードの単位と、第二命令パターンを用いて変換されるソースコードの単位とが同じ単位である場合、この単位で実行済ソースコードからソースコードを取り出し、取り出したソースコードと第二命令パターンとの比較を行うようにしてもよい。例えば、改行コードや行番号等の予め指定された区切りのための予め指定された指定情報等で区切られたソースコードを単位として実行済ソースコードから切り出したソースコードと第二命令パターンとを比較しても良い。指定情報については後述する。
【００５５】
実行済命令パターン検出手段１０３１は、検出した実行済命令パターン、もしくは実行済命令パターンを示す情報（例えば識別情報等）を取得して、図示しない記憶媒体等の格納部等に蓄積しても良いし、実行済ソースコードについて検出された第二命令パターンであることを示す情報、例えばフラグ等を、後述する第二命令パターン格納部１０５に格納されている第二命令パターンのうちの、検出された第二命令パターンに付与するようにしても良い。
【００５６】
実行済命令パターン検出手段１０３１は、通常、ＭＰＵやメモリ等から実現され得る。実行済命令パターン検出手段１０３１の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。
【００５７】
変換命令パターン検出手段１０３２は、ソースプログラムに含まれるソースコードと対応する第二命令パターンである変換命令パターンを検出する。ここで述べるソースプログラムは、実行済ソースコードの検出対象となったソースプログラムである。なお、ここでの第二命令パターンの検出とは、第二命令パターンそのものを検出することと考えても良いし、第二命令パターンを示す情報、具体的には第二命令パターンの識別情報を検出することと考えても良い。
【００５８】
変換命令パターン検出手段１０３２が、ソースプログラムから変換命令パターンを検出する処理は、上述した実行済命令パターン検出手段１０３１が、実行済ソースプログラムから実行済命令パターンを検出する処理と同様であるので詳細な説明は省略する。
【００５９】
変換命令パターン検出手段１０３２は、検出した変換命令パターン、もしくは変換命令パターンを示す情報（例えば識別情報等）を取得して、図示しない記憶媒体等の格納部等に蓄積しても良いし、ソースプログラムについて検出された第二命令パターンであることを示す情報、例えばフラグ等を、後述する第二命令パターン格納部１０５に格納されている第二命令パターンのうちの、検出された第二命令パターンに付与するようにしても良い。
【００６０】
変換命令パターン検出手段１０３２は、通常、ＭＰＵやメモリ等から実現され得る。変換命令パターン検出手段１０３２の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。
【００６１】
第一変換関連情報取得手段１０３３は、実行済命令パターン検出手段１０３１が検出した第二命令パターンに関する変換関連情報を取得する。
【００６２】
例えば、実行済命令パターン検出手段１０３１が検出した第二命令パターンに関する情報を含む変換関連情報を取得する。具体的には、実行済命令パターン検出手段１０３１が検出した異なる第二命令パターンを変換関連情報として取得する。異なる第二命令パターンとは、ここでは、ユニークな第二命令パターンを意味する。第一変換関連情報取得手段１０３３は、例えば、実行済命令パターン検出手段１０３１が検出した１以上の第二命令パターン群から、重複するものを一つだけ残して削除して得られた第二命令パターン群を変換関連情報として取得する。この場合、例えば、第二命令パターン群のリスト化したものを変換関連情報としてもよい。あるいは、この第二命令パターン群を構成する第二命令パターンの数をカウントして得られた値を、第二命令パターンの出現量に関する変換関連情報として取得してもよい。
【００６３】
また、第一変換関連情報取得手段１０３３は、変換命令パターン検出手段１０３２が検出した異なる変換命令パターンの数に対する、実行済命令パターン検出手段１０３１が検出した異なる実行済命令パターンの数の比率を示す情報を含む変換関連情報を取得しても良い。異なる変換命令パターンおよび異なる実行済命令パターンは、上記と同様に、ユニークな変換命令パターンおよび実行済命令パターンを意味する。即ち、第一変換関連情報取得手段１０３３は、実行済命令パターン検出手段１０３１が検出した１以上の第二命令パターン群から、重複するものを一つだけ残して削除して得られた第二命令パターン群を変換関連情報として取得する。この場合、例えば、第二命令パターン群のリスト化したものを変換関連情報としてもよい。あるいは、この第二命令パターン群を構成する第二命令パターンの数をカウントして得られた値を、異なる第二命令パターンの出現量に関する変換関連情報として取得してもよい。
【００６４】
また、第一変換関連情報取得手段１０３３は、以下のように第二命令パターンの出現量に関する変換関連情報を取得してもよい。まず、第一変換関連情報取得手段１０３３は、例えば、実行済命令パターン検出手段１０３１が検出した１以上の第二命令パターン群から、重複するものを一つだけ残して削除して得られた実行済命令パターン群を取得し、この実行済命令パターン群を構成する第二命令パターンの数をカウントする。また、変換命令パターン検出手段１０３２が検出した１以上の第二命令パターン群から、重複するものを一つだけ残して削除して得られた変換命令パターン群を取得し、この変換命令パターン群を構成する第二命令パターンの数をカウントする。そして、変換命令パターン群を構成する第二命令パターンの数に対する実行済命令パターン群を構成する第二命令パターンの数の比率を算出して、算出した比率を第二命令パターンの出現量に関する変換関連情報として取得する。
【００６５】
第一変換関連情報取得手段１０３３は、通常、ＭＰＵやメモリ等から実現され得る。第一変換関連情報取得手段１０３３の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。
【００６６】
出力部１０４は、変換関連情報取得部１０３が取得した変換関連情報を出力する。ここで述べる出力とは、ディスプレイへの表示、プロジェクターを用いた投影、プリンタへの印字、音出力、外部の装置への送信、記録媒体への蓄積、他の処理装置や他のプログラムなどへの処理結果の引渡しなどを含む概念である。
【００６７】
出力部１０４は、ディスプレイやスピーカー等の出力デバイスを含むと考えても含まないと考えても良い。出力部１０４は、出力デバイスのドライバーソフトまたは、出力デバイスのドライバーソフトと出力デバイス等で実現され得る。
【００６８】
第二命令パターン格納部１０５には、ソースプログラムの変換に用いられた第二命令パターンを含む第二命令パターンが格納され得る。このソースプログラムは、具体的には、実行済ソースコードの検出対象となったソースプログラムである。第二命令パターン格納部１０５には、ソースプログラムの変換に用いられた第二命令パターンが少なくとも格納されていればよい。また、第二命令パターン格納部１０５には、第二命令パターンと、この第二命令パターンに対応する第一命令パターンとが対応付けられて格納されていても良い。
【００６９】
第二命令パターン格納部１０５に第二命令パターンが記憶される過程は問わない。例えば、ソースプログラムの変換に用いられた第二命令パターンがユーザ等により蓄積されても良い。あるいは、ソースプログラムの変換に用いられる第二命令パターンが格納されている格納部をそのまま第二命令パターン格納部１０５として用いても良い。
【００７０】
第二命令パターン格納部１０５は、不揮発性の記録媒体が好適であるが、揮発性の記録媒体でも実現可能である。なお、変換関連情報取得部１０３、具体的には実行済命令パターン検出手段１０３１が、パターンマッチングにより実行済命令パターンを検出しない場合、第二命令パターン格納部１０５は、省略可能である。
【００７１】
次に、プログラム検証装置１の動作について図２のフローチャートを用いて説明する。ここでは、ソースプログラム格納部１０１に格納されているソースプログラムの、第二命令パターンにより変換された部分（ソースコード群）には、変換に用いられた第二命令パターンを示す情報が対応付けられている場合を例に挙げて説明する。
【００７２】
（ステップＳ２０１）実行済ソースコード検出部１０２は、ソースプログラム格納部１０１からソースプログラムを読み出す。
【００７３】
（ステップＳ２０２）実行済ソースコード検出部１０２は、ステップＳ２０１で読み出したソースプログラムから実行済ソースコードを検出する。例えば、ステップＳ２０１で読み出したソースプログラムに基づくプログラムを実行させて、予め指定された１以上のテスト用のデータ等を用いて１以上のテストを行い、そのテストで使用されたソースコードである実行済ソースコード、即ちソースプログラムに基づくプログラムのうちの、テストで使用された部分に対応するソースコードを検出する。ソースプログラムのコンパイルが必要な場合には、適宜コンパイルを行うようにしても良い。テスト用のデータやテストを指示する情報等は、例えば図示しない記憶媒体等により構成されるテスト関連情報格納部（図示せず）等に予め格納しておくようにすればよい。検出した実行済ソースコードについては、例えば、その実行済ソースコードが含まれる部分に対して、実行済ソースコードが含まれる部分であることを示す情報、例えばフラグ等を、ソースプログラム等に付与する。例えば、ソースプログラムが行単位でソースコードが記述されたものである場合、実行済ソースコードの行に、フラグ等の情報を付与してもよい。あるいは、実行済ソースコードをソースプログラムから読み出して、図示しない記憶媒体等の格納部に蓄積しても良い。また、例えば、ソースプログラムが行単位でソースコードが記述されたものである場合、実行済ソースコードが含まれる行番号を取得して、図示しない記憶媒体等の格納部に蓄積しても良い。
【００７４】
（ステップＳ２０３）実行済命令パターン検出手段１０３１は、ステップＳ２０２で検出した実行済ソースコードに含まれる、第二命令パターンに対応するソースコード、具体的には，第二命令パターンで変換されたソースコードを検出する。具体的には、ここでは、上述したように、ソースプログラムの第二命令パターンで変換された部分については、変換に用いられた第二命令パターンを示す情報と対応付けられていることから、ステップＳ２０２で検出した実行済ソースコードのうちの、第二命令パターンを示す情報と対応付けられたソースコードを検出する。
【００７５】
（ステップＳ２０４）実行済命令パターン検出手段１０３１は、ステップＳ２０３で検出したソースコードに対応付けられた第二命令パターンを示す情報を取得する。取得した第二命令パターンを示す情報は、図示しない記憶媒体等に蓄積する。
【００７６】
（ステップＳ２０５）実行済命令パターン検出手段１０３１は、ステップＳ２０４において取得した第二命令パターンを示す情報に対してユニーク処理を行う。即ち同じ第二命令パターンを示す情報を一つだけ残して削除することで重複をなくす処理を行う。これにより実施済命令パターンが得られる。
【００７７】
（ステップＳ２０６）変換命令パターン検出手段１０３２は、ステップＳ２０１において読み出したソースプログラムに含まれる第二命令パターンに対応するソースコードを検出する。具体的には、ソースプログラムから、第二命令パターンを示す情報と対応付けられたソースコードを検出する。
【００７８】
（ステップＳ２０７）変換命令パターン検出手段１０３２は、ステップＳ２０６で検出したソースコードに対応付けられた第二命令パターンを示す情報を取得する。取得した第二命令パターンを示す情報は、図示しない記憶媒体等に蓄積する。
【００７９】
（ステップＳ２０８）第一変換関連情報取得手段１０３３は、ステップＳ２０７において取得した第二命令パターンを示す情報に対してユニーク処理を行う。即ち同じ第二命令パターンを示す情報を一つだけ残して削除することで重複をなくす処理を行う。これにより変換命令パターンが得られる。
【００８０】
（ステップＳ２０９）第一変換関連情報取得手段１０３３は、ステップＳ２０５において取得した実施済命令パターンの数をカウントする。また、ステップＳ２０８において取得した変換命令パターンの数をカウントする。そして、実施済命令パターンの数を変換命令パターンの数で除算して、変換命令パターンの数に対する実施済命令パターン数の比率である変換関連情報を求める。
【００８１】
（ステップＳ２１０）出力部１０４は、ステップＳ２０９で取得した変換関連情報を出力する。なお、ステップＳ２０５において取得した実施済命令パターンのリスト等の情報も出力しても良い。そして、処理を終了する。
【００８２】
図３は、プログラム検証装置１の動作の変形例について示すフローチャートである。ここでは、上記とは異なり、ソースプログラム格納部１０１に格納されているソースプログラムおよび実行済ソースコードから、第二命令パターン格納部１０５に格納されている第二命令パターンを用いて、パターンマッチングにより第二命令パターンにより変換された部分（ソースコード群）を検出する場合の動作の例を説明する。
【００８３】
（ステップＳ３０１）実行済ソースコード検出部１０２は、ソースプログラム格納部１０１からソースプログラムを読み出す。
【００８４】
（ステップＳ３０２）実行済ソースコード検出部１０２は、ステップＳ３０１で読み出したソースプログラムから、実行済ソースコードを検出する。例えば、ステップＳ２０２と同様に、ステップＳ３０１で読み出したソースプログラムに対応したプログラムを実行して、予め指定された１以上のテスト用のデータ等を用いて１以上のテストを行い、ソースプログラムに対応したプログラムのうちの、そのテストで使用された部分に対応するソースコードである実行済ソースコードをソースプログラムから検出する。
【００８５】
（ステップＳ３０３）実行済命令パターン検出手段１０３１は、カウンターｎに１を代入する。
【００８６】
（ステップＳ３０４）変換関連情報取得部１０３は、ｎ番目の第二命令パターンを、第二命令パターン格納部１０５から読み出す。
【００８７】
（ステップＳ３０５）実行済命令パターン検出手段１０３１は、ステップＳ３０２で検出した実行済ソースコード内に、ｎ番目の第二命令パターンと一致するソースコードがあるか否かを検出する。例えば、実行済ソースコードの先頭から、順番にｎ番目の第二命令パターンに対応するソースコードがあるか否かを、パターンマッチングにより判断していく。一致するものが検出された時点で、ステップＳ３０６に進み、検出されなかった場合、ステップＳ３０７に進む。
【００８８】
（ステップＳ３０６）実行済命令パターン検出手段１０３１は、ステップＳ３０５で検出された第二命令パターンを実行済命令パターンとして、図示しない記憶媒体等の格納部に蓄積する。
【００８９】
（ステップＳ３０７）変換命令パターン検出手段１０３２は、ステップＳ３０１で読み出したソースプログラム内に、ｎ番目の第二命令パターンと一致するソースコードがあるか否かを検出する。例えば、ソースプログラムの先頭から、順番にｎ番目の第二命令パターンに対応するソースコードがあるか否かを、パターンマッチングにより判断していく。一致するものが検出された時点で、ステップＳ３０８に進み、検出されなかった場合、ステップＳ３０９に進む。
【００９０】
（ステップＳ３０８）変換命令パターン検出手段１０３２は、ステップＳ３０７で検出された第二命令パターンを変換命令パターンとして、図示しない記憶媒体等の格納部に蓄積する。
【００９１】
（ステップＳ３０９）変換関連情報取得部１０３は、カウンターｎの値を１インクリメントする。
【００９２】
（ステップＳ３１０）変換関連情報取得部１０３は、ｎ番目の第二命令パターンが第二命令パターン格納部１０５に格納されているか否かを判断する。格納されている場合、ステップＳ３０４に戻り、格納されていない場合、ステップＳ３１１に進む。
【００９３】
（ステップＳ３１１）第一変換関連情報取得手段１０３３は、ステップＳ３０６で蓄積した実行済命令パターンの数をカウントする。また、ステップＳ３０８で蓄積した変換命令パターンの数をカウントする。そして、実施済命令パターンの数を変換命令パターンの数で除算して、変換命令パターンの数に対する実施済命令パターン数の比率である変換関連情報を求める。
【００９４】
（ステップＳ３１２）出力部１０４は、ステップＳ３１１で取得した変換関連情報を出力する。なお、ステップＳ３０６で蓄積した実行済命令パターン等の情報も出力しても良い。そして、処理を終了する。
【００９５】
以下、本実施の形態におけるプログラム検証装置１の具体的な動作について説明する。
【００９６】
図４は、ソースプログラムの変換に用いられた第一命令パターンと第二命令パターンと、パターンＩＤとの対応関係を管理するパターン管理表である。このパターン管理表で管理される第一命令パターンや第二命令パターンやパターンＩＤは、例えば、第二命令パターン格納部１０５等に格納されている。パターン管理表は、「パターンＩＤ」、「第一命令パターン」および「第二命令パターン」という項目を有している。「パターンＩＤ」は、第一命令パターンおよび第二命令パターンの組に対応付けられた命令パターンの識別情報である。なお、このパターンＩＤは、第二命令パターンの識別情報と考えても良いし、第一命令パターンの識別情報と考えても良い。「第一命令パターン」は第一命令パターン、「第二命令パターン」は第二命令パターンである。ここでの第一命令パターンおよび第二命令パターンは、行単位でソースコードの変換を行うために用意された命令パターンであるとする。この管理表においては、対応する「第一命令パターン」と「第二命令パターン」と「パターンＩＤ」とが一のレコードで管理されている。なお、「パターンＩＤ」の末尾が「Ｓ」の行から、次に現れる末尾が「Ｅ」である「パターンＩＤ」の行までのレコードの「第一命令パターン」は、一の第一命令パターンであることを示す。第二命令パターンにおける「＃ＤＥＬ＃」は、第一命令パターンに対応した置き換え用の第二命令パターン情報がなく、第一命令パターン情報に対応する第一ソースプログラムの記述箇所を、削除する処理が行われることを示す文字列であるとする。また、第二命令パターンが空欄であるレコードについては、当該レコードの第一命令パターンに対応するソースコードについては変換が行われないことを示す。
【００９７】
図５は、ソースプログラム格納部１０１に格納されているソースプログラムの一例を示す図である。このソースプログラムは、図４に示したようなパターン管理表で管理される第一命令パターンと第二命令パターンとを用いて、予め用意された変換前のソースプログラム（図示せず）の第一の命令パターンに対応するソースコードを、この第一命令パターンに対応する第二命令パターンに対応するソースコードに変換して得られた、パターン変換済のソースプログラムであるとする。パターン変換の処理については、ここでは説明を省略する。この変換においては、ソースプログラムの行単位でソースコードの変換が行われたものとする。このソースプログラムにおいては、各行の１から６カラムまでが行番号等を記述する領域であり、各行の８１カラム以降がコメントを記述するコメント領域であるとする。また、「＊」で始まる文字列（例えば「＊」からピリオドや改行コードまでの文字列）は、コメント行であるとする。このソースプログラムのコメント行には、ソースプログラムの変換に用いられた第一命令パターンと第二命令パターンの組みの識別情報であるパターンＩＤが配置されているものとする。なお、複数行にわたるソースコードが一の第二命令パターンを用いて変換された部分については、変換に用いられた第二命令パターンのパターンＩＤが、複数行のそれぞれの行のコメント領域に記述されるとともに、その先頭行のパターンＩＤの末尾には、「Ｓ」が、また、最終行のパターンＩＤの末尾には、「Ｅ」が記述されるものとする。なお、ここでは、第二命令パターンによる変換が行われなかった行のコメント領域にも、この行に対応する第一命令パターンに対応付けられたパターンＩＤが記述されるものとする。
【００９８】
まず、ユーザが図５に示したソースプログラムを検証する指示を、メニュー等を操作してプログラム検証装置１に与えると、実行済ソースコード検出部１０２は、ソースプログラム格納部１０１に格納されている図５に示したソースプログラムを読み出し、ソースプログラムに対応したプログラムを実行させ、ソースプログラムに対して予め用意された１以上のテストを行う。プログラムの実行は、実行済ソースコード検出部１０２が行っても良いし、外部に設けられた実行部（図示せず）等により実行させても良い。ここでは、例えばソースプログラムが行単位でソースコードを実行するインタプリタ型のソースプログラムであったとすると、ソースプログラムに対応したプログラムは、ソースプログラム自身であり、ソースプログラムが行単位で実行される。ここでの実行は、ソースプログラムを実際に実行させることであっても良いし、ソースプログラムの動作のシミュレーションの実行であっても良い。なお、ここでのソースプログラムに対応したプログラムの実行は、ソースプログラムに対応したプログラムの、プログラム実行時に使用された部分に対応するソースコードを検出できるようにするために、予め指定された文字列等を付加したソースプログラムに対応したプログラムの実行であっても良い。そして、実行済ソースコード検出部１０２は、ソースプログラムに対応したプログラムに対して予め用意されたテストを行った場合に使用される部分に対応したソースコードを実行済ソースコードとしてソースプログラムから検出する。ここでは、テストを行った場合に使用されるソースコードを、ソースプログラムの行単位で検出する。この実行済ソースコード検出部１０２の処理については、いわゆるコードカバレッジツールやデバッガ等の処理と同様であるので、ここでは説明を省略する。実行済ソースコード検出部１０２は、テストにおいて使用された実行済ソースコードの行を検出し、検出した行の行番号を、実行済ソースコードを示す情報として取得する。取得した行番号を、図示しない記憶媒体等に一時記憶する。
【００９９】
図６は、実行済ソースコード検出部１０２が検出した実行済ソースコードの行番号を示す図である。
【０１００】
次に、実行済命令パターン検出手段１０３１は、実行済命令パターンを検出する処理を行う。具体的には、まず、図６に示した実行済ソースコードの行番号の値を一つ取得し、図５に示したソースプログラムのこの行のコメント領域から、パターンＩＤを取得する。そして、取得したパターンＩＤに対応する第二命令パターンがあるか否かを、図４に示した命令パターン管理表を用いて判断する。そして、対応する第二命令パターンがある場合は、このパターンＩＤを、実行済命令パターンを示すパターンＩＤとして検出する。そして検出したパターンＩＤを、図示しない記憶媒体等に一時記憶する。実行済命令パターンを示すパターンＩＤを、ここでは、実行済命令パターンＩＤと呼ぶ。また、対応する第二命令パターンがない場合は、パターンＩＤを実行済命令パターンＩＤとして検出しない。そして、この処理を図６に示した実行済ソースコードの行番号の全てについて行う。
【０１０１】
例えば、実行済命令パターン検出手段１０３１は、まず、図６に示した実行済ソースコードの行番号のうちの、１番目の行番号「００９６００」を取得し、この行番号を有する行のコメント領域内のパターンＩＤ「０１０９９９００００１０」を、図５に示した変換後のソースプログラムから取得する。そして、取得したパターンＩＤ「０１０９９９００００１０」に対応付けられた第二命令パターンがあるか否かを、図４に示したパターン管理表において判断する。図４に示したパターン管理表においては、パターンＩＤ「０１０９９９００００１０」に対応する第二命令パターンはないため、このパターンＩＤを実行済命令パターンＩＤとして検出しない。
【０１０２】
一方、図６に示した実行済ソースコードの行番号のうちの、６行目の行番号「０１０２００」を取得した場合、この行番号を有する行のコメント領域内のパターンＩＤ「０１０９９９００００４０」を、図５に示した変換後のソースプログラムから取得する。そして取得したパターンＩＤ「０１０９９９００００４０」に対応付けられた第二命令パターンがあるか否かを、図４に示したパターン管理表において判断する。図４に示したパターン管理表においては、パターンＩＤ「０１０９９９００００４０」に対応する第二命令パターンがあるため、このパターンＩＤ「０１０９９９００００４０」を実行済命令パターンＩＤとして検出する。そして、実行済命令パターン検出手段１０３１は、このパターンＩＤを実行済命令パターンＩＤとして取得し、取得した実行済命令パターンＩＤを、図示しない記憶媒体等に蓄積する。
【０１０３】
図７は、図６に示した実行済ソースコードの行番号の全てについて処理を行った結果蓄積された実行済命令パターンＩＤを示す図である。
【０１０４】
そして、第一変換関連情報取得手段１０３３は、実行済命令パターンＩＤに対して、重複をなくす処理、いわゆるユニーク処理を行う。例えば、実行済命令パターンＩＤをソートして並べ、隣り合う実行済命令パターンＩＤ同士を比較して、完全一致する場合に一方を削除する処理を繰り返すことで、実行済命令パターンＩＤの重複をなくすことができる。
【０１０５】
図８は、重複をなくした実行済命令パターンＩＤを示す図である。
【０１０６】
つぎに、変換命令パターン検出手段１０３２は、図５に示したソースプログラムに含まれるソースコードと対応する第二命令パターンである変換命令パターンを検出する処理を行う。ここでは、例として、ソースプログラムに含まれる全てのソースコードと対応する第二命令パターンを検出する。ただし、予め指定されたソースコードは、検出対象から除外するようにしてもよい。
【０１０７】
具体的には、変換命令パターン検出手段１０３２は、図５に示したソースプログラムの各行のコメント領域内のパターンＩＤを取得し、上述した実行済命令パターン検出手段１０３１と同様に、取得したパターンＩＤに対応付けられた第二命令パターンがあるか否かを、図４に示したパターン管理表を用いて判断する。そして、対応する第二命令パターンがある場合は、このパターンＩＤを、変換命令パターンを示すパターンＩＤとして取得し、図示しない記憶媒体等に一時記憶する。変換命令パターンを示すパターンＩＤをここでは、変換命令パターンＩＤと呼ぶ。また、対応する第二命令パターンがない場合は、このパターンＩＤは取得しない。そして、この処理を、ソースプログラムの各行のコメント領域に記述されたパターンＩＤについて行う。
【０１０８】
そして、第一変換関連情報取得手段１０３３は、取得して記憶媒体に蓄積した変換命令パターンＩＤについて、上述した実行済命令パターンＩＤの場合と同様に、重複を削除する処理を行う。
【０１０９】
図９は重複を削除して得られた変換命令パターンＩＤを示す図である。
【０１１０】
次に、第一変換関連情報取得手段１０３３は、図８に示した重複をなくした実行済命令パターンＩＤの数をカウントする。ここではカウント数が「１８０」であったとする。
【０１１１】
同様に、第一変換関連情報取得手段１０３３は、図９に示した重複をなくした変換命令パターンＩＤの数をカウントする。ここではカウント数が「２５０」であったとする。
【０１１２】
第一変換関連情報取得手段１０３３は、カウントした実行済命令パターンＩＤ数を変換命令パターンＩＤ数を除算して、変換命令パターンＩＤ数に対する実行済命令パターンＩＤ数の比率を算出する。ここでは、比率は、０．７２、即ち７２％となる。ここでは、第一変換関連情報取得手段１０３３が算出したこの比率と、第一変換関連情報取得手段１０３３が取得した図８に示すような重複をなくした実行済命令パターンＩＤをリストと、このリストを構成する実行済命令パターンＩＤのカウント数が、第一変換関連情報取得手段１０３３が取得した変換関連情報であるとする。
【０１１３】
出力部１０４は、第一変換関連情報取得手段１０３３が取得した変換関連情報を、図示しないモニタ等に表示する。
【０１１４】
図１０は、変換関連情報の出力例を示す。
【０１１５】
出力された変換関連情報のうち、算出された比率は、ソースプログラムにおける第二命令パターンを用いて変換された部分に用いられている異なる第二命令パターン数、言い換えれば第二命令パターンの種類の数に対する、このソースプログラムに対して予め指定された１以上のテストを行った場合に使用されるソースコードのうちの第二命令パターンを用いて変換された部分に用いられている異なる第二命令パターン数、言い換えれば第二命令パターンの種類の数の比率を示す。つまり、この比率は、ソースプログラムの変換に用いられた第二命令パターンのうちの、どれぐらいの比率の第二命令パターンが、テストによって少なくとも一回は検証されたかを示す指標として用いることができる。つまり、変換に用いられた第二命令パターンのうちのどの程度の第二命令パターンが変換に用いられたかを知ることができる。これにより、例えばテストの妥当性等を判断することができる。
【０１１６】
また、出力された変換関連情報のうちの、実行済命令パターンＩＤのリストは、テストで使用されたソースコードのうちの、実際にテストで使用されたソースコードに対応する第二命令パターンのＩＤである。このリストから、命令パターンによる変換がテスト済である第二命令パターンを知ることができる。
【０１１７】
なお、上記具体例においては、第二命令パターンを用いた変換が行われなかった行についても、パターンＩＤがコメント領域に記述されたソースプログラムを用いたため、実行済ソースコードの行番号が示す行のコメント領域からパターンＩＤを取得し、このパターンＩＤに対応する第二命令パターンがあるか否かにより、第二命令パターンに対応するソースコードの変換に用いられたパターンＩＤであるか否かを判断するようにした。しかし、ソースプログラムのコメント領域のうちの、第二命令パターンに対応するソースコードに変換された行のコメント領域にだけ、パターンＩＤが記述されている場合、実行済ソースコードの行番号が示す行のコメント領域のパターンＩＤを実行済命令パターンのパターンＩＤとして取得するようにしても良い。この場合、命令パターン管理表等は省略可能である。かかることは、他の具体例においても同様である。
【０１１８】
また、上記具体例において、上述したように、実行済命令パターン検出手段１０３１が、実行済ソースコードを構成する各行について、図４に示すような第二命令パターン格納部１０５に格納されている各第二命令パターンとのパターンマッチングを行い、マッチングする第二命令パターンが検出された場合に、この第二命令パターンを実行済命令パターンとして検出するようにしても良い。
【０１１９】
また、同様に、変換命令パターン検出手段１０３２が、ソースプログラムの各行について、図４に示すような第二命令パターン格納部１０５に格納されている各第二命令パターンとのパターンマッチングを行い、マッチングする第二命令パターンが検出された場合に、この第二命令パターンを変換命令パターンとして検出するようにしても良い。
【０１２０】
以上、本実施の形態によれば、ソースプログラムから実行済ソースコードを検出し、この検出された実行済ソースコードのうちの、第二命令パターンに対応するソースコードに変換された部分に関する情報である変換関連情報を取得し、出力するようにしたので、命令パターンを用いて行われた変換の検証が十分にできたか否かを示すことができる。例えば、変換に用いられた第二命令パターンのうちの、どの程度の第二命令パターンで変換された箇所が、テスト等を行う際のソースプログラムに対応したプログラムの実行時にどの程度使用されたかを知ることができる。これにより、例えば、ソースプログラムに対して行われたテスト等によって、変換に使用された第二命令パターンのうちの、どの程度の第二命令パターンで変換された箇所が検証されたかということや、どの第二命令パターンで変換された箇所が検証されたか等を知ることができ、テストの妥当性を検証したり、テストを終了させるか否か等の判断を行うことができる。
【０１２１】
（実施の形態２）
本実施の形態にかかるプログラム検証装置２は、上記実施の形態で説明したプログラム検証装置２において、ソースプログラムに基づくプログラムを実行させた場合に実行されうる各ステップに対応するソースプログラム内のソースコードであって、実行済ソースコードに含まれるとともに、第二命令パターンと対応するソースコードを含むソースコードであるステップ対応実行済コードを検出し、この検出したステップ対応実行済コードに関する変換関連情報を取得し出力するようにしたものである。
【０１２２】
図１１は、本実施の形態におけるプログラム検証装置２のブロック図である。
プログラム検証装置２は、ソースプログラム格納部１０１、実行済ソースコード検出部１０２、変換関連情報取得部２０３、出力部１０４、および第二命令パターン格納部１０５を備える。
【０１２３】
変換関連情報取得部２０３は、ステップ対応実行済コード検出手段２０３１、ステップ対応変換コード検出手段２０３２、及び第二変換関連情報取得手段２０３３を備える。
【０１２４】
ソースプログラム格納部１０１、実行済ソースコード検出部１０２、出力部１０４、および第二命令パターン格納部１０５の構成及び動作については、上記実施の形態１と同様であるのでここでは説明を省略する。
【０１２５】
変換関連情報取得部２０３は、実行済ソースコード検出部１０２で検出された実行済ソースコードのうちの、第二命令パターンに対応するソースコードに変換された部分に関する情報である変換関連情報を取得する。変換関連情報取得部１０３は、例えば、実行済ソースコード検出部１０２で検出された実行済ソースコードのうちの、第二命令パターンに対応するソースコードに変換された部分を検出し、この検出した情報を用いて変換関連情報を取得する。
【０１２６】
変換関連情報取得部２０３は、例えば、実行済ソースコード検出部１０２で検出された実行済ソースコードのうちの、第二命令パターンに対応するソースコードに変換された部分を検出し、この検出した情報を用いて変換関連情報を取得する。変換関連情報は、第二命令パターンに対応するソースコードに変換された部分に関する情報であれば、変換されたソースコードについての情報や、このソースコードを含む情報であっても良いし、変換に用いられた第二命令パターンに関する情報であっても良い。例えば、変換関連情報は、変換に用いられた第二命令パターンの出現量に関する情報である。
【０１２７】
変換関連情報取得部２０３は、例えば、ソースプログラム格納部１０１に格納されているソースプログラムに基づくプログラムを実行させた場合に実行されうる各ステップに対応するソースプログラム内のソースコードであって、実行済ソースコード検出部１０２で検出された実行済ソースコードに含まれるとともに、第二命令パターンと対応するソースコードを含むソースコードであるステップ対応実行済コードを検出し、このステップ対応実行済コードに関する情報を含む変換関連情報を取得する。この場合の変換関連情報は、ステップ対応実行済コードに関する情報であれば、ステップ対応実行済コードを示す情報であっても良いし、ステップ対応実行済コードの出現量、言い換えればステップ対応実行済コードが対応するステップの出現量に関する情報であってもよい。ここでのプログラムを実行させた場合とは、例えば、プログラムに予め指定されたテスト等を実行させた場合である。
【０１２８】
なお、ここで述べるステップとは、例えば、ソースプログラムに基づくプログラムの処理が行われる単位や、処理段階を示す単位である。例えばソースプログラムがインタプリタ型のソースプログラムである場合、ステップとは、例えば行等のソースプログラムの逐次解釈実行される各ソースコード群や、ソースコードの読み出される単位である。例えば、改行コードや行番号等の予め指定された区切りのための予め指定された指定情報等で区切られる単位の情報がステップと考えても良い。具体的には、指定情報のうちの一つが出現してから次に指定情報の一つが出現する間の範囲内の情報をステップに対応するソースコードと考えても良い。区切のための指定情報は、例えば、ユーザにより指定された文字列等の情報である。ここでは文字列に、ピリオドやセミコロン等の記号を含むと考えてもよい。指定情報は、予め指定された、改行コードやＴＡＢ等の制御コード等であっても良い。改行コードやＴＡＢ等の制御コードを文字列と考えても良い。また、指定情報は、例えば、第一ソースプログラムに用いられる命令語、すなわち、第一ソースプログラムの言語等に用いられる命令語の全部、あるいは一部等であっても良い。また、指定情報は、これらの情報の組み合わせであっても良い。なお、区切のための指定情報は、ステップに対応するソースコードを区切る以外に、パターンマッチング等を行う際のソースプログラムからソースコードを取り出す際の区切位置を示す情報として利用可能である。
【０１２９】
また、ソースプログラムがインタプリタ型のソースプログラムとは異なるソースプログラム、例えばコンパイルが必要なソースプログラムである場合、ステップはコンパイルされたプログラムの各命令セットや命令群である。コンパイルにより得られたオブジェクトコードの読み出される単位であっても良い。
【０１３０】
変換関連情報取得部２０３は、さらに、ソースプログラム格納部１０１に格納されているソースプログラムに基づくプログラムを実行させた場合に実行されうる各ステップに対応するソースプログラム内のソースコードであって、第二命令パターンと対応するソースコードを含むソースコードであるステップ対応変換コードを検出し、ステップ対応実行済コードの数に対する、ステップ対応変換コードの数の比率を示す情報を含む変換関連情報を、ステップ対応実行済コードの出現量に関する変換関連情報として取得してもよい。
【０１３１】
この実施の形態においては、変換関連情報取得部２０３が、後述するステップ対応実行済コード検出手段２０３１、ステップ対応変換コード検出手段２０３２、及び第二変換関連情報取得手段２０３３を用いて変換関連情報を取得する場合を例に挙げて説明する。
【０１３２】
変換関連情報取得部２０３は、通常、ＭＰＵやメモリ等の記憶媒体等から実現され得る。変換関連情報取得部１０３の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。
【０１３３】
ステップ対応実行済コード検出手段２０３１は、ソースプログラム格納部１０１に格納されているソースプログラムに基づくプログラムを実行させた場合に実行されうる各ステップに対応するソースプログラム内のソースコードであって、実行済ソースコードに含まれるとともに、第二命令パターンと対応するソースコードを含むソースコードであるステップ対応実行済コードを検出する。例えば、ソースプログラムに基づくプログラムを実行させた場合に実行されうる各ステップに対応するソースプログラム内のソースコードの中から、実行済ソースコード検出部１０２が検出した実行済ソースコードに含まれるソースコードを検出し、さらに、検出したソースコードの中から、第二命令パターンと対応するソースコードを含むソースコードを検出する。あるいは、ソースプログラムに基づくプログラムを実行させた場合に実行されうる各ステップに対応するソースプログラム内のソースコードの中から、第二命令パターンと対応するソースコードを含むソースコードを検出し、さらに、検出したソースコードの中から、実行済ソースコード検出部１０２が検出した実行済ソースコードに含まれるソースコードを検出してもよい。ソースプログラムに基づくプログラムを実行させた場合に実行されうる各ステップに対応するソースプログラム内のソースコードの中から、実行済ソースコード検出部１０２が検出した実行済ソースコードに含まれるソースコードを検出する処理は、例えばデバッガ等の処理として公知である。また、このようなステップ単位のソースコードとコンパイルされて得られたオブジェクトコード等との対応関係を示す情報を、コンパイラが、オブジェクトコード等に付加したり、管理情報を作成したりしてもよい。このような情報を用いることで、ステップ単位のソースコードが検出可能である。なお、上述した実行済ソースコード検出部１０２が、ここで述べるステップと同様に、ソースプログラムに基づくプログラムを実行させた場合に実行されうる各ステップ単位で実行済ソースコードを検出するようにしても良く、この場合、ステップ対応実行済コード検出手段２０３１は、実行済ソースコード検出部１０２が検出したステップ単位の実行済ソースコードの中から、第二命令パターンと対応するソースコードを含むソースコードを検出するようにしても良い。また、ソースプログラムが、ここで述べるステップと同様の、ソースプログラムに基づくプログラムを実行させた場合に実行されうる各ステップ単位で、第二命令パターンに対応するソースコードに変換されたものである場合、ステップ対応実行済コード検出手段２０３１は、実行済ソースコード検出部１０２が検出したステップ単位の実行済ソースコードの中から、第二命令パターンと対応するソースコードを検出するようにしても良い。
【０１３４】
具体的には、ソースプログラムが、行単位で実行されるインタプリタ型のソースプログラムであったとし、実行済ソースコード検出部１０２が行単位で実行済ソースコードを検出したとすると、ステップ対応実行済コード検出手段２０３１は、実行済ソースコード検出部１０２が検出した行単位の実行済ソースコードの中から、第二命令パターンと対応するソースコードを含むソースコード行を検出してもよい。
【０１３５】
なお、ステップ対応実行済コード検出手段２０３１が、第二命令パターンと対応するソースコードを検出する処理は、上記実施の形態１の実行済命令パターン検出手段１０３１と同様であるので、ここでは説明を省略する。
【０１３６】
ステップ対応実行済コード検出手段２０３１は、通常、ＭＰＵやメモリ等から実現され得る。ステップ対応実行済コード検出手段２０３１の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。
【０１３７】
ステップ対応変換コード検出手段２０３２は、ソースプログラム格納部１０１に格納されているソースプログラムに基づくプログラムを実行させた場合に実行されうる各ステップに対応するソースプログラム内のソースコードであって、第二命令パターンと対応するソースコードを含むソースコードであるステップ対応変換コードを検出する。例えば、ソースプログラムに基づくプログラムを実行させた場合に実行されうる各ステップに対応するソースプログラム内のソースコードの中から、第二命令パターンと対応するソースコードを含むソースコードを検出する。各ステップに対応するソースコードを検出する処理や、第二命令パターンと対応するソースコードを含むソースコードを検出する処理は、ステップ対応実行済コード検出手段２０３１と同様である。なお、ソースプログラムが、ここで述べるステップと同様の、ソースプログラムに基づくプログラムを実行させた場合に実行されうる各ステップ単位で、第二命令パターンに対応するソースコードとなるよう変換されたものである場合、ステップ対応実行済コード検出手段２０３１は、ソースプログラムの中から、第二命令パターンと対応するソースコードを検出するようにしても良い。
【０１３８】
具体的には、ソースプログラムが、行単位で実行されるインタプリタ型のソースプログラムであったとし、ソースプログラムが、行単位で、第二命令パターンに対応するソースコードに変換されたものである場合、ステップ対応変換コード検出手段２０３２は、ソースプログラムの中から、第二命令パターンと対応するソースコードを含むソースコード行を検出してもよい。
【０１３９】
ステップ対応変換コード検出手段２０３２は、通常、ＭＰＵやメモリ等から実現され得る。ステップ対応変換コード検出手段２０３２の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。
【０１４０】
第二変換関連情報取得手段２０３３は、ステップ対応実行済コード検出手段１０３１が検出したステップ対応実行済コードに関する情報を含む変換関連情報を取得する。具体的には、ステップ対応実行済コードの全てあるいは一部をリスト化した変換関連情報を取得する。あるいは、ステップ対応実行済コードに、当該ソースコードに対する第二命令パターンを示す情報を対応付けた情報を出力しても良い。
【０１４１】
また、第二変換関連情報取得手段２０３３は、ステップ対応実行済コード検出手段１０３１が検出したステップ対応実行済コードの出現量に関する変換関連情報を取得する。具体的には、第二変換関連情報取得手段２０３３は、ステップ対応実行済コード検出手段１０３１が検出したステップ対応実行済コードの数をカウントし、その値を出現量に関する変換関連情報として取得する。あるいは、第二変換関連情報取得手段２０３３は、ステップ対応変換コード検出手段１０３１が検出したステップ対応変換コードの数に対する、ステップ対応実行済コード検出手段１０３２が検出したステップ対応実行済コードの数の比率を示す情報を出現量に関する変換関連情報として含む変換関連情報を取得しても良い。ステップ対応実行済コードの数や、ステップ対応変換コードの数は、一の第二命令パターンに対応するソースコードを一つと考えた場合の数であっても良いし、ステップ対応実行済コードや、ステップ対応変換コードを構成する文字数やスペース等で区切られた単語数等の数であっても良い。
【０１４２】
第二変換関連情報取得手段２０３３は、通常、ＭＰＵやメモリ等から実現され得る。第二変換関連情報取得手段２０３３の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。
次に、プログラム検証装置２の動作について図１２のフローチャートを用いて説明する。ここでは、例として、ソースプログラム格納部１０１に格納されているソースプログラムの、第二命令パターンにより変換された部分（ソースコード群）には、変換に用いられた第二命令パターンを示す情報が対応付けられている場合について説明する。
【０１４３】
（ステップＳ１２０１）実行済ソースコード検出部１０２は、ソースプログラム格納部１０１からソースプログラムを読み出す。
【０１４４】
（ステップＳ１２０２）実行済ソースコード検出部１０２は、ステップＳ２０１で読み出したソースプログラムから実行済ソースコードを検出する。例えば、ステップＳ２０１で読み出したソースプログラムに基づくプログラムを実行させて、予め指定された１以上のテスト用のデータ等を用いて１以上のテストを行い、そのテストで使用されたソースコードである実行済ソースコード、即ちソースプログラムに基づくプログラムのうちの、テストで使用された部分に対応するソースコードを検出する。テスト用のデータやテストを指示する情報等は、例えば図示しない記憶媒体等により構成されるテスト関連情報格納部（図示せず）等に予め格納しておくようにすればよい。検出した実行済ソースコードについては、実行済ソースコードが含まれる部分であることを示す情報、例えばフラグ等を、ソースプログラム等に付与する。例えば、ソースプログラムに対応するプログラムを実行した場合に実行されうる各ステップを検出し、検出した１以上のステップに対応するソースコードに対して、各ステップ単位で実行済ソースコードが含まれる部分であることを示す情報、例えばフラグ等を付与する。この情報は、ソースプログラムに記述されてもよいし、図示しない格納部等に格納される管理情報等を用いて管理されても良い。例えば、ソースプログラムが行単位でソースコードが記述されたものである場合、実行されうる各ステップは、行単位で対応付けられるため、実行済ソースコードの行に、フラグ等の情報を付与してもよい。あるいは、実行済ソースコードをソースプログラムから読み出して、図示しない記憶媒体等の格納部に蓄積しても良い。また、例えば、ソースプログラムが行単位でソースコードが記述されたものである場合、実行済ソースコードが含まれる行番号を取得して、図示しない記憶媒体等の格納部に蓄積しても良い。
【０１４５】
（ステップＳ１２０３）ステップ対応実行済コード検出手段２０３１は、ソースプログラムに基づくプログラムを実行させた場合に実行されうるステップに対応するソースプログラム内のソースコードの中から、第二命令パターンのいずれかに対応するソースコードを含むソースコードであって、ステップＳ１２０２で検出した実行済ソースコードに含まれるソースコードであるステップ対応実行済コードを検出する。例えば、ソースプログラムに含まれる各ステップに対応するソースコードのそれぞれについて、ステップＳ１２０２で検出した実行済ソースコードに含まれるか否かを判断し、含まれる場合、さらにこのソースコードが第二命令パターンのいずれかに対応付けられたソースコードであるか否かを判断する。そして、実行済ソースコードに含まれ、かつ第二命令パターンのいずれかに対応付けられた、ステップに対応するソースコードを検出する。ソースプログラム内のソースコードとステップとの対応関係は、例えばカバレッジツールやデバッガ等により取得可能である。なお、特に、ステップＳ１２０２において、実行済ソースコードを、プログラムの実行されうるステップ単位で検出した場合、ステップ対応実行済コード検出手段２０３１は、単にこの実行済ソースコードの中から、第二命令パターンと対応付けられたものを検出するだけでよい。さらに、ソースプログラムにおいて、当該ソースプログラムに基づくプログラムが実行されうるステップ単位で、ソースコードと、第二命令パターンとが対応付けられている場合、ステップ対応実行済コード検出手段２０３１は、ソースプログラムの中から、実行済ソースコードの中から、第二命令パターンと対応付けられたソースコードを検出するだけでよい。ステップ対応実行済コード検出手段２０３１は、検出したステップ対応実行済コードや、検出したステップ対応実行済コードを示す情報を、図示しない記憶媒体等の格納部に蓄積しても良いし、ソースプログラムの検出したソースコードに対応する部分に、検出されたことを示すフラグ等の情報を付与しても良い。また、例えば、ソースプログラムが行単位でソースコードが記述されたものである場合、検出したステップ対応実行済コードが含まれる行番号を取得して、図示しない記憶媒体等の格納部に蓄積しても良い。
【０１４６】
（ステップＳ１２０４）ステップ対応変換コード検出手段２０３２は、ソースプログラムに基づくプログラムを実行させた場合に実行されうるステップに対応するソースプログラム内のソースコードの中から、第二命令パターンのいずれかに対応するソースコードを含むステップ対応変換コードを検出する。例えば、ソースプログラムに含まれる各ステップに対応するソースコードのそれぞれについて、このソースコードが第二命令パターンのいずれかに対応付けられたソースコードであるか否かを判断する。そして、第二命令パターンのいずれかに対応付けられた、ステップに対応するソースコードをステップ対応変換コードとして検出する。特に、ソースプログラムにおいて、当該ソースプログラムに基づくプログラムが実行されうるステップ単位で、ソースコードと、第二命令パターンとが対応付けられている場合、ステップ対応実行済コード検出手段２０３１は、単にこのソースプログラムの中から、第二命令パターンと対応付けられたソースコードを検出するだけでよい。ステップ対応変換コード検出手段２０３２は、検出したステップ対応変換コードや、検出したステップ対応変換コードを示す情報を、図示しない記憶媒体等の格納部に蓄積しても良いし、ソースプログラムの検出したステップ対応変換コードに対応する部分に、検出されたことを示すフラグ等の情報を付与しても良い。また、例えば、ソースプログラムが行単位でソースコードが記述されたものである場合、検出したステップ対応変換コードが含まれる行番号を取得して、図示しない記憶媒体等の格納部に蓄積しても良い。
【０１４７】
（ステップＳ１２０５）第二変換関連情報取得手段２０３３は、ステップＳ１２０３で検出したステップ対応実行済コードの数をカウントし、さらに、ステップＳ１２０４で検出したステップ対応変換コードの数をカウントし、カウントしたステップ対応変換コード数でステップ対応実行済コード数を除算して、ステップ対応変換コード数に対するステップ対応実行済コード数の比率である変換関連情報を取得する。
【０１４８】
（ステップＳ１２０６）出力部１０４は、ステップＳ２０９で取得した変換関連情報を出力する。なお、ステップＳ２０５において取得した実施済命令パターンのリスト等の情報も出力しても良い。そして、処理を終了する。
【０１４９】
なお、ソースプログラムにおいてソースコードと第二命令パターンとが対応付けられていない場合等には、上記のステップＳ１２０３や、ステップＳ１２０４において、ソースプログラムに基づくプログラムが実行されうるステップに対応した各ソースコードについて、第二命令パターン格納部１０５から順次読み出したソースコードとのパターンマッチングを行って、第二命令パターンのいずれかと対応したソースコードを検出するようにすればよい。
【０１５０】
以下、本実施の形態におけるプログラム検証装置２の具体的な動作について説明する。ここでは、例えば、図５と同様の、第二命令パターンとソースコードの行とが対応付けられたソースプログラムが、ソースプログラム格納部１０１に格納されているものとする。ソースコードは、ここでは、行単位で、対応付けられた第二命令パターンを用いて変換されているものとする。また、このソースプログラムは、インタプリタ型の言語で記述されたソースプログラムであり、行単位で、ソースコードが読み出されて解釈実行されるものとする。つまり、ソースプログラムに基づくプログラムを処理する各ステップが、ソースプログラムの行と対応付けられているものとする。但し、一のステップが複数行と対応付けられていても良い。具体的に、一のステップに対応したソースコードが複数行にわたって記述されている場合には、この複数行を一のソースコード群として読み出して実行できるように、行番号や改行コードで区切られたソースコードを取得せずに、「．」（ピリオド）等で区切られた範囲のソースコードを一のステップに対応したソースコード群として取得するようにしても良い。
【０１５１】
まず、ユーザが図５に示したソースプログラムを検証する指示を、メニュー等を操作してプログラム検証装置１に与えると、上記実施の形態１と同様に、実行済ソースコード検出部１０２は、ソースプログラム格納部１０１に格納されている図５に示したソースプログラムを読み出し、ソースプログラムに対応したプログラムを実行させ、ソースプログラムに対して予め用意された１以上のテストを行う。ただし、この具体例では、行単位でソースプログラム内のソースコードを読み出して解釈実行を行う。そして、読み出された行を検出し、検出した行の行番号を実行済ソースコードを示す情報として取得し、図示しない記憶媒体等に蓄積する。取得した実行済ソースコードの行番号は、図６と同様であるとする。
【０１５２】
次に、ステップ対応実行済コード検出手段２０３１は、ステップ対応実行済コードを検出する処理を行う。具体的には、まず、ソースプログラムに基づくプログラムを実行させた場合の各ステップに対応する各ソースコードの中から、実行済ソースコードに含まれるソースコードを検出する。ここで、この具体例においては、実行済ソースコード検出部１０２は、実行済ソースコードを、ソースプログラムに基づくプログラムを実行させた場合の各ステップに対応するソースコード群単位、即ち、行単位で検出しているため、実行済ソースコード検出部１０２が行単位で検出した実行済ソースコードが、それぞれ、ソースプログラムに基づくプログラムを実行させた場合の各ステップに対応する各ソースコードのうちの、実行済ソースコードに含まれるソースコードとなる。さらに、ステップ対応実行済コード検出手段２０３１は、ソースプログラムに基づくプログラムを実行させた場合の各ステップに対応する各ソースコードのうちの、実行済ソースコードに含まれるソースコードのそれぞれから、第二命令パターンのいずれか一つと対応付けられたソースコードを検出する。ここでは、第二命令パターンは、ソースプログラムに基づくプログラムを実行させた場合の各ステップに対応する各ソースコードである、ソースプログラムの各行と対応付けられていることから、この処理は、ここでは、実行済ソースコードの行の中から、第二命令パターンと対応付けられた行を検出する処理となる。
【０１５３】
例えば、ステップ対応実行済コード検出手段２０３１は、まず、図６に示した実行済ソースコードの行番号のうちの、１番目の行番号「００９６００」を取得し、この行番号を有する行のコメント領域内のパターンＩＤ「０１０９９９００００１０」を、図５に示した変換後のソースプログラムから取得する。そして、取得したパターンＩＤ「０１０９９９００００１０」に対応付けられた第二命令パターンがあるか否かを、図４に示したパターン管理表において判断する。図４に示したパターン管理表においては、パターンＩＤ「０１０９９９００００１０」に対応する第二命令パターンはないため、この行を、ステップ対応実行済コードの行として検出しない。
【０１５４】
一方、図６に示した実行済ソースコードの行番号のうちの、６行目の行番号「０１０２００」を取得した場合、この行番号を有する行のコメント領域内のパターンＩＤ「０１０９９９００００４０」を、図５に示した変換後のソースプログラムから取得する。そして取得したパターンＩＤ「０１０９９９００００４０」に対応付けられた第二命令パターンがあるか否かを、図４に示したパターン管理表において判断する。図４に示したパターン管理表においては、パターンＩＤ「０１０９９９００００４０」に対応する第二命令パターンがあるため、この行を、ステップ対応実行済コードの行として検出する。そして、ステップ対応実行済コード検出手段２０３１は、この行番号「０１０２００」をステップ対応実行済コードを示す識別情報である実行済コードＩＤとして取得し、取得した実行済コードＩＤ（行番号）を、図示しない記憶媒体等に蓄積する。
【０１５５】
図１３は、ステップ対応実行済コード検出手段２０３１が上記の処理を行った結果、取得した実行済コードＩＤを示す図である。
【０１５６】
つぎに、ステップ対応変換コード検出手段２０３２は、ステップ対応変換コードを検出する処理を行う。具体的には、ソースプログラムに基づくプログラムを実行させた場合の各ステップに対応する各ソースコードの中から、第二命令パターンのいずれか一つと対応付けられたソースコードを検出する。ここで、この具体例においては、各ステップに対応するソースコードは、ソースプログラムの行と対応付けられており、第二命令パターンもソースプログラムの各行と対応付けられていることから、この処理は、ここでは、第二命令パターンと対応付けられたソースコードの行を検出する処理となる。ステップ対応変換コード検出手段２０３２は、ソースプログラムから第二命令パターンと対応付けられた行番号を、ステップ対応変換コードの識別情報である変換コードＩＤとして取得し、取得した変換コードＩＤ（行番号）を、図示しない記憶媒体に蓄積する。
【０１５７】
図１４は、ステップ対応変換コード検出手段２０３２が上記の処理を行った結果、取得した変換コードＩＤを示す図である。
【０１５８】
つぎに、第二変換関連情報取得手段２０３３は、図１３に示した実行済コードＩＤの数をカウントする。また、図１４に示した変換コードＩＤの数をカウントする。そして、カウントした実行済コードＩＤ数を変換コードＩＤ数で除算して、変換コードＩＤの数に対する実行済コードＩＤの数の比率を算出する。ここでは、例えば、変換コードＩＤ数が「４５０」、実行済コードＩＤ数が「３００」であったとすると、算出される比率は、０．６６７、即ち６６．７％となる。この算出した比率を変換関連情報として取得する。また、ここでは、図１３に示したステップ対応実行済コードＩＤも、実行された行を示す行番号を示す変換関連情報として取得する。
【０１５９】
出力部１０４は、第一変換関連情報取得手段１０３３が取得した変換関連情報を、図示しないモニタ等に表示する。
【０１６０】
図１５は、変換関連情報の出力例を示す。
【０１６１】
出力された変換関連情報のうち、算出された比率は、ソースプログラムに基づくプログラムを実行させた場合に実行されうる各ステップのうちの、第二命令パターンを用いて変換されたソースコードに対応したステップ数に対する、このソースプログラムに対して予め指定された１以上のテストを行った場合に処理されたステップのうちの、第二命令パターンを用いて変換されたソースコードに対応したステップ数の比率を示す。つまり、この比率は、ソースプログラムに対応したプログラムを実行した場合に実行されうるステップのうちの、どれぐらいの比率のステップが、テストによって検証されたかを示す指標として用いることができる。これにより、例えばテストの妥当性等を判断することができる。
【０１６２】
また、出力された変換関連情報のうちの、実行済コードＩＤのリストは、テストで処理されたステップに対応したソースコードのうちの、第二命令パターンを用いて変換されたもののリストである。このリストから、どの第二命令パターンで変換されたソースコードのうちの、どのソースコードがテストされたかを知ることができる。
【０１６３】
なお、上記具体例において、ステップ対応実行済コード検出手段２０３１が、実行済ソースコードを構成する各行について、図４に示すような第二命令パターン格納部１０５に格納されている各第二命令パターンとのパターンマッチングを行い、マッチングする第二命令パターンが検出された場合に、この行のソースコードをステップ対応実行済コードとして検出するようにしても良い。
【０１６４】
また、同様に、ステップ対応実行済コード検出手段２０３２が、ソースプログラムの各行について、図４に示すような第二命令パターン格納部１０５に格納されている各第二命令パターンとのパターンマッチングを行い、マッチングする第二命令パターンが検出された場合に、この行のステップ対応変換コードとして検出するようにしても良い。
【０１６５】
以上、本実施の形態によれば、ソースプログラムから実行済ソースコードを検出し、ソースプログラムに基づくプログラムを実行させた場合に処理されるステップに対応したソースコードの中から、この検出された実行済ソースコードに含まれるソースコードを含むソースコードであって、第二命令パターンに対応するソースコードを含むソースコードであるステップ対応実行済コードを検出し、このステップ対応実行済コードに関する情報を出力するようにしたので、命令パターンを用いて行われた変換の検証が十分にできたか否かを示すことができる。例えば、ソースプログラムに対応したプログラムを実行させた場合に実行されうるステップのうちの、第二命令パターンに対応するよう変更されたソースコードに対応したステップが、テスト等のためにソースプログラムに対応したプログラムを実行させた時にどの程度使用されたかを知ることができる。これにより、例えば、ソースプログラムに対して行われたテストによって、第二命令パターンで変換されたソースコードに対応するステップがどの程度検証されたかを知ることができ、テストの妥当性を検証したり、テストを終了させるか否か等の判断を行うことができる。
【０１６６】
なお、上記各実施の形態において、各処理（各機能）は、単一の装置（システム）によって集中処理されることによって実現されてもよく、あるいは、複数の装置によって分散処理されることによって実現されてもよい。
【０１６７】
また、上記各実施の形態において、一の装置に存在する２以上の通信手段（情報送信部など）は、物理的に一の媒体で実現されても良いことは言うまでもない。
【０１６８】
また、上記実施の形態において、各構成要素が実行する処理に関係する情報、例えば、各構成要素が受け付けたり、取得したり、選択したり、生成したり、送信したり、受信したりする情報や、各構成要素が処理で用いるしきい値や数式、アドレス等の情報等は、上記説明で明記していない場合であっても、図示しない記録媒体において、一時的に、あるいは長期にわたって保持されていてもよい。また、その図示しない記録媒体への情報の蓄積を、各構成要素、あるいは、図示しない蓄積部が行ってもよい。また、その図示しない記録媒体からの情報の読み出しを、各構成要素、あるいは、図示しない読み出し部が行ってもよい。
【０１６９】
また、上記各実施の形態では、プログラム検証装置がスタンドアロンである場合について説明したが、プログラム検証装置は、スタンドアロンの装置であってもよく、サーバ・クライアントシステムにおけるサーバ装置であってもよい。後者の場合には、出力部や受付部は、通信回線を介して入力を受け付けたり、画面を出力したりすることになる。
【０１７０】
また、上記各実施の形態において、各構成要素は専用のハードウェアにより構成されてもよく、あるいは、ソフトウェアにより実現可能な構成要素については、プログラムを実行することによって実現されてもよい。例えば、ハードディスクや半導体メモリ等の記録媒体に記録されたソフトウェア・プログラムをＣＰＵ等のプログラム実行部が読み出して実行することによって、各構成要素が実現され得る。
【０１７１】
なお、上記各実施の形態におけるプログラム検証装置を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、コンピュータを、第一命令パターンに対応するソースコードを、第一命令パターンに対応する１以上の第二命令パターンに対応するソースコードに変換して得られたソースプログラムが格納され得るソースプログラム格納部に格納されているソースプログラムに基づくプログラムを実行させた場合に使用されるソースコードである実行済ソースコードをソースプログラムから検出する実行済ソースコード検出部と、検出された実行済ソースコードのうちの、第二命令パターンに対応するソースコードに変換された部分に関する情報である変換関連情報を取得する変換関連情報取得部と、変換関連情報取得部が取得した変換関連情報を出力する出力部として機能させるためのプログラムである。
【０１７２】
なお、上記プログラムにおいて、情報を送信する送信ステップや、情報を受信する受信ステップなどでは、ハードウェアによって行われる処理、例えば、送信ステップにおけるモデムやインターフェースカードなどで行われる処理（ハードウェアでしか行われない処理）は含まれない。
【０１７３】
なお、上記プログラムにおいて、上記プログラムが実現する機能には、ハードウェアでしか実現できない機能は含まれない。例えば、情報を取得する取得部や、情報を出力する出力部などにおけるモデムやインターフェースカードなどのハードウェアでしか実現できない機能は、上記プログラムが実現する機能には含まれない。
【０１７４】
また、このプログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、あるいは分散処理を行ってもよい。
【０１７５】
図１６は、上記プログラムを実行して、上記実施の形態によるプログラム検証装置を実現するコンピュータの外観の一例を示す模式図である。上記実施の形態は、コンピュータハードウェア及びその上で実行されるコンピュータプログラムによって実現されうる。
【０１７６】
図１６において、コンピュータシステム９００は、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）ドライブ９０５、ＦＤ（Ｆｌｏｐｐｙ（登録商標）  Ｄｉｓｋ）ドライブ９０６を含むコンピュータ９０１と、キーボード９０２と、マウス９０３と、モニタ９０４とを備える。
【０１７７】
図１７は、コンピュータシステム９００の内部構成を示す図である。図１７において、コンピュータ９０１は、ＣＤ−ＲＯＭドライブ９０５、ＦＤドライブ９０６に加えて、ＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）９１１と、ブートアッププログラム等のプログラムを記憶するためのＲＯＭ９１２と、ＭＰＵ９１１に接続され、アプリケーションプログラムの命令を一時的に記憶すると共に、一時記憶空間を提供するＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９１３と、アプリケーションプログラム、システムプログラム、及びデータを記憶するハードディスク９１４と、ＭＰＵ９１１、ＲＯＭ９１２等を相互に接続するバス９１５とを備える。なお、コンピュータ９０１は、ＬＡＮへの接続を提供する図示しないネットワークカードを含んでいてもよい。
【０１７８】
コンピュータシステム９００に、上記実施の形態によるプログラム検証装置等の機能を実行させるプログラムは、ＣＤ−ＲＯＭ９２１、またはＦＤ９２２に記憶されて、ＣＤ−ＲＯＭドライブ９０５、またはＦＤドライブ９０６に挿入され、ハードディスク９１４に転送されてもよい。これに代えて、そのプログラムは、図示しないネットワークを介してコンピュータ９０１に送信され、ハードディスク９１４に記憶されてもよい。プログラムは実行の際にＲＡＭ９１３にロードされる。なお、プログラムは、ＣＤ−ＲＯＭ９２１やＦＤ９２２、またはネットワークから直接、ロードされてもよい。
【０１７９】
プログラムは、コンピュータ９０１に、上記実施の形態によるプログラム検証装置の機能を実行させるオペレーティングシステム（ＯＳ）、またはサードパーティプログラム等を必ずしも含んでいなくてもよい。プログラムは、制御された態様で適切な機能（モジュール）を呼び出し、所望の結果が得られるようにする命令の部分のみを含んでいてもよい。コンピュータシステム９００がどのように動作するのかについては周知であり、詳細な説明は省略する。
本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
【産業上の利用可能性】
【０１８０】
以上のように、本発明にかかるプログラム検証装置等は、プログラムを検証する装置等として適しており、特に、命令パターンにより変換された部分が十分に検証されたか否か等を確認可能な検証装置等として有用である。
【符号の説明】
【０１８１】
１、２  プログラム検証装置
１０１  ソースプログラム格納部
１０２  実行済ソースコード検出部
１０３、２０３  変換関連情報取得部
１０４  出力部
１０５  第二命令パターン格納部
１０３１  実行済命令パターン検出手段
１０３２  変換命令パターン検出手段
１０３３  第一変換関連情報取得手段
２０３１  ステップ対応実行済コード検出手段
２０３２  ステップ対応変換コード検出手段
２０３３  第二変換関連情報取得手段
２０３４  指定情報格納部
【図１】
0005448907.tif 000002
【図２】
0005448907.tif 000003
【図３】
0005448907.tif 000004
【図４】
0005448907.tif 000005
【図５】
0005448907.tif 000006
【図６】
0005448907.tif 000007
【図７】
0005448907.tif 000008
【図８】
0005448907.tif 000009
【図９】
0005448907.tif 000010
【図１０】
0005448907.tif 000011
【図１１】
0005448907.tif 000012
【図１２】
0005448907.tif 000013
【図１３】
0005448907.tif 000014
【図１４】
0005448907.tif 000015
【図１５】
0005448907.tif 000016
【図１６】
0005448907.tif 000017
【図１７】
0005448907.tif 000018