(57)【要約】【課題】実装モデルの誤りを効率的かつ適切に検出することを課題とする。【解決手段】仕様モデルの入力変数に所定の試験値を代入することで仕様モデルを実行し、実装モデルの入力変数に試験値を代入することで実装モデルを実行する。また、仕様モデルの入力変数ごとに、入力変数に試験値が代入されてから出力変数に結果の値が代入されるまでの間に行われた読出し処理および書込み処理の構造を解析する。また、実装モデルの入力変数ごとに、入力変数に試験値が代入されてから出力変数に結果の値が代入されるまでの間に行われた読出し処理および書込み処理の構造を解析する。また、仕様モデルの出力変数の値と実装モデルの出力変数の値とを比較し、二つの値が異なる場合に両モデルの構造を比較し、仕様モデルと実装モデルとの間に存在する相違点を検出する。【選択図】        図１
2010003008.tif 000002
【特許請求の範囲】
【請求項１】
入力変数と当該入力変数に代入された値に応じて行われる処理と当該処理の結果の値が代入される出力変数との関係が自然言語にて規定された仕様が、所定の人工言語にて記述され、仕様モデルとして仕様モデル記憶部に記憶されている場合に、当該仕様モデル記憶部から当該仕様モデルを読み出し、当該仕様モデルの入力変数に所定の試験値を代入することで当該仕様モデルを実行する仕様モデル実行手順と、
前記仕様が実装用の人工言語にて記述され、実装モデルとして実装モデル記憶部に記憶されている場合に、当該実装モデル記憶部から当該実装モデルを読み出し、当該実装モデルの入力変数に前記試験値を代入することで当該実装モデルを実行する実装モデル実行手順と、
前記仕様モデル実行手順によって実行された仕様モデルの入力変数ごとに、入力変数に前記試験値が代入されてから出力変数に結果の値が代入されるまでの間に行われた読出し処理および書込み処理の構造を解析し、解析した構造を仕様モデル解析結果記憶部に格納する仕様モデル解析手順と、
前記実装モデル実行手順によって実行された実装モデルの入力変数ごとに、入力変数に前記試験値が代入されてから出力変数に結果の値が代入されるまでの間に行われた読出し処理および書込み処理の構造を解析し、解析した構造を実装モデル解析結果記憶部に格納する実装モデル解析手順と、
前記仕様モデル実行手順によって実行されることで出力された出力変数の値と前記実装モデル実行手順によって実行されることで出力された出力変数の値とを比較する比較手順と、
前記比較手順によって比較された結果二つの値が異なる場合に、前記仕様モデル解析結果記憶部に格納された構造と前記実装モデル解析結果記憶部に格納された構造とを比較し、仕様モデルと実装モデルとの間に存在する相違点を検出する検出手順と、
をコンピュータに実行させることを特徴とする検出プログラム。
【請求項２】
入力変数と当該入力変数に代入された値に応じて行われる処理と当該処理の結果の値が代入される出力変数との関係が自然言語にて規定された仕様が、所定の人工言語にて記述された仕様モデルを記憶する仕様モデル記憶手段と、
前記仕様が実装用の人工言語にて記述された実装モデルを記憶する実装モデル記憶手段と、
前記仕様モデル記憶手段によって記憶されている仕様モデルの入力変数に所定の試験値を代入することで当該仕様モデルを実行する仕様モデル実行手段と、
前記実装モデル記憶手段によって記憶されている実装モデルの入力変数に前記試験値を代入することで当該実装モデルを実行する実装モデル実行手段と、
前記仕様モデル実行手段によって実行された仕様モデルの入力変数ごとに、入力変数に前記試験値が代入されてから出力変数に結果の値が代入されるまでの間に行われた読出し処理および書込み処理の構造を解析する仕様モデル解析手段と、
前記実装モデル実行手段によって実行された実装モデルの入力変数ごとに、入力変数に前記試験値が代入されてから出力変数に結果の値が代入されるまでの間に行われた読出し処理および書込み処理の構造を解析する実装モデル解析手段と、
前記仕様モデル実行手段によって実行されることで出力された出力変数の値と前記実装モデル実行手段によって実行されることで出力された出力変数の値とを比較する比較手段と、
前記比較手段によって比較された結果二つの値が異なる場合に、前記仕様モデル解析手段によって解析された構造と前記実装モデル解析手段によって解析された構造とを比較し、仕様モデルと実装モデルとの間に存在する相違点を検出する検出手段と、
を備えたことを特徴とする検出装置。
【請求項３】
コンピュータが、
入力変数と当該入力変数に代入された値に応じて行われる処理と当該処理の結果の値が代入される出力変数との関係が自然言語にて規定された仕様が、所定の人工言語にて記述され、仕様モデルとして仕様モデル記憶部に記憶されている場合に、当該仕様モデル記憶部から当該仕様モデルを読み出し、当該仕様モデルの入力変数に所定の試験値を代入することで当該仕様モデルを実行する仕様モデル実行工程と、
前記仕様が実装用の人工言語にて記述され、実装モデルとして実装モデル記憶部に記憶されている場合に、当該実装モデル記憶部から当該実装モデルを読み出し、当該実装モデルの入力変数に前記試験値を代入することで当該実装モデルを実行する実装モデル実行工程と、
前記仕様モデル実行工程によって実行された仕様モデルの入力変数ごとに、入力変数に前記試験値が代入されてから出力変数に結果の値が代入されるまでの間に行われた読出し処理および書込み処理の構造を解析し、解析した構造を仕様モデル解析結果記憶部に格納する仕様モデル解析工程と、
前記実装モデル実行工程によって実行された実装モデルの入力変数ごとに、入力変数に前記試験値が代入されてから出力変数に結果の値が代入されるまでの間に行われた読出し処理および書込み処理の構造を解析し、解析した構造を実装モデル解析結果記憶部に格納する実装モデル解析工程と、
前記仕様モデル実行工程によって実行されることで出力された出力変数の値と前記実装モデル実行工程によって実行されることで出力された出力変数の値とを比較する比較工程と、
前記比較工程によって比較された結果二つの値が異なる場合に、前記仕様モデル解析結果記憶部に格納された構造と前記実装モデル解析結果記憶部に格納された構造とを比較し、仕様モデルと実装モデルとの間に存在する相違点を検出する検出工程と、
を含んだことを特徴とする検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、検出プログラム、検出装置および検出方法に関する。
【背景技術】
【０００２】
従来より、ハードウェアやソフトウェアの実装（implementation）は、設計段階で規定された仕様（scenario）に従って行われる。ここで、仕様とは、ハードウェアやソフトウェアに組み込まれる機能として要求される内容を自然言語にて規定したものであり、実装は、自然言語にて規定された仕様を実装用の人工言語にて記述することから行われる。
【０００３】
例えば、ＬＳＩ（Large  Scale  Integration）に同期ディジタル回路を実装する手法として、ＲＴＬ（Register  Transfer  Level）と呼ばれる手法がある。この手法によれば、同期ディジタル回路の仕様は、まず、実装モデルとしてVerilogなどのハードウェア記述言語（ＨＤＬ：Hardware  Description  Language）にて記述される。そして、実装モデルが論理合成ツールによって変換されることで、実際の回路が生成される。
【０００４】
ところで、ハードウェアやソフトウェアの実装においては、仕様と実装とが一致するか否かを検証することなどを目的として、様々な手法が試みられている。例えば、仕様モデルおよび実装モデルによってシミュレーションを行う手法がある。仕様モデルとは、実装モデル同様、自然言語にて規定された仕様を人工言語にて記述したものであるが、ここでいう人工言語とは、例えば、Ｃ言語などのような汎用的な言語のことである。すなわち、仕様モデルは、仕様通りの機能を実現することを目的として記述されたものである。この手法では、開発者が、仕様モデルによるシミュレーション結果と実装モデルによるシミュレーション結果とを比較し、比較した結果が異なる場合に、主要な信号を手作業でトレースすることで、実装モデルの誤りを検出する。
【０００５】
また、例えば、ＬＳＩの仕様書の記述内容から信号群を抽出して作成した信号データベースと、ハードウェア記述言語にて記述された記述内容から信号群を抽出して作成した信号データベースとを比較する手法がある。その他、仕様に規定されたタイムシーケンス図から検証用のデータを作成する手法や、メッセージシーケンスを用いてソフトウェアの実行順序を表示する手法などがある。
【０００６】
【特許文献１】特開２００７−９４８９１号公報
【特許文献２】特開２００７−５２６３４号公報
【特許文献３】特開平１０−３１５９７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ところで、上記した従来の技術では、実装モデルの誤りを効率的かつ適切に検出することができないという課題があった。すなわち、シミュレーションを行う手法では、開発者が、主要な信号を手作業でトレースしなければならず、実装モデルの誤りを効率的に検出することができない。また、信号データベースを比較する手法では、記述内容から作成された信号データベースを比較するに過ぎず、実装モデルの誤りを適切に検出することができない。なお、検証用データを作成する手法や実行順序を表示する手法も、実装モデルの誤りを効率的かつ適切に検出するものではない。
【０００８】
そこで、本発明は、上記した従来の技術の課題を解決するためになされたものであり、実装モデルの誤りを効率的かつ適切に検出することが可能な検出プログラム、検出装置および検出方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するため、仕様モデルの入力変数に所定の試験値を代入することで仕様モデルを実行する。また、実装モデルの入力変数に試験値を代入することで実装モデルを実行する。また、仕様モデルの入力変数ごとに、入力変数に試験値が代入されてから出力変数に結果の値が代入されるまでの間に行われた読出し処理および書込み処理の構造を解析する。また、実装モデルの入力変数ごとに、入力変数に試験値が代入されてから出力変数に結果の値が代入されるまでの間に行われた読出し処理および書込み処理の構造を解析する。また、仕様モデルの出力変数の値と実装モデルの出力変数の値とを比較し、二つの値が異なる場合に両モデルの構造を比較し、仕様モデルと実装モデルとの間に存在する相違点を検出する。
【発明の効果】
【００１０】
実装モデルの誤りを効率的かつ適切に検出することが可能になる。
【発明を実施するための最良の形態】
【００１１】
以下に添付図面を参照して、本発明に係る検出プログラム、検出装置および検出方法の実施例を詳細に説明する。なお、以下では、まず、実施例１に係る検出装置の概要を説明し、次に、実施例１に係る検出装置の構成および処理手順、実施例１の効果を説明する。続いて、実施例２やその他の実施例を説明する。
【実施例１】
【００１２】
［実施例１に係る検出装置の概要］
まず、図１を用いて、実施例１に係る検出装置の概要を説明する。図１は、実施例１に係る検出装置の概要を説明するための図である。なお、実施例１においては、ハードウェアの実装を想定している。
【００１３】
実施例１に係る検出装置は、図１に示すように、自然言語にて規定された仕様がＣ言語にて記述されている仕様モデルと、Verilogにて記述されている実装モデルとを記憶している。また、図１には示していないが、検出装置は、仕様モデルや実装モデルを実行する際に入力変数に代入する値として、テストパターンを記憶している。
【００１４】
ここで、実施例１に係る検出装置は、図１に示すように、仕様モデルの入力変数にテストパターンを代入することで仕様モデルを実行し、実装モデルの入力変数にテストパターンを代入することで実装モデルを実行する。そして、検出装置は、図１に示すように、仕様モデルを実行することで出力された実行結果（出力変数の値）と、実装モデルを実行することで出力された実行結果とを比較する。
【００１５】
続いて、実施例１に係る検出装置は、図１に示すように、比較した結果、仕様モデルの実行結果と実装モデルの実行結果とが異なる場合に、仕様モデルの参照グラフおよび実装モデルの参照グラフを作成する。ここで、参照グラフとは、入力変数にテストパターンが代入されてから出力変数に結果の値が代入されるまでの間に行われた読出し処理および書込み処理の構造を入力変数ごとに示すものである。なお、後に詳述するように、検出装置は、まず、仕様モデルや実装モデルを構文解析することでＣＤＦＧ（Control  Data  Flow  Graph）を作成し、次に、ＣＤＦＧから参照グラフを作成する。
【００１６】
次に、実施例１に係る検出装置は、図１に示すように、仕様モデルの参照グラフと実装モデルの参照グラフとを比較し、仕様モデルと実装モデルとの間に存在する相違点を検出する。
【００１７】
このように、実施例１に係る検出装置は、テストパターンによる実行結果が仕様モデルと実装モデルとで異なる場合に、仕様モデルの参照グラフと実装モデルの参照グラフとを比較して両参照グラフの相違点を検出する。このようなことから、検出装置は、実装モデルの誤りを効率的かつ適切に検出することが可能になる。
【００１８】
［実施例１に係る検出装置の構成］
次に、図２を用いて、実施例１に係る検出装置の構成を説明する。図２は、実施例１に係る検出装置の構成を示すブロック図である。
【００１９】
実施例１に係る検出装置１０は、図２に示すように、記憶部として、特に、仕様モデル記憶部１１と、実装モデル記憶部１２と、テストパターン記憶部１３と、仕様モデル実行結果記憶部１４と、実装モデル実行結果記憶部１５と、仕様モデル参照グラフ記憶部１６と、実装モデル参照グラフ記憶部１７と、検出結果記憶部１８とを備える。
【００２０】
また、実施例１に係る検出装置１０は、図２に示すように、制御部として、特に、仕様モデル実行部２１と、実装モデル実行部２２と、仕様モデル参照グラフ作成部２３と、実装モデル参照グラフ作成部２４と、実行結果比較部２５と、参照グラフ解析検出部２６とを備える。
【００２１】
仕様モデル記憶部１１は、仕様モデルを記憶する。具体的には、仕様モデル記憶部１１は、自然言語にて規定された仕様１が所定の人工言語にて記述された仕様モデルを記憶する。また、仕様モデル記憶部１１が記憶する仕様モデルは、仕様モデル実行部２１や仕様モデル参照グラフ作成部２３による処理に利用される。なお、実施例１において、仕様モデルは、開発者によって予め記述されたものであり、開発者によって予め入力部（図示を省略）から入力されたものであることを想定している。このため、仕様モデル記憶部１１は、仕様モデルを予め記憶する。
【００２２】
実装モデル記憶部１２は、実装モデルを記憶する。具体的には、実装モデル記憶部１２は、自然言語にて規定された仕様１が実装用の人工言語にて記述された実装モデルを記憶する。また、実装モデル記憶部１２が記憶する実装モデルは、実装モデル実行部２２や実装モデル参照グラフ作成部２４による処理に利用される。なお、実施例１において、実装モデルは、開発者によって予め記述されたものであり、開発者によって予め入力部（図示を省略）から入力されたものであることを想定している。このため、実装モデル記憶部１２は、実装モデルを予め記憶する。
【００２３】
ここで、図３〜図５を用いて、仕様１、仕様モデルおよび実装モデルを順に例示する。図３は、仕様を説明するための図であり、図４は、仕様モデルを説明するための図であり、図５は、実装モデルを説明するための図である。
【００２４】
実施例１における仕様１は、入力変数と、入力変数に代入された値に応じて行われる処理と、処理の結果の値が代入される出力変数との関係が、自然言語にて規定されたものである。すなわち、仕様１は、図３に例示するように、「spec()」という名称であり、入力変数が「ａ，ｂ，ｏｐ」であり、出力変数が「ｘ」であることを自然言語にて規定する。また、仕様１は、図３に例示するように、入力変数「ａ，ｂ，ｏｐ」に代入された値に応じて行われる処理を自然言語にて規定する。
【００２５】
また、実施例１における仕様モデルは、図４に例示するように、図３に例示した仕様１がＣ言語にて記述されたものである。また、実施例１における実装モデルは、図５に例示するように、図３に例示した仕様１がVerilogにて記述されたものである。図４と図５とを対比するとわかるように、同じ仕様１に基づいて記述されたものであっても、Ｃ言語にて記述された仕様モデルとVerilogにて記述された実装モデルとでは、言語の相違に起因してその記述内容は相違する。また、仕様モデルや実装モデルのいずれも開発者によって記述されたものであるので、記述内容に誤りが含まれるおそれがあり、このことに起因してその記述内容が相違することもある。なお、実施例１においては、図５に例示するように、実装モデルの記述内容に誤りが含まれている。
【００２６】
テストパターン記憶部１３は、テストパターンを記憶する。具体的には、テストパターン記憶部１３は、仕様モデルや実装モデルを実行する際に入力変数に代入する値として、テストパターンを記憶する。また、テストパターン記憶部１３が記憶するテストパターンは、仕様モデル実行部２１による処理や実装モデル実行部２２による処理に利用される。なお、実施例１において、テストパターンは、開発者によって予め設定されたものであり、開発者によって予め入力部（図示を省略）から入力されたものであることを想定している。このため、テストパターン記憶部１３は、テストパターンを予め記憶する。
【００２７】
ここで、図６を用いて、テストパターンを例示する。図６は、テストパターンを説明するための図である。実施例１におけるテストパターンは、図６に例示するように、「（ａ，ｂ，ｏｐ）＝（１１０，１０，２）」および「（ａ，ｂ，ｏｐ）＝（１０，１１０，１）」の２つである。
【００２８】
仕様モデル実行結果記憶部１４は、仕様モデルの実行結果を記憶する。具体的には、仕様モデル実行結果記憶部１４は、仕様モデル実行部２１によって実行された仕様モデルの実行結果（出力変数の値）を記憶する。また、仕様モデル実行結果記憶部１４が記憶する実行結果は、実行結果比較部２５による処理に利用される。例えば、仕様モデル実行結果記憶部１４は、仕様モデルの実行結果として「ｘ＝１００」を記憶する。
【００２９】
実装モデル実行結果記憶部１５は、実装モデルの実行結果を記憶する。具体的には、実装モデル実行結果記憶部１５は、実装モデル実行部２２によって実行された実装モデルの実行結果（出力変数の値）を記憶する。また、実装モデル実行結果記憶部１５が記憶する実行結果は、実行結果比較部２５による処理に利用される。例えば、実装モデル実行結果記憶部１５は、実装モデルの実行結果として「ｘ＝１０」を記憶する。
【００３０】
仕様モデル参照グラフ記憶部１６は、仕様モデルの参照グラフを記憶する。具体的には、仕様モデル参照グラフ記憶部１６は、仕様モデル参照グラフ作成部２３によって作成された参照グラフを記憶する。また、仕様モデル参照グラフ記憶部１６が記憶する参照グラフは、参照グラフ解析検出部２６による処理に利用される。なお、参照グラフについては、後に仕様モデル参照グラフ作成部２３や実装モデル参照グラフ作成部２４を説明する際に詳述する。
【００３１】
実装モデル参照グラフ記憶部１７は、実装モデルの参照グラフを記憶する。具体的には、実装モデル参照グラフ記憶部１７は、実装モデル参照グラフ作成部２４によって作成された参照グラフを記憶する。また、実装モデル参照グラフ記憶部１７が記憶する参照グラフは、参照グラフ解析検出部２６による処理に利用される。
【００３２】
検出結果記憶部１８は、検出結果を記憶する。具体的には、検出結果記憶部１８は、参照グラフ解析検出部２６によって検出された検出結果を記憶する。また、検出結果記憶部１８が記憶する検出結果は、ディスプレイなどの出力部（図示を省略）から出力される。なお、検出結果の出力画面については、参照グラフ解析検出部２６を説明する際に詳述する。
【００３３】
仕様モデル実行部２１は、仕様モデルの入力変数にテストパターンを代入することで仕様モデルを実行する。具体的には、仕様モデル実行部２１は、仕様モデル記憶部１１から仕様モデルを読み出し、読み出した仕様モデルの入力変数に、テストパターン記憶部１３に記憶されているテストパターンを代入することで仕様モデルを実行する。そして、仕様モデル実行部２１は、実行結果を仕様モデル実行結果記憶部１４に格納する。例えば、仕様モデル実行部２１は、仕様モデルの入力変数（ａ，ｂ，ｏｐ）にテストパターン（１１０，１０，２）を代入することで仕様モデルを実行し、実行結果「ｘ＝１００」を仕様モデル実行結果記憶部１４に格納する。
【００３４】
ここで、実施例１における仕様モデル実行部２１は、仕様モデル記憶部１１に記憶されている仕様モデルを単に実行するのではなく、仕様モデルを加工し、加工後の仕様モデルを実行することで、仕様モデルを実行した際の実行パス情報を収集している。また、仕様モデル実行部２１は、収集した実行パス情報を仕様モデル参照グラフ作成部２３に伝達している。なお、仕様モデル参照グラフ作成部２３に伝達された実行パス情報は、後に詳述するように、仕様モデル参照グラフ作成部２３によって参照グラフが作成される際に利用される。
【００３５】
実装モデル実行部２２は、実装モデルの入力変数にテストパターンを代入することで実装モデルを実行する。具体的には、実装モデル実行部２２は、実装モデル記憶部１２から実装モデルを読み出し、読み出した実装モデルの入力変数に、テストパターン記憶部１３に記憶されているテストパターンを代入することで実装モデルを実行する。そして、実装モデル実行部２２は、実行結果を実装モデル実行結果記憶部１５に格納する。例えば、実装モデル実行部２２は、実装モデルの入力変数（ａ，ｂ，ｏｐ）にテストパターン（１１０，１０，２）を代入することで実装モデルを実行し、実行結果「ｘ＝１０」を実装モデル実行結果記憶部１５に格納する。
【００３６】
ここで、実施例１における実装モデル実行部２２は、実装モデル記憶部１２に記憶されている実装モデルを単に実行するのではなく、実装モデルを加工し、加工後の実装モデルを実行することで、実装モデルを実行した際の実行パス情報を収集している。また、実装モデル実行部２２は、収集した実行パス情報を実装モデル参照グラフ作成部２４に伝達している。なお、実装モデル参照グラフ作成部２４に伝達された実行パス情報は、後に詳述するように、実装モデル参照グラフ作成部２４によって参照グラフが作成される際に利用される。
【００３７】
仕様モデル参照グラフ作成部２３は、仕様モデルの入力変数ごとに、入力変数にテストパターンが代入されてから出力変数に結果の値が代入されるまでの間に行われた読出し処理および書込み処理の構造を解析し、仕様モデルの参照グラフを作成する。具体的には、仕様モデル参照グラフ作成部２３は、実行結果比較部２５から伝達された比較結果が、仕様モデルの実行結果と実装モデルの実行結果とが異なることを示す場合に、仕様モデルの参照グラフを作成する。また、仕様モデル参照グラフ作成部２３は、仕様モデル記憶部１１に記憶されている仕様モデルと、仕様モデル実行部２１から伝達された実行パス情報とを用いて仕様モデルの参照グラフを作成し、作成した参照グラフを仕様モデル参照グラフ記憶部１６に格納する。
【００３８】
実装モデル参照グラフ作成部２４は、実装モデルの入力変数ごとに、入力変数にテストパターンが代入されてから出力変数に結果の値が代入されるまでの間に行われた読出し処理および書込み処理の構造を解析し、実装モデルの参照グラフを作成する。具体的には、実装モデル参照グラフ作成部２４は、実行結果比較部２５から伝達された比較結果が、仕様モデルの実行結果と実装モデルの実行結果とが異なることを示す場合に、実装モデルの参照グラフを作成する。また、実装モデル参照グラフ作成部２４は、実装モデル記憶部１２に記憶されている実装モデルと、実装モデル実行部２２から伝達された実行パス情報とを用いて実装モデルの参照グラフを作成し、作成した参照グラフを実装モデル参照グラフ記憶部１７に格納する。
【００３９】
ここで、図７〜図２１を用いて、仕様モデルの参照グラフ作成および実装モデルの参照グラフ作成を説明する。まず、図７〜図９を用いて、仕様モデルからＣＤＦＧを作成する点を説明する。図７は、仕様モデルのＣＤＦＧを説明するための図である。図８および図９は、構文解析によるＣＤＦＧ作成を説明するための図である。
【００４０】
仕様モデル参照グラフ作成部２３は、実行結果比較部２５から伝達された比較結果が、仕様モデルの実行結果と実装モデルの実行結果とが異なることを示す場合に、仕様モデル記憶部１１に記憶されている仕様モデルを構文解析することでＣＤＦＧを作成する。例えば、仕様モデル参照グラフ作成部２３は、図４に例示した仕様モデルを構文解析することで、図７に例示するＣＤＦＧを作成する。
【００４１】
ここで、ＣＤＦＧとは、プログラムを構成する基本ブロックに、制御の流れに関する情報を付け加えて作成された有向グラフのことである。基本ブロックを表現するデータ構造には様々な種類があるが、実施例１においては、図８に例示するデータ構造を用いて、仕様モデルを構成する基本ブロックを表現することとする。
【００４２】
図８に例示するデータ構造について説明すると、実施例１におけるＣＤＦＧのデータ構造には、関数のデータ構造と変数テーブルのデータ構造と基本ブロックのデータ構造とがある。関数のデータ構造は、図８に例示するように、関数名、引数テーブル構造へのポインタ、および関数本体構造へのポインタで構成される。また、変数テーブルのデータ構造は、図８に例示するように、変数名、入出力型、および変数の型からなるレコードのリストで構成される。また、基本ブロックのデータ構造は、図８に例示するように、ブロックの型、ブロックに含まれる式、および次に処理するブロックへのポインタで構成される。
【００４３】
実施例１における仕様モデル参照グラフ作成部２３は、仕様モデル記憶部１１に記憶されている仕様モデルを構文解析し、図８に例示するデータ構造を用いて表現することで、図９に例示するＣＤＦＧを作成する。例えば、仕様モデル参照グラフ作成部２３は、仕様モデル記憶部１１に記憶されている仕様モデルから基本ブロックとして「if（a<0）a=0」を抽出する。次に、仕様モデル参照グラフ作成部２３は、抽出した基本ブロックが、分岐のないブロックであるのか、分岐するブロックであるのか、次のブロックが無いブロックであるのかを判定する。すると、分岐するブロックであることが判定されるので、仕様モデル参照グラフ作成部２３は、データ構造のブロックの型に「分岐」を設定する。続いて、仕様モデル参照グラフ作成部２３は、型が「分岐」の場合であるので、データ構造の式に「a<0」を設定する。そして、仕様モデル参照グラフ作成部２３は、型が「分岐」の場合であるので、条件式が「真」のときにたどるポインタと、「偽」のときにたどるポインタとを各々該当する基本ブロックに向けて設定する。仕様モデル参照グラフ作成部２３は、同様の手順を繰り返し、仕様モデルから図９に例示するＣＤＦＧを作成する。
【００４４】
すなわち、図７に例示したＣＤＦＧは、図９に例示したＣＤＦＧと同一の内容を示すものであり、図９に例示したＣＤＦＧを簡易なフローチャート図として表現したものである。なお、ＣＤＦＧの作成は、一般的なコンパイラの機能によって実現される（原田賢一著、「コンパイラII−原理・技法・ツール−」、初版、株式会社サイエンス社、1990年11月10日、P.646〜648、P.718〜721  を参照）。
【００４５】
次に、図１０〜図１９を用いて、ＣＤＦＧから参照グラフを作成する点を説明する。図１０は、仕様モデルの参照グラフ作成を説明するための図である。図１１は、仕様モデルの加工を説明するための図である。図１２は、実行パス情報の収集を説明するための図である。図１３は、参照グラフのノード抽出を説明するための図である。図１４は、参照グラフのエッジ抽出を説明するための図である。図１５は、実行トレースの抽出を説明するための図である。図１６は、参照グラフのノード抽出を説明するための図である。図１７は、参照グラフのエッジ抽出を説明するための図である。図１８は、参照グラフを説明するための図である。図１９は、依存関係を説明するための図である。
【００４６】
仕様モデル参照グラフ作成部２３は、仕様モデル実行部２１から伝達されたログを用いて、ＣＤＦＧから参照グラフを作成する。例えば、仕様モデル参照グラフ作成部２３は、図１０に例示するように、ＣＤＦＧから参照グラフを作成する。
【００４７】
ここで、まず、上記したように、実施例１においては、仕様モデル実行部２１が、仕様モデル記憶部１１に記憶されている仕様モデルを加工し、加工後の仕様モデルを実行することで、仕様モデルを実行した際の実行パス情報を収集している。例えば、仕様モデル実行部２１は、図１１に示すように、仕様モデルについて、構文解析によって基本ブロックを認識し、各基本ブロック中にその基本ブロックが実行されたことを出力するラベル付きprint文を埋め込む（下線部分を参照）。そして、仕様モデル実行部２１は、図１２に示すように、ラベル付きprint文を埋め込んだ仕様モデルの入力変数にテストパターンを代入することで仕様モデルを実行し、実行された基本ブロックを示す実行パス情報（「Ｌ１：Ｌ６：」）を収集する。続いて、仕様モデル実行部２１は、収集した実行パス情報を仕様モデル参照グラフ作成部２３に伝達する。なお、実施例１においては、仕様モデル実行部２１が仕様モデルを加工して実行パス情報を収集する手法を説明したが、デバッガが出力するトレース情報を利用する手法などでもよい。
【００４８】
一方、仕様モデル参照グラフ作成部２３は、仕様モデルを構文解析することで作成したＣＤＦＧと、仕様モデル実行部２１から伝達された実行パス情報とを用いることで、図１３に示すように、ＣＤＦＧから実行トレースを抽出する。そして、仕様モデル参照グラフ作成部２３は、抽出した実行トレース上の入力変数について、図１３に示すように、読出し処理（Ｒ）および書込み処理（Ｗ）を抽出し、参照グラフのノードとする。続いて、仕様モデル参照グラフ作成部２３は、参照グラフのノード間について、図１４に示すように、依存関係を抽出し、参照グラフのエッジとする。
【００４９】
この点について、ＣＤＦＧのデータ構造を用いてさらに詳述する。仕様モデル参照グラフ作成部２３は、仕様モデルを構文解析することで作成したＣＤＦＧと、仕様モデル実行部２１から伝達された実行パス情報とを用いることで、図１５に示すように、ＣＤＦＧから実行トレースを抽出する（太枠、太線を参照）。なお、図１５では、ＣＤＦＧのノードについて、実行されたノードにマークする手法を示しているが、例えば、基本ブロックのデータ構造にマーク用のフラグを設け、フラグをセットする手法でもよい。あるいは、実行されたノードを登録するリストを別途設ける手法でもよい。
【００５０】
そして、仕様モデル参照グラフ作成部２３は、抽出した実行トレース上の入力変数について、図１６に示すように、読出し処理（Ｒ）および書込み処理（Ｗ）を抽出し、参照グラフのノードとする。すなわち、仕様モデル参照グラフ作成部２３は、マークされたノードについて、データ構造の「式」において、値が読み出されている入力変数は読出し処理であると判定し、一方、値が代入されている入力変数は書込み処理であると判定する。そして、仕様モデル参照グラフ作成部２３は、入力変数ごとに、参照グラフのノードとして抽出し、データ構造に「属性」を設け、読出し処理および書込み処理を設定する。
【００５１】
続いて、仕様モデル参照グラフ作成部２３は、参照グラフのノード間について、ＣＤＦＧの実行トレースから参照の依存関係を抽出し、図１７に示すように、参照グラフのノード間にポインタを付加する。まず、仕様モデル参照グラフ作成部２３は、同じ入力変数に対する読出し処理および書込み処理は、実行トレース上の順序を維持するように、参照グラフのノード間にポインタを付加する。また、仕様モデル参照グラフ作成部２３は、「式」が代入式であって、右辺が読出し処理で左辺が書込み処理の関係である場合に、読出されるノードと書き込まれるノードとの間に、ポインタを付加する（図１７の（１）を参照）。
【００５２】
さらに、仕様モデル参照グラフ作成部２３は、データ構造の「式」において、入力変数の読出し処理に対応するノードと、その分岐先での入力変数への書込み処理に対応するノードとの間に、ポインタを付加する（図１７の（２）を参照）。なお、分岐先とは、その分岐ノードから分岐したフローが再収斂するまでの間のノードのことであり、例えば、「a=100」ノードは、「a<0」ノードの分岐先であり、「x=a」ノードは、「op==2」ノードの分岐先である。こうして、仕様モデル参照グラフ作成部２３は、図１８に示すように、参照グラフを作成する。
【００５３】
さらに、仕様モデル参照グラフ作成部２３は、読出し処理（Ｒ）が連続する場合には、同じ値を読み出すことになるため、依存関係がないとみなし、図１９に示すように、参照グラフのエッジを表現する際に破線の矢印（矢印オブジェクトに属性を持たせる）とする。
【００５４】
なお、実装モデルについて、図２０および図２１を用いて簡単に説明する。図２０は、実装モデルのＣＤＦＧを説明するための図である。図２１は、実装モデルの参照グラフ作成を説明するための図である。実装モデル参照グラフ作成部２４は、仕様モデル参照グラフ作成部２３と同様、図５に例示した実装モデルを構文解析することで、図２０に例示するＣＤＦＧを作成する。次に、実装モデル参照グラフ作成部２４は、仕様モデル参照グラフ作成部２３と同様、実装モデル実行部２２から伝達された実行パス情報を用いて、図２１に例示するように、ＣＤＦＧから参照グラフを作成する。
【００５５】
実行結果比較部２５は、仕様モデルが実行されることで出力された実行結果（出力変数の値）と実装モデルが実行されることで出力された実行結果とを比較する。具体的には、実行結果比較部２５は、仕様モデル実行結果記憶部１４に記憶されている実行結果と、実装モデル実行結果記憶部１５に記憶されている実行結果とを比較する。そして、実行結果比較部２５は、比較の結果二つの値が異なる場合に、異なることを示す比較結果を仕様モデル参照グラフ作成部２３および実装モデル参照グラフ作成部２４に伝達する。
【００５６】
参照グラフ解析検出部２６は、仕様モデルの参照グラフと実装モデルの参照グラフとを比較し、仕様モデルと実装モデルとの間に存在する相違点を検出する。具体的には、参照グラフ解析検出部２６は、仕様モデル参照グラフ記憶部１６に記憶されている参照グラフと、実装モデル参照グラフ記憶部１７に記憶されている参照グラフとを比較し、相違点を検出し、検出結果を検出結果記憶部１８に格納する。
【００５７】
例えば、参照グラフ解析検出部２６は、図２２に示すように、仕様モデルと実装モデルとで対応する入力変数（名称の一致、利用者による指定など）のパスを各々解析し、読出し処理および書込み処理の構造が両モデル間で相違する点を検出する。なお、図２２は、参照グラフの解析を説明するための図である。
【００５８】
この点について、図２３および図２４を用いて詳述する。図２３は、参照グラフの解析を説明するための図であり、図２４は、参照グラフの比較アルゴリズムを説明するための図である。
【００５９】
図２４に示すプログラムは、仕様モデルの参照グラフＧａと実装モデルの参照グラフＧｂとを比較するプログラムである。図２４に示すように、ノードＮａは、参照グラフＧａにおいて出力変数Ｖへの最後の書込み処理に対応するノードであり、ノードＮｂは、参照グラフＧｂにおいて出力変数Ｖへの最後の書込み処理に対応するノードである。
【００６０】
参照グラフ解析検出部２６は、まず、参照グラフＧａにおいて、ノードＮａ（出力変数への最後の書込み処理に対応するノード）から前ノードを辿る帰りがけ順検索を行う。ここで、各ノードでは、前ノードがなければ、入力変数名と属性とを「：」で結合した文字列を文字列リストに追加し、前ノードがあれば、文字列リストの各文字列の最後にノードの属性を追加する。この時、文字列の最後のノードの属性が「Ｒ」であって、追加しようとするノードの属性が「Ｒ」である場合には、追加しない。このようにすることで、読出し処理（Ｒ）が連続する場合には依存関係がないとみなす関係を実現する。そして、参照グラフ解析検出部２６は、作成した文字列リストをエントリＨａに追加する。一方、参照グラフ解析検出部２６は、参照グラフＧｂにおいても同様に、ノードＮｂから前ノードを辿る帰りがけ順検索を行い、作成した文字列リストをエントリＨｂに追加する。
【００６１】
続いて、参照グラフ解析検出部２６は、参照グラフＧａについて作成された文字列リスト群Ｈａと、参照グラフＧｂについて作成された文字列リスト群Ｈｂとを比較し、同一となる文字列リストについては、各々のエントリから削除する。そして、文字列リスト群Ｈａが空でない場合、Ｈａに属するノードをノードリストＬに登録し、また、文字列リスト群Ｈｂが空でない場合、Ｈｂに属するノードをノードリストＬに登録する。
【００６２】
なお、実施例１における参照グラフ解析検出部２６は、検出結果をディスプレイなどの出力部（図示を省略）に出力する。例えば、参照グラフ解析検出部２６は、仕様モデルの参照グラフと実装モデルの参照グラフとで相違する点（ノードリストＬ）から、ＣＤＦＧを経由して、仕様モデルおよび実装モデルの記述において対応する行を判定する。そして、参照グラフ解析検出部２６は、図２５に例示するように、対応する行として判定した行（入力変数を含む式）をハイライトするように、仕様モデルおよび実装モデルの記述を出力部に出力する。あるいは、例えば、「仕様モデルでは、入力変数aの読出し処理から出力変数xへの書込み処理の依存関係がありますが、実装モデルでは、b_tmpの読出し処理から出力変数xへの書込み処理の依存関係があります。」のように文章や音声で出力してもよい。なお、図２５は、検出結果の出力画面を説明するための図である。
【００６３】
［実施例１に係る検出装置による処理の手順］
続いて、図２６を用いて、実施例１に係る検出装置による処理の手順を説明する。図２６は、実施例１に係る検出装置による処理の手順を示すフローチャートである。
【００６４】
図２６に示すように、実施例１に係る検出装置１０は、まず、仕様モデルおよび実装モデルを実行することを指示するモデル実行指示を受け付けたか否かを判定する（ステップＳ１０１）。モデル実行指示を受け付けた場合には（ステップＳ１０１肯定）、検出装置１０は、仕様モデル実行部２１および実装モデル実行部２２各々において、仕様モデルおよび実装モデルを各々実行する（ステップＳ１０２）。
【００６５】
次に、検出装置１０は、仕様モデルの実行結果と実装モデルの実行結果とを比較し（ステップＳ１０３）、実行結果が異なるか否かを判定する（ステップＳ１０４）。具体的には、検出装置１０は、実行結果比較部２５において、仕様モデル実行結果記憶部１４に記憶されている実行結果と、実装モデル実行結果記憶部１５に記憶されている実行結果とを比較する。実行結果が同一である場合には（ステップＳ１０４否定）、検出装置１０は、処理を終了する。
【００６６】
一方、実行結果が異なる場合には（ステップＳ１０４肯定）、検出装置１０は、仕様モデルの参照グラフおよび実装モデルの参照グラフを各々作成する（ステップＳ１０５）。具体的には、実行結果が異なる場合には、実行結果比較部２５から、仕様モデル参照グラフ作成部２３および実装モデル参照グラフ作成部２４各々に対して、比較の結果異なる場合であったことが伝達される。そこで、検出装置１０は、仕様モデル参照グラフ作成部２３および実装モデル参照グラフ作成部２４各々において、仕様モデルの参照グラフおよび実装モデルの参照グラフを各々作成する。
【００６７】
そして、検出装置１０は、作成した参照グラフを比較して相違点を検出する（ステップＳ１０６）。具体的には、検出装置１０は、参照グラフ解析検出部２６において、仕様モデル参照グラフ記憶部１６に記憶されている参照グラフと、実装モデル参照グラフ記憶部１７に記憶されている参照グラフとを比較して、相違点を検出する。
【００６８】
そして、検出装置１０は、検出結果を出力して（ステップＳ１０７）、処理を終了する。具体的には、検出装置１０は、参照グラフ解析検出部２６において、検出結果を出力部に出力し、処理を終了する。
【００６９】
［実施例１の効果］
上述してきたように、実施例１によれば、検出装置は、仕様モデルの入力変数にテストパターンを代入することで仕様モデルを実行する。また、検出装置は、実装モデルの入力変数にテストパターンを代入することで実装モデルを実行する。また、検出装置は、仕様モデルの入力変数ごとに、入力変数に試験値が代入されてから出力変数に結果の値が代入されるまでの間に行われた読出し処理および書込み処理の構造を解析し、参照グラフを作成する。また、検出装置は、実装モデルの入力変数ごとに、入力変数に試験値が代入されてから出力変数に結果の値が代入されるまでの間に行われた読出し処理および書込み処理の構造を解析し、参照グラフを作成する。また、検出装置は、仕様モデルの実行結果と実装モデルの実行結果とを比較し、実行結果が異なる場合に両モデルの参照グラフを比較し、仕様モデルと実装モデルとの間に存在する相違点を検出する。このようなことから、実施例１によれば、実装モデルの誤りを効率的かつ適切に検出することが可能になる。
【００７０】
すなわち、従来のシミュレーションを行う手法では、開発者が、主要な信号を手作業でトレースしなければならず、実装モデルの誤りを効率的に検出することができなかった。これに対し、実施例１によれば、検出装置が、仕様モデルと実装モデルとの間に存在する相違点を検出するので、開発者は、検出装置によって検出された相違点を検討すればよく、実装モデルの誤りを効率的に検出することができる。
【００７１】
また、従来の信号データベースを比較する手法では、仕様モデルや実装モデルの記述内容から作成された信号データベースを比較するに過ぎず、実装モデルの誤りを適切に検出することができなかった。これに対し、実施例１によれば、検出装置は、仕様モデルや実装モデルにテストパターンを代入し、テストパターンを実行する際の動的な実行パスに基づいて動的に作成された参照グラフを比較する。このため、実装モデルの誤りを適切に検出することができる。
【００７２】
また、実施例１によれば、検出装置は、検出した相違点を強調表示したり、文章で出力したり、音声で出力するので、開発者は、実装モデルの誤りをより効率的に把握することができる。実施例１において、検出装置は、Verilogにて記述された実装モデルを画面表示し、相違点に該当する行をハイライトで強調表示するが、例えば、同じ画面で実装モデルを編集することができれば、開発者は、その場で実装モデルの誤りを修正することもでき、より効率的な開発作業を行うことができる。
【実施例２】
【００７３】
続いて、実施例２では、実装モデル記憶部１２が、実施例１とは異なる実装モデルを記憶している場合について、図２７〜図３３を用いて説明する。なお、図２７は、実装モデルを説明するための図である。図２８は、仕様モデルの参照グラフ作成を説明するための図である。図２９は、実装モデルのＣＤＦＧを説明するための図である。図３０は、実装モデルの参照グラフ作成を説明するための図である。図３１および図３２は、参照グラフ解析を説明するための図である。
【００７４】
まず、実施例２における実装モデル記憶部１２は、図２７に例示する実装モデルを記憶する。実施例２における実装モデルは、図２７に例示するように、実施例１と同様、図３に例示した仕様１がVerilogにて記述されたものである。もっとも、図２７に例示するように、実施例１とは異なる誤りが含まれている。
【００７５】
実施例２における仕様モデル実行部２１および実装モデル実行部２２は、２つのテストパターンを実行する。例えば、実施例２における仕様モデル実行部２１は、まず、仕様モデルの入力変数（ａ，ｂ，ｏｐ）にテストパターン（１１０，１０，２）を代入することで仕様モデルを実行し、実行結果「ｘ＝１００」を仕様モデル実行結果記憶部１４に格納する。続いて、実施例２における仕様モデル実行部２１は、仕様モデルの入力変数（ａ，ｂ，ｏｐ）にテストパターン（１０，１１０，１）を代入することで仕様モデルを実行し、実行結果「ｘ＝１００」を格納する。
【００７６】
一方、実施例２における実装モデル実行部２２も、まず、実装モデルの入力変数（ａ，ｂ，ｏｐ）にテストパターン（１１０，１０，２）を代入することで実装モデルを実行し、実行結果「ｘ＝１００」を実装モデル実行結果記憶部１５に格納する。続いて、実装モデル実行部２２は、実装モデルの入力変数（ａ，ｂ，ｏｐ）にテストパターン（１０，１１０，１）を代入することで実装モデルを実行し、実行結果「ｘ＝１２０」を格納する。
【００７７】
実施例２における実行結果比較部２５は、テストパターン（１１０，１０，２）を代入することで実行した場合の実行結果を比較し、二つの値が異ならないとの比較結果を得る。また、実行結果比較部２５は、テストパターン（１０，１１０，１）を代入することで実行した場合の実行結果を比較し、二つの値が異なるという比較結果を得る。このため、実行結果比較部２５は、テストパターン（１０，１１０，１）について、異なることを示す比較結果を仕様モデル参照グラフ作成部２３および実装モデル参照グラフ作成部２４に伝達する。
【００７８】
すると、仕様モデル参照グラフ作成部２３は、図２８に示すように、テストパターン（１０，１１０，１）について、仕様モデルの参照グラフを作成する。また、実装モデル参照グラフ作成部２４は、図２９および図３０に示すように、テストパターン（１０，１１０，１）について、実装モデルの参照グラフを作成する。
【００７９】
続いて、参照グラフ解析検出部２６は、実施例１と同様、仕様モデルの参照グラフと実装モデルの参照グラフとを比較し、仕様モデルと実装モデルとの間に存在する相違点を検出する。例えば、実施例２における参照グラフ解析検出部２６は、図３１および図３２に示すように、仕様モデルと実装モデルとで対応する入力変数のパスを各々解析し、読出し処理および書込み処理の構造が両モデル間で相違する点を検出する。
【実施例３】
【００８０】
［他の実施例］
さて、これまで本発明の実施例について説明したが、本発明は上記の実施例以外にも、種々の異なる形態にて実施されてよいものである。
【００８１】
［人工言語］
上記の実施例においては、仕様モデルをＣ言語にて記述し、実装モデルをVerilogにて記述することを想定していた。しかしながら本発明はこれに限られるものではない。すなわち、仕様モデルや実装モデルは、コンピュータによる処理が可能な人工言語にて記述されていればよく、Ｃ言語やVerilogに限定されるものではない。
【００８２】
［処理手順］
また、上記の実施例においては、検出装置が、まず、仕様モデルの実行結果と実装モデルの実行結果とを比較し、比較の結果、実行結果が異なる場合に、初めて、仕様モデルの参照モデルと実装モデルの参照モデルとを作成する処理手順を説明した。しかしながら、本発明はこれに限られるものではない。例えば、検出装置は、仕様モデルや実装モデルを実行する際に、同時に参照モデルを作成してもよい。この場合には、実行結果が異なることが判明した後に、検出装置は、予め作成しておいた参照モデルを比較し、相違点を解析すればよい。
【００８３】
［ソフトウェアの実装］
また、上記の実施例においては、検出装置が、ハードウェアの実装にあたり、実装モデルの誤りを検出することを想定していた。しかしながら、本発明はこれに限られるものではなく、ソフトウェアの実装にあたり、実装モデルの誤りを検出する場合にも、本発明を同様に適用することができる。この場合には、例えば、検出装置は、業務システムの仕様がＣ言語にて記述された仕様モデルとＣＯＢＯＬにて記述された実装モデルとを各々実行する。また、検出装置は、Ｃ言語にて記述された仕様モデルを構文解析することでＣＤＦＧを作成し、ＣＤＦＧから参照グラフを作成する。また、検出装置は、ＣＯＢＯＬにて記述された実装モデルを構文解析することでＣＤＦＧを作成し、ＣＤＦＧから参照グラフを作成する。そして、検出装置は、仕様モデルと実装モデルとの実行結果を比較し、比較の結果、実行結果が異なる場合に、仕様モデルの参照グラフと実装モデルの参照グラフとを比較し、相違点を検出する。
【００８４】
［システム構成等］
また、上記の実施例において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともできる。例えば、上記の実施例において、検出装置は、仕様モデルと実装モデルとの間に存在する相違点を検出すると、自動的に、検出結果を出力部に出力していた。しかしながら、例えば、検出装置は、開発者による出力指示の入力を受け付けたことを契機として、検出結果を出力部に出力してもよい。
【００８５】
あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。例えば、上記の実施例において、仕様モデルや実装モデルは、開発者によって予め記述されたものであることを想定していた。しかしながら、例えば、検出装置は、仕様の入力を受け付け、公知の方法で、入力を受け付けた仕様から仕様モデルや実装モデルを自動的に作成してもよい。
【００８６】
この他、上記文書中や図面中で示した処理手順（図２６など）、具体的名称（図２など）、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００８７】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示（図２など）の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、仕様モデル記憶部１１と実装モデル記憶部１２とを統合したり、仕様モデル実行結果記憶部１４と実装モデル実行結果記憶部１５とを統合するなどして構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵ（Central  Processing  Unit）および当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００８８】
［検出プログラムを実行するコンピュータ］
また、上記の実施例で説明した各種の処理は、予め用意されたプログラムをＰＣ（Personal  Computer）やＷＳ（Work  Station）などのコンピュータで実行することによって実現することができる。そこで、以下では、図３３を用いて、上記の実施例と同様の機能を有する検出プログラムを実行するコンピュータの一例を説明する。図３３は、検出プログラムを実行するコンピュータを示す図である。
【００８９】
図３３に示すように、検出プログラム（コンピュータ）３０は、キャッシュ３１、ＲＡＭ（Random  Access  Memory）３２、ＨＤＤ（Hard  Disk  Drive）３３、ＲＯＭ（Read  Only  Memory）３４およびＣＰＵ３５をバス３６で接続して構成される。ここで、ＲＯＭ３４には、上記の実施例と同様の機能を発揮する検出プログラム、つまり、図３３に示すように、仕様モデル実行プログラム３４ａ、実装モデル実行プログラム３４ｂ、仕様モデル参照グラフ作成プログラム３４ｃ、実装モデル参照グラフ作成プログラム３４ｄ、実行結果比較プログラム３４ｅおよび参照グラフ解析検出プログラム３４ｆが備えられる。
【００９０】
そして、ＣＰＵ３５は、これらのプログラム３４ａ〜３４ｆを読み出して実行することで、図３３に示すように、各プログラム３４ａ〜３４ｆは、仕様モデル実行プロセス３５ａ、実装モデル実行プロセス３５ｂ、仕様モデル参照グラフ作成プロセス３５ｃ、実装モデル参照グラフ作成プロセス３５ｄ、実行結果比較プロセス３５ｅおよび参照グラフ解析検出プロセス３５ｆとなる。なお、各プロセス３５ａ〜３５ｆは、図２に示した、仕様モデル実行部２１、実装モデル実行部２２、仕様モデル参照グラフ作成部２３、実装モデル参照グラフ作成部２４、実行結果比較部２５および参照グラフ解析検出部２６に各々対応する。
【００９１】
また、ＨＤＤ３３は、図３３に示すように、仕様モデルテーブル３３ａ、実装モデルテーブル３３ｂ、テストパターンテーブル３３ｃ、仕様モデル実行結果テーブル３３ｄ、実装モデル実行結果テーブル３３ｅ、仕様モデル参照グラフテーブル３３ｆ、実装モデル参照グラフテーブル３３ｇおよび検出結果テーブル３３ｈを備える。なお、各テーブル３３ａ〜３３ｈは、図２に示した仕様モデル記憶部１１、実装モデル記憶部１２、テストパターン記憶部１３、仕様モデル実行結果記憶部１４、実装モデル実行結果記憶部１５、仕様モデル参照グラフ記憶部１６、実装モデル参照グラフ記憶部１７および検出結果記憶部１８に各々対応する。
【００９２】
ところで、上記した各プログラム３４ａ〜３４ｆについては、必ずしもＲＯＭ３４に記憶させておく必要はなく、例えば、コンピュータ３０に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＭＯディスク、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」、または、コンピュータ３０の内外に備えられるハードディスクドライブ（ＨＤＤ）などの「固定用の物理媒体」、さらには、公衆回線、インターネット、ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）などを介してコンピュータ３０に接続される「他のコンピュータ（またはサーバ）」に記憶させておき、コンピュータ３０がこれらからプログラムを読み出して実行するようにしてもよい。
【図面の簡単な説明】
【００９３】
【図１】実施例１に係る検出装置の概要を説明するための図である。
【図２】実施例１に係る検出装置の構成を示すブロック図である。
【図３】仕様を説明するための図である。
【図４】仕様モデルを説明するための図である。
【図５】実装モデルを説明するための図である。
【図６】テストパターンを説明するための図である。
【図７】仕様モデルのＣＤＦＧを説明するための図である。
【図８】構文解析によるＣＤＦＧ作成を説明するための図である。
【図９】構文解析によるＣＤＦＧ作成を説明するための図である。
【図１０】仕様モデルの参照グラフ作成を説明するための図である。
【図１１】仕様モデルの加工を説明するための図である。
【図１２】実行パス情報の収集を説明するための図である。
【図１３】参照グラフのノード抽出を説明するための図である。
【図１４】参照グラフのエッジ抽出を説明するための図である。
【図１５】実行トレースの抽出を説明するための図である。
【図１６】参照グラフのノード抽出を説明するための図である。
【図１７】参照グラフのエッジ抽出を説明するための図である。
【図１８】参照グラフを説明するための図である。
【図１９】依存関係を説明するための図である。
【図２０】実装モデルのＣＤＦＧを説明するための図である。
【図２１】実装モデルの参照グラフ作成を説明するための図である。
【図２２】参照グラフの解析を説明するための図である。
【図２３】参照グラフの解析を説明するための図である。
【図２４】参照グラフの比較アルゴリズムを説明するための図である。
【図２５】検出結果の出力画面を説明するための図である。
【図２６】実施例１に係る検出装置による処理手順を示すフローチャートである。
【図２７】実装モデルを説明するための図である。
【図２８】仕様モデルの参照グラフ作成を説明するための図である。
【図２９】実装モデルのＣＤＦＧを説明するための図である。
【図３０】実装モデルの参照グラフ作成を説明するための図である。
【図３１】参照グラフの解析を説明するための図である。
【図３２】参照グラフの解析を説明するための図である。
【図３３】検出プログラムを実行するコンピュータを示す図である。
【符号の説明】
【００９４】
１  仕様
１０  検出装置
１１  仕様モデル記憶部
１２  実装モデル記憶部
１３  テストパターン記憶部
１４  仕様モデル実行結果記憶部
１５  実装モデル実行結果記憶部
１６  仕様モデル参照グラフ記憶部
１７  実装モデル参照グラフ記憶部
１８  検出結果記憶部
２１  仕様モデル実行部
２２  実装モデル実行部
２３  仕様モデル参照グラフ作成部
２４  実装モデル参照グラフ作成部
２５  実行結果比較部
２６  参照グラフ解析検出部
３０  コンピュータ
３１  キャッシュ
３２  ＲＡＭ
３３  ＨＤＤ
３４  ＲＯＭ
３５  ＣＰＵ
３６  バス
【図１】
2010003008.tif 000003
【図２】
2010003008.tif 000004
【図３】
2010003008.tif 000005
【図４】
2010003008.tif 000006
【図５】
2010003008.tif 000007
【図６】
2010003008.tif 000008
【図７】
2010003008.tif 000009
【図８】
2010003008.tif 000010
【図９】
2010003008.tif 000011
【図１０】
2010003008.tif 000012
【図１１】
2010003008.tif 000013
【図１２】
2010003008.tif 000014
【図１３】
2010003008.tif 000015
【図１４】
2010003008.tif 000016
【図１５】
2010003008.tif 000017
【図１６】
2010003008.tif 000018
【図１７】
2010003008.tif 000019
【図１８】
2010003008.tif 000020
【図１９】
2010003008.tif 000021
【図２０】
2010003008.tif 000022
【図２１】
2010003008.tif 000023
【図２２】
2010003008.tif 000024
【図２３】
2010003008.tif 000025
【図２４】
2010003008.tif 000026
【図２５】
2010003008.tif 000027
【図２６】
2010003008.tif 000028
【図２７】
2010003008.tif 000029
【図２８】
2010003008.tif 000030
【図２９】
2010003008.tif 000031
【図３０】
2010003008.tif 000032
【図３１】
2010003008.tif 000033
【図３２】
2010003008.tif 000034
【図３３】
2010003008.tif 000035