(57)【特許請求の範囲】
【請求項１】
変数入力端子要素、変数出力端子要素及び演算要素間を接続することで一の制御プログラムによる制御処理の流れを表現する制御ブロック図からコンパイル可能なソースコードを生成するプログラム自動生成装置において、
前記制御ブロック図の変数入力端子要素と当該変数入力端子要素に入力するテストパターンとの対応付けを行うテストパターン入力対応付け手段と、
前記制御ブロック図の変数出力端子要素と当該変数出力端子要素から出力される出力パターンの保存先との対応付けを行う出力パターン対応付け手段と、
対応付けられた前記変数入力端子要素及び前記テストパターンに基づき、前記制御ブロック図の前記変数入力端子要素に前記対応付けられた前記テストパターンを入力するソースコードをテストパターン入力コードとして生成するテストパターン入力コード自動生成手段と、
対応付けられた前記変数出力端子要素及び前記出力パターンの保存先に基づき、前記制御ブロック図の前記変数出力端子要素の出力を読み出して当該出力を前記対応付けられた前記出力パターンの保存先に保存するソースコードを出力パターン保存コードとして生成する出力パターン保存コード自動生成手段と、
予め記憶領域に格納された、前記一の制御プログラムを組み込む演算装置による当該制御プログラムの単体テストに用いるテストドライバの雛形と、
前記一の制御プログラムの動作環境を特定する動作環境諸元を入力する動作環境諸元入力手段と、
前記テストドライバの雛形と、前記動作環境諸元入力手段で入力された動作環境諸元と、前記テストパターン入力コード及び前記出力パターン保存コードと、前記一の制御プログラムのソースコードとから、前記単体テストのテストドライバのソースコードを生成するテストドライバコード自動生成手段と、
を備えることを特徴とするプログラム自動生成装置。
【請求項２】
前記テストドライバの雛形は、複数の種類の異なる前記演算装置それぞれに対応して生成され、
前記テストドライバコード自動生成手段は、前記複数のテストドライバの雛形のうち、指定されたテストドライバの雛形を用いて前記テストドライバのソースコードを生成することを特徴とする請求項１記載のプログラム自動生成装置。
【請求項３】
前記テストパターン入力対応付け手段は、前記制御ブロック図の変数入力端子要素に前記テストパターンを与える機能を表現するテストパターン入力要素を記述する手段を有し、当該テストパターン入力要素が有する接続端子と前記変数入力端子要素とを表示することにより前記対応付けを利用者に促し、
前記出力パターン対応付け手段は、前記制御ブロック図の前記変数出力端子要素の数値を保存する機能を表現する出力パターン保存要素を記述する手段を有し、当該出力パターン保存要素が有する接続端子と前記変数出力端子要素とを表示することにより前記対応付けを利用者に促すことを特徴とする請求項１又は請求項２記載のプログラム自動生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、開発者や利用者などが作成した図形式のプログラム仕様にしたがったプログラムソースコードを自動生成するプログラム自動生成装置に関する。
【背景技術】
【０００２】
制御ブロック図の形式で記述されたプログラム仕様をもとに、プログラムソースコード（以下、ソースコードともいう。）を自動生成する技術は、従来から一般的に、ビジュアルプログラミング技術として制御分野などのプログラム開発に利用されている。
また、このようなビジュアルプログラミング技術を利用することによって、制御ブロック図で表現された仕様からソースコードを自動的に得ることができるため、実装工程の短縮や、実装レベルでのバグ発生の抑制などの効果を期待することができる。
【０００３】
しかしながら、制御ブロック図の記述レベルで誤りが発生する可能性もあるため、自動生成されたソースコードが開発者の要求通りに正しく動作するかどうかについては、ビジュアルプログラミング技術で保証することはできない。
一方、開発者が、ブロックどうしがリンクされてなる「モデル」を作成し、コード生成ツールを用いてこのモデルからソースコードを自動生成し、テスト入力パターンを用いて、モデルやソースコードによって表現された機能をパーソナルコンピュータ上で仮想的に実行し、その品質評価を行うものも提案されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−３０１５６８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述のように、テスト入力パターンを用いてモデルやソースコードの実行シミュレーションを行うことにより、モデルやソースコードに対する動作検証を行うことができる。
しかしながら、モデルやソースコードに対してテスト入力パターンを利用してシミュレーションを行う際には、モデルやソースコードによって表現された機能を、パーソナルコンピュータ上で仮想的に実行している。そのため、モデルやソースコード自体の動作は保証することはできるものの、シミュレーションを行う動作環境は任意に設定されているため、このソースコードが実際に組み込まれる、組み込み対象の演算装置の動作環境と一致していない場合には、組み込み対象の演算装置の動作環境下での動作検証を行うことができないことになる。
そのため、モデルやソースコード自体の動作は保証することはできるものの、ソースコードを演算装置に組み込んで動作させた場合の動作保証を行うことはできず、実際に、組み込み対象の演算装置に組み込んで動作させた時点で、開発者の要求する仕様通りの動作を行うことができないということが判明する可能性がある。
【０００６】
このため、このソースコードが搭載される装置全体を稼働させる前に、生成されたソースコードを組み込み対象の演算装置に組み込み、演算装置単体で動作させて動作検証を行う（以後、単体テストともいう。）必要があるが、この動作検証を行うためには、組み込み対象の演算装置の実際の動作環境に則して動作するテストドライバを改めて作成する等、単体テストを行うための動作環境を別途整える必要があり、その分、単体テストの所要時間が長くなるため、単体テストの工程をより短縮することの可能な方法が望まれていた。
そこで、この発明は、上記従来の未解決の問題点に着目してなされたものであり、作成された制御プログラムの組み込み対象の演算装置での、前記制御プログラムを用いた単体テストをより短時間で行うことの可能な、前記制御プログラムのソースコードを生成するプログラム自動生成装置を提供することを目的としている。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、本発明の請求項１にかかるプログラム自動生成装置は、変数入力端子要素、変数出力端子要素及び演算要素間を接続することで一の制御プログラムによる制御処理の流れを表現する制御ブロック図からコンパイル可能なソースコードを生成するプログラム自動生成装置において、前記制御ブロック図の変数入力端子要素と当該変数入力端子要素に入力するテストパターンとの対応付けを行うテストパターン入力対応付け手段と、前記制御ブロック図の変数出力端子要素と当該変数出力端子要素から出力される出力パターンの保存先との対応付けを行う出力パターン対応付け手段と、対応付けられた前記変数入力端子要素及び前記テストパターンに基づき、前記制御ブロック図の前記変数入力端子要素に前記対応付けられた前記テストパターンを入力するソースコードをテストパターン入力コードとして生成するテストパターン入力コード自動生成手段と、対応付けられた前記変数出力端子要素及び前記出力パターンの保存先に基づき、前記制御ブロック図の前記変数出力端子要素の出力を読み出して当該出力を前記対応付けられた前記出力パターンの保存先に保存するソースコードを出力パターン保存コードとして生成する出力パターン保存コード自動生成手段と、予め記憶領域に格納された、前記一の制御プログラムを組み込む演算装置による当該制御プログラムの単体テストに用いるテストドライバの雛形と、前記一の制御プログラムの動作環境を特定する動作環境諸元を入力する動作環境諸元入力手段と、前記テストドライバの雛形と、前記動作環境諸元入力手段で入力された動作環境諸元と、前記テストパターン入力コード及び前記出力パターン保存コードと、前記一の制御プログラムのソースコードとから、前記単体テストのテストドライバのソースコードを生成するテストドライバコード自動生成手段と、を備えることを特徴としている。
【０００８】
また、請求項２に係るプログラム自動生成装置は、前記テストドライバの雛形は、複数の種類の異なる前記演算装置それぞれに対応して生成され、前記テストドライバコード自動生成手段は、前記複数のテストドライバの雛形のうち、指定されたテストドライバの雛形を用いて前記テストドライバのソースコードを生成することを特徴としている。
さらに、請求項３に係るプログラム自動生成装置は、前記テストパターン入力対応付け手段は、前記制御ブロック図の変数入力端子要素に前記テストパターンを与える機能を表現するテストパターン入力要素を記述する手段を有し、当該テストパターン入力要素が有する接続端子と前記変数入力端子要素とを表示することにより前記対応付けを利用者に促し、前記出力パターン対応付け手段は、前記制御ブロック図の前記変数出力端子要素の数値を保存する機能を表現する出力パターン保存要素を記述する手段を有し、当該出力パターン保存要素が有する接続端子と前記変数出力端子要素とを表示することにより前記対応付けを利用者に促すことを特徴としている。
【発明の効果】
【０００９】
本発明によれば、一の制御プログラムを作成する際に、当該制御プログラムの組み込み対象の演算装置の動作環境に依存する予め生成しておいたテストドライバの雛形と、入力した動作環境諸元とに応じた動作環境を実現するテストドライバが、一の制御プログラムの組み込み対象の演算装置の単体テスト用のテストドライバとして生成され、このテストドライバを含んで一の制御プログラムのソースコードが生成されるため、利用者は、一の制御プログラムを生成する際に動作環境諸元を入力することにより一の制御プログラムの単体テスト用のテストドライバを容易に作成することができる。そのため、一の制御プログラムを用いた単体テストを行う段階で、単体テスト用のテストドライバを新たに作成する必要はなく、その分、単体テストに要する所要時間の短縮を図ることができる。
また、テストドライバを作成する際には、利用者はテストドライバ自体を作成する必要はなく動作環境諸元の入力を行うだけでよいため、容易に作成することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明を適用したプログラム自動生成装置の一例を示すブロック図である。
【図２】制御ブロック図で記述された制御処理の一例である。
【図３】制御ブロック図で記述された制御処理から自動生成されたソースコードの一例である。
【図４】テストパターン入力要素の記述例である。
【図５】図４のテストパターン入力要素の記述例から自動生成されたテストパターン入力処理のソースコード例である。
【図６】出力パターン保存要素の記述例である。
【図７】図６の出力パターン保存要素の記述例から自動生成された出力パターン保存処理のソースコード例である。
【図８】テストパターン入力対応付け手段、出力パターン対応付け手段のその他の例である。
【図９】本発明の動作説明に供する説明図である。
【図１０】動作環境諸元の一例である。
【図１１】自動生成されたテストドライバのソースコード例を示すフローチャートである。
【図１２】プログラム自動生成装置の処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、本発明の実施の形態を説明する。
図１は、本発明におけるプログラム自動生成装置の一例を示す機能ブロック図である。
図１において、１は利用者が操作するための入力装置、２はプログラム自動生成装置本体である。入力装置１は、表示装置とキーボードやマウス等の入力手段とを備えて構成される。
プログラム自動生成装置２は、制御ブロック図仕様記述手段２１と、制御処理コード自動生成手段２２とを備える。さらに制御ブロック図仕様記述手段２１は、テストパターン入力要素記述手段２１ａ及び出力パターン保存要素記述手段２１ｂを有し、制御処理コード自動生成手段２２は、テストパターン入力コード自動生成手段２２ａ、出力パターン保存コード自動生成手段２２ｂ、テストドライバコード自動生成手段２２ｃ及び雛形テストドライバ２３を備えている。
【００１２】
制御ブロック図仕様記述手段２１は、入力装置１から入力される指示に応じて、作成したい制御プログラムの仕様を制御ブロック図で記述する。ここでいうブロック図とは、例えば、図２に示すように、変数入力端子要素から出発して、いくつかの演算要素を経て変数出力端子要素に至るまでの処理の流れを、各要素を表すシンボルどうしを線で接続することで表現するものである。図２中、１０１〜１０４は変数入力端子要素、１０５は加算要素、１０６は乗算要素、１０７は比較要素、１０８、１０９は変数出力端子要素を表す。図２では、変数入力端子要素１０１及び１０２への入力値が加算要素１０５で加算され、その加算結果と変数入力端子要素１０３への入力値とが乗算要素１０６で乗算され、その乗算結果が変数出力端子要素１０８に出力されると共に、比較要素１０７の反転入力端子に入力されることを表す。さらに、比較要素１０７は、非反転入力端子に入力される変数入力端子要素１０４への入力値と反転入力端子への入力値との差分値が正値であるとき“ＴＲＵＥ”を表す例えばＨＩＧＨレベルの信号、差分値が零又は負値であるとき“ＦＡＬＳＥ”を表すＬＯＷレベルの信号を変数出力端子要素１０９に出力することを表す。
【００１３】
制御ブロック図仕様記述手段２１は、図２の構成要素である端子要素や演算要素などのシンボルを入力装置１の表示装置の画面上に表示する記述手段を備えており、入力装置１の表示装置の画面上に表示される各端子要素や演算要素のシンボルに対し、入力装置１の利用者がその入力手段を操作して画面上でシンボルの配置位置の調整や、シンボル間を線で接続することによって、作成したい制御プログラムの仕様を制御ブロック図で記述するようになっている。
【００１４】
制御ブロック図仕様記述手段２１により生成された図２に示す制御ブロック図は、制御処理コード自動生成手段２２により処理され、変数入力端子要素で表現される変数の参照を出発点として、シンボルどうしの接続関係にしたがって演算要素の演算を順次実行していった結果を、変数出力端子要素で表現される変数に代入するまでの一連の処理を、一般的な高級プログラミング言語でいうところの関数またはサブルーチンとしてまとめた形のソースコードとして出力される。
【００１５】
出力されるソースコードは、例えば高級プログラミング言語としてＣ言語を用いた場合、図２の制御ブロック図は、図３に示すソースコードとして表される。
これらの、制御ブロック図をソースコードに変換する手順は、従来のビジュアルプログラミング技術で一般的に用いられており、本実施形態においてもこの方法を適用することができる。
【００１６】
図１に戻って、制御ブロック図仕様記述手段２１のテストパターン入力要素記述手段２１ａは、制御ブロック図仕様記述手段２１により生成された制御ブロック図における変数入力端子要素に対応する出力端子要素とテストパターン入力要素とを入力装置１の表示画面に表示し、入力装置１から入力される指示に応じて、出力端子要素とテストパターン入力要素とを接続することによって、制御処理コード自動生成手段２２で生成された制御プログラムを表す制御ブロック図のソースコードに対する、単体テスト用データ入力処理の仕様を記述する。図４は、図２の制御ブロック図から生成されるソースコードに対する、単体テスト用データ入力処理の仕様を記述した例である。
【００１７】
図４中の２０１はテストパターン入力要素を表現したものである。また、出力端子要素１０１から１０４は、図２の制御ブロック図における変数入力端子要素１０１から１０４に対応する出力端子要素を表現したものである。図４のテストパターン入力要素２０１の場合、４つの出力端子を備えている。なお、この出力端子の数は、テストパターン入力要素２０１の属性として設定できるようになっている。
【００１８】
そして、利用者が入力装置１を操作することにより、テストパターン入力要素２０１の各出力端子ｏｕｔ１〜ｏｕｔ４のそれぞれと、図２の制御ブロック図における各変数入力端子要素１０１〜１０４に対応するこれらと同名の出力端子要素１０１〜１０４との接続操作を行うことにより、テストパターン入力要素２０１の各出力端子ｏｕｔ１〜ｏｕｔ４と図２の制御ブロック図における各変数入力端子要素１０１〜１０４とを、出力端子要素１０１〜１０４を介して対応付けている。
【００１９】
図１に戻って、制御処理コード自動生成手段２２のテストパターン入力コード自動生成手段２２ａは、テストパターン入力要素記述手段２１ａにより対応付けられた図４に示す、テストパターン入力要素２０１と出力端子要素１０１〜１０４との接続関係を、単体テスト用データ入力関数に変換する。
図５は、図４の接続関係をもとに生成された単体テスト用データ入力関数の例である。この例では、予めテスト用パターンが格納されている配列test_pattern[]のデータを、制御ブロック図の変数入力端子要素１０１〜１０４に相当する変数に代入するコードを、関数test_input()として生成している。
【００２０】
図１に戻って、制御ブロック図仕様記述手段２１の出力パターン保存要素記述手段２１ｂは、制御ブロック図仕様記述手段２１により生成された制御ブロック図における変数出力端子要素に対応する入力端子要素とテストパターン出力要素とを入力装置１の表示画面に表示し、入力装置１から入力される指示に応じて、入力端子要素とテストパターン出力要素とを接続することによって、制御処理コード自動生成手段２２で生成された制御プログラムを表す制御ブロック図のソースコードに対する、単体テスト用データ出力処理の仕様を記述する。
【００２１】
図６は、図２の制御ブロック図から生成されるソースコードに対する、単体テスト用データ出力処理を記述した例である。図６中の３０１はテストパターン保存要素を表現したものである。また、入力端子要素１０８、１０９は、図２の制御ブロック図における変数出力端子要素１０８、１０９に対応する入力端子要素を表現したものである。図６のテストパターン保存要素３０１の場合、２つの入力端子を備えている。なお、この入力端子の数は、テストパターン保存要素３０１の属性として設定できるようになっている。
【００２２】
そして、利用者が入力装置１を操作し、テストパターン保存要素３０１の各入力端子ｉｎ１及びｉｎ２のそれぞれと、図２の制御ブロック図における各変数出力端子要素１０８、１０９に対応するこれらと同名の入力端子要素１０８、１０９とを接続する操作を行うことにより、図２の制御ブロック図における各変数出力端子要素１０８、１０９と、テストパターン保存要素３０１の各入力端子ｉｎ１、ｉｎ２とを、図６中の入力端子要素１０８、１０９を介して対応付けている。
【００２３】
図１に戻って、制御処理コード自動生成手段２２の出力パターン保存コード自動生成手段２２ｂは、出力パターン保存要素記述手段２１ｂにより生成された図６に示す、テストパターン出力要素３０１と入力端子要素１０８、１０９との接続関係を、単体テスト用データ出力関数に変換する。図７は、図６の接続関係をもとに生成された単体テスト用データ出力関数の例である。この例では、配列out_pattern[]に、変数出力端子要素１０８、１０９に相当する変数の値を格納するコードを、関数test_output()として生成している。
【００２４】
以上により、利用者は、制御ブロック図仕様記述手段２１によって所望の制御仕様を制御ブロック図として記述すると同時に、単体テスト用のデータ入出力を実現するための処理も記述することにより、作成したい制御プログラムのソースコードと共に、作成した制御プログラムに対する単体テスト用のデータ入出力を実現するための処理を行う入出力処理プログラムのソースコードを自動生成することができことになる。
なお、この例のようにデータ入出力の処理をブロック図で記述するテストパターン入力要素記述手段２１ａおよび出力パターン保存要素記述手段２１ｂは一例である。例えば、テストパターン入力および出力に対応付けする端子名を図８に示すような設定画面で設定する構成としてもよい。
【００２５】
つまり、図８に示すような、“テストの設定”画面を入力装置１の表示画面に表示し、利用者が“テストの設定”画面において操作することにより、図４及び図６の接続関係を記述できるようにしてもよい。すなわち、図８に示すように、テストパターンの入力端子及び出力端子として任意数の端子を用意する。これら各入力端子及び出力端子は、前記図４のテストパターン入力要素２０１の出力端子の数として設定された数及び図６のテストパターン保存要素３０１の入力端子の数として設定された数に対応してそれぞれ設定可能になっている。
図４の場合、テストパターン入力要素２０１の出力端子数は“４”、図６の場合、テストパターン保存要素３０１の入力端子数は“２”であるため、図８に示すテストの設定画面では、テストパターンの入力端子は１から４までが設定可能となり、テストパターンの出力端子は１から２までが設定可能となっている。
【００２６】
そして、図８の“テストの設定”画面において、テストパターンの入力端子１〜４のそれぞれにおいて、図２の入力端子要素１０１〜１０４に対応する各信号in_x〜in_wの何れかを選択可能に構成する。そして、利用者が“テストの設定”画面において、各テストパターンの入力端子１〜４のそれぞれについて、図２の入力端子要素１０１〜１０４に対応する各信号in_x〜in_wの何れかを選択することによりテストパターンの入力端子１〜４のそれぞれと、図２の入力端子要素１０１〜１０４に対応する各信号in_x〜in_wとがそれぞれ対応付けられるようになっている。
【００２７】
同様に、“テストの設定”画面のテストパターンの出力端子１及び２において、図２の出力端子要素１０８、１０９に対応する各信号out_a、out_ｂの何れかを選択可能に構成する。そして、利用者が、“テストの設定”画面において、各テストパターンの出力端子１、２のそれぞれについて、図２の出力端子要素１０８、１０９に対応する各信号out_a、out_ｂの何れかを選択することによりテストパターンの出力端子１、２のそれぞれと、図２の出力端子要素１０８、１０９に対応する各信号out_a、out_ｂとが対応付けられるようになっている。
【００２８】
そして、“テストの設定”画面において、設定完了を指示する“ＯＫ”が指示されたとき、図４のテストパターン入力要素の出力端子ｏｕｔ１と入力端子１に割りつけられた信号in_xとが対応付けられたと判断し、同様に、出力端子out２〜out４のそれぞれと入力端子２〜４のそれぞれに割りつけられた信号in_y〜in_wとがそれぞれ対応付けられたと判断する。同様に、図６の出力パターン保存要素３０１の入力端子in1と出力端子１に割りつけられたout_aとが対応付けられ、入力端子in2と出力端子２に割りつけられたout_bとが対応付けられたと判断する。
【００２９】
このように、図８の“テストの設定”画面において、接続関係を設定することによっても、図４及び図６と同等の接続関係が設定されることになる。
図１に戻って、制御処理コード自動生成手段２２のテストドライバコード自動生成手段２２ｃは、予め設定されたテストドライバの雛形（以下、雛形テストドライバという。）２３を表すソースコードと、動作検証対象の制御プログラムのソースコードと、そのテストを行うためのテスト入出力用プログラムのソースコードと、入力装置１により設定される動作環境諸元とに基づきテストドライバのソースコードを生成する。
【００３０】
例えば、作成した制御プログラムを、図９（ａ）に示す、商用電源を所定の電源電圧に変換する電源装置５０に適用するものとする。この電源装置５０は、ＡＣ−ＤＣ変換などを行うスイッチング素子を含んで構成される変換器５１とこの変換器５１のスイッチング素子をオンオフ制御する演算装置５２とから構成される。制御プログラムは演算装置５２に組み込まれ、各種センサ信号等をもとに所定の処理を行って、変換器５１を構成するスイッチング素子をオンオフ制御するためのオンオフ信号等を生成しこれを出力する。
【００３１】
この演算装置５２に組み込まれる、変換器５１をオンオフ制御するための制御プログラムのテストプログラムの場合、例えば、図９（ｂ）に示すように、動作検証対象の制御プログラムに対して、この制御プログラムが実際に組み込まれるマイクロコンピュータ等の演算装置の動作環境でテストパターンを入力させ、その結果を出力パターンとして取り出し、比較等を行うテストドライバのソースコードを生成する。つまり、テストドライバは、制御プログラムに対しテストパターンを入力すると共にテストパターンに対する処理結果を取り出し、処理結果と予め設定した期待値とを比較すること等により、制御プログラムが開発者の要求する仕様通りに動作しているかを判定し、その判定結果を出力する。
【００３２】
前記雛形テストドライバ２３は、動作検証対象の制御プログラムが組み込まれる演算装置に依存する動作環境に則して生成される。また、雛形テストドライバ２３は、演算装置の種類や、動作検証内容等に応じて予め複数設定されて、所定の記憶領域に記憶されている。
前記動作環境諸元は、例えば、図９（ａ）の電源装置５０の場合、演算装置５２と、この演算装置５２により駆動制御される変換器５１とからなる電源装置５０全体に依存して決定される演算装置５２の動作環境のパラメータであって、例えば図１０に示すようなパラメータがある。
【００３３】
すなわち、前記制御プログラムが実際に組み込まれる演算装置の動作環境を模擬するための実行環境構築に必要な情報（実行環境構築（ＯＳ／モニタプログラム））、テストパターンの格納場所に関する情報（テストパターン格納場所割り付け）、繰り返し実行する際の方法（繰り返し実行手段選択）、テストパターンに対する期待値の格納場所に関する情報（期待値パターン格納場所割り付け）、テストパターンに対する応答値と期待値とに基づく判定結果の通知に関する情報（判定結果通知手段選択）等が大項目としてある。
【００３４】
前記“実行環境構築（ＯＳ／モニタプログラム）”は、中項目として、“ハードウェアコンフィグレーション”及び“ＯＳコンフィグレーション”がある。“ハードウェアコンフィグレーション”としては、“定周期タイマ設定”として、「使用する／しない、カウント周期、カウントクロック周波数、等」があり、“Ｉ／Ｏポート設定”として「使用する／しない、入力／出力」等があり、“通信設定”として「使用する／しない、通信方式、通信速度、等」があり、“割り込み設定”として「使用する／しない、発生時の呼出ハンドラ、等」がある。また、“ＯＳコンフィグレーション”としては、タスク定義があり「周期動作タスク、アイドルタスク、割り込みタスク、等」がある。
【００３５】
また、“テストパターン格納場所割付”は、中項目として例えば“メモリマッピング”であるか否かが設定されるようになっている。
また、“繰り返し実行手段選択”としては、中項目として“連続実行タスク上でループ”、“定周期タスク上で実行”、割り込みタスク上で実行”の何れかが選択されるようになっており、“定周期タスク上で実行”する場合には、その「実行周期」が設定されるようになっている。
【００３６】
また、“期待値パターン格納場所割付”としては、中項目として例えば“メモリマッピング”であるか否かが設定されるようになっている。
また、“判定結果通知手段選択”としては、中項目として“Ｉ／Ｏポート”、“通信”、“表示（液晶、ドットマトリクス等）”があり、これらの何れかを選択するようになっており、“通信”の場合には「通信プロトコル設定（実行コマンド内容の定義）」、“表示（液晶、ドットマトリクス等）”の場合には「表示デバイスとのＩ／Ｆ設定（デバイスとの間のデータ授受方式、データフォーマット）」等が設定されるようになっている。
【００３７】
そして、テストドライバコード自動生成手段２２ｃは、利用者が入力装置１を操作することにより、作成した制御プログラムの組み込み対象の演算装置に対応した雛形テストドライバを選択し、さらに動作環境諸元の各パラメータを入力すると、入力された動作環境諸元と、選択された雛形テストドライバとから、入力された動作環境諸元に応じた動作環境を実現するテストドライバを生成する。
【００３８】
さらに、例えば、雛形テストドライバが、図１１に示すように、制御処理関数(図３の場合、関数function())と、単体テスト用データ入出力関数(図５、図７の場合、関数test_input()およびtest_output())とを順次呼び出して、予め定められたテストパターンを入力として与えた場合の出力結果を期待値と比較し、制御処理関数の動作を検証するという内容の動作検証を行うように設定されている場合には、制御処理コード自動生成手段２２で生成された制御プログラムのソースコードの格納先及び、テストパターン入力コード自動生成手段２２ａ、出力パターン保存コード自動生成手段２２ｂで生成された、単体テスト用データ入出力関数を表すテストパターン入力コード及び出力パターン保存コードの格納先、を雛形テストドライに組み込み、図１１に示す動作検証処理を、指定された雛形テストドライバ及び入力された動作環境諸元下で実現するテストドライバのソースコードを生成する。
【００３９】
図１１のテストドライバのソースコードの処理フローにおいて、単体テストでは、動作を検証するためのテストパターンを複数組与えるのが通常であるので、テストドライバは保存領域からテストパターンを１組ずつ読出して与えることを、パターンがなくなるまで繰り返す構造になっている。なお、図１１における入力パターン保存領域に格納されている入力パターンは、定数テーブル定義の形で予めテストドライバのソースコードに埋め込まれる形態でもいいし、ファイル形式でハードディスクなどの記憶媒体に記録されているものを実行時に読み出すような形態でもいい。比較のための期待値パターンの形態についても同様である。
【００４０】
図１１に示すテストドライバコードの処理フローでは、まず、ステップＳ１で入力パターン保存領域から入力パターンを読み出し、読み出した入力パターンを、入力変数として単体テスト用データ入力関数test_input()（ステップＳ２）、制御処理関数function()（ステップＳ３）、単体テスト用データ出力関数test_output()（ステップＳ４）を順次読み出して実行する。これにより、読み出した入力パターンが、制御処理関数function()で実行され、その実行結果が出力パターンとして、所定の記憶領域に保存される。
【００４１】
そして、この所定の記憶領域に保存された出力パターンを、予め設定された出力パターン領域に書き出す（ステップＳ５）。これによって、一の入力パターンに対する出力パターンが得られることになる。
そして、設定された入力パターンがなくまるまで、ステップＳ１からステップＳ５までの処理を繰り返し行うことにより、各入力パターンそれぞれについて制御処理関数function()による処理が実行され、その演算結果が出力パターンとして出力パターン領域に記憶される。
【００４２】
全ての入力パターンに対する処理が終了した後、ステップＳ６からステップＳ７に移行し、出力パターン領域に記憶された出力パターンと、予め設定された期待値パターンとを比較して、その比較結果から、制御処理プログラムの合否判定を行う。そして、合否判定結果を、テストドライバ作成諸元で指定された手段により外部に通知する。
図１２は、プログラム自動生成装置２の処理手順の一例を示すフローチャートである。
プログラム自動生成装置２は、入力装置１での利用者の仕様記述に応じて制御ブロック図を表示画面上に記述する処理を行い（ステップＳ１１）、利用者による制御ブロック図の生成が終了すると、生成された制御ブロック図に応じた制御処理コードを作成する（ステップＳ１２）。
【００４３】
次に、テストパターン入力要素と制御ブロック図の入力端子とを表示画面に表示して、これらの対応付けを利用者に促すための表示を行うと共に、入力装置１による利用者の対応付け操作に応じた表示を行い（ステップＳ１３）、利用者により行われた対応付けに応じたテストパターン入力コードを生成する（ステップＳ１４）。
次に、出力パターン依存要素と制御ブロック図の出力端子とを表示画面に表示して、これらの対応付けを利用者に促すための表示を行うと共に、入力装置１による利用者の対応付け操作に応じた表示を行い（ステップＳ１５）、利用者により行われた対応付けに応じた出力パターン保存コードを生成する（ステップＳ１５）。
次に、利用者が入力装置１を操作することにより選択された雛形テストドライバと、動作環境諸元とを読み込み、選択された雛形テストドライバと、動作環境諸元と、制御ブロック図に応じた制御プログラムのソースコード、テストパターン入力コード、出力パターン保存コードに基づき、テストドライバのソースコードを生成する。
【００４４】
このようにして生成されたテストドライバのソースコードを利用して、制御プログラムの単体テストを行う場合には、テストドライバのソースコード、すなわち、テストドライバを含む制御プログラムのソースコードを、この制御プログラムの組み込み対象の演算装置に組み込み、演算装置単体でこのソースコードを実行させる。すなわち、図９（ａ）の電源装置５０の場合には、テストドライバを含む制御プログラムのソースコードを演算装置５２に組み込む。これによって、演算装置５２では、図１１のフローチャートに示す手順でテスト用入力パターンを順次読み出して動作検証対象の制御プログラムを実行し、その結果と、予め設定された期待値とから単体テストにおける合否判定を行い、その結果を通知する。
【００４５】
利用者は、通知された結果を参照することによって、制御プログラムが要求する仕様通りの動作を行うかどうかを確認することができる。
なお、テストドライバを含む制御プログラムは、電源装置５０全体を稼働させる場合には、例えば、テストドライバとして動作するための処理を行う機能部分を制御プログラムから切り離した状態となるように構成され、制御プログラム単体として動作するように構成されている。
また、図１０に示す動作環境諸元を設定することにより、この動作環境諸元で特定される動作環境を実現するテストドライバを作成することができるため、制御プログラムの実際の動作環境と同等の動作環境下で制御プログラムの単体テストを行うことができる。
【００４６】
また、このとき、利用者は、単に例えば図１０に示す動作環境諸元を設定するだけで、組み込み対象の演算装置５２及び電源装置５０に依存する動作環境を実現するテストドライバのソースコードを生成することができるため、このソースコードを、組み込み対象の演算装置に組み込むだけで、実際の動作環境と同等の動作環境下において、演算装置単体での、制御プログラムの単体テストを行うことができる。
そのため、単体テストを行う段階で、テストドライバを作成する等の作業を行う必要はなく、その分単体テストを行う際の所要時間の短縮を図ることができると共に、テストドライバを作成する必要がないため、テストドライバを作成するための知識を持たない人であっても、動作環境諸元を設定するだけで、単体テストを容易に行うことができる。
【００４７】
また、雛形テストドライバ２３を、組み込み対象の演算装置に応じて複数設定し、且つ雛形テストドライバ２３は演算装置のみに依存する動作環境を考慮して生成し、さらに、組み込み対象の演算装置を含む電源装置５０に依存する動作環境諸元については、制御プログラム作成時に利用者が設定するようになっている。そのため、組み込み対象の演算装置として想定される、複数の種類の異なる演算装置に応じて雛形テストドライバを予め作成しておくことによって、例えば、雛形テストドライバに対応する演算装置を組み込み対象とする制御プログラムであれば、この制御プログラムを作成する際に、この制御プログラムが組み込まれる演算装置に対応する雛形テストドライバを選択し、且つこの演算装置を含む電源装置などの制御装置に依存する動作環境諸元を利用者が入力設定することによって、テストドライバを含んだ制御プログラムのソースコードを容易に作成することができる。
【００４８】
なお、上記実施の形態においては、電源装置の制御プログラムに適用した場合について説明したが、これに限るものではなく、制御対象装置を駆動制御するための演算装置に組み込まれる制御対象装置駆動制御用のプログラムであって、制御対象装置及び演算装置に依存する動作環境下で動作する制御プログラムであれば適用することができる。
また、上記実施の形態においては、図１１に示すように、制御処理関数(図３の場合、関数function())と、単体テスト用データ入出力関数(図５、図７の場合、関数test_input()およびtest_output())とを順次呼び出して、あらかじめ定められたテストパターンを入力として与えた場合の出力結果を期待値と比較し、制御処理関数の動作を検証するという内容の動作検証を行うためのテストドライバを作成する場合について説明したが、これに限るものではなく、他の動作により動作検証を行うテストドライバを作成することも可能である。
【００４９】
また、上記実施の形態においては、テストドライバにおいて、期待値と比較し制御プログラムの動作検証結果の合否を判定する場合について説明したが、これに限るものではなく、単に、テストパターン入力に対する制御プログラムの出力データを例えば、画面表示したり外部に通信回線を介して送信したりすることにより、利用者に出力データを通知し、利用者が出力データをもとに合否判断を行うように構成してもよい。
【００５０】
また、上記実施の形態においては、雛形テストドライバを複数備える場合について説明したが、これに限るものではなく、一の演算装置に対応する雛形テストドライバのみを備えた場合であっても適用することができ、ある演算装置専用のテストドライバのソースコードを作成するようにすることも可能である。
また、上記実施の形態においては、制御プログラムを作成する際に、テストドライバを作成する場合について説明したが、これに限るものではない。例えば、制御プログラムの制御ブロック図を予め作成しておく場合であっても適用することができる。この場合には、制御ブロック図を読み出した後、この制御ブロック図に対して、テストパターン入力要素及び出力パターン保存要素による対応付けを行い、以後、上記と同様の処理を行う構成とすればよい。
【００５１】
ここで、上記実施の形態において、図１２のステップＳ１３の処理がテストパターン入力対応付け手段に対応し、ステップＳ１５の処理が出力パターン対応付け手段に対応し、ステップＳ１４の処理がテストパターン入力コード自動生成手段に対応し、ステップＳ１６の処理が出力パターン保存コード自動生成手段に対応し、雛形テストドライバ２３がテストドライバの雛形に対応し、ステップＳ１７の処理で入力装置１により入力された動作環境諸元を読み込む処理が動作環境諸元入力手段に対応している。
【符号の説明】
【００５２】
１  入力装置
２  プログラム自動生成装置
２１  制御ブロック図仕様記述手段
２１ａ  テストパターン入力要素記述手段
２１ｂ  出力パターン保存要素記述手段
２２  制御処理コード自動生成手段
２２ａ  テストパターン入力コード自動生成手段
２２ｂ  出力パターン保存コード自動生成手段
２２ｃ  テストドライバコード自動生成手段
２３  雛形テストドライバ
１０１〜１０４  変数入力端子要素
１０５〜１０７  演算要素
１０８、１０９  変数出力端子要素
２０１  テストパターン入力要素
３０１  出力パターン保存要素
【図１】
0005521889.tif 000002
【図２】
0005521889.tif 000003
【図３】
0005521889.tif 000004
【図４】
0005521889.tif 000005
【図５】
0005521889.tif 000006
【図６】
0005521889.tif 000007
【図７】
0005521889.tif 000008
【図８】
0005521889.tif 000009
【図９】
0005521889.tif 000010
【図１０】
0005521889.tif 000011
【図１１】
0005521889.tif 000012
【図１２】
0005521889.tif 000013