(57)【要約】【課題】入力値に対してランダムな値を出力するランダム出力ブロックを含むプログラムをテストできるようにする。【解決手段】  記憶装置３０からランダム出力ブロック６４を含むプログラム６０を読み出し、プログラムを実行して、テスト入力値に対するプログラムの実行結果を得るプログラム実行部２５と、記憶装置３０からランダム出力モデルブロック４４を含むモデル４０を読み出し、モデル実行ツールを用いて、モデルを実行して、前記テスト入力値に対するモデルの実行結果を得るモデル実行部２２と、プログラム実行部２５で得た実行結果とモデル実行部手段２２で得た実行結果とを比較する出力照合部２８とを備えている。モデル実行部２２は、プログラムの実行によるランダム出力ブロックの出力値を取得し、モデル中のランダム出力モデルブロック４４の出力値として、ランダム出力ブロック６４の出力値を用いる。【選択図】  図１
2008171034.tif 000002
【特許請求の範囲】
【請求項１】
入力値に対してランダムな値を出力するランダム出力ブロックを含むプログラムの作成支援装置において、
前記プログラムを記憶するプログラム記憶領域と、
前記プログラムの仕様に基づくプログラムモデルであって、前記プログラム中の前記ランダム出力ブロックに対応するランダム出力モデルブロックを含むプログラムモデルを記憶するモデル記憶領域と、
前記プログラムのテスト入力値を取得する入力値取得手段と、
前記プログラム記憶領域から前記プログラムを読み出し、該プログラムを実行して、前記入力値取得手段が取得した前記テスト入力値に対する該プログラムの実行結果を得るプログラム実行手段と、
前記モデル記憶領域から前記プログラムモデルを読み出し、モデル実行ツールを用いて、該プログラムモデルを実行して、前記入力値取得手段が取得した前記テスト入力値に対する該プログラムモデルの実行結果を得るモデル実行手段と、
前記プログラム実行手段の前記実行結果と前記モデル実行手段の前記実行結果とを出力する、及び/又は、両実行結果を比較し、該比較結果を出力する照合手段と、
を備え、
前記モデル実行手段は、前記プログラム実行手段による前記プログラムの実行による前記ランダム出力ブロックの出力値を取得し、前記プログラムモデル中の前記ランダム出力モデルブロックの出力値として、該ランダム出力ブロックの出力値を用いる、
ことを特徴とするプログラムの作成支援装置。
【請求項２】
請求項１に記載のプログラムの作成支援装置において、
前記モデル記憶領域から前記プログラムモデルを読み出し、該プログラムモデルを用いて、前記プログラムのスケルトンを生成するスケルトン生成手段と、
前記スケルトンに不足しているプログラム構成要素データを受け付け、該スケルトンに該プログラム構成要素データを組み込み、前記プログラムを生成し、該プログラムを前記プログラム記憶領域に格納するプログラム生成手段と、
を備え、
前記スケルトン生成手段は、前記ランダム出力モデルブロックから前記ランダム出力ブロックのスケルトンを作成するにあたり、該ランダム出力ブロックの出力値を特定の記憶領域に記憶させるステップを含むランダム出力スケルトンを作成するランダム出力スケルトン作成手段を含み、
前記モデル実行手段は、前記プログラム実行手段による前記プログラムの実行により、前記特定の記憶領域に記憶された前記ランダム出力ブロックの出力値を取得する、
ことを特徴とするプログラムの作成支援装置。
【請求項３】
請求項１及び２のいずれか一項に記載のプログラムの作成支援装置において、
前記入力値取得手段は、複数の前記テスト入力値を取得し、
前記プログラム実行手段は、複数の前記テスト入力値毎に前記プログラムを実行して、複数の前記テスト入力値毎に、前記ランダム出力ブロックの入力値に対する該ランダム出力ブロックの出力値を取得し、
前記ランダム出力ブロックの複数の入力値と、各入力値毎のランダム出力ブロックの出力値とを用いて、該ランダム出力ブロックの各実行結果のランダム性を評価し得るデータを作成するランダム出力集計手段を備えている、
ことを特徴とするプログラムの作成支援装置。
【請求項４】
入力値に対してランダムな値を出力するランダム出力ブロックを含むプログラムの作成支援プログラムにおいて、
前記プログラムのテスト入力値を取得する入力値取得ステップと、
コンピュータの記憶領域に格納された前記プログラムを該記憶領域から読み出し、該プログラムを実行して、前記入力値取得ステップで取得した前記テスト入力値に対する該プログラムの実行結果を得るプログラム実行ステップと、
前記コンピュータの記憶領域に格納された、前記プログラムの仕様に基づくプログラムモデルであって、前記プログラム中の前記ランダム出力ブロックに対応するランダム出力モデルブロックを含むプログラムモデルを該記憶領域から読み出し、モデル実行ツールを用いて、該プログラムモデルを実行して、前記入力値取得ステップで取得した前記テスト入力値に対する該プログラムモデルの実行結果を得るモデル実行ステップと、
前記プログラム実行ステップの実行で得られたで前記実行結果と前記モデル実行ステップの実行で得られた前記実行結果とを出力する照合ステップと、
を前記コンピュータに実行させ、
前記モデル実行ステップでは、前記プログラム実行ステップでの前記プログラムの実行による前記ランダム出力ブロックの出力値を取得し、前記プログラムモデル中の前記ランダム出力モデルブロックの出力値として、該ランダム出力ブロックの出力値を用いる、
ことを特徴とするプログラムの作成支援プログラム。
【請求項５】
請求項４に記載のプログラムの作成支援プログラムにおいて、
前記記憶領域に格納された前記プログラムモデルを読み出し、該プログラムモデルを用いて、前記プログラムのスケルトンを生成するスケルトン生成ステップと、
前記スケルトンに不足しているプログラム構成要素データを受け付け、該スケルトンに該プログラム構成要素データを組み込み、前記プログラムを生成し、該プログラムを前記記憶領域に格納するプログラム生成ステップと、
を前記コンピュータに実行させ、
前記スケルトン生成ステップは、前記ランダム出力モデルブロックから前記ランダム出力ブロックのスケルトンを作成するにあたり、該ランダム出力ブロックの出力値を前記コンピュータの特定の記憶領域中に記憶させるステップを含むランダム出力スケルトンを作成するランダム出力スケルトン作成ステップを含み、
前記プログラム実行ステップでは、前記特定の記憶領域に記憶された前記ランダム出力ブロックの出力値を取得する、
ことを特徴とするプログラムの作成支援プログラム。
【請求項６】
入力値に対してランダムな値を出力するランダム出力ブロックを含むプログラムの作成支援方法において、
コンピュータの記憶領域に前記プログラムを格納する工程と、
前記コンピュータの記憶領域に、前記プログラムの仕様に基づくプログラムモデルであって、前記プログラム中の前記ランダム出力ブロックに対応するランダム出力モデルブロックを含むプログラムモデルを格納する工程と、
前記コンピュータに、前記プログラムのテスト入力値を入力するテスト値入力工程と、
前記コンピュータに、前記記憶領域から前記プログラムを読み出させ、該プログラムを実行させて、前記テスト値入力工程で入力した前記テスト入力値に対する該プログラムの実行結果を取得させるプログラム実行工程と、
前記コンピュータに、前記記憶領域から前記プログラムモデルを読み出させ、モデル実行ツールを用いて、該プログラムモデルを実行させて、前記テスト値入力工程で入力した前記テスト入力値に対する該プログラムモデルの実行結果を取得させるモデル実行工程と、
前記コンピュータに、前記プログラム実行工程での前記実行結果と前記モデル実行工程での前記実行結果とを出力させ、及び/又は、両実行結果を比較させて、該比較結果を出力させる照合工程と、
を含み、
前記モデル実行工程では、前記コンピュータに、前記プログラム実行工程での前記プログラムの実行による前記ランダム出力ブロックの出力値を取得させ、前記プログラムモデル中の前記ランダム出力モデルブロックの出力値として、該ランダム出力ブロックの出力値を用いらせる、
ことを特徴とするプログラムの作成支援方法。
【請求項７】
請求項６に記載のプログラムの作成支援方法において、
前記コンピュータに、前記記憶領域から前記プログラムモデルを読み出させ、該プログラムモデルを用いて、前記プログラムのスケルトンを生成させるスケルトン生成工程と、
前記スケルトンに不足しているプログラム構成要素データを受け付け、前記コンピュータに、該スケルトンに該プログラム構成要素データを組み込ませて、前記プログラムを生成させ、該プログラムを前記記憶領域に格納させるプログラム生成工程と、
を含み、
前記スケルトン生成工程は、前記ランダム出力モデルブロックから前記ランダム出力ブロックのスケルトンを作成するにあたり、前記コンピュータに、該ランダム出力ブロックの出力値を特定の記憶領域に記憶させるステップを含むランダム出力スケルトンを作成させるランダム出力スケルトン作成工程を含み、
前記モデル実行工程では、前記プログラム実行工程での前記プログラムの実行により、前記特定の記憶領域に記憶された前記ランダム出力ブロックの出力値を前記コンピュータに取得させる、
ことを特徴とするプログラムの作成支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入力値に対してランダムな値を出力するランダム出力ブロックを含むプログラムの作成支援装置、その作成支援プログラム及びその作成支援方法に関する。
【背景技術】
【０００２】
例えば、以下の特許文献１には、プログラムの設計仕様をモデル化し、このモデルからプログラムのソースコードを自動生成するプログラム作成支援装置が開示されている。
【０００３】
近年では、このようなプログラム作成支援装置を用いて、プログラム開発の効率を上げている。
【０００４】
ところで、一般的に、プログラムが一旦完成すると、このプログラムが適切なものであるか否かのテストが行われる。このテストでは、予め入力値と、この入力値に対する出力値とを準備しておき、コンピュータに、この入力値を入力し、開発したプログラムを実行させて、プログラムの実行結果である出力値を得て、この出力値と予め準備しておいた出力値とを比較している。
【０００５】
【特許文献１】特開2001−303311号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
通常のプログラムでは、入力値に対して出力が一意に決まる。しかしながら、プログラムの中には、入力値に対して出力がランダムに変わってほしいものもある。例えば、同じ処理を行う機器が並列的に複数存在するシステムで、これらの機器の起動を管理するプログラムでは、起動する順番が決まっていると、一つの機器が必ず使用されることになり、この機器が他の機器に比べて早く寿命を迎えることになるため、起動させる機器をランダムに選択することが要求される。
【０００７】
このようなプログラムでは、出力がランダムであるため、前述したように、予め入力値と出力値とを準備しおいてテストを行うことができない。
【０００８】
そこで、本発明は、このような事情を鑑み、入力値に対してランダムな値を出力するランダム出力ブロックを含むプログラムのテストを行うことができるプログラムの作成支援装置、その作成支援プログラム及びその作成支援方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
前記目的を達成するためのプログラムの作成支援装置に係る発明は、
入力値に対してランダムな値を出力するランダム出力ブロックを含むプログラムの作成支援装置において、
前記プログラムを記憶するプログラム記憶領域と、
前記プログラムの仕様に基づくプログラムモデルであって、前記プログラム中の前記ランダム出力ブロックに対応するランダム出力モデルブロックを含むプログラムモデルを記憶するモデル記憶領域と、
前記プログラムのテスト入力値を取得する入力値取得手段と、
前記プログラム記憶領域から前記プログラムを読み出し、該プログラムを実行して、前記入力値取得手段が取得した前記テスト入力値に対する該プログラムの実行結果を得るプログラム実行手段と、
前記モデル記憶領域から前記プログラムモデルを読み出し、モデル実行ツールを用いて、該プログラムモデルを実行して、前記入力値取得手段が取得した前記テスト入力値に対する該プログラムモデルの実行結果を得るモデル実行手段と、
前記プログラム実行手段の前記実行結果と前記モデル実行手段の前記実行結果とを出力する、及び/又は、両実行結果を比較し、該比較結果を出力する照合手段と、
を備え、
前記モデル実行手段は、前記プログラム実行手段による前記プログラムの実行による前記ランダム出力ブロックの出力値を取得し、前記プログラムモデル中の前記ランダム出力モデルブロックの出力値として、該ランダム出力ブロックの出力値を用いる、
ことを特徴とする。
【００１０】
ここで、前記プログラムの作成支援装置は、
前記モデル記憶領域から前記プログラムモデルを読み出し、該プログラムモデルを用いて、前記プログラムのスケルトンを生成するスケルトン生成手段と、
前記スケルトンに不足しているプログラム構成要素データを受け付け、該スケルトンに該プログラム構成要素データを組み込み、前記プログラムを生成し、該プログラムを前記プログラム記憶領域に格納するプログラム生成手段と、
を備え、
前記スケルトン生成手段は、前記ランダム出力モデルブロックから前記ランダム出力ブロックのスケルトンを作成するにあたり、該ランダム出力ブロックの出力値を特定の記憶領域に記憶させるステップを含むランダム出力スケルトンを作成するランダム出力スケルトン作成手段を含み、
前記モデル実行手段は、前記プログラム実行手段による前記プログラムの実行により、前記特定の記憶領域に記憶された前記ランダム出力ブロックの出力値を取得する、
ものであってもよい。
【００１１】
また、前記目的を達成するためのプログラムの作成支援プログラムに係る発明は、
入力値に対してランダムな値を出力するランダム出力ブロックを含むプログラムの作成支援プログラムにおいて、
前記プログラムのテスト入力値を取得する入力値取得ステップと、
コンピュータの記憶領域に格納された前記プログラムを該記憶領域から読み出し、該プログラムを実行して、前記入力値取得ステップで取得した前記テスト入力値に対する該プログラムの実行結果を得るプログラム実行ステップと、
前記コンピュータの記憶領域に格納された、前記プログラムの仕様に基づくプログラムモデルであって、前記プログラム中の前記ランダム出力ブロックに対応するランダム出力モデルブロックを含むプログラムモデルを該記憶領域から読み出し、モデル実行ツールを用いて、該プログラムモデルを実行して、前記入力値取得ステップで取得した前記テスト入力値に対する該プログラムモデルの実行結果を得るモデル実行ステップと、
前記プログラム実行ステップの実行で得られたで前記実行結果と前記モデル実行ステップの実行で得られた前記実行結果とを出力する照合ステップと、
を前記コンピュータに実行させ、
前記モデル実行ステップでは、前記プログラム実行ステップでの前記プログラムの実行による前記ランダム出力ブロックの出力値を取得し、前記プログラムモデル中の前記ランダム出力モデルブロックの出力値として、該ランダム出力ブロックの出力値を用いる、
ことを特徴とする。
【００１２】
また、前記目的を達成するためのプログラムの作成支援方法は、
入力値に対してランダムな値を出力するランダム出力ブロックを含むプログラムの作成支援方法において、
コンピュータの記憶領域に前記プログラムを格納する工程と、
前記コンピュータの記憶領域に、前記プログラムの仕様に基づくプログラムモデルであって、前記プログラム中の前記ランダム出力ブロックに対応するランダム出力モデルブロックを含むプログラムモデルを格納する工程と、
前記コンピュータに、前記プログラムのテスト入力値を入力するテスト値入力工程と、
前記コンピュータに、前記記憶領域から前記プログラムを読み出させ、該プログラムを実行させて、前記テスト値入力工程で入力した前記テスト入力値に対する該プログラムの実行結果を取得させるプログラム実行工程と、
前記コンピュータに、前記記憶領域から前記プログラムモデルを読み出させ、モデル実行ツールを用いて、該プログラムモデルを実行させて、前記テスト値入力工程で入力した前記テスト入力値に対する該プログラムモデルの実行結果を取得させるモデル実行工程と、
前記コンピュータに、前記プログラム実行工程での前記実行結果と前記モデル実行工程での前記実行結果とを出力させ、及び/又は、両実行結果を比較させて、該比較結果を出力させる照合工程と、
を含み、
前記モデル実行工程では、前記コンピュータに、前記プログラム実行工程での前記プログラムの実行による前記ランダム出力ブロックの出力値を取得させ、前記プログラムモデル中の前記ランダム出力モデルブロックの出力値として、該ランダム出力ブロックの出力値を用いらせる、
ことを特徴とする。
【発明の効果】
【００１３】
本発明によれば、開発したプログラム中に、入力値に対してランダムな値を出力するランダム出力ブロックを含んでいる場合でも、このプログラムをテストすることができる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明に係る一実施形態としてのプログラムの作成支援装置について、図面を用いて説明する。
【００１５】
本実施形態のプログラムの作成支援装置１００は、図１に示すように、ハードウェア的には、コンピュータであり、各種処理を実行するＣＰＵ１０と、各種データやプログラム等が記憶される記憶装置３０と、ＣＰＵ１０のワークエリアとなるメモリ７０と、入力インタフェース７１と、出力インタフェース７２と、キーボード等の入力装置８１と、ディスプレイ装置等の出力装置８２と、を備えている。
【００１６】
記憶装置３０には、開発するプログラムの作成支援プログラム３１と、開発するプログラムのモデルの実行時に使用するモデル実行ツール３２とが予め格納されている。さらに、この記憶装置３０には、後述するように、開発するプログラム６０のモデル４０、このプログラムモデル４０に基づいて作成されたスケルトン５０、このスケルトン５０に基づいて作成されたプログラム６０が順次格納される。
【００１７】
ここで、プログラムモデル４０、スケルトン５０、及びプログラム６０について説明する。
【００１８】
プログラムモデル４０は、開発するプログラム６０の設計仕様に基づき作成されたもので、前述のモデル実行ツール３２を用いることで、このプログラムモデル４０をコンピュータ上で実行することができるモデル形式で記述されている。このプログラムモデル４０は、複数の機能モデルブロック４１，４２，４３，４４を有し、これら機能モデルブロックのうちの一つが、入力値に対してランダムな値を出力するランダム出力モデルブロック４４である。このプログラムモデル４０に対する入力値は、この例では、機能1モデルブロック４１に入力し、その出力がランダム出力モデルブロック４１及び機能２モデルブロック４２に入力し、ランダム出力モデルブロック４４の出力が機能３モデルブロック４３に入力する。
【００１９】
スケルトン５０は、前述したように、プログラムモデル４０に基づいて作成されるもので、プログラムモデル４０の機能１モデルブロック４１、機能２モデルブロック４２、ランダム出力モデルブロック４４、機能３モデルブロック４３に対応して、機能１スケルトンブロック５１、機能２スケルトンブロック５２、ランダム出力スケルトンブロック５４、機能３スケルトンブロック５３を有する。
【００２０】
プログラム６０は、スケルトン５０に、適切なプログラム構成要素データを組み込んで作成されるもので、コード形式で記述される。このプログラム６０は、機能１スケルトンブロック５１、機能２スケルトンブロック５２、ランダム出力スケルトンブロック５４、機能３スケルトンブロック５３に対応して、機能１ブロック６１、機能２ブロック６２、ランダム出力ブロック６４、機能３ブロック６３を有している。
【００２１】
記憶装置３０には、さらに、プログラム６０のテストするために、プログラムモデル４０及びプログラム６０の実行過程で、このプログラム６０のテスト入力値３３、プログラムモデル４０を構成する各機能モデルブロック４１，４２，４３の出力値であるモデルブロック出力値３４、プログラム６０を構成する各モデル６１，６２，６３の出力値であるブロック出力値３６、プログラム６０のランダム出力ブロック６４の出力値であるランダム出力値３５が順次格納される。
【００２２】
ＣＰＵ１０は、機能的に、プログラムモデル４０に基づきスケルトン５０を作成するスケルトン作成部１１と、スケルトン５０に基づきプログラム６０を作成するプログラム作成部１５と、プログラム６０をテストするテスト実行部２１とを有している。
【００２３】
スケルトン作成部１１は、プログラムモデル４０のランダム出力モデルブロック４４を除く他の機能モデルブロック４１，４２，４３に基づき機能スケルトンブロック４１，４２，４３を生成する通常機能スケルトン作成部１２と、プログラムモデル４０のランダム出力モデルブロック４４に基づいてランダム出力スケルトンブロック５４を生成するランダム出力スケルトン生成部１３と、を有している。
【００２４】
また、テスト実行部２１は、記憶装置３０に記憶されているモデル実行ツール３２を用いて、プログラムモデル４０を実行するモデル実行部２２と、テストのためのテスト入力値を取得するテスト入力値取得部２４と、プログラム６０を実行するプログラム実行部２５と、プログラム６０の実行で得られたランダム出力ブロック６４の出力を統計処理するランダム出力集計部２６と、プログラムモデル４０の実行結果とプログラム６０の実行結果とを照合する出力照合部２８と、ランダムデータ集計部２６の集計結果や出力照合部２８の照合結果等を出力装置８２に出力する出力制御部２９と、を有している。
【００２５】
ＣＰＵ１０の以上の各機能部は、いずれも、ＣＰＵ１０が記憶装置３０に格納されているプログラム作成支援プログラム３１を実行することで、機能する。
【００２６】
次に、本実施形態のプログラムの作成支援装置１００の動作について説明する。
【００２７】
この作成支援装置１００のＣＰＵ１０は、図２に示すフローチャートに示すように、まず、入力装置８１からプログラムモデル４０を受け付けて、これを記憶装置３０に格納する（Ｓ１０）。なお、ここでは、プログラムモデル４０を外部から受け付けているが、この支援装置１００に、プログラム６０の設計仕様に基づいて、プログラムモデル４０を作成するプログラムを予め格納しておき、この支援装置１００で、このプログラムによりプログラムモデルを作成するようにしてもよい。
【００２８】
次に、スケルトン生成部１１が、記憶装置３０に格納されたプログラムモデル４０に基づいて、スケルトン５０を生成し、これを記憶装置３０に格納する（Ｓ２０）。
【００２９】
ここで、スケルトン生成部１１の詳細動作について、図３に示すＰＤＡ（Problem Analysis Diagram）に従って説明する。
【００３０】
スケルトン生成部１１は、プログラムモデル４０を構成している複数のモデルブロック４１〜４４のうち、処理していないブロックがある間（Ｓ２１）、以下の処理を繰り返して実行する。
【００３１】
まず、スケルトン生成部１１は、複数のモデルブロック４１〜４４のうちの一つのブロックを記憶装置３０から持ってきて（Ｓ２２）、このブロックがランダム出力モデルブロック４４か否かを判断する（Ｓ２３）。記憶装置３０から持ってきたブロックがランダム出力モデルブロック４４であると判断した場合には、スケルトン生成部１１のランダム出力スケルトン生成部１３が起動して、このランダム出力生成部１３が、ランダム出力モデルブロック４４に基づきランダム出力スケルトンブロック５４を生成する（Ｓ２４）。
【００３２】
このランダムスケルトンブロック５４は、図６に示すように、入力データ及び出力データの記憶装置３０内での格納領域を確保する第１のスケルトンパート５４ａと、専ら、ランダム出力モデルブロック４４に基づいて作成された本来のランダムスケルトンブロックを成す第２のスケルトンパート５４ｂと、入力データ及び出力データを前述の確保した格納領域にコピーする第３のスケルトンパート５４ｃとを有している。すなわち、このランダムスケルトンブロック５４は、後述の他の機能スケルトンブロック５１，５２，５３と異なり、三つのパートを有し、入出力データを記憶装置３０に格納するためのパートを含んでいる。
【００３３】
ランダム出力スケルトン生成部１３は、次に、生成したランダム出力スケルトンブロック５４を、予め記憶装置３０に格納しておいたメイン関数に登録する（Ｓ２６）。なお、このメイン関数とは、各ブロックの入出力タイミング等を定義した関数である。また、このメイン関数の生成及び記憶のタイミングは、スケルトン生成部１１でスケルトン５０を生成する前であれば、どの段階でもよい。
【００３４】
また、ステップ２３の判断で、記憶装置３０から持ってきたブロックがランダム出力モデルブロックではないと判断した場合には、スケルトン生成部１１の通常機能スケルトン生成部１２が起動して、この通常機能スケルトン生成部１２が、ランダム出力しない通常の機能モデルブロック４１，４２，４３に基づき、各機能スケルトンブロック５１，５２，５３を生成する（Ｓ２５）。通常機能スケルトン生成部１１は、機能スケルトンブロック５１，５２，５３を生成すると、前述のメイン関数に機能スケルトンブロック５１，５２，５３を登録する（Ｓ２６）。
【００３５】
複数のモデルブロック４１〜４４に対して、以上のようなスケルトン５１〜５４の生成及びメイン関数への登録が終了すると、スケルトン５０の生成処理（Ｓ２０）が終了する。
【００３６】
スケルトン５０の生成処理（Ｓ２０）が終了すると、図２のフローチャートに示すように、プログラム生成部１５が、記憶装置３０からスケルトン５０を読み出し、入力装置８１からのプログラム構成要素データを受け付けて、これをスケルトン５０に組み込み、プログラム６０を生成し、このプログラム６０を記憶装置３０に格納する（Ｓ３０）。なお、ここでは、プログラム６０は、コード形式のものを想定しているため、プログラム構成要素データもコード形式のものを受け付ける。
【００３７】
次に、テスト実行部２１のテスト入力値取得部２４が、複数のテスト入力値を取得し、これらテスト入力値３３を記憶装置３０に格納する（Ｓ４０）。このテスト入力値取得部２４は、入力装置８１から複数のテスト入力値を受け付けることで、これらを取得する。
【００３８】
次に、テスト実行部２１のプログラム実行部２５が、記憶装置３０からプログラム６０を読み込み、このプログラム６０を実行する（Ｓ５０）。
【００３９】
ここで、このプログラム実行部２５の詳細動作について、図４に示すＰＤＡに従って説明する。
【００４０】
プログラム実行部２５は、まず、記憶装置３０からコード形式のプログラム６０を読み込み、これを実行形式に変換する（Ｓ５１）。次に、プログラム実行部２５は、記憶装置３０に記憶されている複数のテスト入力値３３のうちで、プログラム６０にセットしていないテスト入力値がある間、以下の処理を繰り返して実行する（ＳＳ５２）。
【００４１】
プログラム実行部２５は、記憶装置３０からテスト入力値３３を一つ取ってきて、プログラム６０中の機能１ブロック６１の入力に、このテスト入力値３３をセットする（Ｓ５３）。続いて、機能１ブロック６１を実行し、この実行結果をランダム出力ブロック６４の入力にセットすると共に、この実行結果を機能２ブロック６２の入力にセットする（Ｓ５４）。
【００４２】
次に、プログラム実行部２５は、ランダム出力ブロック６４を実行し、この実行結果を機能３ブロック６３の入力にセットすると共に、この実行結果を記憶装置３０にランダム出力値３５として格納する（Ｓ５５）。ランダム出力ブロック６４の実行結果（ランダム出力値）は、ランダム出力ブロック６４の入力値、言い換えると、機能１ブロック６１の実行結果と対応付けて、記憶装置３０に格納される。
【００４３】
そして、プログラム実行部２５は、機能２ブロック６２及び機能３ブロック６３を順次実行して、それぞれの実行結果を記憶装置３０にブロック出力値３６として格納する（Ｓ５６，Ｓ５７）。
【００４４】
以上のステップ５３からステップ５７までの処理を、プログラム５０にセットしていないテスト入力値が無くなるまで実行すると、このプログラム実行処理（Ｓ５０）が終了する。
【００４５】
プログラム実行処理（Ｓ５０）が終了すると、図２のフローチャートに示すように、モデル実行部２２がプログラムモデル４０を実行する（Ｓ６０）。
【００４６】
ここで、このモデル実行部２２の詳細動作について、図５に示すＰＤＡに従って説明する。
【００４７】
モデル実行部２２は、まず、記憶装置３０からプログラムモデル４０を読み込み、このプログラムモデル４０の実行に必要なモデル実行ツール３２を記憶装置３０から取得し、プログラムモデル４０を実行形式に変換する（Ｓ６１）。次に、モデル実行部２２は、記憶装置３０に記憶されている複数のテスト入力値３３のうちで、プログラムモデル４０にセットしていないテスト入力値がある間、以下の処理を繰り返して実行する（Ｓ６２）。
【００４８】
モデル実行部２２は、記憶装置３０からテスト入力値３３を一つ取ってきて、機能１モデルブロック４１の入力に、このテスト入力値３３をセットする（Ｓ６３）。次に、この機能１モデルブロック４１を実行し、この実行結果をランダム出力モデルブロック４４の入力と、機能２モデルブロック４２の入力とにセットする（Ｓ６４）。
【００４９】
続いて、モデル実行部２２のランダム出力取得部２３が、ステップ６３で取得したテスト入力値３３に対応するランダム出力値３５が記憶装置３０に格納されているか否かを判断し（Ｓ６５）、記憶装置３０に格納されていれば、ランダム出力モデルブロック４４の出力にランダム出力値３５をセットする（Ｓ６６）。
【００５０】
次に、モデル実行部２２は、ランダム出力モデルブロック４４の出力に、ランダム出力値がセットされているか否かを判断する（Ｓ６７）。ランダム出力値がセットされていれば、ランダム出力モデルブロック４４の実行結果として、このランダム出力値を機能３モデルブロック４３の入力にセットする（Ｓ６８）。また、ランダム出力値がセットされていなければ、ランダム出力モデルブロック４４を実行し、この実行結果を機能３モデルブロック４３の入力にセットする（Ｓ６９）。
【００５１】
続いて、モデル実行部２２は、機能２モデルブロック４２を実行し、この実行結果をブロック出力値３６として記憶装置３０に格納する（Ｓ７０）。さらに、機能３モデルブロック４３を実行し、この実行結果をブロック出力値３６として記憶装置３０に格納する（Ｓ７１）。
【００５２】
以上で、モデル実行処理（Ｓ６０）が終了する。
【００５３】
モデル実行処理（Ｓ６０）が終了すると、図２のフローチャートに示すように、ランダム出力集計部２６が、記憶装置３０からランダム出力値３５を読み出し、このランダム出力値３５の集計処理を実行する（Ｓ８０）。
【００５４】
具体的には、例えば、図７に示すように、４台の機器を備え、４台の機器のうちのいずれかをランダムに起動し、及び/又は、いずれかをランダムに停止させて、目的の出力を得るシステムが存在するとする。そして、プログラム６０中のランダム出力ブロック６４は、機器一台の増加指示が入力したときに、いずれの番号の機器を起動させるか、さらに、機器一台の減少指示が入力したときに、いずれの番号の機器を停止させるかを出力するものであるとする。
【００５５】
ところで、記憶装置３０のランダム出力値３５には、前述したように、ランダム出力ブロック６４への入力値が対応付けられている。
【００５６】
このため、先に例示した場合、記憶装置３０には、図８に示すように、ランダム出力ブロック６４へ各入力値（機器増加→１、機器減少→２）毎に、ランダム出力値３５としての機器番号が対応付けられていることになる。
【００５７】
ランダム出力集計部２６は、このようなランダム出力値３５を記憶装置３０から読み出し、図９に示すように、各機器番号毎に、出力値となった累積回数を求め、全出力値の数に対するこの各機器番号毎の累積回数の比率（確率）を求める。
【００５８】
ランダム出力集計部２６は、以上の算出結果を出力制御部２９に渡し、これを出力装置８２に出力させる。プログラムの作成者は、この出力を見て、各機器番号毎の累積回数の比率がほぼ同じであれば、プログラム６０中のランダム出力ブロック６４は、適切なプログラムであると判断する。
【００５９】
ランダム出力集計処理（Ｓ８０）が終了すると、図２のフローチャートに示すように、出力照合部２８が、記憶装置３０からブロック出力値３６とモデルブロック出力値３４とを読み出し、出力照合処理を実行する（Ｓ９０）。
【００６０】
具体的に、出力照合部２８は、まず、記憶装置３０からブロック出力値３６とモデルブロック出力値３４とを読み出す。記憶装置３０に格納されているブロック出力値３６は、例えば、図１０に示すように、プログラムの実行毎に、機能２ブロック６２の出力値と、機能３ブロック６３の出力とが対応付けられているとする。また、記憶装置３０に格納されているモデルブロック出力値３４は、図１１に示すように、プログラムモデルの実行毎に、機能２モデルブロック４２の出力値と、機能３モデルブロック４３の出力値とが対応付けられているとする。このような場合、出力照合部２８は、各実行単位毎に、プログラムブロックの出力値とモデルブロックの出力値とを比較し、プログラムブロックの出力値とモデルブロックの出力値とが一致する場合に「ＯＫ」とし、プログラムブロックの出力値とモデルブロックの出力値とが一致しない場合に「ＮＧ」とする。出力照合部２８は、この比較結果を出力制御部３９に渡して、図１２に示すように、これを出力装置８２に出力させる。プログラムの作成者は、この出力を見て、一箇所でも、「ＮＧ」があれば、例えば、前述のステップ３０で、新たなプログラム構成要素データを入力する。
【００６１】
以上で、出力照合処理（Ｓ９０）を終了する。なお、この出力照合処理（Ｓ９０）は、プログラムモデル実行処理（Ｓ６０）の後であれば、ランダム出力集計処理（Ｓ８０）より先に行ってもよい。
【００６２】
以上のように、本実施形態では、プログラム６０中にランダム出力ブロック６４が存在していても、このプログラム６０のテストを行うことができる。さらに、ランダム出力ブロック６４のテストも行うことができる。
【図面の簡単な説明】
【００６３】
【図１】本発明に係る一実施形態におけるプログラムの作成支援装置の構成を示す説明図である。
【図２】本発明に係る一実施形態におけるプログラムの作成支援装置の動作を示すフローチャートである。
【図３】図２のステップ２０の詳細処理を示すＰＤＡ（Problem Analysis Diagram）である。
【図４】図２のステップ５０の詳細処理を示すＰＤＡである。
【図５】図２のステップ６０の詳細処理を示すＰＤＡである。
【図６】本発明に係る一実施形態におけるランダム出力スケルトンブロックのデータ構成を示す説明図である。
【図７】本発明に係る一実施形態におけるランダム出力ブロックでの処理内容の例を示す説明図である。
【図８】本発明に係る一実施形態で記憶装置に格納されているにおけるランダム出力値の例を示す説明図である。
【図９】本発明に係る一実施形態におけるランダム出力集計結果の例を示す説明図である。
【図１０】本発明に係る一実施形態で記憶装置に格納されているブロック出力値の例を示す説明図である。
【図１１】本発明に係る一実施形態で記憶装置に格納されているモデルブロック出力値の例を示す説明図である。
【図１２】本発明に係る一実施形態におけるプログラムモデルの実行結果とプログラムの実行結果との照合結果の例を示す説明図である。
【符号の説明】
【００６４】
１０：ＣＰＵ、１１：スケルトン生成部、１２：通常機能スケルトン生成部、１３：ランダム出力スケルトン生成部、１５：プログラム生成部、２１：テスト実行部、２２：モデル実行部、２３：ランダム出力取得部、２４：テスト入力値取得部、２５：プログラム実行部、２６：ランダム出力集計部、２８：出力照合部、３０：記憶装置、３１：プログラム作成支援プログラム、３２：モデル実行ツール、３３：テスト入力値、３４：モデルブロック出力値、３５：ランダム出力値、３６：ブロック出力値、４０：プログラムモデル、４１：機能１モデルブロック、４２：機能２モデルブロック、４３：機能３モデルブロック、４４：ランダム出力モデルブロック、５０：スケルトン、５１：機能１スケルトンブロック、５２：機能２スケルトンブロック、５３：機能３スケルトンブロック、５４：ランダム出力スケルトンブロック、６０：プログラム、６１：機能１ブロック、６２：機能２ブロック、６３：機能３ブロック、６４：ランダム出力ブロック
【図１】
2008171034.tif 000003
【図２】
2008171034.tif 000004
【図３】
2008171034.tif 000005
【図４】
2008171034.tif 000006
【図５】
2008171034.tif 000007
【図６】
2008171034.tif 000008
【図７】
2008171034.tif 000009
【図８】
2008171034.tif 000010
【図９】
2008171034.tif 000011
【図１０】
2008171034.tif 000012
【図１１】
2008171034.tif 000013
【図１２】
2008171034.tif 000014