JP6416588B2 - Source code verification system - Google Patents

Source code verification system Download PDF

Info

Publication number
JP6416588B2
JP6416588B2 JP2014222207A JP2014222207A JP6416588B2 JP 6416588 B2 JP6416588 B2 JP 6416588B2 JP 2014222207 A JP2014222207 A JP 2014222207A JP 2014222207 A JP2014222207 A JP 2014222207A JP 6416588 B2 JP6416588 B2 JP 6416588B2
Authority
JP
Japan
Prior art keywords
variable
evaluation
evaluation score
data
dependency
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.)
Active
Application number
JP2014222207A
Other languages
Japanese (ja)
Other versions
JP2016091138A (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.)
Hitachi Astemo Ltd
Original Assignee
Hitachi Automotive Systems Ltd
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 Hitachi Automotive Systems Ltd filed Critical Hitachi Automotive Systems Ltd
Priority to JP2014222207A priority Critical patent/JP6416588B2/en
Publication of JP2016091138A publication Critical patent/JP2016091138A/en
Application granted granted Critical
Publication of JP6416588B2 publication Critical patent/JP6416588B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

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

Description

本発明はソフトウェアのソースコードを検査する装置、ツールに関する。   The present invention relates to an apparatus and a tool for inspecting software source code.

情報制御システムでは、プログラムの処理の実行タイミングにより発生する不具合が存在することがある。不具合の例として、プログラムの1変数に対して、プログラムに並列または並行に実行される複数の実行単位(プロセス、スレッド、タスクなど)があり、それらの読み書きが重なるデータ競合がある。このような不具合は発見が難しく、発生しても再現性がないことで原因究明が難しい場合が多い。   In the information control system, there may be a problem that occurs depending on the execution timing of the program processing. As an example of a defect, there is a plurality of execution units (process, thread, task, etc.) executed in parallel or in parallel to a program for one variable of the program, and there is data contention in which reading and writing overlap. Such defects are difficult to find and often difficult to find out due to lack of reproducibility even if they occur.

このような処理のタイミングに依存した不具合を発見する方法の1つに、ソースコードの静的解析がある。解析によりプログラムに存在する不具合可能性を検出する。例えば異なる実行単位の実行パス上にある同一変数への書き込みを探し出すことでデータ競合の可能性を検出する。   One of the methods for finding such a defect depending on the processing timing is static analysis of the source code. Analyzes the possibility of defects in the program through analysis. For example, the possibility of data conflict is detected by searching for writing to the same variable on the execution path of different execution units.

しかしタイミング依存の不具合はデータ競合以外の原因でも発生するため、静的解析により検出できるタイミング依存の不具合は種類が限定されている。また静的解析により検出された不具合可能性は、必ずしも不具合を発生させず、逆に不具合でないもの(偽陽性)を多々検出することがある。これらの問題を解決するために、形式手法の1つであるモデル検査が適用されうる。モデル検査では、設計のモデル記述言語による表現にて抽象化が適切であれば偽陽性は発生しない。またプログラムの振る舞いを網羅的に検査するため、タイミングに依存した不具合も検出することができる。特許文献1では、モデル検査を用いて割込みに起因する不具合を検出している。   However, since timing-dependent defects also occur for causes other than data competition, the types of timing-dependent defects that can be detected by static analysis are limited. In addition, the possibility of a failure detected by static analysis does not necessarily cause a failure, and conversely, a non-failure (false positive) may be detected in many cases. To solve these problems, model checking, which is one of formal methods, can be applied. In model checking, false abstraction does not occur if the abstraction is appropriate in the representation of the design in the model description language. In addition, since the behavior of the program is comprehensively examined, it is possible to detect problems that depend on timing. In Patent Document 1, a failure caused by an interrupt is detected using model checking.

一方でモデル検査には、網羅的な検査を行うがための課題も存在する。それは計算量が大きくなることで、計算機のメモリ等のリソースが不足したり、計算時間が長大になり、検証が未完了となる問題である。この対策として、上記の抽象化や、検査範囲の絞込みなどの方法が取られる。特許文献2では、検査対象であるプログラムのソースコードにおける変数間の依存関係(変数依存関係)を解析することで、着目された変数に関連のあるコードを絞り込む。また変数依存関係を表示して、ユーザが検証モデルに変換するコードをさらに絞り込むための範囲指定を可能としている。   On the other hand, the model check also has problems for performing a comprehensive check. This is a problem that the amount of calculation becomes large, so that resources such as a memory of a computer are insufficient, the calculation time becomes long, and verification is not completed. As measures against this, the above-described abstraction and narrowing of the inspection range are taken. In Patent Document 2, by analyzing a dependency relationship (variable dependency relationship) between variables in a source code of a program to be inspected, codes related to the focused variable are narrowed down. In addition, variable dependency is displayed, and a range can be specified for further narrowing down the code to be converted by the user into the verification model.

ただし検証範囲を絞り込む場合、プログラムを広く検証するにはプログラムを分割して複数の検証を実行する必要が生じる。この分割と複数の検証実行は、検証に要する労力と時間を増大させる。このため、限られた人手と時間の下では、不具合の可能性の高い箇所から優先的に検証を実施することが必要な場合が出てくる。特に再現性のない不具合が発見されその原因を探索している状況下では、プログラム全体を検証して不具合のないことを示す場合と異なり、まずは1つの不具合を早期に検出しその原因を解析できるようにすることが求められるため、検証対象に優先順位を付ける考え方は重要となる。よって、検証対象の箇所ごとの不具合の可能性が評価され、その評価に基いた検証対象の優先順位を示す情報、または検証者による優先順位の付与に利用できる情報が検証者に提供されると、その情報は有用である。   However, when narrowing down the verification range, it is necessary to divide the program and execute a plurality of verifications in order to verify the program widely. This division and execution of multiple verifications increase the labor and time required for verification. For this reason, under limited manpower and time, there are cases where it is necessary to perform verification preferentially from places where there is a high possibility of malfunction. In particular, when a non-reproducible defect is found and the cause is searched, unlike the case where the entire program is verified to indicate that there is no defect, it is possible to detect one defect at an early stage and analyze the cause. Therefore, the idea of prioritizing the verification targets is important. Therefore, the possibility of a defect for each part to be verified is evaluated, and information indicating the priority of the verification target based on the evaluation, or information that can be used to give priority by the verifier is provided to the verifier. That information is useful.

検証対象の箇所ごとの不具合の可能性を評価する技術として、特許文献3では、変数依存関係上である実行単位Aに属する変数aが、異なる実行単位Bに属する変数bと、異なる実行単位Cに属する変数cとの間に依存関係を持つときに、実行単位A,B,Cの実行優先順位を比較し、整合性を評価している。例えば、実行単位B,Cの優先度が異なる場合には整合性が無いと評価し、優先度が一致する場合には整合性があると評価する。   As a technique for evaluating the possibility of a defect for each part to be verified, in Patent Document 3, a variable a belonging to an execution unit A on a variable dependency relationship is different from a variable b belonging to a different execution unit B. When there is a dependency relationship with the variable c belonging to, the execution priorities of the execution units A, B, and C are compared to evaluate the consistency. For example, it is evaluated that there is no consistency when the priorities of the execution units B and C are different, and it is evaluated that there is consistency when the priorities match.

特開2011−191843号公報JP 2011-191843 A 特開2013−156786号公報JP2013-156786A 特開2013−254371号公報JP 2013-254371 A

しかし、タイミングに依存する不具合は、実行単位の実行優先順位に整合性がある場合でも発生しうる。このため、上記の従来技術では、実行単位の実行優先順位が同じ場合には不具合の可能性を検出することができず、検証者に対して有用な情報を適切に提供することができないという問題がある。   However, problems that depend on the timing can occur even when the execution priority of execution units is consistent. For this reason, in the above prior art, when the execution priority order of execution units is the same, the possibility of a failure cannot be detected, and useful information cannot be appropriately provided to the verifier. There is.

そこで、本発明は、検証者に対して有用な情報を適切に提供することができるソースコード検証システムを提供することを目的とする。   Accordingly, an object of the present invention is to provide a source code verification system that can appropriately provide useful information to a verifier.

本発明は、プログラムに含まれる変数の依存関係に関する変数依存関係データに基づいて、異なる実行単位にまたがる変数依存関係を有する箇所を不具合要因の可能性のある箇所として検出する不具合要因検出手段と、前記変数依存関係に基づいて、前記箇所に関する不具合可能性の評価点を算出する評価点算出手段と、前記評価点を表示する評価点表示手段とを備えることを特徴とする。   The present invention, based on variable dependency relationship data relating to the dependency relationship of variables included in a program, a failure factor detection means for detecting a location having a variable dependency across different execution units as a possible failure factor, An evaluation score calculating means for calculating an evaluation score of the possibility of malfunction related to the location based on the variable dependency relationship, and an evaluation score displaying means for displaying the evaluation score are provided.

本発明によれば、検証者に対して有用な情報を適切に提供することができる。   According to the present invention, useful information can be appropriately provided to a verifier.

本発明の実施形態に係るシステム構成。1 is a system configuration according to an embodiment of the present invention. ソースコード検証システムの機能と関連するプログラムの構成。Structure of the program related to the function of the source code verification system. ソースコード検証システムと関連するプログラムの処理フロー。Processing flow of the program related to the source code verification system. 変数依存関係探索部の処理フロー。Processing flow of the variable dependency search unit. サンプルコード。Sample code. サンプルコードの変数依存関係のグラフ。Graph of variable dependency of sample code. サンプルコードの評価データ。Sample code evaluation data. サンプルコードの評価結果の表示。Display of sample code evaluation results. 修正したサンプルコードの評価結果の表示。Display the evaluation result of the modified sample code.

以下、図面を用いて本発明の実施形態について説明を行う。   Hereinafter, embodiments of the present invention will be described with reference to the drawings.

図1は、本実施形態に係るソースコード検証システムの構成図である。このソースコード検証システムは、ソフトウェアツールとして実現されている。各機能はソフトウェアとして実装されており、表示画面、主演算装置、主記憶装置(メインメモリ)、ハードディスク等の記憶媒体、キーボードやポインティングデバイス等の入力装置を備えるコンピュータ上で実行される。   FIG. 1 is a configuration diagram of a source code verification system according to the present embodiment. This source code verification system is realized as a software tool. Each function is implemented as software, and is executed on a computer including a display screen, a main arithmetic device, a main storage device (main memory), a storage medium such as a hard disk, and an input device such as a keyboard and a pointing device.

ソースコード検証システムを実現するソフトウェアは、ソースコード評価プログラム120として、コンピュータ110のROM113に格納されており、CPU111により読み出されて実行される。コンピュータ110はソースコード評価プログラム120によって規定された処理を実行する。検査対象であるオブジェクトコードの元になるソースコードのファイルや、そのソースコードを元に作成された検証モデルのファイルは、コンピュータ110上のハードディスク114に格納されている。ソースコード評価プログラム120に対するユーザ操作は、キーボードなどの入力装置130から行うことができる。ソースコード評価プログラム120による出力は、ディスプレイなどの表示装置140への表示や、ハードディスク114へデータファイル生成として成されるが、図示しない外部コンピュータへのネットワークを介した出力、CD−ROMなどの外部記憶媒体へのデータファイル形式での書き込みによる出力であってもよい。また他のプログラムもソースコード評価プログラム120と同様に入力と出力し、操作される。   Software for realizing the source code verification system is stored in the ROM 113 of the computer 110 as the source code evaluation program 120, and is read and executed by the CPU 111. The computer 110 executes processing specified by the source code evaluation program 120. A source code file that is the source of the object code to be inspected and a verification model file created based on the source code are stored in the hard disk 114 on the computer 110. A user operation on the source code evaluation program 120 can be performed from the input device 130 such as a keyboard. The output by the source code evaluation program 120 is displayed on a display device 140 such as a display or generated as a data file on the hard disk 114, but is output to a non-illustrated external computer via a network, an external device such as a CD-ROM. It may be output by writing to a storage medium in a data file format. Other programs are also operated by inputting and outputting in the same manner as the source code evaluation program 120.

図2は、ROM113に格納されたプログラムの構成を示している。プログラムには、検証モデル生成プログラム210と、ソースコード評価プログラム120がある。   FIG. 2 shows the configuration of the program stored in the ROM 113. The programs include a verification model generation program 210 and a source code evaluation program 120.

検証モデル生成プログラム210は、ソースコード200を入力とし、検証モデル240を出力する。検証モデル生成プログラム210は、コード解析部220、変数依存関係抽出部225、コード抽出部230、変換部235からなる。コード解析部220は、ソースコード220の変数依存関係を解析する。変数依存関係抽出部225は、コード解析部220から変数依存関係データを受け取り、ユーザが指定した変数について、変数依存関係を抽出する。コード抽出部230は、ソースコード200から、変数依存関係抽出部225により抽出された変数依存関係データに関係するコードを抽出する。変換部235は、コード抽出部230が抽出したコードを、所定の変換ルールに沿ってモデル記述言語に変換することで、検証モデル240を生成し、出力する。   The verification model generation program 210 receives the source code 200 and outputs a verification model 240. The verification model generation program 210 includes a code analysis unit 220, a variable dependency extraction unit 225, a code extraction unit 230, and a conversion unit 235. The code analysis unit 220 analyzes the variable dependency relationship of the source code 220. The variable dependency relationship extraction unit 225 receives the variable dependency relationship data from the code analysis unit 220, and extracts the variable dependency relationship for the variable designated by the user. The code extraction unit 230 extracts a code related to the variable dependency relationship data extracted by the variable dependency relationship extraction unit 225 from the source code 200. The conversion unit 235 generates and outputs a verification model 240 by converting the code extracted by the code extraction unit 230 into a model description language according to a predetermined conversion rule.

ソースコード評価プログラム120は、入力部250、検出部260、評価点算出部270、評価データベース280、表示部290とからなる。入力部250は、変数依存関係抽出部225により抽出された変数依存関係データを入力として読み込む。検出部260は、入力部250により読み込まれた変数依存関係データに対して解析を行い、異なる実行単位にまたがる依存関係を不具合要因の可能性のある箇所として検出し、評価データベース280に記録する。評価点算出部270は、入力部250により読み込まれた変数依存関係データと、検出部260による不具合要因の可能性の検出結果とから、変数依存関係上の各変数について、すなわちプログラムの各箇所について不具合可能性の評価点を算出し、評価データベース280に記録する。表示部290は、評価点算出部270により算出された評価点を評価データベース280から取得し、表示装置290にて表示する。表示部290は、評価点を変数依存関係データと共に表示することもある。   The source code evaluation program 120 includes an input unit 250, a detection unit 260, an evaluation score calculation unit 270, an evaluation database 280, and a display unit 290. The input unit 250 reads the variable dependency relationship data extracted by the variable dependency relationship extraction unit 225 as an input. The detection unit 260 analyzes the variable dependency relationship data read by the input unit 250, detects a dependency relationship across different execution units as a possible defect factor, and records it in the evaluation database 280. The evaluation score calculation unit 270 determines, based on the variable dependency relationship data read by the input unit 250 and the detection result of the possibility of the failure factor by the detection unit 260, about each variable on the variable dependency relationship, that is, for each part of the program. An evaluation score of the possibility of malfunction is calculated and recorded in the evaluation database 280. The display unit 290 acquires the evaluation score calculated by the evaluation score calculation unit 270 from the evaluation database 280 and displays it on the display device 290. The display unit 290 may display the evaluation score together with the variable dependency relationship data.

図3は、検証モデル生成プログラム210とソースコード評価プログラム120とが実行する処理フローである。ステップ300で処理が開始される。このとき、評価データベース280は初期化される。ステップ310にてコード解析部220は、ソースコード200を解析して変数依存関係データを生成する。ステップ320にて変数依存関係抽出部225は、コード解析部220の解析した変数依存関係データから、ユーザが指定した変数に関連する変数依存関係データを抽出する。ステップ330にて入力部250は、変数依存関係抽出部225により抽出された変数依存関係データを入力として読み込む。ステップ340にて検出部260は、変数依存関係データに対して解析を行い、異なる実行単位にまたがる依存関係を検出し、評価データとして評価データベース280に記録する。ステップ350にて評価点算出部270は、変数依存関係上の各変数について不具合可能性の評価点を算出し、評価データとして評価データベース280に記録する。ステップ360にて表示部290は、評価点算出部270により算出された評価点を評価データベース280から取得し、表示装置290にて表示する。ステップ390で処理を終了する。   FIG. 3 is a processing flow executed by the verification model generation program 210 and the source code evaluation program 120. In step 300, the process is started. At this time, the evaluation database 280 is initialized. In step 310, the code analysis unit 220 analyzes the source code 200 and generates variable dependency relationship data. In step 320, the variable dependency extraction unit 225 extracts variable dependency relationship data related to the variable designated by the user from the variable dependency relationship data analyzed by the code analysis unit 220. In step 330, the input unit 250 reads the variable dependency relationship data extracted by the variable dependency relationship extraction unit 225 as an input. In step 340, the detection unit 260 analyzes the variable dependency relationship data, detects a dependency relationship across different execution units, and records it as evaluation data in the evaluation database 280. In step 350, the evaluation score calculation unit 270 calculates an evaluation score of possibility of failure for each variable on the variable dependency relationship, and records it in the evaluation database 280 as evaluation data. In step 360, display unit 290 acquires the evaluation score calculated by evaluation score calculation unit 270 from evaluation database 280 and displays it on display device 290. In step 390, the process ends.

図4は、評価点算出部270によるステップ350の処理を詳細化したフローである。この処理は、ツリー形式に抽出された変数依存関係データの各ノードにおいて実行されるものであり、かつルートノードから下位ノードに向かって再帰的に実行される。ステップ400で処理が開始される。ステップ410からステップ450は、各下位ノードについて実行される。ステップ410では、各下位ノードに対して本フローの処理が実行される。ステップ420からステップ450は、1つの下位ノードが評価対象としている各変数について実行される。ステップ420では、1変数についての当該下位ノードにおける評価データが評価データベース280から取得される。この評価データはカテゴリ1とカテゴリ2に区別されている。カテゴリ2はデータ競合の可能性を示し、カテゴリ1はそれ以外の可能性を示す。カテゴリ2がデータ競合の可能性を示す理由は、変数ツリーの下位に同一の変数へのアクセスが出現していることを意味しているためである。   FIG. 4 is a flow detailing the process of step 350 by the evaluation score calculation unit 270. This process is executed at each node of the variable dependency relationship data extracted in the tree format, and is recursively executed from the root node toward the lower nodes. In step 400, the process is started. Steps 410 to 450 are executed for each lower node. In step 410, the process of this flow is executed for each lower node. Step 420 to step 450 are executed for each variable that is evaluated by one lower node. In step 420, evaluation data in the lower node for one variable is acquired from the evaluation database 280. This evaluation data is classified into category 1 and category 2. Category 2 shows the possibility of data race, and category 1 shows the other possibility. The reason that category 2 indicates the possibility of data conflict is that access to the same variable appears below the variable tree.

ステップ430では、ステップ420で対象とした変数が、現ノードにおいて評価対象とされているかを評価データベース280から判定する。当該変数に関する評価データが評価データベース280にない、すなわち評価対象とされておらず、かつ下位ノードでの当該変数の評価データがカテゴリ1であれば、ステップ440へ進む。それ以外、すなわち評価データがあり評価対象とされているか、または下位ノードでの評価データがカテゴリ2であれば、ステップ450へ進む。ステップ440では、当該変数に関する下位ノードでの評価データを、当該ノードのカテゴリ1の評価データとして評価データベース280に記録する。ステップ450では、当該変数に関する下位ノードでの評価データを、現ノードのカテゴリ2の評価データに追加する。さらに現ノードでの当該変数に関するカテゴリ1の評価データをクリアしてカテゴリ2に追加し、評価データベース280に記録する。全ての評価対象変数と下位ノードについて処理を実施した後、ステップ490にて本フローを終了する。   In step 430, it is determined from the evaluation database 280 whether the variable targeted in step 420 is an evaluation target in the current node. If the evaluation data regarding the variable is not in the evaluation database 280, that is, it is not an evaluation target, and the evaluation data of the variable at the lower node is category 1, the process proceeds to step 440. Otherwise, that is, if there is evaluation data and it is an evaluation target, or if the evaluation data at the lower node is category 2, the process proceeds to step 450. In step 440, the evaluation data at the lower node relating to the variable is recorded in the evaluation database 280 as the category 1 evaluation data of the node. In step 450, the evaluation data at the lower node regarding the variable is added to the evaluation data of category 2 of the current node. Further, the evaluation data of category 1 relating to the variable at the current node is cleared, added to category 2, and recorded in evaluation database 280. After the processing is performed for all the evaluation target variables and the lower nodes, this flow is finished in step 490.

図4の処理フローのように、下位ノードにおける不具合要因の検出結果を、上位ノードで集計することにより、上位ノードにおける不具合リスク、コード抽出部230が抽出するコードに含まれる不具合リスクを評価することができる。   As shown in the processing flow of FIG. 4, the failure risk in the lower node and the failure risk included in the code extracted by the code extraction unit 230 are evaluated by counting the detection results of the failure factor in the lower node at the upper node. Can do.

図5は検証対象となるサンプルプログラムのソースコードの一部を示している。本実施例では、ソースコードはC言語で記述されているものとする。ソースファイル510,520,530からなるプログラムの構成を以下に説明する。主処理は関数funcである。関数inputは割込みにより実行される設定となっており、レジスタ変数DI0に入力される値を変数aに代入する。レジスタ変数DI0の値はいつでも変化しうる。関数funcでは、変数aを2倍する処理を関数calc1,calc2で冗長に行い、2つの計算結果x1,x2を比較して、一致していれば計算結果を確定させて変数xに代入し、一致していなければエラー対処を関数err_handleで行なう。   FIG. 5 shows a part of the source code of the sample program to be verified. In this embodiment, it is assumed that the source code is written in C language. The configuration of a program composed of source files 510, 520, and 530 will be described below. The main process is a function func. The function input is set to be executed by interruption, and substitutes the value input to the register variable DI0 for the variable a. The value of register variable DI0 can change at any time. In the function func, the process of doubling the variable a is performed redundantly in the functions calc1 and calc2, the two calculation results x1 and x2 are compared, and if they match, the calculation result is fixed and assigned to the variable x, If they do not match, the error handling is performed by the function err_handle.

図6は、図5のサンプルソースコードをコード解析部220が解析し、変数依存関係抽出部225が変数x(016行目)をルートノードとしてツリー形式に抽出した変数依存関係データをグラフ化した変数ツリー600である。変数依存関係データや変数ツリー600にて、ノードは変数を示しており、変数は記述位置や属する実行単位で区別されている。例えばx@016は、016行目の変数xを意味している。各変数が属する実行単位や関数は図には示されていないが、データには含まれる。変数ツリー600では、if文のような制御構文もノードとして扱っている。斜め線のついている変数ノードは、当該ノードが変数ツリーの他の箇所に既出であり(以下「既出ノード」を呼ぶ)、下位ノードを省略していることを意味している。矢印が依存関係を示しており、矢印の元が依存元つまり変数値に影響を与える方、矢印の先が依存先つまり影響を受ける方である。また実線の矢印は依存先と依存元の変数が同一の実行単位に含まれることを意味し、破線の矢印は異なる依存先と依存元の変数が異なる実行単位に属することを意味する。   FIG. 6 is a graph of the variable dependency data obtained by analyzing the sample source code of FIG. 5 by the code analysis unit 220 and the variable dependency extraction unit 225 extracting the variable x (line 016) as a root node in a tree format. Variable tree 600. In the variable dependency relationship data and the variable tree 600, the node indicates a variable, and the variable is distinguished by the description position and the execution unit to which the node belongs. For example, x @ 016 means the variable x on the 016th line. The execution unit or function to which each variable belongs is not shown in the figure, but is included in the data. In the variable tree 600, a control syntax such as an “if” statement is also handled as a node. A variable node with an oblique line means that the node has already appeared in another part of the variable tree (hereinafter referred to as “existing node”), and a lower node is omitted. An arrow indicates a dependency relationship, and the source of the arrow affects the dependency source, that is, the variable value, and the tip of the arrow indicates the dependency destination, that is, the affected one. A solid line arrow means that the dependency destination and the dependency source variable are included in the same execution unit, and a broken line arrow means that the different dependency destination and the dependency source variable belong to different execution units.

検出部260はステップ340にて、変数ツリー600を探索し、破線の矢印で表現される依存関係を発見、抽出する。変数ツリー600では、a@205からa@104への依存関係と、a@205からa@109への依存関係が該当する。これらは異なる実行単位にまたがる依存関係であり、処理タイミングに依存する不具合要因の可能性のある箇所として認識される。   In step 340, the detection unit 260 searches the variable tree 600, and finds and extracts a dependency represented by a dashed arrow. In the variable tree 600, a dependency relationship from a @ 205 to a @ 104 and a dependency relationship from a @ 205 to a @ 109 correspond. These are dependency relationships that extend over different execution units, and are recognized as possible fault factors depending on the processing timing.

図7は、図5のサンプルソースコードに関する評価データベース280の内容を示している。評価データ700では、変数ツリー600のノードごと、すなわち記述位置(ここでは行で表現)で区別された変数ごとに、カテゴリ1とカテゴリ2それぞれの評価データが記録されている。「a(2)」は、変数aが評価対象として、不具合要因の可能性のある箇所が当該ノードから下位に2箇所存在していることを示している。この数値が評価点となる。なお図7では評価データが空のノードなど、一部データの図示を省略している。   FIG. 7 shows the contents of the evaluation database 280 relating to the sample source code of FIG. In the evaluation data 700, the evaluation data for each of the category 1 and the category 2 is recorded for each node of the variable tree 600, that is, for each variable distinguished by the description position (represented by a line here). “A (2)” indicates that the variable a is an evaluation target, and there are two places where there is a possibility of a failure factor from the node. This numerical value becomes an evaluation score. In FIG. 7, illustration of some data such as nodes with empty evaluation data is omitted.

なお、評価点は、上述のように不具合要因の可能性のある箇所の個数の値に限定されるものではなく、種々のものが考えられる。例えば、評価点は、不具合要因の可能性のある箇所の個数に対応させてA、B、C、…といったように不具合要因の可能性の程度を表すものであってもよい。この場合には、不具合要因の可能性のある箇所が1箇所であれば評価点をAとし、2箇所であれば評価点をBとするといった方法を採ることもでき、不具合要因の可能性のある箇所が1〜2箇所であれば評価点をAとし、3〜4箇所であれば評価点をBとするといったように、一つの評価点が所定の幅を有するものであってもよい。   Note that the evaluation points are not limited to the value of the number of places where there is a possibility of failure as described above, and various evaluation points can be considered. For example, the evaluation score may represent the degree of the possibility of the failure factor such as A, B, C,... Corresponding to the number of places where the failure factor may be possible. In this case, it is possible to adopt a method in which the evaluation score is A if there is one potential failure factor, and the evaluation score is B if there are two potential failure factors. One evaluation point may have a predetermined width, such that an evaluation point is A if there are one or two places, and an evaluation point is B if there are three or four places.

検出部260が抽出した2箇所の依存関係は、a(104行目)とa(109行目)のカテゴリ1の欄に、「a(1)」として記録されている。つまり検出部260が抽出した依存関係は、依存先の変数に関するデータとして評価データベース280に記録される。ステップ340が終了した時点では、評価データ700に記録されたデータはこの2つのみである。その次に、評価点算出部270がステップ350にて、図4の処理フローを変数ツリー600と評価データ700を入力として実行する。x1@104は下位にa@104があり、a@104はカテゴリ1に「a(1)」の評価データがある。x1@104には変数aについての評価がないため、ステップ430からはステップ440に進み、評価データ700のカテゴリ1に「a(1)」が入る。同様にx1@016のカテゴリ1にも「a(1)」が入る。変数ツリー600にて、斜め線のついた変数ノードであるx1@104では、図4の処理は実施せず、評価データは空とする。これにより、x1@012も評価データが空になる。   The dependency between the two locations extracted by the detection unit 260 is recorded as “a (1)” in the category 1 column of a (line 104) and a (line 109). That is, the dependency relationship extracted by the detection unit 260 is recorded in the evaluation database 280 as data related to the dependency destination variable. At the time when step 340 is completed, only these two data are recorded in the evaluation data 700. Next, the evaluation score calculation unit 270 executes the processing flow of FIG. 4 with the variable tree 600 and the evaluation data 700 as inputs in step 350. x1 @ 104 has a @ 104 at the lower level, and a @ 104 has evaluation data “a (1)” in category 1. Since x1 @ 104 does not evaluate the variable a, the process proceeds from step 430 to step 440, and “a (1)” is entered in category 1 of the evaluation data 700. Similarly, “a (1)” is also entered in category 1 of x1 @ 016. In the variable tree 600, the process shown in FIG. 4 is not performed at x1 @ 104, which is a variable node with diagonal lines, and the evaluation data is empty. As a result, the evaluation data of x1 @ 012 is also emptied.

x2@109の下位にはa@109があり、x2@109には変数aについての評価がないため、評価データ700のカテゴリ1に「a(1)」が入る。同様にx2@012、if@012のカテゴリ1にも「a(1)」が入る。x@016の下位にはx1@016とif@012がある。まずx1@016の評価データを取得すると、カテゴリ1に「a(1)」の評価データがあり、x@016には変数aについての評価がないため、カテゴリ1に「a(1)」が入る。次にif@012の評価データを取得すると、やはりカテゴリ1に「a(1)」の評価データがあるが、ここでx@016のカテゴリ1には既に変数aについての評価データが存在するため、ステップ430からはステップ450に進み、既に記録されたカテゴリ1の「a(1)」をクリアしつつ、if@012の「a(1)」と合算し、カテゴリ2に「a(2)」を記録する。以上でステップ350の処理は終了する。   Since there is a @ 109 below x2 @ 109 and x2 @ 109 has no evaluation for variable a, “a (1)” is entered in category 1 of evaluation data 700. Similarly, “a (1)” is also entered in the category 1 of x2 @ 012 and if @ 012. Below x @ 016 are x1 @ 016 and if @ 012. First, when the evaluation data of x1 @ 016 is acquired, there is evaluation data of “a (1)” in category 1, and there is no evaluation of variable a in x @ 016, so “a (1)” is in category 1. enter. Next, when the evaluation data of if @ 012 is acquired, there is still evaluation data of “a (1)” in category 1, but here, evaluation data for variable a already exists in category 1 of x @ 016. From step 430, the process proceeds to step 450, where “a (1)” of category 1 already recorded is cleared, and “a (1)” of if @ 012 is added, and “a (2)” is added to category 2. Is recorded. Above, the process of step 350 is complete | finished.

図7で評価データ710は、評価データ700とは異なる形式での評価データの記録方法を示している。評価データ710では、検出部260が抽出した依存関係の依存先が記録される。ステップ440やステップ450でも、検出部260が抽出した情報を保持して記録がされる。このためx@016には、カテゴリ2の要因としてa@104,a@109が記録される。評価点は各カテゴリに記録された変数の数をカウントして付けられる。a@104,a@109はそれぞれカテゴリ1に自身を含んでいるため、不具合要因の存在箇所であることがわかる。評価データ710の形式では、不具合要因の重複は排除することができるため、既出ノードであるx1@104でも図4の処理を実施してよい。実施した場合、x1@012はカテゴリ1に「a@104」が入る。if@012ではカテゴリ1に「a@104」と「a@109」が入る。x@016にて、x1@016の「a@104」と、if@012の「a@104」が重複していることがステップ450にて判定され、片方だけがカテゴリ2に記録される。   In FIG. 7, evaluation data 710 indicates a method of recording evaluation data in a format different from the evaluation data 700. In the evaluation data 710, the dependency destination extracted by the detection unit 260 is recorded. Also in step 440 and step 450, the information extracted by the detection unit 260 is retained and recorded. For this reason, a @ 104 and a @ 109 are recorded in x @ 016 as the cause of category 2. Evaluation points are assigned by counting the number of variables recorded in each category. Since a @ 104 and a @ 109 each include themselves in category 1, it can be seen that they are locations of failure factors. In the format of the evaluation data 710, duplication of failure factors can be eliminated. Therefore, the process shown in FIG. 4 may be performed even on the already-exited node x1 @ 104. When implemented, “a @ 104” is placed in category 1 for x1 @ 012. In if @ 012, “a @ 104” and “a @ 109” are entered in category 1. At x @ 016, it is determined at step 450 that “a @ 104” of x1 @ 016 and “a @ 104” of if @ 012 are duplicated, and only one of them is recorded in category 2.

図8は、表示部290によるステップ360での表示内容を示している。評価点テーブル800は、評価データ700または710の内容を集計したものである。x@016はカテゴリ2の評価点が2、a@104とa@109はカテゴリ1の評価点が1であることが示されている。なお評価点テーブル800は、変数ツリー600の各ノードのうち、下位ノードと評価点が異なるノードのみを表示している。プログラムの他の箇所や、x@016の依存先を変数依存関係のルートとして同様に評価点を算出し、評価点の高い順に評価点テーブル800と同様の表示を行なうことで、ユーザは検証対象に優先順位を付けることができる。またカテゴリ1,2と区別して評価点が表示されているため、ユーザは不具合要因がデータ競合なのかそれ以外なのかを認識することができ、検証対象を選定する際の参考情報とすることができる。例えばデータ競合について優先的に検証するという方針があるときは、カテゴリ2の数値が高い箇所を選べばよい。但し、評価点がカテゴリ1,2の数値を合算した値で表示されるものであってもよい。また、特定のカテゴリの優先度が高い場合には、そのカテゴリに関する評価点のみを表示するものであってもよい。   FIG. 8 shows the contents displayed at step 360 by the display unit 290. The evaluation score table 800 is a summary of the contents of the evaluation data 700 or 710. x @ 016 indicates that the evaluation score of category 2 is 2, and a @ 104 and a @ 109 indicate that the evaluation score of category 1 is 1. It should be noted that the evaluation score table 800 displays only the nodes having different evaluation scores from the lower nodes among the nodes of the variable tree 600. Evaluation points are calculated in the same manner using other parts of the program or x @ 016 dependency destination as the root of the variable dependency relationship, and the same display as the evaluation score table 800 is performed in the descending order of evaluation points, so that the user can verify Can be prioritized. In addition, since the evaluation points are displayed separately from the categories 1 and 2, the user can recognize whether the cause of the failure is data competition or not, and can be used as reference information when selecting the verification target. it can. For example, when there is a policy of preferentially verifying data competition, a location with a high category 2 value may be selected. However, the evaluation score may be displayed as a value obtained by adding the numerical values of categories 1 and 2. Moreover, when the priority of a specific category is high, only the evaluation score regarding the category may be displayed.

評価点テーブル800では変数ごとに評価点を表示したが、表示部290がソースコード200を入力として、変数の記述位置情報を利用して、変数が記述された箇所のコードを評価点と共に表示してもよい。   Although the evaluation score is displayed for each variable in the evaluation score table 800, the display unit 290 uses the source code 200 as an input and displays the code of the location where the variable is described together with the evaluation score using the description position information of the variable. May be.

変数ツリー810は、変数ツリー600の各ノードに、評価データ700のカテゴリ1,2の数値を付与して表示したグラフである。各ノードに付記された数値のうち、左側がカテゴリ1、右側がカテゴリ2の数値を示している。このような表示により、ユーザは視覚的に変数ツリーと不具合要因の分布との関係を認識することができる。   The variable tree 810 is a graph displayed by assigning numerical values of categories 1 and 2 of the evaluation data 700 to each node of the variable tree 600. Among the numerical values appended to each node, the left side indicates the category 1 and the right side indicates the category 2 numerical value. With such a display, the user can visually recognize the relationship between the variable tree and the distribution of failure factors.

検証モデル生成プログラム210のコード抽出部230に対し、ユーザは変数ツリー上で抽出範囲を指定するとしたとき、変数ツリー810のような表示は、検証対象の優先順位を含め、ユーザによる抽出範囲の検討をしやすくする。変数ツリーにて下位ノードを全て抽出すると、コード抽出量が膨大になる場合がある。このため途中で下位ノードの抽出を打ち切ることができれば、コード抽出量は抑えられ、検証モデルのサイズも小さくなる。変数ツリーの下位ノードを抽出する深さは、上位ノードの評価点に影響する。ユーザは段階的に下位ノードを抽出しながら、評価点を観察することで、下位ノードの抽出範囲を適切に選定することができる。   When the user designates an extraction range on the variable tree for the code extraction unit 230 of the verification model generation program 210, the display such as the variable tree 810 displays the priority range to be verified, and the user considers the extraction range. Make it easier to do. If all the lower nodes are extracted from the variable tree, the amount of code extraction may become enormous. For this reason, if the extraction of lower nodes can be interrupted, the amount of code extraction can be suppressed and the size of the verification model can be reduced. The depth of extracting the lower node of the variable tree affects the evaluation score of the upper node. The user can appropriately select the extraction range of the lower nodes by observing the evaluation points while extracting the lower nodes step by step.

コード抽出部230は、評価データベース280から評価点を取得し、検証範囲を自動的に選定することもできる。例えば変数ツリー600のルートノードの各下位ノードについて、評価点の最も高いノードをルートとするサブツリーを用いてコードを抽出することで、検証対象を分割しつつ、不具合可能性の高い箇所を含む検証モデルを生成することができる。または、プログラムに記述されている変数について1つずつ変数ツリーを抽出させ、評価点を観察し、評価点が指定された閾値以上となる変数について、コード抽出と検証モデルへの変換を実行してもよい。   The code extraction unit 230 can also acquire evaluation points from the evaluation database 280 and automatically select a verification range. For example, for each sub-node of the root node of the variable tree 600, by extracting a code using a sub-tree whose root is the node having the highest evaluation score, verification including a portion having a high possibility of a failure while dividing the verification target A model can be generated. Or, extract the variable tree one by one for the variables described in the program, observe the evaluation points, execute code extraction and conversion to the verification model for the variables whose evaluation points exceed the specified threshold Also good.

関数ツリー820は、変数ツリー810の各ノードを属する関数を単位として集約し、その関数をノードとして表現したものである。変数ツリー810と同様に評価データ700の評価点が関数ノードに付与されているが、1つの関数内でもっとも評価点の高い変数ノードの数値が付与されている。関数ツリー820は、変数ツリー810より表示が簡素化されるので、ユーザの認識がしやすい。ユーザは評価結果を詳細に把握したいときには変数ツリー810を、概要を把握したいときには関数ツリー820を表示させるといったように使い分ければよい。   The function tree 820 aggregates the functions belonging to each node of the variable tree 810 as a unit, and expresses the functions as nodes. Similar to the variable tree 810, the evaluation points of the evaluation data 700 are assigned to the function nodes, but the numerical value of the variable node having the highest evaluation point in one function is assigned. Since the display of the function tree 820 is simpler than that of the variable tree 810, it is easy for the user to recognize. The user may use the variable tree 810 when the user wants to grasp the evaluation result in detail, or the function tree 820 when he / she wants to grasp the summary.

なお図8に示されるような評価点の情報は、モデル検査だけでなく、ソフトウェアの検証手法全般での対象の優先順位付けや、不具合の可能性がある箇所の抽出に利用できる情報である。   Note that the evaluation point information as shown in FIG. 8 is information that can be used not only for model checking but also for prioritization of objects in the overall software verification method and for extraction of a potential defect.

ところで、図8では、プログラム中の変数依存関係を有する全ての箇所に対して評価点を表示するものであるが、これに限定されるものではない。例えば、評価点が0である点には評価点を表示しないものであってもよく、また、評価点が一定以上(例えば、2点以上)の箇所のみを表示するものであってもよい。さらには、複数の変数の中でも特に不具合を生じさせやすい特定の変数に関係する箇所のみを表示するものであってもよく、例えば図8の例では、カテゴリー1に関する評価点のみを表示することが考えられる。 図9は、ユーザが図8の評価結果や、さらにその評価結果から検証モデル240を生成させて検証実行した結果から、不具合要因を把握してソースコード510を修正したソースコード910、およびソースコード910,520,530について図3の処理を実行し、変数ツリー810と同様に評価結果を表示させた変数ツリー920を示している。ソースコード910では、関数inputを割込みで実行する設定をやめ、関数funcの冒頭で呼び出すように修正している。これにより、変数aの値が関数funcの以降の実行中に変化することがなくなる。この修正により変数ツリー920では、全ての評価点が0となり、ユーザは不具合要因が除去されたことを認識することができる。   By the way, in FIG. 8, evaluation points are displayed for all portions having a variable dependency in the program, but the present invention is not limited to this. For example, an evaluation score may not be displayed at a point where the evaluation score is 0, or only a portion where the evaluation score is a certain level or more (for example, 2 points or more) may be displayed. Furthermore, only a part related to a specific variable that is likely to cause a failure among a plurality of variables may be displayed. For example, in the example of FIG. Conceivable. FIG. 9 shows source code 910 in which the source code 510 is corrected by grasping the cause of the malfunction based on the evaluation result of FIG. 8 and the result of the verification model 240 generated from the evaluation result and verification execution. 3 shows the variable tree 920 in which the processing of FIG. 3 is executed for 910, 520, and 530 and the evaluation results are displayed in the same manner as the variable tree 810. In the source code 910, the setting to execute the function input by interruption is stopped, and the function code is corrected to be called at the beginning of the function func. As a result, the value of the variable a does not change during the subsequent execution of the function func. With this modification, all the evaluation points are set to 0 in the variable tree 920, and the user can recognize that the failure factor has been removed.

以上のように、本実施形態に係るソースコード検証システムによれば、タイミングに依存する不具合を良好に検出することができ、検証者に対して有用な情報を適切に提供することができる。具体的には、検証対象の箇所ごとの不具合の可能性を評価し、その評価に基いた評価点を検証対象の箇所ごとに付与し、その評価点が表示されるため、検証者は、検証対象の優先順位を容易に把握することができる。従って、検証者は前記評価点から、プログラムの各箇所について検証実施の優先順位を決めることができ、限られた人手と時間の中で費用対効果の高い検証を実施することができる。   As described above, according to the source code verification system according to the present embodiment, it is possible to satisfactorily detect a timing-dependent defect and appropriately provide useful information to the verifier. Specifically, the verifier verifies the possibility of failure for each location to be verified, assigns an evaluation score based on the evaluation to each location to be verified, and displays the evaluation score. The priority order of the objects can be easily grasped. Therefore, the verifier can determine the priority of the execution of verification for each part of the program from the evaluation points, and can perform cost-effective verification in a limited amount of manpower and time.

120…ソースコード評価プログラム、140…表示装置、200…ソースコード、210…検証モデル生成プログラム、220…コード解析部、225…変数依存関係抽出部、230…コード抽出部、235…変換部、240…検証モデル、250…入力部、260…検出部、270…評価点算出部、280…評価データベース、290…表示部   DESCRIPTION OF SYMBOLS 120 ... Source code evaluation program, 140 ... Display apparatus, 200 ... Source code, 210 ... Verification model generation program, 220 ... Code analysis part, 225 ... Variable dependence extraction part, 230 ... Code extraction part, 235 ... Conversion part, 240 ... Verification model, 250 ... Input unit, 260 ... Detection unit, 270 ... Evaluation point calculation unit, 280 ... Evaluation database, 290 ... Display unit

Claims (5)

プログラムに含まれる変数の依存関係に関する変数依存関係データに基づいて、異なる実行単位にまたがる変数依存関係を有する箇所を不具合要因の可能性のある箇所として検出する不具合要因検出手段と、
前記変数依存関係に基づいて、前記箇所に関する不具合可能性の評価点を算出する評価点算出手段と、
前記評価点を表示する評価点表示手段とを備え、
前記評価点算出手段に入力される前記変数依存関係データはツリー形式であり、前記評価点算出手段は前記不具合要因検出手段による検出結果を前記変数依存関係データの上位ノードで集計することにより前記評価点を算出することを特徴とするソースコード検証システム。
A failure factor detection means for detecting a location having a variable dependency across different execution units as a possible failure factor based on variable dependency data relating to the dependency of a variable included in the program;
Based on the variable dependency relationship, an evaluation score calculating means for calculating an evaluation score of the possibility of malfunction related to the location;
For example Bei and an evaluation point display means for displaying the evaluation point,
The variable dependency relationship data input to the evaluation score calculation means is in a tree format, and the evaluation score calculation means counts the detection results by the failure factor detection means at an upper node of the variable dependency relationship data. A source code verification system characterized by calculating points .
プログラムに含まれる変数の依存関係に関する変数依存関係データに基づいて、異なる実行単位にまたがる変数依存関係を有する箇所を不具合要因の可能性のある箇所として検出する不具合要因検出手段と、
前記変数依存関係に基づいて、前記箇所に関する不具合可能性の評価点を算出する評価点算出手段と、
前記評価点を表示する評価点表示手段とを備え、
前記評価点表示手段は、前記評価点が付けられたプログラムの箇所と前記評価点とを対応付けて表示し、かつ前記評価点の高低順に表示することを特徴とするソースコード検証システム。
A failure factor detection means for detecting a location having a variable dependency across different execution units as a possible failure factor based on variable dependency data relating to the dependency of a variable included in the program;
Based on the variable dependency relationship, an evaluation score calculating means for calculating an evaluation score of the possibility of malfunction related to the location;
Evaluation point display means for displaying the evaluation point,
The evaluation score display means displays the location of the program to which the evaluation score is attached and the evaluation score in association with each other, and displays them in the order of the evaluation score .
プログラムに含まれる変数の依存関係に関する変数依存関係データに基づいて、異なる実行単位にまたがる変数依存関係を有する箇所を不具合要因の可能性のある箇所として検出する不具合要因検出手段と、
前記変数依存関係に基づいて、前記箇所に関する不具合可能性の評価点を算出する評価点算出手段と、
前記評価点を表示する評価点表示手段とを備え、
前記評価点表示手段は、前記変数依存関係データのグラフにおいて、前記評価点が付けられた変数と前記評価点とを対応付けて表示することを特徴とするソースコード検証システム。
A failure factor detection means for detecting a location having a variable dependency across different execution units as a possible failure factor based on variable dependency data relating to the dependency of a variable included in the program;
Based on the variable dependency relationship, an evaluation score calculating means for calculating an evaluation score of the possibility of malfunction related to the location;
Evaluation point display means for displaying the evaluation point,
The evaluation point display means displays the variable to which the evaluation point is attached and the evaluation point in association with each other in the graph of the variable dependency relationship data .
前記評価点算出手段は、データ競合の可能性を示す評価点と、それ以外の可能性を示す評価点とを区別して算出することを特徴とする、請求項1乃至3のいずれかに記載のソースコード検証システム。 The said evaluation score calculation means distinguishes and calculates the evaluation score which shows the possibility of data competition, and the evaluation score which shows the other possibility , The Claim 1 thru | or 3 characterized by the above-mentioned. Source code verification system. プログラムのソースコードから変数依存関係データを解析するコード解析部と、
前記変数依存関係データからユーザ指定の変数に関係する部分を抽出する変数依存関係抽出部と、
前記ソースコードから前記抽出された依存関係データに対応するコードを抽出するコード抽出部と、
前記変数依存関係データに基づいて、異なる実行単位にまたがる変数依存関係から不具合要因の可能性のある箇所を検出する不具合要因検出手段と、
前記変数依存関係に基づいて、前記箇所に関する不具合可能性の評価点を算出する評価点算出手段とを備え、
前記コード抽出部は、前記評価点に基づき、コードの抽出範囲を選定することを特徴とする、ソースコード検証システム。
A code analysis unit that analyzes variable dependency data from the source code of the program;
A variable dependency extraction unit that extracts a portion related to a user-specified variable from the variable dependency data;
A code extraction unit for extracting a code corresponding to the extracted dependency data from the source code;
A failure factor detection means for detecting a possible defect factor from a variable dependency across different execution units based on the variable dependency relationship data;
An evaluation score calculating means for calculating an evaluation score of the possibility of malfunction related to the location based on the variable dependency relationship;
The code extraction unit selects a code extraction range based on the evaluation points, and is a source code verification system.
JP2014222207A 2014-10-31 2014-10-31 Source code verification system Active JP6416588B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014222207A JP6416588B2 (en) 2014-10-31 2014-10-31 Source code verification system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014222207A JP6416588B2 (en) 2014-10-31 2014-10-31 Source code verification system

Publications (2)

Publication Number Publication Date
JP2016091138A JP2016091138A (en) 2016-05-23
JP6416588B2 true JP6416588B2 (en) 2018-10-31

Family

ID=56016872

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014222207A Active JP6416588B2 (en) 2014-10-31 2014-10-31 Source code verification system

Country Status (1)

Country Link
JP (1) JP6416588B2 (en)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6731366B2 (en) * 2017-03-10 2020-07-29 日立オートモティブシステムズ株式会社 Source code verification system
JP7050587B2 (en) * 2018-06-11 2022-04-08 三菱電機株式会社 Violation dependency detector and violation dependency detector
US10761961B2 (en) * 2018-12-21 2020-09-01 Fujitsu Limited Identification of software program fault locations
JP7454700B2 (en) * 2020-10-28 2024-03-22 日立Astemo株式会社 Arithmetic device and inspection method

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5775829B2 (en) * 2012-01-30 2015-09-09 日立オートモティブシステムズ株式会社 Software structure visualization program and system
JP2013254371A (en) * 2012-06-07 2013-12-19 Toyota Motor Corp Software development support device, software development support method and software development support program
JPWO2014141352A1 (en) * 2013-03-11 2017-02-16 株式会社日立製作所 System controller

Also Published As

Publication number Publication date
JP2016091138A (en) 2016-05-23

Similar Documents

Publication Publication Date Title
US8397104B2 (en) Creation of test plans
US10162739B2 (en) Test case generation system and recording medium wherein test case is recorded
US20140033174A1 (en) Software bug predicting
JP6416588B2 (en) Source code verification system
US20090319833A1 (en) Software Quality Assessment based on Semantic Similarities
US20120185669A1 (en) Program inspection method and non-transitory, computer readable storage medium storing inspection program
JP6245006B2 (en) Test case generation apparatus, method, and program
JP2020135171A (en) Machine learning program verification apparatus and machine learning program verification method
Lavalle et al. An approach to automatically detect and visualize bias in data analytics
Muthusamy et al. Effectiveness of test case prioritization techniques based on regression testing
Ngo et al. Ranking warnings of static analysis tools using representation learning
JP6723483B2 (en) Test case generation device, test case generation method, and test case generation program
JP5811978B2 (en) Test case generation apparatus and test case generation method for model-based control apparatus
JP2013077124A (en) Software test case generation device
JP2001273169A (en) Device for generating program test specification
JP6003733B2 (en) Program analysis apparatus, method and program
JP2017224185A (en) Bug contamination probability calculation program and bug contamination probability calculation method
JP4681574B2 (en) Sampling inspection system
JP7331681B2 (en) Test execution program, test execution method, and test execution device
CN110309054B (en) Code validity testing method, computing device and storage medium
CN114706769A (en) Log-based regression test-oriented black box test case sequencing method
CN106294130A (en) A kind of unit test method and device
JP5755861B2 (en) Test case generation apparatus, test case generation method, and test case generation program
KR101964454B1 (en) Apparatus and method for refining data by eliminating problems that is inherent in data
JP2015197868A (en) Computer program checking apparatus

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20170117

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20170124

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170825

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170825

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180425

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180605

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180711

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: 20180904

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181004

R150 Certificate of patent or registration of utility model

Ref document number: 6416588

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350