(57)【要約】【課題】エンジンの制御ソフトウェアの開発において自然言語の仕様とＣ言語のプログラムとＧＵＩベースの制御ロジックとのクロス検証を行うことができ、結果的に当該開発の効率を高めることができるクロス検証装置、クロス検証方法およびクロス検証プログラムを提供することを課題とする。【解決手段】クロス検証装置は、動作仕様、エンジン制御用のＣコードおよびエンジン制御用のＧＵＩロジックを作成し、作成した動作仕様、ＣコードおよびＧＵＩロジックに基づいてアサーションを生成し、生成したアサーションを当該Ｃコードおよび当該ＧＵＩロジックに挿入し、生成したアサーション、アサーションが挿入された後のＣコードおよびアサーションが挿入された後のＧＵＩロジックをＣＮＦへ変換し、作成した動作仕様に基づいて、変換した後のＣコードおよびＧＵＩロジックのクロス検証を行い、その検証結果を表示する。【選択図】図１９
2008276556.tif 000002
【特許請求の範囲】
【請求項１】
所定の言語で仕様を作成する仕様作成手段と、
互いに異なる所定の言語でモデルを作成する複数のモデル作成手段と、
前記仕様作成手段で作成した前記仕様および複数の前記モデル作成手段で作成した複数の前記モデルを所定の言語に変換する言語変換手段と、
前記言語変換手段で言語が変換された後の前記仕様に基づいて、言語が変換された後の各々の前記モデルを、他の前記モデルと対比しながら検証するクロス検証手段と、
前記クロス検証手段での検証結果を出力したり、前記クロス検証手段で反例を生成した場合にはさらに前記反例をテストデータとして出力したりする結果出力手段と、
を備えたことを特徴とするクロス検証装置。
【請求項２】
前記仕様作成手段で作成した前記仕様および複数の前記モデル作成手段で作成した複数の前記モデルに基づいてアサーションを生成するアサーション生成手段と、
前記アサーション生成手段で生成した前記アサーションを、複数の前記モデル作成手段で作成した複数の前記モデルに挿入するアサーション挿入手段と
をさらに備え、
前記言語変換手段は、前記仕様作成手段で作成した前記仕様、前記アサーション挿入手段で前記アサーションが挿入された後の複数の前記モデルおよび前記アサーション生成手段で生成した前記アサーションを前記所定の言語に変換すること
を特徴とする請求項１に記載のクロス検証装置。
【請求項３】
前記言語変換手段は、前記仕様および複数の前記モデルに含まれる変数を論理ゲートを用いて並列的に２進変数へ変換し、２進変数へ変換した後の前記仕様および複数の前記モデルを所定の手法でＣＮＦ（Ｃｏｎｊｎｃｔｉｖｅ  Ｎｏｒｍａｌ  Ｆｏｒｍ）へ変換すること
を特徴とする請求項１または２に記載のクロス検証装置。
【請求項４】
所定の言語で仕様を作成する仕様作成ステップと、
互いに異なる所定の言語でモデルを作成する複数のモデル作成ステップと、
前記仕様作成ステップで作成した前記仕様および複数の前記モデル作成ステップで作成した複数の前記モデルを所定の言語に変換する言語変換ステップと、
前記言語変換ステップで言語が変換された後の前記仕様に基づいて、言語が変換された後の各々の前記モデルを、他の前記モデルと対比しながら検証するクロス検証ステップと、
前記クロス検証ステップでの検証結果を出力したり、前記クロス検証ステップで反例を生成した場合にはさらに前記反例をテストデータとして出力したりする結果出力ステップと、
を含むことを特徴とするクロス検証方法。
【請求項５】
前記仕様作成ステップで作成した前記仕様および複数の前記モデル作成ステップで作成した複数の前記モデルに基づいてアサーションを生成するアサーション生成ステップと、
前記アサーション生成ステップで生成した前記アサーションを、複数の前記モデル作成ステップで作成した複数の前記モデルに挿入するアサーション挿入ステップと
をさらに含み、
前記言語変換ステップは、前記仕様作成ステップで作成した前記仕様、前記アサーション挿入ステップで前記アサーションが挿入された後の複数の前記モデルおよび前記アサーション生成ステップで生成した前記アサーションを前記所定の言語に変換すること
を特徴とする請求項４に記載のクロス検証方法。
【請求項６】
前記言語変換ステップは、前記仕様および複数の前記モデルに含まれる変数を論理ゲートを用いて並列的に２進変数へ変換し、２進変数へ変換した後の前記仕様および複数の前記モデルを所定の手法でＣＮＦ（Ｃｏｎｊｎｃｔｉｖｅ  Ｎｏｒｍａｌ  Ｆｏｒｍ）へ変換すること
を特徴とする請求項４または５に記載のクロス検証方法。
【請求項７】
所定の言語で仕様を作成する仕様作成ステップと、
互いに異なる所定の言語でモデルを作成する複数のモデル作成ステップと、
前記仕様作成ステップで作成した前記仕様および複数の前記モデル作成ステップで作成した複数の前記モデルを所定の言語に変換する言語変換ステップと、
前記言語変換ステップで言語が変換された後の前記仕様に基づいて、言語が変換された後の各々の前記モデルを、他の前記モデルと対比しながら検証するクロス検証ステップと、
前記クロス検証ステップでの検証結果を出力したり、前記クロス検証ステップで反例を生成した場合にはさらに前記反例をテストデータとして出力したりする結果出力ステップと、
を含むクロス検証方法をコンピュータに実行させることを特徴とするクロス検証プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クロス検証装置、クロス検証方法およびクロス検証プログラムに関するものである。
【背景技術】
【０００２】
近年、ＵＭＬ（Ｕｎｉｆｉｅｄ  Ｍｏｄｅｌｉｎｇ  Ｌａｎｇｕａｇｅ）などのモデリング言語によるソフトウェアの設計や検査、テストケースの生成の手法が様々な形で紹介されており、例えばＥｓｔｅｒｅｌ  Ｔｅｃｈｎｏｌｏｇｉｅｓ社のＳＣＡＤＥやカーネギーメロン大学（Ｃａｒｎｅｇｉｅ  Ｍｅｌｌｏｎ  Ｕｎｉｖｅｒｓｉｔｙ）のＣＢＭＣがその代表である。また、このような手法は、ソフトウェアの設計初期段階から導入しなければならない。
【０００３】
しかし、自動車メーカーなどにおいてエンジンの制御ソフトウェアを開発する場合、仕様記述言語を使わず、信頼性が保証されている既存のＣコード（いわゆるレガシコード）を使用して、例えばＭａｔｈｗｏｒｋ社のＭＡＴＬＡＢ（登録商標）のようなＧＵＩベースのツールで、新たなモジュールを開発して既存のモジュールに加えることが多い。また、Ｃ言語で記述されたロジックとＧＵＩベースで設計されたロジックとで、同じモジュールが混在する場合が多い。そのため、既存のＣコードと新たに開発されたＧＵＩベースのロジックとの間に自然言語の検証項目を埋め込んで検証を行うことが望まれていた。つまり、自然言語で記述した仕様書、作成したＣ言語プログラムおよび作成したＧＵＩベースの制御ロジックの間でクロス検証（クロス検査）を行うことが望まれていた。
【０００４】
そこで、ソフトウェアの検証に関する技術として、特許文献１や特許文献２、特許文献３が開示されている。特許文献１には、コミュニケーションプロトコルソフトウェアの開発において、標準仕様記述言語を使って仕様を記述してテストケースを自動生成したり、当該テストケース生成のために標準仕様記述言語を第２の仕様記述言語へ変換したりするシステム等に関する技術が開示されている。特許文献２には、モデル検査プログラムの使用のために、モデル記述言語を翻訳するモデル検査支援装置等に関する技術が開示されている。特許文献３には、多くのモデルを並列動作させるための検証機能を持つ機能検証装置等に関する技術が開示されている。
【０００５】
【特許文献１】特開２００６−１３４２８４号公報
【特許文献２】特開２００７−１１６０５号公報
【特許文献３】特開２００６−１８４２９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来技術では、自然言語の仕様とＣ言語プログラムとの検証や自然言語の仕様と制御ロジックとの検証が個別に支援されているのみなので（従来技術の一例を示す図３８を参照）、エンジンの制御ソフトウェアの開発において依然として上述したクロス検証を実現できないという問題点があった。
【０００７】
本発明は、上記問題点に鑑みてなされたものであって、エンジンの制御ソフトウェアの開発において自然言語の仕様とＣ言語のプログラムとＧＵＩベースの制御ロジックとのクロス検証を行うことができ、結果的に当該開発の効率を高めることができるクロス検証装置、クロス検証方法およびクロス検証プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するために、本発明にかかる請求項１に記載のクロス検証装置は、所定の言語で仕様を作成する仕様作成手段と、互いに異なる所定の言語でモデルを作成する複数のモデル作成手段と、前記仕様作成手段で作成した前記仕様および複数の前記モデル作成手段で作成した複数の前記モデルを所定の言語に変換する言語変換手段と、前記言語変換手段で言語が変換された後の前記仕様に基づいて、言語が変換された後の各々の前記モデルを、他の前記モデルと対比しながら検証するクロス検証手段と、前記クロス検証手段での検証結果を出力したり、前記クロス検証手段で反例を生成した場合にはさらに前記反例をテストデータとして出力したりする結果出力手段と、を備えたことを特徴とする。
【０００９】
本発明にかかる請求項２に記載のクロス検証装置は、請求項１に記載のクロス検証装置において、前記仕様作成手段で作成した前記仕様および複数の前記モデル作成手段で作成した複数の前記モデルに基づいてアサーションを生成するアサーション生成手段と、前記アサーション生成手段で生成した前記アサーションを、複数の前記モデル作成手段で作成した複数の前記モデルに挿入するアサーション挿入手段とをさらに備え、前記言語変換手段は、前記仕様作成手段で作成した前記仕様、前記アサーション挿入手段で前記アサーションが挿入された後の複数の前記モデルおよび前記アサーション生成手段で生成した前記アサーションを前記所定の言語に変換することを特徴とする。
【００１０】
また、本発明にかかる請求項３に記載のクロス検証装置は、請求項１または２に記載のクロス検証装置において、前記言語変換手段は、前記仕様および複数の前記モデルに含まれる変数を論理ゲートを用いて並列的に２進変数へ変換し、２進変数へ変換した後の前記仕様および複数の前記モデルを所定の手法でＣＮＦ（Ｃｏｎｊｎｃｔｉｖｅ  Ｎｏｒｍａｌ  Ｆｏｒｍ）へ変換することを特徴とする。
【００１１】
また、本発明はクロス検証方法に関するものであり、本発明にかかる請求項４に記載のクロス検証方法は、所定の言語で仕様を作成する仕様作成ステップと、互いに異なる所定の言語でモデルを作成する複数のモデル作成ステップと、前記仕様作成ステップで作成した前記仕様および複数の前記モデル作成ステップで作成した複数の前記モデルを所定の言語に変換する言語変換ステップと、前記言語変換ステップで言語が変換された後の前記仕様に基づいて、言語が変換された後の各々の前記モデルを、他の前記モデルと対比しながら検証するクロス検証ステップと、前記クロス検証ステップでの検証結果を出力したり、前記クロス検証ステップで反例を生成した場合にはさらに前記反例をテストデータとして出力したりする結果出力ステップと、を含むことを特徴とする。
【００１２】
また、本発明にかかる請求項５に記載のクロス検証方法は、請求項４に記載のクロス検証方法において、前記仕様作成ステップで作成した前記仕様および複数の前記モデル作成ステップで作成した複数の前記モデルに基づいてアサーションを生成するアサーション生成ステップと、前記アサーション生成ステップで生成した前記アサーションを、複数の前記モデル作成ステップで作成した複数の前記モデルに挿入するアサーション挿入ステップとをさらに含み、前記言語変換ステップは、前記仕様作成ステップで作成した前記仕様、前記アサーション挿入ステップで前記アサーションが挿入された後の複数の前記モデルおよび前記アサーション生成ステップで生成した前記アサーションを前記所定の言語に変換することを特徴とする。
【００１３】
また、本発明にかかる請求項６に記載のクロス検証方法は、請求項４または５に記載のクロス検証方法において、前記言語変換ステップは、前記仕様および複数の前記モデルに含まれる変数を論理ゲートを用いて並列的に２進変数へ変換し、２進変数へ変換した後の前記仕様および複数の前記モデルを所定の手法でＣＮＦ（Ｃｏｎｊｎｃｔｉｖｅ  Ｎｏｒｍａｌ  Ｆｏｒｍ）へ変換することを特徴とする。
【００１４】
また、本発明はクロス検証プログラムに関するものであり、本発明にかかる請求項７に記載のクロス検証プログラムは、所定の言語で仕様を作成する仕様作成ステップと、互いに異なる所定の言語でモデルを作成する複数のモデル作成ステップと、前記仕様作成ステップで作成した前記仕様および複数の前記モデル作成ステップで作成した複数の前記モデルを所定の言語に変換する言語変換ステップと、前記言語変換ステップで言語が変換された後の前記仕様に基づいて、言語が変換された後の各々の前記モデルを、他の前記モデルと対比しながら検証するクロス検証ステップと、前記クロス検証ステップでの検証結果を出力したり、前記クロス検証ステップで反例を生成した場合にはさらに前記反例をテストデータとして出力したりする結果出力ステップと、を含むクロス検証方法をコンピュータに実行させることを特徴とする。
【００１５】
また、本発明にかかるクロス検証プログラムは、請求項７に記載のクロス検証プログラムにおいて、前記仕様作成ステップで作成した前記仕様および複数の前記モデル作成ステップで作成した複数の前記モデルに基づいてアサーションを生成するアサーション生成ステップと、前記アサーション生成ステップで生成した前記アサーションを、複数の前記モデル作成ステップで作成した複数の前記モデルに挿入するアサーション挿入ステップとをさらに含み、前記言語変換ステップは、前記仕様作成ステップで作成した前記仕様、前記アサーション挿入ステップで前記アサーションが挿入された後の複数の前記モデルおよび前記アサーション生成ステップで生成した前記アサーションを前記所定の言語に変換することを特徴とする。
【００１６】
また、本発明にかかるクロス検証プログラムは、前記のいずれか１つに記載のクロス検証プログラムにおいて、前記言語変換ステップは、前記仕様および複数の前記モデルに含まれる変数を論理ゲートを用いて並列的に２進変数へ変換し、２進変数へ変換した後の前記仕様および複数の前記モデルを所定の手法でＣＮＦ（Ｃｏｎｊｎｃｔｉｖｅ  Ｎｏｒｍａｌ  Ｆｏｒｍ）へ変換することを特徴とする。
【００１７】
また、本発明は記録媒体に関するものであり、本発明にかかるコンピュータ読み取り可能な記録媒体は、前記のいずれか１つに記載のクロス検証プログラムを記録したことを特徴とする。
【発明の効果】
【００１８】
本発明にかかるクロス検証装置、クロス検証方法およびクロス検証プログラムによれば、所定の言語で仕様を作成し、互いに異なる所定の言語でモデルを作成し、作成した仕様および作成した複数のモデルを所定の言語に変換し、言語が変換された後の仕様に基づいて、言語が変換された後の各々のモデルを、他のモデルと対比しながら検証し、その検証結果を出力したり、その検証で反例を生成した場合にはさらに反例をテストデータとして出力したりするので、エンジンの制御ソフトウェアの開発において自然言語の仕様とＣ言語のプログラムとＧＵＩベースの制御ロジックとのクロス検証を行うことができ、結果的に当該開発の効率を高めることができるという効果を奏する。換言すると、その過程で異なる言語が使われるエンジン（車両）開発のような環境下でクロス検証を行うことができ、結果的に当該開発の効率を高めることができるという効果を奏する。
【００１９】
また、本発明にかかるクロス検証装置、クロス検証方法およびクロス検証プログラムによれば、作成した仕様および複数のモデルに基づいてアサーションを生成し、生成したアサーションを複数のモデルに挿入し、作成した仕様、アサーションが挿入された後の複数のモデルおよび生成したアサーションを所定の言語に変換するので、エンジンの制御ソフトウェアの開発において仕様の検証を効果的に行うことができるという効果を奏する。
【００２０】
また、本発明にかかるクロス検証装置、クロス検証方法およびクロス検証プログラムによれば、仕様および複数のモデルに含まれる変数を論理ゲートを用いて並列的に２進変数へ変換し、２進変数へ変換した後の仕様および複数のモデルを所定の手法でＣＮＦ（Ｃｏｎｊｎｃｔｉｖｅ  Ｎｏｒｍａｌ  Ｆｏｒｍ）へ変換するので、エンジンの制御ソフトウェアの開発において、当該ソフトウェアのＣＮＦへの変換（具体的には、マップ変数のＣＮＦへの変換（後述する「実施の形態」を参照））を、計算量を減らして効率よく行うことができるという効果を奏する。
【００２１】
また、本発明にかかる記録媒体によれば、コンピュータ読み取り可能なものであり、本発明にかかるクロス検証プログラムを記録するので、当該記録媒体に記録されたクロス検証プログラムをコンピュータに読み取らせて実行させることによって本発明にかかるクロス検証プログラムを、コンピュータを利用して実現することができ、本発明にかかるクロス検証プログラムと同様の効果を得ることができる。
【発明を実施するための最良の形態】
【００２２】
以下に、本発明にかかるクロス検証装置、クロス検証方法、クロス検証プログラムおよび記録媒体の実施の形態を、図面に基づいて詳細に説明する。なお、本実施の形態により本発明が限定されるものではない。
【００２３】
［１．本実施の形態の概要］
まず、本実施の形態の概要について、図１から図４を参照して詳細に説明する。図１から図４は、本実施の形態の概要を示す図である。
【００２４】
本実施の形態は、図１に示すように、例えば日本語で記述した検証仕様に基づいて、例えばＭａｔｈｗｏｒｋ社のＭＡＴＬＡＢ（登録商標）で設計したエンジン制御ロジック（ＭＡＴＬＡＢロジック）と例えばＣ言語で記述したエンジン制御ロジック（Ｃ言語ロジック）との検証を行う。
【００２５】
具体的には、本実施の形態は、互いに同じモジュールが混在するＭＡＴＬＡＢロジックとＣ言語ロジックとを、ＣＮＦに変換した検証仕様（クロス検査項目）に基づいて、同じモジュールに関しては図２に示すようにクロスさせながら同時に検証する。より具体的には、本実施の形態は、仕様マネージャーを用いて、Ｃコードマネージャーで記述したＣコードに対応する検証項目１、ＭＡＴＬＡＢロジックマネージャーで設計したＭＡＴＬＡＢロジックに対応する検証項目２を記述するだけでなく、さらに、当該Ｃコードと当該ＭＡＴＬＡＢロジックとの両方に対応する検証項目３を記述することで、ＣコードとＭＡＴＬＡＢロジックとのクロス検証を実現する。
【００２６】
また、具体的には、本実施の形態は、図４に示すように、動作仕様および互いに異なるロジックに関する複数のプログラム（例えばＣコードで記述されたものとＭａｔｈｗｏｒｋ社のＳｉｍｕｌｉｎｋ（登録商標）で設計されたもの）をクロス検証のためにＣＮＦに変換し、変換した後のものに基づいて動作仕様ベースのブラックボックステスト（カバレージ分析やテストケース生成を含む）とプログラムベースのホワイトボックステストとを同時に並行して行なう。
【００２７】
これにより、エンジンの制御ソフトウェアの開発において自然言語の仕様とＣ言語のプログラムとＧＵＩベースの制御ロジックとのクロス検証を行うことができ、結果的に当該開発の効率を高めることができる。換言すると、その過程で異なる言語が使われるエンジン（車両）開発のような環境下でクロス検証を行うことができ、結果的に当該開発の効率を高めることができる。
【００２８】
［２．本実施の形態の構成］
つぎに、本実施の形態にかかるクロス検証装置１０の構成について、図５から図１８を参照して説明する。図５は、クロス検証装置１０の構成の一例を示すブロック図であり、該構成のうち本発明に関係する部分のみを概念的に示している。
【００２９】
クロス検証装置１０は、仕様マネージャー１２ａと、Ｃコードマネージャー１２ｂと、ＧＵＩロジックマネージャー１２ｃと、仕様ＣＮＦ変換機１４ａと、ＣコードＣＮＦ変換機１４ｂと、ＧＵＩロジックＣＮＦ変換機１４ｃと、ＳＡＴソルバー１６と、ユーザインターフェース１８と、で構成されており、これら各部は任意の通信路を介して通信可能に接続されている。
【００３０】
仕様マネージャー１２ａは、本発明における仕様作成手段に相当するものであり、システムの動作や安全性を記述した仕様の管理や編集を行う。仕様マネージャー１２ａは、仕様を、ＣコードおよびＧＵＩロジックで使われている変数の名前を使用して、自然言語で作成する。ここで、仕様マネージャー１２ａの構成の一例について、図７を参照して説明する。図７は、仕様マネージャー１２ａの構成の一例を示すブロック図である。仕様マネージャー１２ａは、編集機能１２ａ１と、呼び出し機能１２ａ２と、保存機能１２ａ３と、文法検査機能１２ａ４と、で構成されている。編集機能１２ａ１は、仕様の作成や編集を行う。呼び出し機能１２ａ２は、仕様の作成や編集を行う際に使用する変数の名称に関するファイルを呼び出す。保存機能１２ａ３は、仕様を保存する。文法検査機能１２ａ４は、仕様の文法を検査する。
【００３１】
図５に戻り、Ｃコードマネージャー１２ｂは、本発明におけるモデル作成手段に相当するものであり、エンジン制御用Ｃコードの作成や編集、Ｃコード単体のシミュレーションを行う。ここで、Ｃコードマネージャー１２ｂの構成の一例について、図８を参照して説明する。図８は、Ｃコードマネージャー１２ｂの構成の一例を示すブロック図である。Ｃコードマネージャー１２ｂは、編集機能１２ｂ１と、呼び出し機能１２ｂ２と、保存機能１２ｂ３と、文法検査機能１２ｂ４と、コンパイル機能１２ｂ５と、で構成されている。編集機能１２ｂ１は、Ｃコードの作成や編集を行う。呼び出し機能１２ｂ２は、Ｃコードの作成や編集を行う際に使用する変数の名称に関するファイルを呼び出す。保存機能１２ｂ３は、Ｃコードを保存する。文法検査機能１２ｂ４は、Ｃコードの文法を検査する。コンパイル機能１２ｂ５は、Ｃコードをコンパイルする。
【００３２】
図５に戻り、ＧＵＩロジックマネージャー１２ｃは、本発明におけるモデル作成手段に相当するものであり、ＧＵＩベースでのエンジン制御用ロジック（ＧＵＩロジック）の作成や編集、ＧＵＩロジック単体のシミュレーションを行う。ここで、ＧＵＩロジックマネージャー１２ｃの構成の一例について、図９を参照して説明する。図９は、ＧＵＩロジックマネージャー１２ｃの構成の一例を示すブロック図である。ＧＵＩロジックマネージャー１２ｃは、編集機能１２ｃ１と、呼び出し機能１２ｃ２と、保存機能１２ｃ３と、文法検査機能１２ｃ４と、で構成されている。編集機能１２ａ１は、ＧＵＩロジックの作成や編集を行う。呼び出し機能１２ａ２は、ＧＵＩロジックの作成や編集を行う際に使用する変数の名称に関するファイルを呼び出す。保存機能１２ａ３は、ＧＵＩロジックを保存する。文法検査機能１２ａ４は、ＧＵＩロジックの文法を検査する。
【００３３】
図５に戻り、仕様ＣＮＦ変換機１４ａは、本発明における言語変換手段に相当するものであり、仕様マネージャー１２ａで作成した自然言語の仕様をＣＮＦに変換する。ＣコードＣＮＦ変換機１４ｂは、本発明における言語変換手段に相当するものであり、Ｃコードマネージャー１２ｂで作成したＣコードをＣＮＦに変換する。ＧＵＩロジックＣＮＦ変換機１４ｃは、本発明における言語変換手段に相当するものであり、ＧＵＩロジックマネージャー１２ｃで作成したＧＵＩベースのロジックをＣＮＦに変換する。ここで、仕様ＣＮＦ変換機１４ａ、ＣコードＣＮＦ変換機１４ｂおよびＧＵＩロジックＣＮＦ変換機１４ｃで行う処理の具体例について、図１０を参照して説明する。図１０は、仕様ＣＮＦ変換機１４ａ、ＣコードＣＮＦ変換機１４ｂおよびＧＵＩロジックＣＮＦ変換機１４ｃで行う処理の具体例を示す図である。図１０に示すように、仕様ＣＮＦ変換機１４ａは、仕様（Ｃコード、ＧＵＩロジック）に書かれた各単位モジュール毎に、当該モジュールがＣＮＦライブラリとして存在する場合にはそのＣＮＦライブラリで置き換え、ＣＮＦライブラリとして存在しない場合にはＴｓｅｉｔｉｎ手法によりラン−タイムでＣＮＦ変換を行う。ＣＮＦライブラリには、各単位モジュールの最適化されたＣＮＦライブラリを用意している。
【００３４】
図５に戻り、ＳＡＴソルバー１６は、本発明におけるクロス検証手段に相当するものであり、仕様ＣＮＦ変換機１４ａでＣＮＦに変換した後の仕様、ＣコードＣＮＦ変換機１４ｂでＣＮＦに変換した後のＣコードおよびＧＵＩロジックＣＮＦ変換機１４ｃでＣＮＦに変換した後のＧＵＩロジックについて、互いを対比させながら同時に且つ並列的に検証を行う、つまり図２に示すようなクロス検証を行う。ＳＡＴソルバー１６は、性質が成り立つ場合には検証成功のメッセージをユーザインターフェース１８に渡し、性質が成り立たない場合には検証失敗のメッセージをユーザインターフェース１８に渡す。ＳＡＴソルバー１６は、ＣＮＦが１になる２進変数の組み合わせを探し、組み合わせが無い場合には未満足（ＵＮＳＡＴ）のメッセージを出力し、組み合わせが有る場合には満足（ＳＡＴ）のメッセージおよびその組み合わせを出力する。
【００３５】
ユーザインターフェース１８は、本発明における結果出力手段に相当するものであり、仕様マネージャー１２ａ、Ｃコードマネージャー１２ｂ、ＧＵＩロジックマネージャー１２ｃおよびＳＡＴソルバー１６への統合インターフェース環境を提供し、ＳＡＴソルバー１６での検証結果やテストデータを表示する。
【００３６】
ここで、ユーザインターフェース１８の構成の一例について、図１１を参照して説明する。図１１は、ユーザインターフェース１８の構成の一例を示す図である。ユーザインターフェース１８は、仕様編集画面の選択領域１８ａと、Ｃコード編集画面の選択領域１８ｂと、ＧＵＩロジック編集画面の選択領域１８ｃと、ＳＡＴソルバーオプション設定画面の選択領域１８ｄと、クロス検証結果・テストデータ表示画面の選択領域１８ｅと、で構成されている。
【００３７】
仕様編集画面の選択領域１８ａは、図１３に示すような仕様編集画面ＭＡを表示させるためのものである。ここで、仕様編集画面ＭＡの一例について、図１３を参照して説明する。図１３は、仕様編集画面ＭＡの一例を示す図である。仕様編集画面ＭＡは、メニュー表示領域ＭＡ１と、仕様表示・編集領域ＭＡ２と、で構成されている。メニュー表示領域ＭＡ１には、仕様の編集項目に関するメニュー（編集メニュー）が選択可能に表示される。仕様表示・編集領域ＭＡ２には、仕様が編集可能に表示される。
【００３８】
図１１に戻り、Ｃコード編集画面の選択領域１８ｂは、図１４に示すようなＣコード編集画面ＭＢを表示させるためのものである。ここで、Ｃコード編集画面ＭＢの一例について、図１４を参照して説明する。図１４は、Ｃコード編集画面ＭＢの一例を示す図である。Ｃコード編集画面ＭＢは、メニュー表示領域ＭＢ１と、Ｃコード表示・編集領域ＭＢ２と、で構成されている。メニュー表示領域ＭＢ１には、Ｃコードの編集項目に関するメニュー（編集メニュー）およびＣコード単体でのシミュレーションに関するメニューが選択可能に表示される。Ｃコード表示・編集領域ＭＢ２には、Ｃコードが編集可能に表示される。
【００３９】
図１１に戻り、ＧＵＩロジック編集画面の選択領域１８ｃは、図１５に示すようなＧＵＩロジック編集画面ＭＣを表示させるためのものである。ここで、ＧＵＩロジック編集画面ＭＣの一例について、図１５を参照して説明する。図１５は、ＧＵＩロジック編集画面ＭＣの一例を示す図である。ＧＵＩロジック編集画面ＭＣは、メニュー表示領域ＭＣ１と、ＧＵＩロジック表示・編集領域ＭＣ２と、で構成されている。メニュー表示領域ＭＣ１には、ＧＵＩロジックの編集項目に関するメニュー（編集メニュー）およびＧＵＩロジック単体でのシミュレーションに関するメニューが選択可能に表示される。ＧＵＩロジック表示・編集領域ＭＣ２には、ＧＵＩロジックが編集可能に表示される。
【００４０】
図１１に戻り、ＳＡＴソルバーオプション設定画面の選択領域１８ｄは、図１６に示すようなＳＡＴソルバーオプション設定画面ＭＤを表示させるためのものである。ここで、ＳＡＴソルバーオプション設定画面ＭＤの一例について、図１６を参照して説明する。図１６は、ＳＡＴソルバーオプション設定画面ＭＤの一例を示す図である。ＳＡＴソルバーオプション設定画面ＭＤは、ＳＡＴソルバーの種類を選択したり、ループの最大ｉｔｅｒａｔｉｏｎ（繰り返し）数を指定したりするための選択・指定領域ＭＤ１で構成されている。
【００４１】
図１１に戻り、クロス検証結果・テストデータ表示画面の選択領域１８ｅは、図１７に示すようなクロス検証結果・テストデータ表示画面ＭＥを表示させるためのものである。ここで、クロス検証結果・テストデータ表示画面ＭＥの一例について、図１７を参照して説明する。図１７は、クロス検証結果・テストデータ表示画面ＭＥの一例を示す図である。クロス検証結果・テストデータ表示画面ＭＥは、性質の成立可否や、性質が成り立たない場合に生成されたテストデータを表示したり、性質に引っ掛かるＣコードおよびＧＵＩロジックへのトレース（回答部の色反転）を行ったりする表示・トレース領域ＭＥ１で構成されている。
【００４２】
ここで、ユーザインターフェース１８の構成は、図１２に示すようなものでもよい。図１２は、ユーザインターフェース１８の構成の他の一例を示す図である。図１２に示すユーザインターフェース１８は、図１１に示すユーザインターフェース１８に、統合シミュレーション画面の選択領域１８ｆをさらに加えたものである。統合シミュレーション画面の選択領域１８ｆは、図１８に示すような統合シミュレーション画面ＭＦを表示させるためのものである。ここで、統合シミュレーション画面ＭＦの一例について、図１８を参照して説明する。図１８は、統合シミュレーション画面ＭＦの一例を示す図である。統合シミュレーション画面ＭＦは、メニュー表示領域ＭＦ１と、統合シミュレーション結果表示領域ＭＦ２と、で構成されている。メニュー表示領域ＭＦ１には、統合シミュレーションの実行やそれに必要なデータの読み込みに関するメニュー（統合シミュレーションメニュー）が選択可能に表示される。統合シミュレーション結果表示領域ＭＦ２には、統合シミュレーションの結果が図として表示される。
【００４３】
また、クロス検証装置１０の構成は、図６に示すようなものでもよい。図６は、クロス検証装置１０の構成の他の一例を示すブロック図である。図６に示すクロス検証装置１０は、図５に示すクロス検証装置１０に、アサーション生成・挿入部２０を図示の如くさらに加えたものである。図６に示すクロス検証装置１０は、図５に示す仕様ＣＮＦ変換機１４ａとＣコードＣＮＦ変換機１４ｂとＧＵＩロジックＣＮＦ変換機１４ｃとを一体化したＣＮＦ変換機１４を図示の如く備えている。
【００４４】
アサーション生成・挿入部２０は、仕様、ＣコードおよびＧＵＩロジックの検証用のアサーション（ａｓｓｅｒｔｉｏｎ）を生成し、生成したアサーションをＣコードおよびＧＵＩロジックに挿入する。具体的には、アサーション生成・挿入部２０は、仕様を検証するためにアサーションを生成し、生成したアサーションがＣコード（またはＧＵＩロジック）のみの性質の場合には当該アサーションをＣコード（またはＧＵＩロジック）に直接挿入し、当該アサーションが挿入された後のＣコード（またはＧＵＩロジック）をＣＮＦ変換機１４へ伝達すると共に、生成したアサーションがＣコードとＧＵＩロジックの両方に引っ掛かる場合には当該アサーションをＣＮＦ変換機１４へ伝達する。
【００４５】
ＣＮＦ変換機１４は、アサーション生成・挿入部２０で生成したアサーション（ＣコードとＧＵＩロジックの両方に引っ掛かるもの）、アサーションが挿入された後のＣコードおよびアサーションが挿入された後のＧＵＩロジックをＣＮＦに変換する。具体的には、ＣＮＦ変換機１４は、まず、アサーションが挿入された後のＣコードおよび当該アサーションが挿入された後のＧＵＩロジックをＣＮＦに変換し、つぎに、この変換の際に発生する２進変数のＣＮＦエンコーディング情報からアサーションをＣＮＦに変換し、そして、ＣＮＦに変換した後のＣコード、ＧＵＩロジックおよびアサーションをＳＡＴソルバー１６に伝達する。また、ＣＮＦ変換機１４は、ＳＡＴソルバー１６から反例（２進変数）が返された場合、その２進変数をＣＮＦエンコーディング情報に基づいて一般のデータタイプに変換し、変換した後の反例をテストデータとしてユーザインターフェース１８に渡す。ＳＡＴソルバー１６は、性質が成り立たない場合には検証失敗のメッセージをユーザインターフェース１８に渡すと共に、検証の際に生成した反例（２進変数）をＣＮＦ変換機１４に伝達する。
【００４６】
［３．本実施の形態の処理］
つぎに、クロス検証装置１０で実行するクロス検証処理の一例を、図１９を参照して説明する。図１９は、クロス検証装置１０で実行するクロス検証処理の一例を示すフローチャートである。なお、ここでは、本処理を、図６に示すクロス検証装置１０で行う場合について説明する。
【００４７】
まず、クロス検証装置１０は、仕様マネージャー１２ａで、ユーザインターフェース１８を介して、ＣコードやＧＵＩロジックで使われている変数の名前を使って動作仕様を作成（記述）する（ステップＳＡ−１）。また、クロス検証装置１０は、Ｃコードマネージャー１２ｂで、ユーザインターフェース１８を介して、エンジン制御用のＣコードを作成する（ステップＳＡ−２）。また、クロス検証装置１０は、ＧＵＩロジックマネージャー１２ｃで、ユーザインターフェース１８を介して、エンジン制御用のＧＵＩロジックを作成する（ステップＳＡ−３）。
【００４８】
つぎに、クロス検証装置１０は、アサーション生成・挿入部２０で、ステップＳＡ−１で作成した動作仕様、ステップＳＡ−２で作成したＣコードおよびステップＳＡ−３で作成したＧＵＩロジックに基づいて、当該動作仕様を検証するためにアサーションを生成し、生成したアサーションを当該Ｃコードや当該ＧＵＩロジックに挿入する（ステップＳＡ−４：アサーション生成・挿入処理）。
【００４９】
ここで、アサーション生成・挿入部２０で実行するアサーション生成・挿入処理の一例を、図２０から図２６を参照して説明する。図２０は、アサーション生成・挿入部２０で実行するアサーション生成・挿入処理の一例を示す図である。
【００５０】
まず、クロス検証装置１０は、アサーション生成・挿入部２０で、ステップＳＡ−１で作成した動作仕様からアサーションを生成する（ステップＳＢ−１）。また、クロス検証装置１０は、アサーション生成・挿入部２０で、ステップＳＡ−２で作成したＣコードについて当該Ｃコードに含まれる分岐（具体的には、ｉｆ−ｔｈｅｎ−ｅｌｓｅ、Ｓｗｉｔｃｈ、など）を分析（検出）し（ステップＳＢ−２）、分析した分岐ごとに当該分岐に対応するアサーションを生成する（ステップＳＢ−３）。また、クロス検証装置１０は、アサーション生成・挿入部２０で、ステップＳＡ−３で作成したＧＵＩロジックについて当該ＧＵＩロジックに含まれる分岐（具体的には、ｉｆ−ｔｈｅｎ−ｅｌｓｅ、Ｓｗｉｔｃｈ、など）を分析（検出）し（ステップＳＢ−４）、分析した分岐ごとに当該分岐に対応するアサーションを生成する（ステップＳＢ−５）。
【００５１】
つぎに、クロス検証装置１０は、アサーション生成・挿入部２０で、ステップＳＢ−１で生成したアサーションやステップＳＢ−３で生成した分岐ごとのアサーションを、ＣコードやＧＵＩロジックで使われる変数名をその使用場所（ファイル名や行番号）と関連付けて格納した変数ディクショナリーを参照して、ステップＳＡ−２で作成したＣコードに挿入する（ステップＳＢ−６）。また、クロス検証装置１０は、アサーション生成・挿入部２０で、ステップＳＢ−１で生成したアサーションやステップＳＢ−５で生成した分岐ごとのアサーションを、変数ディクショナリーを参照して、ステップＳＡ−３で作成したＧＵＩロジックに挿入する（ステップＳＢ−７）。
【００５２】
ここで、動作仕様からのアサーションの生成および生成したアサーションのＣコードへの挿入（図２０におけるステップＳＢ−１およびステップＳＢ−６に対応）は、具体的には図２１に示すように行う。図２１は、動作仕様からのアサーションの生成および生成したアサーションのＣコードへの挿入の具体例を示す図である。具体的には、クロス検証装置１０は、アサーション生成・挿入部２０で、動作仕様に含まれるＶＶＴ（可変バルブタイミング機構）異常無しコード（ＶＶＴの異常が発生しないことを表すＣコード（「ｓ４ｔ＿ｃａｓｅ  ！＝  ０」：ｓ４ｔ＿ｃａｓｅは、ＶＶＴの異常が発生したか否かを表す変数。））からアサーション（「ａｓｓｅｒｔ（ｓ４ｔ＿ｃａｓｅ）；」）を生成し、生成したアサーションを、変数ディクショナリーを参照して、図示の如く、Ｃコードに含まれるＶＶＴ異常検出コード（ＶＶＴの異常を検出するためのＣコード）の直後に挿入する。
【００５３】
また、ＣコードおよびＧＵＩコードに含まれる分岐の分析（図２０におけるステップＳＢ−２およびステップＳＢ−４に対応）は、具体的には図２２に示すように行う。図２２は、ＣコードおよびＧＵＩコードに含まれる分岐の分析の具体例を示す図である。具体的には、クロス検証装置１０は、アサーション生成・挿入部２０で、図２２に示すＣコードから、分岐条件１および分岐条件２を検出する。
分岐条件１：（ｕ２ｔ＿ｅｍｔｈｗｇｄ）  ＞  （ｕ２ｓ＿ｅｋｍｗ＿ＴＨＷＨ）
分岐条件２：（ｕ２ｔ＿ｅｍｔｈｗｇｄ）  ＜  （ｕ２ｓ＿ｅｋｍｗ＿ＴＨＷＬ）
なお、図２２に示すＣコードにおいて、分岐条件２は、分岐条件１と「ｅｌｓｅ  ｉｆ」で繋がっているため、「｛（ｕ２ｔ＿ｅｍｔｈｗｇｄ）  ＞  （ｕ２ｓ＿ｅｋｍｗ＿ＴＨＷＨ）｝＆＆｛（ｕ２ｔ＿ｅｍｔｈｗｇｄ）  ＜  （ｕ２ｓ＿ｅｋｍｗ＿ＴＨＷＬ）｝」である。
【００５４】
また、分岐条件に合わせたアサーションの生成およびその挿入（図２０におけるステップＳＢ−３およびステップＳＢ−６ならびにステップＳＢ−５およびステップＳＢ−７に対応）は、具体的には図２３に示すように行う。図２３は、分岐条件に合わせたアサーションの生成およびその挿入の具体例を示す図である。具体的には、クロス検証装置１０は、アサーション生成・挿入部２０で、図２２に示す分岐条件１に合わせたアサーション１および図２２に示す分岐条件２に合わせたアサーション２を生成し、生成したアサーション１およびアサーション２を、図２３に示すように、図２２に示すＣコードの前に挿入する。
アサーション１：ａｓｓｅｒｔ（！！（（ｕ２ｔ＿ｅｍｔｈｗｇｄ）  ＞  （ｕ２ｓ＿ｅ
ｋｍｗ＿ＴＨＷＨ）））；
ａｓｓｅｒｔ（！（（ｕ２ｔ＿ｅｍｔｈｗｇｄ）  ＞  （ｕ２ｓ＿ｅｋ
ｍｗ＿ＴＨＷＨ）））；
アサーション２：ａｓｓｅｒｔ（（（ｕ２ｔ＿ｅｍｔｈｗｇｄ）  ＞  （ｕ２ｓ＿ｅｋｍ
ｗ＿ＴＨＷＨ））  ｜｜  ！！（（ｕ２ｔ＿ｅｍｔｈｗｇｄ）  ＜  （
ｕ２ｓ＿ｅｋｍｗ＿ＴＨＷＬ）））；
ａｓｓｅｒｔ（（（ｕ２ｔ＿ｅｍｔｈｗｇｄ）  ＞  （ｕ２ｓ＿ｅｋｍ
ｗ＿ＴＨＷＨ））  ｜｜  ！（（ｕ２ｔ＿ｅｍｔｈｗｇｄ）  ＜  （ｕ
２ｓ＿ｅｋｍｗ＿ＴＨＷＬ）））；
【００５５】
また、分岐条件に合わせたアサーションの生成（図２０におけるステップＳＢ−３およびステップＳＢ−５に対応）は、具体的には図２４に示すように行う。図２４は、分岐条件に合わせたアサーションの生成の具体例を示す図である。具体的には、クロス検証装置１０は、アサーション生成・挿入部２０で、検出した分岐条件から、カバレージとして設定したＭＣ／ＤＣが１００％となるテストパターン（図２４の場合には３つのテストパターン）を求め、求めたテストパターンごとにアサーション（図２４の場合には、「！（Ｃ１＆＆Ｃ２）」、「！（Ｃ１＆＆！Ｃ２）」および「！（！Ｃ１＆＆Ｃ２）」）を生成する。なお、ＭＣ／ＤＣとは、米国連邦航空局のソフト検証基準（ＤＯ−１７８Ｂ）であり、全ての分岐および論理組み合わせについて確認できる最少のテストパターン数のカバー率を表す。
【００５６】
なお、アサーションの挿入（図２０におけるステップＳＢ−６およびステップＳＢ−７に対応）は、具体的には図２５や図２６のように行ってもよい。図２５および図２６は、アサーションの挿入の他の具体例を示す図である。
【００５７】
これにて、アサーション生成・挿入処理の一例の説明を終了する。
【００５８】
図１９に戻り、クロス検証装置１０は、ＣＮＦ変換機１４で、ステップＳＡ−４で生成したアサーション（具体的にはＣコードおよびＧＵＩロジックの両方に引っ掛かるアサーション）、当該アサーションが挿入された後のＣコードおよび当該アサーションが挿入された後のＧＵＩロジックを、ＣＮＦに変換する。（ステップＳＡ−５：ＣＮＦ変換処理）。
【００５９】
ここで、ＣＮＦ変換機１４で実行するＣＮＦ変換処理の一例を、図２７から図３７を参照して説明する。図２７は、ＣＮＦ変換機１４で実行するＣＮＦ変換処理の一例を示す図である。
【００６０】
まず、クロス検証装置１０は、ＣＮＦ変換機１４で、当該ＣＮＦ変換機が備えた２進変数割り当て機により、アサーションが挿入された後のＣコードに含まれる変数およびアサーションが挿入された後のＧＵＩロジックに含まれる変数を２進変数へ変換する（ステップＳＣ−１）。また、クロス検証装置１０は、ＣＮＦ変換機１４で、当該ＣＮＦ変換機が備えた２進変数割り当て機により、ＣコードとＧＵＩロジックの両方に引っ掛かるアサーションに含まれる変数を２進変数へ変換する（ステップＳＣ−２）。
【００６１】
つぎに、クロス検証装置１０は、ＣＮＦ変換機１４で、ステップＳＣ−１で２進変数へ変換した後のＣコードおよびＧＵＩロジックならびにステップＳＣ−２で２進変数へ変換した後のアサーションを、それぞれＣＮＦに変換する（ステップＳＣ−３）。
【００６２】
ここで、図２７に示すステップＳＣ−１からステップＳＣ−３までの処理は、具体的には図２８に示すように行う。図２８は、ＣＮＦ変換機１４で実行するＣＮＦ変換処理の具体例を示す図である。具体的には、クロス検証装置１０は、ＣＮＦ変換機１４で、変数をＮ次元マップにおけるＮ個の軸（第１軸〜第Ｎ軸）と個々に比較し、その比較結果から軸ごとに近接代表点を抽出し、この比較に関するロジックおよびこの抽出に関するロジックをそれぞれＣＮＦへ変換する（ステップＳＤ−１）。より具体的には、クロス検証装置１０は、ＣＮＦ変換機１４で、まず、図２９に示すような論理ゲートを用いて、図３０に示すような２次元マップにおける２つの軸（Ｘ軸およびＹ軸）の代表点（（1ｘ，2ｘ，・・・，Nｘ）および（1ｙ，2ｙ，・・・，Mｙ））と変数（ｘおよびｙ）との大小を比較し、つぎに、その比較結果と２次元マップの軸の代表点とを図３１に示すような論理ゲートで演算する（具体的には、比較結果と代表点との論理ＡＮＤをとり、その結果全ての論理ＯＲをとる）ことで軸ごとに近接代表点（（Lｘ，Hｘ）および（Lｙ，Hｙ））を抽出し、つぎに、この比較に関するロジック（図２９に示すロジック）およびこの抽出に関するロジック（図３１に示すロジック）をＴｓｅｉｔｉｎ手法でＣＮＦへ変換する。なお、図２９は、変数（ｘ）と２次元マップのＸ軸の代表点（1ｘ，2ｘ，・・・，Nｘ）との比較を行う論理ゲートの具体例を示す図である。図３０は、２次元マップの具体例を示す図である。図３１は、近接代表点の抽出を行う論理ゲートの具体例を示す図である。図３１において、Nｘ［ｂ］は、ｘ軸のＮ番目（Ｎは１以上の整数）の代表点におけるｂ番目のビットを表す配列である。
【００６３】
図２８に戻り、クロス検証装置１０は、ＣＮＦ変換機１４で、ステップＳＤ−１での軸の比較結果を用いて補間に必要なマップデータを抽出し、この抽出に関するロジックをＣＮＦへ変換する（ステップＳＤ−２）。より具体的には、クロス検証装置１０は、ＣＮＦ変換機１４で、まず、補間に必要なマップデータを図３２に示すような論理ゲートで演算する（具体的には、軸の比較結果に基づいて用意した図３３に示すような２次元マスクと当該２次元マスクを型としてコピーした図３４に示すような各２次元マップ（11ｚのマップ、12ｚのマップ、21ｚのマップおよび22ｚのマップ；そのサイズはマスクと同じ）とについてセルごとに論理ＡＮＤをとり、その結果全ての論理ＯＲをとり、この論理ＡＮＤおよび論理ＯＲの演算を変数のワードの長さに相当する回数（ワード長さ−１）繰り返す）ことで抽出し、つぎに、この抽出に関するロジック（図３２に示すロジック）をＴｓｅｉｔｉｎ手法でＣＮＦへ変換する。なお、図３２は、マップデータの抽出を行う論理ゲートならびにそれで用いる２次元マスクおよび２次元マップの具体例を示す図である。図３３は、２次元マスクの具体例を示す図である。図３４は、２次元マスクを型としてコピーした４つの２次元マップの具体例を示す図である。
【００６４】
図２８に戻り、クロス検証装置１０は、ＣＮＦ変換機１４で、ステップＳＤ−１で抽出した近接代表点およびステップＳＤ−２ｃで抽出したマップデータに基づいてマップ変数の値を計算することでマップ変数の補間を行い、この補間に関するロジックをＴｓｅｉｔｉｎ手法でＣＮＦへ変換する（ステップＳＤ−３）。より具体的には、クロス検証装置１０は、ＣＮＦ変換機１４で、図３５に示すように、近接代表点Lｘ、Hｘ、LｙおよびHｙならびにマップデータ11ｚ、12ｚ、21ｚおよび22ｚを用いてマップ変数（Lｚ、Hｚおよびｚ）を計算し、この計算に関するロジックをＴｓｅｉｔｉｎ手法でＣＮＦへ変換する。なお、図３５は、補間のロジックの具体例を示す図である。
【００６５】
以上、ＣＮＦ変換処理の具体例について２次元マップの場合を一例として説明したが、論理ゲートを使うことにより１回で並列的に各種の計算を完了することができ、その結果、２進変数の数を効果的に減らすことができる。ここで、２次元マップの場合、２進変数の数Ｓは数式１で示すものとなる。上述した各図における論理ゲートは２つの入力と１つの出力を持ち、１つの論理ゲートが１つの２進変数に対応する。そして、数式１において、一般的にＣｘ、ＣｙおよびＣｚはそれぞれ数千の単位になるので、右辺における左側の小カッコの部分（Ｘ軸、Ｙ軸および補間にかかる２進変数の数）に比べて、右辺における右側の中カッコの部分（並列化のために追加した論理ゲートの数）の比重は無視できる。
【数１】
2008276556.tif 000003
なお、数式１において、ＣｘはＸ軸の１回の比較にかかる２進変数の数であり、ＣｙはＹ軸の１回の比較にかかる２進変数の数であり、Ｃｚは補間にかかる２進変数の数である。また、数式１において、ＮはＸ軸における代表点の数であり、ＭはＹ軸における代表点の数である。また、数式１において、Ｗは変数のワード長さである。
【００６６】
また、Ｎ次元マップの場合、２進変数の数Ｓは数式２で示すものとなる。
【数２】
2008276556.tif 000004
なお、数式２において、Ｃiは番号ｉの軸の１回の比較にかかる２進変数の数であり、Ｃｚは補間にかかる２進変数の数である。また、数式２において、Ｎiは番号ｉの軸における代表点の数で、Ｗは変数のワード長さである。
【００６７】
また、ステップＳＤ−１において、クロス検証装置１０は、ＣＮＦ変換機１４で、図３６上段に示すような論理ゲートを用いて２次元マップの各軸の代表点と変数とを比較し、その比較結果と２次元マップの各軸の代表点とを図３６下段に示すような論理ゲートを用いて演算することで、近接代表点（（Lｘ「ｂ」，Hｘ［ｂ］）および（Lｙ［ｂ］，Hｙ［ｂ］））を抽出してもよい。すなわち、論理ゲートは、多数の入力を同時に受け入れるものでもよい。また、ｂｉｔごとに処理するロジック以外にも、ｌａｔｃｈを使ってｗｏｒｄ単位で処理するロジックを用いてもよい。さらに、変数（ｘ）が２次元マップの代表点のｍｉｎ−ｍａｘの範囲内に入るようにｇｕａｒｄ処理部を含めてもよい。なお、図３６は、変数（ｘ）と２次元マップのＸ軸の代表点（1ｘ，2ｘ，・・・，Nｘ）との比較を行う論理ゲートならびに近接代表点の抽出を行う論理ゲートの他の具体例を示す図である。
【００６８】
また、ステップＳＤ−２において、クロス検証装置１０は、ＣＮＦ変換機１４で、図３７に示すような論理ゲートを用いてマップデータを抽出してもよい。すなわち、論理ゲートは、多数の入力を同時に受け入れるものでもよい。また、ｂｉｔごとに処理するロジック以外にも、ｌａｔｃｈを使ってｗｏｒｄ単位で処理するロジックを用いてもよい。なお、図３７は、マップデータの抽出を行う論理ゲートの他の具体例を示す図である。
【００６９】
これにて、ＣＮＦ変換処理の具体例の説明を終了する。
【００７０】
図２７に戻り、クロス検証装置１０は、ＣＮＦ変換機１４で、ステップＳＣ−３でＣＮＦに変換した後のＣコードおよびＧＵＩコードならびにアサーションを収集し、ＳＡＴソルバー１６に伝達する（ステップＳＣ−４）。
【００７１】
そして、クロス検証装置１０は、ＣＮＦ変換機１４で、ＳＡＴソルバー１６から反例（２進変数）が返された場合には、当該反例を一般変数へ変換し、それをテストデータとしてユーザインターフェース１８に伝達する（ステップＳＣ−５）。
【００７２】
これにて、ＣＮＦ変換処理の一例の説明を終了する。
【００７３】
図１９に戻り、クロス検証装置１０は、ＳＡＴソルバー１６で、ステップＳＡ−５でＣＮＦに変換した後の動作仕様に基づいてＣコードおよびＧＵＩロジックを対比させながら同時且つ並列的に検証し（つまりクロス検証を行ない）、当該検証において性質が成り立つ場合には検証成功のメッセージを検証結果としてユーザインターフェース１８へ伝達し、一方、当該検証において性質が成り立たない場合には検証失敗のメッセージを検証結果としてユーザインターフェース１８へ伝達すると同時に当該検証で生成した反例をＣＮＦ変換機１４へ伝達する（ステップＳＡ−６）。
【００７４】
つぎに、クロス検証装置１０は、ユーザインターフェース１８で、ステップＳＡ−６で伝達した検証結果を表示し、ステップＳＡ−６で反例をＣＮＦ変換機１４へ伝達した場合には、ＣＮＦ変換機１４から伝達された当該反例に対応するテストデータをさらに表示する（ステップＳＡ−７）。
【００７５】
これにて、クロス検証処理の一例の説明を終了する。
【００７６】
［４．本実施の形態のまとめ、およびその他の実施の形態］
以上、詳細に説明したように、本実施の形態にかかるクロス検証装置１０によれば、動作仕様、エンジン制御用のＣコードおよびエンジン制御用のＧＵＩロジックを作成し、作成した動作仕様、ＣコードおよびＧＵＩロジックに基づいてアサーションを生成し、生成したアサーションを当該Ｃコードおよび当該ＧＵＩロジックに挿入し、生成したアサーション、アサーションが挿入された後のＣコードおよびアサーションが挿入された後のＧＵＩロジックをＣＮＦへ変換し、変換した後のアサーション、ＣコードおよびＧＵＩロジックの検証を行い、その検証結果を表示する。これにより、エンジンの制御ソフトウェアの開発において動作仕様とＣコードとＧＵＩロジックとのクロス検証を行うことができ、結果的に当該開発の効率を高めることができる。換言すると、その過程で異なる言語が使われるエンジン（車両）開発のような環境下でクロス検証を行うことができ、結果的に当該開発の効率を高めることができる。また、アサーションを生成・挿入するので、エンジンの制御ソフトウェアの開発において仕様の検証を効果的に行うことができる。
【００７７】
また、本実施の形態にかかるクロス検証装置１０によれば、動作仕様ならびにＣコードおよびＧＵＩロジックに含まれる変数を論理ゲートを用いて並列的に２進変数へ変換し、２進変数へ変換した後の動作仕様ならびにＣコードおよびＧＵＩロジックを例えばＴｓｅｉｔｉｎ手法でＣＮＦへ変換するので、エンジンの制御ソフトウェアの開発において、当該ソフトウェアのＣＮＦへの変換（具体的には、マップ変数のＣＮＦへの変換）を、計算量を減らして効率よく行うことができる。具体的には、マップをＣＮＦに変換する際、通常、上述した補間に必要なデータを抽出して当該補間を行うが、本実施の形態にかかるクロス検証装置１０によれば、従来とは異なり、当該補間を当該マップにおける各軸の代表点の数だけ繰り返さないので、上述した軸の比較や補間に必要な２進変数の数を効果的に減らすことができる。
【００７８】
さらに、本発明は、上述した実施の形態以外にも、特許請求の範囲の書類に記載した技術的思想の範囲内において種々の異なる実施の形態にて実施されてよいものである。例えば、本実施の形態において説明した各処理のうち、自動的に行なわれるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行なわれるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。また、この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種の情報、データベース構成については、特記する場合を除いて任意に変更することができる。
【００７９】
また、クロス検証装置１０の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷等に応じた任意の単位で、機能的または物理的に分散・統合して構成することができる。例えば、各データベースを独立したデータベース装置として独立に構成してもよく、また、処理の一部をＣＧＩ（Ｃｏｍｍｏｎ  Ｇａｔｅｗａｙ  Ｉｎｔｅｒｆａｃｅ）を用いて実現してもよい。
【００８０】
また、図示の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。例えば、クロス検証装置１０に含まれる各装置またはその各部が備える処理機能については、その全部または任意の一部を、ＣＰＵおよび当該ＣＰＵにて解釈実行されるプログラムにて実現することができ、あるいはワイヤードロジックによるハードウェアとして実現することも可能である。なお、プログラムは、後述する記録媒体に記録されており、必要に応じて制御装置に機械的に読み取られる。
【００８１】
また、クロス検証装置１０に含まれる各装置におけるＲＯＭやＨＤなどの記憶装置には、ＯＳと協働してＣＰＵに命令を与え、各種処理を行うためのコンピュータプログラムが記録されている。このコンピュータプログラムは、ＲＡＭ等にロードされることによって実行され、クロス検証装置１０に含まれる各装置の機能をＣＰＵと協働して実現する。また、このコンピュータプログラムは、任意のネットワークを介して接続されたアプリケーションプログラムサーバに記録されてもよく、必要に応じてその全部または一部をダウンロードすることも可能である。
【００８２】
また、このプログラムを、コンピュータ読み取り可能な記録媒体に格納することもできる。ここで、「記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等の任意の「可搬用の物理媒体」や、各種コンピュータシステムに内蔵されるＲＯＭ、ＲＡＭ、ＨＤ等の任意の「固定用の物理媒体」、あるいは、ＬＡＮ、ＷＡＮ、インターネットに代表されるネットワークを介してプログラムを送信する場合の通信回線や搬送波のように、短期にプログラムを保持する「通信媒体」を含むものとする。「プログラム」とは、任意の言語や記述方法にて記述されたデータ処理方法であり、ソースコードやバイナリコード等の形式を問わない。なお、「プログラム」は必ずしも単一的に構成されるものに限られず、複数のモジュールやライブラリとして分散構成されるものや、ＯＳに代表される別個のプログラムと協働してその機能を達成するものをも含む。なお、本実施の形態に示した各装置において記録媒体を読み取るための具体的な構成、読み取り手順、あるいは、読み取り後のインストール手順等については、周知の構成や手順を用いることができる。
【産業上の利用可能性】
【００８３】
以上のように、本発明にかかるクロス検証装置、クロス検証方法およびクロス検証プログラムは、特に自動車製造産業で好適に実施することができ、極めて有用である。
【図面の簡単な説明】
【００８４】
【図１】本実施の形態の概要を示す図である。
【図２】本実施の形態の概要を示す図である。
【図３】本実施の形態の概要を示す図である。
【図４】本実施の形態の概要を示す図である。
【図５】クロス検証装置１０の構成の一例を示すブロック図である。
【図６】クロス検証装置１０の構成の他の一例を示すブロック図である。
【図７】仕様マネージャー１２ａの構成の一例を示すブロック図である。
【図８】Ｃコードマネージャー１２ｂの構成の一例を示すブロック図である。
【図９】ＧＵＩロジックマネージャー１２ｃの構成の一例を示すブロック図である。
【図１０】仕様ＣＮＦ変換機１４ａ、ＣコードＣＮＦ変換機１４ｂおよびＧＵＩロジックＣＮＦ変換機１４ｃで行う処理の具体例を示す図である。
【図１１】ユーザインターフェース１８の構成の一例を示す図である。
【図１２】ユーザインターフェース１８の構成の他の一例を示す図である。
【図１３】仕様編集画面ＭＡの一例を示す図である。
【図１４】Ｃコード編集画面ＭＢの一例を示す図である。
【図１５】ＧＵＩロジック編集画面ＭＣの一例を示す図である。
【図１６】ＳＡＴソルバーオプション設定画面ＭＤの一例を示す図である。
【図１７】クロス検証結果・テストデータ表示画面ＭＥの一例を示す図である。
【図１８】統合シミュレーション画面ＭＦの一例を示す図である。
【図１９】クロス検証装置１０で実行するクロス検証処理の一例を示すフローチャートである。
【図２０】アサーション生成・挿入部２０で実行するアサーション生成・挿入処理の一例を示す図である。
【図２１】動作仕様からのアサーションの生成および生成したアサーションのＣコードへの挿入の具体例を示す図である。
【図２２】ＣコードおよびＧＵＩコードに含まれる分岐の分析の具体例を示す図である。
【図２３】分岐条件に合わせたアサーションの生成およびその挿入の具体例を示す図である。
【図２４】分岐条件に合わせたアサーションの生成の具体例を示す図である。
【図２５】アサーションの挿入の他の具体例を示す図である。
【図２６】アサーションの挿入の他の具体例を示す図である。
【図２７】ＣＮＦ変換機１４で実行するＣＮＦ変換処理の一例を示す図である。
【図２８】ＣＮＦ変換機１４で実行するＣＮＦ変換処理の具体例を示す図である。
【図２９】変数と２次元マップのＸ軸の代表点との比較を行う論理ゲートの具体例を示す図である。
【図３０】２次元マップの具体例を示す図である。
【図３１】近接代表点の抽出を行う論理ゲートの具体例を示す図である。
【図３２】マップデータの抽出を行う論理ゲートならびにそれで用いる２次元マスクおよび２次元マップの具体例を示す図である。
【図３３】２次元マスクの具体例を示す図である。
【図３４】２次元マスクを型としてコピーした４つの２次元マップの具体例を示す図である。
【図３５】補間のロジックの具体例を示す図である。
【図３６】変数と２次元マップのＸ軸の代表点との比較を行う論理ゲートならびに近接代表点の抽出を行う論理ゲートの他の具体例を示す図である。
【図３７】マップデータの抽出を行う論理ゲートの他の具体例を示す図である。
【図３８】従来技術の一例を示す図である。
【符号の説明】
【００８５】
１０  クロス検証装置
１２ａ  仕様マネージャー
１２ｂ  Ｃコードマネージャー
１２ｃ  ＧＵＩロジックマネージャー
１４    ＣＮＦ変換機
１４ａ  仕様ＣＮＦ変換機
１４ｂ  ＣコードＣＮＦ変換機
１４ｃ  ＧＵＩロジックＣＮＦ変換機
１６    ＳＡＴソルバー
１８    ユーザインターフェース
２０    アサーション生成・挿入部
【図１】
2008276556.tif 000005
【図２】
2008276556.tif 000006
【図３】
2008276556.tif 000007
【図４】
2008276556.tif 000008
【図５】
2008276556.tif 000009
【図６】
2008276556.tif 000010
【図７】
2008276556.tif 000011
【図８】
2008276556.tif 000012
【図９】
2008276556.tif 000013
【図１０】
2008276556.tif 000014
【図１１】
2008276556.tif 000015
【図１２】
2008276556.tif 000016
【図１３】
2008276556.tif 000017
【図１４】
2008276556.tif 000018
【図１５】
2008276556.tif 000019
【図１６】
2008276556.tif 000020
【図１７】
2008276556.tif 000021
【図１８】
2008276556.tif 000022
【図１９】
2008276556.tif 000023
【図２０】
2008276556.tif 000024
【図２１】
2008276556.tif 000025
【図２２】
2008276556.tif 000026
【図２３】
2008276556.tif 000027
【図２４】
2008276556.tif 000028
【図２５】
2008276556.tif 000029
【図２６】
2008276556.tif 000030
【図２７】
2008276556.tif 000031
【図２８】
2008276556.tif 000032
【図２９】
2008276556.tif 000033
【図３０】
2008276556.tif 000034
【図３１】
2008276556.tif 000035
【図３２】
2008276556.tif 000036
【図３３】
2008276556.tif 000037
【図３４】
2008276556.tif 000038
【図３５】
2008276556.tif 000039
【図３６】
2008276556.tif 000040
【図３７】
2008276556.tif 000041
【図３８】
2008276556.tif 000042