JP5979250B2 - Exclusive control inspection device, exclusive control inspection method, exclusive control inspection program - Google Patents
Exclusive control inspection device, exclusive control inspection method, exclusive control inspection program Download PDFInfo
- Publication number
- JP5979250B2 JP5979250B2 JP2014557377A JP2014557377A JP5979250B2 JP 5979250 B2 JP5979250 B2 JP 5979250B2 JP 2014557377 A JP2014557377 A JP 2014557377A JP 2014557377 A JP2014557377 A JP 2014557377A JP 5979250 B2 JP5979250 B2 JP 5979250B2
- Authority
- JP
- Japan
- Prior art keywords
- lock
- lock section
- execution
- exclusive control
- section
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/28—Error detection; Error correction; Monitoring by checking the correct order of processing
Description
本発明は、排他制御検査装置、排他制御検査方法、排他制御検査プログラムに関するものである。 The present invention relates to an exclusive control inspection device, an exclusive control inspection method, and an exclusive control inspection program.
コンピュータプログラム内のロック区間で用いられる、セマフォのビジー率及び競合率を算出するため、測定対象として指定されたセマフォのロック取得からロック解放までのロック時間、及びセマフォのロック取得待ちからロック取得までのロック解除待ち時間のそれぞれを実時間で測定するロック動作測定方法が知られている(特許文献1参照)。 To calculate the busy rate and contention rate of the semaphore used in the lock section in the computer program, the lock time from the acquisition of the semaphore specified as the measurement target to the lock release, and from the semaphore lock acquisition wait to the lock acquisition There is known a lock operation measurement method for measuring each of the lock release waiting times in real time (see Patent Document 1).
特許文献1に開示されたロック動作測定方法は、システムを動作させて上記時間を測定するという動的な検査方法であるため、実際に実行されたロック区間やロック解除待ち処理のみを対象としている。そのため実際に実行されなかったロック区間や分岐経路を測定対象とすることができない。よって、実行し得るロック区間の各々について、ロック時間の最大値を把握することはできないため、システムの応答性が悪化するロック区間を特定することができない。つまり、コンピュータプログラムで使用されるロック区間の実行に要する時間(ロック時間)や、競合関係、タイムアウトが発生する状況を把握し、システムに課せられた要求を満足するか検証するという目的を、十分に果たすことができないという課題を、特許文献1に開示されたロック動作測定方法は有している。
The lock operation measurement method disclosed in
本発明は、上記課題に鑑みて成されたものであり、その目的は、コンピュータプログラム中で実行し得るロック区間について、システムの応答性が悪化する可能性がある箇所をユーザに気づかせることができる排他制御検査装置、排他制御検査方法、排他制御検査プログラムを提供することである。 The present invention has been made in view of the above problems, and its purpose is to make a user aware of a place where the responsiveness of the system may be deteriorated in a lock section that can be executed in a computer program. An exclusive control inspection device, an exclusive control inspection method, and an exclusive control inspection program are provided.
本発明の一態様に係わる排他制御検査装置は、検査対象となるコンピュータプログラムに含まれるステートメントの実行順序及び実行経路を特定し、特定されたステートメントの実行順序及び実行経路に基づいて、コンピュータプログラムに含まれる複数のタスクが利用可能な共有資源に対して排他制御を実行する一群のステートメントからなるロック区間を特定する。そして、特定されたロック区間に含まれる実行経路の各々について、ロック区間の実行に要するクロック数を算出する。そして特定された実行順序及び実行経路、ロック区間、算出されたクロック数などの情報を検査結果として出力する。 An exclusive control checking apparatus according to an aspect of the present invention specifies an execution order and an execution path of statements included in a computer program to be checked, and stores the computer program based on the specified execution order and execution path of the statements. A lock section consisting of a group of statements that execute exclusive control on a shared resource that can be used by a plurality of tasks included is specified. Then, the number of clocks required for execution of the lock section is calculated for each execution path included in the specified lock section. Information such as the specified execution order and execution path, lock interval, and calculated number of clocks is output as a test result.
本発明の一態様に係わる排他制御検査装置は、ロック区間の各々について、共有資源へのアクセス制限が解除されることを待つことができるタイムアウト時間を抽出し、ロック区間が属するタスクとは異なる他のタスクに属する他のロック区間を競合するタスクであるとして特定し、ロック区間のクロック数の最大値が、他のロック区間のタイムアウト時間よりも大きい場合、他のロック区間がスキップされる可能性があると判断することが好ましい。 The exclusive control inspection apparatus according to one aspect of the present invention extracts a timeout time for waiting for the restriction on access to the shared resource to be released for each lock section, and is different from the task to which the lock section belongs. If another lock section belonging to the specified task is identified as a competing task, and the maximum number of clocks in the lock section is greater than the timeout period of the other lock section, another lock section may be skipped It is preferable to judge that there is.
図面を参照して、本発明の実施形態を説明する。図面の記載において同一部分には同一符号を付し説明を省略する。 Embodiments of the present invention will be described with reference to the drawings. In the description of the drawings, the same parts are denoted by the same reference numerals and description thereof is omitted.
[排他制御検査装置のハードウェア構成]
本発明の実施形態に係わる排他制御検査装置は、例えば車両に搭載される電子制御装置(ECU)により実行されるコンピュータプログラムに含まれる排他制御を検査する処理に適用することができる。[Hardware configuration of exclusive control inspection device]
The exclusive control inspection apparatus according to the embodiment of the present invention can be applied to a process for inspecting exclusive control included in a computer program executed by, for example, an electronic control unit (ECU) mounted on a vehicle.
コンピュータプログラムの実行において、複数のタスク(アプリケーションを含む)が利用できる共有資源(データ、ファイル、データベースを含む)に対して、複数のタスクからの同時アクセスにより競合が発生する場合、共有資源の整合性を保つために、一方のタスクが共有資源を独占的に利用している間は、他方のタスクは共有資源を利用できないようにする。これを排他制御という。具体的には、一方のタスクが共有資源を使用する一定区間、他方のタスクの起動をロックする。ロックされる他方のタスクは、ロックする一方のタスクがセマフォを解放した後に起動され、共有資源へのアクセスを実行する。 In the execution of a computer program, if a conflict occurs due to simultaneous access from multiple tasks to shared resources (including data, files, and databases) that can be used by multiple tasks (including applications), the shared resources are aligned. In order to maintain performance, while one task exclusively uses the shared resource, the other task is prevented from using the shared resource. This is called exclusive control. Specifically, the activation of the other task is locked during a certain period in which one task uses the shared resource. The other task to be locked is started after the one task to be locked releases the semaphore and performs access to the shared resource.
本発明の実施形態に係わる排他制御検査装置は、コンピュータプログラムに含まれる複数のタスクから利用可能な共有資源に対して実行する排他制御を検査する装置である。 An exclusive control inspection apparatus according to an embodiment of the present invention is an apparatus that inspects exclusive control executed on shared resources that can be used from a plurality of tasks included in a computer program.
図1を参照して、本発明の実施形態に係わる排他制御検査装置のハードウェア構成を説明する。排他制御検査装置のハードウェア構成として、汎用のコンピュータを用いることができる。例えば、排他制御検査装置は、記憶媒体から検査対象のコンピュータプログラム(ソースコードD01)及び検査に必要なデータ(エントリーポイント一覧D02、ロック開始命令/解除命令リストD03、所要クロック数一覧D04を含む)を読み込む入出力装置12と、入出力装置12で読み込んだソースコードD01や解析の中間データを格納する記憶装置14と、各種演算を実行してソースコードD01を解析するCPU(中央処理装置)11と、ユーザが解析に必要な情報を入力するための入力装置13と、CPU11から出力される検査結果(排他制御検査結果D05を含む)を表示する表示装置15と、を備える。検査結果は、入出力装置12を用いて記憶媒体に書き込むことも可能である。記憶装置14としてはメモリ、ハードディスクなどが挙げられ、記憶装置14とCPU(中央処理装置)11との間で、データの入出力が行われる。
With reference to FIG. 1, the hardware configuration of the exclusive control inspection apparatus according to the embodiment of the present invention will be described. A general-purpose computer can be used as the hardware configuration of the exclusive control inspection apparatus. For example, the exclusive control inspection device includes a computer program (source code D01) to be inspected and data required for inspection (entry point list D02, lock start instruction / release instruction list D03, and required clock number list D04) from the storage medium. ), A
記憶装置14に格納されている中間データはCPU11によって更新される。中間データとしては、後述する実行順序/実行経路表T01、ロック区間特定表T02、クロック数合計管理表T03、排他制御構造管理表T04などが挙げられる。
The intermediate data stored in the
また、排他制御検査装置は、クライアントサーバモデルとしても実現可能である。例えば、コンピュータネットワークを介して汎用のパーソナルコンピュータ(クライアント)をサーバに接続する。これにより、図1に示すCPU11を備えるリモート環境に置かれたサーバを、コンピュータネットワークを介して、クライアントが備える入出力装置12、入力装置13、記憶装置14、あるいは表示装置15に接続することができる。この場合、排他制御検査装置は、主にCPU11(サーバ)により構成され、入出力装置12、入力装置13、記憶装置14、あるいは表示装置15は排他制御検査装置に含まれない。
The exclusive control inspection device can also be realized as a client-server model. For example, a general-purpose personal computer (client) is connected to the server via a computer network. Accordingly, a server placed in a remote environment including the
図2を参照して、CPU11の機能的構成を説明する。CPU11を備えるコンピュータを排他制御検査装置として機能させるためのコンピュータプログラム(排他制御検査プログラム)を、CPU11を備えるコンピュータにインストールして実行する。これにより、CPU11は、以下に示す各情報処理部として機能する。なお、ここでは、ソフトウェアによって排他制御検査装置を実現する例を示すが、もちろん、以下に示す各情報処理を実行するための専用のハードウェアを用意して、排他制御検査装置を構成することも可能である。
A functional configuration of the
CPU11は、ソースコード入力部21、順序経路特定部22、ロック区間特定部23、クロック数算出部24、最大クロック数算出部25、及び検査結果出力部29として機能する。
The
ソースコード入力部21は、検査対象となるコンピュータプログラム(ソースコードD01)を入出力装置12あるいは入力装置13から読み取り、記憶装置14に格納する。
The source
順序経路特定部22は、ソースコード入力部21により読み取られたコンピュータプログラムに含まれるステートメントの実行順序及び実行経路を特定する。具体的には、入出力装置12あるいは入力装置13から入力されるエントリーポイント一覧D02を用いて、入力装置13から入力されるエントリーポイント(プログラムの開始点)を起点に実行されるステートメントの実行順序及び実行経路を特定する。エントリーポイント一覧D02については、図6を参照して後述する。エントリーポイント一覧D02は、ファイル形式あるいはデータベースとして記憶装置14に記録される。エントリーポイント一覧D02は、CPU11からの指示によって読み出される。順序経路特定部22によって特定されたステートメントの実行順序及び実行経路は、順序経路特定部22によって実行順序/実行経路表T01(図5)に記録される。実行順序/実行経路表T01は、ファイル形式あるいはデータベースとして記憶装置14に記録される。
The order
ロック区間特定部23は、順序経路特定部22により特定されたステートメントの実行順序及び実行経路に基づいて、ロック区間を特定する。「ロック区間」は、コンピュータプログラムに含まれる複数のタスクが利用可能な共有資源に対して排他制御を実行する一群のステートメントからなる。換言すれば、ロック区間とは、一方のタスクが共有資源を排他的に使用する一定区間である。ロック区間において、他方のタスクの起動はロックされ、共有資源の使用が禁止される。
The lock
具体的に、ロック区間特定部23は、実行順序/実行経路表T01に記録されたステートメントの実行順序及び実行経路の情報に従って、ロック開始命令から解除命令までの区間(ロック区間)を特定する。ロック区間特定部23は、入出力装置12あるいは入力装置13から入力されるロック開始命令/解除命令リストD03に基づいて、ロック開始命令、およびロック解除命令のステートメントを特定する。ロック開始命令/解除命令リストD03については、図7を参照して後述する。ロック開始命令/解除命令リストD03は、ファイル形式あるいはデータベースとして記憶装置14に記録される。ロック開始命令/解除命令リストD03は、CPU11のロック区間特定部23からの指示によって読み出される。
Specifically, the lock
クロック数算出部24は、ロック区間特定部23により特定されたロック区間に含まれる実行経路の各々について、ロック区間の実行に要するクロック数を算出する。具体的には、入出力装置12あるいは入力装置13から入力される所要クロック数一覧D04に基づいて、ロック区間特定部23により特定されたロック区間に含まれる各ステートメントの実行に要するクロック数を算出する。なお所要クロック数一覧D04には、ステートメントに記述される命令の種類毎に、その命令の実行に必要なクロック数が記録されている。所要クロック数一覧D04については、図8を参照して後述する。所要クロック数一覧D04は、ファイル形式あるいはデータベースとして記憶装置14に記録され、CPU11のクロック数算出部24からの指示によって読み出される。
The clock
クロック数算出部24によって算出された各ステートメントの実行に要するクロック数は、クロック数算出部24によってロック区間特定表T02(図10)に記録される。ロック区間特定表T02は、ファイル形式あるいはデータベースとして記憶装置14に記録される。
The number of clocks required to execute each statement calculated by the clock
そして、クロック数算出部24は、実行経路の各々について、各ステートメントの実行に要するクロック数の合計値を算出し、その合計値を、ロック区間特定部23によって特定されたロック区間に関する情報と共にクロック数合計管理表T03(図11)に記録する。クロック数合計管理表T03は、ファイル形式あるいはデータベースとして記憶装置14に記録される。
Then, the clock
最大クロック数算出部25は、クロック数合計管理表T03を参照して、ロック区間の各々について、クロック数算出部24により算出されたクロック数の最大値を算出する。具体的には、1つのロック区間に2以上の実行経路が含まれている場合、即ち、1つのロック区間の中で分岐条件のもとで2以上の分岐処理が行われる場合、2以上の実行経路の中で、最も大きなクロック数を抽出する。1つのロック区間に1つの実行経路だけが含まれている場合、クロック数算出部24により算出されたクロック数がそのまま、そのロック区間におけるクロック数の最大値となる。最大クロック数算出部25によって算出されたクロック数の最大値は、最大クロック数算出部25によってクロック数合計管理表T03に記録される。
The maximum clock
検査結果出力部29は、少なくとも最大クロック数算出部25により算出されたクロック数の最大値を、排他制御検査結果D05として表示装置15あるいは入出力装置12に挿入された記憶媒体へ出力する。検査結果出力部29により出力されるクロック数の最大値については、図11を参照して後述する。
The inspection
CPU11は、タイムアウト時間抽出部26、競合ロック区間特定部27、及びタイムアウト判断部28として更に機能する。
The
タイムアウト時間抽出部26は、ロック区間の各々について、共有資源へのアクセス制限が解除されることを待つことができるタイムアウト時間を抽出する。具体的には、ロック区間に対応するロック開始命令の引数を参照することにより、タイムアウト時間を抽出する。
The timeout
一方のタスクによる共有資源の使用によって、共有資源の使用が禁止される他方のタスクは、その他方のタスクのロック区間に対応するロック開始命令の引数で設定されたタイムアウト時間だけ、一方のタスクによるセマフォの解放を待つことができる。しかし、タイムアウト時間が経過しても、一方のタスクがセマフォを解放しない場合、他方のタスクは実行せずに、次の処理へスキップする。 The use of shared resources by one task prohibits the use of shared resources. The other task depends on one task for the timeout period set by the argument of the lock start instruction corresponding to the lock interval of the other task. You can wait for the semaphore to be released. However, if one task does not release the semaphore even after the timeout period has elapsed, the other task is not executed and skips to the next process.
競合ロック区間特定部27は、クロック数合計管理表T03を参照して、ロック区間の各々について、ロック区間が属するタスクとは異なる他のタスクに属する他のロック区間を特定する。同一の共有資源を排他的に利用可能な複数のタスクのうち一方のタスクがセマフォを獲得している場合、他方のタスクは同じセマフォを獲得できない。同じセマフォを用いる2以上のロック区間のうち、異なるタスクに属するロック区間は、そのセマフォの獲得について競合することになる。競合ロック区間特定部27は、ロック区間の各々について、セマフォの獲得に関して競合する他のロック区間を特定する。つまり、競合関係にあるロック区間の組合せを特定する。特定された競合関係にあるロック区間の組合せは、競合ロック区間特定部27によって排他制御構造管理表T04(図12)に記録される。排他制御構造管理表T04はファイル形式あるいはデータベースとして記憶装置14に記録される。
The contention lock
タイムアウト判断部28は、クロック数合計管理表T03および排他制御構造管理表T04を参照して、ロック区間のクロック数の最大値と、競合関係にある他のロック区間のタイムアウト時間を取得する。そしてタイムアウト判断部28は、ロック区間のクロック数の最大値が、他のロック区間のタイムアウト時間よりも大きい場合、他のロック区間がスキップされる可能性があると判断する。具体的には、タイムアウト判断部28は、競合関係にある2以上のロック区間のうち、一方のロック区間の実行に要するクロック数の最大値と、他方のロック区間で規定されるタイムアウト時間とを比較する。
The
クロック数とは、マイコンが行うタイミング制御に用いる内部クロックの数を示す。クロック数に、マイコンの1クロックあたりの実行時間にクロック数を掛け合わせることにより、ロック区間の実行に要する時間が求められる。またタイムアウト時間は、マイコンが行うタイミング制御に用いる内部クロックの数として表現される。そのため、タイムアウト判断部28は、一方のロック区間の実行に要するクロック数の最大値と、クロック数によって表現された他のロック区間のタイムアウト時間とを比較する。
The number of clocks indicates the number of internal clocks used for timing control performed by the microcomputer. By multiplying the number of clocks by the execution time per clock of the microcomputer and the number of clocks, the time required for execution of the lock section is obtained. The timeout time is expressed as the number of internal clocks used for timing control performed by the microcomputer. Therefore, the
一方のロック区間の実行に要するクロック数の最大値が、他方のロック区間のタイムアウト時間よりも大きい場合、タイムアウト時間が経過しても一方のロック区間がセマフォを解放しないため、他方のロック区間がスキップされてしまう可能性があると、タイムアウト判断部28は判断することができる。
If the maximum number of clocks required to execute one lock interval is greater than the timeout time of the other lock interval, one lock interval will not release the semaphore even if the timeout interval elapses. If there is a possibility of being skipped, the
検査結果出力部29は、タイムアウト判断部28による判断結果を、最大クロック数算出部25により算出されたクロック数の最大値と共に、排他制御検査結果D05として出力する。排他制御検査結果D05については、図13を参照して後述する。
The inspection
[排他制御検査装置により実行される情報処理の手順]
次に、図3〜図13を参照して、本発明の実施形態に係わる排他制御検査方法の一例として、図1及び図2に示す排他制御検査装置によって実行される情報処理の手順を説明する。[Procedure for information processing executed by exclusive control inspection device]
Next, an information processing procedure executed by the exclusive control checking apparatus shown in FIGS. 1 and 2 will be described as an example of the exclusive control checking method according to the embodiment of the present invention with reference to FIGS. .
先ず、ステップS01において、ソースコード入力部21は、検査対象となるソースコードD01を例えば入出力装置12から読み込み、記憶装置14に格納する。なお、ソースコードD01は、予め入出力装置12を用いてユーザにより排他制御検査装置内に読み込まれ、記憶装置14に格納されていてもよい。この場合、ステップS01の処理は不要である。図4(a)、図4(b)、図4(c)は、読み込まれたソースコードD01として、C言語で記述されたコンピュータプログラムの一例を示す。検査対象となるコンピュータプログラムは、図4(a)、図4(b)、図4(c)に示す3つのファイルに跨って記述されている。図4(a)のファイル名は「File1.c」であり、図4(b)のファイル名は「File2.c」であり、図4(c)のファイル名は「File3.c」である。C言語で記述されたコンピュータプログラムの一例において、各ファイルの左端部に記載された1から始まる連続番号は、各ファイルの「行番号」を示す。
First, in step S01, the source
次に、ステップS02において、順序経路特定部22は、エントリーポイント一覧D02を用いて、エントリーポイント(プログラムの開始点)を起点としたコントロールフロー、即ち、ステートメントの実行順序及び実行経路を特定する。
Next, in step S02, the order
図4(a)、図4(b)、図4(c)に示すコンピュータプログラムには、4つの関数が記述されている。図4(a)の「File1.c」の中に、関数「Task1」が記述されている。関数「Task1」は、2つの関数「Func1」及び関数「Func2」を呼び出して終了する。関数「Func1」及び関数「Func2」は図4(b)の「File2.c」の中に記述されている。図4(c)の「File3.c」の中に、関数「Task2」が記述されている。関数「Task2」は、関数「Func2」を呼び出して終了する。図6に示すように、プログラムの開始点となるエントリーポイントは、「Task1」及び「Task2」である。 In the computer program shown in FIGS. 4A, 4B, and 4C, four functions are described. The function “Task1” is described in “File1.c” in FIG. The function “Task1” calls two functions “Func1” and “Func2” and ends. The function “Func1” and the function “Func2” are described in “File2.c” in FIG. The function “Task2” is described in “File3.c” in FIG. The function “Task2” ends by calling the function “Func2”. As shown in FIG. 6, the entry points that are the starting points of the program are “Task1” and “Task2”.
図5の表は、図4(a)の関数「Task1」をエントリーポイントとした場合のステートメント(コード)の実行順序及び実行経路の一例を示す。図5の表において、「ステートメントID」は、ソースコードD01内のステートメントに付される「1」から始まる連続番号である。すなわち「ステートメントID」は、ソースコードD01を構成する図4(a)、図4(b)、図4(c)に示す3つのファイルの、各行に記載された実行命令に対して、行番号の順に付される。 The table in FIG. 5 shows an example of the execution order and execution path of statements (codes) when the function “Task1” in FIG. In the table of FIG. 5, “statement ID” is a serial number starting from “1” attached to a statement in the source code D01. That is, the “statement ID” is a line number corresponding to the execution instruction described in each line of the three files shown in FIGS. 4A, 4B, and 4C constituting the source code D01. It is attached in the order.
各行の記載が空(例えば図4(a)の10行目)、あるいはプログラムのブロック区切り(“{”、“}”などの括弧)のみから構成される行(例えば図4(a)の3、12、15行目など)は、プログラム実行時において実行時間を発生させるものではないものと判断できる。そのため、順序経路特定部22は、このような行を以降の処理の対象から外すため、このような行に対して「ステートメントID」を付していない。もちろん、このような行に対してステートメントIDを付したとしても、以降の処理に影響を及ぼすものではない。プログラム実行時において実行時間を発生させる可能性があるものと判断できる行がすべて処理の対象となるようにステートメントIDが付与されればよいのであって、ステートメントIDの付与の方法は本実施形態の例に限定されるものではない。
The description of each line is empty (for example, the 10th line in FIG. 4 (a)) or a line (for example, 3 in FIG. , 12, 15, etc.) can be determined not to cause execution time during program execution. Therefore, the order
「前実行ステートメントID」は、そのステートメントの前に実行されるステートメントに付されたステートメントIDを示す。「次実行ステートメントID」は、そのステートメントの次に実行されるステートメントに付されたステートメントIDを示す。 The “previous execution statement ID” indicates a statement ID given to a statement executed before the statement. “Next execution statement ID” indicates a statement ID given to a statement executed next to the statement.
ステートメントが分岐命令、関数呼出し命令、繰り返し命令である場合には、ジャンプ先のステートメントに対応するステートメントIDが、次実行ステートメントIDとして登録される。ジャンプ先は一般に1つとは限らず、複数個存在する場合もあるため、次実行ステートメントIDとしては、1個または複数個のステートメントIDを順序経路特定部22によって実行順序/実行経路表T01に記録する。ステートメントが分岐命令、関数呼出し命令、繰り返し命令のいずれでもない場合には、ソースコードD01上の、次の行番号の箇所で記載されたステートメントに対応するステートメントIDを、次実行ステートメントIDとして登録する。
If the statement is a branch instruction, a function call instruction, or a repeat instruction, the statement ID corresponding to the jump destination statement is registered as the next execution statement ID. In general, the number of jump destinations is not limited to one, and there may be a plurality of jump destinations. Therefore, one or a plurality of statement IDs are recorded in the execution order / execution path table T01 by the order
前実行ステートメントIDは、ソースコードD01に含まれる全てのステートメントについて次実行ステートメントIDが記録された後に、実行順序/実行経路表T01に登録することができる。例えばソースコードD01のステートメントL01について前実行ステートメントIDを登録する場合、実行順序/実行経路表T01を参照して、ステートメントL01に対応するステートメントIDが次実行ステートメントIDとして記録されているステートメントL02を読み出す。つまり、ステートメントL02の1つ後にステートメントL01が実行されることから、ステートメントL01の1つ前に実行されるステートメントはステートメントL02であることが分かる。そのため、ステートメントL01について前実行ステートメントIDとしては、ステートメントL02に対応するステートメントIDを記録する。ソースコードD01の全てのステートメントについて、同様の作業を繰り返すことにより、全ての前実行ステートメントIDを記録することができる。 The previous execution statement ID can be registered in the execution order / execution path table T01 after the next execution statement ID is recorded for all the statements included in the source code D01. For example, when the previous execution statement ID is registered for the statement L01 of the source code D01, the statement L02 in which the statement ID corresponding to the statement L01 is recorded as the next execution statement ID is read with reference to the execution order / execution path table T01. . That is, since the statement L01 is executed immediately after the statement L02, it can be understood that the statement executed immediately before the statement L01 is the statement L02. Therefore, the statement ID corresponding to the statement L02 is recorded as the previous execution statement ID for the statement L01. By repeating the same operation for all statements in the source code D01, all previous execution statement IDs can be recorded.
なお、ステートメントL01について次実行ステートメントIDが複数記録されている場合には、記録されている次実行ステートメントIDのそれぞれについて同様の処理を繰り返すことにより、前実行ステートメントIDを記録することができる。 When a plurality of next execution statement IDs are recorded for the statement L01, the previous execution statement ID can be recorded by repeating the same processing for each recorded next execution statement ID.
順序経路特定部22は、ソースコードD01に含まれるステートメントの中から条件分岐を検出する。条件分岐には、if〜else構文、switch〜case構文、ループ文(for文、while文)、3項演算子“:”が含まれる。順序経路特定部22は、条件分岐が開始するステートメントを「分岐開始点」と判断し、条件分岐が終了するステートメントを「分岐終了点」と判断する。特定された2以上の「分岐開始点」「分岐終了点」には「分岐ID」を付して識別する。ただし分岐開始点とその分岐開始点に対応する分岐終了点には、対応関係が分かるよう同一の分岐IDを付す。
The order
そして、順序経路特定部22は、分岐開始点と分岐終了点との間にあるステートメントに対して、条件分岐によって生成される2以上の実行経路を特定する。そして、特定された2以上の実行経路には「経路ID」を付して識別する。
Then, the sequential
図5には、関数「Task1」をエントリーポイントとした場合を例示するが、順序経路特定部22は、関数「Task2」をエントリーポイントとして場合についても、図5と同様にして実行順序及び実行経路を特定する。
FIG. 5 illustrates the case where the function “Task1” is an entry point, but the order
なお図5の例では、順序経路特定部22は、分岐開始点にあるステートメントに対して条件分岐によって生成される2以上の実行経路を特定し、一方で、分岐終了点にあるステートメントに対しては実行経路を特定していない。分岐開始点および分岐終了点のステートメントについて実行経路の特定を行うか否かは、本実施形態の例に限定されるものではない。
In the example of FIG. 5, the sequential
さらに、図5の例では、条件分岐により複数の実行経路のうちいずれの実行経路を進む場合でも、条件文の評価に際してクロック数が発生するため、条件文を含む条件分岐を表すステートメントは、複数の実行経路に属しているものとして扱っている。このように、順序経路特定部22は、複数の実行経路で実行されるものと判断されるステートメントに対して、対応する複数の実行経路を指し示す複数の経路IDを付す。
Furthermore, in the example of FIG. 5, the number of clocks is generated when evaluating a conditional statement, regardless of which of the plurality of execution routes is advanced by a conditional branch. Therefore, there are a plurality of statements representing conditional branches including conditional statements. It is treated as belonging to the execution path. As described above, the order
上述したようにして、順序経路特定部22は、図5の表に示すようなソースコードD01に含まれるステートメント(コード)の実行順序/実行経路表T01を作成する。
As described above, the order
実行順序/実行経路表T01に記録された前実行ステートメントIDおよび次実行ステートメントIDを用いると、ステートメントの上流、および下流で実行されるステートメントを抽出することができる性質に注意する。すなわち、前実行ステートメントIDを参照することで、順次、1つ前に実行されるステートメントを参照できるため、あるステートメントに関して、その上流で実行されるステートメント抽出することができる。また、次実行ステートメントIDを参照することで、順次、1つ後に実行されるステートメントを参照できるため、下流で実行されるステートメントを抽出することができる。 Note that using the previous execution statement ID and the next execution statement ID recorded in the execution order / execution path table T01, it is possible to extract statements executed upstream and downstream of the statement. That is, by referring to the previous execution statement ID, it is possible to refer to the statement executed immediately before, so that a statement executed upstream of a certain statement can be extracted. Further, by referring to the next execution statement ID, it is possible to refer to the statements that are executed one after the other sequentially, so it is possible to extract the statements that are executed downstream.
次に、ステップS03〜S05に示す情報処理F01を実行する。ステップS03において、ロック区間特定部23は、図7に示すロック開始命令/解除命令リストD03に基づいて、ロック開始命令から解除命令までの区間(ロック区間)を特定する。ステップS04において、タイムアウト時間抽出部26は、特定されたロック区間の各々について、タイムアウト時間を抽出する。ステップS05において、クロック数算出部24は、図8に示す所要クロック数一覧D04に基づいて、ロック区間に含まれる各ステートメントの実行に要するクロック数を算出する。
Next, information processing F01 shown in steps S03 to S05 is executed. In step S03, the lock
図7の表は、ロック開始命令/解除命令リストD03の一例を示す。ロック開始命令として「Sem_Lock」が定義され、ロック解除命令として「Sem_UnLock」が定義されている。ソースコードD01の中で用いられる複数のセマフォを識別するためのセマフォIDは、「Sem_Lock」及び「Sem_UnLock」でそれぞれ引用される第1引数によって指定される。また、タイムアウト時間は、「Sem_Lock」で引用される第2引数によって指定される。例えば、図4(a)の4行目に示す「Sem_Lock(ID1,100)」とは、セマフォIDが「ID1」で識別されるセマフォによるロック区間の開始命令を示し、4行目から始まるロック区間のタイムアウト時間が100(クロック数)であることを示す。図4(a)の9行目に示す「Sem_UnLock(ID1)」とは、セマフォIDが「ID1」のセマフォによるロック区間の解除命令を示す。 The table in FIG. 7 shows an example of the lock start instruction / release instruction list D03. “Sem_Lock” is defined as a lock start command, and “Sem_UnLock” is defined as a lock release command. A semaphore ID for identifying a plurality of semaphores used in the source code D01 is specified by a first argument quoted by “Sem_Lock” and “Sem_UnLock”, respectively. The timeout time is specified by the second argument quoted by “Sem_Lock”. For example, “Sem_Lock (ID1,100)” shown in the fourth line of FIG. 4A indicates a start command of a lock section by the semaphore identified by the semaphore ID “ID1”, and the lock starts from the fourth line. This indicates that the time-out time of the section is 100 (number of clocks). “Sem_UnLock (ID1)” shown in the ninth line of FIG. 4A indicates a lock section release command by the semaphore having the semaphore ID “ID1”.
図8の表は、所要クロック数一覧D04の一例を示す。ステートメントに記述される命令毎に、その命令の実行に必要なクロック数が定義されている。 The table in FIG. 8 shows an example of the required clock count list D04. For each instruction described in the statement, the number of clocks required to execute the instruction is defined.
ここで、ステップS03〜S05は並行して実施することができる。図9のフローチャートを参照して、ステップS03〜S05に示す情報処理F01の詳細な処理手順の一例を説明する。 Here, steps S03 to S05 can be performed in parallel. With reference to the flowchart of FIG. 9, an example of a detailed processing procedure of the information processing F01 shown in steps S03 to S05 will be described.
先ず、ステップS101において、ロック区間を識別するための区間IDを初期化する。ステップS102において、ソースコードD01に含まれるタスクを識別するためのタスクIDを初期化する。ステップS103へ進み、ステップS102で初期化されたタスクIDで特定される関数「Task1」における最初のステートメント(ステートメントID=1)を読み込む。 First, in step S101, a section ID for identifying a lock section is initialized. In step S102, a task ID for identifying a task included in the source code D01 is initialized. Proceeding to step S103, the first statement (statement ID = 1) in the function “Task1” specified by the task ID initialized in step S102 is read.
ロック区間特定部23は、図7のロック開始命令/解除命令リストD03を参照して、読み込んだステートメントがロック開始命令「Sem_Lock」あるいはロック解除命令「Sem_UnLock」に合致するか否かを判断する。ロック開始命令「Sem_Lock」に合致する場合、ステップS105に進む。ロック解除命令「Sem_UnLock」に合致する場合、ステップS107に進む。ロック開始命令「Sem_Lock」及びロック解除命令「Sem_UnLock」の何れにも合致しない場合、ステップS108に進む。
The lock
ステップS105において、区間IDをカウントアップする。ステップS106に進み、ステートメント種別としてのロック開始命令(「開始))、区間ID、セマフォID、及びタイムアウト時間をロック区間特定表T02に記録する。ここで記録するセマフォID、及びタイムアウト時間は、ロック開始命令の第1引数および第2引数を参照することで得られる。その後、ステップS113に進む。 In step S105, the section ID is counted up. In step S106, a lock start command (“start”) as a statement type, a section ID, a semaphore ID, and a time-out time are recorded in the lock section specification table T02. This is obtained by referring to the first argument and the second argument of the start instruction, and then proceeds to step S113.
一方、ステップS107において、ステートメント種別としてのロック解除命令(「解除」)、セマフォIDが同じである上流のロック開始命令の区間ID、およびセマフォIDをロック区間特定表T02に記録する。その後、ステップS113に進む。 On the other hand, in step S107, the lock release instruction (“release”) as the statement type, the section ID of the upstream lock start instruction having the same semaphore ID, and the semaphore ID are recorded in the lock section specifying table T02. Thereafter, the process proceeds to step S113.
ステップS107において、セマフォIDは、ロック解除命令の第1引数を参照することで得られる。また、上流のロック開始命令は、実行順序/実行経路表T01の前実行ステートメントIDを使用することにより抽出できる。読み込んだステートメントに対応する前実行ステートメントIDを参照することで、1つ前に実行されるステートメントを抽出できる。そのステートメントがロック開始命令でない場合、前実行ステートメントIDを参照してさらに1つ前に実行されるステートメントを抽出する。同様の作業を繰り返すことにより、最終的に上流のロック開始命令を抽出できる。そこで上流のロック開始命令のセマフォIDが、ロック解除命令のセマフォIDと同じであるか否かを判定する。同じである場合には、上流のロック開始命令の区間IDをロック区間特定表T02に記録する。なお前実行ステートメントIDには、1つ前に実行されるステートメントに対応する複数のステートメントIDが記載される場合があるので、複数の上流のロック開始命令が存在する場合も起こりうる。 In step S107, the semaphore ID is obtained by referring to the first argument of the unlock command. Further, the upstream lock start instruction can be extracted by using the previous execution statement ID in the execution order / execution path table T01. By referring to the previous execution statement ID corresponding to the read statement, it is possible to extract the statement executed immediately before. If the statement is not a lock start instruction, the previous executed statement ID is referenced to extract a statement that is executed one more time before. By repeating the same operation, an upstream lock start command can be finally extracted. Therefore, it is determined whether or not the semaphore ID of the upstream lock start instruction is the same as the semaphore ID of the lock release instruction. If they are the same, the section ID of the upstream lock start instruction is recorded in the lock section identification table T02. Since a plurality of statement IDs corresponding to the statement executed immediately before may be described in the previous execution statement ID, there may be a case where there are a plurality of upstream lock start instructions.
ステップS108において、ロック区間特定部23は、読み込んだステートメントが、ロック開始命令からロック解除命令までのロック区間内にあるか否かを判定する。ロック区間内にある場合(ステップS108でYES)、ステップS109に進む。一方、ロック区間内にない場合(ステップS108でNO)、ステップS110に進み、ロック区間特定部23は、ステートメント種別として「区間外」をロック区間特定表T02に記録する。その後、ステップS113へ進む。
In step S108, the lock
ステップS110において、ロック区間特定部23は、ステートメント種別として「区間内」及び区間IDをロック区間特定表T02に記録する。ステップS111に進み、クロック数算出部24は、読み込んだステートメントに記述された総ての命令を抽出する。ステップS112に進み、クロック数算出部24は、図8に示す所要クロック数一覧D04に基づいて、読み込んだステートメントから抽出した総ての命令の実行に必要なクロック数の総和を算出する。これにより、クロック数算出部24は、読み込んだステートメントの実行に要するクロック数を求めることができる。クロック数算出部24は、算出されたクロック数をロック区間特定表T02に記録する。その後、ステップS113へ進む。
In step S110, the lock
ステップS113において、読み込んだステートメントが、ロック区間内の最後のステートメントであるか否かを判断する。ロック区間内の最後のステートメントでない場合(ステップS113でNO)、実行順序/実行経路表T01の次実行ステートメントIDを参照して、次のステートメントを読み込み(S118)、ステップS104へ戻る。一方、読み込んだステートメントが、ロック区間内の最後のステートメントである場合(ステップS113でYES)、ステップS114へ進む。未だ判定していないステートメントがある場合(S114でYES)、ステップS115に進み、未だ判定していないステートメントを読み込み、ステップS104へ戻る。 In step S113, it is determined whether or not the read statement is the last statement in the lock section. If it is not the last statement in the lock section (NO in step S113), the next statement is read with reference to the next execution statement ID in the execution order / execution path table T01 (S118), and the process returns to step S104. On the other hand, if the read statement is the last statement in the lock section (YES in step S113), the process proceeds to step S114. If there is a statement that has not been determined yet (YES in S114), the process proceeds to step S115, a statement that has not yet been determined is read, and the process returns to step S104.
一方、未だ判定していないステートメントがない場合(S114でNO)、ステップS116に進み、ステップS102で初期化されたタスクIDで特定される関数「Task1」が最後のタスクであるか否かを判断する。最後のタスクでなければ(ステップS116でNO)、タスクIDをインクリメントして(ステップS117)、ステップS103に戻る。そして、関数「Task2」について上記した手順を実行する。一方で、最後のタスクであれば(ステップS116でYES)、図9のフローチャートは終了する。 On the other hand, if there is no statement that has not yet been determined (NO in S114), the process proceeds to step S116, and it is determined whether or not the function “Task1” identified by the task ID initialized in step S102 is the last task. To do. If it is not the last task (NO in step S116), the task ID is incremented (step S117), and the process returns to step S103. Then, the above-described procedure is executed for the function “Task2”. On the other hand, if it is the last task (YES in step S116), the flowchart of FIG. 9 ends.
読み込んだステートメントが、ロック開始命令からロック解除命令までのロック区間内にあるか否かの判定は、実行順序/実行経路表T01の前実行ステートメントIDおよび次実行ステートメントIDを用いて、読み込んだステートメントの上流および下流で実行されるステートメントを検索し、ロック開始命令、ロック解除命令が存在するか否かによって行う。検索して得られたロック開始命令とロック解除命令について、セマフォIDおよび区間IDが同一であれば、読み込んだステートメントは区間IDで指定されるロック区間に含まれているものと、ロック区間特定部23は判断できる。また、一般に、ソースコードD01が条件分岐を含んでいる場合、読み込んだステートメントが複数のロック区間にある場合も起こりうる。
Whether the read statement is within the lock section from the lock start instruction to the lock release instruction is determined by using the previous execution statement ID and the next execution statement ID in the execution order / execution path table T01. The statements executed upstream and downstream of the server are searched, and whether or not there is a lock start instruction and a lock release instruction is performed. If the semaphore ID and the section ID are the same for the lock start instruction and the lock release instruction obtained by the search, the read statement is included in the lock section specified by the section ID, and the lock
上流および下流で実行されるステートメントの検索には、タスクに含まれる全てのロック開始命令およびロック解除命令について、ロック区間特定表T02への記録が行われている必要があるが、図9のフローチャートの処理では簡略化して表現している。 For the search of statements executed upstream and downstream, it is necessary to record all lock start instructions and lock release instructions included in the task in the lock section specifying table T02. This process is expressed in a simplified manner.
図10の表は、図9のフローチャートの実行結果の一例として、図4(a)の関数「Task1」についての実行結果を示しており、図4(a)の関数「Task1」についての、ロック区間特定表T02を表す。ステートメントID=2〜7の一群のステートメントが、区間ID=1で識別されるロック区間として特定される。区間ID=1のロック区間のロック開始命令「Sem_Lock」と合致するステートメントID=2では、セマフォID=1及びタイムアウト時間=100を記録している。ステートメントID=2〜7で実行されるステートメントID=3〜6の一群のステートメントには「区間内(区間ID=1)」がそれぞれ記録され、ステートメントID=3〜6の一群のステートメントの各々について、ステートメントに含まれる命令のリスト及びステートメントの実行に要するクロック数が記録されている。ロック区間(区間ID=1)のロック解除命令「Sem_UnLock」と合致するステートメントID=7のステートメントに対しては、セマフォID=1が記録されている。なお、ロック区間(区間ID=1)では、1つのロック区間の中に、経路ID(1,1)(1,2)でそれぞれ識別される2つの実行経路に分岐する分岐処理が存在している。 The table in FIG. 10 shows the execution result for the function “Task1” in FIG. 4A as an example of the execution result of the flowchart in FIG. 9, and the lock for the function “Task1” in FIG. The section identification table T02 is represented. A group of statements with statement ID = 2-7 is specified as a lock section identified by section ID = 1. In the statement ID = 2 that matches the lock start command “Sem_Lock” in the lock section of the section ID = 1, semaphore ID = 1 and timeout time = 100 are recorded. “Intra-section (section ID = 1)” is recorded in each group of statements executed with statement ID = 2-7, and each group of statements with statement ID = 3-6 is recorded. A list of instructions included in the statement and the number of clocks required to execute the statement are recorded. A semaphore ID = 1 is recorded for a statement with a statement ID = 7 that matches the unlock command “Sem_UnLock” in the lock section (section ID = 1). In the lock section (section ID = 1), there is a branch process that branches into two execution paths identified by the path IDs (1, 1) (1, 2) in one lock section. Yes.
同様にして、ステートメントID=9、10、15、16、14の順番で実行される一群のステートメントが、区間ID=2で識別されるロック区間として特定される。また、ステートメントID=12、13、17、18、14の順番で実行される一群のステートメントが、区間ID=3で識別されるロック区間として特定される。ロック区間(区間ID=2)及びロック区間(区間ID=3)で使用するセマフォ(セマフォID=ID2)は共通している。一方、ロック区間(区間ID=2)及びロック区間(区間ID=3)で使用するセマフォ(セマフォID=ID2)は、ロック区間(区間ID=1)で使用するセマフォ(セマフォID=ID1)とは異なる。なお、ロック区間(区間ID=2)及びロック区間(区間ID=3)は、ステートメントID=8のステートメントを分岐開始点(分岐ID=2)とし、ステートメントID=14のステートメントを分岐終了点(分岐ID=2)とする、それぞれ経路ID(2,1)(2,2)で識別される2つの実行経路の中に存在している。 Similarly, a group of statements executed in the order of statement ID = 9, 10, 15, 16, 14 is specified as a lock section identified by section ID = 2. Further, a group of statements executed in the order of statement ID = 12, 13, 17, 18, and 14 is specified as a lock section identified by section ID = 3. The semaphore (semaphore ID = ID2) used in the lock section (section ID = 2) and the lock section (section ID = 3) is common. On the other hand, the semaphore (semaphore ID = ID2) used in the lock section (section ID = 2) and the lock section (section ID = 3) is the same as the semaphore (semaphore ID = ID1) used in the lock section (section ID = 1). Is different. In the lock section (section ID = 2) and the lock section (section ID = 3), the statement with statement ID = 8 is set as the branch start point (branch ID = 2), and the statement with statement ID = 14 is set at the branch end point ( Branch ID = 2) exists in two execution paths identified by path IDs (2, 1) (2, 2), respectively.
上述したようにして、ロック区間特定部23およびクロック数算出部24は、実行順序/実行経路表T01を元にして、図10の表に示すようなソースコードD01に含まれるステートメント(コード)のロック区間特定表T02を作成する。このロック区間特定表T02には、ロック区間特定部23が特定したステートメント種別、区間ID、セマフォID、タイムアウト時間が記録される。そして、クロック数算出部24が抽出したステートメント内の命令、もしくはその命令の種別、クロック数が記録される。
As described above, the lock
図3に戻り、ステップS06において、クロック数算出部24は、ロック区間特定部23により特定されたロック区間に含まれる実行経路の各々について、ロック区間の実行に要するクロック数を算出する。具体的には、図9のステップS112において算出された、各ステートメントの実行に要するクロック数を、記憶装置14に記録されたロック区間特定表T02から読み出し、各ロック区間に含まれる総てのステートメントについてクロック数を合算する。これにより、実行経路の各々について、ロック区間の実行に要するクロック数を算出することができる。この際、ロック区間(ロックID=1)内に2以上の実行経路(経路ID(1,1)(1,2))が存在する場合、実行経路の各々について、ロック区間の実行に要するクロック数を算出する。算出されたロック区間の実行に要するクロック数は、図11に示すクロック数合計管理表T03に記録される。
Returning to FIG. 3, in step S <b> 06, the clock
図11のクロック数合計管理表T03のうち、「区間内ステートメントのクロック数合計」は、関数「Task1」及び関数「Task2」に含まれるロック区間(ロックID=1〜4)について、ロック区間の実行に要するクロック数を示す。ロック区間(ロックID=1)に関しては、ロック区間内に2つの実行経路(経路ID(1,1)(1,2))が存在するため、実行経路毎にロック区間の実行に要するクロック数を示す。例えば、図10に示したように、経路ID(1,1)で識別される実行経路には、ステートメントID=3、4の一群のステートメントが含まれる。ステートメントID=3のステートメントの実行に要するクロック数は、「1」であり、ステートメントID=4のステートメントの実行に要するクロック数は、「3」である。よって、図11に示すように、経路ID(1,1)で識別される実行経路について、ロック区間(ロックID=1)の実行に要するクロック数は「1+3」=「4」である。 In the total clock number management table T03 in FIG. 11, “total number of clocks of statements in the section” is the lock section (lock ID = 1 to 4) included in the function “Task1” and the function “Task2”. Indicates the number of clocks required for execution. Regarding the lock section (lock ID = 1), since there are two execution paths (path ID (1,1) (1,2)) in the lock section, the number of clocks required to execute the lock section for each execution path Indicates. For example, as shown in FIG. 10, the execution path identified by the path ID (1, 1) includes a group of statements with statement ID = 3 and 4. The number of clocks required to execute the statement with statement ID = 3 is “1”, and the number of clocks required to execute the statement with statement ID = 4 is “3”. Therefore, as shown in FIG. 11, for the execution path identified by the path ID (1, 1), the number of clocks required to execute the lock section (lock ID = 1) is “1 + 3” = “4”.
ステップS07において、最大クロック数算出部25は、クロック数合計管理表T03のうち「区間内ステートメントのクロック数合計」を参照して、ロック区間の各々について、ステップS06において算出されたクロック数の最大値を算出する。図11に示すように、ロック区間(ロックID=1)に関しては、経路ID(1,1)で識別される実行経路のクロック数(=4)と、経路ID(1,2)で識別される実行経路のクロック数(=3)とを比較して、大きい方のクロック数(=4)を選択する。1つのロック区間に1つの実行経路だけが含まれている場合、ステップS06において算出されたクロック数がそのまま、そのロック区間におけるクロック数の最大値となる。
In step S07, the maximum clock
図11に示すように、実施形態に係わる排他制御検査装置は、検査対象となるソースコードD01に含まれる排他制御に関する構造を可視化することができる。換言すれば、ソースコードD01に含まれる排他制御に関する構造として、エントリーポイント、区間ID、セマフォID、経路ID、経路に含まれるステートメントIDを特定することができる。そして、静的な解析方法により、検査対象となるソースコードD01中で実行し得るロック区間の各々について、ロック区間の実行に要するクロック数の最大値を求めることができる。よって、コンピュータプログラム中で実行し得るロック区間について、システムの応答性が悪化する可能性がある箇所を漏れなく特定することができる。 As shown in FIG. 11, the exclusive control inspection apparatus according to the embodiment can visualize the structure related to exclusive control included in the source code D01 to be inspected. In other words, the entry point, the section ID, the semaphore ID, the route ID, and the statement ID included in the route can be specified as the structure related to the exclusive control included in the source code D01. Then, the maximum number of clocks required to execute the lock section can be obtained for each lock section that can be executed in the source code D01 to be inspected by a static analysis method. Therefore, it is possible to specify a portion where the responsiveness of the system may be deteriorated without omission in the lock section that can be executed in the computer program.
図3に戻り、ステップS08において、競合ロック区間特定部27は、クロック数合計管理表T03を参照して、ロック区間の各々について、ロック区間が属するタスクとは異なる他のタスクに属する他のロック区間を特定する。更に、実施形態では、ソースコードD01の中で、複数種類のセマフォ(セマフォID=ID1及びID2)を用いている。セマフォが異なれば、セマフォの取得に関する競合関係は生じない。このため、同じセマフォを用いているロック区間において、異なるタスクに属するロック区間の組合せを特定する。図12は排他制御構造管理表T04を示す。排他制御構造管理表T04には、競合関係にあるブロック区間の組合せが記録される。ステップS08において、競合ロック区間特定部27により排他制御構造管理表T04は読み出され、あるいは更新される。
Returning to FIG. 3, in step S08, the contention lock
ロック区間(ロックID=1)は、関数「Task1」に属し、且つセマフォ(セマフォID=ID1)を使用する。ロック区間(ロックID=2)及びロック区間(ロックID=3)は、関数「Task1」に属し、且つセマフォ(セマフォID=ID2)を使用する。一方、ロック区間(ロックID=4)は、関数「Task2」に属し、且つセマフォ(セマフォID=ID2)を使用する。 The lock section (lock ID = 1) belongs to the function “Task1” and uses a semaphore (semaphore ID = ID1). The lock section (lock ID = 2) and the lock section (lock ID = 3) belong to the function “Task1” and use a semaphore (semaphore ID = ID2). On the other hand, the lock section (lock ID = 4) belongs to the function “Task2” and uses a semaphore (semaphore ID = ID2).
よって、ロック区間(ロックID=2)、ロック区間(ロックID=3)、及びロック区間(ロックID=4)は、同一の共有資源に対して同じセマフォ(セマフォID=ID2)を用いて排他制御を実行する。ここでロック区間(ロックID=2)とロック区間(ロックID=4)は、異なるタスク「Task1」、「Task2」に属するため、セマフォID=ID2のセマフォの取得に関して競合関係にある。同様に、ロック区間(ロックID=3)とロック区間(ロックID=4)は、セマフォID=ID2のセマフォの取得に関して競合関係にある。一方、ロック区間(ロックID=2)とロック区間(ロックID=3)は、同じセマフォID=ID2のセマフォを使用するが、同じタスク「Task1」に属するため、セマフォID=ID2のセマフォの取得に関して競合することはない。 Therefore, the lock section (lock ID = 2), the lock section (lock ID = 3), and the lock section (lock ID = 4) are exclusive using the same semaphore (semaphore ID = ID2) for the same shared resource. Execute control. Here, since the lock section (lock ID = 2) and the lock section (lock ID = 4) belong to different tasks “Task1” and “Task2”, they have a competitive relationship with respect to acquisition of the semaphore with semaphore ID = ID2. Similarly, the lock section (lock ID = 3) and the lock section (lock ID = 4) are in a competitive relationship regarding the acquisition of the semaphore with semaphore ID = ID2. On the other hand, the lock section (lock ID = 2) and the lock section (lock ID = 3) use the semaphore with the same semaphore ID = ID2, but belong to the same task “Task1”, and therefore acquire the semaphore with the semaphore ID = ID2. There will be no competition.
ロック区間(ロックID=1)については、その他のロック区間(ロックID=2)、ロック区間(ロックID=3)、ロック区間(ロックID=4)とは使用するセマフォが異なるため競合しない。 The lock section (lock ID = 1) does not compete with other lock sections (lock ID = 2), lock section (lock ID = 3), and lock section (lock ID = 4) because the semaphores used are different.
上述したように、競合ロック区間特定部27は各ロック区間について、そのロック区間の属するタスク、および使用するセマフォの情報を用いて、その他のロック区間と競合するか否かを特定する。ステップS08の実行後において、排他制御構造管理表T04は、競合ロック区間特定部27が特定した、競合関係にあるブロック区間の組合せに関する情報を格納した状態となる。
As described above, the contention lock
次に、ステップS09に進み、タイムアウト判断部28は、ロック区間のクロック数の最大値が、競合する他のロック区間のタイムアウト時間よりも大きいか否かを判断する。具体的には、タイムアウト判断部28は、ロック区間特定表T02に記録された各ロック区間のタイムアウト時間と、排他制御構造管理表T04に記録された競合関係にあるブロック区間の組合せの情報とを参照する。そしてステップS08で特定された競合関係にあるロック区間の組合せのうち、一方のロック区間の実行に要するクロック数の最大値と、他方のロック区間のタイムアウト時間とを対比する。なお、前述したように、タイムアウト時間は、マイコンが行うタイミング制御に用いる内部クロックの数として表現されるため、クロック数の最大値と比較することは可能である。
Next, the process proceeds to step S09, and the
一方のロック区間の実行に要するクロック数の最大値が、他方のロック区間のタイムアウト時間よりも大きい場合(ステップS09でYES)、タイムアウト判断部28は、他方のロック区間をスキップしてしまう可能性があると判断する(ステップS10)。
When the maximum number of clocks required for execution of one lock section is larger than the timeout time of the other lock section (YES in step S09), the
一方のロック区間の実行に要するクロック数の最大値が、他方のロック区間のタイムアウト時間よりも小さいあるいは等しい場合(ステップS09でNO)、タイムアウト判断部28は、他方のロック区間をスキップしてしまう可能性は無いと判断する(ステップS12)。
If the maximum number of clocks required to execute one lock interval is smaller than or equal to the timeout time of the other lock interval (NO in step S09), the
タイムアウト判断部28は、ステップS09で特定された総てのブロック区間の組合せについて、ステップS09の判断を実行する。
The
ステップS11に進み、検査結果出力部29は、タイムアウト判断部28による判断結果を、最大クロック数算出部25により算出されたクロック数の最大値と共に、排他制御検査結果D05として出力する。図13は、排他制御検査結果D05の一例を示す表である。例えば、一方のロック区間(ロックID=3)のクロック数の最大値(=6)は、競合する他方のロック区間(ロックID=4)のタイムアウト時間(=5)よりも大きい。つまり、一方のロック区間(ロックID=3)がセマフォID=ID2のセマフォをロックしている間に、他方のロック区間(ロックID=4)はセマフォID=ID2のセマフォを取得することなく、セマフォ解除待ちのまま、タイムアウト時間が経過してしまう可能性がある。そこで、タイムアウト判断部28は、関数「Task1」の実行中にロック区間(ロックID=4)をスキップしてしまう可能性があると判断する。同様に、一方のロック区間(ロックID=4)のクロック数の最大値(=11)は、競合する他方のロック区間(ロックID=2)のタイムアウト時間(=10)よりも大きい。このため、タイムアウト判断部28は、関数「Task2」の実行中にロック区間(ロックID=2)をスキップしてしまう可能性があると判断する。
In step S11, the inspection
これに対して、一方のロック区間(ロックID=2)のクロック数の最大値(=5)は、競合する他方のロック区間(ロックID=4)のタイムアウト時間(=5)よりも大きくない。同様に、一方のロック区間(ロックID=4)のクロック数の最大値(=11)は、競合する他方のロック区間(ロックID=3)のタイムアウト時間(=15)よりも大きくない。よって、これらのロック区間の組合せについては、セマフォの解除待ちのまま、タイムアウト時間が経過してしまう可能性はないと判断することができる。なお、図13には、セマフォID=ID1のセマフォを使用するロック区間(ロックID=1)を記載しているが、ソースコードD01の中にセマフォID=ID1のセマフォを使用する他のロック区間が無いため、競合関係は存在しない。 On the other hand, the maximum value (= 5) of the number of clocks in one lock section (lock ID = 2) is not longer than the timeout time (= 5) of the competing other lock section (lock ID = 4). . Similarly, the maximum value (= 11) of the number of clocks in one lock section (lock ID = 4) is not longer than the timeout time (= 15) of the competing other lock section (lock ID = 3). Therefore, with respect to the combination of these lock sections, it can be determined that there is no possibility that the timeout time elapses while waiting for the semaphore to be released. FIG. 13 shows a lock section (lock ID = 1) using a semaphore with semaphore ID = ID1, but another lock section using a semaphore with semaphore ID = ID1 in the source code D01. Because there is no competition, there is no competition.
[実施形態による効果]
コンピュータプログラムにおいて、複数のタスクやアプリケーションが同一のリソース(資源)にアクセスする場合、アクセスの競合によるデータ破壊を避けるため、セマフォ等の排他制御により他のタスクからのアクセスを一時的に禁止する処置をとる。すなわち、一方のタスクがリソースを使用する一定区間、他方のタスクの起動をロックする。ロックされるタスクは、ロックするタスクがセマフォを解放した後に起動され、リソースへのアクセスを実行する。ここで、他のタスクからのリソースアクセスをロックする区間(ロック区間)の設定を誤ると、ロックするタスクが不当な時間リソースを占有し、他のタスクの動作を遅くするという問題が発生する。結果的には、タスクの応答時間が延び、システムの動作が鈍くなるという不具合につながる。[Effects of the embodiment]
In a computer program, when multiple tasks or applications access the same resource (resource), in order to avoid data corruption due to access contention, a measure to temporarily prohibit access from other tasks by exclusive control such as semaphores Take. In other words, the activation of the other task is locked in a certain interval in which one task uses the resource. The locked task is started after the locking task releases the semaphore and executes access to the resource. Here, if the section for locking resource access from other tasks (lock section) is set incorrectly, there is a problem that the locked task occupies an unreasonable time resource and slows down the operation of the other tasks. As a result, the response time of the task is extended, leading to a problem that the system operation becomes dull.
このような問題を避け、システムの応答性を許容範囲内に収めるため、セマフォの開放待ち、即ちロック解除待ちのタイムアウト時間を設定する。タイムアウト時間を超えてもセマフォが解放されない場合に、リソースへのアクセス処理をスキップし、その先の処理を実行する。 In order to avoid such problems and keep the responsiveness of the system within an allowable range, a timeout period for waiting for semaphore release, that is, waiting for unlocking is set. If the semaphore is not released even if the timeout time is exceeded, the access process to the resource is skipped and the process after that is executed.
しかしながら、レガシーコードの流用や拡張により、ロック区間が想定外に長くなると、設定されたタイムアウト時間に対しロック区間の平均処理時間が長くなり、タイムアウトが頻発するという問題が起きる。また、大規模なソフトウェアでは、ロックの競合関係が把握できず、不適切なタイムアウト時間が設定されてしまうという問題がある。 However, if the lock section becomes longer than expected due to diversion or expansion of the legacy code, there is a problem that the average processing time of the lock section becomes longer than the set timeout time, and timeouts occur frequently. In addition, large-scale software has a problem that lock conflicts cannot be grasped and an inappropriate timeout time is set.
そこで、実施形態に係わる排他制御検査装置は、順序経路特定部22により、検査対象となるソースコードD01(コンピュータプログラム)に含まれるステートメントの実行順序及び実行経路を特定し、特定されたステートメントの実行順序及び実行経路に基づいて、ロック区間特定部23はコンピュータプログラムに含まれる複数のタスクが利用可能な共有資源に対して排他制御を実行する一群のステートメントからなるロック区間を特定する。そして、特定されたロック区間に含まれる実行経路の各々について、クロック数算出部24はロック区間の実行に要するクロック数を算出する。これにより、排他制御を実行するロック区間の各々についてロック時間の最大値を求めることができる。検査結果出力部29によって、特定された実行順序及び実行経路、ロック区間、算出されたクロック数などの情報が検査結果として出力されるため、コンピュータプログラム中で実行し得るロック区間について、システムの応答性が悪化する可能性がある箇所をユーザに気づかせることができる。これにより、タイムアウト時間を適正化して、システムの応答性を改善することができる。また、コンピュータプログラムを静的な手法により解析することにより、実際に実行されないロック区間やロック解除待ち処理を検査対象とすることができるため、検証の見落としを抑制することができる。
Therefore, the exclusive control checking apparatus according to the embodiment specifies the execution order and execution path of the statements included in the source code D01 (computer program) to be checked by the order
また、排他制御検査装置は、タイムアウト時間抽出部26によってロック区間の各々について、共有資源へのアクセス制限が解除されることを待つことができるロック区間に設定されたタイムアウト時間を抽出し、ロック区間が取得するセマフォ、およびロック区間が属するタスクの情報に基づき、競合ロック区間特定部27によってロック区間の各々について競合関係を形成する他のロック区間を特定する。そして、タイムアウト判断部28は、競合関係を形成する一方のロック区間のクロック数の最大値が、競合関係を形成する他方のロック区間のタイムアウト時間よりも大きい場合、他方のロック区間がスキップされる可能性があると判断し、その判断結果は、検査結果出力部29によって出力される。これにより、例えば、レガシーコードの移植ミスや、分散開発されたソースコードの結合ミスにより、不適切なタイムアウト時間が設定されている箇所を、ユーザに気づかせることができる。よって、タイムアウト時間の適正化を図り、タイムアウトの頻発を抑制することができる。
In addition, the exclusive control inspection device extracts a timeout period set in the lock section in which the access restriction to the shared resource can be waited for for each lock section by the timeout
その他の変形例として、例えば、図3のステップS09及びS10において、スキップしてしまう可能性があると判断した競合関係にあるロック区間の組合せに対して、排他制御検査装置は、一方のロック区間のクロック数の最大値に対する、他方のロック区間のタイムアウト時間の割合を検証優先度として算出して、排他制御検査結果D05として出力してもよい。この割合(検証優先度)が高い程、つまり、100%に近い程、排他制御に関する検証優先度が高まる。スキップしてしまう可能性がある箇所として、複数のロック区間の組合せを特定する情報が出力される場合、検証対象としての優先度をユーザに伝えることができるので、ユーザによる検証作業の効率を高めることができる。検証優先度が100%未満だが極めて100%に近い値のロック区間の組合せを点検することで、レガシーコードの移植ミスや、分散開発されたソースコードの結合ミスにより、不適切なタイムアウト時間が設定されている箇所を、効率よく発見できる。 As another modification, for example, for the combination of lock sections that are in a conflicting relationship determined to be likely to be skipped in steps S09 and S10 in FIG. The ratio of the timeout time of the other lock section to the maximum value of the number of clocks may be calculated as the verification priority and output as the exclusive control test result D05. The higher this ratio (verification priority), that is, the closer to 100%, the higher the verification priority regarding exclusive control. When information specifying a combination of a plurality of lock sections is output as a portion that may be skipped, the priority as a verification target can be communicated to the user, so that the efficiency of verification work by the user is improved. be able to. By checking the combination of lock sections whose verification priority is less than 100% but very close to 100%, an inappropriate timeout period is set due to a legacy code porting error or a distributed source code combining error. Can be found efficiently.
以上、本発明の実施形態について説明したが、これらの実施形態は本発明の理解を容易にするために記載された単なる例示に過ぎず、本発明は当該実施形態に限定されるものではない。本発明の技術的範囲は、上記実施形態で開示した具体的な技術事項に限らず、そこから容易に導きうる様々な変形、変更、代替技術なども含むものである。この開示から当業者には様々な代替実施の形態、実施例及び運用技術が明らかとなろう。 As mentioned above, although embodiment of this invention was described, these embodiment is only the illustration described in order to make an understanding of this invention easy, and this invention is not limited to the said embodiment. The technical scope of the present invention is not limited to the specific technical matters disclosed in the above embodiment, but includes various modifications, changes, alternative techniques, and the like that can be easily derived therefrom. From this disclosure, various alternative embodiments, examples and operational techniques will be apparent to those skilled in the art.
本出願は、2013年1月21日に出願された日本国特許願第2013−008356号に基づく優先権を主張しており、この出願の全内容が参照により本明細書に組み込まれる。 This application claims priority based on Japanese Patent Application No. 2013-008356 filed on Jan. 21, 2013, the entire contents of which are incorporated herein by reference.
本発明によれば、コンピュータプログラムを静的な手法により解析し、排他制御を実行するロック区間の各々についてロック時間の最大値を求めることができる。よって、コンピュータプログラム中で実行し得るロック区間について、システムの応答性が悪化する可能性がある箇所をユーザに気づかせることができる。 According to the present invention, the computer program is analyzed by a static method, and the maximum value of the lock time can be obtained for each lock section in which exclusive control is executed. Therefore, it is possible to make the user aware of a place where the responsiveness of the system may be deteriorated in the lock section that can be executed in the computer program.
21 ソースコード入力部
22 順序経路特定部
23 ロック区間特定部
24 クロック数算出部
25 最大クロック数算出部
26 タイムアウト時間抽出部
27 競合ロック区間特定部
28 タイムアウト判断部
29 検査結果出力部
D01 ソースコード(コンピュータプログラム)
D02 エントリーポイント一覧
D03 ロック開始命令/解除命令リスト
D04 所要クロック数一覧
D05 排他制御検査結果
T01 実行順序/実行経路表
T02 ロック区間特定表
T03 クロック数合計管理表
T04 排他制御構造管理表DESCRIPTION OF
D02 Entry Point List D03 Lock Start Instruction / Release Instruction List D04 Required Clock List D05 Exclusive Control Check Result T01 Execution Order / Execution Path Table T02 Lock Section Specific Table T03 Clock Count Total Management Table T04 Exclusive Control Structure Management Table
Claims (4)
検査対象となる前記コンピュータプログラムに含まれるステートメントの実行順序及び実行経路を特定する順序経路特定部と、
前記順序経路特定部により特定された前記ステートメントの実行順序及び実行経路に基づいて、前記コンピュータプログラムに含まれる複数のタスクが利用可能な共有資源に対して排他制御を実行する一群のステートメントからなるロック区間を特定するロック区間特定部と、
前記ロック区間特定部により特定された前記ロック区間に含まれる実行経路の各々について、前記ロック区間の実行に要するクロック数を算出するクロック数算出部と、
前記ロック区間の各々について、前記クロック数算出部により算出された前記クロック数の最大値を算出する最大クロック数算出部と、
前記最大クロック数算出部により算出された前記クロック数の最大値を出力する検査結果出力部と、
を備えることを特徴とする排他制御検査装置。An exclusive control inspection device for inspecting exclusive control included in a computer program,
An order path specifying unit for specifying an execution order and an execution path of statements included in the computer program to be inspected;
A lock composed of a group of statements that execute exclusive control on a shared resource that can be used by a plurality of tasks included in the computer program, based on the execution order and execution path of the statements specified by the order path specifying unit. A lock section identifying unit for identifying a section;
A clock number calculating unit for calculating the number of clocks required for execution of the lock section for each of execution paths included in the lock section specified by the lock section specifying unit;
A maximum clock number calculating unit that calculates a maximum value of the clock number calculated by the clock number calculating unit for each of the lock sections;
An inspection result output unit that outputs a maximum value of the clock number calculated by the maximum clock number calculation unit;
An exclusive control inspection device comprising:
前記ロック区間の各々について、前記共有資源へのアクセス制限が解除されることを待つことができるタイムアウト時間を抽出するタイムアウト時間抽出部と、
前記ロック区間の各々について、前記ロック区間が属するタスクとは異なる他のタスクに属する他のロック区間を特定する競合ロック区間特定部と、
前記ロック区間の前記クロック数の最大値が、前記他のロック区間のタイムアウト時間よりも大きい場合、前記他のロック区間がスキップされる可能性があると判断するタイムアウト判断部と、を更に備え、
前記検査結果出力部は、前記タイムアウト判断部による判断結果を出力する
ことを特徴とする排他制御検査装置。The exclusive control inspection device according to claim 1,
For each of the lock sections, a time-out time extracting unit that extracts a time-out time that can wait for the access restriction to the shared resource to be released;
For each of the lock sections, a contention lock section specifying unit that specifies another lock section belonging to another task different from the task to which the lock section belongs,
A time-out determination unit that determines that the other lock section may be skipped when the maximum value of the number of clocks in the lock section is larger than a timeout time of the other lock section;
The exclusive control inspection apparatus, wherein the inspection result output unit outputs a determination result by the timeout determination unit.
検査対象となる前記コンピュータプログラムに含まれるステートメントの実行順序及び実行経路を特定し、
前記ステートメントの実行順序及び実行経路に基づいて、前記コンピュータプログラムに含まれる複数のタスクが利用可能な共有資源に対して排他制御を実行する一群のステートメントからなるロック区間を特定し、
前記ロック区間に含まれる実行経路の各々について、前記ロック区間の実行に要するクロック数を算出し、
前記ロック区間の各々について、前記クロック数の最大値を算出し、
前記クロック数の最大値を出力する
ことを特徴とする排他制御検査方法。An exclusive control inspection method for inspecting exclusive control included in a computer program,
Specify the execution order and execution path of the statements included in the computer program to be examined,
Based on the execution order and execution path of the statements, specify a lock section consisting of a group of statements that execute exclusive control on a shared resource that can be used by a plurality of tasks included in the computer program,
For each execution path included in the lock section, calculate the number of clocks required to execute the lock section,
For each of the lock intervals, calculate the maximum number of clocks,
An exclusive control inspection method, wherein the maximum value of the number of clocks is output.
コンピュータに、
検査対象となる前記コンピュータプログラムに含まれるステートメントの実行順序及び実行経路を特定する機能と、
前記ステートメントの実行順序及び実行経路に基づいて、前記コンピュータプログラムに含まれる複数のタスクが利用可能な共有資源に対して排他制御を実行する一群のステートメントからなるロック区間を特定する機能と、
前記ロック区間に含まれる実行経路の各々について、前記ロック区間の実行に要するクロック数を算出する機能と、
前記ロック区間の各々について、前記クロック数の最大値を算出する機能と、
前記クロック数の最大値を出力する機能と、
を実現させることを特徴とする排他制御検査プログラム。An exclusive control inspection program for inspecting exclusive control included in a computer program,
On the computer,
A function for specifying an execution order and an execution path of statements included in the computer program to be inspected;
A function for specifying a lock section consisting of a group of statements that execute exclusive control on a shared resource that can be used by a plurality of tasks included in the computer program, based on an execution order and an execution path of the statements;
A function for calculating the number of clocks required for execution of the lock section for each of the execution paths included in the lock section;
A function of calculating the maximum number of clocks for each of the lock sections;
A function of outputting the maximum number of clocks;
The exclusive control inspection program characterized by realizing.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013008356 | 2013-01-21 | ||
JP2013008356 | 2013-01-21 | ||
PCT/JP2013/084616 WO2014112304A1 (en) | 2013-01-21 | 2013-12-25 | Exclusive-control review device, exclusive-control review method, and exclusive-control review program |
Publications (2)
Publication Number | Publication Date |
---|---|
JP5979250B2 true JP5979250B2 (en) | 2016-08-24 |
JPWO2014112304A1 JPWO2014112304A1 (en) | 2017-01-19 |
Family
ID=51209406
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014557377A Active JP5979250B2 (en) | 2013-01-21 | 2013-12-25 | Exclusive control inspection device, exclusive control inspection method, exclusive control inspection program |
Country Status (3)
Country | Link |
---|---|
JP (1) | JP5979250B2 (en) |
CN (1) | CN104885061B (en) |
WO (1) | WO2014112304A1 (en) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003316615A (en) * | 2002-04-26 | 2003-11-07 | Nissan Motor Co Ltd | Operation order checking device and method therefor |
JP2006331027A (en) * | 2005-05-25 | 2006-12-07 | Nissan Motor Co Ltd | Inspection device, inspection method and inspection program |
JP2008090696A (en) * | 2006-10-04 | 2008-04-17 | Nissan Motor Co Ltd | Program analysis apparatus and program analysis method |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2073516A1 (en) * | 1991-11-27 | 1993-05-28 | Peter Michael Kogge | Dynamic multi-mode parallel processor array architecture computer system |
JPH07219819A (en) * | 1993-12-10 | 1995-08-18 | Nec Corp | Production of program evaluation data |
US5729676A (en) * | 1993-12-10 | 1998-03-17 | Nec Corporation | Method of generating data for evaluating programs |
US7401334B2 (en) * | 2002-12-20 | 2008-07-15 | International Business Machines Corporation | Method, apparatus and computer program product for managing message flow in a multithreaded, message flow environment |
-
2013
- 2013-12-25 WO PCT/JP2013/084616 patent/WO2014112304A1/en active Application Filing
- 2013-12-25 JP JP2014557377A patent/JP5979250B2/en active Active
- 2013-12-25 CN CN201380069267.XA patent/CN104885061B/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003316615A (en) * | 2002-04-26 | 2003-11-07 | Nissan Motor Co Ltd | Operation order checking device and method therefor |
JP2006331027A (en) * | 2005-05-25 | 2006-12-07 | Nissan Motor Co Ltd | Inspection device, inspection method and inspection program |
JP2008090696A (en) * | 2006-10-04 | 2008-04-17 | Nissan Motor Co Ltd | Program analysis apparatus and program analysis method |
Also Published As
Publication number | Publication date |
---|---|
CN104885061A (en) | 2015-09-02 |
WO2014112304A1 (en) | 2014-07-24 |
CN104885061B (en) | 2016-11-09 |
JPWO2014112304A1 (en) | 2017-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6607565B2 (en) | Integrated automated test case generation for safety critical software | |
US8327325B2 (en) | Programmable framework for automatic tuning of software applications | |
US9576036B2 (en) | Self-analyzing data processing job to determine data quality issues | |
US8832665B2 (en) | Method and system for tracing individual transactions at the granularity level of method calls throughout distributed heterogeneous applications without source code modifications including the detection of outgoing requests | |
US8997057B1 (en) | Using trace matching to identify and analyze application traces | |
JP5139486B2 (en) | Trace generation device, system, and program thereof | |
KR101106595B1 (en) | Method and apparatus for automated testing for software program | |
US20090049429A1 (en) | Method and System for Tracing Individual Transactions at the Granularity Level of Method Calls Throughout Distributed Heterogeneous Applications Without Source Code Modifications | |
JP2008140162A (en) | Debug information collection method | |
US7752399B2 (en) | Exclusion control method and information processing apparatus | |
CN113568604B (en) | Method and device for updating wind control strategy and computer readable storage medium | |
JP5979250B2 (en) | Exclusive control inspection device, exclusive control inspection method, exclusive control inspection program | |
US9251028B2 (en) | Managing code instrumentation in a production computer program | |
JP5240220B2 (en) | Software effective performance evaluation system, software effective performance evaluation method, and program | |
JP6176380B2 (en) | Information processing apparatus, method, and program | |
JP6048500B2 (en) | Information processing apparatus, information processing method, information processing program, and recording medium | |
JP6666216B2 (en) | Electronic control unit, analysis system | |
WO2014112303A1 (en) | Missed-data-update review device, missed-data-update review method, and missed-data-update review program | |
Vögler et al. | Non-intrusive monitoring of stream processing applications | |
Ma et al. | Analyzing distributed Java applications by automatic centralization | |
CN110569155A (en) | data processing method and system, electronic device and medium | |
JP2010211574A (en) | Information processing system, monitoring method, and monitoring program | |
JP2018151803A (en) | Inspection device of computer program, and on-vehicle device for inspecting computer program for vehicle control | |
CN115658551B (en) | Code testing method, storage medium, electronic device and apparatus | |
JP2010262491A (en) | Log aggregation device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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: 20160628 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20160711 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 5979250 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |