JP5396930B2 - Verification target function automatic selection device, verification target function automatic selection method, and verification target function automatic selection program - Google Patents

Verification target function automatic selection device, verification target function automatic selection method, and verification target function automatic selection program Download PDF

Info

Publication number
JP5396930B2
JP5396930B2 JP2009057004A JP2009057004A JP5396930B2 JP 5396930 B2 JP5396930 B2 JP 5396930B2 JP 2009057004 A JP2009057004 A JP 2009057004A JP 2009057004 A JP2009057004 A JP 2009057004A JP 5396930 B2 JP5396930 B2 JP 5396930B2
Authority
JP
Japan
Prior art keywords
function
model
inspection
control flow
flow graph
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2009057004A
Other languages
Japanese (ja)
Other versions
JP2010211521A (en
Inventor
雅哉 小畑
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2009057004A priority Critical patent/JP5396930B2/en
Publication of JP2010211521A publication Critical patent/JP2010211521A/en
Application granted granted Critical
Publication of JP5396930B2 publication Critical patent/JP5396930B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Description

本発明は、検証対象関数自動選択装置に関し、特にモデル検査手法における検証対象関数自動選択装置に関する。   The present invention relates to a verification target function automatic selection device, and more particularly to a verification target function automatic selection device in a model checking method.

C言語を始めとするプログラミング言語で記述されたソースコードを、形式検証の一手法であるモデル検査技法で検証するための方法として、例えば、“情報処理 49(5)「C言語へのフォーマルメソッドの適用」宮崎義昭、橋本祐介著(非特許文献1)”に記載されている従来技術のように、従来からいくつかの方法が知られている。   As a method for verifying a source code described in a programming language such as C language by a model checking technique which is a method of formal verification, for example, “Information Processing 49 (5)” Formal method to C language As in the prior art described in “Application of Yoshiaki Miyazaki and Yusuke Hashimoto (Non-patent Document 1)”, several methods are conventionally known.

また、関連技術として、特表2007−528059号公報(特許文献1)にソフトウェアのモデル化、抽象、及び分析のためのシステムと方法が開示されている。   Moreover, as a related technique, Japanese Patent Publication No. 2007-528059 (Patent Document 1) discloses a system and method for software modeling, abstraction, and analysis.

この関連技術は、ソースコード検証においてソースコードをモデル検査可能なモデルに変換し検証を行う技術である。   This related technology is a technology for performing verification by converting source code into a model that can be model-checked in source code verification.

しかし、この関連技術では、モデル化する関数に関しては何ら特別な処理は行わず、利用者が指定した検証コード及び検証対象の起点となる関数(エントリ関数と呼ぶ)から直接又は間接的に呼び出される関数全てを検証対象に加えていた。このため、検証結果が出てからでないと制限時間切れで検証結果が出ていないことがわからず、それを回避するための関数選択で人手による試行錯誤が必要となっていた。またその試行錯誤でも勘に頼った方法をとっていたため、必ずしも意図した通りの設定にすることができないという問題があった。   However, in this related technology, no special processing is performed for the function to be modeled, and it is directly or indirectly called from the verification code specified by the user and the function that is the starting point of the verification target (called the entry function). All functions were added for verification. For this reason, it is not known that the verification result is not output because the time limit has expired until the verification result is output, and manual trial and error is necessary in selecting a function to avoid it. In addition, since the trial and error used a method that relied on intuition, there was a problem that it was not always possible to set as intended.

一般に、ソースコードから自動的にモデルを構築し、モデル検査による検証を行う場合、生成されるモデルの状態数が膨大になり、計算量が非常に多くなるため、有意な時間内で全ての検証が終了しない場合が多い。   In general, when building a model automatically from source code and performing verification by model checking, the number of generated model states becomes enormous and the amount of calculations becomes very large. Often does not end.

そのため、検証時間の上限を予め設定しておき、その時間内で結果が得られない検証項目については、タイムアウトとして検証を終了する方法が取られている。   For this reason, an upper limit of the verification time is set in advance, and a verification item for which a result cannot be obtained within that time is taken as a timeout and the verification is terminated.

また、出来るだけ多くの検証結果が得られるように、モデル化の過程で様々な最適化を行い、検証結果に影響を与えない範囲でモデルを小さくする処理を行っているが、従来のモデル構築方法では、利用者が指定した起点関数から直接又は間接的に呼び出される関数を全て検証対象に加える方法を取っているため、対象となる関数が多い場合には、上限時間内に検証結果を出せない場合も多い。   Also, in order to obtain as many verification results as possible, various optimizations are performed during the modeling process, and processing is performed to reduce the model within a range that does not affect the verification results. In this method, all the functions that are called directly or indirectly from the origin function specified by the user are added to the verification target, so if there are many target functions, the verification result can be output within the upper limit time. Often not.

このような場合、起点関数から直接又は間接的に呼び出される関数のうち、計算量が多く制限時間内に結果が得られない一部の関数の検証に多くの時間が費やされ、比較的短い時間で検証が可能なその他の関数の検証にも影響が及び、全体として効果的な検証時間の配分がされていないという課題があった。   In such a case, among the functions that are directly or indirectly called from the origin function, a lot of time is spent on verifying some functions that have a large amount of calculation and cannot obtain a result within the time limit, and are relatively short. The verification of other functions that can be verified in time is also affected, and there is a problem that effective verification time is not allocated as a whole.

特表2007−528059号公報Special table 2007-528059 gazette

情報処理 49(5)「C言語へのフォーマルメソッドの適用」宮崎義昭、橋本祐介著Information Processing 49 (5) “Application of Formal Methods to C Language” by Yoshiaki Miyazaki and Yusuke Hashimoto 「コンパイラII 原理・技法・ツール」A.V.エイホ、R.セシィ、 J.D.ウルマン著“Compiler II Principle / Technique / Tool” V. Aiho, R.A. Cessie, J. D. By Ullman 産業技術総合研究所システム検証研究センター、テクニカルレポート「抽象化を用いた検証ツールの調査」田辺良則、高井利憲、高橋孝一National Institute of Advanced Industrial Science and Technology (AIST), System Verification Research Center, Technical Report “Survey of Verification Tools Using Abstraction” Yoshinori Tanabe, Toshinori Takai, Koichi Takahashi

本発明の目的は、モデル検査を実行する前に、検証対象のモデルの再構築を行うことにより、検証効果が高い関数群を自動的に選択してからモデル化する検証対象関数自動選択装置を提供することである。   An object of the present invention is to provide an automatic verification target function selection device that automatically selects a function group having a high verification effect and then models it by reconstructing the verification target model before performing model checking. Is to provide.

本発明の検証対象関数自動選択装置は、検査仕様と検査対象コードを読み込み、検査対象コードにコンパイラ最適化処理を施した上で、検査仕様を踏まえて制御フローグラフモデルを作成するモデル検査制御手段と、制御フローグラフモデルを読み込み、検査仕様で指定されたエントリ関数から呼び出される関数を検出し、検出された関数のブロック数と評価値を算出し、算出されたブロック数と評価に基づいて、検出された関数の中から、検証対象に追加する関数を選択し、選択された関数に基づいて、制御フローグラフモデルを変換する検証対象関数選択手段とを含む。 The verification target function automatic selection device of the present invention reads a test specification and a test target code, performs a compiler optimization process on the test target code, and creates a control flow graph model based on the test specification Then, the control flow graph model is read, the function called from the entry function specified in the inspection specification is detected, the block number and evaluation value of the detected function are calculated, and based on the calculated block number and evaluation, A function to be added to the verification target is selected from the detected functions, and verification target function selection means for converting the control flow graph model based on the selected function is included.

モデル検査制御手段は、変換された制御フローグラフモデルを読み込み、計算木論理を用いた記号モデル検査法に即して検査モデルを作成し、検査モデルに対して、計算木論理を用いた記号モデル検査法に即して検査を実行し、実行された検査の結果を出力する。 Model checking control means reads the converted control flow graph model, with reference to symbolic model checking method using the computation tree logic to create a test model, the inspection model, symbolic model using computation tree logic The inspection is executed according to the inspection method, and the result of the executed inspection is output.

本発明の検証対象関数自動選択方法では、検査仕様と検査対象コードを読み込み、検査対象コードにコンパイラ最適化処理を施した上で、検査仕様を踏まえて制御フローグラフモデルを作成する。次に、制御フローグラフモデルを参照し、検査仕様で指定されたエントリ関数から呼び出される関数を検出し、検出された関数のブロック数と評価値を算出し、算出されたブロック数と評価に基づいて、検出された関数の中から、検証対象に追加する関数を選択し、選択された関数に基づいて、制御フローグラフモデルを変換する。次に、変換された制御フローグラフモデルを参照し、計算木論理を用いた記号モデル検査法に即して検査モデルを作成し、検査モデルに対して、計算木論理を用いた記号モデル検査法に即して検査を実行し、実行された検査の結果を出力する。 In the verification target function automatic selection method of the present invention, a test specification and a test target code are read, a compiler optimization process is performed on the test target code, and a control flow graph model is created based on the test specification. Next, referring to the control flow graph model, the function called from the entry function specified in the inspection specification is detected, the number of blocks and the evaluation value of the detected function are calculated, and based on the calculated number of blocks and evaluation Then, a function to be added to the verification target is selected from the detected functions, and the control flow graph model is converted based on the selected function. Next, with reference to the converted control flow graph model, with reference to symbolic model checking method using the computation tree logic to create a test model, the inspection model, symbolic model checking method using the computation tree logic The inspection is executed in accordance with, and the result of the executed inspection is output.

本発明の検証対象関数自動選択用プログラムは、 検査仕様と検査対象コードを読み込み、検査対象コードにコンパイラ最適化処理を施した上で、検査仕様を踏まえて制御フローグラフモデルを作成するステップと、制御フローグラフモデルを参照し、検査仕様で指定されたエントリ関数から呼び出される関数を検出し、検出された関数のブロック数と評価値を算出し、算出されたブロック数と評価に基づいて、検出された関数の中から、検証対象に追加する関数を選択し、選択された関数に基づいて、制御フローグラフモデルを変換するステップと、変換された制御フローグラフモデルを参照し、計算木論理を用いた記号モデル検査法に即して検査モデルを作成し、検査モデルに対して、計算木論理を用いた記号モデル検査法に即して検査を実行し、実行された検査の結果を出力するステップとをコンピュータに実行させるためのプログラムである。 The verification target function automatic selection program of the present invention reads a test specification and a test target code, performs a compiler optimization process on the test target code, and creates a control flow graph model based on the test specification; Refers to the control flow graph model, detects the function called from the entry function specified in the inspection specification, calculates the block number and evaluation value of the detected function, and detects based on the calculated block number and evaluation The function to be added to the verification target is selected from the converted functions, and the step of converting the control flow graph model based on the selected function and the converted control flow graph model are referred to, and the calculation tree logic is Create an inspection model according to the symbol model inspection method used, and inspect the inspection model according to the symbol model inspection method using computational tree logic. And a program for causing a computer to execute a step of executing and outputting a result of the executed inspection.

モデル検査に先立って、検証対象のモデルの再構築を行うことにより、与えられた検証時間内により有効な検証結果が得られる。   Prior to model checking, a model to be verified is reconstructed, so that a more effective verification result can be obtained within a given verification time.

本発明の検証対象関数自動選択装置の構成例を示すブロック図である。It is a block diagram which shows the structural example of the verification object function automatic selection apparatus of this invention. 本発明の検証対象関数自動選択装置の動作を示すフローチャートである。It is a flowchart which shows operation | movement of the verification object function automatic selection apparatus of this invention. 評価値(X,Y)の算出に用いられる規則の例を示す図である。It is a figure which shows the example of the rule used for calculation of evaluation value (X, Y). 第1のエントリ関数の例を示す図である。It is a figure which shows the example of a 1st entry function. 第1のエントリ関数の処理結果の例を示す図である。It is a figure which shows the example of the process result of a 1st entry function. 第2のエントリ関数の例を示す図である。It is a figure which shows the example of a 2nd entry function. 第2のエントリ関数の処理結果の例を示す図である。It is a figure which shows the example of the process result of a 2nd entry function. 第3のエントリ関数の例を示す図である。It is a figure which shows the example of a 3rd entry function. 第3のエントリ関数の処理結果の例を示す図である。It is a figure which shows the example of the process result of a 3rd entry function. 検証対象関数選択部の動作を示すフローチャートである。It is a flowchart which shows operation | movement of a verification object function selection part. 検証対象関数選択部による第1のエントリ関数の処理結果の例を示す図である。It is a figure which shows the example of the process result of the 1st entry function by a verification object function selection part. 検証対象関数選択部による第2のエントリ関数の処理結果の例を示す図である。It is a figure which shows the example of the process result of the 2nd entry function by a verification object function selection part. 検証対象関数選択部による第3のエントリ関数の処理結果の例を示す図である。It is a figure which shows the example of the process result of the 3rd entry function by a verification object function selection part.

<本実施形態>
以下に、本発明の実施形態について添付図面を参照して説明する。
図1に示すように、本発明の検証対象関数自動選択装置は、検査仕様1と検査対象コード(検査対象プログラム)2を入力し、検査結果3を出力する。
<This embodiment>
Embodiments of the present invention will be described below with reference to the accompanying drawings.
As shown in FIG. 1, the verification target function automatic selection device of the present invention inputs an inspection specification 1 and an inspection target code (inspection target program) 2 and outputs an inspection result 3.

本発明の検証対象関数自動選択装置は、モデル検査制御部10と、記憶装置20と、検証対象関数選択部30を含む。   The verification target function automatic selection device of the present invention includes a model checking control unit 10, a storage device 20, and a verification target function selection unit 30.

モデル検査制御部10は、制御フローグラフモデル作成部11と、検査モデル作成部12と、モデル検査実行部13と、検査結果出力部14を含む。 The model check control unit 10 includes a control flow graph model creation unit 11, a check model creation unit 12, a model check execution unit 13, and a check result output unit 14.

記憶装置20は、変換前制御フローグラフモデル記憶部21と、変換後制御フローグラフモデル記憶部22と、検査モデル記憶部23を含む。 The storage device 20 includes a pre-conversion control flow graph model storage unit 21, a post-conversion control flow graph model storage unit 22, and an inspection model storage unit 23.

検証対象関数選択部30は、呼び出し関数検出部31と、関数評価部32と、検証対象関数選択部33と、制御フローグラフモデル変換部34を含む。検証対象関数選択部30は、本特許の特徴的な構成要素である。
The verification target function selection unit 30 includes a call function detection unit 31, a function evaluation unit 32, a verification target function selection unit 33, and a control flow graph model conversion unit 34. The verification target function selection unit 30 is a characteristic component of this patent.

制御フローグラフモデル作成部11は、検査仕様1と検査対象コード2を読み込み、従来技術のコンパイラ最適化処理を実施した上で制御フローグラフモデルを作成し、記憶装置20の変換前制御フローグラフモデル記憶部21に出力する。 Control flow graph model creation unit 11 reads the inspection object code 2 and the inspection specification 1, the compiler optimization process of the prior art to create a control flow graph model after having carried out, before the conversion of the storage device 20 control flow graph model The data is output to the storage unit 21.

ここで、検査仕様1は、検証対象の起点となる関数(エントリ関数)の名前、検証上限時間、及び検証方法等を指示するオプション類を含んでいる。更に、本発明においては、検査仕様1は、検証を行うモデルの制御フローグラフ表現における最大ブロック数を含んでいる。 Here, the inspection specification 1 includes options indicating the name of the function (entry function) that is the starting point of the verification target, the verification upper limit time, the verification method, and the like. Furthermore, in the present invention, the inspection specification 1 includes the maximum number of blocks in the control flow graph representation of the model to be verified.

検査モデル作成部12は、記憶装置20の変換後制御フローグラフモデル記憶部2から制御フローグラフモデルを読み込み、従来技術である計算木論理(Computation Tree Logic:CTL)を用いた記号モデル検査法に即して検査モデルを作成し、記憶装置20の検査モデル記憶部23に出力する。
Test model creation unit 12 reads the control flow graph model from the converted control flow graph model storage unit 2 2 of the storage device 20 is a conventional computation tree logic (Computation Tree Logic: CTL) symbolic model checking method using The inspection model is created according to the above and is output to the inspection model storage unit 23 of the storage device 20.

モデル検査実行部13は、記憶装置20の検査モデル記憶部23から検査モデルを読み込み、上記の従来技術の計算木論理を用いた記号モデル検査法に即して検査を実行する。 The model checking execution unit 13 reads the checking model from the checking model storage unit 23 of the storage device 20, and executes checking in accordance with the symbol model checking method using the above-described conventional calculation tree logic .

検査結果出力部14は、モデル検査実行部1が実行した検査の結果を検査結果3として出力する。
Inspection result output unit 14 outputs the results of the examination of the model test execution unit 1 3 is executed as a test result 3.

呼び出し関数検出部31は、記憶装置20の変換前制御フローグラフモデル記憶部21に保持された制御フローグラフモデルを読み込み、検査仕様1で指定されたエントリ関数から呼び出される関数を検出する。 The calling function detection unit 31 reads the control flow graph model held in the pre-conversion control flow graph model storage unit 21 of the storage device 20 and detects a function called from the entry function specified by the inspection specification 1.

関数評価部32は、呼び出し関数検出部31が検出した関数のそれぞれに対し、その関数のブロック数と評価値を算出する。   The function evaluation unit 32 calculates the number of blocks and the evaluation value of each function detected by the calling function detection unit 31.

検証対象関数選択部33は、検査仕様1に指定された最大ブロック数の範囲内で、評価値の高い関数を選択する。   The verification target function selection unit 33 selects a function having a high evaluation value within the range of the maximum number of blocks specified in the inspection specification 1.

制御フローグラフモデル変換部34は、検証対象関数選択部33が選択した関数から制御フローグラフモデルが構成されるように制御フローグラフモデルを変換し、変換された制御フローグラフモデルを変換後制御フローグラフモデル記憶部22に出力する。 Control flow graph model conversion unit 34, the verification target function selecting section 33 is a control flow graph model from the selected function to convert the control flow graph model as constructed, transformed converted control flow of the control flow graph model The data is output to the graph model storage unit 22.

<本実施形態の動作の説明>
次に、図2のフローチャートを参照して、本実施形態の動作について詳細に説明する。
<Description of operation of this embodiment>
Next, the operation of this embodiment will be described in detail with reference to the flowchart of FIG.

(1)ステップA1
まず、制御フローグラフモデル作成部11は、検査仕様1及び検査対象コード2を参照し、検査対象コード2にコンパイラ最適化処理を施した上で、検査仕様1を踏まえて制御フローグラフモデルを作成し、この制御フローグラフモデルを変換前制御フローグラフモデル記憶部21に記憶する。コンパイラ最適化処理ならびに制御フローグラフモデル作成処理は、例えば、“「コンパイラII 原理・技法・ツール」A.V.エイホ、R.セシィ、 J.D.ウルマン著(非特許文献2)”に記載されているような従来技術で行う。
(1) Step A1
First, the control flow graph model creation unit 11 refers to the inspection specification 1 and the inspection target code 2, performs compiler optimization processing on the inspection target code 2, and generates a control flow graph model based on the inspection specification 1. The control flow graph model is stored in the pre-conversion control flow graph model storage unit 21. The compiler optimization processing and control flow graph model creation processing are described in, for example, “" Compiler II Principle / Technique / Tool ”A.1. V. Aiho, R.A. Cessie, J. D. The conventional technique as described in “Ullman (Non-Patent Document 2)” is used.

(2)ステップA2
次に、呼び出し関数検出部31は、変換前制御フローグラフモデル記憶部21に記憶された制御フローグラフモデルの中から、検査仕様1で指定されたエントリ関数から直接的又は間接的に呼び出される関数全てを検出する。
(2) Step A2
Next, the calling function detector 31 function from the stored control flow graph model pre-conversion control flow graph model storage unit 21, are directly or indirectly called from the entry function specified in the inspection specification 1 Detect all.

(3)ステップA3
次に、関数評価部32は、検出された関数のブロック数と評価値を算出する。詳細については後述する。
(3) Step A3
Next, the function evaluation unit 32 calculates the number of blocks of the detected function and the evaluation value. Details will be described later.

(4)ステップA4
次に、検証対象関数選択部33は、算出されたブロック数と評価に基づいて、検出された関数の中から、検証対象に追加する関数を選択する。
(4) Step A4
Next, the verification target function selection unit 33 selects a function to be added to the verification target from the detected functions based on the calculated number of blocks and evaluation.

(5)ステップA5
次に、制御フローグラフモデル変換部34は、選択された関数以外の関数を制御フローグラフモデルから削除し、選択された関数のみ関数として残された制御フローグラフモデルを、変換後制御フローグラフモデル記憶部22に記憶する。
(5) Step A5
Then, the control flow graph model conversion unit 34 deletes the function other than the selected function from the control flow graph model, a control flow graph model remains as a function only the selected function, the converted control flow graph model Store in the storage unit 22.

(6)ステップA6
次に、検査モデル作成部12は、変換後制御フローグラフモデル記憶部22に記憶された制御フローグラフモデルから検査モデルを作成し、この検査モデルを検査モデル記憶部23に記憶する。検査モデル作成処理は、例えば、“産業技術総合研究所システム検証研究センター、テクニカルレポート「抽象化を用いた検証ツールの調査」田辺良則、高井利憲、高橋孝一(非特許文献3)”に記載されているような従来技術で行う。
(6) Step A6
Next, the test model creation unit 12 creates a test model from the control flow graph model stored in the converted control flow graph model storage unit 22 stores this test model the test model storage unit 23. The inspection model creation process is described in, for example, “National Institute of Advanced Industrial Science and Technology, System Verification Research Center, Technical Report“ Survey of Verification Tools Using Abstraction ”Yoshinori Tanabe, Toshinori Takai, Koichi Takahashi (Non-patent Document 3)”. This is done with conventional technology.

(7)ステップA7
モデル検査実行部13は、検査モデル記憶部23に記憶された検査モデルを読み込み、モデル検査を実施する。
(7) Step A7
The model checking execution unit 13 reads the checking model stored in the checking model storage unit 23 and performs model checking.

(8)ステップA8
最後に、検査結果出力部14は、モデル検査の結果を検査結果3として出力する。
(8) Step A8
Finally, the inspection result output unit 14 outputs the result of the model inspection as the inspection result 3.

ここで、ステップA3に関して、詳細に説明する。
関数評価部32は、検出された関数の、ブロック数と評価値を算出する。このとき、関数のブロック数とは、その関数の制御フローグラフ表現におけるブロック数とする。
Here, step A3 will be described in detail.
The function evaluation unit 32 calculates the number of blocks and the evaluation value of the detected function. At this time, the number of blocks of the function is the number of blocks in the control flow graph representation of the function.

また、関数の評価値は、任意値の参照の有無と、下位関数が上位関数に対する検証精度向上への影響度によりランク付けができる指標を設定するが、具体的な指標はモデル検査実行部13の特性により異なるため、ここでは例を用いて説明する。   The function evaluation value is set as an index that can be ranked according to the presence or absence of reference to an arbitrary value and the influence of the lower function on improving the verification accuracy with respect to the upper function. Since this differs depending on the characteristics, an example will be described here.

この例では、評価値(X,Y)は、「X」と「Y」の二つの値から構成されるものとする。   In this example, the evaluation value (X, Y) is assumed to be composed of two values “X” and “Y”.

「X」は、その関数から呼び出される関数(下位関数と呼ぶ)が任意値を返すものとした場合に得られる評価値とする。また、「Y」は、下位関数の評価値を踏まえて得られる評価値とする。   “X” is an evaluation value obtained when a function called from the function (referred to as a lower function) returns an arbitrary value. “Y” is an evaluation value obtained based on the evaluation value of the lower function.

従って、下位関数がない場合、「X」と「Y」は同じ値となる。これにより、下位関数が検証対象関数として選択されなかった場合の評価値が「X」、下位関数が検証対象関数として選択された場合の評価値が「Y」とみなすことができる。   Therefore, when there is no lower function, “X” and “Y” have the same value. As a result, the evaluation value when the lower function is not selected as the verification target function can be regarded as “X”, and the evaluation value when the lower function is selected as the verification target function can be regarded as “Y”.

評価値(X,Y)の算出には、図3の規則を用いる。
図3には、以下の3つの規則が示されている。
The rule of FIG. 3 is used for calculation of the evaluation values (X, Y).
FIG. 3 shows the following three rules.

(1)規則1:関数の戻り値を上位関数で使用している場合
戻り値の計算式の中に直接又は間接に任意値を含む場合、0点加算する(点を加算しない)。
戻り値の計算式の中に直接又は間接に任意値を含まない場合、1点加算する。
(1) Rule 1: When the return value of a function is used in a higher-order function When an arbitrary value is included directly or indirectly in the return value calculation formula, 0 points are added (points are not added).
If an arbitrary value is not included directly or indirectly in the return value calculation formula, one point is added.

(2)規則2:関数の引数がアドレス渡しの場合
関数内でその引数が指す先に代入している計算式の中に直接又は間接に任意値を含む場合、0点加算する(点を加算しない)。
関数内でその引数が指す先に代入している計算式の中に直接又は間接に任意値を含まない場合、引数1つにつき1点加算する。
(2) Rule 2: When a function argument is passed by address If an arbitrary value is included directly or indirectly in a calculation expression assigned to the argument pointed to in the function, 0 points are added (add points) do not do).
If an arbitrary value is not included directly or indirectly in the calculation expression assigned to the destination indicated by the argument in the function, one point is added for each argument.

(3)規則3:関数の大域変数の代入がある場合
その代入する計算式の中に間接的に任意値を含む場合、0点加算する(点を加算しない)。
その代入する計算式の中に間接的に任意値を含まない場合、大域変数1つにつき1点加算する。
(3) Rule 3: When there is an assignment of a global variable of a function When an arbitrary value is indirectly included in the calculation formula to be assigned, 0 points are added (points are not added).
When an arbitrary value is not indirectly included in the calculation formula to be substituted, one point is added for each global variable.

この規則は、アドレス渡し引数及び大域変数の場合は、1つに付き1点加算する点が特徴である。その理由は、上位関数で影響を受ける変数の数が多いほど、検証に与える影響が大きいためである。   This rule is characterized in that one point is added for each address passing argument and global variable. The reason is that the greater the number of variables affected by the upper function, the greater the effect on verification.

次に、図4から図9を参照して、関数評価部32の動作を具体的に説明する。   Next, the operation of the function evaluation unit 32 will be specifically described with reference to FIGS. 4 to 9.

図4を参照して、図3の規則1,規則2,規則3について説明する。   With reference to FIG. 4, rule 1, rule 2, and rule 3 in FIG. 3 will be described.

図4で、「entry1」がエントリ関数とする。「entry1」からは「f1」,「f2」,「f3」の各関数が呼ばれている。   In FIG. 4, “entry1” is an entry function. From “entry1”, “f1”, “f2”, and “f3” functions are called.

「f1」の戻り値は、上位関数で使用されており、戻り値の計算式の中に直接又は間接に任意値を含まないため、図3の規則1により、評価値は「1」となる。   Since the return value of “f1” is used in the upper function and does not include an arbitrary value directly or indirectly in the calculation formula of the return value, the evaluation value is “1” according to rule 1 in FIG. .

「f2」のアドレス渡し引数は、2つとも「f2」内で値が代入されており、2つとも「f2」内でその引数が指す先に代入している計算式の中に直接又は間接に任意値を含まないため、図3の規則2により、評価値は「2」となる。   Both of the address passing arguments of “f2” are assigned values in “f2”, and both of them are directly or indirectly in the calculation formula assigned to the destination indicated by the argument in “f2”. Does not include an arbitrary value, the evaluation value is “2” according to rule 2 in FIG.

また、「f3」の場合は、3つの大域変数に値が代入されており、その代入する計算式の中に直接又は間接に任意値を含まないため、図3の規則3により、評価値は「3」となる。   Further, in the case of “f3”, values are assigned to the three global variables, and the calculation value to be assigned does not include an arbitrary value directly or indirectly. Therefore, according to Rule 3 in FIG. “3”.

また、「f1」,「f2」,「f3」は、下位関数を持たないため、評価値(X,Y)の「X」と「Y」は同じ値となる。   Further, since “f1”, “f2”, and “f3” do not have lower functions, “X” and “Y” of the evaluation values (X, Y) are the same value.

従って、「f1」,「f2」,「f3」の評価値は、それぞれ(1,1),(2,2),(3,3)となる。   Therefore, the evaluation values of “f1”, “f2”, and “f3” are (1, 1), (2, 2), and (3, 3), respectively.

この結果を図示したのが図5である。   This result is shown in FIG.

図5において、“「f1」(1,1):18”は、関数「f1」のブロック数は「18」であり、評価値は(1,1)であることを意味する。同様に、“「f2」(2,2):28”は、関数「f2」のブロック数は「28」であり、評価値は(2,2)であることを意味する。“「f3」(3,3):38”は、関数「f3」のブロック数は「38」であり、評価値は(3,3)であることを意味する。ブロック数は、図6の例では具体的に示していないが、後述する検証対象関数選択部33の動作を説明するために例として付与した値である。   In FIG. 5, ““ f1 ”(1,1): 18” means that the number of blocks of the function “f1” is “18” and the evaluation value is (1,1). Similarly, ““ f2 ”(2, 2): 28” means that the number of blocks of the function “f2” is “28” and the evaluation value is (2, 2). ““ F3 ”(3, 3): 38” means that the number of blocks of the function “f3” is “38” and the evaluation value is (3, 3). Although the number of blocks is not specifically shown in the example of FIG. 6, it is a value given as an example to explain the operation of the verification target function selection unit 33 described later.

次に、図6を参照して、図3の1の規則について説明する。   Next, the rule 1 in FIG. 3 will be described with reference to FIG.

図6で、「entry2」がエントリ関数とする。「entry2」からは「g1」,「g4」,「g6」の各関数が呼ばれている。また、「g1」,「g4」,「g6」の各関数の戻り値は、上位関数「i」,「j」,「k」で使用されている。   In FIG. 6, “entry2” is an entry function. From “entry2”, the functions “g1”, “g4”, and “g6” are called. The return values of the functions “g1”, “g4”, and “g6” are used in the upper functions “i”, “j”, and “k”.

「g1」,「g2」,「g3」,「g4」は、下位関数を持つ。「g5」,「g6」は、下位関数を持たない。   “G1”, “g2”, “g3”, and “g4” have lower functions. “G5” and “g6” have no lower function.

ここで、「g3」から呼ばれている下位関数「undet」は、検証対象コード2に含まれていない関数である。従って、「undet」の戻り値は、任意値である。「g3」は、戻り値の計算式の中に、間接に任意値を含むため、評価値は「0」である。同様に、「g2」、「g1」は、それぞれ戻り値の計算式の中に、間接に任意値を含むことになるため、評価値は「0」である。   Here, the lower function “undet” called from “g3” is a function not included in the verification target code 2. Therefore, the return value of “undet” is an arbitrary value. Since “g3” includes an arbitrary value indirectly in the calculation formula of the return value, the evaluation value is “0”. Similarly, since “g2” and “g1” each include an arbitrary value indirectly in the calculation formula of the return value, the evaluation value is “0”.

これに対し、「g5」,「g6」は、戻り値の計算式の中に、直接又は間接に任意値を含まないため、評価値は「1」である。同様に、「g4」は、それぞれ戻り値の計算式の中に、間接に任意値を含まないことになるため、評価値は「1」である。   On the other hand, since “g5” and “g6” do not include an arbitrary value directly or indirectly in the calculation formula of the return value, the evaluation value is “1”. Similarly, since “g4” does not indirectly include an arbitrary value in the calculation formula of the return value, the evaluation value is “1”.

このとき、「g3」の評価値(X,Y)の「X」は、「g3」から呼び出される下位関数「undet」が任意値を返すため、「0」となる。また、「Y」は、下位関数「undet」の評価値が「0」であるため、「0」となる。   At this time, “X” of the evaluation value (X, Y) of “g3” is “0” because the lower function “undet” called from “g3” returns an arbitrary value. “Y” is “0” because the evaluation value of the lower function “undet” is “0”.

「g2」の評価値(X,Y)の「X」は、「g2」から呼び出される下位関数「g3」が任意値を返すため、「0」となる。また、「Y」は、下位関数「g3」の評価値が「0」であるため、「0」となる。   “X” of the evaluation value (X, Y) of “g2” is “0” because the lower function “g3” called from “g2” returns an arbitrary value. “Y” is “0” because the evaluation value of the lower function “g3” is “0”.

「g1」の評価値(X,Y)の「X」は、「g1」から呼び出される下位関数「g2」が任意値を返すため、「0」となる。また、「Y」は、下位関数「g2」の評価値が「0」であるため、「0」となる。   “X” of the evaluation value (X, Y) of “g1” is “0” because the lower function “g2” called from “g1” returns an arbitrary value. “Y” is “0” because the evaluation value of the lower function “g2” is “0”.

「g5」,「g6」は、下位関数を持たないため、評価値(X,Y)の「X」と「Y」は、同じく「1」となる。   Since “g5” and “g6” have no lower function, “X” and “Y” of the evaluation values (X, Y) are also “1”.

「g4」の評価値(X,Y)の「X」は、「g4」から呼び出される下位関数「g5」が、「g4」から呼び出される時点では任意値であるため、「0」となる。また、「Y」は、下位関数「g5」の評価値が「1」であるため、「1」となる。   “X” of the evaluation value (X, Y) of “g4” is “0” because the lower function “g5” called from “g4” is an arbitrary value when called from “g4”. “Y” is “1” because the evaluation value of the lower function “g5” is “1”.

従って、「g1」,「g2」,「g3」,「g4」,「g5」,「g6」の評価値は、それぞれ(0,0),(0,0),(0,0),(0,1),(1,1),(1,1)となる。   Therefore, the evaluation values of “g1”, “g2”, “g3”, “g4”, “g5”, “g6” are (0, 0), (0, 0), (0, 0), ( 0, 1), (1, 1), (1, 1).

この結果を図示したのが図7である。   This result is shown in FIG.

図7におけるブロック数は、図5と同様に、例として付与した値である。   The number of blocks in FIG. 7 is a value given as an example, as in FIG.

図7において、“「g1」(0,0):18”は、関数「g1」のブロック数は「18」であり、評価値は(0,0)であることを意味する。同様に、“「g2」(0,0):28”は、関数「g2」のブロック数は「28」であり、評価値は(0,0)であることを意味する。“「g3」(0,0):18”は、関数「g3」のブロック数は「18」であり、評価値は(0,0)であることを意味する。“「g4」(0,1):28”は、関数「g4」のブロック数は「28」であり、評価値は(0,1)であることを意味する。“「g5」(1,1):18”は、関数「g5」のブロック数は「18」であり、評価値は(1,1)であることを意味する。“「g6」(1,1):38”は、関数「g6」のブロック数は「38」であり、評価値は(1,1)であることを意味する。   In FIG. 7, ““ g1 ”(0, 0): 18” means that the number of blocks of the function “g1” is “18” and the evaluation value is (0, 0). Similarly, ““ g2 ”(0, 0): 28” means that the number of blocks of the function “g2” is “28” and the evaluation value is (0, 0). ““ G3 ”(0,0): 18” means that the number of blocks of the function “g3” is “18” and the evaluation value is (0,0). ““ G4 ”(0, 1): 28” means that the number of blocks of the function “g4” is “28” and the evaluation value is (0, 1). ““ G5 ”(1,1): 18” means that the number of blocks of the function “g5” is “18” and the evaluation value is (1,1). ““ G6 ”(1, 1): 38” means that the number of blocks of the function “g6” is “38” and the evaluation value is (1, 1).

同様に、図8で「entry3」がエントリ関数とすると、図9に図示した評価値となる。図9においてもブロック数は、後述する検証対象関数選択部33の動作を説明するために付与した例である。   Similarly, when “entry3” in FIG. 8 is an entry function, the evaluation value illustrated in FIG. 9 is obtained. Also in FIG. 9, the number of blocks is an example given for explaining the operation of the verification target function selection unit 33 described later.

図8で、「entry3」がエントリ関数とする。「entry3」からは「h1」,「h4」,「h6」の各関数が呼ばれている。   In FIG. 8, “entry3” is an entry function. From “entry3”, functions “h1”, “h4”, and “h6” are called.

「h1」,「h2」,「h4」は、下位関数を持つ。「h3」,「h5」,「h6」は、下位関数を持たない   “H1”, “h2”, and “h4” have lower functions. “H3”, “h5”, and “h6” have no lower-order function

ここで、「h3」は、2つの大域変数に値が代入されており、その代入する計算式の中に直接又は間接に任意値を含まないため、図3の規則3により、評価値はそれぞれ「2」となる。「h3」は、下位関数を持たないため、評価値(X,Y)の「X」と「Y」は、同じく「2」となる。   Here, since “h3” has values assigned to two global variables, and the calculation formula to be assigned does not include an arbitrary value directly or indirectly, according to rule 3 in FIG. “2”. Since “h3” does not have a lower function, “X” and “Y” of the evaluation values (X, Y) are also “2”.

「h2」の評価値(X,Y)の「X」は、「h2」から呼び出される下位関数「h3」が、「h2」から呼び出される時点では任意値であるため、「0」となる。また、「Y」は、下位関数「h3」の評価値が「2」であるため、「2」となる。   “X” of the evaluation value (X, Y) of “h2” is “0” because the lower function “h3” called from “h2” is an arbitrary value when called from “h2”. “Y” is “2” because the evaluation value of the lower function “h3” is “2”.

「h1」の評価値(X,Y)の「X」は、「h1」から呼び出される下位関数「h2」が、「h1」から呼び出される時点では任意値であるため、「0」となる。また、「Y」は、下位関数「h2」の評価値が「2」であるため、「2」となる。   “X” of the evaluation value (X, Y) of “h1” is “0” because the lower function “h2” called from “h1” is an arbitrary value when called from “h1”. “Y” is “2” because the evaluation value of the lower function “h2” is “2”.

「h5」,「h6」は、1つの大域変数に値が代入されており、その代入する計算式の中に直接又は間接に任意値を含まないため、図3の規則3により、評価値はそれぞれ「1」となる。「h5」,「h6」は、下位関数を持たないため、評価値(X,Y)の「X」と「Y」は、同じく「1」となる。   Since “h5” and “h6” have values assigned to one global variable and do not include any arbitrary value directly or indirectly in the calculation formula to be assigned, the evaluation value is determined according to rule 3 in FIG. Each is “1”. Since “h5” and “h6” do not have lower functions, “X” and “Y” of the evaluation values (X, Y) are also “1”.

「h4」の評価値(X,Y)の「X」は、「h4」から呼び出される下位関数「h5」が、「h4」から呼び出される時点では任意値であるため、「0」となる。また、「Y」は、下位関数「h5」の評価値が「1」であるため、「1」となる。   “X” of the evaluation value (X, Y) of “h4” is “0” because the lower function “h5” called from “h4” is an arbitrary value when called from “h4”. “Y” is “1” because the evaluation value of the lower function “h5” is “1”.

従って、「h1」,「h2」,「h3」,「h4」,「h5」,「h6」の評価値は、それぞれ(0,2),(0,2),(2,2),(0,1),(1,1),(1,1)となる。   Therefore, the evaluation values of “h1”, “h2”, “h3”, “h4”, “h5”, “h6” are (0, 2), (0, 2), (2, 2), ( 0, 1), (1, 1), (1, 1).

この結果を図示したのが図9である。   FIG. 9 shows the result.

図9におけるブロック数は、図5、図7と同様に、例として付与した値である。   The number of blocks in FIG. 9 is a value given as an example, as in FIGS.

図9において、“「h1」(0,2):60”は、関数「h1」のブロック数は「60」であり、評価値は(0,2)であることを意味する。同様に、“「h2」(0,2):28”は、関数「h2」のブロック数は「28」であり、評価値は(0,2)であることを意味する。“「h3」(2,2):18”は、関数「h3」のブロック数は「18」であり、評価値は(2,2)であることを意味する。“「h4」(0,1):28”は、関数「h4」のブロック数は「28」であり、評価値は(0,1)であることを意味する。“「h5」(1,1):18”は、関数「h5」のブロック数は「18」であり、評価値は(1,1)であることを意味する。“「h6」(1,1):38”は、関数「h6」のブロック数は「38」であり、評価値は(1,1)であることを意味する。   In FIG. 9, ““ h1 ”(0, 2): 60” means that the number of blocks of the function “h1” is “60” and the evaluation value is (0, 2). Similarly, ““ h2 ”(0, 2): 28” means that the number of blocks of the function “h2” is “28” and the evaluation value is (0, 2). ““ H3 ”(2, 2): 18” means that the number of blocks of the function “h3” is “18” and the evaluation value is (2, 2). ““ H4 ”(0, 1): 28” means that the number of blocks of the function “h4” is “28” and the evaluation value is (0, 1). ““ H5 ”(1,1): 18” means that the number of blocks of the function “h5” is “18” and the evaluation value is (1,1). ““ H6 ”(1, 1): 38” means that the number of blocks of the function “h6” is “38” and the evaluation value is (1, 1).

<検証対象関数選択部33の動作の説明>
次に、図10のフローチャートを参照して、検証対象関数選択部33が、算出された関数のブロック数と評価値を用いて、検証対象に追加する関数を選択する際の動作(図2のステップA4)に関して、詳細に説明する。
<Description of Operation of Verification Target Function Selection Unit 33>
Next, referring to the flowchart of FIG. 10, the verification target function selection unit 33 uses the calculated number of function blocks and the evaluation value to select a function to be added to the verification target (in FIG. 2). Step A4) will be described in detail.

すなわち、図2のステップA4は、図10のフローチャートのステップA401からA410までの処理を含む。これらのステップに関しては、先に説明した関数の指標値と同様に、モデル検査実行部13の特性により異なるロジックを適用する必要があるため、その特性に合わせて選択方法を定義する。ここでは、図5と図11、図7と図12、及び図9と図13を参照して、選択方法の例を用いて検証対象関数選択部33の動作を具体的に説明する。   That is, step A4 in FIG. 2 includes processing from steps A401 to A410 in the flowchart in FIG. With respect to these steps, similar to the index value of the function described above, it is necessary to apply different logic depending on the characteristics of the model check execution unit 13, and therefore a selection method is defined according to the characteristics. Here, with reference to FIGS. 5 and 11, FIGS. 7 and 12, and FIGS. 9 and 13, the operation of the verification target function selection unit 33 will be specifically described using an example of a selection method.

図10のフローチャートにおいて、判断済マークというのは、制御フローグラフにおける各関数のモデルに対して設定されるフラグ情報であり、処理の過程で判断済マークをつけることで、その関数のモデルを検査対象に含める/含めないの判断が既に設定済みであることを示している。 In the flowchart of FIG. 10, the determined mark is flag information set for each function model in the control flow graph , and the function model is inspected by attaching the determined mark in the process. This indicates that the determination whether or not to include the target has already been set.

<(a)図5及び図11の例に対する動作>
まず、図5及び図11の例に対する検証対象関数選択部33の動作を説明する。この例では、評価値が高い、すなわち上位関数に対する影響度が高い順番に、関数が選択されることを説明する。また、検査仕様1で最大ブロック数には「70」が指定されているものとする。
<(A) Operation for the Example of FIGS. 5 and 11>
First, the operation of the verification target function selection unit 33 for the examples of FIGS. 5 and 11 will be described. In this example, it will be described that functions are selected in descending order of evaluation value, that is, the degree of influence on the upper function. Further, it is assumed that “70” is designated as the maximum number of blocks in the inspection specification 1.

(1)ステップA401
検証対象関数選択部33は、判断済マークがついていない関数の中で、エントリ関数からの呼び出し階層の最も低い関数群を選ぶ。この段階では、判断済マークがついている関数はない。検証対象関数選択部33は、エントリ関数からの呼び出し階層が全て同じなので、「f1」,「f2」,「f3」を選ぶ。
(1) Step A401
The verification target function selection unit 33 selects a function group having the lowest calling hierarchy from the entry function among the functions not having the determined mark. At this stage, there is no function with a determined mark. The verification target function selection unit 33 selects “f1”, “f2”, and “f3” because the call layers from the entry functions are all the same.

(2)ステップA402
検証対象関数選択部33は、関数候補があるか確認する。すなわち、検証対象関数選択部33は、選ばれた関数群があるか確認する。ここでは、選ばれた「f1」,「f2」,「f3」が関数候補となる。検証対象関数選択部33は、関数候補(選ばれた関数群)がなければ、ここで処理を終了する。
(2) Step A402
The verification target function selection unit 33 checks whether there is a function candidate. That is, the verification target function selection unit 33 confirms whether there is a selected function group. Here, the selected “f1”, “f2”, and “f3” are function candidates. If there is no function candidate (selected function group), the verification target function selection unit 33 ends the process.

(3)ステップA403
検証対象関数選択部33は、関数候補(選ばれた関数群)があれば、選ばれた関数群のうち呼び出し階層が同位のものの中で、評価値(X,Y)の「X」の値が最大の関数群を選ぶ。ここでは、検証対象関数選択部33は、選ばれた「f1」,「f2」,「f3」の中で、評価値「X」が最大なものは「f3」なので、「f3」を選ぶ。
(3) Step A403
If there is a function candidate (selected function group), the verification target function selecting unit 33 selects an evaluation value (X, Y) of “X” among the selected function groups having the same calling hierarchy. Choose the function group with the largest. Here, the verification target function selection unit 33 selects “f3” because “f3” has the largest evaluation value “X” among the selected “f1”, “f2”, and “f3”.

(4)ステップA404
次に、検証対象関数選択部33は、評価値(X,Y)の「X」の値が同位のものの中で、評価値(X,Y)の「Y」の値が最大の関数群を選ぶ。
(4) Step A404
Next, the verification target function selection unit 33 selects a function group having the highest evaluation value (X, Y) “Y” among the evaluation values (X, Y) of the same value. Choose.

(5)ステップA405
次に、検証対象関数選択部33は、評価値(X,Y)の「Y」の値が同位のものの中で、関数のブロック数が最小の関数群を選ぶ。
(5) Step A405
Next, the verification target function selection unit 33 selects a function group having the smallest number of function blocks among the evaluation values (X, Y) having the same “Y” value.

(6)ステップA406
次に、検証対象関数選択部33は、関数のブロック数が同位のものの中で、制御フローグラフモデル上で最左の関数を選ぶ。
(6) Step A406
Next, the verification target function selection unit 33 selects the leftmost function on the control flow graph model among the functions having the same number of blocks.

この例では、ステップA403の段階で一つの関数「f3」に絞りこまれたので、ステップA404からステップA406を適用しても、「f3」が選ばれることになる。   In this example, since the function “f3” has been narrowed down to step A403, even if the steps A404 to A406 are applied, “f3” is selected.

(7)ステップA407
次に、検証対象関数選択部33は、選択された関数の評価値(X,Y)の「Y」の値が「0」でないか確認する。ここでは、選ばれた「f3」の評価値(X,Y)の「Y」は「0」でないので、次の処理(ステップA408)に移る。
(7) Step A407
Next, the verification target function selection unit 33 checks whether the value “Y” of the evaluation value (X, Y) of the selected function is not “0”. Here, since “Y” of the selected evaluation value (X, Y) of “f3” is not “0”, the process proceeds to the next processing (step A408).

(8)ステップA408
次に、検証対象関数選択部33は、累積ブロック数に関数ブロック数を加算した値が検査仕様1で与えられている最大ブロック数を超えないか確認する。ここでは、この段階での累積ブロック数は「0」であり、この累積ブロック数に「f3」のブロック数「38」を加算した値「38」は、この例で仮定した最大ブロック数「70」を超えないので、次の処理(ステップA409)に移る。
(8) Step A408
Next, the verification target function selection unit 33 confirms whether the value obtained by adding the number of function blocks to the cumulative number of blocks does not exceed the maximum number of blocks given in the inspection specification 1. Here, the cumulative block number at this stage is “0”, and the value “38” obtained by adding the block number “38” of “f3” to this cumulative block number is the maximum block number “70” assumed in this example. ”Does not exceed, the process proceeds to the next process (step A409).

(9)ステップA409
次に、検証対象関数選択部33は、該当関数を検証対象に追加し、判断済マークを付ける。また、検証対象関数選択部33は、累積ブロック数に該当関数のブロック数を加算する。ここでは、検証対象関数選択部33は、ここまでの条件を満たした「f3」を検査対象に追加し、判断済マークを付ける。累積ブロック数は「38」となる。その後、最初の処理(ステップA401)に戻る。
(9) Step A409
Next, the verification target function selection unit 33 adds the corresponding function to the verification target and puts a determination mark. In addition, the verification target function selection unit 33 adds the number of blocks of the corresponding function to the cumulative number of blocks. Here, the verification target function selection unit 33 adds “f3” that satisfies the conditions so far to the inspection target and puts a determined mark. The cumulative number of blocks is “38”. Thereafter, the process returns to the first process (step A401).

検証対象関数選択部33は、再び、ステップA401からステップA407を、この段階で判断済マークがついていない「f1」,「f2」に適用し、「f2」を選択する。この処理の流れを以下に詳述する。   The verification target function selection unit 33 again applies Steps A401 to A407 to “f1” and “f2” that are not marked at this stage, and selects “f2”. The flow of this process will be described in detail below.

(10)ステップA401
検証対象関数選択部33は、判断済マークがついていない関数の中で、エントリ関数からの呼び出し階層の最も低い関数群を選ぶ。検証対象関数選択部33は、この段階で、「f3」に判断済マークがついているので、「f1」,「f2」を選ぶ。
(10) Step A401
The verification target function selection unit 33 selects a function group having the lowest calling hierarchy from the entry function among the functions not having the determined mark. At this stage, the verification target function selection unit 33 selects “f1” and “f2” because “f3” is already marked.

(11)ステップA402
検証対象関数選択部33は、関数候補があるか確認する。すなわち、検証対象関数選択部33は、選ばれた関数群があるか確認する。ここでは、選ばれた「f1」,「f2」が関数候補となる。検証対象関数選択部33は、関数候補(選ばれた関数群)がなければ、ここで処理を終了する。
(11) Step A402
The verification target function selection unit 33 checks whether there is a function candidate. That is, the verification target function selection unit 33 confirms whether there is a selected function group. Here, the selected “f1” and “f2” are function candidates. If there is no function candidate (selected function group), the verification target function selection unit 33 ends the process.

(12)ステップA403
検証対象関数選択部33は、関数候補(選ばれた関数群)があれば、選ばれた関数群のうち呼び出し階層が同位のものの中で、評価値(X,Y)の「X」の値が最大の関数群を選ぶ。ここでは、検証対象関数選択部33は、選ばれた「f1」,「f2」の中で、評価値「X」が最大なものは「f2」なので、「f2」を選ぶ。
(12) Step A403
If there is a function candidate (selected function group), the verification target function selecting unit 33 selects an evaluation value (X, Y) of “X” among the selected function groups having the same calling hierarchy. Choose the function group with the largest. Here, the verification target function selection unit 33 selects “f2” because “f2” has the largest evaluation value “X” among the selected “f1” and “f2”.

(13)ステップA404
次に、検証対象関数選択部33は、評価値(X,Y)の「X」の値が同位のものの中で、評価値(X,Y)の「Y」の値が最大の関数群を選ぶ。
(13) Step A404
Next, the verification target function selection unit 33 selects a function group having the highest evaluation value (X, Y) “Y” among the evaluation values (X, Y) of the same value. Choose.

(14)ステップA405
次に、検証対象関数選択部33は、評価値(X,Y)の「Y」の値が同位のものの中で、関数のブロック数が最小の関数群を選ぶ。
(14) Step A405
Next, the verification target function selection unit 33 selects a function group having the smallest number of function blocks among the evaluation values (X, Y) having the same “Y” value.

(15)ステップA406
次に、検証対象関数選択部33は、関数のブロック数が同位のものの中で、制御フローグラフモデル上で最左の関数を選ぶ。
(15) Step A406
Next, the verification target function selection unit 33 selects the leftmost function on the control flow graph model among the functions having the same number of blocks.

この例では、ステップA403の段階で一つの関数「f2」に絞りこまれたので、ステップA404からステップA406を適用しても、「f2」が選ばれることになる。   In this example, since the function “f2” is narrowed down to the step A403, even if the steps A404 to A406 are applied, “f2” is selected.

(16)ステップA407
次に、検証対象関数選択部33は、選択された関数の評価値(X,Y)の「Y」の値が「0」でないか確認する。ここでは、選ばれた「f2」の評価値(X,Y)の「Y」は「0」でないので、次の処理(ステップA408)に移る。
(16) Step A407
Next, the verification target function selection unit 33 checks whether the value “Y” of the evaluation value (X, Y) of the selected function is not “0”. Here, since “Y” of the evaluation value (X, Y) of the selected “f2” is not “0”, the process proceeds to the next process (step A408).

(17)ステップA408
次に、検証対象関数選択部33は、累積ブロック数に関数ブロック数を加算した値が検査仕様1で与えられている最大ブロック数を超えないか確認する。ここでは、この段階での累積ブロック数は「38」であり、「f2」のブロック数「28」を加算した値「66」は、この例で設定された最大ブロック数「70」を超えないので、次の処理(ステップA409)に移る。
(17) Step A408
Next, the verification target function selection unit 33 confirms whether the value obtained by adding the number of function blocks to the cumulative number of blocks does not exceed the maximum number of blocks given in the inspection specification 1. Here, the cumulative number of blocks at this stage is “38”, and the value “66” obtained by adding the number of blocks “28” of “f2” does not exceed the maximum number of blocks “70” set in this example. Therefore, the process proceeds to the next process (step A409).

(18)ステップA409
次に、検証対象関数選択部33は、該当関数を検証対象に追加し、判断済マークを付ける。また、検証対象関数選択部33は、累積ブロック数に該当関数のブロック数を加算する。ここでは、検証対象関数選択部33は、ここまでの条件を満たした「f2」を検査対象に追加し、判断済マークを付ける。累積ブロック数は「66」となる。その後、最初の処理(ステップA401)に戻る。
(18) Step A409
Next, the verification target function selection unit 33 adds the corresponding function to the verification target and puts a determination mark. In addition, the verification target function selection unit 33 adds the number of blocks of the corresponding function to the cumulative number of blocks. Here, the verification target function selection unit 33 adds “f2” that satisfies the above conditions to the inspection target, and puts a determined mark. The cumulative number of blocks is “66”. Thereafter, the process returns to the first process (step A401).

検証対象関数選択部33は、再び、ステップA401〜A407を、この段階で判断済マークがついていない「f1」に適用することになる。この処理の流れを以下に詳述する。   The verification target function selection unit 33 again applies steps A401 to A407 to “f1” that is not marked at this stage. The flow of this process will be described in detail below.

(19)ステップA401
検証対象関数選択部33は、判断済マークがついていない関数の中で、エントリ関数からの呼び出し階層の最も低い関数群を選ぶ。検証対象関数選択部33は、この段階で、「f2」,「f3」に判断済マークがついているので、「f1」を選ぶ。
(19) Step A401
The verification target function selection unit 33 selects a function group having the lowest calling hierarchy from the entry function among the functions not having the determined mark. At this stage, the verification target function selection unit 33 selects “f1” because “f2” and “f3” are already marked.

(20)ステップA402
検証対象関数選択部33は、関数候補があるか確認する。すなわち、検証対象関数選択部33は、選ばれた関数群があるか確認する。ここでは、選ばれた「f1」が関数候補となる。検証対象関数選択部33は、関数候補(選ばれた関数群)がなければ、ここで処理を終了する。
(20) Step A402
The verification target function selection unit 33 checks whether there is a function candidate. That is, the verification target function selection unit 33 confirms whether there is a selected function group. Here, the selected “f1” is a function candidate. If there is no function candidate (selected function group), the verification target function selection unit 33 ends the process.

(21)ステップA403
検証対象関数選択部33は、関数候補(選ばれた関数群)があれば、選ばれた関数群のうち呼び出し階層が同位のものの中で、評価値(X,Y)の「X」の値が最大の関数群を選ぶ。ここでは、選ばれた関数が「f1」しかないため、「f1」が選ばれることになる。
(21) Step A403
If there is a function candidate (selected function group), the verification target function selecting unit 33 selects an evaluation value (X, Y) of “X” among the selected function groups having the same calling hierarchy. Choose the function group with the largest. Here, since the selected function is only “f1”, “f1” is selected.

(22)ステップA404
次に、検証対象関数選択部33は、評価値(X,Y)の「X」の値が同位のものの中で、評価値(X,Y)の「Y」の値が最大の関数群を選ぶ。
(22) Step A404
Next, the verification target function selection unit 33 selects a function group having the highest evaluation value (X, Y) “Y” among the evaluation values (X, Y) of the same value. Choose.

(23)ステップA405
次に、検証対象関数選択部33は、評価値(X,Y)の「Y」の値が同位のものの中で、関数のブロック数が最小の関数群を選ぶ。
(23) Step A405
Next, the verification target function selection unit 33 selects a function group having the smallest number of function blocks among the evaluation values (X, Y) having the same “Y” value.

(24)ステップA406
次に、検証対象関数選択部33は、関数のブロック数が同位のものの中で、制御フローグラフモデル上で最左の関数を選ぶ。
(24) Step A406
Next, the verification target function selection unit 33 selects the leftmost function on the control flow graph model among the functions having the same number of blocks.

この例では、ステップA403の段階で一つの関数「f1」に絞りこまれたので、ステップA404からステップA406を適用しても、「f1」が選ばれることになる。   In this example, since the function “f1” has been narrowed down at the stage of step A403, “f1” is selected even if steps A404 to A406 are applied.

(25)ステップA407
次に、検証対象関数選択部33は、選択された関数の評価値(X,Y)の「Y」の値が「0」でないか確認する。ここでは、選ばれた「f1」の評価値(X,Y)の「Y」は「0」でないので、次の処理(ステップA408)に移る。
(25) Step A407
Next, the verification target function selection unit 33 checks whether the value “Y” of the evaluation value (X, Y) of the selected function is not “0”. Here, since “Y” of the selected evaluation value (X, Y) of “f1” is not “0”, the process proceeds to the next process (step A408).

(26)ステップA408
次に、検証対象関数選択部33は、累積ブロック数に関数ブロック数を加算した値が検査仕様1で与えられている最大ブロック数を超えないか確認する。ここでは、この段階での累積ブロック数は「66」であり、「f1」のブロック数「18」を加算すると、仮定した最大ブロック数「70」を超えるため、仮定した最大ブロック数を超えない場合とは異なる処理(ステップA410)に移る。
(26) Step A408
Next, the verification target function selection unit 33 confirms whether the value obtained by adding the number of function blocks to the cumulative number of blocks does not exceed the maximum number of blocks given in the inspection specification 1. Here, the cumulative number of blocks at this stage is “66”, and adding the number of blocks “18” of “f1” exceeds the assumed maximum number of blocks “70”, and therefore does not exceed the assumed maximum number of blocks. The process proceeds to processing different from the case (step A410).

(27)ステップA410
次に、検証対象関数選択部33は、該当関数及び下位関数に判断済マークを付ける。ここでは、検証対象関数選択部33は、「f1」に判断済マークを付ける。その後、最初の処理(ステップA401)に戻る。
(27) Step A410
Next, the verification target function selection unit 33 puts a determined mark on the corresponding function and the lower function. Here, the verification target function selection unit 33 puts a determined mark on “f1”. Thereafter, the process returns to the first process (step A401).

検証対象関数選択部33は、再び、ステップA401を適用するが、この段階で判断済マークがついていない関数が存在しないため、ステップA4の処理を終了する。   The verification target function selection unit 33 applies Step A401 again, but since there is no function without a determined mark at this stage, the process of Step A4 ends.

このようにして、「f3」,「f2」の順番に関数が選択される。「f3」が「entry1」に与える影響は「大域変数3個分」であり、「f2」が「entry1」に与える影響は「アドレス渡し引数2個分」であり、影響度の高いものが順番に選択されることがわかる。   In this way, functions are selected in the order of “f3” and “f2”. The effect of “f3” on “entry1” is “three global variables”, the effect of “f2” on “entry1” is “two arguments passed by address”, and the ones with the highest influence are in order. It can be seen that is selected.

これを図示したのが図11である。図11で丸付数字は選択された順番を示し、星印は選択されなかった関数を示す。その他は図5と同じである。   This is illustrated in FIG. In FIG. 11, circled numbers indicate the order of selection, and asterisks indicate functions that were not selected. Others are the same as FIG.

図11において、“「f1」(1,1):18”は、関数「f1」のブロック数は「18」であり、評価値は(1,1)であることを意味する。同様に、“「f2」(2,2):28”は、関数「f2」のブロック数は「28」であり、評価値は(2,2)であることを意味する。“「f3」(3,3):38”は、関数「f3」のブロック数は「38」であり、評価値は(3,3)であることを意味する。   In FIG. 11, ““ f1 ”(1, 1): 18” means that the number of blocks of the function “f1” is “18” and the evaluation value is (1, 1). Similarly, ““ f2 ”(2, 2): 28” means that the number of blocks of the function “f2” is “28” and the evaluation value is (2, 2). ““ F3 ”(3, 3): 38” means that the number of blocks of the function “f3” is “38” and the evaluation value is (3, 3).

<(b)図7及び図12の例に対する動作>
次に、図7及び図12の例に対する検証対象関数選択部33の動作を説明する。この例では、任意値を計算式中に含む関数が選択されないことを説明する。また、検査仕様1で最大ブロック数には「90」が指定されているものとする。
<(B) Operation for the example of FIGS. 7 and 12>
Next, the operation of the verification target function selection unit 33 for the examples of FIGS. 7 and 12 will be described. In this example, it will be described that a function including an arbitrary value in the calculation formula is not selected. In the inspection specification 1, “90” is designated as the maximum number of blocks.

図5に対する処理と同様に、図7に対して、ステップA401〜A409を繰り返し適用することにより、「g1」,「g4」,「g6」の中から、「g6」、「g4」の順に検証対象として選択されるが、その後、「g1」に対してステップA407を適用すると、「g1」の評価値(X,Y)の「Y」が「0」なので、「g1」は検証対象とはみなされない。   Similar to the processing for FIG. 5, by repeatedly applying steps A401 to A409 to FIG. 7, the verification is performed in the order of “g6” and “g4” from “g1”, “g4”, and “g6”. After that, if step A407 is applied to “g1”, since “Y” of the evaluation value (X, Y) of “g1” is “0”, “g1” is the verification target Not considered.

更に、ステップA410によって、「g1」及びその下位関数「g2」,「g3」も同様に検証対象とはみなされないまま、判断済マークが付けられる。その後、ステップA401に戻り、「g5」が検証対象に追加された時点で、ステップA4の処理は終了する。   Further, in step A410, “g1” and its subordinate functions “g2” and “g3” are similarly marked as determined without being regarded as verification targets. Thereafter, the process returns to step A401, and when “g5” is added to the verification target, the process of step A4 ends.

このようにして、「g6」,「g4」,「g5」の順番に関数が選択される。任意値を含む「g1」,「g2」,「g3」が検証対象にならなかったことがわかる。   In this way, functions are selected in the order of “g6”, “g4”, and “g5”. It can be seen that “g1”, “g2”, and “g3” including arbitrary values were not verified.

これを図示したのが図12である。図12で丸付数字は選択された順番を示し、星印は選択されなかった関数を示す。その他は図7と同じである。   This is illustrated in FIG. In FIG. 12, circled numbers indicate the order of selection, and stars indicate functions that are not selected. Others are the same as FIG.

図12において、“「g1」(0,0):18”は、関数「g1」のブロック数は「18」であり、評価値は(0,0)であることを意味する。同様に、“「g2」(0,0):28”は、関数「g2」のブロック数は「28」であり、評価値は(0,0)であることを意味する。“「g3」(0,0):18”は、関数「g3」のブロック数は「18」であり、評価値は(0,0)であることを意味する。“「g4」(0,1):28”は、関数「g4」のブロック数は「28」であり、評価値は(0,1)であることを意味する。“「g5」(1,1):18”は、関数「g5」のブロック数は「18」であり、評価値は(1,1)であることを意味する。“「g6」(1,1):38”は、関数「g6」のブロック数は「38」であり、評価値は(1,1)であることを意味する。   In FIG. 12, ““ g1 ”(0,0): 18” means that the number of blocks of the function “g1” is “18” and the evaluation value is (0,0). Similarly, ““ g2 ”(0, 0): 28” means that the number of blocks of the function “g2” is “28” and the evaluation value is (0, 0). ““ G3 ”(0,0): 18” means that the number of blocks of the function “g3” is “18” and the evaluation value is (0,0). ““ G4 ”(0, 1): 28” means that the number of blocks of the function “g4” is “28” and the evaluation value is (0, 1). ““ G5 ”(1,1): 18” means that the number of blocks of the function “g5” is “18” and the evaluation value is (1,1). ““ G6 ”(1, 1): 38” means that the number of blocks of the function “g6” is “38” and the evaluation value is (1, 1).

<(c)図9及び図13の例に対する動作>
次に、図9及び図13の例に対する検証対象関数選択部33の動作を説明する。この例では、最大ブロック数制限を超える関数が選択されないことを説明する。また、検査仕様1で最大ブロック数には「90」が指定されているものとする。
<(C) Operation for the Example of FIGS. 9 and 13>
Next, the operation of the verification target function selection unit 33 for the examples of FIGS. 9 and 13 will be described. In this example, it will be described that a function exceeding the maximum block number limit is not selected. In the inspection specification 1, “90” is designated as the maximum number of blocks.

この場合も、図5、図7と同様に、図9に対してステップA401〜A409の一連の処理を繰り返し適用する。   Also in this case, as in FIGS. 5 and 7, the series of processing of steps A401 to A409 is repeatedly applied to FIG.

まず、「h6」が対象関数として選択された後に、「h1」がステップA404で選ばれるが、この場合は、その後にA408を適用する時点で、この段階での累積ブロック数38に対して、「h1」のブロック数「60」を加算した値は、指定された最大ブロック数「90」を超えるため、検証対象の選択からはずれる。   First, after “h6” is selected as the target function, “h1” is selected in step A404. In this case, when A408 is applied thereafter, the cumulative number of blocks at this stage is 38. Since the value obtained by adding the number of blocks “60” of “h1” exceeds the designated maximum number of blocks “90”, the value is not selected as a verification target.

更に、ステップA410において、その下位関数「h2」、「h3」と共に判断済マークが付けられる。   Further, in step A410, the determined mark is attached together with the lower functions “h2” and “h3”.

この後、残った「h4」、「h5」に対してステップA401〜A409が適用されるが、「h4」、「h5」は最大ブロック数制限を越えることがないので、検証対象に追加され、判断済マークが付く。この時点で関数候補がなくなり、ステップA4の処理は終了する。   After this, steps A401 to A409 are applied to the remaining “h4” and “h5”, but “h4” and “h5” do not exceed the maximum number of blocks, and are added to the verification target. Judgment mark is attached. At this point, there are no function candidates, and the process of step A4 ends.

このようにして、「h6」,「h4」,「h5」の順番に関数が選択される。「h1」は最大ブロック数制限を超えるため、検証対象にならない。   In this way, functions are selected in the order of “h6”, “h4”, and “h5”. Since “h1” exceeds the maximum block number limit, it is not a verification target.

これを図示したのが図13である。図13で丸付数字は選択された順番を示し、星印は選択されなかった関数を示す。その他は図9と同じである。   This is illustrated in FIG. In FIG. 13, circled numbers indicate the order of selection, and stars indicate functions that were not selected. Others are the same as FIG.

図13において、“「h1」(0,2):60”は、関数「h1」のブロック数は「60」であり、評価値は(0,2)であることを意味する。同様に、“「h2」(0,2):28”は、関数「h2」のブロック数は「28」であり、評価値は(0,2)であることを意味する。“「h3」(2,2):18”は、関数「h3」のブロック数は「18」であり、評価値は(2,2)であることを意味する。“「h4」(0,1):28”は、関数「h4」のブロック数は「28」であり、評価値は(0,1)であることを意味する。“「h5」(1,1):18”は、関数「h5」のブロック数は「18」であり、評価値は(1,1)であることを意味する。“「h6」(1,1):38”は、関数「h6」のブロック数は「38」であり、評価値は(1,1)であることを意味する。   In FIG. 13, ““ h1 ”(0, 2): 60” means that the number of blocks of the function “h1” is “60” and the evaluation value is (0, 2). Similarly, ““ h2 ”(0, 2): 28” means that the number of blocks of the function “h2” is “28” and the evaluation value is (0, 2). ““ H3 ”(2, 2): 18” means that the number of blocks of the function “h3” is “18” and the evaluation value is (2, 2). ““ H4 ”(0, 1): 28” means that the number of blocks of the function “h4” is “28” and the evaluation value is (0, 1). ““ H5 ”(1,1): 18” means that the number of blocks of the function “h5” is “18” and the evaluation value is (1,1). ““ H6 ”(1, 1): 38” means that the number of blocks of the function “h6” is “38” and the evaluation value is (1, 1).

本発明の効果は、モデル検査に先立って、検証対象のモデルの再構築を行うことにより、与えられた検証時間内により有効な検証結果が得られることである。その理由は、検証対象関数選択手段により、エントリ関数から呼び出される関数のうち、モデルの状態数が大きいために規定時間内では検証結果が得られない可能性が高い関数をモデル化対象からはずすことで、比較的短い時間で検証が可能なその他の関数の検証に、より多くの検証時間の配分が可能となるためである。   The effect of the present invention is that a more effective verification result can be obtained within a given verification time by reconstructing a model to be verified prior to model checking. The reason is that the function to be verified is selected from the functions to be modeled out of the functions to be called from the entry function by the verification target function selection means because there is a high possibility that the verification result cannot be obtained within the specified time due to the large number of model states. This is because more verification time can be allocated to verification of other functions that can be verified in a relatively short time.

以上のように、本発明は、モデル検査技法を利用してソースコードの検証を行う処理系において、検証対象の起点となる関数及び検証可能な最大ブロック数を指定することにより、検証効果が高くなる関数を自動選択する機構を有する装置及び方法に関する。   As described above, the present invention has a high verification effect by specifying the function that is the starting point of the verification target and the maximum number of blocks that can be verified in the processing system that verifies the source code using the model checking technique. The present invention relates to an apparatus and a method having a mechanism for automatically selecting a function.

本発明では、モデルの状態数を増やす最も大きな要素として、任意値をとる変数や関数の返却値に着目する。   In the present invention, attention is focused on a variable that takes an arbitrary value or a return value of a function as the largest element that increases the number of states of the model.

任意値は、与えられた条件のもとで特定の値あるいはある限られた範囲の値をとることが決定できないことを意味している。   An arbitrary value means that it cannot be determined to take a specific value or a limited range of values under given conditions.

また、任意値とみなされる変数や関数の参照に対しては、あらゆる値を取る可能性があるものとしてモデル化する必要があるため、モデル検査における計算量が非常に大きくなり、上限時間内に検証結果が得られない可能性が非常に高い。   In addition, for variables and functions that are regarded as arbitrary values, it is necessary to model them as possible values, so the amount of calculation in model checking becomes very large and within the upper limit time. The possibility that the verification result is not obtained is very high.

更に、もう一つの着目点として、制御フローグラフモデルにおけるブロック数の上限値を考慮する。一般に、検証対象となるモデルの制御フローグラフ表現を構成する全体ブロック数と検証時間との間には相関があり、ブロック数が多くなればなるほど検証時間が長くなる。 Furthermore, as another point of interest, an upper limit value of the number of blocks in the control flow graph model is considered. In general, there is a correlation between the total number of blocks constituting the control flow graph expression of the model to be verified and the verification time, and the verification time becomes longer as the number of blocks increases.

本発明では、モデル検査を実行する前に、上記の2つの要素を利用して、検証対象のモデルの再構築を行うことにより、与えられた検証時間内により有効な検証結果が得られるモデルを出力する。   In the present invention, a model that can obtain a more effective verification result within a given verification time by reconstructing the model to be verified using the above two elements before executing model checking. Output.

まず、与えられたソースコードから変換された制御フローグラフモデルにおいて、任意値を取る変数や関数の参照を含む一連の関数呼び出しフローを検査対象から除外する。 First, in a control flow graph model converted from a given source code, a series of function call flows including variables and function references that take arbitrary values are excluded from inspection targets.

更に、呼び出し上位の関数に対して、下位の関数がどれだけ多くのコンテキストを与えているか、つまり下位関数をモデル化することで、どれだけ上位関数の検証精度が高くなるかという基準で、ランク付けを行った上で、再構築するモデルの全体ブロック数が、事前に指定された上限の範囲内に収まるように関数の取捨選択を行う。   Furthermore, the rank of the higher-level function is evaluated based on how much context is given by the lower-level function, that is, how much higher-level function verification accuracy is improved by modeling the lower-level function. In addition, the functions are selected so that the total number of blocks of the model to be rebuilt falls within the upper limit specified in advance.

ここで「コンテキスト」とは、上位関数が使用する変数に対して下位関数が値を代入することである。上位関数が使用する変数に対して下位関数が値を代入するには、戻り値を利用する、アドレス渡し引数を利用する、大域変数を利用するの3つの方法がある。   Here, “context” means that a lower function assigns a value to a variable used by the upper function. There are three methods for substituting a value for a variable used by an upper function: using a return value, using an address passing argument, and using a global variable.

このようなモデル再構築手法により、与えられた検証時間を効果的に利用することが可能となり、より多くの検証結果を得ることが可能となる。   Such a model reconstruction technique makes it possible to effectively use a given verification time and obtain more verification results.

本発明の検証対象関数自動選択装置は、検査仕様と、検査対象コードと、検査結果と、モデル検査制御手段と、記憶手段と、検証対象関数選択手段を含む。   The verification target function automatic selection device of the present invention includes a test specification, a test target code, a test result, a model test control unit, a storage unit, and a verification target function selection unit.

ここで、モデル検査制御手段は、コンパイラ最適化処理及び計算木論理を用いた記号モデル検査法等の従来技術で構成する。   Here, the model checking control means is configured by conventional techniques such as a symbol model checking method using compiler optimization processing and calculation tree logic.

モデル検査制御手段は、制御フローグラフモデル作成手段と、検査モデル作成手段と、モデル検査実行手段と、検査結果出力手段を含む。 The model check control means includes a control flow graph model creation means, a check model creation means, a model check execution means, and a check result output means.

記憶手段は、変換前制御フローグラフモデル記憶手段と、変換後制御フローグラフモデル記憶手段と、検査モデル記憶手段を含む。 The storage means includes a pre-conversion control flow graph model storage means, a post-conversion control flow graph model storage means, and an inspection model storage means.

検証対象関数選択手段は、呼び出し関数検出手段と、関数評価手段と、検証対象関数追加手段と、制御フローグラフモデル変換手段を含む。 The verification target function selection unit includes a calling function detection unit, a function evaluation unit, a verification target function addition unit, and a control flow graph model conversion unit.

本発明によれば、モデル検査を利用したソースコード検証の検証効果を高める用途に適用できる。   INDUSTRIAL APPLICABILITY According to the present invention, the present invention can be applied to an application for enhancing the verification effect of source code verification using model checking.

以上、本発明の実施形態を詳述してきたが、実際には、上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。   As mentioned above, although embodiment of this invention was explained in full detail, actually, it is not restricted to said embodiment, Even if there is a change of the range which does not deviate from the summary of this invention, it is included in this invention.

1… 検査仕様
2… 検査対象コード
3… 検査結果
10… モデル検査制御部
11… CFGモデル作成部
12… 検査モデル作成部
13… モデル検査実行部
14… 検査結果出力部
20… 記憶装置
21… 変換前CFGモデル記憶部
22… 変換後CFGモデル記憶部
23… 検査モデル記憶部
30… 検証対象関数選択部
31… 呼び出し関数検出部
32… 関数評価部
33… 検証対象関数選択
34… CFGモデル変換部
DESCRIPTION OF SYMBOLS 1 ... Inspection specification 2 ... Inspection object code 3 ... Inspection result 10 ... Model inspection control part 11 ... CFG model preparation part 12 ... Inspection model preparation part 13 ... Model inspection execution part 14 ... Inspection result output part 20 ... Storage device 21 ... Conversion Pre-CFG model storage unit 22 ... Post-conversion CFG model storage unit 23 ... Inspection model storage unit 30 ... Verification target function selection unit 31 ... Call function detection unit 32 ... Function evaluation unit 33 ... Verification target function selection unit 34 ... CFG model conversion unit

Claims (12)

検査仕様と検査対象コードを読み込み、前記検査対象コードにコンパイラ最適化処理を施した上で、前記検査仕様を踏まえて制御フローグラフモデルを作成するモデル検査制御手段と、
前記制御フローグラフモデルを読み込み、前記検査仕様で指定されたエントリ関数から呼び出される関数を検出し、前記検出された関数のブロック数と評価値を算出し、前記算出されたブロック数と評価に基づいて、前記検出された関数の中から、検証対象に追加する関数を選択し、前記選択された関数に基づいて、前記制御フローグラフモデルを変換する検証対象関数選択手段と
を含み、
前記モデル検査制御手段は、前記変換された制御フローグラフモデルを読み込み、計算木論理を用いた記号モデル検査法に即して検査モデルを作成し、前記検査モデルに対して、前記計算木論理を用いた記号モデル検査法に即して検査を実行し、前記実行された検査の結果を出力する
検証対象関数自動選択装置。
Model inspection control means for reading the inspection specification and inspection target code, performing compiler optimization processing on the inspection target code, and creating a control flow graph model based on the inspection specification;
Read the control flow graph model, detect a function called from the entry function specified in the inspection specification, calculate the block number and evaluation value of the detected function, based on the calculated block number and evaluation Selecting a function to be added to the verification target from the detected functions, and a verification target function selection means for converting the control flow graph model based on the selected function,
The model check control means reads the converted control flow graph model, creates a check model in accordance with a symbol model check method using calculation tree logic, and applies the calculation tree logic to the check model. A verification function automatic selection device that executes a check in accordance with the symbol model check method used, and outputs a result of the executed check.
請求項1に記載の検証対象関数自動選択装置であって、
前記モデル検査制御手段は、
前記検査仕様と前記検査対象コードを読み込み、前記検査対象コードにコンパイラ最適化処理を施した上で、前記検査仕様を踏まえて制御フローグラフモデルを作成する制御フローグラフモデル作成手段と、
前記変換された制御フローグラフモデルを読み込み、計算木論理を用いた記号モデル検査法に即して検査モデルを作成する検査モデル作成手段と、
前記検査モデルを読み込み、前記計算木論理を用いた記号モデル検査法に即して検査を実行するモデル検査実行手段と、
記モデル検査実行手段が実行した検査の結果を出力する検査結果出力手段と
を含む
検証対象関数自動選択装置。
The verification target function automatic selection device according to claim 1,
The model checking control means includes
A control flow graph model creating means for creating a control flow graph model based on the inspection specification after reading the inspection specification and the inspection target code, and performing a compiler optimization process on the inspection target code;
An inspection model creation means for reading the converted control flow graph model and creating an inspection model in accordance with a symbolic model inspection method using computational tree logic;
Model checking execution means for reading the checking model and executing checking in accordance with a symbolic model checking method using the calculation tree logic;
Verified function automatic selection device that includes a test result output means for outputting the results of the previous tests liver del test execution means has executed.
請求項1又は2に記載の検証対象関数自動選択装置であって、
前記検証対象関数選択手段は、
前記制御フローグラフモデルを読み込み、前記検査仕様で指定されたエントリ関数から直接的又は間接的に呼び出される関数全てを検出する呼び出し関数検出手段と、
前記呼び出し関数検出手段が検出した関数のそれぞれに対し、当該関数のブロック数と評価値を算出する関数評価手段と、
前記検査仕様に指定された最大ブロック数の範囲内で、評価値の高い関数を選択する検証対象関数選択と、
前記検証対象関数選択が選択した関数以外の関数を前記制御フローグラフモデルから削除し、前記選択された関数が関数として残された制御フローグラフモデルを、前記変換された制御フローグラフモデルとして出力する制御フローグラフモデル変換手段と
を含む
検証対象関数自動選択装置。
The verification target function automatic selection device according to claim 1 or 2,
The verification target function selecting means includes:
A call function detection unit that reads the control flow graph model and detects all functions that are directly or indirectly called from the entry function specified by the inspection specification;
For each of the functions detected by the calling function detection means, function evaluation means for calculating the number of blocks of the function and an evaluation value;
A verification target function selection unit that selects a function having a high evaluation value within the range of the maximum number of blocks specified in the inspection specification;
A function other than the function selected by the verification target function selection unit is deleted from the control flow graph model, and the control flow graph model in which the selected function remains as a function is output as the converted control flow graph model And a control flow graph model conversion means for performing a verification target function automatic selection device.
検査仕様と検査対象コードを読み込み、前記検査対象コードにコンパイラ最適化処理を施した上で、前記検査仕様を踏まえて制御フローグラフモデルを作成する制御フローグラフモデル作成手段と、
前記制御フローグラフモデルを読み込み、前記検査仕様で指定されたエントリ関数から呼び出される関数を検出する呼び出し関数検出手段と、
前記呼び出し関数検出手段が検出した関数のそれぞれに対し、当該関数のブロック数と評価値を算出する関数評価手段と、
前記検査仕様に指定された最大ブロック数の範囲内で、評価値の高い関数を選択する検証対象関数選択手段と、
前記検証対象関数選択手段が選択した関数に基づいて、前記制御フローグラフモデルを変換して前記変換された制御フローグラフモデルを生成する制御フローグラフモデル変換手段と、
前記変換された制御フローグラフモデルを読み込み、計算木論理を用いた記号モデル検査法に即して検査モデルを作成する検査モデル作成手段と、
前記検査モデルを読み込み、前記計算木論理を用いた記号モデル検査法に即して検査を実行するモデル検査実行手段と、
記モデル検査実行手段が実行した検査の結果を出力する検査結果出力手段と
を含む
検証対象関数自動選択装置。
A control flow graph model creating means for creating a control flow graph model based on the inspection specification after reading the inspection specification and the inspection target code and performing compiler optimization processing on the inspection target code;
Call function detection means for reading the control flow graph model and detecting a function called from an entry function specified by the inspection specification;
For each of the functions detected by the calling function detection means, function evaluation means for calculating the number of blocks of the function and an evaluation value;
Verification target function selection means for selecting a function having a high evaluation value within the range of the maximum number of blocks specified in the inspection specification;
Control flow graph model conversion means for converting the control flow graph model and generating the converted control flow graph model based on the function selected by the verification target function selection means;
An inspection model creation means for reading the converted control flow graph model and creating an inspection model in accordance with a symbolic model inspection method using computational tree logic;
Model checking execution means for reading the checking model and executing checking in accordance with a symbolic model checking method using the calculation tree logic;
Verified function automatic selection device that includes a test result output means for outputting the results of the previous tests liver del test execution means has executed.
検査仕様と検査対象コードを読み込み、前記検査対象コードにコンパイラ最適化処理を施した上で、前記検査仕様を踏まえて制御フローグラフモデルを作成し、
前記制御フローグラフモデルを参照し、前記検査仕様で指定されたエントリ関数から呼び出される関数を検出し、前記検出された関数のブロック数と評価値を算出し、前記算出されたブロック数と評価に基づいて、前記検出された関数の中から、検証対象に追加する関数を選択し、前記選択された関数に基づいて、前記制御フローグラフモデルを変換し、
前記変換された制御フローグラフモデルを参照し、計算木論理を用いた記号モデル検査法に即して検査モデルを作成し、前記検査モデルに対して、前記計算木論理を用いた記号モデル検査法に即して検査を実行し、前記実行された検査の結果を出力する
検証対象関数自動選択方法。
After reading the inspection specification and inspection target code, and applying compiler optimization processing to the inspection target code, create a control flow graph model based on the inspection specification,
Referring to the control flow graph model, a function called from an entry function specified by the inspection specification is detected, the number of blocks and an evaluation value of the detected function are calculated, and the calculated number of blocks and evaluation are calculated. Based on the detected function, select a function to be added to the verification target, transform the control flow graph model based on the selected function,
Referencing the converted control flow graph model, creating a check model in accordance with a symbol model check method using calculation tree logic, and using the check tree model, a symbol model check method using the calculation tree logic A method for automatically selecting a function to be verified, which executes a test according to the above and outputs the result of the executed test.
請求項5に記載の検証対象関数自動選択方法であって、
前記検査仕様と前記検査対象コードを読み込み、前記検査対象コードにコンパイラ最適化処理を施した上で、前記検査仕様を踏まえて制御フローグラフモデルを作成し、
前記変換された制御フローグラフモデルを読み込み、計算木論理を用いた記号モデル検査法に即して検査モデルを作成し、
前記検査モデルを読み込み、前記計算木論理を用いた記号モデル検査法に即して検査を実行し、
前記実行された検査の結果を出力する
検証対象関数自動選択方法。
The verification target function automatic selection method according to claim 5,
Read the inspection specification and the inspection target code, and after performing compiler optimization processing on the inspection target code, create a control flow graph model based on the inspection specification,
Read the converted control flow graph model, create a check model according to the symbolic model check method using computational tree logic,
Read the inspection model, execute the inspection in accordance with the symbolic model inspection method using the calculation tree logic,
A verification target function automatic selection method for outputting a result of the executed inspection.
請求項5又は6に記載の検証対象関数自動選択方法であって、
前記制御フローグラフモデルを読み込み、前記検査仕様で指定されたエントリ関数から直接的又は間接的に呼び出される関数全てを検出し、
前記検出された関数のそれぞれに対し、当該関数のブロック数と評価値を算出し、
前記検査仕様に指定された最大ブロック数の範囲内で、評価値の高い関数を選択し、
前記選択された関数以外の関数を前記制御フローグラフモデルから削除し、前記選択された関数が関数として残された制御フローグラフモデルを、前記変換された制御フローグラフモデルとして出力する
検証対象関数自動選択方法。
It is a verification object function automatic selection method according to claim 5 or 6,
Read the control flow graph model, detect all functions that are called directly or indirectly from the entry function specified in the inspection specification,
For each of the detected functions, calculate the number of blocks and the evaluation value of the function,
Select a function with a high evaluation value within the range of the maximum number of blocks specified in the inspection specification,
Functions other than the selected function are deleted from the control flow graph model, and the control flow graph model in which the selected function remains as a function is output as the converted control flow graph model. Selection method.
検査仕様と検査対象コードを読み込み、前記検査対象コードにコンパイラ最適化処理を施した上で、前記検査仕様を踏まえて制御フローグラフモデルを作成し、
前記制御フローグラフモデルを読み込み、前記検査仕様で指定されたエントリ関数から呼び出される関数を検出し、
前記検出された関数のそれぞれに対し、当該関数のブロック数と評価値を算出し、
前記検査仕様に指定された最大ブロック数の範囲内で、評価値の高い関数を選択し、
前記選択された関数に基づいて、前記制御フローグラフモデルを変換して前記変換された制御フローグラフモデルを生成し、
前記変換された制御フローグラフモデルを読み込み、計算木論理を用いた記号モデル検査法に即して検査モデルを作成し、
前記検査モデルを読み込み、前記計算木論理を用いた記号モデル検査法に即して検査を実行し、
前記実行された検査の結果を出力する
検証対象関数自動選択方法。
After reading the inspection specification and inspection target code, and applying compiler optimization processing to the inspection target code, create a control flow graph model based on the inspection specification,
Read the control flow graph model, detect a function called from the entry function specified in the inspection specification,
For each of the detected functions, calculate the number of blocks and the evaluation value of the function,
Select a function with a high evaluation value within the range of the maximum number of blocks specified in the inspection specification,
Transforming the control flow graph model based on the selected function to generate the transformed control flow graph model;
Read the converted control flow graph model, create a check model according to the symbolic model check method using computational tree logic,
Read the inspection model, execute the inspection in accordance with the symbolic model inspection method using the calculation tree logic,
A verification target function automatic selection method for outputting a result of the executed inspection.
検査仕様と検査対象コードを読み込み、前記検査対象コードにコンパイラ最適化処理を施した上で、前記検査仕様を踏まえて制御フローグラフモデルを作成するステップと、
前記制御フローグラフモデルを参照し、前記検査仕様で指定されたエントリ関数から呼び出される関数を検出し、前記検出された関数のブロック数と評価値を算出し、前記算出されたブロック数と評価に基づいて、前記検出された関数の中から、検証対象に追加する関数を選択し、前記選択された関数に基づいて、前記制御フローグラフモデルを変換するステップと、
前記変換された制御フローグラフモデルを参照し、計算木論理を用いた記号モデル検査法に即して検査モデルを作成し、前記検査モデルに対して、前記計算木論理を用いた記号モデル検査法に即して検査を実行し、前記実行された検査の結果を出力するステップと
をコンピュータに実行させるための
検証対象関数自動選択用プログラム。
Reading the inspection specification and the inspection target code, performing compiler optimization processing on the inspection target code, and creating a control flow graph model based on the inspection specification;
Referring to the control flow graph model, a function called from an entry function specified by the inspection specification is detected, the number of blocks and an evaluation value of the detected function are calculated, and the calculated number of blocks and evaluation are calculated. Based on the detected function, selecting a function to be added to the verification target, and converting the control flow graph model based on the selected function;
Referencing the converted control flow graph model, creating a check model in accordance with a symbol model check method using calculation tree logic, and using the check tree model, a symbol model check method using the calculation tree logic A program for automatic selection of a function to be verified for causing a computer to execute a test in accordance with and to output a result of the executed test.
請求項9に記載の検証対象関数自動選択用プログラムであって、
前記検査仕様と前記検査対象コードを読み込み、前記検査対象コードにコンパイラ最適化処理を施した上で、前記検査仕様を踏まえて制御フローグラフモデルを作成するステップと、
前記変換された制御フローグラフモデルを読み込み、計算木論理を用いた記号モデル検査法に即して検査モデルを作成するステップと、
前記検査モデルを読み込み、前記計算木論理を用いた記号モデル検査法に即して検査を実行するステップと、
前記実行された検査の結果を出力するステップと
を更にコンピュータに実行させるための
検証対象関数自動選択用プログラム。
It is a program for automatic verification object function selection according to claim 9,
Reading the inspection specification and the inspection target code, performing a compiler optimization process on the inspection target code, and creating a control flow graph model based on the inspection specification;
Reading the converted control flow graph model and creating a check model according to a symbolic model check method using computational tree logic;
Reading the check model and performing a check in accordance with a symbolic model check method using the computational tree logic;
A program for automatically selecting a verification target function for causing a computer to further execute the step of outputting the result of the executed inspection.
請求項9又は10に記載の検証対象関数自動選択用プログラムであって、
前記制御フローグラフモデルを読み込み、前記検査仕様で指定されたエントリ関数から直接的又は間接的に呼び出される関数全てを検出するステップと、
前記検出された関数のそれぞれに対し、当該関数のブロック数と評価値を算出するステップと、
前記検査仕様に指定された最大ブロック数の範囲内で、評価値の高い関数を選択するステップと、
前記選択された関数以外の関数を前記制御フローグラフモデルから削除し、前記選択された関数が関数として残された制御フローグラフモデルを、前記変換された制御フローグラフモデルとして出力するステップと
を更にコンピュータに実行させるための
検証対象関数自動選択用プログラム。
A program for automatic verification target function selection according to claim 9 or 10,
Reading the control flow graph model and detecting all functions that are called directly or indirectly from the entry function specified in the inspection specification;
For each of the detected functions, calculating the number of blocks of the function and an evaluation value;
Selecting a function having a high evaluation value within the range of the maximum number of blocks specified in the inspection specification;
Deleting a function other than the selected function from the control flow graph model, and outputting the control flow graph model in which the selected function remains as a function as the converted control flow graph model; A program for automatic selection of functions to be verified to be executed by a computer.
検査仕様と検査対象コードを読み込み、前記検査対象コードにコンパイラ最適化処理を施した上で、前記検査仕様を踏まえて制御フローグラフモデルを作成するステップと、
前記制御フローグラフモデルを読み込み、前記検査仕様で指定されたエントリ関数から呼び出される関数を検出するステップと、
前記検出された関数のそれぞれに対し、当該関数のブロック数と評価値を算出するステップと、
前記検査仕様に指定された最大ブロック数の範囲内で、評価値の高い関数を選択するステップと、
前記選択された関数に基づいて、前記制御フローグラフモデルを変換して前記変換された制御フローグラフモデルを生成するステップと、
前記変換された制御フローグラフモデルを読み込み、計算木論理を用いた記号モデル検査法に即して検査モデルを作成するステップと、
前記検査モデルを読み込み、前記計算木論理を用いた記号モデル検査法に即して検査を実行するステップと、
前記実行された検査の結果を出力するステップと
をコンピュータに実行させるための
検証対象関数自動選択用プログラム。
Reading the inspection specification and the inspection target code, performing compiler optimization processing on the inspection target code, and creating a control flow graph model based on the inspection specification;
Reading the control flow graph model and detecting a function called from an entry function specified by the inspection specification;
For each of the detected functions, calculating the number of blocks of the function and an evaluation value;
Selecting a function having a high evaluation value within the range of the maximum number of blocks specified in the inspection specification;
Converting the control flow graph model based on the selected function to generate the converted control flow graph model;
Reading the converted control flow graph model and creating a check model according to a symbolic model check method using computational tree logic;
Reading the check model and performing a check in accordance with a symbolic model check method using the computational tree logic;
A program for automatically selecting a verification target function for causing a computer to execute the step of outputting the result of the executed inspection.
JP2009057004A 2009-03-10 2009-03-10 Verification target function automatic selection device, verification target function automatic selection method, and verification target function automatic selection program Expired - Fee Related JP5396930B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009057004A JP5396930B2 (en) 2009-03-10 2009-03-10 Verification target function automatic selection device, verification target function automatic selection method, and verification target function automatic selection program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009057004A JP5396930B2 (en) 2009-03-10 2009-03-10 Verification target function automatic selection device, verification target function automatic selection method, and verification target function automatic selection program

Publications (2)

Publication Number Publication Date
JP2010211521A JP2010211521A (en) 2010-09-24
JP5396930B2 true JP5396930B2 (en) 2014-01-22

Family

ID=42971604

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009057004A Expired - Fee Related JP5396930B2 (en) 2009-03-10 2009-03-10 Verification target function automatic selection device, verification target function automatic selection method, and verification target function automatic selection program

Country Status (1)

Country Link
JP (1) JP5396930B2 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5643971B2 (en) * 2011-12-01 2014-12-24 株式会社日立製作所 Source code conversion method and source code conversion program

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0553782A (en) * 1991-08-29 1993-03-05 Nec Corp System for obtaining dynamic characteristic analysis information of specified part
JPH05274132A (en) * 1992-03-25 1993-10-22 Matsushita Electric Ind Co Ltd Program analyzer
JPH11194935A (en) * 1998-01-05 1999-07-21 Nec Commun Syst Ltd Software structure analysis system
JP2001236243A (en) * 2000-02-22 2001-08-31 Nec Microsystems Ltd Debug method and recording medium with program for debug recorded
US8020153B2 (en) * 2004-10-04 2011-09-13 Panasonic Corporation Source code checker, source code checking method, program for causing execution of the method, and storage medium for storing the program
JP2008191963A (en) * 2007-02-06 2008-08-21 Nec Corp Source code verification system, source code verification method and source code verification program

Also Published As

Publication number Publication date
JP2010211521A (en) 2010-09-24

Similar Documents

Publication Publication Date Title
Bhasin et al. Black box testing based on requirement analysis and design specifications
Chandra et al. Improving software quality using machine learning
van Amstel et al. Traceability visualization in model transformations with tracevis
Nayak et al. Analytic hierarchy process-based regression test case prioritization technique enhancing the fault detection rate
JP2018060525A (en) Event-driven software test sequence determination
JP5396930B2 (en) Verification target function automatic selection device, verification target function automatic selection method, and verification target function automatic selection program
JP2000347900A (en) Input parameter generating device and method, and recording medium
JP6471615B2 (en) Performance information generation program, performance information generation method, and information processing apparatus
JP5811978B2 (en) Test case generation apparatus and test case generation method for model-based control apparatus
JP7380851B2 (en) Test script generation device, test script generation method and program
JP2019003333A (en) Bug contamination probability calculation program and bug contamination probability calculation method
Sabharwal et al. Identifying interactions for combinatorial testing using data flow techniques
JP6583033B2 (en) Driver generation program, apparatus, and method
JP2011100420A (en) Test program creation device
Wuest et al. Applying graph theory and the product state concept in manufacturing
CN105389164A (en) COMPUTER-IMPLEMENTED METHOD FOR GENERATING control unit program code and message management environment relating thereto
JP5842704B2 (en) Estimation apparatus, program, and estimation method
Chhabra et al. An effective implementation of improved halstead metrics for software parameters analysis
Panigrahi et al. Regression test size reduction using improved precision slices
Salman et al. Test Case Generation Model for UML Diagrams
Ali et al. Fault Tolerant Sensor Network Using Formal Method Event-B
JP6369102B2 (en) Software test support system
Kadam et al. Increases the Reliability of Software using Enhanced Non Homogenous Poisson Process (EHPP), Functional Point and Test Point Analysis
Devasena et al. Search based Software testing technique for structural test case generation
JP6330490B2 (en) Test case generation program, test case generation apparatus, and test case generation method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120210

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130313

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130403

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130514

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130613

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130718

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130924

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131007

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees