(57)【要約】【課題】  モデルに基づいて生成されたソースコードのためのテストケースを、よりモデル開発者の意図を反映したものにする。【解決手段】  パーソナルコンピュータ１は、モデルに基づいて生成されたソースコードを読み出し（ステップ４０５）、また、そのモデルに含まれるそのモデルへの入力データの許容上限値、許容下限値、および精度の情報を読み出し（ステップ４２０）、また、モデルのシミュレーション状況解析結果を読み出し（ステップ４３０）、読み出したソースコードの処理内容、入力データの情報、およびシミュレーション状況解析結果に基づいて、そのソースコードのテストケースを生成する（ステップ４４０）。【選択図】 図６
2006024006.tif 000002
【特許請求の範囲】
【請求項１】
制御の処理動作を記述するモデルに基づいて生成されたソースコードを読み出すソースコード読出手段と、
前記モデル内の情報を読み出すモデル情報読出手段と、
読み出された前記ソースコードの処理内容および読み出された前記モデル内の情報に基づいて、前記ソースコードのテストケースを生成する生成手段と、を備えたテストケース生成装置。
【請求項２】
前記モデル情報読出手段は、前記モデルへの入力データの許容上限値および許容下限値のうち少なくとも１つを読み出し、
前記生成手段は、読み出された前記許容上限値および前記許容下限値のうち少なくとも１つに基づいて、前記ソースコードのテストケースを生成することを特徴とする請求項１に記載のテストケース生成装置。
【請求項３】
前記モデル情報読出手段は、前記モデルに含まれる、前記モデルへの入力データの精度情報を読み出し、
前記生成手段は、読み出された前記精度情報に基づいて、前記ソースコードのテストケースを生成することを特徴とする請求項１または２に記載のテストケース生成装置。
【請求項４】
入力を受けたデータに対する処理を記述するモデルに基づいて生成されたソースコードを読み出すソースコード読出手段、
前記モデル内の情報を読み出すモデル情報読出手段、および
読み出された前記ソースコードの処理内容および読み出された前記モデル内の情報に基づいて、前記ソースコードのテストケースを生成する生成手段として、演算装置を機能させるテストケース生成プログラム。
【請求項５】
制御の処理動作を記述するモデルに基づいてソースコードを生成する機能を演算装置に実現させるモデルベース開発プログラムであって、
生成された前記ソースコードを読み出すソースコード読出手段、
前記モデル内の情報を読み出すモデル情報読出手段、および
読み出された前記ソースコードの処理内容および読み出された前記モデル内の情報に基づいて、前記ソースコードのテストケースを生成する生成手段として、演算装置を機能させるモデルベース開発プログラム。
【請求項６】
制御の処理動作を記述するモデルに基づいて生成されたソースコードを読み出すソースコード読出手段と、
前記モデルのシミュレーション状況解析結果を読み出すシミュレーション情報読出手段と、
読み出された前記ソースコードの処理内容および読み出された前記解析結果に基づいて、前記ソースコードのテストケースを生成する生成手段と、を備えたテストケース生成装置。
【請求項７】
前記モデルは、前段にあるモデルの処理結果の出力データを入力データとして受け、
前記シミュレーション情報読出手段は、前記シミュレーション状況解析結果として、前記前段にあるモデルの前記出力データの情報を読み出し、
前記生成手段は、読み出された前記出力データの情報に基づいて、前記ソースコードのテストケースを生成することを特徴とする請求項６に記載のテストケース生成装置。
【請求項８】
前記シミュレーション情報読出手段は、前記前段にあるモデルの出力データの、上限値および下限値のうち少なくとも１つを読み出し、
前記生成手段は、読み出された前記上限値および前記下限値のうち少なくとも１つに基づいて、前記ソースコードのテストケースを生成することを特徴とする請求項７に記載のテストケース生成装置。
【請求項９】
制御の処理動作を記述するモデルに基づいて生成されたソースコードを読み出すソースコード読出手段、
前記モデルのシミュレーション状況解析結果を読み出すシミュレーション情報読出手段、および
読み出された前記ソースコードの処理内容および読み出された前記解析結果に基づいて、前記ソースコードのテストケースを生成する生成手段として、演算装置を機能させるテストケース生成プログラム。
【請求項１０】
制御の処理動作を記述するモデルに基づいてソースコードを生成する機能を演算装置に実現させるモデルベース開発プログラムであって、
前記モデルに基づいて生成されたソースコードを読み出すソースコード読出手段、
前記モデルのシミュレーション状況解析結果を読み出すシミュレーション情報読出手段、および
読み出された前記ソースコードの処理内容および読み出された前記解析結果に基づいて、前記ソースコードのテストケースを生成する生成手段として、演算装置を機能させるモデルベース開発プログラム。
【請求項１１】
制御の処理動作を記述するモデルから生成されたソースコードの内容に基づいて生成されたテストケースが前記モデルへ入力されることで行われた前記モデルのシミュレーションの結果を読み出すモデルシミュレーション結果読出手段と、
読み出された前記シミュレーションの結果に基ついて、前記ソースコード生成の妥当性についての表示用の情報を記憶媒体に記憶させる記憶制御手段と、を備えたソースコード生成妥当性診断装置。
【請求項１２】
前記モデルシミュレーション結果読出手段は、前記テストケースが前記モデルへ入力されることで行われた前記モデルのシミュレーションの結果として、そのシミュレーションによって実行されなかったモデルの部分の情報を読み出し、
前記記憶制御手段は、この実行されなかったモデルの部分の情報に基づいて、前記ソースコード生成の妥当性についての表示用の情報を記憶媒体に記憶させることを特徴とする請求項１１に記載のソースコード生成妥当性診断装置。
【請求項１３】
制御の処理動作を記述するモデルから生成されたソースコードの内容に基づいて生成されたテストケースが前記モデルへ入力されることで行われた前記モデルのシミュレーションの結果を読み出すモデルシミュレーション結果読出手段、および
読み出された前記シミュレーションの結果に基ついて、前記ソースコード生成の妥当性についての表示用の情報を記憶媒体に記憶させる記憶制御手段として演算装置を機能させるソースコード生成妥当性診断プログラム。
【請求項１４】
制御の処理動作を記述するモデルに基づいてソースコードを生成する機能を演算装置に実現させるモデルベース開発プログラムであって、
制御の処理動作を記述するモデルから生成されたソースコードの内容に基づいて生成されたテストケースが前記モデルへ入力されることで行われた前記モデルのシミュレーションの結果を読み出すモデルシミュレーション結果読出手段、および
読み出された前記シミュレーションの結果に基ついて、前記ソースコード生成の妥当性についての表示用の情報を記憶媒体に記憶させる記憶制御手段として演算装置を機能させるモデルベース開発プログラム。
【請求項１５】
制御の処理動作を記述するモデルに基づいてソースコードを生成する手順と、
生成された前記ソースコードを読み出す手順と、
前記モデル内の情報を読み出す手順と、
読み出された前記ソースコードの処理内容および読み出された前記モデル内の情報に基づいて、前記ソースコードのテストケースを生成する手順と、
生成された前記テストケースを入力として、前記モデルのシミュレーションを行う手順と、を備えたモデルベース開発方法。
【請求項１６】
制御の処理動作を記述するモデルに基づいてソースコードを生成する手順と、
前記モデルのシミュレーションを行う手順と、
前記モデルのシミュレーション状況の解析を行う手順と、
生成された前記ソースコードを読み出す手順と、
前記モデルのシミュレーション状況解析結果を読み出す手順と、
読み出された前記ソースコードの処理内容および読み出された前記解析結果に基づいて、前記ソースコードのテストケースを生成する手順と、を備えたモデルベース開発方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、モデルに基づいて生成されたソースコードの処理内容に基づいて、そのソースコードのテストケースを生成するテストケース生成装置およびプログラム、モデルからソースコードの生成が妥当性を診断するソースコード生成妥当性診断装置およびプログラム、ならびにモデルベース開発プログラムに関する。
【背景技術】
【０００２】
現在、例えば車両のエンジンＥＣＵの作動等、信号入出力制御のためのプログラムにおいては、開発者が直接そのプログラムのソースコードを記述せず、目的とするプログラムの機能を、より作成が簡易で視認性の良い「モデル」という形態で記述する場合がある（例えば特許文献１参照）。
【０００３】
開発者は、このモデルに対応したプログラム開発環境がインストールされたワークステーション、パーソナルコンピュータ等を用い、このモデルによって定義されたデータの入出力のシミュレーションを行い、また、モデルから自動的にソースコードを生成する。
【０００４】
モデルからソースコードを生成するようなプログラム開発は、モデルベース開発と呼ばれる。このモデルベース開発においてソースコードを生成するためのコード生成ツール、シミュレーションのためのシミュレーションツール等のプログラムは、統合環境としてのモデルベース開発プログラムの一部として提供されることが多い。
【０００５】
モデルベース開発に対応したプログラム開発環境としては、例えば、Mａｔｈｗｏｒｋｓ（登録商標）社のＭａｔｌａｂ（登録商標）がある。Ｍａｔｌａｂ（登録商標）においては、開発者はＭａｔｌａｂ（登録商標）に対する付加機能を提供するソフトウェアであるＳｉｍｕｌｉｎｋ（登録商標）を用いて、目的とするデータ入出力を表現するモデルを記述する。
【０００６】
モデルは、データ演算、データ入力およびデータ出力のうち少なくともいずれか１つの機能を実現する機能単位としてのブロック、およびブロック間の入出力関係を示す結線の組み合わせとして記述される。すなわち、複数のブロックが結線によって繋ぎ合わされることにより、車両制御等のデータ入出力を表現する集合体がモデルである。
【０００７】
このようなモデルベース開発環境においては、モデルやソースコードの品質評価を行うことが多い。品質評価とは、当該モデル、ソースコードが、プログラムの製品としてどのような品質を有しているかを、種々の基準から評価することをいう。品質評価の基準としては、例えばモデル中に実行されない分岐先があるか否か（すなわちカバレッジ）等がある。
【０００８】
これらの品質評価には、モデルからソースコードへの変換が意図した通り適正に行われているか、すなわち、モデルによって記述された入出力の機能がソースコードに正しく反映されているか、を判断するという目的もある。
【０００９】
ソースコードの品質評価を行うためのツールとしては、ＡＴＧ（Ａｕｔｏｍａｔｉｃ Ｔｅｓｔ  ｃａｓｅ  Ｇｅｎｅｒａｔｉｏｎ）と呼ばれるものがある。ＡＴＧは、ソースコードの内容（例えば命令分岐の条件等）を解析し、できるだけ多くの命令分岐先の処理が実行されるようなテスト用入力データ（以降テストケースと記す）を生成する機能を有する。
【特許文献１】特開平２０００−２０２９１号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかし、このようなソースコードの内容のみに基づいて生成されるテストケースは、そのソースコードの元となったモデルの作成時に開発者が想定した入力データの性質（例えば範囲、精度）を反映しているとは言えない。したがって、ソースコードの内容のみに基づいて生成されるテストケースが、ソースコードの実行テストのためには不足がある場合、またはソースコードの実行のためには不必要なものを有している場合等が発生する可能性がある。
【００１１】
本発明は上記点に鑑み、モデルに基づいて生成されたソースコードのためのテストケースを、よりモデル開発者の意図を反映したものにすることを第１の目的とする。
【００１２】
また、ＡＴＧによって生成されたテストケースは、ソースコードの内容に基づいたテストケースであることを踏まえ、このテストケースを入力として、そのソースコードの元となるモデルのシミュレーションを行うことで、モデルに基づくソースコードの生成の妥当性の診断を行うことを第２の目的とする。
【課題を解決するための手段】
【００１３】
上記第１の目的を達成するための本発明の特徴は、テストケース生成装置が、モデルに基づいて生成されたソースコードを読み出し、また、そのモデル内の情報を読み出し、読み出したソースコードの処理内容および読み出したモデル内の情報に基づいて、そのソースコードのテストケースを生成するようになっていることである。
【００１４】
このようになっていることで、テストケースは、ソースコードの内容に加え、そのモデル内の情報に基づいて生成されるので、よりモデル開発者の意図を反映したものとなっている。
【００１５】
また、読み出す対象となるモデル内の情報は、具体的には、当該モデルへの入力データの許容上限値および許容下限値のうち少なくとも１つであるようになっていてもよい。このようになっていることで、生成されるテストケースは、許容上限値および許容下限値のいずれか１つが勘案されたものとなる。
【００１６】
また、読み出す対象となるモデル内の情報は、具体的には、当該モデルへの入力データの精度情報であるようになっていてもよい。このようになっていることで、生成されるテストケースは、この精度情報が勘案されたものとなる。
【００１７】
また、このような第１の特徴を有するテストケース生成装置として実現された発明は、そのテストケース生成装置の機能を演算装置に実現させるためのプログラムとしても実現可能である。
【００１８】
そして、そのようなプログラムは、制御の処理動作を記述するモデルに基づいてソースコードを生成する機能を演算装置に実現させるモデルベース開発プログラムの構成要素となり得る。
【００１９】
また、上記第１の目的を達成するための本発明の第２の特徴は、テストケース生成装置が、モデルに基づいて生成されたソースコードを読み出し、また、モデルのシミュレーション状況解析結果を読み出し、読み出したソースコードの処理内容および読み出した解析結果の情報に基づいて、そのソースコードのテストケースを生成するようになっていることである。
【００２０】
このようになっていることで、テストケースは、ソースコードの内容に加え、そのソースコードの元となったモデルのシミュレーション状況解析結果に基づいて生成されるので、よりモデル開発者の意図を反映したものとなっている。
【００２１】
具体的には、対象となるモデルが、前段にあるモデルの処理結果の出力を入力として受けるようになっている場合は、シミュレーション状況解析結果として、その前段のモデルの当該出力データの情報を読み出し、その出力データの情報に基づいて、ソースコードのテストケースを生成するようになっていてもよい。このようになっていることで、生成されるテストケースは、そのテストケースの対象となるソースコードの元のモデルへの入力データの情報が勘案されたものとなる。
【００２２】
また、読み出す対象となる解析結果は、具体的には、当該入力データの上限値および下限値のうち少なくとも１つであるようになっていてもよい。このようになっていることで、生成されるテストケースは、当該モデルが入力を受けるデータの上限値および下限値のいずれか１つが勘案されたものとなる。
【００２３】
また、このような第２の特徴を有するテストケース生成装置として実現された発明は、そのテストケース生成装置の機能を演算装置に実現させるためのプログラムとしても実現可能である。
【００２４】
そして、そのようなプログラムは、制御の処理動作を記述するモデルに基づいてソースコードを生成する機能を演算装置に実現させるモデルベース開発プログラムの構成要素となり得る。
【００２５】
また、上記第２の目的を達成する本発明の第３の特徴は、ソースコード生成妥当性診断装置が、モデルから生成されたソースコードの内容に基づいて生成されたテストケースが前記モデルへ入力されることで行われた前記モデルのシミュレーションの結果に基ついて、そのソースコード生成の妥当性についての表示用の情報を記憶媒体に記憶させるようになっていることである。
【００２６】
このようにすることで、モデルに基づくソースコードの生成の妥当性の表示が行われる。
【００２７】
具体的には、ソースコード生成妥当性診断装置は、上記のテストケースがモデルへ入力されることで行われたモデルのシミュレーションの結果として、そのシミュレーションによって実行されなかったモデルの部分の情報を読み出し、この実行されなかったモデルの部分の情報に基づいて、前記ソースコード生成の妥当性についての表示用の情報を記憶媒体に記憶させるようになっていてもよい。
【００２８】
また、このような第３の特徴を有するソースコード生成不適正部分表示装置として実現された発明は、そのソースコード生成不適正部分表示装置の機能を演算装置に実現させるためのプログラムとしても実現可能である。
【００２９】
そして、そのようなプログラムは、制御の処理動作を記述するモデルに基づいてソースコードを生成する機能を演算装置に実現させるモデルベース開発プログラムの構成要素となり得る。
【００３０】
また、本発明は、制御の処理動作を記述するモデルに基づいてソースコードを生成する手順と、生成されたソースコードを読み出す手順と、当該モデル内の情報を読み出す手順と、読み出されたソースコードの処理内容および読み出されたモデル内の情報に基づいて、当該ソースコードのテストケースを生成する手順と、生成されたテストケースを入力として、当該モデルのシミュレーションを行う手順と、を備えたモデルベース開発方法としても把握することができる。
【００３１】
また、本発明は、制御の処理動作を記述するモデルに基づいてソースコードを生成する手順と、当該モデルのシミュレーションを行う手順と、当該モデルのシミュレーション状況の解析を行う手順と、生成されたソースコードを読み出す手順と、当該モデルのシミュレーション状況解析結果を読み出す手順と、読み出されたソースコードの処理内容および読み出された解析結果に基づいて、ソースコードのテストケースを生成する手順と、を備えたモデルベース開発方法としても把握することができる。
【発明を実施するための最良の形態】
【００３２】
以下、本発明の一実施形態について説明する。図１に、本実施形態に係るモデル自動結合装置としてのパーソナルコンピュータ１の構成を示す。このパーソナルコンピュータ１は、ディスプレイ１１、入力装置１２、ＲＡＭ１３、ＲＯＭ１４、ＨＤＤ（ハードディスクドライブ）１５、ＣＰＵ（演算装置に相当する）１６等から構成される。
【００３３】
ディスプレイ１１は、ＣＰＵ１６から受けた映像信号を、ユーザ（開発者）に対して映像として表示する。
【００３４】
入力装置１２は、キーボード、マウス等から構成され、ユーザが操作することにより、その操作に応じた信号をＣＰＵ１６に出力する。
【００３５】
ＲＡＭ１３は読み出し、書き込み可能な揮発性メモリであり、ＲＯＭ１４は読み出し専用の不揮発性メモリであり、ＨＤＤ１５は読み出し、書き込み可能な不揮発性メモリである。ＲＯＭ１４、ＨＤＤ１５には、ＣＰＵ１６が読み出して実行するプログラム等があらかじめ記憶されている。またＨＤＤ１５には、後述するモデルが記憶されている。
【００３６】
ＲＡＭ１３は、ＣＰＵ１６がＲＯＭ１４、ＨＤＤ１５に記憶されたプログラムを実行する際に、そのプログラムを一時的に保存するための記憶領域、および作業用のデータを一時的に保存するための記憶領域として用いられる。
【００３７】
ＣＰＵ１６は、パーソナルコンピュータ１に電源が投入されることによって起動すると、ＲＯＭ１４から所定のブートプログラムを読み出して実行し、このブートプログラムに規定されるオペレーティングシステム（以下ＯＳと記す）その他のプログラムをＨＤＤ１５から読み出して実行することにより、起動処理を行う。起動処理以後、電源が遮断されるまで、ＣＰＵ１６は、入力装置１２からの信号、ＯＳによって予め定められたスケジュール等に基づいて、ＨＤＤ１５に記録されている各種プログラムを当該ＯＳ上のプロセスとして実行する。また、上記の起動処理およびプロセスにおいて、ＣＰＵ１６は必要に応じて入力装置１２から信号の入力を受け付け、またディスプレイ１１に映像信号を出力し、またＲＡＭ１３、ＨＤＤ１５に対してデータの読み出し／書き込みの制御を行う。
【００３８】
本実施形態のＣＰＵ１６は、車両制御のためのＥＣＵにおいて実行させるＣソースコードをモデルから生成するための統合開発環境として、後述するプログラム群を実行するようになっている。
【００３９】
以下、ＣＰＵ１６がプログラムを実行することによって行う処理を、そのプログラム自体が行う処理であるとして説明を行う。
【００４０】
図２に、この統合開発環境としてのモデルベース開発プログラム１００の構成を示す。モデルベース開発プログラム１００は、自動コード生成プログラム１１０、モデル情報抽出プログラム１２０、自動テストケース生成プログラム１３０、Ｃソースコード実行プログラム１４０、モデルシミュレーションプログラム１５０、モデルシミュレーション状況解析プログラム１６０、実行結果比較プログラム１７０、および結果表示プログラム１８０のプログラム群から構成される。これらプログラム群は、それぞれユーザの入力装置１２を用いた実行開始の操作に基づいて、その実行が開始される。
【００４１】
自動コード生成プログラム１１０は、ユーザによってよって作成され、ＨＤＤ１５に記憶されているモデル２１０を読み出し、この読み出したモデル２１０の示すデータ入出力処理を実現するための処理が記述されたＣソースコードを生成する。自動コード生成プログラムの例としては、Ｍａｔｈｗｏｒｋｓ（登録商標）社のＲｅａｌ Ｔｉｍｅ Ｗｏｒｋｓｈｏｐ（登録商標）がある。なお、モデルは、モデルエディタ等のモデル作成用プログラムをＣＰＵ１６が実行し、その実行時にユーザがモデル作成のための作業を入力装置１２を用いて行うことで、作成されるようなっていてもよい。このようなモデルエディタもモデルベース開発プログラム１００に含まれていてもよい。
【００４２】
ここで、モデルについて説明する。モデルは、時系列の中でのデータ演算、データ入力およびデータ出力のうち少なくともいずれか１つの機能を表すブロック、およびブロック間の入出力関係を示す結線の組み合わせとして記述される。モデルの例としては、Ｍａｔｈｗｏｒｋｓ（登録商標）社のＳｉｍｕｌｉｎｋ（登録商標）モデルがある。
【００４３】
図３に、モデルの一例を図示する。図２中の図形３１〜４２がブロックを表し、これらブロック間を繋ぐ矢印線が結線を表す。
【００４４】
入力ブロック３１、３２は、外部からのデータの入力を受け、その受けたデータを結線の後段（矢印側）に出力する機能を表す。定数ブロック３３〜３６は、時間的に変化しない定数を結線の後段に出力する機能を表す。定数の具体的な値は、定数ブロック毎に開発者が設定することができる。２項加算ブロック３７は、２つの結線を介して受けたデータを加算して結線の後段に出力する機能を表す。遅延ブロック３８は、結線を介して受けたデータを所定時間分遅延させて結線の後段に出力する機能を表す。
【００４５】
スイッチブロック３９、４０は、結線を介して受けた条件入力のデータの値が１であるかそれ以外であるかに応じて、他の２つの結線を介して受けた２つの選択入力データのうちいずれかを結線の後段に出力する機能を表す。図３中においては、スイッチブロック３９、４０への入力の結線のうち、中段の結線が条件入力を示し、上段および下段の結線が選択入力を示している。
【００４６】
比較ブロック４１は、結線を介して受けた２つの入力データを比較し、第１の入力データが第２のデータよりも大きければ値が１のデータを、そうでなければ値がゼロのデータを、結線の後段に出力する機能を表す。
【００４７】
出力ブロック４２は、結線を介して受けたデータを外部に出力する機能を有する。
【００４８】
このようなブロック３１〜４２および結線の組み合わせから成る図３のモデルにおいては、入力ブロック３１へ外部から入力されたデータの値が１以外であり続ける限り、スイッチブロック３９からは、遅延ブロック３８による遅延時間毎に１だけ増える値が出力され、その出力が１０００未満ならば、定数ブロック３５０の出力である７６０の値が外部に出力され、１０００以上ならば、入力ブロック３２へ外部から入力された値が外部に出力される。また、入力ブロック３１へ外部から入力されたデータの値が１の場合、スイッチブロック３９の出力はゼロにリセットされる。
【００４９】
このように、モデルは、複数のブロックが結線によって繋ぎ合わされることで構成され、その繋ぎ合わせの構造によって、外部とのデータ入出力を表現するようになっている。
【００５０】
なお、本実施形態においては、モデルは、各ブロックへの入力データの許容最大値、許容最小値、および精度の情報を所定の形式で埋め込むことができるようになっている。例えば、上記のモデルエディタによって、入力装置１２を用いて各ブロックの付加情報を入力することができるようになっていてもよい。この場合、所定の形式とは、付加情報中の所定の項目として記憶されることをいう。なお、この情報は、自動コード生成プログラム１１０によって生成されるＣソースコードの表す処理内容には反映されない。
【００５１】
図４に、自動コード生成プログラム１１０が図３に示したモデルに基づいて生成したＣソースコードを示す。このＣソースコードにおいては、入力ブロック３１、３２がそれぞれ変数Ｉｎ１、Ｉｎ２として表現され、出力ブロック４２が変数Ｏｕｔとして表現され、スイッチブロック３９の機能がｉｆブロック４５によって表現され、スイッチブロック４０、比較ブロック４１、出力ブロック４２の機能がｉｆブロック４６によって表現されている。
【００５２】
モデル情報抽出プログラム１２０は、自動コード生成プログラム１１０によって生成されたＣソースコードの元となるモデル２１０をＨＤＤ１５から読み出し、その読み出したモデルの各ブロックに埋め込まれた入力データの許容最大値、許容最小値、および精度の情報を読み出し、その読み出したデータを自動テストケース生成プログラム１３０に渡す。
【００５３】
なお、本実施形態において、あるプログラムが他のプログラムにデータを渡すとは、渡し元のプログラムがＨＤＤ１５またはＲＡＭ１３中に、渡し先のプログラムが読み出すことになっている所定の形式（格納領域、ファイル名）で、当該データを記憶させることをいう。
【００５４】
自動テストケース生成プログラム１３０は、モデルシミュレーション状況解析プログラム１６０およびモデル情報抽出プログラム１２０から渡されたデータ、および自動コード生成プログラム１１０によって生成されたＣソースコードに基づいて、テストケース２３０を生成し、ＨＤＤ１５に記憶させる。テストケースとは、モデル、および自動コード生成プログラム１１０によって当該モデルから生成されたＣソースコードの品質を検査するための処理（例えばカバレッジテスト）の実行において、その品質検査が十分となるよう、当該モデルやソースコードに入力するテスト用データである。品質検査が十分となるようなテストケースとは、例えば、できる限りそのモデルの全てのブロックまたはＣソースコードの全ての命令文が実行されるようなバラエティを持った入力データである。なお、品質検査は、生成されたＣソースコード全体について行う場合と、そのＣソースコードに含まれる関数等の所定の実行単位部分毎に独立に行われる場合がある。ここでいう入力データとは、品質検査が行われる対象の部分に入力されるデータをいう。この自動テストケース生成プログラム１３０の処理の詳細については後述する。なお、モデルの一部も、ブロックと結線の組み合わせとなっているので、モデルであるということができる
Ｃソースコード実行プログラム１４０は、自動コード生成プログラム１１０によって生成されたＣソースコードの実行単位に記載された処理内容を実行する。この実行の目的の１つは、上記の品質検査である。そして、その実行の際、入力データは自動テストケース生成プログラム１３０によって生成されたテストケース２３０を用いる。そしてＣソースコード実行プログラム１４０は、実行したＣソースコードの実行単位による出力データ、および実行した命令文の時系列的なリストを、実行結果データ２４０として、ＨＤＤ１５に記憶させる。
【００５５】
モデルシミュレーションプログラム１５０は、自動コード生成プログラム１１０によって生成されたＣソースコードの元となるモデル２１０をＨＤＤ１５から読み出し、そのモデルのシミュレーションを実行する。シミュレーションとは、そのモデルの表現するデータの入出力の時間変化をパーソナルコンピュータ１上で再現する処理をいう。なお、モデルのシミュレーションにおいても、モデル全体ではなく、その実行単位毎にシミュレーションを行ってもよい。
【００５６】
なお、Ｃソースコード実行プログラム１４０で実行するソースコードの実行単位は、モデルシミュレーションプログラム１５０で実行するモデルの実行単位部分から生成されるソースコードである。すなわち、Ｃソースコード実行プログラム１４０で実行されるＣソースコードの実行単位と、モデルシミュレーションプログラム１５０で実行されるモデルの実行単位とは対応している。
【００５７】
このシミュレーションにおいて、外部からのデータの入力としては、自動テストケース生成プログラム１３０によって生成されたテストケース２３０用いる。そしてモデルシミュレーションプログラム１５０は、そのモデルのシミュレーションによる外部への出力データ、ならびに各ブロック毎の実行時間および入出力データを、実行結果データ２４０として、ＨＤＤ１５に記憶させ、さらにモデルシミュレーション状況解析プログラム１６０に渡す。なお、スイッチブロック等については、選択入力のうちどちらを出力したかの情報も実行結果データ２４０に含める。
【００５８】
モデルシミュレーション状況解析プログラム１６０は、モデルシミュレーションプログラム１５０から渡された実行結果データを解析し、自動コード生成プログラム１１０によって生成されたＣソースコードの妥当性、すなわちモデルベース開発プログラム１００の処理の妥当性を判断し、さらに、テストケース生成用データを生成し、それを自動テストケース生成プログラム１３０に渡す。このモデルシミュレーション状況解析プログラム１６０の処理の詳細については後述する。
【００５９】
実行結果比較プログラム１７０は、Ｃソースコード実行プログラム１４０およびモデルシミュレーションプログラム１５０によってＨＤＤ１５に記憶された実行結果データ２４０を読み出し、その実行結果を比較し、その比較結果を結果表示プログラム１８０に渡す。なお、比較とは、モデルシミュレーションプログラム１５０がシミュレーションを行ったモデルと、自動コード生成プログラム１１０がそのモデルに基づいて生成したＣソースコードの、それぞれの実行結果のデータの比較をいう。比較項目としては、同じ入力データに対してそれぞれのモデル、Ｃソースコードが出力したデータがある。そして実行結果比較プログラム１７０は、比較の結果、それぞれが合致しているか否かの合否判定を行い、その合否判定の情報も結果表示プログラム１８０に渡す。
【００６０】
結果表示プログラム１８０は、実行結果比較プログラム１７０およびモデルシミュレーション状況解析プログラム１６０から渡されたデータをディスプレイ１１に出力する。
【００６１】
次に、上述のモデルシミュレーション状況解析プログラム１６０の具体的な処理について説明する。図５に、このモデルシミュレーション状況解析プログラム１６０のフローチャートを示す。モデルシミュレーション状況解析プログラム１６０は、まずステップ６０５で、モデルシミュレーションプログラム１５０によって渡された実行結果データを読み出す。
【００６２】
続いてステップ６１０で、この実行結果のデータに基づいて、当該モデルのうち、実行されなかった部分を抽出する。実行されなかった部分とは、実行時間がゼロのブロック、および、スイッチブロックにおいて全く出力されなかった選択入力の部分をいう。
【００６３】
続いてステップ６２０で、ステップ６１０で抽出した、スイッチブロックにおいて全く出力されなかった選択入力の部分のうち、その部分を有するスイッチブロックの条件入力データが定数となっているものを、抽出した部分のグループから除外する。なお、当該部分を有するスイッチブロックの条件入力に結線を介して出力しているものが定数ブロックの場合にのみ、当該部分を除外するようになっていてもよい。
【００６４】
このように、実行されなかった部分を抽出し、さらにそのうち、条件入力データが定数となっているスイッチブロックに含まれる部分を除外することで、結果として、ソースコードの生成が妥当でないと推定される部分が抽出される。
【００６５】
これは、自動テストケース生成プログラム１３０によって生成されたテストケースは、当該Ｃソースコードの全ての分岐をできる限り実行するようなバリエーションを有しているはずであり、そのようなテストケースをモデルに入力したにもかかわらず、実行されなかった部分があるということは、自動コード生成プログラム１１０の当該モデル部分の処理に妥当でない部分があった可能性が高いという推定に基づくものである。なお、条件入力データが定数となっている部分について除外するのは、元々モデル中のスイッチブロックへの条件入力データが定数ならば、自動コード生成プログラム１１０の処理が妥当であっても、入力するテストケースの値に関わらずそのスイッチブロックの一方の選択入力は出力されないからである。
【００６６】
続いてステップ６３０で、ステップ６１０、６２０の処理により抽出された、Ｃソースコードの生成が妥当でないと推定される部分が１つでもあるか否かを判定し、あれば、Ｃソースコードの生成が妥当でない旨の表示用のデータを結果表示プログラム１８０に渡す。
【００６７】
続いてステップ６４０で、ステップ６０５で読み出した実行結果データのうち、各ブロックの入出力データの情報を、シミュレーション状況解析結果として、自動テストケース生成プログラム１３０に渡す。
【００６８】
ステップ６４０の後、モデルシミュレーション状況解析プログラム１６０の処理は終了する。
【００６９】
続いて、自動テストケース生成プログラム１３０の処理の詳細について説明する。自動テストケース生成プログラム１３０は、まずステップ４０５で、今回テストケースを生成する対象となる実行単位部分のＣソースコード２２０をＨＤＤ１５から読み出す。
【００７０】
続いてステップ４１０で、読み出したＣソースコードの解析を行う。具体的には、Ｃソースコードに外部から（関数の引数等によって）入力することができる入力データの数、型等を特定し、また、Ｃソースコード中、どのような変数の条件でｉｆ文等の分岐が行われ、その条件の変数は、入力データによってどのように変化するか等の特定を行う。
【００７１】
続いてステップ４２０では、モデル情報抽出プログラム１２０によって渡されたモデル情報、すなわち、当該Ｃソースコードに相当するモデル実行単位への入力データの許容最大値、許容最小値、および精度の情報を読み出す。
【００７２】
続いてステップ４３０では、モデル実行状況解析結果を取得する。具体的には、モデルシミュレーション状況解析プログラム１６０のステップ６４０によって渡された各ブロックの入出力データの情報を読み出す。
【００７３】
続いてステップ４４０では、ステップ４１０の解析結果に加え、これらモデル情報およびモデル実行状況解析結果に基づいて、テストケースを生成する。具体的には、まず、ステップ４１０の解析結果のみに基づいて、Ｃソースコード中の条件分岐先ができるだけ多く実行されるような入力データの値の群を特定する。
【００７４】
そして、次に、ステップ４２０で取得したモデル情報に基づいて、上記特定した入力データの値の群が、当該入力データについてのモデル情報中の許容最大値より大きいものを有している場合、その許容最大値より大きい値を、許容最大値より小さい値に変更する。また、上記特定した入力データ群の値が、当該入力データについてのモデル情報中の許容最小値より小さいものを有している場合、その許容最小値より小さい値を、許容最小値より大きい値に変更する。ただし、上記の変更を行う際には、この変更によって実行されなくなる条件分岐先が最も少なくなるように変更する。
【００７５】
また、ある入力について、分岐先が切り替わる境目となる値が判っている場合、その境界値から、モデル情報中の精度と同じ値だけ上下に変化させた値を入力データに加える。例えば、ある入力データの値が０．５を超えると、Ｃソースコード中のある条件分岐において一方の分岐先が実行され、その値が０．５以下だと、他方の分岐先が実行されるような場合において、その入力データについての精度情報が０．１の値を有していれば、その入力データのテストケースとして、０．４９および０．５１を含めるようにする。
【００７６】
また更に、モデル情報中に許容最大値または許容最小値の情報が含まれていない入力データについては、モデル実行状況解析結果を用いて、入力データの値の変更を行う。具体的には、ステップ４３０で取得した、各ブロックへの入力データのうち、当該Ｃソースコードに相当するモデル実行単位への入力データを特定し、その入力データの上限値および下限値を特定する。なお、モデル実行状況解析結果をテストケース生成に用いるか否かは、ユーザによる設定またはＣＰＵ１６で実行される他のプログラムの設定によって、切り替え可能となっている。
【００７７】
そして、Ｃソースコードの解析結果に基づいて特定した入力データの値の群が、この特定した最大値より大きいものを有している場合、その最大値より大きい値を、その最大値より小さい値に変更する。また、Ｃソースコードの解析結果に基づいて特定した入力データ群の値が、この特定した最小値より小さいものを有している場合、その最小値より小さい値を、その最小値より大きい値に変更する。ただし、この変更を行う際には、この変更によって実行されなくなる条件分岐先が最も少なくなるように変更する。
【００７８】
続いてステップ４５０では、この生成したテストケース２３０をＨＤＤ１５に記憶させる。ステップ４５０の後、自動テストケース生成プログラム１３０の処理は終了する。
【００７９】
次に、図７に、結果表示プログラム１８０がディスプレイ１１に行わせる結果表示の一例を示す。
【００８０】
この表示は、比較結果表示部５１および妥当性診断部５２から成る。比較結果表示部５１は、実行結果比較プログラム１７０から渡された表示用のデータを表形式で表したものである。各行は、モデルおよびＣソースコードへの入力値（Ｉｎ１，Ｉｎ２）、モデルの出力値、Ｃソースコードの出力値、これら２つの出力値の差、およびそれぞれが合致しているか否かの合否判定の項目を、この順に含んでいる。
【００８１】
妥当性診断部５２は、モデルシミュレーション状況解析プログラム１６０から渡された表示用のデータを表したものであり、それがＣソースコードの生成処理が妥当である旨のデータであれば、図７のように“ＯＫ”の表示が為され、Ｃソースコードの生成処理が非妥当である旨のデータであれば、“ＮＧ”の表示が為される。
【００８２】
以上のようなモデルベース開発プログラム１００のプログラム群の使用手順は以下説明する。なお、以下の手順によるプログラム群の実行は、ユーザが入力装置１２を用いて手動で行ってもよいし、その手順によるプログラム群の実行を実現するようあらかじめＨＤＤ１５に記憶されたプログラムをＣＰＵ１６が実行するようになっていてもよい。使用手順は、以下の手順（１）〜手順（１２）の通りである。
手順（１）：自動コード生成プログラム１１０に、モデル２１０からＣソースコード２２０を生成させる。
手順（２）：モデル情報抽出プログラム１２０に、そのモデル２１０のモデル情報を抽出させる。
手順（３）：自動テストケース生成プログラム１３０に、Ｃソースコード２２０およびモデル情報抽出プログラム１２０の出力に基づき、Ｃソースコード２２０全体に対するテストケース２３０を生成させる。このとき、モデルシミュレーション状況解析プログラム１６０の結果は用いないように設定する。
手順（４）：モデルシミュレーションプログラム１５０に、このモデル２１０全体のシミュレーションを行わせる。
手順（５）：モデルシミュレーション状況解析プログラム１６０に、モデル２１０のシミュレーション結果を対象とするシミュレーション状況解析（ステップ６０５〜６４０に相当する）を行わせ、モデル２１０の各ブロックにおける入出力データ情報をＨＤＤ１５に記憶させる。
手順（６）：自動テストケース生成プログラム１３０に、Ｃソースコード２２０、モデル情報抽出プログラム１２０の出力、モデルシミュレーション状況解析プログラム１６０の出力に基づいて、Ｃソースコード２２０中の一実行単位（例えば１つの関数）に対するテストケース２３０’を生成させる。
手順（７）：Ｃソースコード実行プログラム１４０に、直前の手順（６）によって生成されたテストケース２３０’を入力として、上記のＣソースコード２２０の一実行単位を実行させる。
手順（８）：モデルシミュレーションプログラム１５０に、この一実行単位に対応するモデル２１０中の一実行単位のシミュレーションを行わせる。
手順（９）：モデルシミュレーション状況解析プログラム１６０に、モデル２１０の上記一実行単位のシミュレーション結果を対象とするシミュレーション状況解析を行わせ、モデル２１０の上記一実行単位中の各ブロックにおける入出力データ情報をＨＤＤ１５に記憶させる。
手順（１０）：モデルシミュレーション状況解析プログラム１６０に、モデル２１０の上記一実行単位のシミュレーション結果を対象とするシミュレーション状況解析を行わせ、モデル２１０の上記一実行単位各ブロックにおける入出力データ情報をＨＤＤ１５に記憶させる。
手順（１１）：実行結果比較プログラム１７０に、直前のＣソースコード実行プログラム１４０とモデルシミュレーションプログラム１５０についての実行結果データ２４０の比較を行わせる。
手順（１２）：結果表示プログラム１８０に、直前のモデルシミュレーション状況解析プログラム１６０および実行結果比較プログラム１７０の実行によって渡されたデータの表示を行わせる。
【００８３】
なお、上記の手順（６）〜手順（９）は、必要に応じて複数回繰り返してもよい。複数回としては、例えば予め決められた定数（例えば５）に基づく値であってもよいし、直前の繰り返しと今回の繰り返しで生成されたテストケースを比較し、その違いが所定の基準以下となったときの階数であってもよい。
【００８４】
以上のように、モデルベース開発プログラム１００のプログラム群をＣＰＵ１６が実行することで、パーソナルコンピュータ１は、モデルに基づいて生成されたソースコードを読み出し（図６のステップ４０５参照）、また、そのモデルに含まれるそのモデルへの入力データの許容上限値、許容下限値、および精度の情報を読み出し（ステップ４２０参照）、また、モデルのシミュレーション状況解析結果を読み出し（ステップ４３０参照）、読み出したソースコードの処理内容、入力データの情報、およびシミュレーション状況解析結果に基づいて、そのソースコードのテストケースを生成する（ステップ４４０参照）。
【００８５】
このようになっていることで、テストケースは、ソースコードの内容に加え、そのソースコードの元となったモデル中に含まれる、そのモデルへの入力データの情報、および、そのソースコードの元となったモデルのシミュレーション状況解析結果に基づいて生成されるので、よりモデル開発者の意図を反映したものとなっている。
【００８６】
なお、上記実施形態では、ソースコードの内容に加え、モデルへの入力データの情報に基づきテストケースを生成しているが、入力データの情報に限るものでなく、図３の各ブロックに含まれる情報や、ブロック同士を繋ぐ結線の情報等に基づきテストケースを生成することも考えられる。
【００８７】
また、対象となるモデルが、前段にあるモデルの処理結果の出力を入力として受けるようになっている場合は、シミュレーション状況解析結果として、その前段のモデルの当該出力データの情報を読み出し、その出力データの情報に基づいて、ソースコードのテストケースを生成するようになっている。
【００８８】
また、パーソナルコンピュータ１は、自動テストケース生成プログラム１３０によって生成されたテストケースをモデルへの入力として行われたシミュレーションの結果を読み出し（図５のステップ６０５参照）、その読み出した結果に基づいて、そのソースコード生成の妥当、非妥当の表示用の情報を記憶媒体に記憶させることで、結果表示プログラム１８０に渡すようになっている。
【００８９】
なお、上記の実施形態においては、モデルシミュレーション状況解析プログラム１６０は、妥当、非妥当の情報を結果表示プログラム１８０に出力するようになっているが、必ずしもこのようになっていなくともよい。例えば、モデルシミュレーション状況解析プログラム１６０をＣＰＵ１６が実行することで、パーソナルコンピュータ１は、読み出されたモデルのシミュレーションの結果に基づいて、そのモデル中の、自動コード生成プログラム１１０の処理が妥当でないと推定される部分を抽出し、その抽出した部分の表示用の情報を記憶媒体に記憶させるようになっていてもよい。これは、例えばステップ６３０で、ステップ６１０およびステップ６２０で抽出された部分を表す表示用のデータを結果表示プログラム１８０に渡すようになっていれば実現される。
【００９０】
なお、上記の実施形態において、パーソナルコンピュータ１が、テストケース生成装置、コード生成妥当性診断装置に相当する。
【００９１】
また、自動テストケース生成プログラム１３０が、テストケース生成プログラムに相当する。
【００９２】
また、モデルシミュレーション状況解析プログラム１６０が、コード生成妥当性診断プログラムに相当する。
【００９３】
また、ＣＰＵ１６が、自動テストケース生成プログラム１３０のステップ４０５を実行することで、ソースコード読出手段として機能する。
【００９４】
また、ＣＰＵ１６が、自動テストケース生成プログラム１３０のステップ４２０を実行することで、モデル情報読出手段として機能する。
【００９５】
また、ＣＰＵ１６が、自動テストケース生成プログラム１３０のステップ４３０を実行することで、シミュレーション情報読出手段として機能する。
【００９６】
また、ＣＰＵ１６が、自動テストケース生成プログラム１３０のステップ４１０および４４０を実行することで、生成手段として機能する。
【００９７】
また、ＣＰＵ１６が、モデルシミュレーション状況解析プログラム１６０のステップ６０５を実行することで、モデルシミュレーション結果読出手段として機能する。
【００９８】
また、ＣＰＵ１６が、モデルシミュレーション状況解析プログラム１６０のステップ６１０、６２０、および６３０を実行することで、記憶制御手段として機能する。
【図面の簡単な説明】
【００９９】
【図１】本発明の実施形態に係るパーソナルコンピュータ１のハードウェア構成を示す図である。
【図２】パーソナルコンピュータ１のＣＰＵ１６が実行するモデルベース開発プログラム１００の構成を示す図である。
【図３】モデルの一例を示す図である。
【図４】図３に示したモデルから自動コード生成プログラム１１０によって生成されるＣソースコードのリストを示す図である。
【図５】モデルシミュレーション状況解析プログラム１６０の処理の詳細を示すフローチャートである。
【図６】自動テストケース生成プログラム１３０の処理の詳細を示すフローチャートである。
【図７】結果表示プログラム１８０の処理によるディスプレイ１１の表示内容を示す図である。
【符号の説明】
【０１００】
１…パーソナルコンピュータ、１１…ディスプレイ、１２…入力装置、１３…ＲＡＭ、
１４…ＲＯＭ、１５…ＨＤＤ、１６…ＣＰＵ、３１、３２…入力ブロック、
３３〜３６…定数ブロック、３７…２項加算ブロック、３８…遅延ブロック、
３９、４０…スイッチブロック、４１…比較ブロック、４２…出力ブロック、
４５、４６…ｉｆブロック、５１…比較結果表示部、５２…妥当性診断部、
１００…モデルベース開発プログラム、１１０…自動コード生成プログラム、
１２０…モデル情報抽出プログラム、１３０…自動テストケース生成プログラム、
１４０…Ｃソースコード実行プログラム、
１５０…モデルシミュレーションプログラム、
１６０…モデルシミュレーション状況解析プログラム、
１７０…実行結果比較プログラム、１８０…結果表示プログラム、
２１０…モデル、２２０…Ｃソースコード、２３０…テストケース、
２４０…実行結果データ。
【図１】
2006024006.tif 000003
【図２】
2006024006.tif 000004
【図３】
2006024006.tif 000005
【図４】
2006024006.tif 000006
【図５】
2006024006.tif 000007
【図６】
2006024006.tif 000008
【図７】
2006024006.tif 000009