JP2018169693A - Information processing device, information processing method, and information processing program - Google Patents
Information processing device, information processing method, and information processing program Download PDFInfo
- Publication number
- JP2018169693A JP2018169693A JP2017065013A JP2017065013A JP2018169693A JP 2018169693 A JP2018169693 A JP 2018169693A JP 2017065013 A JP2017065013 A JP 2017065013A JP 2017065013 A JP2017065013 A JP 2017065013A JP 2018169693 A JP2018169693 A JP 2018169693A
- Authority
- JP
- Japan
- Prior art keywords
- function
- type
- library
- information processing
- program
- 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.)
- Pending
Links
Images
Landscapes
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
Description
本発明は、制約を型として扱う情報処理装置、情報処理方法および情報処理プログラムに関する。 The present invention relates to an information processing apparatus, an information processing method, and an information processing program that handle constraints as a mold.
企業等で使用される一般的な業務システムと比較すると、IoT(Internet of Things)システムでは、より広範な知見が求められることが多くなる。例えば、物理層では、デバイスに関する制約に関する知見が求められる。無線通信が必要とされる場合には、通信方式に関する知見が求められる。さらに、収集したデータを効率よく保存するための知見、データ処理のためのシステム設計に関する知見、および、大量のデータを処理するためのビッグデータ処理に関する知見などが求められる。また、設計に必要な知見に加え、プライバシや肖像権の保護等の法規制など、運用方面での知見もシステムの開発時に要求される。 Compared to general business systems used in companies and the like, IoT (Internet of Things) systems often require more extensive knowledge. For example, in the physical layer, knowledge regarding restrictions on devices is required. When wireless communication is required, knowledge about the communication method is required. Furthermore, knowledge for efficiently storing collected data, knowledge about system design for data processing, knowledge about big data processing for processing a large amount of data, and the like are required. In addition to knowledge necessary for design, knowledge on the operation side such as laws and regulations such as privacy and protection of portrait rights is also required at the time of system development.
特許文献1に、複数人または複数組織から知識を収集して、ソフトウェアライブラリ(ライブラリ)にライブラリ化する技術が記載されている。
一人の開発者が広範な知見を有していることはまれである。現実には、各領域の知見を有する人材を集め、それぞれが知見を出しあうことが想定される。ある領域において深い知識を有する人材は限定されるので、同時に異なる複数のプロジェクトへの参画が求められることが多い。彼らの主な業務は、設計のレビュー、試験、会議への出席、問合せへの対応等である。プロジェクトが増加すると、システム開発者は調達可能であっても、ある領域において深い知識を有する人材を確保することが難しくなる。人材の確保の困難性は、ビジネス上のボトルネックになる可能性がある。 A single developer rarely has extensive knowledge. In reality, it is envisaged that human resources with knowledge in each field will be gathered and each will share their knowledge. Since human resources with deep knowledge in a certain area are limited, it is often required to participate in a plurality of different projects at the same time. Their main work is design review, testing, attending meetings, responding to inquiries, etc. As the number of projects increases, it becomes difficult for system developers to secure human resources with deep knowledge in a certain area even if they can be procured. The difficulty of securing human resources can be a business bottleneck.
そこで、特許文献1に記載されているように、収集した知識を、再利用可能にライブラリ化することが得策である。
Therefore, as described in
一般に、ライブラリにおいて、汎用化された処理が記述され、ライブラリを呼び出すことによって、汎用的な処理を再現することが可能である。また、必要に応じて、使用上の制約を汎用的なテストコードとしてライブラリ化されることもある。その場合、ユーザプログラム側でテストコードを呼び出すコードが記述されることによって、テストコードの呼び出し箇所において、制約を充足するか否かの試験が可能になる。 In general, generalized processing is described in a library, and general-purpose processing can be reproduced by calling the library. Further, if necessary, the usage restrictions may be made into a library as general-purpose test code. In that case, the code for calling the test code on the user program side is described, so that it is possible to test whether or not the constraint is satisfied at the test code calling location.
しかし、そのような方法では、テスト呼び出し箇所でしか検査を実施することができない。例えば、ユーザプログラムAがライブラリプログラムBを呼び出し、さらにライブラリプログラムBに付随するテストを呼び出しても、検査によって保証されるのは実行コンテクスト上のライブラリプログラムBの正しさである。すなわち、ユーザプログラムAから適切にライブラリプログラムBを呼び出しているという保証はできない。つまり、使用上の制約が守られているか否かの判定が実行されているわけではない。 However, in such a method, the inspection can be performed only at the test call location. For example, even if the user program A calls the library program B and further calls a test associated with the library program B, what is guaranteed by the inspection is the correctness of the library program B on the execution context. That is, it cannot be guaranteed that the library program B is properly called from the user program A. In other words, it is not determined whether or not usage restrictions are being followed.
本発明は、ユーザプログラムにおいて制約が守られているか否かを容易に判定できるようにすることを目的とする。 It is an object of the present invention to make it possible to easily determine whether or not restrictions are observed in a user program.
本発明による情報処理装置は、制約が型として記述されているライブラリの関数を呼び出すアプリケーションプログラムが制約を充足するか否か判定する情報処理装置であって、アプリケーションプログラムの関数呼び出しに必要となる型を構築する単一の関数または複数の関数の組み合わせをライブラリから探索する探索手段と、探索手段が単一の関数または複数の関数の組み合わせを発見できた場合に、アプリケーションプログラムが制約を充足していると判定する充足判定手段とを備えたことを特徴とする。 An information processing apparatus according to the present invention is an information processing apparatus that determines whether or not an application program that calls a function of a library in which a constraint is described as a type satisfies the constraint, and is a type required for calling a function of the application program A search function that searches a library for a single function or a combination of functions, and the application program satisfies the constraints when the search means finds a single function or a combination of functions. It is characterized by comprising satisfaction determination means for determining that there is.
本発明による情報処理方法は、制約が型として記述されているライブラリの関数を呼び出すアプリケーションプログラムが制約を充足するか否か判定する情報処理方法であって、アプリケーションプログラムの関数呼び出しに必要となる型を構築する単一の関数または複数の関数の組み合わせをライブラリから探索し、単一の関数または複数の関数の組み合わせを発見できた場合に、アプリケーションプログラムが制約を充足していると判定することを特徴とする。 The information processing method according to the present invention is an information processing method for determining whether or not an application program that calls a function of a library in which a constraint is described as a type satisfies the constraint, and is a type required for calling a function of the application program Search a library for a single function or a combination of functions, and determine that the application program satisfies the constraints if it can find a single function or a combination of functions Features.
本発明による情報処理プログラムは、制約が型として記述されているライブラリの関数を呼び出すアプリケーションプログラムが制約を充足するか否か判定するための情報処理プログラムであって、コンピュータに、アプリケーションプログラムの関数呼び出しに必要となる型を構築する単一の関数または複数の関数の組み合わせをライブラリから探索する処理と、単一の関数または複数の関数の組み合わせを発見できた場合に、アプリケーションプログラムが制約を充足していると判定する処理とを実行させることを特徴とする。 An information processing program according to the present invention is an information processing program for determining whether or not an application program that calls a function of a library in which a constraint is described as a type satisfies the constraint. The application program satisfies the constraints when it can find a single function or a combination of multiple functions from the library to find a single function or a combination of multiple functions that build the type required for It is characterized in that a process for determining that the image is detected is executed.
本発明によれば、ユーザのアプリケーションプログラムにおいて制約が守られているか否かを容易に判定できるようにすることができる。 ADVANTAGE OF THE INVENTION According to this invention, it can be made easy to determine now whether the restrictions are followed in the user's application program.
実施形態1.
以下、本発明の実施形態を図面を参照して説明する。
Hereinafter, embodiments of the present invention will be described with reference to the drawings.
図1は、情報処理装置の実施形態を示すブロック図である。図1に示す情報処理装置10は、ライブラリ100、型構造抽出装置101、型構築関数抽出装置102、および型構築関数探索装置103を含む。アプリケーションソースコード200は、例えば、ライブラリ100を利用するユーザのパーソナルコンピュータ等の端末に存在する。
FIG. 1 is a block diagram illustrating an embodiment of an information processing apparatus. An
ライブラリ100には、複数人または複数組織から収集された知識に関するデータが、ソフトウェアライブラリとして格納されている。また、ライブラリ100には、制約が型として記述されているライブラリプログラムが含まれている。
In the
型構造抽出装置101は、入力されたアプリケーションソースコード200とライブラリ100の内容を読み取り、型定義を抽出し、型構造を示す情報(型構造情報)を取得する。型構造情報は、有向グラフの構造になる。
The type structure extraction apparatus 101 reads the contents of the input
型構築関数抽出装置102は、アプリケーションソースコード200とライブラリ100の内容を読み取り、関数の入出力関係を分析して、型構築関数の関係を抽出する。型構築関数も、有向グラフの構造になる。
The type construction
型構築関数探索装置103は、アプリケーションソースコード200と得られた型構造情報および型構築関数との関係を用いて、アプリケーションソースコードで記述されている関数呼び出しに必要となる型を構築する単一の関数または複数の関数の接続構造を探索する。型構築関数探索装置103は、探索の結果として、必要となる単一の関数または複数の関数の接続関係を出力する。
The type construction function search device 103 uses the relationship between the
型構築関数探索装置103は、型構造抽出装置101によって抽出された型構造に対して、型構築関数抽出装置102によって得られた型構築関数の関係を用いて、アプリケーションソースコード中に含まれる関数の呼び出し対象の型を生成するのに必要な関数を探索する。制約は型としてライブラリ100において記述されているので、型構築関数探索装置103は、当該型を生成する関数を発見することが可能である。
The type construction function search device 103 uses the relationship of the type construction function obtained by the type construction
型構造抽出装置101、型構築関数抽出装置102、および型構築関数探索装置103は、プログラム記憶部に格納されたプログラムにもとづいてCPU(Central Processing Unit )が処理を実行することによって実現可能である。
The type structure extraction device 101, the type construction
次に、情報処理装置10の動作を説明する。図2は、情報処理装置10の動作を説明するためのフローチャートである。
Next, the operation of the
型構造抽出装置101は、ステップS201の型識別子抽出処理で、ユーザの端末等から入力されたアプリケーションソースコード200およびライブラリ100の内容のそれぞれを分析し、型識別子を抽出する。また、型構造抽出装置101は、ステップS202の型関係抽出処理で、型識別子抽出処理で得られた型識別子が示すそれぞれの型の親子関係およびパラメータ関係を抽出する。
The type structure extraction apparatus 101 analyzes the contents of the
型構築関数抽出装置102は、ステップS211の関数識別子抽出処理で、入力されたアプリケーションソースコード200およびライブラリ100の内容を対象として、関数を走査し、関数の識別子を抽出する。型構築関数抽出装置102は、ステップS212の関数入出力関係抽出処理で、関数識別子抽出処理で得られた識別子の関数のそれぞれについて、その入出力の対応関係(関数の入出力関係)を抽出する。
The type construction
型構築関数探索装置103は、ステップS221の型探索空間生成処理で、アプリケーションソースコードおよびライブラリに加えて、ステップS202の型関係抽出処理で得られた型継承関係(親子関係およびパラメータ関係)とステップS212の関数入出力関係抽出処理で得られた関数の入出力関係とを基に、目的の型(アプリケーションソースコードで記述されている関数呼び出しに必要となる型)を特定するために探索すべき空間(探索空間)を生成する。 The type construction function search apparatus 103 performs the type inheritance relationship (parent-child relationship and parameter relationship) and the step obtained in the type relationship extraction processing in step S202 in addition to the application source code and library in the type search space generation processing in step S221. Based on the input / output relationship of the function obtained in the function input / output relationship extraction process of S212, search should be performed to specify the target type (the type required for the function call described in the application source code). A space (search space) is generated.
型構築関数探索装置103は、ステップS222の型探索処理で、ステップS221の型探索空間生成処理で生成された空間にもとづいて、目的の型を生成するために使用すべき単一の関数または関数の組合せ方を探索する。 The type construction function search device 103 is a single function or function to be used for generating the target type based on the space generated by the type search space generation process of step S221 in the type search process of step S222. Search for a combination of.
単一の関数または関数の組合せ方を発見できなかったことは、型として与えられた制約を充足できる関数の組合せを発見できなかったことを意味している。よって、その場合には、すなわち、単一の関数または関数の組合せ方を発見できなかったときには、型構築関数探索装置103は、制約違反と判定しエラーを出力する(ステップS223;No)。 The failure to find a single function or a combination of functions means that a combination of functions that can satisfy a constraint given as a type could not be found. Therefore, in that case, that is, when a single function or a combination of functions cannot be found, the type construction function search device 103 determines that the constraint has been violated and outputs an error (step S223; No).
単一の関数または関数の組合せ方を発見できたことは、制約を充足する方法を発見できたことを意味している。その場合には、型構築関数探索装置103は、ステップS231の関数生成処理で、制約を充足する関数を生成して出力する。 The ability to find a single function or a combination of functions means that a way to satisfy the constraint has been found. In that case, the type construction function search device 103 generates and outputs a function that satisfies the constraints in the function generation processing in step S231.
次に、情報処理装置10の動作を具体例について説明する。
Next, a specific example of the operation of the
図3は、アプリケーションソースコードの一例を示す説明図である。図3に例示するアプリケーションソースコード200aは、引数であるS[S[S[O]]]に対して、ライブラリ100に存在するライブラリプログラムにおけるisGreaterThan1という関数により真偽値を用いて判定するコードである。
FIG. 3 is an explanatory diagram showing an example of the application source code. The application source code 200a illustrated in FIG. 3 is a code for determining S [S [S [O]]], which is an argument, using a truth value by a function called isGreaterThan1 in a library program existing in the
図4は、ライブラリの内容(ライブラリプログラム)の一例を示す説明図である。図4に示す例では、関数の定義および当該関数の入力に係る制約が型構造で定義され(12行目)、制約を充足する値が型生成関数(9〜10行目)として定義されている。また、後述するように、ライブラリプログラムは、再帰的構造を有する型生成関数を用いて制約充足の条件が定められたプログラムである。
FIG. 4 is an explanatory diagram showing an example of the contents of the library (library program). In the example shown in FIG. 4, a function definition and constraints related to the input of the function are defined by a type structure (line 12), and values that satisfy the constraints are defined as a type generation function (
具体的には、図4に例示するライブラリプログラム100aにおいて、12行目に、関数isGreaterThan1が定義されている。そして、関数isGreaterThan1についてライブラリ100において与えられている制約として、GT1[K]が存在する。アプリケーションソースコード200aには、この制約を充足することが求められる。
Specifically, in the library program 100a illustrated in FIG. 4, the function isGreaterThan1 is defined on the 12th line. As a constraint given in the
より具体的には、関数isGreaterThan1において、第1引数であるKが1より大きいことを制約とすることが表現されている。そして、この制約が充足されない場合に、コンパイル時に確実にエラーを発行することが要請される。 More specifically, the function isGreaterThan1 expresses that the constraint that K, which is the first argument, is greater than 1. If this restriction is not satisfied, it is required to issue an error reliably at the time of compilation.
情報処理装置10において、型構造抽出装置101は、ステップS201の型識別子抽出処理で、アプリケーションソースコード200aおよびライブラリプログラム100aから、型を抽出する。アプリケーションソースコード200aから抽出される型はSおよびOである。ライブラリプログラム100aから抽出される型はNat,O,S,GT1の4つである。
In the
型構造抽出装置101は、ステップS202の型関係抽出処理で、型関係を抽出する。ライブラリプログラム100aの2行目から、型Oは、型Natの子であることを抽出できる。そして、型構造抽出装置101は、3行目から、型Sは型Natの子をパラメータとして有する、型Natの子であることを抽出できる。また、型構造抽出装置101は、5行目から、型GT1は、型NatおよびGT1の子クラスである型Oおよび型Sをパラメータとして有することを抽出できる。 The type structure extraction apparatus 101 extracts the type relationship in the type relationship extraction process in step S202. From the second line of the library program 100a, it can be extracted that the type O is a child of the type Nat. Then, the type structure extraction apparatus 101 can extract from the third row that the type S is a child of the type Nat having a child of the type Nat as a parameter. Further, the type structure extraction apparatus 101 can extract from the fifth line that the type GT1 has the types O and S which are child classes of the types Nat and GT1 as parameters.
図5は、型GT1と、型Nat、型Oおよび型Sとの関係(親子関係およびパラメータ関係)を示す説明図である。 FIG. 5 is an explanatory diagram showing the relationship (parent-child relationship and parameter relationship) between the type GT1 and the type Nat, type O, and type S.
型構築関数探索装置103は、ステップS221の型探索空間生成処理で、関数の識別子として、isGreaterThan1、GT1; apply、GT1; twoGT1 、GT1; xGT1 を抽出する。 The type construction function search device 103 extracts isGreaterThan1, GT1; apply, GT1; twoGT1, GT1; xGT1 as function identifiers in the type search space generation processing in step S221.
また、型構造抽出装置101は、ステップS212の関数入出力関係抽出処理で、以下のように、関数の入出力関係を抽出する。 Further, the type structure extraction apparatus 101 extracts the input / output relationship of the function as follows in the function input / output relationship extraction processing in step S212.
GT1; apply: (K<:Nat) GT1[K] → GT1[K] (ライブラリプログラム100aの7行目から)
GT1; twoGT1 : GT1[S[S[O]]] (ライブラリプログラム100aの9行目から)
GT1; xGT1 : (K<:Nat) GT1[K] → GT1[S[K]] (ライブラリプログラム100aの10行目から)
isGreaterThan1: (K<:Nat) K → GT1[K] → Boolean (ライブラリプログラム100aの12行目から)
GT1; apply: (K <: Nat) GT1 [K] → GT1 [K] (from the 7th line of the library program 100a)
GT1; twoGT1: GT1 [S [S [O]]] (From the 9th line of the library program 100a)
GT1; xGT1: (K <: Nat) GT1 [K] → GT1 [S [K]] (From the 10th line of the library program 100a)
isGreaterThan1: (K <: Nat) K → GT1 [K] → Boolean (From the 12th line of the library program 100a)
型構築関数探索装置103は、ステップS221の型探索空間生成処理で、以上の情報を使用して、探索空間を生成する。ライブラリプログラム100aでは、isGreaterThan1[S[S[O]]] が目的の関数であるから、ライブラリプログラム100aの12行目から抽出された関数の入出力関係の"K → GT1[K] → Boolean"のうち、GT1[S[S[O]]]を探索する必要があることが特定される。すなわち、GT1[S[S[O]]]に関する空間が、探索空間として特定される。 The type construction function search device 103 uses the above information to generate a search space in the type search space generation process in step S221. In the library program 100a, since isGreaterThan1 [S [S [O]]] is the target function, the input / output relationship of the function extracted from the 12th line of the library program 100a is “K → GT1 [K] → Boolean”. Among these, it is specified that GT1 [S [S [O]]] needs to be searched. That is, a space related to GT1 [S [S [O]]] is specified as a search space.
具体的には、型構築関数探索装置103は、ステップS222の型探索処理で、型GT1[S[S[O]]]を生成するために使用すべき単一の関数または関数の組合せ方を探索する。以下、型GT1[S[S[O]]]を生成するために使用される関数を条件に適合する関数という。 Specifically, the type construction function search apparatus 103 determines a single function or a combination of functions that should be used to generate the type GT1 [S [S [O]]] in the type search process in step S222. Explore. Hereinafter, the function used to generate the type GT1 [S [S [O]]] is referred to as a function that satisfies a condition.
型構築関数探索装置103は、まず、S212の関数入出力関係抽出処理で特定された入出力の対応関係が、条件に適合するか否か判定する(初回の探索)。条件に適合するのはGT1; xGT1 のGT1[K] → GT1[S[K]] である。 The type construction function search device 103 first determines whether or not the input / output correspondence specified in the function input / output relationship extraction processing in S212 meets the condition (first search). GT1; xGT1 GT1 [K] → GT1 [S [K]] that meets the conditions.
ここで、K = S[S[O]] とおけば、xGT1が成立するので、GT1[S[S[O]]]が成立する必要があることがわかる。そのため、型構築関数探索装置103は、GT1[S[S[O]]]が成立するか否かを再帰的に判定する (2回目の探索)。ここで、条件に適合するのは、GT1; twoGT1 とGT1; xGT1 である。そこで、型構築関数探索装置103は、それぞれについて判定する。 Here, if K = S [S [O]], xGT1 is established, so that GT1 [S [S [O]]] needs to be established. Therefore, the type construction function search apparatus 103 recursively determines whether GT1 [S [S [O]]] is satisfied (second search). Here, GT1; twoGT1 and GT1; xGT1 meet the conditions. Therefore, the type construction function search apparatus 103 determines each of them.
xGT1が条件に適合するには、GT[S[O]]が成立する必要がある。そのために、3回目の探索では、GT[O] が成立する必要があるが、ここで成立しないことが判定される。なぜなら、S[K] = OとなるKを発見することができないからである。 For xGT1 to meet the requirements, GT [S [O]] must be satisfied. Therefore, GT [O] needs to be satisfied in the third search, but it is determined that it does not hold here. This is because K that satisfies S [K] = O cannot be found.
そのため、2回目の探索としてのGT1; twoGT1 の適合の判定に戻る。ライブラリプログラム100aにおいて、twoGT1の関数の入出力関係から引数を取らない、すなわち、前提条件なしにGT1[S[S[O]]が成立すると定義されている。よって、2回目の探索で、twoGT1が条件に適合することがわかる。 Therefore, it returns to the determination of the conformity of GT1; twoGT1 as the second search. In the library program 100a, it is defined that no argument is taken from the input / output relationship of the functions of twoGT1, that is, GT1 [S [S [O]] is satisfied without any preconditions. Therefore, in the second search, it can be seen that twoGT1 meets the conditions.
型構築関数探索装置103は、ステップS231の関数生成処理で、制約を充足する関数を生成して出力する。この例では、検査が必要であったのは、isGreaterThan1(S[S[S[O]]])(GT1[K])であった。 The type construction function search device 103 generates and outputs a function that satisfies the constraints in the function generation processing in step S231. In this example, it was isGreaterThan1 (S [S [S [O]]]) (GT1 [K]) that needed to be examined.
そして、初回の探索で条件に適合したのはxGT1である。そこで、isGreaterThan1(S[S[S[O]]])(xGT1[K'])に変形される。2回目の探索で条件に適合したのは、twoGT1である。よって、さらにisGreaterThan1(S[S[S[O]]])(xGT1[twoGT1])と変形される。 And it was xGT1 that met the conditions in the first search. Therefore, it is transformed into isGreaterThan1 (S [S [S [O]]]) (xGT1 [K ′]). It is twoGT1 that met the conditions in the second search. Therefore, it is further transformed to isGreaterThan1 (S [S [S [O]]]) (xGT1 [twoGT1]).
さらに、12行目のisGreaterThan1の右辺の定義には引数gt(xGT1[twoGT1]に相当する。)が現れていない。よって、isGreaterThan1(S[S[S[O]]])(xGT1[K'])からxGT1[K']を除去することができる。すなわち、型構築関数探索装置103は、ステップS231の関数生成処理で、制約を充足する関数として、isGreaterThan1(S[S[S[O]]]) = true を出力する。 Furthermore, the argument gt (corresponding to xGT1 [twoGT1]) does not appear in the definition of the right side of isGreaterThan1 on the 12th line. Therefore, xGT1 [K ′] can be removed from isGreaterThan1 (S [S [S [O]]]) (xGT1 [K ′]). That is, the type construction function search device 103 outputs isGreaterThan1 (S [S [S [O]]]) = true as a function that satisfies the constraints in the function generation processing in step S231.
次に、アプリケーションソースコード200aで、引数が(O) である関数isGreaterThan1(O) が指定された場合を例にして情報処理装置10の動作を説明する。ステップS201〜S221の処理は、上記の場合の処理と同じである。
Next, the operation of the
この場合、型構築関数探索装置103は、S222の型探索処理で、型GT[O] を探索する。しかし、関数の入出力関係から、型GT[O] を生成するために使用すべき関数を発見することができない。なぜなら、xGT1[K] ではKに対する減少への再帰を持つが、図4に示すライブラリプログラム100aにおいて、0からの減少はNat の定義上存在しないからである。 In this case, the type construction function search device 103 searches for the type GT [O] in the type search process of S222. However, the function that should be used to generate type GT [O] cannot be found from the input / output relationship of the function. This is because xGT1 [K] has recursion to decrease with respect to K, but there is no decrease from 0 in the definition of Nat in the library program 100a shown in FIG.
よって、型構築関数探索装置103は、isGreaterThan1(O) という関数呼び出しが含まれるソースコードに対して、制約を充足しないとしてエラーを発行する。 Therefore, the type construction function search device 103 issues an error to the source code that includes the function call isGreaterThan1 (O) as not satisfying the constraints.
なお、本実施形態では、アプリケーションプログラムの関数呼び出しに必要となる型を構築する単一の関数が発見されたが、複数の関数の組み合わせが発見されることもある。 In the present embodiment, a single function for constructing a type necessary for a function call of an application program is found, but a combination of a plurality of functions may be found.
本実施形態では、ライブラリ100において、制約が型として定義されている。そして、情報処理装置10は、その型を充足する関数を探索するために(ステップS222)、必要になる型の構造を生成するとともに(ステップS201〜S202)、目的の型を生成するために必要とされる可能性がある関数を抽出する(ステップS211〜S212)。そして、情報処理装置10は、探索空間を生成する(ステップS221)ために、関数の親子関係と関数の入出力関係とを抽出する。その結果、型として定義された制約を充足する関数の有無を検査することができる。
In the present embodiment, constraints are defined as types in the
また、本実施形態では、一方の入力であるアプリケーションソースコード側で制約を記述する必要をなくすことができるので、アプリケーションプログラムの作成者に制約に対する知見が要求されなくなる。 Further, in the present embodiment, it is possible to eliminate the need to describe the constraint on the application source code side that is one input, so that the creator of the application program is not required to know the constraint.
また、本実施形態がアプリケーションプログラムのコンパイル時に適用されることによって、コンパイル時にアプリケーションソースコードを検査することができる。そして、制約が型としてライブラリに埋め込まれ、探索によって得られる対応関係(関数の構造の対応関係)にもとづいて、アプリケーションプログラムが制約を充足することを保証することができる。 In addition, the application source code can be inspected at the time of compilation by applying the present embodiment at the time of compiling the application program. Then, the constraint is embedded in the library as a type, and it can be guaranteed that the application program satisfies the constraint based on the correspondence (correspondence of the structure of the function) obtained by the search.
また、制約は実質的にライブラリ中に隠蔽され、呼び出し側のアプリケーションプログラムでは、制約の情報が不要になる。 In addition, the constraint is substantially hidden in the library, and the caller application program does not need the constraint information.
以上に説明したように、本実施形態では、アプリケーションソフトウェアに対して、呼び出しに制約が存在する関数の呼び出しにおいて、制約の判定を自動化することができる。 As described above, according to the present embodiment, it is possible to automate the determination of restrictions in calling functions that have restrictions on calls to application software.
図6は、本発明による情報処理装置の主要部を示すブロック図である。図6に示す情報処理装置1は、制約が型として記述されているライブラリの関数を呼び出すアプリケーションプログラムが制約を充足するか否か判定する装置であって、アプリケーションプログラムの関数呼び出しに必要となる型を構築する単一の関数または複数の関数の組み合わせをライブラリ2から探索する探索手段3(実施形態では、型構築関数探索装置103で実現される。)と、探索手段3が単一の関数または複数の関数の組み合わせを発見できた場合に、アプリケーションプログラムが制約を充足していると判定する充足判定手段4(実施形態では、型構築関数探索装置103で実現される。)とを備えている。
FIG. 6 is a block diagram showing a main part of the information processing apparatus according to the present invention. The
1 情報処理装置
2 ライブラリ
3 探索手段
4 充足判定手段
10 情報処理装置
100 ライブラリ
100a ライブラリプログラム
101 型構造抽出装置
102 型構築関数抽出装置
103 型構築関数探索装置
200,200a アプリケーションソースコード
DESCRIPTION OF
Claims (10)
前記アプリケーションプログラムの関数呼び出しに必要となる型を構築する単一の関数または複数の関数の組み合わせを前記ライブラリから探索する探索手段と、
前記探索手段が前記単一の関数または複数の関数の組み合わせを発見できた場合に、前記アプリケーションプログラムが制約を充足していると判定する充足判定手段と
を備えたことを特徴とする情報処理装置。 An information processing apparatus that determines whether an application program that calls a library function in which a constraint is described as a type satisfies the constraint,
Search means for searching from the library for a single function or a combination of a plurality of functions for constructing a type required for a function call of the application program;
Satisfaction determining means for determining that the application program satisfies a constraint when the search means can find the single function or a combination of a plurality of functions. .
請求項1記載の情報処理装置。 The information processing apparatus according to claim 1, wherein the library includes a library program in which constraints related to function inputs are defined by a type structure, and values satisfying the constraints are defined as a type generation function.
請求項2記載の情報処理装置。 The information processing apparatus according to claim 2, wherein the library program is a program in which a constraint satisfaction condition is defined using a type generation function having a recursive structure.
請求項1から請求項3のうちのいずれか1項に記載の情報処理装置。 The information processing apparatus according to any one of claims 1 to 3, wherein the search unit searches for a single function or a combination of a plurality of functions while removing unused variables.
前記アプリケーションプログラムの関数呼び出しに必要となる型を構築する単一の関数または複数の関数の組み合わせを前記ライブラリから探索し、
前記単一の関数または複数の関数の組み合わせを発見できた場合に、前記アプリケーションプログラムが制約を充足していると判定する
ことを特徴とする情報処理方法。 An information processing method for determining whether or not an application program that calls a library function in which a constraint is described as a type satisfies the constraint,
Search the library for a single function or a combination of functions that builds the types required for function calls in the application program,
An information processing method comprising: determining that the application program satisfies a restriction when a single function or a combination of a plurality of functions can be found.
請求項5記載の情報処理方法。 The information processing method according to claim 5, wherein the library includes a library program in which constraints related to function inputs are defined by a type structure, and values satisfying the constraints are defined as a type generation function.
請求項6記載の情報処理方法。 The information processing method according to claim 6, wherein the library program is a program in which a condition for satisfying a constraint is determined using a type generation function having a recursive structure.
請求項5から請求項7のうちのいずれか1項に記載の情報処理方法。 The information processing method according to any one of claims 5 to 7, wherein a search is made for a single function or a combination of a plurality of functions while removing unused variables.
コンピュータに、
前記アプリケーションプログラムの関数呼び出しに必要となる型を構築する単一の関数または複数の関数の組み合わせを前記ライブラリから探索する処理と、
前記単一の関数または複数の関数の組み合わせを発見できた場合に、前記アプリケーションプログラムが制約を充足していると判定する処理と
を実行させるための情報処理プログラム。 An information processing program for determining whether an application program that calls a function of a library in which a constraint is described as a type satisfies the constraint,
On the computer,
A process of searching the library for a single function or a combination of a plurality of functions for constructing a type required for the function call of the application program;
An information processing program for executing a process of determining that the application program satisfies a restriction when a single function or a combination of a plurality of functions can be found.
請求項9記載の情報処理プログラム。 The information processing program according to claim 9, wherein the library includes a library program in which constraints related to function inputs are defined by a type structure, and values satisfying the constraints are defined as a type generation function.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017065013A JP2018169693A (en) | 2017-03-29 | 2017-03-29 | Information processing device, information processing method, and information processing program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017065013A JP2018169693A (en) | 2017-03-29 | 2017-03-29 | Information processing device, information processing method, and information processing program |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2018169693A true JP2018169693A (en) | 2018-11-01 |
Family
ID=64020289
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017065013A Pending JP2018169693A (en) | 2017-03-29 | 2017-03-29 | Information processing device, information processing method, and information processing program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2018169693A (en) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2020039615A (en) * | 2018-09-11 | 2020-03-19 | 株式会社三洋物産 | Game machine |
JP2020039611A (en) * | 2018-09-11 | 2020-03-19 | 株式会社三洋物産 | Game machine |
JP2020039613A (en) * | 2018-09-11 | 2020-03-19 | 株式会社三洋物産 | Game machine |
JP2020039614A (en) * | 2018-09-11 | 2020-03-19 | 株式会社三洋物産 | Game machine |
-
2017
- 2017-03-29 JP JP2017065013A patent/JP2018169693A/en active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2020039615A (en) * | 2018-09-11 | 2020-03-19 | 株式会社三洋物産 | Game machine |
JP2020039611A (en) * | 2018-09-11 | 2020-03-19 | 株式会社三洋物産 | Game machine |
JP2020039613A (en) * | 2018-09-11 | 2020-03-19 | 株式会社三洋物産 | Game machine |
JP2020039614A (en) * | 2018-09-11 | 2020-03-19 | 株式会社三洋物産 | Game machine |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11740876B2 (en) | Method and system for arbitrary-granularity execution clone detection | |
CN108958736B (en) | Page generation method and device, electronic equipment and computer readable medium | |
US11835987B2 (en) | Methods and apparatus for finding long methods in code | |
JP2014503910A (en) | Visualize code clone notifications and architecture changes | |
CN111507086B (en) | Automatic discovery of translated text locations in localized applications | |
JP2018169693A (en) | Information processing device, information processing method, and information processing program | |
CN111209203B (en) | Model verification method based on source code | |
Hamza et al. | Testing approaches for web and mobile applications: An overview | |
US11853746B2 (en) | Source code merge conflict resolution | |
WO2018161509A1 (en) | Conditional compilation preprocessing method, terminal and storage medium | |
Clarisó et al. | Smart bound selection for the verification of UML/OCL class diagrams | |
JPWO2015159501A1 (en) | Verification property integration apparatus, verification property integration method, and verification property integration program | |
CN113590454A (en) | Test method, test device, computer equipment and storage medium | |
KR101596257B1 (en) | System and method for developing of service based on software product line | |
CN113076084A (en) | Resource file processing method, device, equipment and storage medium | |
Altamimi et al. | Incremental change propagation from UML software models to LQN performance models. | |
US9727311B2 (en) | Generating a service definition including a common service action | |
Tragatschnig et al. | Modeling change patterns for impact and conflict analysis in event-driven architectures | |
CN111240972B (en) | Model verification device based on source code | |
CN113935847A (en) | Online process risk processing method, device, server and medium | |
Ipate et al. | Model learning and test generation using cover automata | |
Herold et al. | Feature-oriented reflexion modelling | |
Bowles et al. | Correct composition of dephased behavioural models | |
Ukić et al. | The influence of cyclomatic complexity distribution on the understandability of xtUML models | |
Schwickerath et al. | Tool-Supported Architecture-Based Data Flow Analysis for Confidentiality |