Nothing Special   »   [go: up one dir, main page]

JP2018169693A - Information processing device, information processing method, and information processing program - Google Patents

Information processing device, information processing method, and information processing program Download PDF

Info

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
Application number
JP2017065013A
Other languages
Japanese (ja)
Inventor
和大 船越
Kazuhiro Funakoshi
和大 船越
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2017065013A priority Critical patent/JP2018169693A/en
Publication of JP2018169693A publication Critical patent/JP2018169693A/en
Pending legal-status Critical Current

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

PROBLEM TO BE SOLVED: To easily determine whether or not constraint is obeyed in a user program.SOLUTION: An information processing device 1 determines whether or not an application program which calls a function in a library having constraint described as a type satisfies the constraint. The information processing device comprises: search means 3 to search the library 2 for a single function or a combination of a plurality of functions which constructs the type required for the function call of the application program; and satisfaction determination means 4 to determine that the application program satisfies the constraint when the search means 3 succeeds in finding the single function or the combination of the plurality of functions.SELECTED DRAWING: Figure 6

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に、複数人または複数組織から知識を収集して、ソフトウェアライブラリ(ライブラリ)にライブラリ化する技術が記載されている。   Patent Document 1 describes a technique for collecting knowledge from a plurality of people or a plurality of organizations and making it into a software library (library).

特開平11−184874号公報Japanese Patent Laid-Open No. 11-184874

一人の開発者が広範な知見を有していることはまれである。現実には、各領域の知見を有する人材を集め、それぞれが知見を出しあうことが想定される。ある領域において深い知識を有する人材は限定されるので、同時に異なる複数のプロジェクトへの参画が求められることが多い。彼らの主な業務は、設計のレビュー、試験、会議への出席、問合せへの対応等である。プロジェクトが増加すると、システム開発者は調達可能であっても、ある領域において深い知識を有する人材を確保することが難しくなる。人材の確保の困難性は、ビジネス上のボトルネックになる可能性がある。   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 Patent Document 1, it is a good idea to convert the collected knowledge into a reusable library.

一般に、ライブラリにおいて、汎用化された処理が記述され、ライブラリを呼び出すことによって、汎用的な処理を再現することが可能である。また、必要に応じて、使用上の制約を汎用的なテストコードとしてライブラリ化されることもある。その場合、ユーザプログラム側でテストコードを呼び出すコードが記述されることによって、テストコードの呼び出し箇所において、制約を充足するか否かの試験が可能になる。   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.

情報処理装置の実施形態を示すブロック図である。It is a block diagram showing an embodiment of an information processor. 情報処理装置の動作を説明するためのフローチャートである。It is a flowchart for demonstrating operation | movement of information processing apparatus. アプリケーションソースコードの一例を示す説明図である。It is explanatory drawing which shows an example of an application source code. ライブラリプログラムの一例を示す説明図である。It is explanatory drawing which shows an example of a library program. 型GT1と、型Nat、型Oおよび型Sとの関係を示す説明図である。It is explanatory drawing which shows the relationship between type | mold GT1, type | mold Nat, type | mold O, and type | mold S. FIG. 本発明による情報処理装置の主要部を示すブロック図である。It is a block diagram which shows the principal part of the information processing apparatus by this invention.

実施形態1.
以下、本発明の実施形態を図面を参照して説明する。
Embodiment 1. FIG.
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 information processing apparatus 10 illustrated in FIG. 1 includes a library 100, a type structure extraction apparatus 101, a type construction function extraction apparatus 102, and a type construction function search apparatus 103. The application source code 200 exists in a terminal such as a personal computer of a user who uses the library 100, for example.

ライブラリ100には、複数人または複数組織から収集された知識に関するデータが、ソフトウェアライブラリとして格納されている。また、ライブラリ100には、制約が型として記述されているライブラリプログラムが含まれている。   In the library 100, data relating to knowledge collected from a plurality of persons or a plurality of organizations is stored as a software library. The library 100 includes a library program in which constraints are described as types.

型構造抽出装置101は、入力されたアプリケーションソースコード200とライブラリ100の内容を読み取り、型定義を抽出し、型構造を示す情報(型構造情報)を取得する。型構造情報は、有向グラフの構造になる。   The type structure extraction apparatus 101 reads the contents of the input application source code 200 and the library 100, extracts the type definition, and acquires information indicating the type structure (type structure information). The type structure information is a directed graph structure.

型構築関数抽出装置102は、アプリケーションソースコード200とライブラリ100の内容を読み取り、関数の入出力関係を分析して、型構築関数の関係を抽出する。型構築関数も、有向グラフの構造になる。   The type construction function extracting device 102 reads the contents of the application source code 200 and the library 100, analyzes the input / output relation of the function, and extracts the relation of the type construction function. The type construction function also has a directed graph structure.

型構築関数探索装置103は、アプリケーションソースコード200と得られた型構造情報および型構築関数との関係を用いて、アプリケーションソースコードで記述されている関数呼び出しに必要となる型を構築する単一の関数または複数の関数の接続構造を探索する。型構築関数探索装置103は、探索の結果として、必要となる単一の関数または複数の関数の接続関係を出力する。   The type construction function search device 103 uses the relationship between the application source code 200, the obtained type structure information and the type construction function, and creates a single type for constructing a type required for the function call described in the application source code. Search the connection structure of a function or multiple functions. The type construction function search device 103 outputs a necessary single function or a connection relation of a plurality of functions as a result of the search.

型構築関数探索装置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 function extraction device 102 with respect to the type structure extracted by the type structure extraction device 101, and uses the function included in the application source code. Searches for the function needed to generate the type to be called. Since the constraint is described as a type in the library 100, the type construction function search apparatus 103 can find a function that generates the type.

型構造抽出装置101、型構築関数抽出装置102、および型構築関数探索装置103は、プログラム記憶部に格納されたプログラムにもとづいてCPU(Central Processing Unit )が処理を実行することによって実現可能である。   The type structure extraction device 101, the type construction function extraction device 102, and the type construction function search device 103 can be realized by a CPU (Central Processing Unit) executing processing based on a program stored in a program storage unit. .

次に、情報処理装置10の動作を説明する。図2は、情報処理装置10の動作を説明するためのフローチャートである。   Next, the operation of the information processing apparatus 10 will be described. FIG. 2 is a flowchart for explaining the operation of the information processing apparatus 10.

型構造抽出装置101は、ステップS201の型識別子抽出処理で、ユーザの端末等から入力されたアプリケーションソースコード200およびライブラリ100の内容のそれぞれを分析し、型識別子を抽出する。また、型構造抽出装置101は、ステップS202の型関係抽出処理で、型識別子抽出処理で得られた型識別子が示すそれぞれの型の親子関係およびパラメータ関係を抽出する。   The type structure extraction apparatus 101 analyzes the contents of the application source code 200 and the library 100 input from the user terminal or the like in the type identifier extraction process in step S201, and extracts the type identifier. Further, the type structure extraction apparatus 101 extracts the parent-child relationship and the parameter relationship of each type indicated by the type identifier obtained by the type identifier extraction processing in the type relationship extraction processing in step S202.

型構築関数抽出装置102は、ステップS211の関数識別子抽出処理で、入力されたアプリケーションソースコード200およびライブラリ100の内容を対象として、関数を走査し、関数の識別子を抽出する。型構築関数抽出装置102は、ステップS212の関数入出力関係抽出処理で、関数識別子抽出処理で得られた識別子の関数のそれぞれについて、その入出力の対応関係(関数の入出力関係)を抽出する。   The type construction function extraction device 102 scans the function for the contents of the input application source code 200 and the library 100 in the function identifier extraction processing in step S211, and extracts the function identifier. The type construction function extraction device 102 extracts the input / output correspondence (function input / output relationship) for each of the identifier functions obtained by the function identifier extraction processing in the function input / output relationship extraction processing in step S212. .

型構築関数探索装置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 information processing apparatus 10 will be described.

図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 library 100. is there.

図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 (lines 9 to 10). Yes. Further, as will be described later, the library program is a program in which a constraint satisfaction condition is defined using a type generation function having a recursive structure.

具体的には、図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 library 100 for the function isGreaterThan1, GT1 [K] exists. The application source code 200a is required to satisfy this restriction.

より具体的には、関数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 information processing apparatus 10, the type structure extraction apparatus 101 extracts a type from the application source code 200a and the library program 100a by the type identifier extraction processing in step S201. The types extracted from the application source code 200a are S and O. There are four types extracted from the library program 100a: Nat, O, S, and GT1.

型構造抽出装置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 information processing apparatus 10 will be described taking as an example the case where the function isGreaterThan1 (O) whose argument is (O) is specified in the application source code 200a. The processing in steps S201 to S221 is the same as the processing in the above case.

この場合、型構築関数探索装置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 library 100. The information processing apparatus 10 generates a structure of a necessary type (steps S201 to S202) and searches for a function that satisfies the type (step S222) and is necessary for generating a target type. A function that may be taken is extracted (steps S211 to S212). Then, the information processing apparatus 10 extracts a parent-child relationship of functions and an input / output relationship of functions in order to generate a search space (step S221). As a result, it is possible to check for the existence of a function that satisfies the constraints defined as types.

また、本実施形態では、一方の入力であるアプリケーションソースコード側で制約を記述する必要をなくすことができるので、アプリケーションプログラムの作成者に制約に対する知見が要求されなくなる。   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 information processing apparatus 1 illustrated in FIG. 6 is an 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 a type that is required for a function call of the application program A search function 3 for searching the library 2 for a single function or a combination of a plurality of functions (in the embodiment, realized by the type construction function search device 103), and the search means 3 is a single function or Satisfaction determining means 4 (in the embodiment, realized by the type construction function search device 103) that determines that the application program satisfies the constraints when a combination of a plurality of functions can be found. .

1 情報処理装置
2 ライブラリ
3 探索手段
4 充足判定手段
10 情報処理装置
100 ライブラリ
100a ライブラリプログラム
101 型構造抽出装置
102 型構築関数抽出装置
103 型構築関数探索装置
200,200a アプリケーションソースコード
DESCRIPTION OF SYMBOLS 1 Information processing apparatus 2 Library 3 Search means 4 Satisfaction determination means 10 Information processing apparatus 100 Library 100a Library program 101 Type structure extraction apparatus 102 Type construction function extraction apparatus 103 Type construction function search apparatus 200, 200a Application source code

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.
JP2017065013A 2017-03-29 2017-03-29 Information processing device, information processing method, and information processing program Pending JP2018169693A (en)

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)

* Cited by examiner, † Cited by third party
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

Cited By (4)

* Cited by examiner, † Cited by third party
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