KR101837236B1 - Basic block size considering execution path exploration method and system for improving the code coverage - Google Patents

Basic block size considering execution path exploration method and system for improving the code coverage Download PDF

Info

Publication number
KR101837236B1
KR101837236B1 KR1020140193529A KR20140193529A KR101837236B1 KR 101837236 B1 KR101837236 B1 KR 101837236B1 KR 1020140193529 A KR1020140193529 A KR 1020140193529A KR 20140193529 A KR20140193529 A KR 20140193529A KR 101837236 B1 KR101837236 B1 KR 101837236B1
Authority
KR
South Korea
Prior art keywords
node
nodes
searched
execution path
largest
Prior art date
Application number
KR1020140193529A
Other languages
Korean (ko)
Other versions
KR20160090919A (en
Inventor
강병호
임을규
Original Assignee
한양대학교 산학협력단
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 한양대학교 산학협력단 filed Critical 한양대학교 산학협력단
Priority to KR1020140193529A priority Critical patent/KR101837236B1/en
Publication of KR20160090919A publication Critical patent/KR20160090919A/en
Application granted granted Critical
Publication of KR101837236B1 publication Critical patent/KR101837236B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions

Abstract

일 실시예에 따른 코드 커버리지(Code Coverage)를 향상시키기 위한 노드의 실행 경로를 탐색하는 방법은, 탐색 가능한 시작 노드를 판단하고, 상기 판단된 탐색 가능한 시작 노드 중 크기가 가장 큰 노드를 선택하는 단계; 및 상기 선택된 크기가 가장 큰 노드가 가리키는 복수의 경로 중 우선적으로 순회할 경로를 결정하는 단계를 포함할 수 있다. A method of searching for an execution path of a node for improving code coverage according to an embodiment includes determining a searchable start node and selecting a node having a largest size among the determined searchable start nodes ; And determining a path to be traversed among the plurality of paths indicated by the node having the largest selected size.

Description

코드 커버리지 향상을 위한 베이직 블록 크기 감응 실행 경로 탐색 방법 및 시스템{BASIC BLOCK SIZE CONSIDERING EXECUTION PATH EXPLORATION METHOD AND SYSTEM FOR IMPROVING THE CODE COVERAGE}[0001] BASIC BLOCK SIZE CONSIDERING EXECUTION PATH EXPLORATION METHOD AND SYSTEM FOR IMPROVING THE CODE COVERAGE [0002]

아래의 설명은 실행 경로 탐색 기술에 관한 것으로, 코드 커버리지를 향상을 위한 실행 경로 탐색 방법에 관한 것이다.
The following discussion relates to execution path finding techniques, and relates to a method of searching execution paths for improving code coverage.

기존의 실행 경로 탐색 엔진은 DFS(Depth-First Search) 또는 BFS(Breadth-First Search)와 같은 전통적인 그래프 순회 알고리즘(Classical Graph Traversal Algorithms)을 사용하였다. 하지만 프로그램의 실행 경로는 그래프의 일종이기는 하나 그래프의 극히 일부 노드를 집중적으로 여러 차례 호출하고 그 외의 노드에 대해서는 극소 호출되는 등 일반적인 그래프로 분류하기에는 어렵다고 알려져 있다. 다시 말해서, 기존의 연구 기술은 전통적인 그래프 순회 알고리즘을 주로 사용하였기 때문에 비록 실행 경로 탐색을 올바르게 수행한다 하더라도 이것이 최적화되어 효율적으로 동작한다고 보기는 어렵다.The conventional execution path search engine uses a classical graph traversal algorithm such as Depth-First Search (DFS) or Breadth-First Search (BFS). However, it is known that the execution path of a program is a kind of graph, but it is difficult to classify it into a general graph such as a very small number of calls to a small number of nodes of the graph, and a very small number of calls to other nodes. In other words, since the existing research technique mainly uses a conventional graph traversal algorithm, even if the execution path search is correctly performed, it is difficult to optimize and operate efficiently.

KLEE. KLEE는 실행 경로 탐색 엔진의 일종으로 실행 경로 탐색 과정에서 DFS와 BFS와 같은 전통적인 그래프 순회 알고리즘과 무작위하게 탐색하는 Random Search 탐색 기능 또한 제공하고 있다. KLEE가 랜덤 탐색을 제공하는 이유는 프로그램의 실행 경로 탐색은 DFS나 BFS와 같은 전통적인 실행 경로 탐색 플랫폼으로는 올바르게 분석되지 않는 사례가 유의미하게 존재하기 때문이며, 문제를 줄이기 위해 무작위로 탐색하는 랜덤 탐색 방법을 제공하고 있다. 하지만 랜덤 탐색은 상기 문제에 대한 미봉책이며, 실행 경로 탐색 과정에서 전통적인 그래프 순회 알고리즘을 사용함으로써 발생하는 문제를 완전히 해결했다고 보기는 어렵다.KLEE. KLEE is a kind of execution path search engine. It provides a traditional graph traversal algorithm such as DFS and BFS in the execution path search process and a random search search function that searches randomly. The reason that KLEE provides random search is that the execution path search of the program is not correctly analyzed by the conventional execution path search platform such as DFS or BFS. In order to reduce the problem, a random search method . However, it is difficult to see that the random search is a solution to the problem, and that the problems caused by using the conventional graph traversal algorithm in the execution path search process are not completely solved.

BitBlaze. BitBlaze는 취약점 검사에 특화된 실행 경로 탐색 엔진의 일종으로, 실행 경로 탐색 과정에서 DFS와 BFS를 혼합하여 사용한다. BitBlaze는 Many Core를 지원하며, 분석 Job 분배 과정에서 BFS를 통해 큰 Work을 여러 개의 소단위 Job으로 나눈다. 각 분석 Core에서 할당받은 Job은 DFS를 통해 실행 경로 탐색을 수행한다. 다시 말해서, BitBlaze는 실행 경로 탐색 과정에서 DFS와 BFS 모두 사용하지만, BFS는 문제를 작은 단위로 자를 때 사용하며 실질적인 탐색은 DFS에 의존하고 있다. 따라서 BitBlaze 또한 KLEE에서 발생하는 문제를 동일하게 가지고 있다고 볼 수 있다.Bitblaze. BitBlaze is a kind of execution path search engine specialized for vulnerability checking. It uses DFS and BFS in the process of searching the execution path. BitBlaze supports many cores. In the analysis job distribution process, BFS divides big work into several sub job. Jobs assigned to each analysis core perform execution path search through DFS. In other words, BitBlaze uses both DFS and BFS in the execution path search, but BFS is used to truncate the problem into smaller units, and the actual search depends on DFS. Therefore, BitBlaze also has the same problems that occur in KLEE.

한국공개특허 제10-2013-0088584호는 트리의 경로를 탐색하는 방법에 대하여 개시하고 있다.
Korean Patent Laid-Open No. 10-2013-0088584 discloses a method of searching for a path of a tree.

본 발명의 일 실시예에 따라 실행 경로 탐색에 최적화된 알고리즘을 제안하며, 큰 베이직 블록을 우선적으로 탐색하여 실행 경로를 탐색하여 코드 커버리지 향상을 최적화하는 방법 및 시스템을 제공할 수 있다.
According to an embodiment of the present invention, an algorithm optimized for execution path search is proposed, and a method and system for optimizing code coverage improvement by searching for a large basic block by searching for an execution path first can be provided.

일 실시예에 따른 코드 커버리지(Code Coverage)를 향상시키기 위한 노드의 실행 경로를 탐색하는 방법은, 탐색 가능한 시작 노드를 판단하고, 상기 판단된 탐색 가능한 시작 노드 중 크기가 가장 큰 노드를 선택하는 단계; 및 상기 선택된 크기가 가장 큰 노드가 가리키는 복수의 경로 중 우선적으로 순회할 경로를 결정하는 단계를 포함할 수 있다.A method of searching for an execution path of a node for improving code coverage according to an embodiment includes determining a searchable start node and selecting a node having a largest size among the determined searchable start nodes ; And determining a path to be traversed among the plurality of paths indicated by the node having the largest selected size.

일측에 따르면, 상기 탐색 가능한 시작 노드를 판단하고, 상기 판단된 탐색 가능한 시작 노드 중 크기가 가장 큰 노드를 선택하는 단계는, 실행 경로를 탐색하기 위한 탐색 반복(Iteration)이 시작될 때마다 최초로 탐색 가능한 노드 중에서 크기가 가장 큰 노드를 우선적으로 탐색하는 단계를 포함할 수 있다.According to one aspect, the step of determining the searchable start node and the step of selecting a node having the largest size among the determined searchable start nodes may include searching for a start node for each search iteration And a step of preferentially searching for the node having the largest size among the nodes.

또 다른 일측에 따르면, 상기 탐색 가능한 시작 노드를 판단하고, 상기 판단된 탐색 가능한 시작 노드 중 크기가 가장 큰 노드를 선택하는 단계는, 상기 탐색 반복의 시작 노드로 사용할 수 있는지 판단하기 위하여 프로빙(Probing) 과정을 수행하여 복수 개의 노드 정보를 수집하는 단계를 포함할 수 있다.According to another aspect, the step of judging the searchable start node and the step of selecting a node having the largest size among the determined searchable start nodes may be performed by probing ) May be performed to collect a plurality of node information.

또 다른 일측에 따르면, 상기 탐색 가능한 시작 노드를 판단하고, 상기 판단된 탐색 가능한 시작 노드 중 크기가 가장 큰 노드를 선택하는 단계는, 탐색되지 않은 노드들의 정보를 수집 및 가공하고, 상기 탐색되지 않은 노드를 시작 노드로 사용할 수 있는지 판단하여 저장하는 단계를 포함할 수 있다.According to another aspect, the step of determining the searchable start node and selecting the node having the largest size among the determined searchable start nodes collects and processes the information of the nodes that have not been searched, Determining whether the node can be used as a start node, and storing the node.

또 다른 일측에 따르면, 상기 선택된 크기가 가장 큰 노드가 가리키는 복수의 경로 중 우선적으로 순회할 경로를 결정하는 단계는, 복수 개의 노드 모두 탐색되는지 여부를 판단하는 단계; 및 상기 복수 개의 노드 모두 탐색되지 않은 경우, 상기 탐색되지 않은 노드 중 크기가 큰 노드를 선택하는 단계를 포함할 수 있다. According to another aspect of the present invention, the step of determining a path to be preferentially traversed among a plurality of paths indicated by the node having the largest selected size may include: determining whether all of the plurality of nodes are searched; And selecting a node having a larger size among the nodes that are not searched if all of the plurality of nodes are not searched.

또 다른 일측에 따르면, 상기 선택된 크기가 가장 큰 노드가 가리키는 복수의 경로 중 우선적으로 순회할 경로를 결정하는 단계는, 상기 복수 개의 노드 모두 탐색됨에 따라 현재 상태의 노드를 선택하는 단계; 및 상기 복수 개의 노드 중 적어도 하나의 노드가 탐색된 경우, 상기 탐색되지 않은 노드를 선택하는 단계를 포함할 수 있다.According to another aspect of the present invention, the step of determining a path to be traversed preferentially among a plurality of paths indicated by the node having the largest selected size may include: selecting a node in a current state as all of the plurality of nodes are found; And selecting the non-discovered node if at least one of the plurality of nodes is discovered.

일 실시예에 따른 코드 커버리지(Code Coverage)를 향상시키기 위한 노드의 경로를 탐색하는 장치는, 탐색 가능한 시작 노드를 판단하고, 상기 판단된 탐색 가능한 시작 노드 중 크기가 가장 큰 노드를 선택하는 선택부; 및 상기 선택된 크기가 가장 큰 노드가 가리키는 복수의 경로 중 우선적으로 순회할 경로를 결정하는 결정부를 포함할 수 있다.The apparatus for searching a path of a node for improving code coverage according to an exemplary embodiment includes a selection unit for determining a searchable start node and selecting a node having a largest size among the determined searchable start nodes, ; And a determination unit that determines a path to be traversed first among a plurality of paths indicated by the node having the largest selected size.

일측에 따르면, 상기 선택부는, 실행 경로를 탐색하기 위한 탐색 반복(Iteration)이 시작될 때마다 최초로 탐색 가능한 노드 중에서 크기가 가장 큰 노드를 우선적으로 탐색할 수 있다.According to one aspect of the present invention, the selector may preferentially search for the node having the largest size among the first searchable nodes whenever search iteration for searching the execution path is started.

또 다른 일측에 따르면, 상기 선택부는, 상기 탐색 반복의 시작 노드로 사용할 수 있는지 판단하기 위하여 프로빙(Probing) 과정을 수행하여 복수 개의 노드 정보를 수집할 수 있다.According to another aspect of the present invention, the selecting unit may collect a plurality of node information by performing a probing process to determine whether the node can be used as a start node of the search iteration.

또 다른 일측에 따르면, 상기 선택부는, 탐색되지 않은 노드들의 정보를 수집 및 가공하고, 상기 탐색되지 않은 노드를 시작 노드로 사용할 수 있는지 판단하여 저장할 수 있다.According to another aspect of the present invention, the selecting unit may collect and process information of nodes that are not searched, and may determine whether the node that is not searched can be used as a start node and store the information.

또 다른 일측에 따르면, 상기 결정부는, 복수 개의 노드 모두 탐색되는지 여부를 판단하고, 상기 복수 개의 노드 모두 탐색되지 않은 경우 상기 탐색되지 않은 노드 중 상기 크기가 큰 노드를 선택할 수 있다.According to another aspect of the present invention, the determining unit may determine whether all of the plurality of nodes are searched, and may select a node having the largest size among the non-searched nodes when all of the plurality of nodes are not searched.

또 다른 일측에 따르면, 상기 결정부는, 상기 복수 개의 노드 모두 탐색됨에 따라 현재 상태의 노드를 선택하고, 상기 복수 개의 노드 중 적어도 하나의 노드가 탐색된 경우, 상기 탐색되지 않은 노드를 선택할 수 있다.
According to another aspect of the present invention, the determination unit may select a node in the current state as all of the plurality of nodes are searched, and may select the non-searched node when at least one of the plurality of nodes is searched.

일 실시예에 따른 실행 경로 탐색 장치는 경로 탐색 과정에서 탐색 반복 횟수에 대비하여 선형적으로 코드 커버리지가 향상될 수 있다. 반면 기존의 전통적인 그래프 탐색 알고리즘 중 하나인 DFS는 분석 반복이 증가함에 따라 코드 커버리지의 확장 정도가 낮아지는 현상을 관측할 수 있다.
The execution path searching apparatus according to the embodiment can improve the code coverage linearly with respect to the number of search iterations in the path search process. On the other hand, DFS, which is one of the traditional graph search algorithms, can observe a phenomenon in which the extent of code coverage decreases as the number of iterations increases.

도 1은 일 실시예에 따른 실행 경로 탐색 장치의 실행 경로 탐색 방법을 나타낸 흐름도이다.
도 2는 도 1에 도시된 단계 120을 보다 구체적으로 설명하기 위한 도면이다.
도 3은 일 실시예에 따른 실행 경로 탐색 장치의 선택 알고리즘을 설명하기 위한 예이다.
도 4는 도 1에 도시된 단계 140을 보다 구체적으로 설명하기 위한 도면이다.
도 5는 일 실시예에 따른 실행 경로 탐색 장치의 결정 알고리즘을 설명하기 위한 예이다.
도 6은 일 실시예에 따른 실행 경로 탐색 장치를 나타낸 블록도이다.
1 is a flowchart illustrating a method of searching for an execution path of an execution path searching apparatus according to an exemplary embodiment of the present invention.
Fig. 2 is a diagram for more specifically explaining step 120 shown in Fig.
FIG. 3 is an example for explaining a selection algorithm of the execution path searching apparatus according to an embodiment.
FIG. 4 is a diagram for explaining step 140 shown in FIG. 1 in more detail.
5 is an example for explaining a determination algorithm of the execution path searching apparatus according to an embodiment.
6 is a block diagram illustrating an execution path search apparatus according to an embodiment.

이하, 실시예를 첨부한 도면을 참조하여 상세히 설명한다.
Hereinafter, embodiments will be described in detail with reference to the accompanying drawings.

도 1은 일 실시예에 따른 실행 경로 탐색 장치의 실행 경로 탐색 방법을 나타낸 흐름도이다. 1 is a flowchart illustrating a method of searching for an execution path of an execution path searching apparatus according to an exemplary embodiment of the present invention.

실행 경로 탐색 장치는 큰 베이직 블록을 우선적으로 탐색한다는 의미에서 Size-First Search(SFS) Algorithm이라 명명할 수 있으며, SFS는 결정 알고리즘(Decision Algorithm) 및 선택 알고리즘(Selection Algorithm)이라는 두 개의 서브 알고리즘(Sub-Algorithm)으로 구성될 수 있다. The execution path search device can be called Size-First Search (SFS) Algorithm in the sense of preferentially searching a large basic block. SFS is divided into two sub algorithms (Decision Algorithm and Selection Algorithm) Sub-Algorithm).

도 1내지 도 5에서는 노드가 두 개의 아웃고잉 엣지(Outgoing Edge)를 가지고 있는 경우를 예를 들어 설명하지만, 노드는 복수 개의 아웃고잉 엣지를 가지고 있을 수 있다.1 to 5 illustrate the case where a node has two outgoing edges, but a node may have a plurality of outgoing edges.

단계(110)에서 실행 경로 탐색 장치는 프로빙 과정을 수행할 수 있다. 이때, 프로빙이란, 탐색 과정에서 아직 탐색되지 않은 노드들의 정보를 수집 및 가공하는 과정으로, 탐색되지 않은 노드를 먼저 바라보고(Look Ahead) 상기 노드의 크기를 조사하여 분석 반복(Iteration)의 시작 노드로 사용할 수 있는지를 판단하여 저장할 수 있다. 상기 저장된 정보는 결정 알고리즘과 선택 알고리즘에서 사용될 수 있다. In step 110, the execution path search device may perform the probing process. In this case, the probing is a process of collecting and processing information of nodes that have not yet been searched in the search process. It looks at the nodes that have not been searched first, examines the size of the nodes, It is possible to determine whether or not it can be used. The stored information may be used in a decision algorithm and a selection algorithm.

단계(120)에서 실행 경로 탐색 장치는 선택 알고리즘을 수행할 수 있다. 실행 경로 탐색 장치는 탐색 가능한 시작 노드를 판단하고, 판단된 탐색 가능한 시작 노드 중 크기가 가장 큰 노드를 선택할 수 있다. 이때, 경로 탬색 장치는 실행 경로를 탐색하기 위한 탐색 반복이 시작될 때마다 최초로 탐색 가능한 노드 중에서 크기가 가장 큰 노드를 우선적으로 탐색할 수 있다. In step 120, the execution path search device may perform a selection algorithm. The execution path search device can determine the searchable start node and select the node having the largest size among the determined searchable start nodes. At this time, the path marking apparatus can preferentially search the node having the largest size among the first searchable nodes each time the search iteration for searching the execution path is started.

도 2는 도 1에 도시된 단계 120을 보다 구체적으로 설명하기 위한 도면으로, 선택 알고리즘에 대하여 좀 더 구체적으로 설명하고자 한다.FIG. 2 is a diagram for more specifically explaining step 120 shown in FIG. 1, and a selection algorithm will be described in more detail.

단계(210)에서 실행 경로 탐색 장치는 탐색 가능한 시작 노드가 있는지를 판단할 수 있다. 이때, 탐색 가능한 시작 노드가 있다면, 단계(211)의 탐색 가능한 시작 노드 중 크기가 가장 큰 노드를 선택할 수 있다. 또한, 탐색 가능한 시작 노드가 없다면, 단계(212)에서 노드를 선택하지 않는다. In step 210, the execution path searching device can determine whether there is a searchable start node. At this time, if there is a searchable start node, the node having the largest size among the searchable start nodes in step 211 can be selected. Also, if there is no searchable start node, then no node is selected at step 212. [

도 3은 일 실시예에 따른 실행 경로 탐색 장치의 선택 알고리즘을 설명하기 위한 예를 나타낸 것으로, 크기(Size)가 4인 노드, 크기가 16인 노드, 크기가 8인 노드 및 크기가 0인 노드가 있다고 가정하자. FIG. 3 illustrates an example of a selection algorithm of an execution path search apparatus according to an exemplary embodiment. The node includes a node having a size of 4, a node having a size of 16, a node having a size of 8, .

선택 알고리즘은 매 실행 경로 탐색 반복이 시작될 때마다 적용될 수 있으며, 최초로 탐색 가능한 노드 중 가장 크기가 큰 노드를 먼저 탐색할 수 있다. 이때, 어떤 노드가 어떠한 크기를 가졌는지, 탐색 반복의 시작 노드로 사용할 수 있는지는 단계(110)에서 설명한 바와 같이 프로빙 과정을 통하여 정보를 수집할 수 있다.The selection algorithm can be applied every time the execution path search iterations are started, and the largest node among the first searchable nodes can be searched first. At this time, it is possible to collect information through a probing process, as described in step 110, as to which node has a certain size and which node can be used as a start node of the search iteration.

일 실시예에 따른 실행 경로 탐색 장치는 선택 알고리즘을 통하여 최초로 탐색 가능한 노드 중에서 가장 크기가 큰 노드는 크기가 16인 노드이므로 크기가 16인 노드를 먼저 탐색하게 된다. The execution path searching apparatus according to an exemplary embodiment searches for a node having a size of 16 because the largest node among the first searchable nodes through the selection algorithm is a node having a size of 16.

단계(130)에서 실행 경로 탐색 장치는 현재 노드가 두 개의 아웃고잉 엣지(Outgoing Edge)를 가지고 있는지 판단할 수 있다. 도 1에서는 노드가 두 개의 아웃고잉 엣지를 가진 경우를 예를 들어 설명하지만, 복수 개의 아웃고잉 엣지를 포함하는 경우에도 동일하게 적용될 수 있으며, 아웃고잉 엣지의 개수에 제한되지 않는다. 이때, 실행 경로 탐색 장치는 현재 노드가 두 개의 아웃고잉 엣지를 가지고 있다면, 단계(140)에서 결정 알고리즘을 수행할 수 있으며, 현재 노드가 두 개의 아웃고잉 엣지를 가지고 있지 않다면 단계(140)을 수행하지 않고 단계(150)을 수행할 수 있다.In step 130, the execution path search device may determine whether the current node has two outgoing edges. Although FIG. 1 illustrates an example in which a node has two outgoing edges, the present invention can be similarly applied to a case in which a plurality of outgoing edges are included, and is not limited to the number of outgoing edges. At this time, if the current node has two outgoing edges, the execution path searcher may perform a decision algorithm in step 140, and if the current node does not have two outgoing edges, perform step 140 Step 150 may be performed.

단계(140)에서 실행 경로 탐색 장치는 결정 알고리즘을 수행할 수 있다. 실행 경로 탐색 장치는 선택된 크기가 가장 큰 노드가 가리키는 복수의 경로 중 우선적으로 순회할 경로를 결정할 수 있다. 이때, 실행 경로 탐색 장치는 매 노드의 탐색시마다 결정 알고리즘이 적용될 수 있으며, 현재 노드가 가리키는 두 개의 경로 중 어떤 경로를 선택할 것인지를 결정할 수 있다. In step 140, the execution path searching apparatus can perform a decision algorithm. The execution path searching device can determine a path to be traversed first among the plurality of paths indicated by the node having the largest selected size. At this time, the execution path searching apparatus can determine a decision algorithm for each search of each node and decide which one of the two paths indicated by the current node is to be selected.

도 4는 도 1에 도시된 단계 140을 보다 구체적으로 설명하기 위한 도면으로, 결정 알고리즘에 대하여 상세히 설명하기로 한다. FIG. 4 is a diagram for explaining the step 140 shown in FIG. 1 in more detail, and the decision algorithm will be described in detail.

단계(410)에서 실행 경로 탐색 장치는 분기문이 가리키는 두 노드 모두 탐색되지 않았는지 판단할 수 있다. 이때, 분기문이 가리키는 두 노드 모두 탐색되지 않았다면, 단계(411)에서 탐색되지 않은 두 노드 중 큰 노드를 선택할 수 있다. 또한, 분기문이 가리키는 두 노드 중 적어도 하나 이상의 노드가 탐색되었다면 단계(420)의 두 노드 모두 탐색되었는지 판단할 수 있다. In step 410, the execution path searching apparatus can determine whether both nodes pointed to by the branch statement have not been searched. At this time, if neither of the two nodes indicated by the branch statement has been searched, a large one of the two nodes not searched in step 411 can be selected. In addition, if at least one of the two nodes indicated by the branch statement has been detected, it can be determined whether both nodes of step 420 have been searched.

단계(420)에서 실행 경로 탐색 장치는 두 노드 모두 탐색되었는지 판단할 수 있고, 두 노드 모두 탐색되었다면, 단계(421)의 현재 상태의 노드를 선택할 수 있고, 두 노드 중 적어도 하나의 노드가 탐색되었다면, 단계(430)의 탐색되지 않은 노드를 선택할 수 있다. In step 420, the execution path searcher may determine whether both nodes have been searched, and if both nodes have been searched, the node in the current state of step 421 may be selected, and if at least one of the two nodes has been searched , Then the untested node of step 430 may be selected.

도 5는 일 실시예에 따른 실행 경로 탐색 장치의 결정 알고리즘을 설명하기 위한 예를 나타낸 것으로, 크기가 4인 노드와 크기가 8인 노드가 있다고 가정하자. 5 illustrates an example of a decision algorithm of the execution path searching apparatus according to an embodiment. It is assumed that a node having a size of 4 and a node having a size of 8 exist.

결정 알고리즘은 매 노드의 탐색시마다 적용되며, 현재 노드가 가리키는 두 개의 경로 중 어떤 경로를 선택할 것인지를 결정할 수 있다. 만약 두 개의 경로 모두 탐색되지 않았다면 큰 노드를 탐색하며, 하나의 노드가 이미 탐색되었다면 탐색되지 않은 다른 노드를 탐색하며, 두 노드 모두 탐색되었다면 현재 상태를 유지한 채 분석을 진행할 수 있다. The decision algorithm is applied at every search of each node, and it can decide which of the two paths the current node points to. If neither of the two paths is searched, a large node is searched. If one node is already searched, another searched node is searched. If both searched, the current state can be maintained.

이에 따라 실행 경로 탐색 장치는 결정 알고리즘을 통하여 크기가 8인 노드를 먼저 탐색하게 된다. Accordingly, the execution path searching apparatus searches for a node having a size of 8 through a decision algorithm.

예를 들면, 현재 노드가 가리키는 두 개의 노드 중 어떤 노드를 먼저 탐색할 것인지를 결정할 수 있다. 첫째, 두 노드 모두 탐색되지 않았을 경우, 크기가 큰 노드를 탐색할 수 있다. 이때, 두 노드의 크기가 같다면 임의의 실행 경로 변경 없이 탐색할 수 있다. 둘째, 두 노드 중 하나가 이미 탐색된 경우, 탐색되지 않은 노드를 탐색할 수 있다. 셋재, 두 노드 모두 탐색된 경우, 임의의 실행 경로 변경 없이 탐색할 수 있다. For example, you can decide which of the two nodes the current node points to first. First, if both nodes are not searched, a large node can be searched. At this time, if the sizes of the two nodes are the same, it is possible to search without changing any execution path. Second, if one of the two nodes has already been searched, the node that has not been searched can be searched. If both nodes are found, they can be searched without changing any execution path.

단계(150)에서 실행 경로 탐색 장치는 노드를 탐색할 수 있다. 이때, 실행 경로 탐색 장치는 단계(130)에서 현재 노드가 두 개의 아웃고잉 엣지를 가지고 있지 않다면 단계(150)의 노드를 탐색하는 것을 수행할 수 있다. 또한, 결정 알고리즘을 통하여 결정된 노드를 탐색함으로써 단계(150)을 수행할 수 있다. At step 150, the execution path search device can search for a node. At this time, the execution path searching device can perform the search in step 130 if the current node does not have two outgoing edges. Also, step 150 may be performed by searching for a determined node through a decision algorithm.

단계(160)에서 실행 경로 탐색 장치는 더 이상 새로운 노드가 발견되었는지 여부를 판단할 수 있다. 이때, 새로운 노드가 발견되지 않았다면 경로 탐색을 종료할 수 있고, 새로운 노드가 발견되었다면 단계(130)에서 단계(160)을 다시 수행할 수 있다. In step 160, the execution path searching apparatus can judge whether or not a new node is found. At this time, the path search can be terminated if a new node is not found, and step 160 can be performed again in step 130 if a new node is found.

일 실시예에 따른 실행 경로 탐색 장치는 실행 경로 탐색 과정에서 탐색 반복 횟수에 대비하여 선형적으로 코드 커버리지가 향상될 수 있다. The execution path searching apparatus according to the embodiment can improve the code coverage linearly in comparison with the number of search iterations in the execution path search process.

도 6은 일 실시예에 따른 실행 경로 탐색 장치를 나타낸 블록도이다.6 is a block diagram illustrating an execution path search apparatus according to an embodiment.

도 6을 참조하면, 본 발명의 일 실시예에 따른 실행 경로 탐색 장치(600)는 큰 베이직 블록을 우선적으로 탐색하기 위한 장치로서, 프로세서(610), 네트워크 인터페이스(630) 및 메모리(640)를 포함할 수 있다. Referring to FIG. 6, an execution path searching apparatus 600 according to an exemplary embodiment of the present invention is an apparatus for preferentially searching for a large basic block, and includes a processor 610, a network interface 630, and a memory 640 .

네트워크 인터페이스(630)는 여러 입력 장치들, 출력 장치들과 상기 장치와의 통신 인터페이스와, 외부의 다른 장치들과의 통신 인터페이스를 포함할 수 있다.The network interface 630 may include various input devices, output devices, a communication interface with the device, and a communication interface with other external devices.

프로세서(610)는 탐색 반복의 시작 노드로 사용할 수 있는지 판단하기 위하여 포로빙 과정을 수행하여 복수 개의 노드 정보를 수집하고, 이를 메모리(630)에 로딩한다. 이때, 데이터베이스(650)는 탐색되지 않은 노드들의 정보를 수집 및 가공하고, 탐색되지 않은 노드를 시작 노드로 사용할 수 있는지 판단하여 저장할 수 있다. The processor 610 performs a capturing process to determine whether it can be used as the start node of the search iteration, collects a plurality of node information, and loads the information into the memory 630. At this time, the database 650 may collect and process the information of the nodes that have not been searched, and may determine whether the nodes that are not searched can be used as start nodes and store the information.

선택부(611)는 탐색 가능한 시작 노드를 판단하고, 판단된 탐색 가능한 시작 노드 중 크기가 가장 큰 노드를 선택할 수 있다. 선택부(611)는 실행 경로를 탐색하기 위한 탐색 반복이 시작될 대마다 최초로 탐색 가능한 노드 중에서 크기가 가장 큰 노드를 우선적으로 탐색할 수 있다. The selecting unit 611 can determine the searchable start node and select the node having the largest size among the determined searchable start nodes. The selecting unit 611 may preferentially search for the node having the largest size among the nodes that can be searched for the first time each time the search iteration for searching the execution path is started.

결정부(612)는 선택된 크기가 가장 큰 노드가 가리키는 복수의 경로 중 우선적으로 순회할 경로를 결정할 수 있다. 결정부(612)는 복수 개의 노드 모두 탐색되는지 여부를 판단할 수 있고, 복수 개의 노드 모두 탐색되지 않은 경우, 탐색되지 않은 노드 중 크기가 큰 노드를 선택할 수 있다. 결정부(612)는 복수 개의 노드 모두 탐색됨에 따라 현재 상태의 노드를 선택할 수 있고, 복수 개의 노드 중 적어도 하나의 노드가 탐색된 경우, 탐색되지 않은 노드를 선택할 수 있다. The determining unit 612 can determine a path to be traversed among the plurality of paths indicated by the node having the largest selected size. The determination unit 612 can determine whether all of the plurality of nodes are searched. If all of the plurality of nodes are not searched, the node having a large size among the non-searched nodes can be selected. The determination unit 612 can select a node in the current state as all of the plurality of nodes are searched, and can select a node that is not searched when at least one of the plurality of nodes is searched.

일 실시예에 따른 실행 경로 탐색 장치는 소프트웨어 테스팅 도구, 소프트웨어 취약점 분석 도구 및 악성코드 분석 도구 등에 적용될 수 있다. 이에 따라 실행 경로 탐색 장치는 실행 경로 탐색에 최적화된 알고리즘을 통하여 큰 베이직 블록을 우선적으로 탐색함으로써 코드 커버리지를 향상시킬 수 있다. The execution path searching apparatus according to an embodiment can be applied to a software testing tool, a software vulnerability analysis tool, and a malicious code analysis tool. Accordingly, the execution path searching apparatus can improve the code coverage by preferentially searching a large basic block through an algorithm optimized for execution path search.

이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPA(field programmable array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.The apparatus described above may be implemented as a hardware component, a software component, and / or a combination of hardware components and software components. For example, the apparatus and components described in the embodiments may be implemented within a computer system, such as, for example, a processor, a controller, an arithmetic logic unit (ALU), a digital signal processor, a microcomputer, a field programmable array (FPA) A programmable logic unit (PLU), a microprocessor, or any other device capable of executing and responding to instructions. The processing device may execute an operating system (OS) and one or more software applications running on the operating system. The processing device may also access, store, manipulate, process, and generate data in response to execution of the software. For ease of understanding, the processing apparatus may be described as being used singly, but those skilled in the art will recognize that the processing apparatus may have a plurality of processing elements and / As shown in FIG. For example, the processing unit may comprise a plurality of processors or one processor and one controller. Other processing configurations are also possible, such as a parallel processor.

소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.The software may include a computer program, code, instructions, or a combination of one or more of the foregoing, and may be configured to configure the processing device to operate as desired or to process it collectively or collectively Device can be commanded. The software and / or data may be in the form of any type of machine, component, physical device, virtual equipment, computer storage media, or device , Or may be permanently or temporarily embodied in a transmitted signal wave. The software may be distributed over a networked computer system and stored or executed in a distributed manner. The software and data may be stored on one or more computer readable recording media.

실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.The method according to an embodiment may be implemented in the form of a program command that can be executed through various computer means and recorded in a computer-readable medium. The computer-readable medium may include program instructions, data files, data structures, and the like, alone or in combination. The program instructions to be recorded on the medium may be those specially designed and configured for the embodiments or may be available to those skilled in the art of computer software. Examples of computer-readable media include magnetic media such as hard disks, floppy disks, and magnetic tape; optical media such as CD-ROMs and DVDs; magnetic media such as floppy disks; Magneto-optical media, and hardware devices specifically configured to store and execute program instructions such as ROM, RAM, flash memory, and the like. Examples of program instructions include machine language code such as those produced by a compiler, as well as high-level language code that can be executed by a computer using an interpreter or the like. The hardware devices described above may be configured to operate as one or more software modules to perform the operations of the embodiments, and vice versa.

이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.While the present invention has been particularly shown and described with reference to exemplary embodiments thereof, it is to be understood that the invention is not limited to the disclosed exemplary embodiments. For example, it is to be understood that the techniques described may be performed in a different order than the described methods, and / or that components of the described systems, structures, devices, circuits, Lt; / RTI > or equivalents, even if it is replaced or replaced.

그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.
Therefore, other implementations, other embodiments, and equivalents to the claims are also within the scope of the following claims.

Claims (12)

코드 커버리지(Code Coverage)를 향상시키기 위한 노드의 실행 경로를 탐색하는 방법에 있어서,
탐색 가능한 시작 노드를 판단하고, 상기 판단된 탐색 가능한 시작 노드 중 노드의 크기가 가장 큰 노드를 선택하는 단계; 및
상기 선택된 크기가 가장 큰 노드가 가리키는 복수의 경로 중 우선적으로 순회할 경로를 결정하는 단계
를 포함하고,
상기 탐색 가능한 시작 노드를 판단하고, 상기 판단된 탐색 가능한 시작 노드 중 크기가 가장 큰 노드를 선택하는 단계는,
상기 탐색 반복의 시작 노드로 사용할 수 있는지 판단하기 위하여 프로빙(Probing) 과정을 수행하여 탐색되지 않은 노드들의 정보를 수집 및 가공하고, 상기 탐색되지 않은 노드를 시작 노드로 사용할 수 있는지 여부를 판단하고,
상기 실행 경로를 탐색하기 위한 탐색 반복(Iteration)이 시작될 때마다 최초로 탐색 가능한 노드 중에서 노드의 크기가 가장 큰 노드를 우선적으로 탐색함으로써, 탐색 반복 횟수에 기초하여 선형적으로 코드 커버리지가 확장되는 것을 특징으로 하는 실행 경로 탐색 방법.
CLAIMS 1. A method for searching an execution path of a node for improving code coverage,
Determining a searchable start node and selecting a node having a largest node size among the determined searchable start nodes; And
Determining a path to be traversed among the plurality of paths indicated by the node having the largest selected size
Lt; / RTI >
Wherein the step of determining the searchable start node comprises the steps of:
A probing process is performed to determine whether the node can be used as a start node of the search iteration, and information on nodes that have not been searched is collected and processed, and it is determined whether the node that is not searched can be used as a start node,
The code coverage is linearly expanded on the basis of the number of search iterations by preferentially searching for the node having the largest node size among the nodes that can be searched for first when the search iteration for searching the execution path is started. A method for searching the execution path.
삭제delete 삭제delete 삭제delete 제1항에 있어서,
상기 선택된 크기가 가장 큰 노드가 가리키는 복수의 경로 중 우선적으로 순회할 경로를 결정하는 단계는,
상기 선택된 크기가 가장 큰 노드가 가리키는 복수의 경로에 해당하는 복수 개의 노드가 모두 탐색되는지 여부를 판단하는 단계; 및
상기 복수 개의 노드가 모두 탐색되지 않은 경우, 상기 탐색되지 않은 노드 중 크기가 큰 노드를 선택하는 단계
를 포함하는 실행 경로 탐색 방법.
The method according to claim 1,
Wherein the step of determining a path to be traversed among the plurality of paths indicated by the node having the largest selected size comprises:
Determining whether a plurality of nodes corresponding to a plurality of paths indicated by the node having the largest selected size are all searched; And
If none of the plurality of nodes is searched, selecting a node having a large size among the nodes that have not been searched
The method comprising the steps of:
제5항에 있어서,
상기 선택된 크기가 가장 큰 노드가 가리키는 복수의 경로 중 우선적으로 순회할 경로를 결정하는 단계는,
상기 복수 개의 노드 모두 탐색됨에 따라 현재 상태의 노드를 선택하는 단계; 및
상기 복수 개의 노드 중 적어도 하나의 노드가 탐색된 경우, 상기 탐색되지 않은 노드를 선택하는 단계
를 포함하는 실행 경로 탐색 방법.
6. The method of claim 5,
Wherein the step of determining a path to be traversed among the plurality of paths indicated by the node having the largest selected size comprises:
Selecting a current state node as all of the plurality of nodes are found; And
If at least one of the plurality of nodes is discovered, selecting the non-discovered node
The method comprising the steps of:
코드 커버리지(Code Coverage)를 향상시키기 위한 노드의 경로를 탐색하는 장치에 있어서,
탐색 가능한 시작 노드를 판단하고, 상기 판단된 탐색 가능한 시작 노드 중 노드의 크기가 가장 큰 노드를 선택하는 선택부; 및
상기 선택된 크기가 가장 큰 노드가 가리키는 복수의 경로 중 우선적으로 순회할 경로를 결정하는 결정부
를 포함하고,
상기 선택부는,
상기 탐색 반복의 시작 노드로 사용할 수 있는지 판단하기 위하여 프로빙(Probing) 과정을 수행하여 탐색되지 않은 노드들의 정보를 수집 및 가공하고, 상기 탐색되지 않은 노드를 시작 노드로 사용할 수 있는지 여부를 판단하고,
실행 경로를 탐색하기 위한 탐색 반복(Iteration)이 시작될 때마다 최초로 탐색 가능한 노드 중에서 노드의 크기가 가장 큰 노드를 우선적으로 탐색함으로써, 탐색 반복 횟수에 기초하여 선형적으로 코드 커버리지가 확장되는 것을 특징으로 하는 실행 경로 탐색 장치.
An apparatus for searching a path of a node for improving code coverage,
A selection unit for determining a searchable start node and selecting a node having a largest node size among the determined searchable start nodes; And
And determines a path to be traversed first among a plurality of paths indicated by the node having the largest selected size,
Lt; / RTI >
Wherein the selection unit comprises:
A probing process is performed to determine whether the node can be used as a start node of the search iteration, and information on nodes that have not been searched is collected and processed, and it is determined whether the node that is not searched can be used as a start node,
The code coverage is linearly expanded based on the number of search iterations by preferentially searching for the node having the largest node size among the first searchable nodes whenever search iteration for searching the execution path is started. A running path search device.
삭제delete 삭제delete 삭제delete 제7항에 있어서,
상기 결정부는,
상기 선택된 크기가 가장 큰 노드가 가리키는 복수의 경로에 해당하는 복수 개의 노드가 모두 탐색되는지 여부를 판단하고, 상기 복수 개의 노드가 모두 탐색되지 않은 경우 상기 탐색되지 않은 노드 중 크기가 큰 노드를 선택하는 실행 경로 탐색 장치.
8. The method of claim 7,
Wherein,
Determining whether all of the plurality of nodes corresponding to the plurality of paths indicated by the node having the largest selected size are searched, and if the plurality of nodes are not all searched, selecting a node having the largest size among the non-searched nodes Execution path search device.
제11항에 있어서,
상기 결정부는,
상기 복수 개의 노드 모두 탐색됨에 따라 현재 상태의 노드를 선택하고, 상기 복수 개의 노드 중 적어도 하나의 노드가 탐색된 경우, 상기 탐색되지 않은 노드를 선택하는
실행 경로 탐색 장치.
12. The method of claim 11,
Wherein,
Selecting a node in the current state as all of the plurality of nodes are searched, and selecting at least one of the plurality of nodes when the node is searched for
Execution path search device.
KR1020140193529A 2014-12-30 2014-12-30 Basic block size considering execution path exploration method and system for improving the code coverage KR101837236B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020140193529A KR101837236B1 (en) 2014-12-30 2014-12-30 Basic block size considering execution path exploration method and system for improving the code coverage

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140193529A KR101837236B1 (en) 2014-12-30 2014-12-30 Basic block size considering execution path exploration method and system for improving the code coverage

Publications (2)

Publication Number Publication Date
KR20160090919A KR20160090919A (en) 2016-08-02
KR101837236B1 true KR101837236B1 (en) 2018-04-20

Family

ID=56708100

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140193529A KR101837236B1 (en) 2014-12-30 2014-12-30 Basic block size considering execution path exploration method and system for improving the code coverage

Country Status (1)

Country Link
KR (1) KR101837236B1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102255365B1 (en) * 2019-01-14 2021-05-25 한국전자통신연구원 Apparatus for optimizing graphic-based image processing model execution in heterogeneous on-device systems and method thereof

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Thanassis Avgerinos외 3. Enhancing Symbolic Execution with Veritesting. 2014.5.*

Also Published As

Publication number Publication date
KR20160090919A (en) 2016-08-02

Similar Documents

Publication Publication Date Title
JP4485330B2 (en) Directed falification of circuits
US8327325B2 (en) Programmable framework for automatic tuning of software applications
KR101966514B1 (en) Apparatus, method and computer program for malware detection of software defined network
JP6352958B2 (en) Graph index search device and operation method of graph index search device
KR101530132B1 (en) Method and apparatus for expanding execution path of binary code using symbolic execution
KR101535813B1 (en) System and method for dynamic updating of event composition rule for complex event processing
GB2530516A (en) Intelligent Software Test Augmenting
US20180121544A1 (en) Apparatus and method for enhancing regular expression search performance through cost-based optimization technique
US8938443B2 (en) Runtime optimization of spatiotemporal events processing
JP6245006B2 (en) Test case generation apparatus, method, and program
JP6382284B2 (en) Data flow programming of computing devices with graph partitioning based on vector estimation
US7913209B1 (en) Determining a cycle basis of a directed graph
US8601459B2 (en) Control structure refinement of loops using static analysis
KR101837236B1 (en) Basic block size considering execution path exploration method and system for improving the code coverage
US20150058272A1 (en) Event correlation detection system
Kim et al. Performance evaluation and tuning for MapReduce computing in Hadoop distributed file system
KR20190070627A (en) Workflow apparatus for using process scheduler and method for operating workflow apparatus
US8762898B1 (en) Double patterning aware routing without stitching
CN111198766B (en) Database access operation deployment method, database access method and device
US9703920B2 (en) Intra-run design decision process for circuit synthesis
US9767411B2 (en) Rule discovery system, method, apparatus, and program
KR102462649B1 (en) Graph reformulation for effective community detection
KR101769247B1 (en) Method and apparatus for comparing strings using hierarchical interval tree
KR20200046363A (en) Apparatus and method for performing symbolic execution
JP5918102B2 (en) Analysis system, analysis apparatus, analysis method, and analysis program

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
J201 Request for trial against refusal decision
J301 Trial decision

Free format text: TRIAL NUMBER: 2016101004409; TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20160727

Effective date: 20180130

S901 Examination by remand of revocation
GRNO Decision to grant (after opposition)
GRNT Written decision to grant