(57)【要約】【課題】変更後のプログラムの評価を行うプログラム評価装置を得ること。【解決手段】変更前のプログラム集合体のプログラムを実行し、プログラム単位に実行結果を出力する変更前プログラム実行部２２と、変更後のプログラム集合体のプログラムを実行し、プログラム単位に実行結果を出力する変更後プログラム実行部３２と、各実行部によるプログラム単位の実行結果を順次取得して比較する比較判定部１３を備え、比較判定部１３は、比較の結果として差異を検出した場合、比較対象のプログラムのうちの、変更前のプログラム集合体のプログラムの実行結果を、変更後プログラム実行部３２へ出力し、変更後プログラム実行部３２は、差異が検出されたプログラムの後段のプログラムの入力として、比較判定部１３から受け取ったプログラムの実行結果を使用する。【選択図】図１
2010224683.tif 000002
【特許請求の範囲】
【請求項１】
１つのプログラムからの出力が次のプログラムへの入力となる複数のプログラムによって構成されたプログラム集合体において、１つ以上のプログラムを変更した場合に、変更後のプログラム集合体の動作を評価するプログラム評価装置であって、
変更前のプログラム集合体のプログラムを実行し、プログラム単位に実行結果を出力する変更前プログラム実行手段と、
変更後のプログラム集合体のプログラムを実行し、プログラム単位に実行結果を出力する変更後プログラム実行手段と、
各実行手段によるプログラム単位の実行結果を順次取得して比較する比較手段と、
を備え、
前記比較手段は、比較の結果として差異を検出した場合、比較対象のプログラムのうちの、変更前のプログラム集合体のプログラムの実行結果を、前記変更後プログラム実行手段へ出力し、
前記変更後プログラム実行手段は、差異が検出されたプログラムの後段のプログラムの入力として、前記比較手段から受け取ったプログラムの実行結果を使用する、
ことを特徴とするプログラム評価装置。
【請求項２】
さらに、
前記各実行手段によるプログラム単位の実行結果を蓄積するための蓄積手段、
を備えることを特徴とする請求項１に記載のプログラム評価装置。
【請求項３】
前記蓄積手段は、さらに、変更前のプログラム集合体を構成するプログラムに対する入力として、所定の値を蓄積しておくことを特徴とする請求項２に記載のプログラム評価装置。
【請求項４】
前記蓄積手段を、電子計算機のメモリ、ＣＰＵレジスタ、外部記憶メディアで構成することを特徴とする請求項２または３に記載のプログラム評価装置。
【請求項５】
プログラム集合体を構成する各プログラムが前段のプログラムの結果以外は使用しない関数である場合に、前記実行結果をリターン値とすることを特徴とする請求項１〜４のいずれか１つに記載のプログラム評価装置。
【請求項６】
プログラム評価装置と変更前のプログラムを実行するプログラム実行装置とを備え、１つのプログラムからの出力が次のプログラムへの入力となる複数のプログラムによって構成されたプログラム集合体で１つ以上のプログラムを変更した場合に、変更後のプログラム集合体の動作を評価するプログラム評価システムにおいて、当該プログラム評価システムを構成する前記プログラム評価装置であって、
変更後のプログラム集合体のプログラムを実行し、プログラム単位に実行結果を出力する変更後プログラム実行手段と、
前記プログラム実行装置から送られてくる変更前のプログラム集合体のプログラム単位の実行結果と、前記変更後プログラム実行手段によるプログラム単位の実行結果とを順次取得して比較する比較手段と、
前記プログラム実行装置から送られてくる実行結果と前記変更後プログラム実行手段による実行結果とを蓄積するための蓄積手段と、
を備え、
前記比較手段は、比較の結果として差異を検出した場合、比較対象のプログラムのうちの、変更前のプログラム集合体のプログラムの実行結果を、前記変更後プログラム実行手段へ出力し、
前記変更後プログラム実行手段は、差異が検出されたプログラムの後段のプログラムの入力として、前記比較手段から受け取ったプログラムの実行結果を使用する、
ことを特徴とするプログラム評価装置。
【請求項７】
プログラム評価装置と変更後のプログラムを実行するプログラム実行装置とを備え、１つのプログラムからの出力が次のプログラムへの入力となる複数のプログラムによって構成されたプログラム集合体で１つ以上のプログラムを変更した場合に、変更後のプログラム集合体の動作を評価するプログラム評価システムにおいて、当該プログラム評価システムを構成する前記プログラム評価装置であって、
変更前のプログラム集合体のプログラムを実行し、プログラム単位に実行結果を出力する変更前プログラム実行手段と、
前記プログラム実行装置から送られてくる変更後のプログラム集合体のプログラム単位の実行結果と、前記変更前プログラム実行手段によるプログラム単位の実行結果とを順次取得して比較する比較手段と、
前記プログラム実行装置から送られてくる実行結果と前記変更前プログラム実行手段による実行結果とを蓄積するための蓄積手段と、
を備え、
前記比較手段は、比較の結果として差異を検出した場合、比較対象のプログラムのうちの、変更前のプログラム集合体のプログラムの実行結果を、前記プログラム実行装置へ送信する、
ことを特徴とするプログラム評価装置。
【請求項８】
プログラム評価装置と変更後のプログラムを実行する第１のプログラム実行装置と変更前のプログラムを実行する第２のプログラム実行装置とを備え、１つのプログラムからの出力が次のプログラムへの入力となる複数のプログラムによって構成されたプログラム集合体で１つ以上のプログラムを変更した場合に、変更後のプログラム集合体の動作を評価するプログラム評価システムにおいて、当該プログラム評価システムを構成する前記プログラム評価装置であって、
各プログラム実行装置から送られてくるプログラム単位の実行結果を順次取得して比較する比較手段と、
各プログラム実行装置から送られてくる実行結果を蓄積するための蓄積手段と、
を備え、
前記比較手段は、比較の結果として差異を検出した場合、比較対象のプログラムのうちの、変更前のプログラム集合体のプログラムの実行結果を、前記第１のプログラム実行装置へ送信する、
ことを特徴とするプログラム評価装置。
【請求項９】
請求項６に記載のプログラム評価装置とともにプログラム評価システムを構成するプログラム実行装置であって、
変更前のプログラム集合体のプログラムを実行し、プログラム単位の実行結果を順次前記プログラム評価装置に対して送信する、
ことを特徴とするプログラム実行装置。
【請求項１０】
請求項７に記載のプログラム評価装置とともにプログラム評価システムを構成するプログラム実行装置であって、
変更後のプログラム集合体のプログラムを実行し、プログラム単位の実行結果を前記プログラム評価装置に対して順次送信し、また、差異が検出されたプログラムの後段のプログラムの入力として、前記プログラム評価装置から受信したプログラムの実行結果を使用する、
ことを特徴とするプログラム実行装置。
【請求項１１】
請求項８に記載のプログラム評価装置とともにプログラム評価システムを構成し、前記第１のプログラム実行装置として動作するプログラム実行装置であって、
変更後のプログラム集合体のプログラムを実行し、プログラム単位の実行結果を前記プログラム評価装置に対して順次送信し、また、差異が検出されたプログラムの後段のプログラムの入力として、前記プログラム評価装置から受信したプログラムの実行結果を使用する、
ことを特徴とするプログラム実行装置。
【請求項１２】
請求項８に記載のプログラム評価装置とともにプログラム評価システムを構成し、前記第２のプログラム実行装置として動作するプログラム実行装置であって、
変更前のプログラム集合体のプログラムを実行し、プログラム単位の実行結果を前記プログラム評価装置に対して順次送信する、
ことを特徴とするプログラム実行装置。
【請求項１３】
１つのプログラムからの出力が次のプログラムへの入力となる複数のプログラムによって構成されたプログラム集合体において、１つ以上のプログラムを変更した場合に、変更後のプログラム集合体の動作を評価するプログラム評価方法であって、
変更前のプログラム集合体のプログラムを実行し、プログラム単位に実行結果を出力する変更前プログラム実行ステップと、
変更後のプログラム集合体のプログラムを実行し、プログラム単位に実行結果を出力する変更後プログラム実行ステップと、
各実行ステップによるプログラム単位の実行結果を順次取得して比較する比較ステップと、
前記比較ステップによる比較の結果として差異を検出した場合に、比較対象のプログラムのうちの、変更前のプログラム集合体のプログラムの実行結果を出力する実行結果出力ステップと、
差異が検出された変更後のプログラムの後段のプログラムの入力として、前記実行結果出力ステップにて出力されたプログラムの実行結果を使用する変更後プログラム継続評価ステップと、
を含むことを特徴とするプログラム評価方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、変更したプログラムの評価を行うプログラム評価装置に関する。
【背景技術】
【０００２】
プログラムに対する入力とそれに対応する出力を変更することなくプログラムの実装を変更した場合、変更後のプログラムの実行結果が変更前と一致することを評価する必要がある。変更後のプログラムを評価する方法として、変更後のプログラムを長時間にわたって連続して実行させる方法（エージング）がある。エージング中に不具合が発生した場合は、その時点でプログラムの不具合を検出することができる。プログラムを修正後、エージングを開始することで、評価を行うことができる。
【０００３】
エージングによってプログラム変更後の不具合を検出する方法として、変更前モデルのシミュレーション結果と、変更後モデルのシミュレーション結果を一定時間間隔で比較して評価する技術が、下記特許文献１において開示されている。また、評価対象が変更後のプログラムではないが、変更後のプログラムの仕様を満足するテストデータを入力し、変更前のプログラムと変更後のプログラムの処理結果を比較して評価する技術が、下記特許文献２において開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１−２９００３８号公報
【特許文献２】特開平１１−２８２７２２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記従来の技術によれば、変更前のプログラムと変更後のプログラムの処理結果が異なることを検知すると、その度にエージングを中断し、プログラムを修正後に最初からエージングを行う。そのため、複数の変更箇所があるプログラムを評価する場合、エージングの実施期間が長くなり、また、後段のプログラムの評価の実施頻度が少なくなる、という問題があった。
【０００６】
また、上記特許文献２における技術によれば、テストデータを入力して処理結果を比較評価するため、評価対象について個別のテストデータを事前に用意する必要がある。そのため、評価に工数がかかる、という問題があった。
【０００７】
本発明は、上記に鑑みてなされたものであって、変更前プログラムと変更後プログラムとの比較結果に差異が生じた場合でもエージングを継続することができ、かつ、テストデータを用意すること無く評価を行うことが可能なプログラム評価装置を得ることを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するために、本発明は、１つのプログラムからの出力が次のプログラムへの入力となる複数のプログラムによって構成されたプログラム集合体において、１つ以上のプログラムを変更した場合に、変更後のプログラム集合体の動作を評価するプログラム評価装置であって、変更前のプログラム集合体のプログラムを実行し、プログラム単位に実行結果を出力する変更前プログラム実行手段と、変更後のプログラム集合体のプログラムを実行し、プログラム単位に実行結果を出力する変更後プログラム実行手段と、各実行手段によるプログラム単位の実行結果を順次取得して比較する比較手段と、を備え、前記比較手段は、比較の結果として差異を検出した場合、比較対象のプログラムのうちの、変更前のプログラム集合体のプログラムの実行結果を、前記変更後プログラム実行手段へ出力し、前記変更後プログラム実行手段は、差異が検出されたプログラムの後段のプログラムの入力として、前記比較手段から受け取ったプログラムの実行結果を使用する、ことを特徴とする。
【発明の効果】
【０００９】
本発明によれば、変更後のプログラムに不具合を検出した場合でもエージングによる評価を継続でき、かつ、工数をかけずに評価を行うことができる、という効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】図１は、プログラム評価装置の構成例を示す図である。
【図２】図２は、内部データの流れを示す図である。
【図３】図３は、変更後のプログラムの評価処理を示すフローチャートである。
【図４】図４は、内部データの流れを示す図である。
【発明を実施するための形態】
【００１１】
以下に、本発明にかかるプログラム評価装置の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１２】
実施の形態１．
図１は、本発明にかかるプログラム評価装置の構成例を示す図である。プログラム評価装置は、監視部１と、基準部２と、検証部３と、を備える。監視部１は、変更前プログラムと変更後プログラムの実行結果を比較し、また、装置全体の処理を制御する。基準部２は、変更前プログラムを実行する。検証部３は、変更後プログラムを実行する。
【００１３】
監視部１は、実行制御部１１と、データ蓄積部１２と、比較判定部１３と、を備える。実行制御部１１は、監視部１と基準部２との間のデータの送受信、および監視部１と検証部３との間のデータの送受信を制御する。また、装置全体の処理を制御する。データ蓄積部１２は、変更前プログラムおよび変更後プログラムの実行環境および実行結果を蓄積する。具体的には、電子計算機におけるメモリ、ＣＰＵ（Central  Processing  Unit）レジスタ、または外部記憶メディア等である。比較判定部１３は、変更前プログラムの実行結果と変更後プログラムの実行結果とを比較する。
【００１４】
基準部２は、実行環境収集部２１と、変更前プログラム実行部２２と、を備える。実行環境収集部２１は、変更前プログラム実行部２２に対して実行環境を取得し、また、実行結果を監視部１へ送信する。変更前プログラム実行部２２は、評価対象となる変更後プログラムにおける変更前のプログラムを実行（エージング）する。
【００１５】
検証部３は、実行環境設定部３１と、変更後プログラム実行部３２と、を備える。実行環境設定部３１は、変更後プログラム実行部３２に対して実行環境を設定し、また、実行結果を監視部１へ送信する。変更後プログラム実行部３２は、評価対象である変更後のプログラムを実行（エージング）する。
【００１６】
プログラム評価装置は、たとえば、ある１つの製品全体のプログラムについて、変更前のプログラムおよび変更後のプログラムを入力し、製品全体のプログラムの中で、変更した部分のプログラムについての評価を行うものである。
【００１７】
つづいて、プログラム評価装置の評価動作について説明する。なお、本実施の形態では、プログラムの入力である実行環境を関数の入力パラメータ、プログラムの出力である実行結果を関数のリターン値とし、変更前プログラムおよび変更後プログラムは外部変数を使用しない関数である場合を想定する。
【００１８】
図２は、プログラム評価装置において、内部データの流れを示す図である。（１）関数のリターン値が後段の関数の入力になっている処理において、基準部２は、変更前プログラム（ｆｎ）に関連付けて変更前プログラムの入力パラメータ（ｂ）を監視部１へ送信する。（２）基準部２は、変更前プログラムを実行し、実行結果（ｃ）を監視部１へ送信する。（３）検証部３は、変更後プログラム（ｆ’ｎ）を実行し、変更後プログラムの実行結果（ｃ’）を監視部１へ送信する。監視部１では、比較判定部１３が、受信した変更前プログラムの実行結果（ｃ）と変更後プログラムの実行結果（ｃ’）を比較する。
【００１９】
（４）実行結果に差異があった場合、監視部１は、変更前プログラムの後段のプログラム（ｆｎ＋１）の入力パラメータ（ｃ）を検証部３へ送信する。検証部３は、受信した入力パラメータ（ｃ）を使用して変更後プログラムの後段のプログラム（ｆ’ｎ＋１）を実行する。（５）実行結果に差異がなかった場合、検証部３は、変更後プログラムの実行結果（ｃ’）を使用して変更後プログラムの後段のプログラムを実行する。
【００２０】
上記処理を、フローチャートに基づいて詳細に説明する。図３は、評価処理を示すフローチャートである。基準部２では、実行環境収集部２１が、変更前プログラムの実行前に、変更前プログラムの入力パラメータ（ｂ）を監視部１へ送信する。監視部１が、入力パラメータ（ｂ）を収集する（ステップＳ１）。つぎに、基準部２では、変更前プログラム実行部２２が、変更前プログラムを実行する。また、検証部３では、変更後プログラム実行部３２が、変更後プログラムを実行する（ステップＳ２）。実行後、基準部２の実行環境収集部２１は、変更前プログラムの実行結果（ｃ）を監視部１へ送信する。また、検証部３の実行環境設定部３１は、変更後プログラムの実行結果（ｃ’）を監視部１へ送信する。監視部１が、実行結果（ｃ、ｃ’）を収集する（ステップＳ３）。つぎに、監視部１では、比較判定部１３が実行結果（ｃ、ｃ’）を比較する（ステップＳ４）。
【００２１】
比較の結果、実行結果に差異があった場合（ステップＳ４：Ｎｏ）、監視部１では、入力パラメータ（ｂ）と実行結果（ｃ、ｃ’）を変更前プログラムに関連付けて、データ蓄積部１２に蓄積する（ステップＳ５）。また、監視部１の実行制御部１１は、検証部３で変更後プログラムの後段のプログラムを実行する前に、変更後プログラムの実行結果（ｃ’）の代わりとして、変更前プログラムの後段のプログラムの入力パラメータ（ｃ）を検証部３へ送信する制御を行う（ステップＳ６）。検証部３では、実行環境設定部３１が、受信した入力パラメータ（ｃ）に基づいて変更後プログラム実行部３２の実行環境を設定する。そして、変更後プログラム実行部３２が、入力パラメータ（ｃ）を使用して変更後プログラムの後段のプログラムを実行する。
【００２２】
実行結果に差異がなかった場合（ステップＳ４：Ｙｅｓ）、監視部１の実行制御部１１は、検証部３に対して、変更後プログラムの実行結果（ｃ’）をそのまま使用して変更後プログラムの後段のプログラムを実行させるように制御を行う。検証部３では、実行環境設定部３１が、変更後プログラムの後段のプログラムの入力として、変更後プログラムの実行結果（ｃ’）に基づいて変更後プログラム実行部３２の実行環境を設定する。そして、変更後プログラム実行部３２が、入力パラメータ（ｃ’）を使用して変更後プログラムの後段のプログラムを実行する（ステップＳ７）。以降、変更前プログラムの実行と変更後プログラムの実行、およびその比較処理を繰り返す。
【００２３】
以上説明したように、本実施の形態では、変更前プログラムと変更後プログラムの実行結果を比較し、差異を検出した場合には、変更後プログラムの後段プログラムに対して、変更前プログラムの出力を使用することとした。これにより、変更前プログラムと変更後プログラムとの差異を検出した場合でも、変更後プログラムでは後続のプログラムの実行前には常に変更前プログラムの実行結果が使用されるため、エージングによる評価を継続することができる。また、変更前プログラムの実行結果を使用でき、テストデータを用意することもないことから、工数をかけずに評価を行うことができる。
【００２４】
なお、プログラム評価装置を、監視部１、基準部２および検証部３の３つの構成にする場合について説明したが、これに限定するものではない。例えば、監視部１の構成を、基準部２または検証部３のいずれかに備えることとしてもよい。具体的には、プログラム評価装置を、パーソナルコンピュータ等の電子計算機によって構成する場合、監視部１、基準部２および検証部３を、それぞれ異なる３台の電子計算機によって構成してもよいし、監視部１と基準部２、または監視部１と検証部３を、１台の電子計算機で構成してもよい。複数の電子計算機を使用する場合、処理負荷を分散することができる。
【００２５】
また、データ蓄積部１２は、所定のプログラムに対する実行環境をあらかじめ蓄積しておくことも可能である。これにより、基準部２が存在しない場合であっても、検証部３における所定のプログラムについて、所望の状態から動作を評価することができる。
【００２６】
実施の形態２．
本実施形態では、実行環境を、関数を実行する直前の基準部２および検証部３の内部状態（ＣＰＵのレジスタ内容、主記憶メモリ、または外部記憶媒体の内容）とし、実行結果を、関数を実行した直後の基準部２および検証部３の内部状態（ＣＰＵのレジスタ内容、主記憶メモリ、または外部記憶媒体の内容）とする場合を想定する。実施の形態１と異なる部分について説明する。
【００２７】
本実施の形態におけるプログラム評価装置の評価動作について説明する。図４は、プログラム評価装置において、内部データの流れを示す図である。（１）基準部２は、変更前プログラムの実行前に、変更前プログラムに関連付けした状態で、実行環境を監視部１へ送信する。（２）つぎに、基準部２は、変更前プログラムを実行し、実行結果を監視部１へ送信する。（３）また、検証部３は、変更後プログラムを実行し、実行結果を監視部１へ送信する。
【００２８】
監視部１では、受信した変更前プログラムの実行結果と変更後プログラムの実行結果を、比較判定部１３で比較する。比較の結果、差異が見られた場合、実行結果および実行環境を、変更前プログラムに関連付けてデータ蓄積部１２に蓄積する。
【００２９】
（４）実行結果に差異があった場合、監視部１は、変更後プログラムの後段のプログラムを実行させる前に、変更前プログラムの実行結果を検証部３へ送信する。検証部３は、受信した変更前プログラムの実行結果を使用して、変更後プログラムの後段のプログラムを実行する。（５）実行結果に差異がなかった場合、検証部３は、変更後プログラムの実行結果を使用して変更後プログラムの後段のプログラムを実行する。
【００３０】
以上説明したように本実施の形態では、実行環境として、プログラムが実行される装置の内部状態を用いることとした。この場合においても、実施の形態１と同様の効果を得ることができる。
【産業上の利用可能性】
【００３１】
以上のように、本発明にかかるプログラム評価装置は、変更したプログラムの評価を行う装置として有用であり、特に、エージング等の長時間の評価を行う場合に適している。
【符号の説明】
【００３２】
１  監視部
２  基準部
３  検証部
１１  実行制御部
１２  データ蓄積部
１３  比較判定部
２１  実行環境収集部
２２  変更前プログラム実行部
３１  実行環境設定部
３２  変更後プログラム実行部
【図１】
2010224683.tif 000003
【図２】
2010224683.tif 000004
【図３】
2010224683.tif 000005
【図４】
2010224683.tif 000006