JP2012032947A - Support method, apparatus and program of detecting context violation - Google Patents

Support method, apparatus and program of detecting context violation Download PDF

Info

Publication number
JP2012032947A
JP2012032947A JP2010170889A JP2010170889A JP2012032947A JP 2012032947 A JP2012032947 A JP 2012032947A JP 2010170889 A JP2010170889 A JP 2010170889A JP 2010170889 A JP2010170889 A JP 2010170889A JP 2012032947 A JP2012032947 A JP 2012032947A
Authority
JP
Japan
Prior art keywords
rule
program
history
execution
definition
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.)
Granted
Application number
JP2010170889A
Other languages
Japanese (ja)
Other versions
JP5556480B2 (en
Inventor
Takao Okubo
隆夫 大久保
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2010170889A priority Critical patent/JP5556480B2/en
Publication of JP2012032947A publication Critical patent/JP2012032947A/en
Application granted granted Critical
Publication of JP5556480B2 publication Critical patent/JP5556480B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

PROBLEM TO BE SOLVED: To appropriately support a detection of contextually inappropriate calling in methods in a library.SOLUTION: A computer executes: a rule analyzing procedure reading and analyzing contextual rule information related to a set of methods, stored in storage means; a history storage program generating procedure, upon detection of an execution of a method related to the rule information by a program using the set of methods, generating a history record program which records the history of the execution; and a rule verification program generating procedure collating the history with the rule information and generating a verification program for determining whether or not the use of the method by the program satisfies the rule information.

Description

本発明は、文脈違反検出支援方法、文脈違反検出支援装置、及び文脈違反検出支援プログラムに関し、特にライブラリの不適切な利用の検出を支援する文脈違反検出支援方法、文脈違反検出支援装置、及び文脈違反検出支援プログラムに関する。   The present invention relates to a context violation detection support method, a context violation detection support device, and a context violation detection support program, and more particularly to a context violation detection support method, a context violation detection support device, and a context that support detection of inappropriate use of a library. It relates to a violation detection support program.

近年、プログラムの部品化が進み、これらの部品化されたプログラムをファイルとしてまとめた既存のライブラリを利用した、プログラムの開発効率の向上が図られている。ライブラリの中には、含まれる関数又はメソッドの文脈(例えば、呼び出し順等)に関して明確な規則(又は制約)を有るものがある。斯かる規則に従わない場合、ライブラリの本来の機能が有効に得られないといった事態が生じうる。ここでメソッドとは、オブジェクト指向プログラミングやアスペクト指向プログラミング等で、各オブェクト等が持っている自身に対する操作、手続きを表すものである。   In recent years, program componentization has progressed, and improvement of program development efficiency has been attempted by using an existing library in which these componentized programs are collected as files. Some libraries have clear rules (or constraints) regarding the context of the function or method involved (eg, call order, etc.). If such a rule is not followed, a situation may occur in which the original functions of the library cannot be obtained effectively. Here, the method represents an operation or procedure for each object or the like that each object has in object-oriented programming or aspect-oriented programming.

顕著な例として、暗号化通信等を行うためのセキュリティ関連のライブラリ(以下、「セキュリティライブラリ」という。)が挙げられる。セキュリティライブラリを利用する際、例えば、不適切な初期化が行われたり、初期化が行われなかったりした場合、本来期待される程度の安全性が確保されないといった事態が発生しうる。   A prominent example is a security-related library (hereinafter referred to as “security library”) for performing encrypted communication or the like. When the security library is used, for example, if inappropriate initialization is performed or initialization is not performed, a situation may occur in which the safety expected to be originally expected cannot be ensured.

ライブラリが正しく利用されるか否かは、プログラマの知識又は経験等に依存するところが大きい。すなわち、知識不足又は経験不足のプログラマによって作成されたプログラムにおいては、ライブラリが正しく利用されていない可能性が高くなる傾向にある。   Whether or not the library is used correctly depends largely on the programmer's knowledge or experience. That is, in a program created by a programmer with insufficient knowledge or lack of experience, there is a high possibility that the library is not used correctly.

特開2006−236336号公報JP 2006-236336 A

ライブラリの文脈上の規則に従わないで作成されたプログラムであっても、外見的には正常に動作しているように見える場合がある。但し、セキュリティライブラリの場合は、本来の安全性が確保されないため、非常に危険である。しかしながら、このような規則に対する違反は、プログラムのバグを検出するための通常のテストにおいて検出するのは非常に困難である。   Even programs created without following the library's contextual rules may appear to be working correctly. However, the security library is very dangerous because the original safety is not ensured. However, violations of such rules are very difficult to detect in normal tests to detect program bugs.

一方で、経験豊富なプログラマが、全てのソースコードを逐一精査するのは、多大な工数を要し、現実的ではない。   On the other hand, it is unrealistic for an experienced programmer to examine every source code one by one, requiring a lot of man-hours.

本発明は、上記の点に鑑みてなされたものであって、ライブラ内のメソッドに関して文脈上不適切な呼び出しの検出を適切に支援することのできる文脈違反検出支援方法、文脈違反検出支援装置、及び文脈違反検出支援プログラムの提供を目的とする。   The present invention has been made in view of the above points, and provides a context violation detection support method, a context violation detection support device, which can appropriately support the detection of a context-inappropriate call for a method in a library, And provide a context violation detection support program.

そこで上記課題を解決するため、文脈違反検出支援方法は、記憶手段が記憶する、メソッドの集合に関する文脈上の規則情報を、前記記憶手段から読み出して解析する規則解析手順と、前記メソッドの集合を利用するプログラムによる前記規則情報に係る前記メソッドの実行の検知に応じて該実行の履歴を記録する履歴記録プログラムを生成する履歴記憶プログラム生成手順と、前記履歴を前記規則情報と照合して、前記プログラムによる前記メソッドの利用が前記規則情報を満たしているか否かを判定する検証プログラムを生成するルール検証プログラム生成手順とをコンピュータが実行する。   Therefore, in order to solve the above problem, the context violation detection support method includes a rule analysis procedure for reading out and analyzing the rule information on the context related to a set of methods stored in the storage unit from the storage unit, and the method set. A history storage program generation procedure for generating a history recording program for recording a history of the execution in response to detection of execution of the method related to the rule information by a program to be used, and checking the history against the rule information, A computer executes a rule verification program generation procedure for generating a verification program for determining whether use of the method by the program satisfies the rule information.

ライブラ内のメソッドに関して文脈上不適切な呼び出しの検出を適切に支援することができる。   Appropriate support can be provided for detecting contextually inappropriate calls for methods in a library.

本発明の実施の形態における文脈違反検出支援装置のハードウェア構成例を示す図である。It is a figure which shows the hardware structural example of the context violation detection assistance apparatus in embodiment of this invention. 本発明の実施の形態における文脈違反検出支援装置の機能構成例を示す図である。It is a figure which shows the function structural example of the context violation detection assistance apparatus in embodiment of this invention. ルール記述を構成するルール要素の例を示す図である。It is a figure which shows the example of the rule element which comprises a rule description. ルール記述を構成するオペレータの例を示す図である。It is a figure which shows the example of the operator who comprises a rule description. ルール解析部が実行する処理手順の一例を説明するためのフローチャートである。It is a flowchart for demonstrating an example of the process sequence which a rule analysis part performs. 第一のルール記述の一例を示す図である。It is a figure which shows an example of a 1st rule description. XML形式による第一のルール記述の一例を示す図である。It is a figure which shows an example of the 1st rule description by an XML format. 第一のルール要素一覧の例を示す図であるIt is a figure which shows the example of a 1st rule element list. プログラム生成部が実行する処理手順の一例を説明するためのフローチャートである。It is a flowchart for demonstrating an example of the process sequence which a program production | generation part performs. アスペクト雛形の一例を示す図である。It is a figure which shows an example of an aspect model. 本実施の形態においてライブラリの呼び出し履歴を管理するためのデータ構造の一例を概念的に示す図である。It is a figure which shows notionally an example of the data structure for managing the call history of a library in this Embodiment. 第一のアスペクトコードの具体例を示す図である。It is a figure which shows the specific example of a 1st aspect code. Beforeルール要素に関する履歴記録プログラム生成処理の処理手順の一例を説明するためのフローチャートである。It is a flowchart for demonstrating an example of the process sequence of the history recording program production | generation process regarding a Before rule element. ポイントカット定義雛形の一例を示す図である。It is a figure which shows an example of a pointcut definition model. 履歴記録プログラムにおけるポイントカット定義の第一の具体例を示す図である。It is a figure which shows the 1st specific example of the pointcut definition in a log | history recording program. beforeアドバイス定義雛形の一例を示す図である。It is a figure which shows an example of a before advice definition model. 履歴記録雛形の一例を示す図である。It is a figure which shows an example of a log | history recording model. 具体的なbeforeアドバイス定義の第一の例を示す図である。It is a figure which shows the 1st example of a concrete before advice definition. 履歴記録プログラムにおけるポイントカット定義の第二の具体例を示す図である。It is a figure which shows the 2nd specific example of the pointcut definition in a log | history recording program. afterアドバイス定義雛形の一例を示す図である。It is a figure which shows an example of an after advice definition model. 具体的なafterアドバイス定義の第一の例を示す図である。It is a figure which shows the 1st example of a concrete after advice definition. 履歴記録プログラムにおけるポイントカット定義の第三の具体例を示す図である。It is a figure which shows the 3rd specific example of the pointcut definition in a log | history recording program. 履歴参照雛形の一例を示す図である。It is a figure which shows an example of a log | history reference model. 具体的なafterアドバイス定義の第二の例を示す図である。It is a figure which shows the 2nd example of a concrete after advice definition. ルール検証プログラム生成処理の処理手順の一例を説明するためのフローチャートである。It is a flowchart for demonstrating an example of the process sequence of a rule verification program production | generation process. ルール検証プログラムにおけるポイントカット定義の具体例を示す図である。It is a figure which shows the specific example of the pointcut definition in a rule verification program. ルール評価雛形の一例を示す図である。It is a figure which shows an example of a rule evaluation model. ルール検証プログラムにおけるafterアドバイス定義の具体例を示す図である。It is a figure which shows the specific example of the after advice definition in a rule verification program. 本実施の形態の第一のルール記述に関して生成される履歴記録プログラム及びルール検証プログラムのアスペクトコードの具体例を示す図である。It is a figure which shows the specific example of the aspect code of the log | history recording program produced | generated regarding the 1st rule description of this Embodiment, and a rule verification program. 本実施の形態の第一のルール記述に関して生成される履歴記録プログラム及びルール検証プログラムのアスペクトコードの具体例を示す図である。It is a figure which shows the specific example of the aspect code of the log | history recording program produced | generated regarding the 1st rule description of this Embodiment, and a rule verification program. 第二のルール記述の一例を示す図である。It is a figure which shows an example of a 2nd rule description. 第二のルール要素一覧の例を示す図である。It is a figure which shows the example of a 2nd rule element list. 本実施の形態の第二のルール記述に関して生成される履歴記録プログラム及びルール検証プログラムのアスペクトコードの具体例を示す図である。It is a figure which shows the specific example of the aspect code of the log | history recording program produced | generated regarding the 2nd rule description of this Embodiment, and a rule verification program. 本実施の形態の第二のルール記述に関して生成される履歴記録プログラム及びルール検証プログラムのアスペクトコードの具体例を示す図である。It is a figure which shows the specific example of the aspect code of the log | history recording program produced | generated regarding the 2nd rule description of this Embodiment, and a rule verification program. Afterルール要素に関する履歴記録プログラム生成処理の処理手順の一例を説明するためのフローチャートである。It is a flowchart for demonstrating an example of the process sequence of the history recording program production | generation process regarding an After rule element. Callルール要素に関する履歴記録プログラム生成処理の処理手順の一例を説明するためのフローチャートである。It is a flowchart for demonstrating an example of the process sequence of the history recording program production | generation process regarding a Call rule element.

以下、図面に基づいて本発明の実施の形態を説明する。図1は、本発明の実施の形態における文脈違反検出支援装置のハードウェア構成例を示す図である。同図の文脈違反検出支援装置10は、それぞれバスBで相互に接続されているドライブ装置100と、補助記憶装置102と、メモリ装置103と、CPU104と、インタフェース装置105と、表示装置106と、入力装置107とを有する。   Hereinafter, embodiments of the present invention will be described with reference to the drawings. FIG. 1 is a diagram illustrating a hardware configuration example of a context violation detection support apparatus according to an embodiment of the present invention. The context violation detection support apparatus 10 in FIG. 1 includes a drive device 100, an auxiliary storage device 102, a memory device 103, a CPU 104, an interface device 105, a display device 106, and And an input device 107.

文脈違反検出支援装置10での処理を実現するプログラムは、CD−ROM等の記録媒体101によって提供される。プログラムを記録した記録媒体101がドライブ装置100にセットされると、プログラムが記録媒体101からドライブ装置100を介して補助記憶装置102にインストールされる。但し、プログラムのインストールは必ずしも記録媒体101より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置102は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。   A program that realizes processing in the context violation detection support apparatus 10 is provided by a recording medium 101 such as a CD-ROM. When the recording medium 101 on which the program is recorded is set in the drive device 100, the program is installed from the recording medium 101 to the auxiliary storage device 102 via the drive device 100. However, the program need not be installed from the recording medium 101 and may be downloaded from another computer via a network. The auxiliary storage device 102 stores the installed program and also stores necessary files and data.

メモリ装置103は、プログラムの起動指示があった場合に、補助記憶装置102からプログラムを読み出して格納する。CPU104は、メモリ装置103に格納されたプログラムに従って文脈違反検出支援装置10に係る機能を実現する。インタフェース装置105は、ネットワークに接続するためのインタフェースとして用いられる。表示装置106はプログラムによるGUI(Graphical User Interface)等を表示する。入力装置107はキーボード及びマウス等であり、様々な操作指示を入力させるために用いられる。   The memory device 103 reads the program from the auxiliary storage device 102 and stores it when there is an instruction to start the program. The CPU 104 realizes functions related to the context violation detection support apparatus 10 according to a program stored in the memory device 103. The interface device 105 is used as an interface for connecting to a network. The display device 106 displays a GUI (Graphical User Interface) or the like by a program. The input device 107 is a keyboard, a mouse, or the like, and is used for inputting various operation instructions.

図2は、本発明の実施の形態における文脈違反検出支援装置の機能構成例を示す図である。同図において、文脈違反検出支援装置10は、ルール記述記憶部11、ルール解析部12、プログラム生成部13、及び雛形データ記憶部14等を有する。これら各部は、文脈違反検出支援装置10にインストールされたプログラムがCPU104に実行させる処理により実現される。   FIG. 2 is a diagram illustrating a functional configuration example of the context violation detection support apparatus according to the embodiment of the present invention. In the figure, the context violation detection support apparatus 10 includes a rule description storage unit 11, a rule analysis unit 12, a program generation unit 13, a template data storage unit 14, and the like. Each of these units is realized by processing executed by the CPU 104 by a program installed in the context violation detection support apparatus 10.

文脈違反検出支援装置10は、これら各部によって、例えば、或るライブラリを使用して開発されるアプリケーションにおける、当該ライブラリの文脈上のルール(規則)又は制約等(以下、「ルール」で統一する)に対する違反の検出を支援する。文脈上のルールとは、ライブラリに含まれる関数又はメソッドの呼び出しの有無や呼び出しの前後関係(呼び出し順)等に関するルールをいう。   The context violation detection support apparatus 10 uses, for example, rules (rules) or restrictions on the context of the library in an application developed using a certain library (hereinafter, unified by “rule”). Help detect violations against A contextual rule is a rule regarding whether or not a function or method included in a library is called, and the context (call order) of the call.

ルール記述記憶部11は、例えば、アプリケーションより利用されるライブラリについて、補助記憶装置102を用いてルール記述を記憶する。ルール記述とは、ライブラリの利用に関する文脈上のルールが所定の形式又は文法によって記述されたテキストデータをいう。本実施の形態において、ルール記述は、ルール要素がオペレータによって接続された式形式によって記述される。ルール要素とは、ルールの最小要素をいう。すなわち、ルール要素単体でも、一つのルール記述が成立しうる。オペレータは、ルール要素間の論理関係を示す記号をいう。   For example, the rule description storage unit 11 stores a rule description using the auxiliary storage device 102 for a library used by an application. The rule description refers to text data in which contextual rules relating to library use are described in a predetermined format or grammar. In the present embodiment, the rule description is described in an expression format in which rule elements are connected by an operator. A rule element refers to the minimum element of a rule. That is, one rule description can be established even with a single rule element. An operator refers to a symbol indicating a logical relationship between rule elements.

図3は、ルール記述を構成するルール要素の例を示す図である。同図には、4つのルール要素と、それぞれのルール要素のルール記述内における記述形式が示されている。なお、同図において、小文字のアルファベット(a〜j)は、ライブラリに含まれる関数又はメソッド(以下、「メソッド」で統一する。)を示す。   FIG. 3 is a diagram illustrating an example of rule elements constituting the rule description. The figure shows four rule elements and a description format in the rule description of each rule element. In the figure, lower case alphabets (a to j) indicate functions or methods (hereinafter, referred to as “methods”) included in the library.

一つ目は、cメソッド内において、aメソッドがbメソッドの実行前の必須条件であることを示すルール要素である。すなわち、cメソッド内において、bメソッドが実行される場合は、bメソッドの実行前にaメソッドが必ず実行されなければならないことを示すルール要素である。当該ルール要素は、「@Before(a,b,c)」の形式でルール記述に記述される。以下、当該ルール要素を「Beforeルール要素」という。   The first is a rule element indicating that the a method is an essential condition before the execution of the b method in the c method. That is, in the c method, when the b method is executed, the rule element indicates that the a method must be executed before the b method is executed. The rule element is described in the rule description in the format of “@Before (a, b, c)”. Hereinafter, the rule element is referred to as “Before rule element”.

二つ目は、fメソッド内において、dメソッドがeメソッドの実行後の必須条件であることを示すルール要素である。すなわち、fメソッド内において、eメソッドが実行される場合は、eメソッドの実行後に必ずdメソッドが実行されなければならないことを示すルール要素である。当該ルール要素は、「@After(d,e,c)」の形式でルール記述に記述される。以下、当該ルール要素を「Afterルール要素」という。   The second is a rule element indicating that the d method is an essential condition after the execution of the e method in the f method. That is, in the f method, when the e method is executed, the rule element indicates that the d method must be executed after the e method is executed. The rule element is described in the rule description in the format of “@After (d, e, c)”. Hereinafter, the rule element is referred to as “After rule element”.

三つ目は、hメソッド内におけるgメソッドの呼び出しが必須条件であることを示すルール要素である。すなわち、gメソッドが、hメソッド内において必ず呼び出されなければならないことを示すルール要素である。当該ルール要素は、「@Call(g,h)」の形式でルール記述に記述される。以下、当該ルール要素を「Callルール要素」という。   The third is a rule element indicating that calling the g method within the h method is an essential condition. That is, it is a rule element indicating that the g method must be called in the h method. The rule element is described in the rule description in the format of “@Call (g, h)”. Hereinafter, the rule element is referred to as “Call rule element”.

四つ目は、引数の型が指定されたメソッドの呼び出しの必須条件を示すルール要素である。すなわち、iメソッドについて、特定の型の引数が指定されたバージョンがjメソッド内において必ず呼び出されなければならないことを示すルール要素である。当該ルール要素は、「@Call(i(型),j)」の形式でルール記述に記述される。以下、当該ルール要素を「型指定Callルール要素」という。   The fourth element is a rule element indicating a necessary condition for calling a method in which an argument type is specified. That is, a rule element indicating that a version for which an argument of a specific type is specified for an i method must be called in the j method. The rule element is described in the rule description in the format of “@Call (i (type), j)”. Hereinafter, the rule element is referred to as a “type designation call rule element”.

また、図4は、ルール記述を構成するオペレータの例を示す図である。同図には4つのオペレータと、それぞれのオペレータのルール記述内における記述形式が示されている。   FIG. 4 is a diagram illustrating an example of an operator constituting the rule description. The figure shows four operators and the description format in the rule description of each operator.

一つ目は、(式k)かつ(式l)の関係を示すためのオペレータである。すなわち、(式k)及び(式l)の双方が必ず満たされなければならないというルールを記述するためのオペレータである。当該オペレータは、「&&」によってルール記述に記述される。   The first is an operator for indicating the relationship between (Equation k) and (Equation 1). That is, it is an operator for describing a rule that both (expression k) and (expression 1) must be satisfied. The operator is described in the rule description by “&&”.

二つ目は、(式m)または(式n)の関係を示すためのオペレータである。すなわち、(式m)又は(式n)のいずれか一方が満たされなければならないというルールを記述すためのオペレータである。当該オペレータは、「||」によってルール記述に記述される。   The second is an operator for indicating the relationship of (Expression m) or (Expression n). That is, it is an operator for describing a rule that either (Expression m) or (Expression n) must be satisfied. The operator is described in the rule description by “||”.

三つ目は、(式o)ならば(式p)の関係を示すためのオペレータである。すなわち、(式o)が満たされる場合は、(式p)が必ず満たされなければならないというルールを記述するためのオペレータである。当該オペレータは、「−>」によってルール記述に記述される。   The third is an operator for indicating the relationship of (Expression p) if (Expression o). That is, it is an operator for describing a rule that (Expression p) must be satisfied when (Expression o) is satisfied. The operator is described in the rule description by “−>”.

四つ目は、(式q)の否定を示すためのオペレータである。すなわち、(式q)が満たされてはならないというルールを記述ためのオペレータである。当該オペレータは、「!」によってルール記述に記述される。   The fourth is an operator for indicating negation of (formula q). That is, it is an operator for describing a rule that (formula q) must not be satisfied. The operator is described in the rule description by “!”.

なお、ルールは、ライブラリごとに異なる。したがって、ルール記述は、例えば、ライブラリの開発者、又はライブラリの使用者の中でライブラリの仕様に精通している者等によってライブラリごとに作成される。   The rules are different for each library. Therefore, the rule description is created for each library by, for example, a library developer or a library user who is familiar with the library specifications.

ルール解析部12は、ルール記述記憶部11に記録されているルール記述を解析し、ルール記述の内容を、コンピュータ(プログラム生成部13)が処理し易い形式に変換する。より詳しくは、ルール解析部12は、ルール記述よりその構成要素(後述されるルール要素一覧及び式構造)を抽出する。すなわち、ルール記述は、人によって記述されうるため、人に理解し易い形式を有する。一方、人に理解し易い形式は、コンピュータによるロジカルな処理には不向きである傾向がある。そこで、ルール解析部12は、人とコンピュータ(プログラム生成部13)との間を仲介するための処理を実行する。   The rule analysis unit 12 analyzes the rule description recorded in the rule description storage unit 11, and converts the content of the rule description into a format that can be easily processed by the computer (program generation unit 13). More specifically, the rule analysis unit 12 extracts constituent elements (a rule element list and a formula structure described later) from the rule description. That is, since the rule description can be described by a person, it has a format that is easy for a person to understand. On the other hand, formats that are easy to understand for humans tend to be unsuitable for logical processing by computers. Therefore, the rule analysis unit 12 executes a process for mediating between a person and a computer (program generation unit 13).

プログラム生成部13は、ルール解析部12による解析結果(ルール解析部12によって抽出されたルール記述の構成要素)に基づいて、ルール違反を検出するためのプログラムのソースコードを自動的に生成する。より詳しくは、プログラム生成部13は、履歴記録プログラム生成部131及びルール検証プログラム生成部132等を含む。履歴記録プログラム生成部131は、ルール違反を検出するためのプログラムの一部として履歴記録プログラムPrを生成する。ルール検証プログラム生成部132は、ルール違反を検出するためのプログラムの一部としてルール検証プログラムPcを生成する。   The program generation unit 13 automatically generates a source code of a program for detecting a rule violation based on an analysis result by the rule analysis unit 12 (component of rule description extracted by the rule analysis unit 12). More specifically, the program generation unit 13 includes a history recording program generation unit 131, a rule verification program generation unit 132, and the like. The history recording program generation unit 131 generates the history recording program Pr as part of a program for detecting rule violations. The rule verification program generation unit 132 generates a rule verification program Pc as part of a program for detecting rule violations.

履歴記録プログラムPrは、開発対象のアプリケーションによるメソッドの呼び出し(メソッドの実行)を検知し、当該呼び出しの履歴を記録するプログラムである。ルール検証プログラムPcは、履歴記録プログラムPrによって記録された履歴に基づいて、ルール違反の有無を検証するプログラムである。   The history recording program Pr is a program that detects a method call (method execution) by an application to be developed and records a history of the call. The rule verification program Pc is a program for verifying the presence or absence of rule violation based on the history recorded by the history recording program Pr.

なお、履歴記録プログラムPr及びルール検証プログラムPcは、アスペクト指向プログラミングに基づいて作成される。アスペクト指向プログラミングが有する特長の一つが、本実施の形態に好適だからである。当該特長は、対象のプログラム(本実施の形態におけるライブラリ)の外側から当該対象のプログラムに対して作用することができるという性質である。斯かる性質により、ライブラリ側に変更を加えずに、ライブラリのメソッドの呼び出し(実行)を検知等することができる。本実施の形態では、アスペクト指向プログラミング言語として、AspectJを利用する。但し、他の言語が用いられてもよい。   The history recording program Pr and the rule verification program Pc are created based on aspect-oriented programming. This is because one of the features of aspect-oriented programming is suitable for this embodiment. The feature is that it can act on the target program from the outside of the target program (library in the present embodiment). With such a property, it is possible to detect a method call (execution) of a library without changing the library side. In this embodiment, AspectJ is used as an aspect-oriented programming language. However, other languages may be used.

雛形データ記憶部14は、履歴記録プログラムPr又はルール検証プログラムPcのソースコードの雛形となるデータ(雛形データ)を補助記憶装置102を用いて記憶する。   The template data storage unit 14 uses the auxiliary storage device 102 to store data (model data) that is a template of the source code of the history recording program Pr or the rule verification program Pc.

以下、文脈違反検出支援装置10の処理手順について説明する。図5は、ルール解析部が実行する処理手順の一例を説明するためのフローチャートである。同図の処理は、例えば、ユーザによって入力される、処理の開始指示に応じて開始される。当該指示において、解析対象のルール記述の識別情報が指定される。なお、ルール記述の識別情報を、以下「ルール名」という。   Hereinafter, the processing procedure of the context violation detection support apparatus 10 will be described. FIG. 5 is a flowchart for explaining an example of a processing procedure executed by the rule analysis unit. The process shown in the figure is started in response to a process start instruction input by the user, for example. In this instruction, identification information of the rule description to be analyzed is specified. The identification information of the rule description is hereinafter referred to as “rule name”.

ステップS101において、ルール解析部12は、指定されたルール名に係るルール記述をルール記述記憶部11よりメモリ装置103に読み込む。すなわち、ルール記述は、ルール名に関連付けられてルール記述記憶部11に記憶されている。   In step S <b> 101, the rule analysis unit 12 reads the rule description relating to the specified rule name from the rule description storage unit 11 into the memory device 103. That is, the rule description is stored in the rule description storage unit 11 in association with the rule name.

図6は、第一のルール記述の一例を示す図である。同図に示されるルール記述rd1は、記述d11及び記述d12を含む。   FIG. 6 is a diagram illustrating an example of the first rule description. The rule description rd1 shown in the figure includes a description d11 and a description d12.

記述d11は、ルール記述rd1の対象となるメソッド名を示す。したがって、記述d11より、ルール記述rd1は、メソッド「SSLSocket.startHandshake()」に関するルール記述であることが分かる。なお、一つのルール記述内に、複数のメソッドに関するルールが記述されてもよい。また、対象となるメソッド名を示す記述は、必須ではない。   A description d11 indicates a method name that is a target of the rule description rd1. Therefore, it can be seen from the description d11 that the rule description rd1 is a rule description related to the method “SSLSocket.startHandshake ()”. Note that rules relating to a plurality of methods may be described in one rule description. A description indicating the target method name is not essential.

記述d12は、ルールを示す式である。記述d12では、二つのBeforeルール要素が「−>」オペレータによって接続されている。第一項のBeforeルール要素は、「@Before(X509TrustManager.checkServerTrusted(),SSLSocket.startHandshake(),httpServlet.doPost())」であり、第二項のBeforeルール要素は、「@Before(X509Certificate.checkValidity(),SSLSocket.startHandshake(),httpServlet.doPost()))」である。   The description d12 is an expression indicating a rule. In the description d12, two Before rule elements are connected by the “−>” operator. The Before rule element of the first term is “@Before (X509TrustManager.checkServerTrusted (), SSLSocket.startHandshake (), httpServlet.doPost ())”, and the Before rule element of the second term is “@Before (X509Certificate. checkValidity (), SSLSocket.startHandshake (), httpServlet.doPost ())) ”.

したがって、記述d12に係る式は、「httpServlet.doPost()内において、SSLSocket.startHandshake()より前にX509TrustManager.checkServerTrusted()が実行される場合(実行されるならば)、httpServlet.doPost()内において、SSLSocket.startHandshake()より前にX509Certificate.checkValidity()が実行されなければならない。」というルールを示す。   Therefore, the expression related to the description d12 is “in httpServlet.doPost (), if X509TrustManager.checkServerTrusted () is executed before SSLSocket.startHandshake () (if executed), it will be in httpServlet.doPost (). , X509Certificate.checkValidity () must be executed before SSLSocket.startHandshake (). "

ルール記述rd12は、Java(登録商標)のSSL(Secure Socket Layer)クライアントとしてのアプリケーションの実装におけるSSLSocketライブラリの利用に関するルールを記述したものである。   The rule description rd12 describes rules regarding the use of the SSLSocket library in the implementation of an application as a Java (registered trademark) SSL (Secure Socket Layer) client.

すなわち、SSL通信では、サーバ証明書が信頼できるものか否かを検証することが必要とされる。Java(登録商標)のSSLSocketライブラリは、startHandshake()を呼び出してハンドシェークを開始する場合、証明書の検証処理は自動的に行われるため通常は問題ない。但し、X509TrustManagerの実装クラスにおいてcheckServerTrusted()がオーバーライドされた場合、上記証明書の検証処理は、オーバーライドされてしまう。したがって、この場合、上記証明書の検証処理は、アプリケーションの開発者が適切に実装しなければならない。   That is, in SSL communication, it is necessary to verify whether or not the server certificate is reliable. In the case of a Java (registered trademark) SSLSocket library, when handshake is started by calling startHandshake (), certificate verification processing is automatically performed, so there is usually no problem. However, if checkServerTrusted () is overridden in the X509TrustManager implementation class, the certificate verification process is overridden. Therefore, in this case, the certificate verification process must be appropriately implemented by the application developer.

したがて、SSLクライアントとしてのアプリケーションを実装する場合におけるSSLSocketライブラリの利用に関するルールは、以下のようになる。   Therefore, the rules regarding the use of the SSLSocket library when an application as an SSL client is implemented are as follows.

対象メソッド:javax.net.ssl.SSLSocket#startHandshake()
ルール:サーブレッドから呼び出された処理内において、javax.net.ssl.SSLSocket#startHandshake()よりも前に、X509TrustManager(の実装クラス)の checkServerTrusted()が実行される場合、必ずX509Certificate#checkValidity()も実行されなければならない
当該ルールをルール要素及びオペレータを用いて表現したものが、ルール記述rd1である。
Target method: javax.net.ssl.SSLSocket # startHandshake ()
Rule: When checkServerTrusted () of X509TrustManager (implementing class) is executed before javax.net.ssl.SSLSocket # startHandshake () in the process called from the servlet, X509Certificate # checkValidity () The rule description rd1 represents the rule using a rule element and an operator.

なお、ここでは、サーブレットから呼び出されるWebアプリケーションがアプリケーションの例とされている。また、httpServlet.doPost()は、Webサーバにおいて、HTTPリクエストのPOSTコマンドが受信されたときに呼び出されるメソッドである。したがって、「サーブレットから呼び出された処理」に対して、「httpServlet.doPost()」が当てはめられている。   Here, a Web application called from a servlet is an example of an application. HttpServlet.doPost () is a method that is called when a POST command of an HTTP request is received in the Web server. Therefore, “httpServlet.doPost ()” is applied to “processing called from servlet”.

ルール記述は、その解析処理の便宜を考慮して、XML形式等の構造化文書形式によって記述されてもよい。   The rule description may be described in a structured document format such as an XML format in consideration of the convenience of the analysis processing.

図7は、XML形式による第一のルール記述の一例を示す図である。同図のルール記述rd2は、図6のルール記述rd1において定義されているルールと同じルールをXML形式によって記述したものである。   FIG. 7 is a diagram illustrating an example of the first rule description in the XML format. The rule description rd2 in the figure describes the same rules as those defined in the rule description rd1 in FIG. 6 in the XML format.

ルート要素であるrule要素(<rule>タグによって囲まれた要素)のlibrary属性の値(「SSLSocket.startHandshake()」は、対象となるメソッド名を示す。rule要素の子要素rd21のタグ名(「−>」)は、当該子要素の値として含まれている二つのBeforeルール要素を接続するオペレータを示す。before要素rd22は、図6の記述d12における第一項のBeforeルール要素に対応する。before要素rd23は、図6の記述d12における第二項のBeforeルール要素に対応する。すなわち、各before要素において、proc属性、succ要素、within要素は、それぞれ、Before要素のaメソッド、bメソッド、cメソッド(図3参照)に対応する。   The value of the library attribute (“SSLSocket.startHandshake ()”) of the root element (element surrounded by the <rule> tag) indicates the name of the target method. The tag name of the child element rd21 of the rule element ( “->”) Indicates an operator that connects two Before rule elements included as the value of the child element, before element rd22 corresponds to the Before rule element of the first term in the description d12 of FIG. The before element rd23 corresponds to the before rule element of the second term in the description d12 of Fig. 6. That is, in each before element, the proc attribute, the succ element, and the with element are the a method and b method of the Before element, respectively. , C method (see FIG. 3).

XML形式のデータは、既存のXMLパーサによって解析が容易である。したがって、ルール解析部12の処理内容を簡便化することができる。   Data in XML format can be easily analyzed by an existing XML parser. Therefore, the processing content of the rule analysis unit 12 can be simplified.

続いて、ルール解析部12は、読み込んだルール記述の構造を解析する(S102)。具体的には、ルール記述内のルール要素とオペレータとが分解され、構造化される。すなわち、各ルール要素間の論理関係がルール解析部12によって認識される。なお、ルール記述が図7に示されるようにXML形式の場合、XMLパーサによってDOM(Document Object Model)形式に読み込まれることが、ステップS102でいうところの解析に相当する。したがって、ルール記述が構造化文書形式によって記述されている場合、ステップS101及びS102は、実質的に一つのステップとなりうる。   Subsequently, the rule analysis unit 12 analyzes the structure of the read rule description (S102). Specifically, rule elements and operators in the rule description are disassembled and structured. That is, the rule analysis unit 12 recognizes the logical relationship between each rule element. In the case where the rule description is in the XML format as shown in FIG. 7, reading into the DOM (Document Object Model) format by the XML parser corresponds to the analysis in step S102. Therefore, when the rule description is described in a structured document format, steps S101 and S102 can be substantially one step.

続いて、ルール解析部12は、必要に応じてルール記述の式を変形(又は変換)する(S103)。本実施の形態では、オペレータ「−>」を含む式に関して、オペレータ「!」及び「||」を用いて変形(又は変換)が行われる。具体的には、「A−>B」の構造を有する式は、「!A||B」に変形される。双方の式においてAとBとの論理関係は同じであるところ、「!」及び「||」のオペレータの方が、式の論理値(真偽値)の評価(式が示すルールが満たされているか否かの評価)をし易いからである。なお、ここでの「A」及び「B」は、一つのルール要素又は式を示す。ステップS103において、オペレータ「−>」は、全て解決(置換)される。   Subsequently, the rule analysis unit 12 transforms (or converts) the rule description formula as necessary (S103). In the present embodiment, the expression including the operator “->” is transformed (or converted) using the operators “!” And “||”. Specifically, an expression having a structure of “A-> B” is transformed into “! A || B”. In both expressions, the logical relationship between A and B is the same, and the operators “!” And “||” satisfy the evaluation of the logical value (true / false value) of the expression (the rule indicated by the expression is satisfied). This is because it is easy to evaluate whether or not it is present. Here, “A” and “B” indicate one rule element or expression. In step S103, all the operators “->” are resolved (replaced).

続いて、ルール解析部12は、ルール記述rd1の解析結果よりルール要素を抽出する(S104)。続いて、ルール解析部12は、抽出されたルール要素ごとに変数名を生成する(割り当てる)(S105)。変数名とは、ルール要素の論理値(真偽値)を記憶するための変数に対する識別名である。ルール要素間で一意性が保証されれば変数名の命名規則は所定のものに限定されない。続いて、ルール解析部12は、ルール要素と変数名との組の一覧を、ルール名に関連付けて補助記憶装置102に記録(出力)する(S106)。当該一覧を以下「ルール要素一覧」という。   Subsequently, the rule analysis unit 12 extracts a rule element from the analysis result of the rule description rd1 (S104). Subsequently, the rule analysis unit 12 generates (assigns) a variable name for each extracted rule element (S105). The variable name is an identification name for a variable for storing a logical value (true / false value) of the rule element. As long as uniqueness is ensured between rule elements, the naming rules for variable names are not limited to predetermined ones. Subsequently, the rule analysis unit 12 records (outputs) a list of pairs of rule elements and variable names in the auxiliary storage device 102 in association with the rule names (S106). This list is hereinafter referred to as “rule element list”.

図8は、第一のルール要素一覧の例を示す図である。同図のルール要素一覧rL1は、図6に示したルール記述rd1に基づいて生成されるルール要素一覧である。同図では、第一項のBeforeルール要素に対して、変数名「R1」が割り当てられ(生成され)、第二項のBeforeルール要素に対して、変数名「R2」が割り当てられた例が示されている。   FIG. 8 is a diagram illustrating an example of a first rule element list. The rule element list rL1 in the same figure is a rule element list generated based on the rule description rd1 shown in FIG. In the figure, an example in which the variable name “R1” is assigned (generated) to the Before rule element of the first term and the variable name “R2” is assigned to the Before rule element of the second term. It is shown.

続いて、ルール解析部12は、ルール記述の式における各ルール要素を、当該ルール要素に対応する変数名によって置き換えたものを、式構造とする(S107)。なお、ステップS103において変形された式については、変形後の式が置換の対象とされる。図6のルール要素記述rd1及び図8のルール要素一覧rL1に基づく式構造は、以下の(1)のようになる。   Subsequently, the rule analysis unit 12 sets an expression structure in which each rule element in the rule description expression is replaced with a variable name corresponding to the rule element (S107). In addition, about the formula deform | transformed in step S103, the formula after deformation | transformation is made into the object of substitution. The formula structure based on the rule element description rd1 in FIG. 6 and the rule element list rL1 in FIG. 8 is as shown in (1) below.

!R1||R2 ・・・(1)   ! R1 || R2 (1)

なお、ルール記述rd1の各ルール要素について、単純に変数名への置換を行った結果は、
R1−>R2
であるが、ステップS103における変形により、ルール記述rd1より抽出される式構造は、上記(1)の通りとなる。
For each rule element of the rule description rd1, the result of simple substitution with a variable name is
R1-> R2
However, the expression structure extracted from the rule description rd1 by the modification in step S103 is as described in (1) above.

続いて、ルール解析部12は、式構造をルール名に関連付けて補助記憶装置102に記録(出力)する(S108)。   Subsequently, the rule analysis unit 12 records (outputs) the formula structure in the auxiliary storage device 102 in association with the rule name (S108).

続いて、プログラム生成部13の処理手順について説明する。図9は、プログラム生成部が実行する処理手順の一例を説明するためのフローチャートである。同図の処理は、例えば、ユーザによって入力される、処理の開始指示に応じて開始される。当該指示において、ルール名が指定される。   Subsequently, a processing procedure of the program generation unit 13 will be described. FIG. 9 is a flowchart for explaining an example of a processing procedure executed by the program generation unit. The process shown in the figure is started in response to a process start instruction input by the user, for example. In the instruction, a rule name is specified.

ステップS201において、プログラム生成部13は、アスペクトの雛形(アスペクト雛形)を雛形データ記憶部14よりメモリ装置103に読み込む。   In step S <b> 201, the program generation unit 13 reads an aspect template (aspect template) from the template data storage unit 14 into the memory device 103.

図10は、アスペクト雛形の一例を示す図である。同図に示されるように、アスペクト雛形は、アスペクト指向プログラミング言語(AspectJ)におけるアスペクトの定義の雛形である。同図のアスペクト雛形t1において、アスペクト名は、パラメタ化されている。すなわち、アスペクト名には具体的な値ではなく、「<アスペクト名>」が記述されている。また、アスペクト雛形t1には、一行のステップs11が記述されている。ステップs11では、MAP<MAP>型の変数varTableのメモリへの生成が定義されている。MAP<MAP>型とは、キー名とMAP型の変数とを関連付けて記憶することのできるデータ型をいう。本実施の形態では、斯かるMAP<MAP>型の変数varTableを用いて、ライブラリのメソッドの呼び出し履歴(実行履歴)を管理する。   FIG. 10 is a diagram illustrating an example of an aspect template. As shown in the figure, the aspect template is a template for defining an aspect in an aspect-oriented programming language (AspectJ). In the aspect template t1 in the figure, the aspect name is parameterized. That is, “<aspect name>” is described in the aspect name, not a specific value. In addition, one line of step s11 is described in the aspect template t1. In step s11, generation of a variable varTable of the MAP <MAP> type in the memory is defined. The MAP <MAP> type refers to a data type that can store a key name and a MAP type variable in association with each other. In the present embodiment, the library method call history (execution history) is managed using such a MAP <MAP> type variable varTable.

図11は、本実施の形態においてライブラリの呼び出し履歴を管理するためのデータ構造の一例を概念的に示す図である。   FIG. 11 is a diagram conceptually illustrating an example of a data structure for managing a library call history in the present embodiment.

同図には、変数varTableが、便宜上、テーブル形式によって表現されている。変数varTableは、キーとしてスレッドの識別子を記憶し、値として履歴テーブルを記憶する。スレッドの識別子とは、アプリケーションによるライブラリの適否の検証時において履歴記録プログラムPrが動作するスレッドの識別子である。マルチスレッド環境では、履歴記録プログラムPrは、複数のスレッド上で並列的に実行されうる。そして、ライブラリに関するルール記述(文脈に関するルール)は、スレッドごとに満たされる必要がある。そこで、変数varTableは、スレッドごとに履歴テーブルを対応付けて記憶する。なお、通信用のライブラリの場合は、変数varTableにおいて、セッションごとに(セッションIDに対応付けて)履歴テーブルが記憶されてもよい。また、スレッド又はセッション以外の単位で、ルール記述が満たされる必要が有る場合、当該単位ごとに、履歴テーブルが対応付けられればよい。   In the figure, the variable varTable is represented in a table format for convenience. The variable varTable stores a thread identifier as a key and a history table as a value. The thread identifier is an identifier of a thread in which the history recording program Pr operates when the application verifies the suitability of the library. In a multi-thread environment, the history recording program Pr can be executed in parallel on a plurality of threads. And the rule description about the library (rule about the context) needs to be satisfied for each thread. Therefore, the variable varTable stores a history table in association with each thread. In the case of a library for communication, a history table may be stored for each session (corresponding to a session ID) in the variable varTable. In addition, when the rule description needs to be satisfied in units other than threads or sessions, a history table may be associated with each unit.

一方、履歴テーブルとは、本実施の形態において生成される履歴記録プログラムPr内においてcurrentTableという変数名によって参照される、MAP<boolean>型の変数である。currentTable変数(履歴テーブル)は、キーとしてルール要素の変数名又はルール要素内のメソッドごとに割り当てられる変数名を記憶し、値として当該ルール要素が満たされているか否かを示す真偽値、又は当該メソッドが呼び出されたか(実行されたか)否かを示す真偽値を記憶する。   On the other hand, the history table is a variable of the MAP <boolean> type that is referred to by a variable name “currentTable” in the history recording program Pr generated in the present embodiment. The currentTable variable (history table) stores a variable name of a rule element as a key or a variable name assigned to each method in the rule element, and a true / false value indicating whether the rule element is satisfied as a value, or A true / false value indicating whether or not the method is called (executed) is stored.

続いて、プログラム生成部13は、アスペクト雛形t1の<アスペクト名>に対して、ユーザによって指定されたルール名を当てはめて(<アスペクト名>をルール名によって置換して)、当該ルール名に係るルール記述rd1に対応した具体的なアスペクトのソースコード(アスペクトコード)を生成する(S202)。   Subsequently, the program generation unit 13 applies the rule name specified by the user to the <aspect name> of the aspect template t1 (replaces <aspect name> with the rule name) and relates to the rule name. A specific aspect source code (aspect code) corresponding to the rule description rd1 is generated (S202).

図12は、第一のアスペクトコードの具体例を示す図である。同図におけるアスペクトコードac1では、図10の「<アスペクト名>」が、「SSLSocket」に置換されている。すなわち、本実施の形態において、ルール記述rd1に関するルール名は、「SSLSocket」であるとする。   FIG. 12 is a diagram illustrating a specific example of the first aspect code. In the aspect code ac1 in the figure, “<Aspect name>” in FIG. 10 is replaced with “SSLSocket”. That is, in the present embodiment, it is assumed that the rule name related to the rule description rd1 is “SSLSocket”.

なお、ステップS202では、ルール名の当てはめだけでなく、ルール名が当てはめられたアスペクトコードac1を含むファイルが補助記憶装置102に生成される。   In step S202, not only the rule name fitting but also a file including the aspect code ac1 to which the rule name is applied is generated in the auxiliary storage device 102.

続いて、履歴記録プログラム生成部131は、指定されたルール名に関連付けられているルール要素一覧rL1及び式構造を補助記憶装置102からメモリ装置103に読み込む(S203)。続いて、履歴記録プログラム生成部131は、読み込まれたルール要素一覧rL1の中で、未処理のルール要素を処理対象とする(S204)。未処理のルール要素とは、ステップS205の処理対象とされていないルール要素をいう。したがって、最初は、読み込まれた全てのルール要素一覧rL1に含まれる全てのルール要素が未処理のルール要素である。   Subsequently, the history recording program generation unit 131 reads the rule element list rL1 and the formula structure associated with the designated rule name from the auxiliary storage device 102 into the memory device 103 (S203). Subsequently, the history recording program generation unit 131 sets an unprocessed rule element as a processing target in the read rule element list rL1 (S204). An unprocessed rule element refers to a rule element that is not a processing target in step S205. Therefore, initially, all rule elements included in all the read rule element lists rL1 are unprocessed rule elements.

続いて、履歴記録プログラム生成部131は、処理対象のルール要素(以下、「カレントルール要素」という。)について、履歴記録プログラムPrの生成処理を実行する(S205)。履歴記録プログラムPrの生成処理においては、カレントルール要素について、履歴記録プログラムPrとしてのソースコードが、ステップS202において生成されたアスペクトコードac1に追加される。ステップS205は、読み込まれたルール要素一覧rL1に含まれる全てのルール要素について順番に実行される(S206)。   Subsequently, the history recording program generation unit 131 executes generation processing of the history recording program Pr for the rule element to be processed (hereinafter referred to as “current rule element”) (S205). In the generation process of the history recording program Pr, the source code as the history recording program Pr is added to the aspect code ac1 generated in step S202 for the current rule element. Step S205 is executed in order for all rule elements included in the read rule element list rL1 (S206).

続いて、ルール検証プログラム生成部132は、ルール検証プログラムPcの生成処理を実行する(S207)。ルール検証プログラムPcの生成処理においては、指定されたルール名に対応するルール記述に対するルール検証プログラムPcとしてのソースコードが、ステップS202において生成されたアスペクトコードac1に追加される。したがって、履歴記録プログラムPrとルール検証プログラムPcとは、ファイル単位としては(ソースコードの単位としては)、一つのソースコードとして生成される。   Subsequently, the rule verification program generation unit 132 executes generation processing of the rule verification program Pc (S207). In the generation process of the rule verification program Pc, the source code as the rule verification program Pc for the rule description corresponding to the specified rule name is added to the aspect code ac1 generated in step S202. Therefore, the history recording program Pr and the rule verification program Pc are generated as one source code as a file unit (as a source code unit).

続いて、ステップS205の履歴記録プログラムPrの生成処理の詳細について説明する。履歴記録プログラムPrの生成処理は、カレントルール要素が、Beforeルール要素、Afterルール要素、Callルール要素、又は型指定Callルール要素のいずれのタイプであるかに応じて異なる。したがって、履歴記録プログラム生成部131は、カレントルール要素が、いずれのタイプであるかを判定し、処理を分岐させる。以下、分岐後の各処理手順について説明する。   Next, details of the process of generating the history recording program Pr in step S205 will be described. The generation process of the history recording program Pr differs depending on whether the current rule element is a Before rule element, an After rule element, a Call rule element, or a type designation Call rule element. Therefore, the history recording program generation unit 131 determines which type the current rule element is, and branches the process. Hereinafter, each processing procedure after branching will be described.

まず、Beforeルール要素(@Before(a,b,c))に関する履歴記憶プログラムの生成処理について説明する。当該生成処理では、要するに次のような処理を実行する履歴プロログラムが生成される。以下の説明において、aメソッド、bメソッド、cメソッドとは、@Before(a,b,c)における、aメソッド、bメソッド、又はcメソッドをいう。   First, the generation process of the history storage program regarding the Before rule element (@Before (a, b, c)) will be described. In short, in the generation process, a history program that executes the following process is generated. In the following description, a method, b method, and c method refer to a method, b method, or c method in @Before (a, b, c).

(1)cメソッドの実行をフックし(検知し)、Beforeルール要素の評価値(当該要素の要件が満たされているか否かを示す真偽値)をtrueとする。また、aメソッドは実行されていないことを記録する。   (1) The execution of the c method is hooked (detected), and the evaluation value of the Before rule element (a true / false value indicating whether the requirement of the element is satisfied) is set to true. Also, it is recorded that the a method is not executed.

(2)aメソッドの実行をフックし(検知し)、aメソッドが実行されたことを記録する。   (2) Hook (detect) execution of the a method and record that the a method has been executed.

(3)bメソッドの実行をフックし(検知し)、aメソッドが実行されたか否かを示す真偽値を、当該Beforeルール要素の評価値とする。   (3) The execution of the b method is hooked (detected), and a true / false value indicating whether or not the a method has been executed is set as the evaluation value of the Before rule element.

したがって、bメソッドが実行されたにも拘わらず、bメソッドの実行前にaメソッドが実行されていない場合は、評価値はfalseとなる履歴記憶プログラムが生成される。   Therefore, if the a method is not executed before the b method is executed even though the b method is executed, a history storage program whose evaluation value is false is generated.

以下、斯かる履歴記録プログラムPrの生成処理の詳細について説明する。   The details of the process of generating the history recording program Pr will be described below.

図13は、Beforeルール要素に関する履歴記録プログラム生成処理の処理手順の一例を説明するためのフローチャートである。すなわち、同図は、カレントルール要素がBeforeルール要素である場合の履歴記録プログラムPrの生成処理の処理手順の一例である。   FIG. 13 is a flowchart for explaining an example of the processing procedure of the history recording program generation processing regarding the Before rule element. That is, this figure is an example of the processing procedure of the generation process of the history recording program Pr when the current rule element is the Before rule element.

ステップS301において、カレントルール要素のcメソッドの呼び出しをフックするためのポイントカット定義をアスペクトコードac1に追加生成する。具体的には、履歴記録プログラム生成部131は、雛形データ記憶部14よりポイントカット定義雛形を取得し、ポイントカット定義雛形にカレントルール要素のcメソッドを当てはめた結果をアスペクトコードac1に追加する。なお、ポイントカット定義とは、アスペクト指向プログラミング言語において、1以上のジョインポイントの集合の定義をいう。ジョインポイントとは、アスペクトをウィーブするコード上のポイントをいう。すなわち、ジョインポイントとは、対象のプログラムにおいて、フックする位置をいう。   In step S301, a pointcut definition for hooking the call to the c method of the current rule element is additionally generated in the aspect code ac1. Specifically, the history recording program generation unit 131 acquires the pointcut definition template from the template data storage unit 14, and adds the result of fitting the c method of the current rule element to the pointcut definition template to the aspect code ac1. The point cut definition is a definition of a set of one or more join points in an aspect-oriented programming language. A join point is a point on the code that weaves an aspect. That is, the join point refers to a hook position in the target program.

図14は、ポイントカット定義雛形の一例を示す図である。同図のポイントカット定義雛形t2において、ポイントカット名と、ジョインポイントとされるメソッドのメソッド名とは、それぞれ、<ポイントカット名>又は<メソッド名>としてパラメタ化されている。なお、ポイントカット定義雛形t2のポイントカットタイプは、callである。したがって、ポイントカット定義雛形t2は、<メソッド名>に係るメソッドの呼び出しをジョインポイントとするポイントカット定義の雛形である。   FIG. 14 is a diagram illustrating an example of a pointcut definition template. In the pointcut definition template t2 in the figure, the pointcut name and the method name of the method to be the join point are parameterized as <pointcut name> or <method name>, respectively. The point cut type of the point cut definition template t2 is “call”. Accordingly, the pointcut definition template t2 is a pointcut definition template that uses a method call related to <method name> as a join point.

ステップS301において、履歴記録プログラム生成部131は、ポイントカット定義雛形t2の<ポイントカット名>を適当な値に置換し、<メソッド名>をカレントルール要素のcメソッドのメソッド名に置換して、当該cメソッドに対するポイントカット定義を生成する。   In step S301, the history recording program generating unit 131 replaces <pointcut name> of the pointcut definition template t2 with an appropriate value, replaces <method name> with the method name of the c method of the current rule element, and A pointcut definition for the c method is generated.

図15は、履歴記録プログラムにおけるポイントカット定義の第一の具体例を示す図である。同図のポイントカット定義pc11は、図14のポイントカット定義雛形t2に対して、図8の1行目のルール要素(以下、「ルール要素R1」という。)のcメソッドが当てはめられた場合に生成されるポイントカット定義である。すなわち、現段階において、ルール要素R1がカレント要素であるとする。   FIG. 15 is a diagram showing a first specific example of the pointcut definition in the history recording program. The point cut definition pc11 in the figure is applied when the c method of the rule element on the first line in FIG. 8 (hereinafter referred to as “rule element R1”) is applied to the point cut definition template t2 in FIG. Pointcut definition to be generated. That is, it is assumed that the rule element R1 is the current element at the current stage.

ポイントカット定義pc11において、ポイントカット定義雛形t2の<ポイントカット名>は、「callR1−c」に置換されている。また、ポイントカット定義雛形t2の<メソッド名>は、ルール要素R1におけるcメソッドのメソッド名「httpServlet.doPost()」に置換されている。なお、ポイントカット名は、各ポイントカット定義間で一意性が保証され、かつ、プログラミング言語の仕様の範囲内において、任意の文字列が指定されてよい。本実施の形態では、Beforeルール要素のcメソッドに対するポイントカット名は、「call<カレントルール要素の変数名>−c」という命名規則に従って生成される。<カレントルール要素の変数名>は、カレントルール要素に対する変数名によって置換される。ルール要素R1の変数名は、「R1」であるため、「R1」に置換される。   In the point cut definition pc11, <point cut name> of the point cut definition template t2 is replaced with “callR1-c”. Also, <method name> in the pointcut definition template t2 is replaced with the method name “httpServlet.doPost ()” of the c method in the rule element R1. The pointcut name is guaranteed to be unique among the pointcut definitions, and an arbitrary character string may be designated within the scope of the programming language specification. In the present embodiment, the pointcut name for the c method of the Before rule element is generated according to a naming rule “call <variable name of current rule element> -c”. <Variable name of current rule element> is replaced by the variable name for the current rule element. Since the variable name of the rule element R1 is “R1”, it is replaced with “R1”.

続いて、履歴記録プログラム生成部131は、ポイントカット定義pc11に対するbeforeアドバイス定義ad11(図33参照)を、アスペクトコードac1に追加生成する(S302)。具体的には、履歴記録プログラム生成部131は、雛形データ記憶部14よりbeforeアドバイス定義雛形を取得し、beforeアドバイス定義雛形に基づいてbeforeアドバイス定義を生成する。   Subsequently, the history recording program generation unit 131 additionally generates before advice definition ad11 (see FIG. 33) for the point cut definition pc11 in the aspect code ac1 (S302). Specifically, the history recording program generation unit 131 acquires a before advice definition template from the template data storage unit 14, and generates a before advice definition based on the before advice definition template.

アドバイスとは、アスペクト指向プログラミング言語において、ジョイントポイントに対して実行される処理をいう。アドバイスのうち、beforeアドバイスは、「事前処理」を意味する。すなわち、beforeアドバイスは、ジョイントポイントの実行前に織り込まれる(組み込まれる)処理である。   Advice refers to processing executed on a joint point in an aspect-oriented programming language. Among advices, before advice means “pre-processing”. That is, the before advice is a process that is woven (incorporated) before the joint point is executed.

図16は、beforeアドバイス定義雛形の一例を示す図である。同図のbeforeアドバイス定義t5において、ポイントカット名は、<ポイントカット名>としてパラメタ化されている。   FIG. 16 is a diagram illustrating an example of a before advice definition template. In the before advice definition t5 in the figure, the point cut name is parameterized as <point cut name>.

また、beforeアドバイス定義雛形t5は、3つの処理ステップを含む。3つの処理ステップを含む。ステップs51は、現在のスレッドの識別子を取得する。ステップs52は、変数varTable(図11参照)より、現在のスレッドに対応する履歴テーブルを取得し、変数currentTableに代入する。ステップs53は、現在のスレッドに対応する履歴テーブルがまだ生成されていない場合は生成し、生成された履歴テーブルを変数currentTableに代入する。   Also, the before advice definition template t5 includes three processing steps. Includes three processing steps. Step s51 obtains the identifier of the current thread. In step s52, the history table corresponding to the current thread is acquired from the variable varTable (see FIG. 11), and is substituted into the variable currentTable. Step s53 generates a history table corresponding to the current thread if it has not yet been generated, and substitutes the generated history table into the variable currentTable.

ステップS302において、履歴記録プログラム生成部131は、beforeアドバイス定義雛形t5の<ポイントカット名>を、ステップS301において生成したポイントカット名(「callR1−c」)に置換することによりbeforeアドバイス定義を生成する。   In step S302, the history recording program generating unit 131 generates a before advice definition by replacing <point cut name> of the before advice definition template t5 with the point cut name ("callR1-c") generated in step S301. To do.

続いて、履歴記録プログラム生成部131は、カレントルール要素の要件が満たされたことを暫定的に履歴テーブル(変数currentTable)へ記録するためのステップをbeforeアドバイス定義に対して追加する(S303)。具体的には、履歴記録プログラム生成部131は、履歴記録雛形を雛形データ記憶部14より取得し、履歴記録雛形に基づいて、履歴テーブルへの記録処理に関するステップを追加する。   Subsequently, the history recording program generation unit 131 adds a step for temporarily recording in the history table (variable currentTable) that the requirements of the current rule element are satisfied to the before advice definition (S303). Specifically, the history recording program generation unit 131 acquires a history recording template from the template data storage unit 14, and adds a step related to recording processing to the history table based on the history recording template.

図17は、履歴記録雛形の一例を示す図である。同図の履歴記録雛形t4において、履歴テーブル(変数currentTable)に記録(設定)されるキー名と値とは、それぞれ<キー名>、<値>としてパラメタ化されている。ステップS303において、履歴記録プログラム生成部131は、<キー名>を、カレントルール要素(ルール要素R1)のcメソッドに対する変数名(R1)によって置換し、<値>をtrueによって置換した結果をbeforeアドバイス定義に追加する。なお、ステップs41及びs42の詳細については後述する。   FIG. 17 is a diagram illustrating an example of a history recording template. In the history record template t4 in the figure, the key name and the value recorded (set) in the history table (variable currentTable) are parameterized as <key name> and <value>, respectively. In step S303, the history recording program generating unit 131 replaces <key name> with the variable name (R1) for the c method of the current rule element (rule element R1), and replaces <value> with true before. Add to advice definition. Details of steps s41 and s42 will be described later.

続いて、履歴記録プログラム生成部131は、aメソッドは実行されていないことを履歴テーブル(変数currentTable)へ記録するためのステップをbeforeアドバイス定義に対して追加する(S304)。具体的には、履歴記録プログラム生成部131は、履歴記録雛形t4の<キー名>を、カレントルール要素(ルール要素R1)のaメソッドに対する変数名によって置換し、<値>をfalseによって置換した結果をbeforeアドバイス定義に追加する。当該aメソッドに対する変数名は、本実施の形態において、「<カレントルール要素の変数名>−pred」という命名規則に従って生成される。したがって、ルール要素R1のaメソッドに関して、<キー名>は、「R1−pred」という値によって置換される。   Subsequently, the history recording program generation unit 131 adds a step for recording in the history table (variable currentTable) that the a method has not been executed to the before advice definition (S304). Specifically, the history recording program generation unit 131 replaces <key name> of the history recording template t4 with the variable name for the a method of the current rule element (rule element R1), and replaces <value> with false. Add the result to the before advice definition. In the present embodiment, the variable name for the a method is generated according to the naming rule “<variable name of current rule element> -pred”. Therefore, for the a method of rule element R1, <key name> is replaced by the value "R1-pred".

ステップS304の実行により、ステップS301において生成されたポイントカット定義に対する具体的なbeforeアドバイス定義は完成する。図18は、具体的なbeforeアドバイス定義の第一の例を示す図である。   By executing step S304, a specific before advice definition for the pointcut definition generated in step S301 is completed. FIG. 18 is a diagram illustrating a first example of specific before advice definition.

同図のbeforeアドバイス定義ad11に含まれる各ステップについて、図16又は図17と同ステップには、同一ステップ番号を付している。   For each step included in the before advice definition ad11 in the figure, the same step number is assigned to the step in FIG. 16 or FIG.

ステップs51〜s53については、図16において説明した通りである。ステップs41−1は、カレントルール要素の変数名「R1」のキー名に対して、trueを履歴テーブルに記録する。すなわち、cメソッドの実行前に、ルール要素R1の要件が満たされたことが、暫定的に当該履歴テーブルに記録される。同図のbeforeアドバイス定義ad11は、ポイントカット定義pc11の作用により、当該cメソッドの実行前に実行されるからである。ステップs42−1は、現在のスレッドの識別子に対応付けて当該履歴テーブルを変数varTableに格納する。その結果、現在のスレッドにおいて、ルール要素R1の要件が満たされたことが暫定的に変数varTableに記録されたことになる。   Steps s51 to s53 are as described in FIG. In step s41-1, true is recorded in the history table for the key name of the variable name “R1” of the current rule element. That is, it is temporarily recorded in the history table that the requirement of the rule element R1 is satisfied before the c method is executed. This is because the before advice definition ad11 shown in the figure is executed before the execution of the c method by the action of the pointcut definition pc11. Step s42-1 stores the history table in the variable varTable in association with the identifier of the current thread. As a result, the fact that the requirement of the rule element R1 is satisfied in the current thread is provisionally recorded in the variable varTable.

ステップs41−2は、履歴テーブル(currentTable)に、カレントルール要素のaメソッドに対する変数名(「R1−pred」)に対してfalseを記録する。すなわち、当該aメソッドは実行されていないことが当該履歴テーブルに記録される。ステップs42−2は、現在のスレッドの識別子に対応付けて当該履歴テーブルを変数varTableに格納する。その結果、現在のスレッドにおいて、当該aメソッドは実行されていないことが変数varTableに記録されたことになる。   Step s41-2 records false for the variable name ("R1-pred") for the a method of the current rule element in the history table (currentTable). That is, it is recorded in the history table that the a method has not been executed. In step s42-2, the history table is stored in the variable varTable in association with the identifier of the current thread. As a result, it is recorded in the variable varTable that the a method is not executed in the current thread.

続いて、履歴記録プログラム生成部131は、カレントルール要素のaメソッドの呼び出しをフックするためのポイントカット定義をアスペクトコードac1に追加生成する(S305)。具体的には、履歴記録プログラム生成部131は、ポイントカット定義雛形t2(図14)の<ポイントカット名>を適当な値に置換し、<メソッド名>をカレントルール要素のaメソッドのメソッド名に置換して、当該aメソッドに対するポイントカット定義を生成する。   Subsequently, the history recording program generation unit 131 additionally generates a pointcut definition for hooking the call of the a method of the current rule element in the aspect code ac1 (S305). Specifically, the history recording program generation unit 131 replaces <point cut name> in the point cut definition template t2 (FIG. 14) with an appropriate value, and replaces <method name> with the method name of the a method of the current rule element. To generate a pointcut definition for the a method.

図19は、履歴記録プログラムにおけるポイントカット定義の第二の具体例を示す図である。同図のポイントカット定義pc12は、図14のポイントカット定義雛形t2に対して、ルール要素R1(図8)のaメソッドが当てはめられた場合に生成されるポイントカット定義である。   FIG. 19 is a diagram showing a second specific example of the pointcut definition in the history recording program. The point cut definition pc12 in the figure is a point cut definition generated when the a method of the rule element R1 (FIG. 8) is applied to the point cut definition template t2 in FIG.

ポイントカット定義pc12において、ポイントカット定義雛形t2の<ポイントカット名>は、「callR1−pred」に置換されている。また、ポイントカット定義雛形t2の<メソッド名>は、ルール要素R1におけるaメソッドのメソッド名「X509TrustManager.checkServerTrusted()」に置換されている。なお、Beforeルール要素のaメソッドに対するポイントカット名は、「call<カレントルール要素の変数名>−pred」という命名規則に従って生成される。   In the point cut definition pc12, <point cut name> of the point cut definition template t2 is replaced with “callR1-pred”. Also, the <method name> of the pointcut definition template t2 is replaced with the method name “X509TrustManager.checkServerTrusted ()” of the a method in the rule element R1. Note that the point cut name for the a method of the Before rule element is generated according to a naming rule of “call <variable name of current rule element> -pred”.

続いて、履歴記録プログラム生成部131は、ステップS305において生成したポイントカット定義に対するafterアドバイス定義をアスペクトコードac1に追加生成する(S306)。具体的には、履歴記録プログラム生成部131は、雛形データ記憶部14よりafterアドバイス定義雛形を取得し、afterアドバイス定義雛形に基づいてafterアドバイス定義を生成する。   Subsequently, the history recording program generation unit 131 additionally generates an after advice definition for the point cut definition generated in step S305 in the aspect code ac1 (S306). Specifically, the history recording program generation unit 131 acquires an after advice definition template from the template data storage unit 14, and generates an after advice definition based on the after advice definition template.

afterアドバイスは、「事後処理」を意味する。すなわち、afterアドバイスは、ジョイントポイントの実行後に織り込まれる(組み込まれる)処理である。   After advice means “post processing”. That is, the after advice is a process to be incorporated (incorporated) after the joint point is executed.

図20は、afterアドバイス定義雛形の一例を示す図である。同図のafterアドバイス定義雛形t3において、ポイントカット名は、<ポイントカット名>としてパラメタ化されている。   FIG. 20 is a diagram illustrating an example of an after advice definition template. In the after advice definition template t3 in the figure, the point cut name is parameterized as <point cut name>.

また、afterアドバイス定義雛形t3は、3つの処理ステップを含む。ステップs31は、現在のスレッドの識別子を取得する。ステップs32は、変数varTable(図11参照)より、現在のスレッドに対応する履歴テーブルを取得し、変数currentTableに代入する。ステップs33は、現在のスレッドに対応する履歴テーブルがまだ生成されていない場合は生成し、生成された履歴テーブルを変数currentTableに代入する。   The after advice definition template t3 includes three processing steps. Step s31 obtains the identifier of the current thread. In step s32, the history table corresponding to the current thread is acquired from the variable varTable (see FIG. 11), and is substituted into the variable currentTable. A step s33 generates a history table corresponding to the current thread if it has not been generated yet, and substitutes the generated history table into a variable currentTable.

ステップS306において、履歴記録プログラム生成部131は、afterアドバイス定義雛形t3の<ポイントカット名>を、ステップS305において生成したポイントカット名(「callR1−pred」)に置換することによりafterアドバイス定義を生成する。   In step S306, the history recording program generation unit 131 generates an after advice definition by replacing <point cut name> of the after advice definition template t3 with the point cut name ("callR1-pred") generated in step S305. To do.

続いて、履歴記録プログラム生成部131は、aメソッドが呼び出されたことを履歴テーブル(変数currentTable)へ記録するためのステップを、ステップS306において生成されたafterアドバイス定義に対して追加する(S307)。具体的には、履歴記録プログラム生成部131は、履歴記録雛形t4(図17)を雛形データ記憶部14より取得し、履歴記録雛形t4に基づいて、履歴テーブルへの記録処理に関するステップを追加する。すなわち、履歴記録プログラム生成部131は、履歴記録雛形t4の<キー名>を、カレントルール要素(ルール要素R1)のaメソッドに対する変数名(R1−pred)によって置換し、<値>をtrueによって置換した結果をafterアドバイス定義に追加する。   Subsequently, the history recording program generation unit 131 adds a step for recording that the a method has been called to the history table (variable currentTable) to the after advice definition generated in step S306 (S307). . Specifically, the history recording program generation unit 131 acquires the history recording template t4 (FIG. 17) from the template data storage unit 14, and adds a step related to the recording process to the history table based on the history recording template t4. . That is, the history recording program generation unit 131 replaces <key name> of the history recording template t4 with the variable name (R1-pred) for the a method of the current rule element (rule element R1), and <value> by true. The replacement result is added to the after advice definition.

ステップS307の実行により、ステップS305において生成されたポイントカット定義に対する具体的なafterアドバイス定義は完成する。   By executing step S307, a specific after advice definition for the pointcut definition generated in step S305 is completed.

図21は、具体的なafterアドバイス定義の第一の例を示す図である。同図のafterアドバイス定義ad12に含まれる各ステップについて、図17又は図20と同ステップには、同一ステップ番号を付している。   FIG. 21 is a diagram illustrating a first example of a specific after advice definition. About each step contained in the after advice definition ad12 of the same figure, the same step number is attached | subjected to the same step as FIG. 17 or FIG.

ステップs31〜s33については、図20において説明した通りである。ステップs41は、変数vaTableより取得された(s32)、又は新に生成された(s33)履歴テーブル(currentTable)に、カレントルール要素のaメソッド対する変数名(「R1−pred」)に対してtrueを記録する。すなわち、aメソッドが呼び出されたことが、¥当該履歴テーブルに記録される。ステップs42は、現在のスレッドの識別子に対応付けて当該履歴テーブルを変数varTableに格納する。その結果、現在のスレッドにおいて、aメソッドが呼び出されたことが変数varTableに記録されたことになる。   Steps s31 to s33 are as described in FIG. In step s41, true is obtained for the variable name (“R1-pred”) for the a method of the current rule element in the history table (currentTable) acquired from the variable vaTable (s32) or newly generated (s33). Record. That is, the fact that the a method has been called is recorded in the history table. In step s42, the history table is stored in the variable varTable in association with the identifier of the current thread. As a result, the fact that the a method has been called in the current thread is recorded in the variable varTable.

続いて、履歴記録プログラム生成部131は、カレントルール要素のbメソッドの呼び出しをフックするためのポイントカット定義をアスペクトコードac1に追加生成する(S308)。具体的には、履歴記録プログラム生成部131は、雛形データ記憶部14よりポイントカット定義雛形t2(図14)を取得し、ポイントカット定義雛形t2にカレントルール要素のbメソッドを当てはめた結果をアスペクトコードac1に追加する。その結果、図22に示されるポイントカット定義がアスペクトコードac1に追加される。   Subsequently, the history recording program generation unit 131 additionally generates a point cut definition for hooking the call of the b method of the current rule element in the aspect code ac1 (S308). Specifically, the history recording program generation unit 131 acquires the pointcut definition template t2 (FIG. 14) from the template data storage unit 14, and applies the b method of the current rule element to the pointcut definition template t2. Add to code ac1. As a result, the point cut definition shown in FIG. 22 is added to the aspect code ac1.

図22は、履歴記録プログラムにおけるポイントカット定義の第三の具体例を示す図である。同図のポイントカット定義pc13は、図14のポイントカット定義雛形t2に対して、ルール要素R1のbメソッドが当てはめられた場合に生成されるポイントカット定義である。   FIG. 22 is a diagram showing a third specific example of the pointcut definition in the history recording program. The point cut definition pc13 in the figure is a point cut definition generated when the b method of the rule element R1 is applied to the point cut definition template t2 in FIG.

ポイントカット定義pc13において、ポイントカット定義雛形t2の<ポイントカット名>は、「callR1−succ」に置換されている。また、ポイントカット定義雛形t2の<メソッド名>は、ルール要素R1におけるbメソッドのメソッド名「SSLSocket.startHandshake ()」に置換されている。なお、本実施の形態では、Beforeルール要素のbメソッドに対するポイントカット名は、「call<カレントルール要素の変数名>−succ」という命名規則に従って生成される。   In the pointcut definition pc13, <pointcut name> of the pointcut definition template t2 is replaced with “callR1-succ”. Also, the <method name> of the pointcut definition template t2 is replaced with the method name “SSLSocket.startHandshake ()” of the b method in the rule element R1. In the present embodiment, the pointcut name for the b method of the Before rule element is generated according to a naming rule “call <variable name of current rule element> -succ”.

続いて、履歴記録プログラム生成部131は、ステップS308において生成したポイントカット定義に対するafterアドバイス定義をアスペクトコードac1に追加生成する(S309)。具体的には、履歴記録プログラム生成部131は、afterアドバイス定義雛形t3の<ポイントカット名>を、ステップS308において生成したポイントカット名(「callR1−succ」)に置換することによりafterアドバイス定義を生成する。   Subsequently, the history recording program generation unit 131 additionally generates an after advice definition for the point cut definition generated in step S308 in the aspect code ac1 (S309). Specifically, the history recording program generation unit 131 replaces the <point cut name> of the after advice definition template t3 with the point cut name (“callR1-suc”) generated in step S308, thereby changing the after advice definition. Generate.

続いて、プログラム生成部13は、bメソッドより前に呼ばれているべきaメソッドに関する呼び出し履歴(実行履歴)を参照するためのステップを、ステップS309において生成されたafterアドバイス定義に追加する(S310)。当該ステップは、雛形データ記憶部14より取得される履歴参照雛形に基づいて生成される。   Subsequently, the program generation unit 13 adds a step for referring to the call history (execution history) related to the a method that should be called before the b method to the after advice definition generated in step S309 (S310). ). This step is generated based on the history reference template acquired from the template data storage unit 14.

図23は、履歴参照雛形の一例を示す図である。同図の履歴参照雛形t6において、履歴テーブル(変数currentTable)より値を取得するキー名と、取得された値を格納する変数(参照用変数)の変数名とは、それぞれ<キー名>、<参照用変数名>としてパラメタ化されている。ステップS310において、履歴記録プログラム生成部131は、<参照用変数名>を適当な値によって置換し、<キー名>をaメソッドに対する変数名(ここでは、「R1−pred」)によって置換した結果をafterアドバイス定義に追加する。本実施の形態において、aメソッドの変数名に対応する値を参照するための変数名は、「r1」とされる。したがって、<参照用変数名>は、「r1」に置換される。なお、ステップs61及びs62の詳細については後述する。   FIG. 23 is a diagram illustrating an example of a history reference template. In the history reference template t6 in the figure, the key name for acquiring a value from the history table (variable currentTable) and the variable name of the variable for storing the acquired value (reference variable) are <key name> and < Parameterized as reference variable name>. In step S310, the history recording program generation unit 131 replaces <reference variable name> with an appropriate value, and replaces <key name> with a variable name for the a method (here, "R1-pred"). Is added to the after advice definition. In the present embodiment, the variable name for referring to the value corresponding to the variable name of the a method is “r1”. Therefore, <reference variable name> is replaced with “r1”. Details of steps s61 and s62 will be described later.

続いて、プログラム生成部13は、履歴記録雛形t4(図17)を用いて、カレントルール要素の評価値を変数varTableに記録するためのステップを、ステップS309において生成されたafterアドバイス定義に追加する(S311)。具体的には、履歴記録雛形t4の<キー名>がカレントルール要素の変数名(「R1」)によって置換され、<値>が、履歴記録雛形t4(図23)の<参照用変数名>の置換先と同じ変数名(「r1」)に置換された結果が、当該afterアドバイスに追加される。   Subsequently, the program generation unit 13 uses the history recording template t4 (FIG. 17) to add a step for recording the evaluation value of the current rule element in the variable varTable to the after advice definition generated in step S309. (S311). Specifically, the <key name> of the history record template t4 is replaced with the variable name (“R1”) of the current rule element, and the <value> is <reference variable name> of the history record template t4 (FIG. 23). The result of replacement with the same variable name (“r1”) as the replacement destination is added to the after advice.

ステップS311の実行により、ステップS308において生成されたポイントカット定義に対する具体的なafterアドバイス定義は完成する。   By executing step S311, a specific after advice definition for the pointcut definition generated in step S308 is completed.

図24は、具体的なafterアドバイス定義の第二の例を示す図である。同図のafterアドバイス定義ad13に含まれる各ステップについて、図16、図23、又は図17と同ステップには、同一ステップ番号を付している。   FIG. 24 is a diagram illustrating a second example of a specific after advice definition. For each step included in the after advice definition ad13 in the figure, the same step number is assigned to the same step as in FIG. 16, FIG. 23, or FIG.

ステップs31〜s33については、図20において説明した通りである。ステップs61は、現在のスレッドに対応する履歴テーブル(変数currentTable)において、キー名「R1−pred」に対して記録されている値を取得し、変数r1に代入する。すなわち、カレントルール要素のaメソッドが実行されたか否かを示す真偽値が変数r1に代入される。   Steps s31 to s33 are as described in FIG. In step s61, a value recorded for the key name “R1-pred” in the history table (variable currentTable) corresponding to the current thread is acquired and substituted into the variable r1. That is, a true / false value indicating whether or not the a method of the current rule element has been executed is assigned to the variable r1.

ステップs62は、変数r1の値がnull(空)である場合(すなわち、beforeアドバイス定義ad11及びafterアドバイス定義ad12が実行されていない場合)、変数r1にfalseを代入する。したがって、aメソッドが実行された後にアドバイス定義ad13が実行されている場合は、変数r1はtrueが代入された状態となる。それ以外の場合は、変数r1はfalseが代入された状態となる。なお、afterアドバイス定義ad13は、bメソッドの実行後に実行される処理である。したがって、aメソッドが実行された後にアドバイス定義ad13が実行されている場合とは、aメソッドの実行後にbメソッドが実行されている場合に相当する。これは、Before要素であるカレントルール要素の要件が満たされていることを意味する。   Step s62 assigns false to the variable r1 when the value of the variable r1 is null (that is, when the before advice definition ad11 and the after advice definition ad12 are not executed). Therefore, when the advice definition ad13 is executed after the a method is executed, the variable r1 is in a state where true is substituted. In other cases, the variable r1 is in a state where false is substituted. The after advice definition ad13 is a process executed after the b method is executed. Therefore, the case where the advice definition ad13 is executed after the a method is executed corresponds to the case where the b method is executed after the a method is executed. This means that the requirement of the current rule element which is the Before element is satisfied.

ステップs41は、カレントルール要素の変数名「R1」のキー名に対して、変数r1の値を履歴テーブルに記録する。すなわち、変数r1の値が、カレントルール要素の評価値として履歴テーブルに記録される。上記したように、変数r1の値は、カレントルール要素の要件が満たされているか否かを示すからである。   In step s41, the value of the variable r1 is recorded in the history table for the key name of the variable name “R1” of the current rule element. That is, the value of the variable r1 is recorded in the history table as the evaluation value of the current rule element. This is because the value of the variable r1 indicates whether or not the requirement of the current rule element is satisfied as described above.

ステップs42は、現在のスレッドの識別子に対応付けて当該履歴テーブルを変数varTableに格納する。その結果、現在のスレッドにおいて、カレントルール要素の要件が満たされているか否かがが変数varTableに記録されたことになる。   In step s42, the history table is stored in the variable varTable in association with the identifier of the current thread. As a result, whether or not the requirements of the current rule element are satisfied in the current thread is recorded in the variable varTable.

以上で、カレントルール要素がBeforeルール要素である場合の処理手順は終了する。図8に示されるように、本実施の形態の場合、図8のルール要素一覧rL1において2番目のルール要素(ルール要素R2)もBeforeルール要素である。したがって、続けて、ルール要素R2に関して図13に示される処理手順が実行される。その結果、変数名R2に対してルール要素R2の評価値が現在のスレッドの履歴テーブルに記録され、当該履歴テーブルが変数varTableに格納される。なお、当該処理手順の内容の説明は、上記より自明であるため省略する。   This is the end of the processing procedure when the current rule element is the Before rule element. As shown in FIG. 8, in the case of the present embodiment, the second rule element (rule element R2) in the rule element list rL1 in FIG. 8 is also a Before rule element. Therefore, the processing procedure shown in FIG. 13 is subsequently executed for the rule element R2. As a result, the evaluation value of the rule element R2 is recorded in the history table of the current thread for the variable name R2, and the history table is stored in the variable varTable. The description of the processing procedure is omitted because it is self-evident from the above.

続いて、図8のルール要素一覧rL1に基づいて、図9のステップS207のルール検証プログラムPc生成処理について説明する。なお、カレント要素がAfterルール要素、Callルール要素、又は型指定Callルール要素である場合の履歴記録プログラムPrの生成処理の処理手順の説明は、便宜上、後回しにする。   Next, the rule verification program Pc generation process in step S207 in FIG. 9 will be described based on the rule element list rL1 in FIG. Note that the description of the processing procedure of the history recording program Pr generation process when the current element is an After rule element, a Call rule element, or a type designation Call rule element will be deferred for convenience.

図25は、ルール検証プログラム生成処理の処理手順の一例を説明するためのフローチャートである。   FIG. 25 is a flowchart for explaining an example of the processing procedure of the rule verification program generation processing.

ステップS401において、ルール検証プログラム生成部132は、ルール要素一覧rL1において、各ルール要素の最後の引数として指定されているメソッドをフック(以下、「呼出元メソッド」という。)するためのポイントカット定義を、アスペクトコードac1に追加する。すなわち、Beforeルール要素についてはcメソッド、Afterルール要素についてはfメソッド、Callルール要素についてはhメソッド、型指定Callルール要素についてはjメソッドが、呼出元メソッドに相当する。なお、本実施の形態において、一つのルール内の各ルール要素の呼出元メソッドは共通である必要がある。ルールが充足されているか否かの検証は、当該呼出元メソッドの実行後の一箇所において行われる必要があるからである。ステップS401におけるポイントカット定義の生成には、ポイントカット定義雛形t2(図14)が用いられる。   In step S401, the rule verification program generation unit 132 hooks the method specified as the last argument of each rule element in the rule element list rL1 (hereinafter referred to as “calling method”). Is added to the aspect code ac1. That is, the c method for the Before rule element, the f method for the After rule element, the h method for the Call rule element, and the j method for the type-specified Call rule element correspond to the caller method. In the present embodiment, the caller method of each rule element in one rule needs to be common. This is because the verification of whether or not the rule is satisfied needs to be performed at one place after execution of the caller method. The point cut definition template t2 (FIG. 14) is used for generating the point cut definition in step S401.

図26は、ルール検証プログラムにおけるポイントカット定義の具体例を示す図である。   FIG. 26 is a diagram illustrating a specific example of the pointcut definition in the rule verification program.

同図のポイントカット定義pc17において、図14のポイントカット定義雛形t2の<ポイントカット名>は、「callLib」に置換されている。また、<メソッド名>は、ルール記述rd1の対象メソッドのメソッド名(「httpServlet.doPost()」)によって置換されている。なお、対象メソッドに対するポイントカット定義におけるポイントカット名は、本実施の形態では固定的に「callLib」に置換される。但し、当該ポイントカット名は、プログラミング言語の仕様の範囲内において任意に決定されてよい。   In the point cut definition pc17 of FIG. 14, <point cut name> of the point cut definition template t2 of FIG. 14 is replaced with “callLib”. Also, <method name> is replaced by the method name (“httpServlet.doPost ()”) of the target method of the rule description rd1. Note that the pointcut name in the pointcut definition for the target method is fixedly replaced with “callLib” in the present embodiment. However, the point cut name may be arbitrarily determined within the specification range of the programming language.

続いて、ルール検証プログラム生成部132は、afterアドバイス定義雛形t3を用いて、ステップS401において生成したポイントカット定義に対するafterアドバイス定義をアスペクトコードac1に追加生成する(S402)。具体的には、afterアドバイス定義雛形t3の<ポイントカット名>が、ステップS401において置換先とされたポイントカット名(「callLib」)に置換された結果が、アスペクトコードac1に追加される。   Subsequently, using the after advice definition template t3, the rule verification program generating unit 132 additionally generates an after advice definition for the pointcut definition generated in step S401 in the aspect code ac1 (S402). Specifically, the result obtained by replacing the <point cut name> of the after advice definition template t3 with the point cut name (“callLib”) that is the replacement destination in step S401 is added to the aspect code ac1.

続いて、ルール検証プログラム生成部132は、ルール記述rd1の式構造(!R1||R2)内に含まれる変数名ごとに、当該変数名に対する値を参照するためのステップを、アスペクトコードac1に追加する(S403)。具体的には、ルール検証プログラム生成部132は、雛形データ記憶部14より履歴参照雛形t6(図23)を取得し、履歴参照雛形t6に当該変数名を当てはめた結果を当該変数名ごとにアスペクトコードac1に追加する。   Subsequently, for each variable name included in the expression structure (! R1 || R2) of the rule description rd1, the rule verification program generation unit 132 sets a step for referring to the value for the variable name to the aspect code ac1. It is added (S403). Specifically, the rule verification program generation unit 132 acquires the history reference template t6 (FIG. 23) from the template data storage unit 14, and assigns the variable name to the history reference template t6 for each variable name. Add to code ac1.

式構造(!R1||R2)には、変数名R1及び変数名R2が含まれている。したがって、履歴参照雛形t6の<参照変数名>が「r1」に置換され、<キー名>が「R1」に置換された結果が追加される。更に、履歴参照雛形t6の<参照変数名>が「r2」に置換され、<キー名>が「R2」に置換された結果が追加される。   The expression structure (! R1 || R2) includes a variable name R1 and a variable name R2. Therefore, the result obtained by replacing <reference variable name> in the history reference template t6 with “r1” and replacing <key name> with “R1” is added. Further, the result of replacing <reference variable name> with “r2” and replacing <key name> with “R2” in the history reference template t6 is added.

続いて、ルール検証プログラム生成部132は、当該式構造の各変数名に当該変数名の値を当てはめた結果として生成される式の真偽値に応じて、例外を発生させるステップをアスペクトコードac1に追加する(S404)。当該ステップは、雛形データ記憶部14より取得されるルール評価雛形を用いて生成される。   Subsequently, the rule verification program generation unit 132 performs a step of generating an exception according to the true / false value of the expression generated as a result of applying the value of the variable name to each variable name of the expression structure. (S404). This step is generated using the rule evaluation template acquired from the template data storage unit 14.

図27は、ルール評価雛形の一例を示す図である。同図のルール評価雛形t7において、<式>は、式構造の各変数名が、当該変数名に対する値が代入された参照用変数の変数名によって置換された式によって置換される。ステップs71の詳細については後述する。   FIG. 27 is a diagram illustrating an example of a rule evaluation template. In the rule evaluation template t7 in the figure, <expression> is replaced with an expression in which each variable name in the expression structure is replaced with the variable name of the reference variable to which the value for the variable name is assigned. Details of step s71 will be described later.

ステップS404の実行により、ステップS402において生成されたafterアドバイス定義は、図28に示されるように完成する。   By executing step S404, the after advice definition generated in step S402 is completed as shown in FIG.

図28は、ルール検証プログラムにおけるafterアドバイス定義の具体例を示す図である。同図のafterアドバイス定義ad17に含まれる各ステップについて、図20、図23、又は図27と同ステップには、同一ステップ番号を付している。   FIG. 28 is a diagram illustrating a specific example of after advice definition in the rule verification program. For each step included in the after advice definition ad17 in the same figure, the same step number is assigned to the same step as in FIG. 20, FIG. 23, or FIG.

ステップs31〜s33については、図20において説明した通りであり、ステップS402において生成される。ステップs61−1〜s62−2は、ステップS403において生成される。ステップs61−1は、現在のスレッドに対応する履歴テーブル(変数currentTable)において、キー名「R1」に対して記録されている値を取得し、変数r1に代入する。すなわち、ルール要素R1の評価値を示す真偽値が変数r1に代入される。ステップs62−1は、変数r1の値がnull(空)である場合、変数r1にfalseを代入する。したがって、ルール要素R1の要件が満たされている場合、変数r1にはtrueが代入され、ルール要素R1の要件が満たされていない場合、変数r1にはfalseが代入された状態となる。   Steps s31 to s33 are as described in FIG. 20, and are generated in step S402. Steps s61-1 to s62-2 are generated in step S403. In step s61-1, a value recorded for the key name “R1” in the history table (variable currentTable) corresponding to the current thread is acquired and substituted into the variable r1. That is, a true / false value indicating the evaluation value of the rule element R1 is substituted into the variable r1. Step s62-1 assigns false to the variable r1 when the value of the variable r1 is null (empty). Therefore, when the requirement of the rule element R1 is satisfied, true is assigned to the variable r1, and when the requirement of the rule element R1 is not satisfied, false is assigned to the variable r1.

ステップs61−2は、現在のスレッドに対応する履歴テーブル(変数currentTable)において、キー名「R2」に対して記録されている値を取得し、変数r2に代入する。すなわち、ルール要素R2の評価値を示す真偽値が変数r2に代入される。ステップs62−2は、変数r2の値がnull(空)である場合、変数r2にfalseを代入する。したがって、ルール要素R2の要件が満たされている場合、変数r2にはtrueが代入され、ルール要素R2の要件が満たされていない場合、変数r2にはfalseが代入された状態となる。   In step s61-2, the value recorded for the key name “R2” in the history table (variable currentTable) corresponding to the current thread is acquired and substituted into the variable r2. That is, a true / false value indicating the evaluation value of the rule element R2 is substituted into the variable r2. Step s62-2 assigns false to the variable r2 when the value of the variable r2 is null (empty). Therefore, when the requirement of the rule element R2 is satisfied, true is assigned to the variable r2, and when the requirement of the rule element R2 is not satisfied, false is assigned to the variable r2.

ステップs71は、ステップS404において生成される。ステップs71は、「!(!r1||r2)」を評価し、評価値がtrueであれば(すなわち、(!r1||r2)がfalseであれば)、例外(RuntimeException)を発生させる。評価値がfalseであれば(すなわち、(!r1||r2)がtrueであれば)、何もしない。なお、「!(!r1||r2)」は、r1の値の否定とr2の値との論理和の否定を意味する。   Step s71 is generated in step S404. In step s71, “! (! R1 || r2)” is evaluated, and if the evaluation value is true (that is, if (! R1 || r2) is false), an exception (RuntimeException) is generated. If the evaluation value is false (that is, if (! R1 || r2) is true), nothing is done. Note that “! (! R1 || r2)” means negation of the logical sum of the value of r1 and the value of r2.

以上で、ルール記述rd1に対する履歴記録プログラムPr及びルール検証プログラムPcのソースコード(アスペクトコードac1)の生成は完了する。その結果、アスペクトコードac1は、図29及び図30に示されるようになる。   The generation of the source code (aspect code ac1) of the history recording program Pr and the rule verification program Pc for the rule description rd1 is thus completed. As a result, the aspect code ac1 is as shown in FIGS.

図29及び図30は、本実施の形態の第一のルール記述に関して生成される履歴記録プログラム及びルール検証プログラムのアスペクトコードの具体例を示す図である。図29及び図30は、一つのアスペクトコードac1を、便宜上、二つの図面に分割して示したものである。   FIGS. 29 and 30 are diagrams showing specific examples of aspect codes of the history recording program and the rule verification program generated with respect to the first rule description of the present embodiment. 29 and 30 show one aspect code ac1 divided into two drawings for convenience.

図29において、図15、図18、図19、図21、図22、又は図24と同一のポイントカット定義又はアドバイス定義には、同一符号を付している。すなわち、図29には、ルール記述rd1より抽出されたルール要素R1に関するポイントカット定義又はアドバイス定義が示されている。   In FIG. 29, the same reference numerals are assigned to the same pointcut definition or advice definition as in FIG. 15, FIG. 18, FIG. 19, FIG. 21, FIG. That is, FIG. 29 shows a pointcut definition or an advice definition related to the rule element R1 extracted from the rule description rd1.

図30において、図26又は図28と同一のポイントカット定義又はアドバイス定義には、同一符号を付している。   In FIG. 30, the same reference numerals are assigned to the same pointcut definition or advice definition as in FIG.

また、図30において、ポイントカット定義pc14及びafterアドバイス定義ad14は、ルール要素R2に関して図13のステップS301〜S304が実行されることにより生成されるポイントカット定義又はアドバイス定義である。ポイントカット定義pc15及びafterアドバイス定義ad15は、ルール要素R2に関して図13のステップS305〜S307が実行されることにより生成されるポイントカット定義又はアドバイス定義である。ポイントカット定義pc16及びafterアドバイス定義ad16は、ルール要素R2に関して図13のステップS308〜S311が実行されることにより生成されるポイントカット定義又はアドバイス定義である。   In FIG. 30, a pointcut definition pc14 and an after advice definition ad14 are pointcut definitions or advice definitions generated by executing steps S301 to S304 of FIG. 13 for the rule element R2. The point cut definition pc15 and the after advice definition ad15 are point cut definitions or advice definitions generated by executing steps S305 to S307 in FIG. 13 with respect to the rule element R2. The pointcut definition pc16 and the after advice definition ad16 are pointcut definitions or advice definitions generated by executing steps S308 to S311 in FIG. 13 for the rule element R2.

同図のように生成されたアスペクトコードac1は、コンパイルされ、ライブラリを使用するアプリケーションに適用されることにより、履歴記録プログラムPr及びルール検証プログラムPcとして機能する。履歴記録プログラムPrにおけるポイントカット定義により、アプリケーションによるライブラリのメソッドの呼び出しがフックされる。当該呼び出しのフックに応じ、履歴記録プログラムPrにおけるアドバイス定義が実行され、当該呼び出しに関する履歴が変数varTableに記録される。更に、ルール記述rd1の呼出元メソッドの実行後に、ルール検証プログラムPcにおけるアドバイス定義が実行され、ルール記述rd1の要件が満たされているか否かが評価される。要件が満たされていない場合(falseである場合)、例外が発生する。例外の発生により、ユーザは、ライブラリの利用が不適切であることを認識することができる。   The aspect code ac1 generated as shown in the figure functions as a history recording program Pr and a rule verification program Pc by being compiled and applied to an application using a library. Calling library methods by the application is hooked by the pointcut definition in the history recording program Pr. The advice definition in the history recording program Pr is executed according to the hook of the call, and the history regarding the call is recorded in the variable varTable. Further, after the call source method of the rule description rd1 is executed, the advice definition in the rule verification program Pc is executed to evaluate whether or not the requirement of the rule description rd1 is satisfied. If the requirement is not met (if false), an exception occurs. The occurrence of the exception allows the user to recognize that the library is inappropriately used.

続いて、図5のステップS205の履歴記録プログラムPrの生成処理に関して、便宜上、説明を後回しにした、カレントルール要素がAfterルール要素である場合について説明する。ここでは、図5のステップS101において、ルール解析部12によって、図31に示されるルール記述が読み込まれたこととする。   Next, the case where the current rule element is an after rule element, which is deferred for convenience, will be described with respect to the process of generating the history recording program Pr in step S205 of FIG. Here, it is assumed that the rule description shown in FIG. 31 is read by the rule analysis unit 12 in step S101 of FIG.

図31は、第二のルール記述の一例を示す図である。同図に示されるルール記述rd2のルールを示す式では、二つのAfterルール要素が「||」オペレータによって接続されている。第一項のAfterルール要素は、「@After(java.io.File.delete(), java.io.File.createTempFile(), httpServlet.doPost())」であり、第二項のAfterルール要素は、「@After(java.io.File.deleteOnExit(), java.io.File.createTempFile(), httpServlet.doPost())」である。   FIG. 31 is a diagram illustrating an example of the second rule description. In the expression indicating the rule of the rule description rd2 shown in the same drawing, two After rule elements are connected by the “||” operator. The After rule element of the first term is "@After (java.io.File.delete (), java.io.File.createTempFile (), httpServlet.doPost ())", and the After rule element of the second term Is "@After (java.io.File.deleteOnExit (), java.io.File.createTempFile (), httpServlet.doPost ())".

したがって、ルール記述rd2に係る式は、「httpServlet.doPost()内でjava.io.File.createTempFile()が呼び出された場合は、java.io.File.createTempFile()の呼び出し後にjava.io.File.delete()が呼び出されなければならない。又は、httpServlet.doPost()内で、java.io.File.createTempFile()が呼び出された場合は、、java.io.File.createTempFile()の呼び出し後に、java.io.File.deleteOnExit()が呼び出されなければならない。」というルールを示す。   Therefore, the expression related to the rule description rd2 is “if java.io.File.createTempFile () is called in httpServlet.doPost (), then java.io.File.createTempFile () will be called after java.io.File.createTempFile ()”. File.delete () must be called, or if java.io.File.createTempFile () is called in httpServlet.doPost (), call java.io.File.createTempFile () Later, java.io.File.deleteOnExit () must be called. "

ルール記述rd2は、アプリケーション内においてファイルが一時的に生成された場合、当該ファイルはアプリケーションの終了時に削除されないと、情報漏洩の虞があることを考慮して本実施の形態において規定されたものである。   The rule description rd2 is defined in the present embodiment in consideration that there is a possibility of information leakage if a file is temporarily generated in the application unless the file is deleted at the end of the application. is there.

ファイルが適切に削除されるためには、Java.io.File#createTempFile()の実行後には、delete()又はdeleteOnExit()が実行される必要があるというルールが規定されればよい。当該ルールをルール要素及びオペレータを用いて表現したものが、ルール記述rd2である。   In order for the file to be deleted appropriately, a rule that delete () or deleteOnExit () needs to be executed after execution of Java.io.File # createTempFile () may be defined. A rule description rd2 represents the rule using a rule element and an operator.

ルール記述rd2について、ステップS102〜S106が実行された結果、図32に示されるルール要素一覧が補助記憶装置102に記録(出力)される。   As a result of executing Steps S102 to S106 for the rule description rd2, the rule element list shown in FIG. 32 is recorded (output) in the auxiliary storage device 102.

図32は、第二のルール要素一覧の例を示す図である。同図では、第一項のAfterルール要素に対して、変数名「R3」が割り当てられ(生成され)、第二項のAfterルール要素に対して、変数名「R4」が割り当てられた例が示されている。以下、第一項のAfterルール要素を「ルール要素R3」といい、第二項のAfterルール要素を「ルール要素R4」という。   FIG. 32 is a diagram illustrating an example of a second rule element list. In the figure, an example in which the variable name “R3” is assigned (generated) to the After rule element of the first term and the variable name “R4” is assigned to the After rule element of the second term. It is shown. Hereinafter, the after rule element of the first term is referred to as “rule element R3”, and the after rule element of the second term is referred to as “rule element R4”.

続いてステップS107では、以下の式構造(2)が生成される。   Subsequently, in step S107, the following formula structure (2) is generated.

R3||R4 ・・・(2)   R3 || R4 (2)

続いて、ルール記述rd2に関してプログラム生成部13によって図9において説明した処理が実行される。ステップS202では、ルール記述rd2に関するアスペクトコードの一部が生成される。   Subsequently, the process described in FIG. 9 is executed by the program generation unit 13 with respect to the rule description rd2. In step S202, a part of the aspect code related to the rule description rd2 is generated.

図33及び図34は、本実施の形態の第二のルール記述に関して生成される履歴記録プログラム及びルール検証プログラムのアスペクトコードの具体例を示す図である。   FIG. 33 and FIG. 34 are diagrams showing specific examples of aspect codes of the history recording program and the rule verification program generated with respect to the second rule description of the present embodiment.

同図には、ルール記述rd2に関して生成されるアスペクトコードac2の完成形が示されているが、ステップS202において生成される部分は、アスペクトの定義とステップs11である。すなわち、図12に示されるアスペクトコードac1と同様の内容である。なお、ステップs11は、図12のアスペクトコードac1におけるステップs11と同じである。すなわち、履歴を記録するためのデータ構造(図11参照)は、ルール要素のタイプに拘わらず同じである。   In the drawing, the completed form of the aspect code ac2 generated for the rule description rd2 is shown. The part generated in step S202 is the definition of the aspect and step s11. That is, the content is the same as the aspect code ac1 shown in FIG. Step s11 is the same as step s11 in the aspect code ac1 of FIG. That is, the data structure for recording the history (see FIG. 11) is the same regardless of the type of rule element.

続いて、図9のステップS205について説明する。ルール要素一覧rL2に含まれているルール要素は、いずれもAfterルール要素である。したがって、履歴記録プログラム生成部131は、履歴記録プログラムPrの生成処理として、Afterルール要素に関する履歴記録プログラムPrを生成するための処理を実行する。当該生成処理では、要するに次のような処理を実行する履歴記憶プログラムが生成される。以下の説明において、dメソッド、eメソッド、fメソッドとは、@After(d,e,f)における、dメソッド、eメソッド、又はfメソッドをいう。   Next, step S205 in FIG. 9 will be described. The rule elements included in the rule element list rL2 are all After rule elements. Therefore, the history recording program generation unit 131 executes a process for generating the history recording program Pr related to the After rule element as the generation process of the history recording program Pr. In short, in the generation process, a history storage program that executes the following process is generated. In the following description, d method, e method, and f method refer to d method, e method, and f method in @After (d, e, f).

(1)fメソッドの実行をフックし、当該Afterルール要素の評価値をtrueとする。   (1) The execution of the f method is hooked, and the evaluation value of the After rule element is set to true.

(2)eメソッドの実行をフックし、当該評価値をfalseとする。   (2) The execution of the e method is hooked and the evaluation value is set to false.

(3)dメソッドの実行をフックし、当該評価値をtrueとする。   (3) The execution of the d method is hooked, and the evaluation value is set to true.

以上により、eメソッドが実行された場合、その後にdメソッドが実行されなければ、当該Afterルール要素の評価値をfalseとする履歴記録プログラムPrが生成される。   As described above, when the e method is executed, if the d method is not executed after that, the history recording program Pr having the evaluation value of the After rule element as false is generated.

以下、斯かる履歴記録プログラムPrの生成処理の詳細について説明する。   The details of the process of generating the history recording program Pr will be described below.

図35は、Afterルール要素に関する履歴記録プログラム生成処理の処理手順の一例を説明するためのフローチャートである。以下の説明において、ルール記述rd2に関して、図9のステップS202において生成されているアスペクトコードを、「アスペクトコードac2」という。図35の開始時点におけるアスペクトコードac2の状態は、図12に示されるアスペクトコードac1と同じである。   FIG. 35 is a flowchart for explaining an example of the processing procedure of the history recording program generation processing regarding the After rule element. In the following description, regarding the rule description rd2, the aspect code generated in step S202 of FIG. 9 is referred to as “aspect code ac2”. The state of the aspect code ac2 at the start time in FIG. 35 is the same as the aspect code ac1 shown in FIG.

ステップS501において、履歴記録プログラム生成部131は、ポイントカット定義雛形t2(図14)を用いて、カレントルール要素(ルール要素R3)のfメソッドの呼び出しをフックするためのポイントカット定義pc21をアスペクトコードac2に追加生成する。具体的には、履歴記録プログラム生成部131は、ポイントカット定義雛形t2の<ポイントカット名>を「callR3−f」に置換し、<メソッド名>をカレントルール要素のfメソッドのメソッド名(「httpServlet.doPost()」)に置換して、当該fメソッドに対するポイントカット定義pc21(図33参照)を生成する。なお、本実施の形態では、Afterルール要素のfメソッドに対するポイントカット名は、「call<カレントルール要素の変数名>−f」という命名規則に従って生成される。   In step S501, the history recording program generation unit 131 uses the pointcut definition template t2 (FIG. 14) to generate the aspect code of the pointcut definition pc21 for hooking the call of the f method of the current rule element (rule element R3). Generate additional to ac2. Specifically, the history recording program generation unit 131 replaces <pointcut name> of the pointcut definition template t2 with “callR3-f”, and replaces <method name> with the method name of the f method of the current rule element (“ httpServlet.doPost () "), and a pointcut definition pc21 (see FIG. 33) for the f method is generated. In the present embodiment, the pointcut name for the f method of the After rule element is generated according to the naming rule “call <variable name of current rule element> -f”.

続いて、履歴記録プログラム生成部131は、ポイントカット定義pc21に対するbeforeアドバイス定義ad21(図33参照)を、beforeアドバイス定義雛形t5(図16)を用いて生成し、アスペクトコードac2に追加する(S502)。ステップS502では、beforeアドバイス定義ad21のうち、ステップs51〜s53が生成される。当該ステップ番号は、図16に対応する。   Subsequently, the history recording program generation unit 131 generates a before advice definition ad21 (see FIG. 33) for the pointcut definition pc21 using the before advice definition template t5 (FIG. 16), and adds it to the aspect code ac2 (S502). ). In step S502, steps s51 to s53 are generated in the before advice definition ad21. The step number corresponds to FIG.

続いて、履歴記録プログラム生成部131は、カレントルール要素の要件が満たされたことを、暫定的に履歴テーブル(変数currentTable)へ記録するためのステップをbeforeアドバイス定義ad21に対して追加する(S503)。当該ステップの追加には、履歴記録雛形t4(図17)が使用される。追加されたステップは、アドバイス定義ad21内(図33)におけるs41及び42に相当する。   Subsequently, the history recording program generation unit 131 adds a step for temporarily recording in the history table (variable currentTable) that the requirement of the current rule element is satisfied to the before advice definition ad21 (S503). ). The history recording template t4 (FIG. 17) is used to add the step. The added steps correspond to s41 and 42 in the advice definition ad21 (FIG. 33).

アドバイス定義ad21内のステップs41は、変数vaTableより取得された(s52)、又は新に生成された(s53)履歴テーブル(currentTable)に、カレントルール要素(ルール要素R3)の変数名(「R3」)に対してtrueを記録する。すなわち、fメソッドの実行前に、ルール要素R3の要件が満たされたことが、暫定的に当該履歴テーブルに記録される。ステップs42は、現在のスレッドの識別子に対応付けて当該履歴テーブルを変数varTableに格納する。その結果、現在のスレッドにおいて、ルール要素R3の要件が満たされたことが暫定的に変数varTableに記録されたことになる。   In step s41 in the advice definition ad21, the variable name (“R3”) of the current rule element (rule element R3) is added to the history table (currentTable) acquired from the variable vaTable (s52) or newly generated (s53). ) For true. That is, the fact that the requirement of the rule element R3 is satisfied is temporarily recorded in the history table before the f method is executed. In step s42, the history table is stored in the variable varTable in association with the identifier of the current thread. As a result, the fact that the requirement of the rule element R3 is satisfied in the current thread is temporarily recorded in the variable varTable.

続いて、履歴記録プログラム生成部131は、ポイントカット定義雛形t2(図14)を用いて、カレントルール要素(ルール要素R3)のeメソッドの呼び出しをフックするためのポイントカット定義pc22をアスペクトコードac2に追加生成する(S504)。具体的には、履歴記録プログラム生成部131は、ポイントカット定義雛形t2の<ポイントカット名>を「R3−pred」に置換し、<メソッド名>をカレントルール要素のeメソッドのメソッド名(「java.io.File.createTempFile()」)に置換して、当該eメソッドに対するポイントカット定義pc22(図33参照)を生成する。なお、本実施の形態で、Afterルール要素のeメソッドに対するポイントカット名は、「call<カレントルール要素の変数名>−pred」という命名規則に従って生成される。   Subsequently, the history recording program generation unit 131 uses the pointcut definition template t2 (FIG. 14) to generate the pointcut definition pc22 for hooking the call of the e method of the current rule element (rule element R3) with the aspect code ac2 (S504). Specifically, the history recording program generation unit 131 replaces <point cut name> of the point cut definition template t2 with “R3-pred”, and replaces <method name> with the method name of the e method of the current rule element (“ java.io.File.createTempFile () ”) to generate a pointcut definition pc22 (see FIG. 33) for the e method. In the present embodiment, the pointcut name for the e method of the After rule element is generated according to a naming rule “call <variable name of current rule element> -pred”.

続いて、履歴記録プログラム生成部131は、ポイントカット定義pc22に対するafterアドバイス定義ad22(図33参照)を、afterアドバイス定義雛形t3(図20)を用いて生成し、アスペクトコードac2に追加する(S505)。ステップS505では、afterアドバイス定義ad22のうち、ステップs31〜s33が生成される。当該ステップ番号は、図20に対応する。   Subsequently, the history recording program generation unit 131 generates an after advice definition ad22 (see FIG. 33) for the pointcut definition pc22 using the after advice definition template t3 (FIG. 20) and adds it to the aspect code ac2 (S505). ). In step S505, steps s31 to s33 are generated in the after advice definition ad22. The step number corresponds to FIG.

続いて、履歴記録プログラム生成部131は、カレントルール要素は満たされていないことを、暫定的に履歴テーブル(変数currentTable)へ記録するためのステップをafterアドバイス定義ad22に対して追加する(S506)。当該ステップの追加には、履歴記録雛形t4(図17)が使用される。追加されたステップは、アドバイス定義ad22内(図33)におけるs41及びs42に相当する。   Subsequently, the history recording program generation unit 131 adds a step for temporarily recording in the history table (variable currentTable) that the current rule element is not satisfied to the after advice definition ad22 (S506). . The history recording template t4 (FIG. 17) is used to add the step. The added steps correspond to s41 and s42 in the advice definition ad22 (FIG. 33).

アドバイス定義ad22内のステップs41は、変数vaTableより取得された(s32)、又は新に生成された(s33)履歴テーブル(currentTable)に、ルール要素R3の変数名(「R3」)に対してfalseを記録する。すなわち、eメソッドの実行後に、ルール要素R3の要件が満たされていないことが、暫定的に当該履歴テーブルに記録される。ステップs42は、現在のスレッドの識別子に対応付けて当該履歴テーブルを変数varTableに格納する。その結果、現在のスレッドにおいて、ルール要素R3の要件が満たされていないことが暫定的に変数varTableに記録されたことになる。   Step s41 in the advice definition ad22 is false for the variable name (“R3”) of the rule element R3 in the history table (currentTable) acquired from the variable vaTable (s32) or newly generated (s33). Record. That is, after the e method is executed, the fact that the requirement of the rule element R3 is not satisfied is temporarily recorded in the history table. In step s42, the history table is stored in the variable varTable in association with the identifier of the current thread. As a result, it is temporarily recorded in the variable varTable that the requirement of the rule element R3 is not satisfied in the current thread.

続くステップS507及びS508において、履歴記録プログラム生成部131は、dメソッドに関して、ステップS504及びS505において説明した処理を実行する。その結果、ポイントカット定義pc23及びafterアドバイス定義ad23のs31〜s33までが生成される。なお、本実施の形態では、Afterルール要素のdメソッドに対するポイントカット名は、「call<カレントルール要素の変数名>−succ」という命名規則に従って生成される。   In subsequent steps S507 and S508, the history recording program generation unit 131 executes the processing described in steps S504 and S505 for the d method. As a result, the point cut definition pc23 and the after advice definition ad23 from s31 to s33 are generated. In the present embodiment, the pointcut name for the d method of the After rule element is generated according to the naming rule “call <variable name of current rule element> -succ”.

続いて、履歴記録プログラム生成部131は、カレントルール要素は満たされていることを履歴テーブル(変数currentTable)へ記録するためのステップをafterアドバイス定義ad23に対して追加する(S509)。当該ステップの追加には、履歴記録雛形t4(図17)が使用される。追加されたステップは、アドバイス定義ad23内(図33)におけるs41及びs42に相当する。   Subsequently, the history recording program generation unit 131 adds a step for recording in the history table (variable currentTable) that the current rule element is satisfied to the after advice definition ad23 (S509). The history recording template t4 (FIG. 17) is used to add the step. The added steps correspond to s41 and s42 in the advice definition ad23 (FIG. 33).

以上で、カレントルール要素がAfterルール要素である場合の処理手順は終了する。図32に示されるように、本実施の形態の場合、図8のルール要素一覧rL2において2番目のルール要素(ルール要素R4)もAfterルール要素である。したがって、続けて、ルール要素R4に関して図13に示される処理手順が実行される。その結果、変数名R4に対してルール要素R4の評価値が現在のスレッドの履歴テーブルに記録され、当該履歴テーブルが変数varTableに格納される。なお、当該処理手順の内容の説明は、上記より自明であるため省略する。   This is the end of the processing procedure when the current rule element is an After rule element. As shown in FIG. 32, in the case of the present embodiment, the second rule element (rule element R4) in the rule element list rL2 of FIG. 8 is also an After rule element. Therefore, the processing procedure shown in FIG. 13 is subsequently executed for the rule element R4. As a result, the evaluation value of the rule element R4 is recorded in the history table of the current thread for the variable name R4, and the history table is stored in the variable varTable. The description of the processing procedure is omitted because it is self-evident from the above.

続いて、図5のステップS205の履歴記録プログラムPrの生成処理に関して、カレントルール要素がCallルール要素である場合について説明する。   Next, regarding the generation process of the history recording program Pr in step S205 of FIG. 5, a case where the current rule element is a Call rule element will be described.

図36は、Callルール要素に関する履歴記録プログラム生成処理の処理手順の一例を説明するためのフローチャートである。以下の説明において、gメソッド、hメソッドとは、@Call(g,h)におけるgメソッド又はhメソッドをいう。   FIG. 36 is a flowchart for explaining an example of the processing procedure of the history recording program generation processing regarding the Call rule element. In the following description, the g method and h method refer to the g method or h method in @Call (g, h).

ステップS601において、履歴記録プログラム生成部131は、ポイントカット定義雛形t2(図14)を用いて、カレントルール要素のhメソッドの呼び出しをフックするためのポイントカット定義を作成中のアスペクトコードに追加生成する。   In step S601, the history recording program generation unit 131 additionally generates a pointcut definition for hooking the call to the h method of the current rule element using the pointcut definition template t2 (FIG. 14). To do.

続いて、履歴記録プログラム生成部131は、ポイントカット定義に対するbeforeアドバイス定義を、beforeアドバイス定義雛形t5(図16)を用いて生成し、アスペクトコードに追加する(S602)。   Subsequently, the history recording program generation unit 131 generates a before advice definition for the pointcut definition using the before advice definition template t5 (FIG. 16) and adds it to the aspect code (S602).

続いて、履歴記録プログラム生成部131は、カレントルール要素の要件が満たされていないこと示す評価値を、暫定的に履歴テーブル(変数currentTable)へ記録するためのステップをbeforeアドバイス定義に対して追加する(S603)。   Subsequently, the history recording program generation unit 131 adds a step for temporarily recording an evaluation value indicating that the requirement of the current rule element is not satisfied to the history table (variable currentTable) to the before advice definition. (S603).

続いて、履歴記録プログラム生成部131は、ポイントカット定義雛形t2(図14)を用いて、カレントルール要素(ルール要素R3)のgメソッドの呼び出しをフックするためのポイントカット定義をアスペクトコードに追加生成する(S604)。   Subsequently, the history recording program generation unit 131 uses the pointcut definition template t2 (FIG. 14) to add a pointcut definition for hooking the g method call of the current rule element (rule element R3) to the aspect code. Generate (S604).

続いて、履歴記録プログラム生成部131は、ポイントカット定義に対するafterアドバイス定義を、afterアドバイス定義雛形t3(図20)を用いて生成し、アスペクトコードに追加する(S605)。   Subsequently, the history recording program generation unit 131 generates an after advice definition for the pointcut definition using the after advice definition template t3 (FIG. 20) and adds it to the aspect code (S605).

続いて、履歴記録プログラム生成部131は、カレントルール要素は満たされたことを示す評価値を履歴テーブル(変数currentTable)へ記録するためのステップをafterアドバイス定義に対して追加する(S606)。当該ステップの追加には、履歴記録雛形t4(図17)が使用される。   Subsequently, the history recording program generation unit 131 adds a step for recording an evaluation value indicating that the current rule element is satisfied in the history table (variable currentTable) to the after advice definition (S606). The history recording template t4 (FIG. 17) is used to add the step.

このように、Callルール要素については、hメソッドの実行の検知に応じて評価値がfalseとされ、gメソッドの実行の検知に応じて評価値がtrueとされる。したがって、当該評価値は、gメソッドが呼ばれたときに限ってtrueとなる。   Thus, for the Call rule element, the evaluation value is set to false in response to detection of execution of the h method, and the evaluation value is set to true in response to detection of execution of the g method. Therefore, the evaluation value is true only when the g method is called.

なお、型指定Callルール要素に関する履歴記録プログラムPrの生成処理は、例えば、図36のhメソッドがjメソッドに置換され、gメソッドがiメソッドに置換された処理が実行されたものであればよい。   The generation process of the history recording program Pr related to the type designation Call rule element may be performed, for example, as long as the h method in FIG. 36 is replaced with the j method and the g method is replaced with the i method. .

上述したように、本実施の形態の文脈違反検出支援装置10によれば、ルール記述を作成することにより、当該ルール記述に基づいて、履歴記録プログラムPr及びルール検証プログラムPcが自動生成される。当該履歴記録プログラムPr及びルール検証プログラムPcを、ライブラリを利用するアプリケーションに適用することにより、当該アプリケーションによる当該ライブラリの利用の適否を検査することができる。したがって、文脈違反検出支援装置10は、ライブラリの文脈上のルールに対する違反の検出を適切に支援することができる。   As described above, according to the context violation detection support apparatus 10 of the present embodiment, by creating a rule description, the history recording program Pr and the rule verification program Pc are automatically generated based on the rule description. By applying the history recording program Pr and the rule verification program Pc to an application that uses the library, it is possible to check whether or not the library is used by the application. Therefore, the context violation detection support apparatus 10 can appropriately support detection of violations of rules on the context of the library.

より詳しくは、履歴記録プログラムPrは、ライブラリのメソッドの呼び出し履歴を採取し、記録しておく。ルール検証プログラムPcは、履歴の内容が、ライブラリの文脈上のルールに適合しているか否かを判定する。したがって、デバッガのようにコールスタック(呼び出しの親子関係)だけではない、呼出の有無又は前後関係に関するルール違反の検出が可能になる。   More specifically, the history recording program Pr collects and records a library method call history. The rule verification program Pc determines whether or not the content of the history conforms to a rule in the library context. Therefore, it is possible to detect not only the call stack (call parent-child relationship) but also a rule violation related to the presence or absence of the call or the context as in the debugger.

また、本実施の形態では、メソッドの呼び出しに対して動的なフック機構が採用されて、アプリケーションによるライブラリの呼出が検知される。したがって、ライブラリ又はアプリケーションのソースコード等に修正を加える必要はない。その結果、例えば、ライブラリの作成後に、後付けでルールを作成し、ライブラリと一体化して提供することもできる。そうすることにより、検査ツールを別途提供されなくても、アプリケーションのテストの過程で、文脈上のルール違反を自動的に検出することができる。   In the present embodiment, a dynamic hook mechanism is employed for method invocation, and library invocation by an application is detected. Therefore, there is no need to modify the library or application source code. As a result, for example, after the library is created, a rule can be created later and can be provided integrally with the library. By doing so, it is possible to automatically detect contextual rule violations in the course of application testing without providing a separate inspection tool.

以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。   As mentioned above, although the Example of this invention was explained in full detail, this invention is not limited to such specific embodiment, In the range of the summary of this invention described in the claim, various deformation | transformation・ Change is possible.

以上の説明に関し、更に以下の項を開示する。
(付記1)
記憶手段が記憶する、メソッドの集合に関する文脈上の規則情報を、前記記憶手段から読み出して解析する規則解析手順と、
前記メソッドの集合を利用するプログラムによる前記規則情報に係る前記メソッドの実行の検知に応じて該実行の履歴を記録する履歴記録プログラムを生成する履歴記憶プログラム生成手順と、
前記履歴を前記規則情報と照合して、前記プログラムによる前記メソッドの利用が前記規則情報を満たしているか否かを判定する検証プログラムを生成するルール検証プログラム生成手順とをコンピュータが実行する文脈違反検出支援方法。
(付記2)
前記規則情報は、前記メソッドの呼び出しの要又は前記メソッドの呼び出し順に関する要件を規定するルール要素と、複数の前記ルール要素間の論理関係とを含み、
前記履歴記憶プログラム生成手順は、前記ルール要素に係る前記メソッドの実行の検知に応じて該実行の履歴を記録し、前記履歴に基づいて前記ルール要素に規定された要件が満たされているか否かを判定し、該判定結果を記録する前記履歴記録プログラムを生成し、
前記ルール検証プログラム生成手順は、該判定結果を前記論理関係に当てはめて、前記プログラムによる前記メソッドの呼び出しが前記規則情報を満たしているか否かを判定する前記検証プログラムを生成する付記1記載の文脈違反検出支援方法。
(付記3)
前記ルール要素は、cメソッド内において、bメソッドが実行される場合はbメソッドの実行前にaメソッドが実行されなければならないことを規定し、
前記履歴記憶プログラム生成手順は、cメソッドの実行の検知に応じ、aメソッドが呼び出されていないことを記録し、aメソッドの実行の検知に応じ、aメソッドが実行されたことを記録し、bメソッドの実行の検知に応じ、aメソッドが実行されたか否かに基づいて当該ルール要素に規定された要件が満たされたか否かを判定し、該判定結果を記録する前記履歴記録プログラムを生成する付記2記載の文脈違反検出支援方法。
(付記4)
前記ルール要素は、fメソッド内において、eメソッドが実行される場合はeメソッドの実行後にdメソッドが実行されなければならないことを規定し、
前記履歴記憶プログラム生成手順は、fメソッドの実行の検知に応じ、当該ルール要素に規定された要件が満たされていることを記録し、eメソッドの実行の検知に応じ、当該要件が満たされていないことを記録し、dメソッドの実行の検知に応じ、当該要件が満たされていることを記録する前記履歴記録プログラムを生成する付記2記載の文脈違反検出支援方法。
(付記5)
前記ルール要素は、hメソッド内において、gメソッドが実行されなければならないことを規定し、
前記履歴記憶プログラム生成手順は、hメソッドの実行の検知に応じ、当該ルール要素に規定された要件が満たされていないことを記録し、gメソッドの実行の検知に応じ、当該要件が満たされていることを記録する前記履歴記録プログラムを生成する付記2記載の文脈違反検出支援方法。
(付記6)
記憶手段が記憶する、メソッドの集合に関する文脈上の規則情報を、前記記憶手段から読み出して解析する規則解析手段と、
前記メソッドの集合を利用するプログラムによる前記規則情報に係る前記メソッドの実行の検知に応じて該実行の履歴を記録する履歴記録プログラムを生成する履歴記憶プログラム生成手段と、
前記履歴を前記規則情報と照合して、前記プログラムによる前記メソッドの利用が前記規則情報を満たしているか否かを判定する検証プログラムを生成するルール検証プログラム生成手段とを有する文脈違反検出支援装置。
(付記7)
前記規則情報は、前記メソッドの呼び出しの要又は前記メソッドの呼び出し順に関する要件を規定するルール要素と、複数の前記ルール要素間の論理関係とを含み、
前記履歴記憶プログラム生成手段は、前記ルール要素に係る前記メソッドの実行の検知に応じて該実行の履歴を記録し、前記履歴に基づいて前記ルール要素に規定された要件が満たされているか否かを判定し、該判定結果を記録する前記履歴記録プログラムを生成し、
前記ルール検証プログラム生成手段は、該判定結果を前記論理関係に当てはめて、前記プログラムによる前記メソッドの呼び出しが前記規則情報を満たしているか否かを判定する前記検証プログラムを生成する付記6記載の文脈違反検出支援装置。
(付記8)
前記ルール要素は、cメソッド内において、bメソッドが実行される場合はbメソッドの実行前にaメソッドが実行されなければならないことを規定し、
前記履歴記憶プログラム生成手段は、cメソッドの実行の検知に応じ、aメソッドが呼び出されていないことを記録し、aメソッドの実行の検知に応じ、aメソッドが実行されたことを記録し、bメソッドの実行の検知に応じ、aメソッドが実行されたか否かに基づいて当該ルール要素に規定された要件が満たされたか否かを判定し、該判定結果を記録する前記履歴記録プログラムを生成する付記7記載の文脈違反検出支援装置。
(付記9)
前記ルール要素は、fメソッド内において、eメソッドが実行される場合はeメソッドの実行後にdメソッドが実行されなければならないことを規定し、
前記履歴記憶プログラム生成手段は、fメソッドの実行の検知に応じ、当該ルール要素に規定された要件が満たされていることを記録し、eメソッドの実行の検知に応じ、当該要件が満たされていないことを記録し、dメソッドの実行の検知に応じ、当該要件が満たされていることを記録する前記履歴記録プログラムを生成する付記7記載の文脈違反検出支援装置。
(付記10)
前記ルール要素は、hメソッド内において、gメソッドが実行されなければならないことを規定し、
前記履歴記憶プログラム生成手段は、hメソッドの実行の検知に応じ、当該ルール要素に規定された要件が満たされていないことを記録し、gメソッドの実行の検知に応じ、当該要件が満たされていることを記録する前記履歴記録プログラムを生成する付記7記載の文脈違反検出支援装置。
(付記11)
記憶手段が記憶する、メソッドの集合に関する文脈上の規則情報を、前記記憶手段から読み出して解析する規則解析手順と、
前記メソッドの集合を利用するプログラムによる前記規則情報に係る前記メソッドの実行の検知に応じて該実行の履歴を記録する履歴記録プログラムを生成する履歴記憶プログラム生成手順と、
前記履歴を前記規則情報と照合して、前記プログラムによる前記メソッドの利用が前記規則情報を満たしているか否かを判定する検証プログラムを生成するルール検証プログラム生成手順とをコンピュータに実行させる文脈違反検出支援プログラム。
(付記12)
前記規則情報は、前記メソッドの呼び出しの要又は前記メソッドの呼び出し順に関する要件を規定するルール要素と、複数の前記ルール要素間の論理関係とを含み、
前記履歴記憶プログラム生成手順は、前記ルール要素に係る前記メソッドの実行の検知に応じて該実行の履歴を記録し、前記履歴に基づいて前記ルール要素に規定された要件が満たされているか否かを判定し、該判定結果を記録する前記履歴記録プログラムを生成し、
前記ルール検証プログラム生成手順は、該判定結果を前記論理関係に当てはめて、前記プログラムによる前記メソッドの呼び出しが前記規則情報を満たしているか否かを判定する前記検証プログラムを生成する付記11記載の文脈違反検出支援プログラム。
(付記13)
前記ルール要素は、cメソッド内において、bメソッドが実行される場合はbメソッドの実行前にaメソッドが実行されなければならないことを規定し、
前記履歴記憶プログラム生成手順は、cメソッドの実行の検知に応じ、aメソッドが呼び出されていないことを記録し、aメソッドの実行の検知に応じ、aメソッドが実行されたことを記録し、bメソッドの実行の検知に応じ、aメソッドが実行されたか否かに基づいて当該ルール要素に規定された要件が満たされたか否かを判定し、該判定結果を記録する前記履歴記録プログラムを生成する付記12記載の文脈違反検出支援プログラム。
(付記14)
前記ルール要素は、fメソッド内において、eメソッドが実行される場合はeメソッドの実行後にdメソッドが実行されなければならないことを規定し、
前記履歴記憶プログラム生成手順は、fメソッドの実行の検知に応じ、当該ルール要素に規定された要件が満たされていることを記録し、eメソッドの実行の検知に応じ、当該要件が満たされていないことを記録し、dメソッドの実行の検知に応じ、当該要件が満たされていることを記録する前記履歴記録プログラムを生成する付記12記載の文脈違反検出支援プログラム。
(付記15)
前記ルール要素は、hメソッド内において、gメソッドが実行されなければならないことを規定し、
前記履歴記憶プログラム生成手順は、hメソッドの実行の検知に応じ、当該ルール要素に規定された要件が満たされていないことを記録し、gメソッドの実行の検知に応じ、当該要件が満たされていることを記録する前記履歴記録プログラムを生成する付記12記載の文脈違反検出支援プログラム。
Regarding the above description, the following items are further disclosed.
(Appendix 1)
A rule analysis procedure for reading out and analyzing contextual rule information on a set of methods stored in the storage means from the storage means;
A history storage program generating procedure for generating a history recording program for recording a history of the execution in response to detection of execution of the method related to the rule information by a program using the set of methods;
Context violation detection in which a computer executes a rule verification program generation procedure for generating a verification program for checking whether or not use of the method by the program satisfies the rule information by comparing the history with the rule information Support method.
(Appendix 2)
The rule information includes rule elements that define requirements for calling the method or requirements for the calling order of the methods, and a logical relationship between the plurality of rule elements,
The history storage program generation procedure records the execution history in response to detection of the execution of the method relating to the rule element, and whether or not the requirements stipulated in the rule element are satisfied based on the history And generating the history recording program for recording the determination result,
The context according to claim 1, wherein the rule verification program generation procedure generates the verification program by applying the determination result to the logical relationship and determining whether a call to the method by the program satisfies the rule information. Violation detection support method.
(Appendix 3)
The rule element specifies that in the c method, if the b method is executed, the a method must be executed before the b method is executed.
The history storage program generation procedure records that the a method has not been called in response to detection of execution of the c method, records that the a method has been executed in response to detection of execution of the a method, and b In response to detecting the execution of the method, it is determined whether or not the requirement defined in the rule element is satisfied based on whether or not the method a is executed, and the history recording program for recording the determination result is generated. The context violation detection support method according to attachment 2.
(Appendix 4)
The rule element specifies that in the f method, if the e method is executed, the d method must be executed after the execution of the e method.
The history storage program generation procedure records that the requirement specified in the rule element is satisfied according to the detection of the execution of the f method, and the requirement is satisfied according to the detection of the execution of the e method. The context violation detection support method according to supplementary note 2, wherein the history recording program is recorded to record that the requirement is satisfied in response to detection of execution of the d method.
(Appendix 5)
The rule element specifies that the g method must be executed within the h method,
The history storage program generation procedure records that the requirement defined in the rule element is not satisfied according to the detection of execution of the h method, and the requirement is satisfied according to detection of the execution of the g method. 3. The context violation detection support method according to appendix 2, wherein the history recording program for recording the fact is recorded.
(Appendix 6)
Rule analysis means for reading out and analyzing contextual rule information about a set of methods stored in the storage means from the storage means;
A history storage program generating means for generating a history recording program for recording a history of the execution in response to detection of the execution of the method related to the rule information by a program using the method set;
A context violation detection support apparatus comprising rule verification program generation means for generating a verification program for checking whether or not use of the method by the program satisfies the rule information by comparing the history with the rule information.
(Appendix 7)
The rule information includes rule elements that define requirements for calling the method or requirements for the calling order of the methods, and a logical relationship between the plurality of rule elements,
The history storage program generation means records the execution history in response to detection of the execution of the method relating to the rule element, and whether or not the requirements stipulated in the rule element are satisfied based on the history And generating the history recording program for recording the determination result,
The context according to appendix 6, wherein the rule verification program generation unit generates the verification program by applying the determination result to the logical relationship and determining whether a call to the method by the program satisfies the rule information. Violation detection support device.
(Appendix 8)
The rule element specifies that in the c method, if the b method is executed, the a method must be executed before the b method is executed.
The history storage program generation unit records that the a method is not called in response to detection of execution of the c method, records that the a method has been executed in response to detection of execution of the a method, and b In response to detecting the execution of the method, it is determined whether or not the requirement defined in the rule element is satisfied based on whether or not the method a is executed, and the history recording program for recording the determination result is generated. The context violation detection support apparatus according to appendix 7.
(Appendix 9)
The rule element specifies that in the f method, if the e method is executed, the d method must be executed after the execution of the e method.
The history storage program generation unit records that the requirement defined in the rule element is satisfied according to the detection of the execution of the f method, and the requirement is satisfied according to the detection of the execution of the e method. The context violation detection support device according to appendix 7, wherein the history recording program is recorded to record that the requirement is satisfied in response to detection of execution of the d method.
(Appendix 10)
The rule element specifies that the g method must be executed within the h method,
The history storage program generation unit records that the requirement defined in the rule element is not satisfied in response to detection of execution of the h method, and the requirement is satisfied in response to detection of execution of the g method. The context violation detection support device according to appendix 7, which generates the history recording program for recording the fact that there is an event.
(Appendix 11)
A rule analysis procedure for reading out and analyzing contextual rule information on a set of methods stored in the storage means from the storage means;
A history storage program generating procedure for generating a history recording program for recording a history of the execution in response to detection of execution of the method related to the rule information by a program using the set of methods;
Context violation detection for causing a computer to execute a rule verification program generation procedure for generating a verification program for checking whether or not use of the method by the program satisfies the rule information by comparing the history with the rule information Support program.
(Appendix 12)
The rule information includes rule elements that define requirements for calling the method or requirements for the calling order of the methods, and a logical relationship between the plurality of rule elements,
The history storage program generation procedure records the execution history in response to detection of the execution of the method relating to the rule element, and whether or not the requirements stipulated in the rule element are satisfied based on the history And generating the history recording program for recording the determination result,
The context according to appendix 11, wherein the rule verification program generation procedure generates the verification program by applying the determination result to the logical relationship and determining whether a call to the method by the program satisfies the rule information. Violation detection support program.
(Appendix 13)
The rule element specifies that in the c method, if the b method is executed, the a method must be executed before the b method is executed.
The history storage program generation procedure records that the a method has not been called in response to detection of execution of the c method, records that the a method has been executed in response to detection of execution of the a method, and b In response to detecting the execution of the method, it is determined whether or not the requirement defined in the rule element is satisfied based on whether or not the method a is executed, and the history recording program for recording the determination result is generated. The context violation detection support program according to attachment 12.
(Appendix 14)
The rule element specifies that in the f method, if the e method is executed, the d method must be executed after the execution of the e method.
The history storage program generation procedure records that the requirement specified in the rule element is satisfied according to the detection of the execution of the f method, and the requirement is satisfied according to the detection of the execution of the e method. 13. The context violation detection support program according to appendix 12, wherein the history recording program is recorded to record that the requirement is satisfied in response to detection of execution of the d method.
(Appendix 15)
The rule element specifies that the g method must be executed within the h method,
The history storage program generation procedure records that the requirement defined in the rule element is not satisfied according to the detection of execution of the h method, and the requirement is satisfied according to detection of the execution of the g method. 13. The context violation detection support program according to appendix 12, which generates the history recording program for recording the presence of information.

10 文脈違反検出支援装置
11 ルール記述記憶部
12 ルール解析部
13 プログラム生成部
14 及び雛形データ記憶部
100 ドライブ装置
101 記録媒体
102 補助記憶装置
103 メモリ装置
104 CPU
105 インタフェース装置
106 表示装置
107 入力装置
131 履歴記録プログラム生成部
132 ルール検証プログラム生成部
B バス
Pr 履歴記録プログラム
Pc ルール検証プログラム
DESCRIPTION OF SYMBOLS 10 Context violation detection support apparatus 11 Rule description storage part 12 Rule analysis part 13 Program generation part 14 and model data storage part 100 Drive apparatus 101 Recording medium 102 Auxiliary storage apparatus 103 Memory apparatus 104 CPU
105 Interface Device 106 Display Device 107 Input Device 131 History Recording Program Generation Unit 132 Rule Verification Program Generation Unit B Bus Pr History Recording Program Pc Rule Verification Program

Claims (7)

記憶手段が記憶する、メソッドの集合に関する文脈上の規則情報を、前記記憶手段から読み出して解析する規則解析手順と、
前記メソッドの集合を利用するプログラムによる前記規則情報に係る前記メソッドの実行の検知に応じて該実行の履歴を記録する履歴記録プログラムを生成する履歴記憶プログラム生成手順と、
前記履歴を前記規則情報と照合して、前記プログラムによる前記メソッドの利用が前記規則情報を満たしているか否かを判定する検証プログラムを生成するルール検証プログラム生成手順とをコンピュータが実行する文脈違反検出支援方法。
A rule analysis procedure for reading out and analyzing contextual rule information on a set of methods stored in the storage means from the storage means;
A history storage program generating procedure for generating a history recording program for recording a history of the execution in response to detection of execution of the method related to the rule information by a program using the set of methods;
Context violation detection in which a computer executes a rule verification program generation procedure for generating a verification program for checking whether or not use of the method by the program satisfies the rule information by comparing the history with the rule information Support method.
前記規則情報は、前記メソッドの呼び出しの要又は前記メソッドの呼び出し順に関する要件を規定するルール要素と、複数の前記ルール要素間の論理関係とを含み、
前記履歴記憶プログラム生成手順は、前記ルール要素に係る前記メソッドの実行の検知に応じて該実行の履歴を記録し、前記履歴に基づいて前記ルール要素に規定された要件が満たされているか否かを判定し、該判定結果を記録する前記履歴記録プログラムを生成し、
前記ルール検証プログラム生成手順は、該判定結果を前記論理関係に当てはめて、前記プログラムによる前記メソッドの呼び出しが前記規則情報を満たしているか否かを判定する前記検証プログラムを生成する請求項1記載の文脈違反検出支援方法。
The rule information includes rule elements that define requirements for calling the method or requirements for the calling order of the methods, and a logical relationship between the plurality of rule elements,
The history storage program generation procedure records the execution history in response to detection of the execution of the method relating to the rule element, and whether or not the requirements stipulated in the rule element are satisfied based on the history And generating the history recording program for recording the determination result,
The rule verification program generation procedure generates the verification program by applying the determination result to the logical relationship and determining whether a call to the method by the program satisfies the rule information. Context violation detection support method.
前記ルール要素は、cメソッド内において、bメソッドが実行される場合はbメソッドの実行前にaメソッドが実行されなければならないことを規定し、
前記履歴記憶プログラム生成手順は、cメソッドの実行の検知に応じ、aメソッドが呼び出されていないことを記録し、aメソッドの実行の検知に応じ、aメソッドが実行されたことを記録し、bメソッドの実行の検知に応じ、aメソッドが実行されたか否かに基づいて当該ルール要素に規定された要件が満たされたか否かを判定し、該判定結果を記録する前記履歴記録プログラムを生成する請求項2記載の文脈違反検出支援方法。
The rule element specifies that in the c method, if the b method is executed, the a method must be executed before the b method is executed.
The history storage program generation procedure records that the a method has not been called in response to detection of execution of the c method, records that the a method has been executed in response to detection of execution of the a method, and b In response to detecting the execution of the method, it is determined whether or not the requirement defined in the rule element is satisfied based on whether or not the method a is executed, and the history recording program for recording the determination result is generated. The context violation detection support method according to claim 2.
前記ルール要素は、fメソッド内において、eメソッドが実行される場合はeメソッドの実行後にdメソッドが実行されなければならないことを規定し、
前記履歴記憶プログラム生成手順は、fメソッドの実行の検知に応じ、当該ルール要素に規定された要件が満たされていることを記録し、eメソッドの実行の検知に応じ、当該要件が満たされていないことを記録し、dメソッドの実行の検知に応じ、当該要件が満たされていることを記録する前記履歴記録プログラムを生成する請求項2記載の文脈違反検出支援方法。
The rule element specifies that in the f method, if the e method is executed, the d method must be executed after the execution of the e method.
The history storage program generation procedure records that the requirement specified in the rule element is satisfied according to the detection of the execution of the f method, and the requirement is satisfied according to the detection of the execution of the e method. 3. The context violation detection support method according to claim 2, wherein the history recording program is recorded to record that the requirement is satisfied in response to detection of execution of the d method.
前記ルール要素は、hメソッド内において、gメソッドが実行されなければならないことを規定し、
前記履歴記憶プログラム生成手順は、hメソッドの実行の検知に応じ、当該ルール要素に規定された要件が満たされていないことを記録し、gメソッドの実行の検知に応じ、当該要件が満たされていることを記録する前記履歴記録プログラムを生成する請求項2記載の文脈違反検出支援方法。
The rule element specifies that the g method must be executed within the h method,
The history storage program generation procedure records that the requirement defined in the rule element is not satisfied according to the detection of execution of the h method, and the requirement is satisfied according to detection of the execution of the g method. The context violation detection support method according to claim 2, wherein the history recording program for recording the fact is recorded.
記憶手段が記憶する、メソッドの集合に関する文脈上の規則情報を、前記記憶手段から読み出して解析する規則解析手段と、
前記メソッドの集合を利用するプログラムによる前記規則情報に係る前記メソッドの実行の検知に応じて該実行の履歴を記録する履歴記録プログラムを生成する履歴記憶プログラム生成手段と、
前記履歴を前記規則情報と照合して、前記プログラムによる前記メソッドの利用が前記規則情報を満たしているか否かを判定する検証プログラムを生成するルール検証プログラム生成手段とを有する文脈違反検出支援装置。
Rule analysis means for reading out and analyzing contextual rule information about a set of methods stored in the storage means from the storage means;
A history storage program generating means for generating a history recording program for recording a history of the execution in response to detection of the execution of the method related to the rule information by a program using the method set;
A context violation detection support apparatus comprising rule verification program generation means for generating a verification program for checking whether or not use of the method by the program satisfies the rule information by comparing the history with the rule information.
記憶手段が記憶する、メソッドの集合に関する文脈上の規則情報を、前記記憶手段から読み出して解析する規則解析手順と、
前記メソッドの集合を利用するプログラムによる前記規則情報に係る前記メソッドの実行の検知に応じて該実行の履歴を記録する履歴記録プログラムを生成する履歴記憶プログラム生成手順と、
前記履歴を前記規則情報と照合して、前記プログラムによる前記メソッドの利用が前記規則情報を満たしているか否かを判定する検証プログラムを生成するルール検証プログラム生成手順とをコンピュータに実行させる文脈違反検出支援プログラム。
A rule analysis procedure for reading out and analyzing contextual rule information on a set of methods stored in the storage means from the storage means;
A history storage program generating procedure for generating a history recording program for recording a history of the execution in response to detection of execution of the method related to the rule information by a program using the set of methods;
Context violation detection for causing a computer to execute a rule verification program generation procedure for generating a verification program for checking whether or not use of the method by the program satisfies the rule information by comparing the history with the rule information Support program.
JP2010170889A 2010-07-29 2010-07-29 Context Violation Detection Support Method, Context Violation Detection Support Device, and Context Violation Detection Support Program Expired - Fee Related JP5556480B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010170889A JP5556480B2 (en) 2010-07-29 2010-07-29 Context Violation Detection Support Method, Context Violation Detection Support Device, and Context Violation Detection Support Program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010170889A JP5556480B2 (en) 2010-07-29 2010-07-29 Context Violation Detection Support Method, Context Violation Detection Support Device, and Context Violation Detection Support Program

Publications (2)

Publication Number Publication Date
JP2012032947A true JP2012032947A (en) 2012-02-16
JP5556480B2 JP5556480B2 (en) 2014-07-23

Family

ID=45846297

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010170889A Expired - Fee Related JP5556480B2 (en) 2010-07-29 2010-07-29 Context Violation Detection Support Method, Context Violation Detection Support Device, and Context Violation Detection Support Program

Country Status (1)

Country Link
JP (1) JP5556480B2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015148856A (en) * 2014-02-05 2015-08-20 日本電気株式会社 Program processor, program processing method, and program processing program

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008056419A1 (en) * 2006-11-09 2008-05-15 Panasonic Corporation Software verifying device, and api interface evaluating method

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008056419A1 (en) * 2006-11-09 2008-05-15 Panasonic Corporation Software verifying device, and api interface evaluating method

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015148856A (en) * 2014-02-05 2015-08-20 日本電気株式会社 Program processor, program processing method, and program processing program

Also Published As

Publication number Publication date
JP5556480B2 (en) 2014-07-23

Similar Documents

Publication Publication Date Title
JP2022062060A (en) Tools and methods for real-time dataflow programming language
US20180011780A1 (en) Web application test script generation to test software functionality
Martin-Lopez et al. Specification and automated analysis of inter-parameter dependencies in web APIs
US20220269580A1 (en) Methods and systems for assessing functional validation of software components comparing source code and feature documentation
JP2015204065A (en) Test case generation device and test case generation method
US9715372B2 (en) Executable guidance experiences based on implicitly generated guidance models
CN115904989A (en) Interface testing method, device, equipment and readable storage medium
JP2010267266A (en) Test support device and test support method
JP2013030017A (en) Method, device, and program for generating test program
US8359579B2 (en) Monitoring dynamic aspect oriented applications at execution time
Grent et al. Automatically identifying parameter constraints in complex web APIs: A case study at adyen
JP5556480B2 (en) Context Violation Detection Support Method, Context Violation Detection Support Device, and Context Violation Detection Support Program
US12067377B2 (en) System and a method for automatic generation of smart contracts across blockchain platforms
Mayer et al. On the applicability of workflow management systems for the preservation of business processes
US8479152B2 (en) Representing non-functional requirements (NFRS) in unified modeling language (UML)
WO2011041246A1 (en) Systems and methods for analyzing and transforming an application from a source installation to a target installation
Wille et al. Identifying variability in object-oriented code using model-based code mining
Sanchez-Cid et al. Serenity pattern-based software development life-cycle
JP2013235508A (en) Object-oriented program generation device, method therefor, and program
US20120011079A1 (en) Deriving entity-centric solution models from industry reference process and data models
JP4983027B2 (en) Check program and check method
JP2012048329A (en) Object oriented program generating device, method therefor and program
Koskinen et al. Profile-based approach to support comprehension of software behavior
JP2005056183A (en) Rule checking system, device, method, and program
Bartusevics et al. An approach for development of reusable function library for automation of continuous processes

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130604

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140221

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140225

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140421

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140520

R150 Certificate of patent or registration of utility model

Ref document number: 5556480

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees