JP2012032947A - Support method, apparatus and program of detecting context violation - Google Patents
Support method, apparatus and program of detecting context violation Download PDFInfo
- 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
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
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.
ライブラリの文脈上の規則に従わないで作成されたプログラムであっても、外見的には正常に動作しているように見える場合がある。但し、セキュリティライブラリの場合は、本来の安全性が確保されないため、非常に危険である。しかしながら、このような規則に対する違反は、プログラムのバグを検出するための通常のテストにおいて検出するのは非常に困難である。 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.
以下、図面に基づいて本発明の実施の形態を説明する。図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
文脈違反検出支援装置10での処理を実現するプログラムは、CD−ROM等の記録媒体101によって提供される。プログラムを記録した記録媒体101がドライブ装置100にセットされると、プログラムが記録媒体101からドライブ装置100を介して補助記憶装置102にインストールされる。但し、プログラムのインストールは必ずしも記録媒体101より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置102は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
A program that realizes processing in the context violation
メモリ装置103は、プログラムの起動指示があった場合に、補助記憶装置102からプログラムを読み出して格納する。CPU104は、メモリ装置103に格納されたプログラムに従って文脈違反検出支援装置10に係る機能を実現する。インタフェース装置105は、ネットワークに接続するためのインタフェースとして用いられる。表示装置106はプログラムによるGUI(Graphical User Interface)等を表示する。入力装置107はキーボード及びマウス等であり、様々な操作指示を入力させるために用いられる。
The
図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
文脈違反検出支援装置10は、これら各部によって、例えば、或るライブラリを使用して開発されるアプリケーションにおける、当該ライブラリの文脈上のルール(規則)又は制約等(以下、「ルール」で統一する)に対する違反の検出を支援する。文脈上のルールとは、ライブラリに含まれる関数又はメソッドの呼び出しの有無や呼び出しの前後関係(呼び出し順)等に関するルールをいう。
The context violation
ルール記述記憶部11は、例えば、アプリケーションより利用されるライブラリについて、補助記憶装置102を用いてルール記述を記憶する。ルール記述とは、ライブラリの利用に関する文脈上のルールが所定の形式又は文法によって記述されたテキストデータをいう。本実施の形態において、ルール記述は、ルール要素がオペレータによって接続された式形式によって記述される。ルール要素とは、ルールの最小要素をいう。すなわち、ルール要素単体でも、一つのルール記述が成立しうる。オペレータは、ルール要素間の論理関係を示す記号をいう。
For example, the rule
図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
プログラム生成部13は、ルール解析部12による解析結果(ルール解析部12によって抽出されたルール記述の構成要素)に基づいて、ルール違反を検出するためのプログラムのソースコードを自動的に生成する。より詳しくは、プログラム生成部13は、履歴記録プログラム生成部131及びルール検証プログラム生成部132等を含む。履歴記録プログラム生成部131は、ルール違反を検出するためのプログラムの一部として履歴記録プログラムPrを生成する。ルール検証プログラム生成部132は、ルール違反を検出するためのプログラムの一部としてルール検証プログラムPcを生成する。
The
履歴記録プログラム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
以下、文脈違反検出支援装置10の処理手順について説明する。図5は、ルール解析部が実行する処理手順の一例を説明するためのフローチャートである。同図の処理は、例えば、ユーザによって入力される、処理の開始指示に応じて開始される。当該指示において、解析対象のルール記述の識別情報が指定される。なお、ルール記述の識別情報を、以下「ルール名」という。
Hereinafter, the processing procedure of the context violation
ステップS101において、ルール解析部12は、指定されたルール名に係るルール記述をルール記述記憶部11よりメモリ装置103に読み込む。すなわち、ルール記述は、ルール名に関連付けられてルール記述記憶部11に記憶されている。
In step S <b> 101, the
図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
続いて、ルール解析部12は、読み込んだルール記述の構造を解析する(S102)。具体的には、ルール記述内のルール要素とオペレータとが分解され、構造化される。すなわち、各ルール要素間の論理関係がルール解析部12によって認識される。なお、ルール記述が図7に示されるようにXML形式の場合、XMLパーサによってDOM(Document Object Model)形式に読み込まれることが、ステップS102でいうところの解析に相当する。したがって、ルール記述が構造化文書形式によって記述されている場合、ステップS101及びS102は、実質的に一つのステップとなりうる。
Subsequently, the
続いて、ルール解析部12は、必要に応じてルール記述の式を変形(又は変換)する(S103)。本実施の形態では、オペレータ「−>」を含む式に関して、オペレータ「!」及び「||」を用いて変形(又は変換)が行われる。具体的には、「A−>B」の構造を有する式は、「!A||B」に変形される。双方の式においてAとBとの論理関係は同じであるところ、「!」及び「||」のオペレータの方が、式の論理値(真偽値)の評価(式が示すルールが満たされているか否かの評価)をし易いからである。なお、ここでの「A」及び「B」は、一つのルール要素又は式を示す。ステップS103において、オペレータ「−>」は、全て解決(置換)される。
Subsequently, the
続いて、ルール解析部12は、ルール記述rd1の解析結果よりルール要素を抽出する(S104)。続いて、ルール解析部12は、抽出されたルール要素ごとに変数名を生成する(割り当てる)(S105)。変数名とは、ルール要素の論理値(真偽値)を記憶するための変数に対する識別名である。ルール要素間で一意性が保証されれば変数名の命名規則は所定のものに限定されない。続いて、ルール解析部12は、ルール要素と変数名との組の一覧を、ルール名に関連付けて補助記憶装置102に記録(出力)する(S106)。当該一覧を以下「ルール要素一覧」という。
Subsequently, the
図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
!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
続いて、プログラム生成部13の処理手順について説明する。図9は、プログラム生成部が実行する処理手順の一例を説明するためのフローチャートである。同図の処理は、例えば、ユーザによって入力される、処理の開始指示に応じて開始される。当該指示において、ルール名が指定される。
Subsequently, a processing procedure of the
ステップS201において、プログラム生成部13は、アスペクトの雛形(アスペクト雛形)を雛形データ記憶部14よりメモリ装置103に読み込む。
In step S <b> 201, the
図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
図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
続いて、履歴記録プログラム生成部131は、指定されたルール名に関連付けられているルール要素一覧rL1及び式構造を補助記憶装置102からメモリ装置103に読み込む(S203)。続いて、履歴記録プログラム生成部131は、読み込まれたルール要素一覧rL1の中で、未処理のルール要素を処理対象とする(S204)。未処理のルール要素とは、ステップS205の処理対象とされていないルール要素をいう。したがって、最初は、読み込まれた全てのルール要素一覧rL1に含まれる全てのルール要素が未処理のルール要素である。
Subsequently, the history recording
続いて、履歴記録プログラム生成部131は、処理対象のルール要素(以下、「カレントルール要素」という。)について、履歴記録プログラムPrの生成処理を実行する(S205)。履歴記録プログラムPrの生成処理においては、カレントルール要素について、履歴記録プログラムPrとしてのソースコードが、ステップS202において生成されたアスペクトコードac1に追加される。ステップS205は、読み込まれたルール要素一覧rL1に含まれる全てのルール要素について順番に実行される(S206)。
Subsequently, the history recording
続いて、ルール検証プログラム生成部132は、ルール検証プログラムPcの生成処理を実行する(S207)。ルール検証プログラムPcの生成処理においては、指定されたルール名に対応するルール記述に対するルール検証プログラムPcとしてのソースコードが、ステップS202において生成されたアスペクトコードac1に追加される。したがって、履歴記録プログラムPrとルール検証プログラムPcとは、ファイル単位としては(ソースコードの単位としては)、一つのソースコードとして生成される。
Subsequently, the rule verification
続いて、ステップ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
まず、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
図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
図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
アドバイスとは、アスペクト指向プログラミング言語において、ジョイントポイントに対して実行される処理をいう。アドバイスのうち、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
続いて、履歴記録プログラム生成部131は、カレントルール要素の要件が満たされたことを暫定的に履歴テーブル(変数currentTable)へ記録するためのステップをbeforeアドバイス定義に対して追加する(S303)。具体的には、履歴記録プログラム生成部131は、履歴記録雛形を雛形データ記憶部14より取得し、履歴記録雛形に基づいて、履歴テーブルへの記録処理に関するステップを追加する。
Subsequently, the history recording
図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
続いて、履歴記録プログラム生成部131は、aメソッドは実行されていないことを履歴テーブル(変数currentTable)へ記録するためのステップをbeforeアドバイス定義に対して追加する(S304)。具体的には、履歴記録プログラム生成部131は、履歴記録雛形t4の<キー名>を、カレントルール要素(ルール要素R1)のaメソッドに対する変数名によって置換し、<値>をfalseによって置換した結果をbeforeアドバイス定義に追加する。当該aメソッドに対する変数名は、本実施の形態において、「<カレントルール要素の変数名>−pred」という命名規則に従って生成される。したがって、ルール要素R1のaメソッドに関して、<キー名>は、「R1−pred」という値によって置換される。
Subsequently, the history recording
ステップ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
図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
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
続いて、履歴記録プログラム生成部131は、aメソッドが呼び出されたことを履歴テーブル(変数currentTable)へ記録するためのステップを、ステップS306において生成されたafterアドバイス定義に対して追加する(S307)。具体的には、履歴記録プログラム生成部131は、履歴記録雛形t4(図17)を雛形データ記憶部14より取得し、履歴記録雛形t4に基づいて、履歴テーブルへの記録処理に関するステップを追加する。すなわち、履歴記録プログラム生成部131は、履歴記録雛形t4の<キー名>を、カレントルール要素(ルール要素R1)のaメソッドに対する変数名(R1−pred)によって置換し、<値>をtrueによって置換した結果をafterアドバイス定義に追加する。
Subsequently, the history recording
ステップ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
図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
続いて、プログラム生成部13は、bメソッドより前に呼ばれているべきaメソッドに関する呼び出し履歴(実行履歴)を参照するためのステップを、ステップS309において生成されたafterアドバイス定義に追加する(S310)。当該ステップは、雛形データ記憶部14より取得される履歴参照雛形に基づいて生成される。
Subsequently, the
図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
続いて、プログラム生成部13は、履歴記録雛形t4(図17)を用いて、カレントルール要素の評価値を変数varTableに記録するためのステップを、ステップS309において生成されたafterアドバイス定義に追加する(S311)。具体的には、履歴記録雛形t4の<キー名>がカレントルール要素の変数名(「R1」)によって置換され、<値>が、履歴記録雛形t4(図23)の<参照用変数名>の置換先と同じ変数名(「r1」)に置換された結果が、当該afterアドバイスに追加される。
Subsequently, the
ステップ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
図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
続いて、ルール検証プログラム生成部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
式構造(!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
図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
図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
図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
図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
(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
続いて、履歴記録プログラム生成部131は、ポイントカット定義pc21に対するbeforeアドバイス定義ad21(図33参照)を、beforeアドバイス定義雛形t5(図16)を用いて生成し、アスペクトコードac2に追加する(S502)。ステップS502では、beforeアドバイス定義ad21のうち、ステップs51〜s53が生成される。当該ステップ番号は、図16に対応する。
Subsequently, the history recording
続いて、履歴記録プログラム生成部131は、カレントルール要素の要件が満たされたことを、暫定的に履歴テーブル(変数currentTable)へ記録するためのステップをbeforeアドバイス定義ad21に対して追加する(S503)。当該ステップの追加には、履歴記録雛形t4(図17)が使用される。追加されたステップは、アドバイス定義ad21内(図33)におけるs41及び42に相当する。
Subsequently, the history recording
アドバイス定義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
続いて、履歴記録プログラム生成部131は、ポイントカット定義pc22に対するafterアドバイス定義ad22(図33参照)を、afterアドバイス定義雛形t3(図20)を用いて生成し、アスペクトコードac2に追加する(S505)。ステップS505では、afterアドバイス定義ad22のうち、ステップs31〜s33が生成される。当該ステップ番号は、図20に対応する。
Subsequently, the history recording
続いて、履歴記録プログラム生成部131は、カレントルール要素は満たされていないことを、暫定的に履歴テーブル(変数currentTable)へ記録するためのステップをafterアドバイス定義ad22に対して追加する(S506)。当該ステップの追加には、履歴記録雛形t4(図17)が使用される。追加されたステップは、アドバイス定義ad22内(図33)におけるs41及びs42に相当する。
Subsequently, the history recording
アドバイス定義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
続いて、履歴記録プログラム生成部131は、カレントルール要素は満たされていることを履歴テーブル(変数currentTable)へ記録するためのステップをafterアドバイス定義ad23に対して追加する(S509)。当該ステップの追加には、履歴記録雛形t4(図17)が使用される。追加されたステップは、アドバイス定義ad23内(図33)におけるs41及びs42に相当する。
Subsequently, the history recording
以上で、カレントルール要素が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
続いて、履歴記録プログラム生成部131は、ポイントカット定義に対するbeforeアドバイス定義を、beforeアドバイス定義雛形t5(図16)を用いて生成し、アスペクトコードに追加する(S602)。
Subsequently, the history recording
続いて、履歴記録プログラム生成部131は、カレントルール要素の要件が満たされていないこと示す評価値を、暫定的に履歴テーブル(変数currentTable)へ記録するためのステップをbeforeアドバイス定義に対して追加する(S603)。
Subsequently, the history recording
続いて、履歴記録プログラム生成部131は、ポイントカット定義雛形t2(図14)を用いて、カレントルール要素(ルール要素R3)のgメソッドの呼び出しをフックするためのポイントカット定義をアスペクトコードに追加生成する(S604)。
Subsequently, the history recording
続いて、履歴記録プログラム生成部131は、ポイントカット定義に対するafterアドバイス定義を、afterアドバイス定義雛形t3(図20)を用いて生成し、アスペクトコードに追加する(S605)。
Subsequently, the history recording
続いて、履歴記録プログラム生成部131は、カレントルール要素は満たされたことを示す評価値を履歴テーブル(変数currentTable)へ記録するためのステップをafterアドバイス定義に対して追加する(S606)。当該ステップの追加には、履歴記録雛形t4(図17)が使用される。
Subsequently, the history recording
このように、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
より詳しくは、履歴記録プログラム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
(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
(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
(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 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 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 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 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 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 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
(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 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
10 文脈違反検出支援装置
11 ルール記述記憶部
12 ルール解析部
13 プログラム生成部
14 及び雛形データ記憶部
100 ドライブ装置
101 記録媒体
102 補助記憶装置
103 メモリ装置
104 CPU
105 インタフェース装置
106 表示装置
107 入力装置
131 履歴記録プログラム生成部
132 ルール検証プログラム生成部
B バス
Pr 履歴記録プログラム
Pc ルール検証プログラム
DESCRIPTION OF
105
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メソッドの実行の検知に応じ、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メソッドの実行の検知に応じ、当該要件が満たされていないことを記録し、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メソッドの実行の検知に応じ、当該要件が満たされていることを記録する前記履歴記録プログラムを生成する請求項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.
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)
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)
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 |
-
2010
- 2010-07-29 JP JP2010170889A patent/JP5556480B2/en not_active Expired - Fee Related
Patent Citations (1)
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)
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 |