KR20160090919A - 코드 커버리지 향상을 위한 베이직 블록 크기 감응 실행 경로 탐색 방법 및 시스템 - Google Patents

코드 커버리지 향상을 위한 베이직 블록 크기 감응 실행 경로 탐색 방법 및 시스템 Download PDF

Info

Publication number
KR20160090919A
KR20160090919A KR1020140193529A KR20140193529A KR20160090919A KR 20160090919 A KR20160090919 A KR 20160090919A KR 1020140193529 A KR1020140193529 A KR 1020140193529A KR 20140193529 A KR20140193529 A KR 20140193529A KR 20160090919 A KR20160090919 A KR 20160090919A
Authority
KR
South Korea
Prior art keywords
node
nodes
searched
execution path
determining
Prior art date
Application number
KR1020140193529A
Other languages
English (en)
Other versions
KR101837236B1 (ko
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/ko
Publication of KR20160090919A publication Critical patent/KR20160090919A/ko
Application granted granted Critical
Publication of KR101837236B1 publication Critical patent/KR101837236B1/ko

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

일 실시예에 따른 코드 커버리지(Code Coverage)를 향상시키기 위한 노드의 실행 경로를 탐색하는 방법은, 탐색 가능한 시작 노드를 판단하고, 상기 판단된 탐색 가능한 시작 노드 중 크기가 가장 큰 노드를 선택하는 단계; 및 상기 선택된 크기가 가장 큰 노드가 가리키는 복수의 경로 중 우선적으로 순회할 경로를 결정하는 단계를 포함할 수 있다.

Description

코드 커버리지 향상을 위한 베이지 블록 크기 감응 실행 경로 탐색 방법 및 시스템{BASIC BLOCK SIZE CONSIDERING EXECUTION PATH EXPLORATION METHOD AND SYSTEM FOR IMPROVING THE CODE COVERAGE}
아래의 설명은 실행 경로 탐색 기술에 관한 것으로, 코드 커버리지를 향상을 위한 실행 경로 탐색 방법에 관한 것이다.
기존의 실행 경로 탐색 엔진은 DFS(Depth-First Search) 또는 BFS(Breadth-First Search)와 같은 전통적인 그래프 순회 알고리즘(Classical Graph Traversal Algorithms)을 사용하였다. 하지만 프로그램의 실행 경로는 그래프의 일종이기는 하나 그래프의 극히 일부 노드를 집중적으로 여러 차례 호출하고 그 외의 노드에 대해서는 극소 호출되는 등 일반적인 그래프로 분류하기에는 어렵다고 알려져 있다. 다시 말해서, 기존의 연구 기술은 전통적인 그래프 순회 알고리즘을 주로 사용하였기 때문에 비록 실행 경로 탐색을 올바르게 수행한다 하더라도 이것이 최적화되어 효율적으로 동작한다고 보기는 어렵다.
KLEE. KLEE는 실행 경로 탐색 엔진의 일종으로 실행 경로 탐색 과정에서 DFS와 BFS와 같은 전통적인 그래프 순회 알고리즘과 무작위하게 탐색하는 Random Search 탐색 기능 또한 제공하고 있다. KLEE가 랜덤 탐색을 제공하는 이유는 프로그램의 실행 경로 탐색은 DFS나 BFS와 같은 전통적인 실행 경로 탐색 플랫폼으로는 올바르게 분석되지 않는 사례가 유의미하게 존재하기 때문이며, 문제를 줄이기 위해 무작위로 탐색하는 랜덤 탐색 방법을 제공하고 있다. 하지만 랜덤 탐색은 상기 문제에 대한 미봉책이며, 실행 경로 탐색 과정에서 전통적인 그래프 순회 알고리즘을 사용함으로써 발생하는 문제를 완전히 해결했다고 보기는 어렵다.
BitBlaze. BitBlaze는 취약점 검사에 특화된 실행 경로 탐색 엔진의 일종으로, 실행 경로 탐색 과정에서 DFS와 BFS를 혼합하여 사용한다. BitBlaze는 Many Core를 지원하며, 분석 Job 분배 과정에서 BFS를 통해 큰 Work을 여러 개의 소단위 Job으로 나눈다. 각 분석 Core에서 할당받은 Job은 DFS를 통해 실행 경로 탐색을 수행한다. 다시 말해서, BitBlaze는 실행 경로 탐색 과정에서 DFS와 BFS 모두 사용하지만, BFS는 문제를 작은 단위로 자를 때 사용하며 실질적인 탐색은 DFS에 의존하고 있다. 따라서 BitBlaze 또한 KLEE에서 발생하는 문제를 동일하게 가지고 있다고 볼 수 있다.
한국공개특허 제10-2013-0088584호는 트리의 경로를 탐색하는 방법에 대하여 개시하고 있다.
본 발명의 일 실시예에 따라 실행 경로 탐색에 최적화된 알고리즘을 제안하며, 큰 베이직 블록을 우선적으로 탐색하여 실행 경로를 탐색하여 코드 커버리지 향상을 최적화하는 방법 및 시스템을 제공할 수 있다.
일 실시예에 따른 코드 커버리지(Code Coverage)를 향상시키기 위한 노드의 실행 경로를 탐색하는 방법은, 탐색 가능한 시작 노드를 판단하고, 상기 판단된 탐색 가능한 시작 노드 중 크기가 가장 큰 노드를 선택하는 단계; 및 상기 선택된 크기가 가장 큰 노드가 가리키는 복수의 경로 중 우선적으로 순회할 경로를 결정하는 단계를 포함할 수 있다.
일측에 따르면, 상기 탐색 가능한 시작 노드를 판단하고, 상기 판단된 탐색 가능한 시작 노드 중 크기가 가장 큰 노드를 선택하는 단계는, 실행 경로를 탐색하기 위한 탐색 반복(Iteration)이 시작될 때마다 최초로 탐색 가능한 노드 중에서 크기가 가장 큰 노드를 우선적으로 탐색하는 단계를 포함할 수 있다.
또 다른 일측에 따르면, 상기 탐색 가능한 시작 노드를 판단하고, 상기 판단된 탐색 가능한 시작 노드 중 크기가 가장 큰 노드를 선택하는 단계는, 상기 탐색 반복의 시작 노드로 사용할 수 있는지 판단하기 위하여 프로빙(Probing) 과정을 수행하여 복수 개의 노드 정보를 수집하는 단계를 포함할 수 있다.
또 다른 일측에 따르면, 상기 탐색 가능한 시작 노드를 판단하고, 상기 판단된 탐색 가능한 시작 노드 중 크기가 가장 큰 노드를 선택하는 단계는, 탐색되지 않은 노드들의 정보를 수집 및 가공하고, 상기 탐색되지 않은 노드를 시작 노드로 사용할 수 있는지 판단하여 저장하는 단계를 포함할 수 있다.
또 다른 일측에 따르면, 상기 선택된 크기가 가장 큰 노드가 가리키는 복수의 경로 중 우선적으로 순회할 경로를 결정하는 단계는, 복수 개의 노드 모두 탐색되는지 여부를 판단하는 단계; 및 상기 복수 개의 노드 모두 탐색되지 않은 경우, 상기 탐색되지 않은 노드 중 크기가 큰 노드를 선택하는 단계를 포함할 수 있다.
또 다른 일측에 따르면, 상기 선택된 크기가 가장 큰 노드가 가리키는 복수의 경로 중 우선적으로 순회할 경로를 결정하는 단계는, 상기 복수 개의 노드 모두 탐색됨에 따라 현재 상태의 노드를 선택하는 단계; 및 상기 복수 개의 노드 중 적어도 하나의 노드가 탐색된 경우, 상기 탐색되지 않은 노드를 선택하는 단계를 포함할 수 있다.
일 실시예에 따른 코드 커버리지(Code Coverage)를 향상시키기 위한 노드의 경로를 탐색하는 장치는, 탐색 가능한 시작 노드를 판단하고, 상기 판단된 탐색 가능한 시작 노드 중 크기가 가장 큰 노드를 선택하는 선택부; 및 상기 선택된 크기가 가장 큰 노드가 가리키는 복수의 경로 중 우선적으로 순회할 경로를 결정하는 결정부를 포함할 수 있다.
일측에 따르면, 상기 선택부는, 실행 경로를 탐색하기 위한 탐색 반복(Iteration)이 시작될 때마다 최초로 탐색 가능한 노드 중에서 크기가 가장 큰 노드를 우선적으로 탐색할 수 있다.
또 다른 일측에 따르면, 상기 선택부는, 상기 탐색 반복의 시작 노드로 사용할 수 있는지 판단하기 위하여 프로빙(Probing) 과정을 수행하여 복수 개의 노드 정보를 수집할 수 있다.
또 다른 일측에 따르면, 상기 선택부는, 탐색되지 않은 노드들의 정보를 수집 및 가공하고, 상기 탐색되지 않은 노드를 시작 노드로 사용할 수 있는지 판단하여 저장할 수 있다.
또 다른 일측에 따르면, 상기 결정부는, 복수 개의 노드 모두 탐색되는지 여부를 판단하고, 상기 복수 개의 노드 모두 탐색되지 않은 경우 상기 탐색되지 않은 노드 중 상기 크기가 큰 노드를 선택할 수 있다.
또 다른 일측에 따르면, 상기 결정부는, 상기 복수 개의 노드 모두 탐색됨에 따라 현재 상태의 노드를 선택하고, 상기 복수 개의 노드 중 적어도 하나의 노드가 탐색된 경우, 상기 탐색되지 않은 노드를 선택할 수 있다.
일 실시예에 따른 실행 경로 탐색 장치는 경로 탐색 과정에서 탐색 반복 횟수에 대비하여 선형적으로 코드 커버리지가 향상될 수 있다. 반면 기존의 전통적인 그래프 탐색 알고리즘 중 하나인 DFS는 분석 반복이 증가함에 따라 코드 커버리지의 확장 정도가 낮아지는 현상을 관측할 수 있다.
도 1은 일 실시예에 따른 실행 경로 탐색 장치의 실행 경로 탐색 방법을 나타낸 흐름도이다.
도 2는 도 1에 도시된 단계 120을 보다 구체적으로 설명하기 위한 도면이다.
도 3은 일 실시예에 따른 실행 경로 탐색 장치의 선택 알고리즘을 설명하기 위한 예이다.
도 4는 도 1에 도시된 단계 140을 보다 구체적으로 설명하기 위한 도면이다.
도 5는 일 실시예에 따른 실행 경로 탐색 장치의 결정 알고리즘을 설명하기 위한 예이다.
도 6은 일 실시예에 따른 실행 경로 탐색 장치를 나타낸 블록도이다.
이하, 실시예를 첨부한 도면을 참조하여 상세히 설명한다.
도 1은 일 실시예에 따른 실행 경로 탐색 장치의 실행 경로 탐색 방법을 나타낸 흐름도이다.
실행 경로 탐색 장치는 큰 베이직 블록을 우선적으로 탐색한다는 의미에서 Size-First Search(SFS) Algorithm이라 명명할 수 있으며, SFS는 결정 알고리즘(Decision Algorithm) 및 선택 알고리즘(Selection Algorithm)이라는 두 개의 서브 알고리즘(Sub-Algorithm)으로 구성될 수 있다.
도 1내지 도 5에서는 노드가 두 개의 아웃고잉 엣지(Outgoing Edge)를 가지고 있는 경우를 예를 들어 설명하지만, 노드는 복수 개의 아웃고잉 엣지를 가지고 있을 수 있다.
단계(110)에서 실행 경로 탐색 장치는 프로빙 과정을 수행할 수 있다. 이때, 프로빙이란, 탐색 과정에서 아직 탐색되지 않은 노드들의 정보를 수집 및 가공하는 과정으로, 탐색되지 않은 노드를 먼저 바라보고(Look Ahead) 상기 노드의 크기를 조사하여 분석 반복(Iteration)의 시작 노드로 사용할 수 있는지를 판단하여 저장할 수 있다. 상기 저장된 정보는 결정 알고리즘과 선택 알고리즘에서 사용될 수 있다.
단계(120)에서 실행 경로 탐색 장치는 선택 알고리즘을 수행할 수 있다. 실행 경로 탐색 장치는 탐색 가능한 시작 노드를 판단하고, 판단된 탐색 가능한 시작 노드 중 크기가 가장 큰 노드를 선택할 수 있다. 이때, 경로 탬색 장치는 실행 경로를 탐색하기 위한 탐색 반복이 시작될 때마다 최초로 탐색 가능한 노드 중에서 크기가 가장 큰 노드를 우선적으로 탐색할 수 있다.
도 2는 도 1에 도시된 단계 120을 보다 구체적으로 설명하기 위한 도면으로, 선택 알고리즘에 대하여 좀 더 구체적으로 설명하고자 한다.
단계(210)에서 실행 경로 탐색 장치는 탐색 가능한 시작 노드가 있는지를 판단할 수 있다. 이때, 탐색 가능한 시작 노드가 있다면, 단계(211)의 탐색 가능한 시작 노드 중 크기가 가장 큰 노드를 선택할 수 있다. 또한, 탐색 가능한 시작 노드가 없다면, 단계(212)에서 노드를 선택하지 않는다.
도 3은 일 실시예에 따른 실행 경로 탐색 장치의 선택 알고리즘을 설명하기 위한 예를 나타낸 것으로, 크기(Size)가 4인 노드, 크기가 16인 노드, 크기가 8인 노드 및 크기가 0인 노드가 있다고 가정하자.
선택 알고리즘은 매 실행 경로 탐색 반복이 시작될 때마다 적용될 수 있으며, 최초로 탐색 가능한 노드 중 가장 크기가 큰 노드를 먼저 탐색할 수 있다. 이때, 어떤 노드가 어떠한 크기를 가졌는지, 탐색 반복의 시작 노드로 사용할 수 있는지는 단계(110)에서 설명한 바와 같이 프로빙 과정을 통하여 정보를 수집할 수 있다.
일 실시예에 따른 실행 경로 탐색 장치는 선택 알고리즘을 통하여 최초로 탐색 가능한 노드 중에서 가장 크기가 큰 노드는 크기가 16인 노드이므로 크기가 16인 노드를 먼저 탐색하게 된다.
단계(130)에서 실행 경로 탐색 장치는 현재 노드가 두 개의 아웃고잉 엣지(Outgoing Edge)를 가지고 있는지 판단할 수 있다. 도 1에서는 노드가 두 개의 아웃고잉 엣지를 가진 경우를 예를 들어 설명하지만, 복수 개의 아웃고잉 엣지를 포함하는 경우에도 동일하게 적용될 수 있으며, 아웃고잉 엣지의 개수에 제한되지 않는다. 이때, 실행 경로 탐색 장치는 현재 노드가 두 개의 아웃고잉 엣지를 가지고 있다면, 단계(140)에서 결정 알고리즘을 수행할 수 있으며, 현재 노드가 두 개의 아웃고잉 엣지를 가지고 있지 않다면 단계(140)을 수행하지 않고 단계(150)을 수행할 수 있다.
단계(140)에서 실행 경로 탐색 장치는 결정 알고리즘을 수행할 수 있다. 실행 경로 탐색 장치는 선택된 크기가 가장 큰 노드가 가리키는 복수의 경로 중 우선적으로 순회할 경로를 결정할 수 있다. 이때, 실행 경로 탐색 장치는 매 노드의 탐색시마다 결정 알고리즘이 적용될 수 있으며, 현재 노드가 가리키는 두 개의 경로 중 어떤 경로를 선택할 것인지를 결정할 수 있다.
도 4는 도 1에 도시된 단계 140을 보다 구체적으로 설명하기 위한 도면으로, 결정 알고리즘에 대하여 상세히 설명하기로 한다.
단계(410)에서 실행 경로 탐색 장치는 분기문이 가리키는 두 노드 모두 탐색되지 않았는지 판단할 수 있다. 이때, 분기문이 가리키는 두 노드 모두 탐색되지 않았다면, 단계(411)에서 탐색되지 않은 두 노드 중 큰 노드를 선택할 수 있다. 또한, 분기문이 가리키는 두 노드 중 적어도 하나 이상의 노드가 탐색되었다면 단계(420)의 두 노드 모두 탐색되었는지 판단할 수 있다.
단계(420)에서 실행 경로 탐색 장치는 두 노드 모두 탐색되었는지 판단할 수 있고, 두 노드 모두 탐색되었다면, 단계(421)의 현재 상태의 노드를 선택할 수 있고, 두 노드 중 적어도 하나의 노드가 탐색되었다면, 단계(430)의 탐색되지 않은 노드를 선택할 수 있다.
도 5는 일 실시예에 따른 실행 경로 탐색 장치의 결정 알고리즘을 설명하기 위한 예를 나타낸 것으로, 크기가 4인 노드와 크기가 8인 노드가 있다고 가정하자.
결정 알고리즘은 매 노드의 탐색시마다 적용되며, 현재 노드가 가리키는 두 개의 경로 중 어떤 경로를 선택할 것인지를 결정할 수 있다. 만약 두 개의 경로 모두 탐색되지 않았다면 큰 노드를 탐색하며, 하나의 노드가 이미 탐색되었다면 탐색되지 않은 다른 노드를 탐색하며, 두 노드 모두 탐색되었다면 현재 상태를 유지한 채 분석을 진행할 수 있다.
이에 따라 실행 경로 탐색 장치는 결정 알고리즘을 통하여 크기가 8인 노드를 먼저 탐색하게 된다.
예를 들면, 현재 노드가 가리키는 두 개의 노드 중 어떤 노드를 먼저 탐색할 것인지를 결정할 수 있다. 첫째, 두 노드 모두 탐색되지 않았을 경우, 크기가 큰 노드를 탐색할 수 있다. 이때, 두 노드의 크기가 같다면 임의의 실행 경로 변경 없이 탐색할 수 있다. 둘째, 두 노드 중 하나가 이미 탐색된 경우, 탐색되지 않은 노드를 탐색할 수 있다. 셋재, 두 노드 모두 탐색된 경우, 임의의 실행 경로 변경 없이 탐색할 수 있다.
단계(150)에서 실행 경로 탐색 장치는 노드를 탐색할 수 있다. 이때, 실행 경로 탐색 장치는 단계(130)에서 현재 노드가 두 개의 아웃고잉 엣지를 가지고 있지 않다면 단계(150)의 노드를 탐색하는 것을 수행할 수 있다. 또한, 결정 알고리즘을 통하여 결정된 노드를 탐색함으로써 단계(150)을 수행할 수 있다.
단계(160)에서 실행 경로 탐색 장치는 더 이상 새로운 노드가 발견되었는지 여부를 판단할 수 있다. 이때, 새로운 노드가 발견되지 않았다면 경로 탐색을 종료할 수 있고, 새로운 노드가 발견되었다면 단계(130)에서 단계(160)을 다시 수행할 수 있다.
일 실시예에 따른 실행 경로 탐색 장치는 실행 경로 탐색 과정에서 탐색 반복 횟수에 대비하여 선형적으로 코드 커버리지가 향상될 수 있다.
도 6은 일 실시예에 따른 실행 경로 탐색 장치를 나타낸 블록도이다.
도 6을 참조하면, 본 발명의 일 실시예에 따른 실행 경로 탐색 장치(600)는 큰 베이직 블록을 우선적으로 탐색하기 위한 장치로서, 프로세서(610), 네트워크 인터페이스(630) 및 메모리(640)를 포함할 수 있다.
네트워크 인터페이스(630)는 여러 입력 장치들, 출력 장치들과 상기 장치와의 통신 인터페이스와, 외부의 다른 장치들과의 통신 인터페이스를 포함할 수 있다.
프로세서(610)는 탐색 반복의 시작 노드로 사용할 수 있는지 판단하기 위하여 포로빙 과정을 수행하여 복수 개의 노드 정보를 수집하고, 이를 메모리(630)에 로딩한다. 이때, 데이터베이스(650)는 탐색되지 않은 노드들의 정보를 수집 및 가공하고, 탐색되지 않은 노드를 시작 노드로 사용할 수 있는지 판단하여 저장할 수 있다.
선택부(611)는 탐색 가능한 시작 노드를 판단하고, 판단된 탐색 가능한 시작 노드 중 크기가 가장 큰 노드를 선택할 수 있다. 선택부(611)는 실행 경로를 탐색하기 위한 탐색 반복이 시작될 대마다 최초로 탐색 가능한 노드 중에서 크기가 가장 큰 노드를 우선적으로 탐색할 수 있다.
결정부(612)는 선택된 크기가 가장 큰 노드가 가리키는 복수의 경로 중 우선적으로 순회할 경로를 결정할 수 있다. 결정부(612)는 복수 개의 노드 모두 탐색되는지 여부를 판단할 수 있고, 복수 개의 노드 모두 탐색되지 않은 경우, 탐색되지 않은 노드 중 크기가 큰 노드를 선택할 수 있다. 결정부(612)는 복수 개의 노드 모두 탐색됨에 따라 현재 상태의 노드를 선택할 수 있고, 복수 개의 노드 중 적어도 하나의 노드가 탐색된 경우, 탐색되지 않은 노드를 선택할 수 있다.
일 실시예에 따른 실행 경로 탐색 장치는 소프트웨어 테스팅 도구, 소프트웨어 취약점 분석 도구 및 악성코드 분석 도구 등에 적용될 수 있다. 이에 따라 실행 경로 탐색 장치는 실행 경로 탐색에 최적화된 알고리즘을 통하여 큰 베이직 블록을 우선적으로 탐색함으로써 코드 커버리지를 향상시킬 수 있다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPA(field programmable array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (12)

  1. 코드 커버리지(Code Coverage)를 향상시키기 위한 노드의 실행 경로를 탐색하는 방법에 있어서,
    탐색 가능한 시작 노드를 판단하고, 상기 판단된 탐색 가능한 시작 노드 중 크기가 가장 큰 노드를 선택하는 단계; 및
    상기 선택된 크기가 가장 큰 노드가 가리키는 복수의 경로 중 우선적으로 순회할 경로를 결정하는 단계
    를 포함하는 실행 경로 탐색 방법.
  2. 제1항에 있어서,
    상기 탐색 가능한 시작 노드를 판단하고, 상기 판단된 탐색 가능한 시작 노드 중 크기가 가장 큰 노드를 선택하는 단계는,
    상기 실행 경로를 탐색하기 위한 탐색 반복(Iteration)이 시작될 때마다 최초로 탐색 가능한 노드 중에서 크기가 가장 큰 노드를 우선적으로 탐색하는 단계
    를 포함하는 실행 경로 탐색 방법.
  3. 제2항에 있어서,
    상기 탐색 가능한 시작 노드를 판단하고, 상기 판단된 탐색 가능한 시작 노드 중 크기가 가장 큰 노드를 선택하는 단계는,
    상기 탐색 반복의 시작 노드로 사용할 수 있는지 판단하기 위하여 프로빙(Probing) 과정을 수행하여 복수 개의 노드 정보를 수집하는 단계
    를 포함하는 실행 경로 탐색 방법.
  4. 제3항에 있어서,
    상기 탐색 가능한 시작 노드를 판단하고, 상기 판단된 탐색 가능한 시작 노드 중 크기가 가장 큰 노드를 선택하는 단계는,
    탐색되지 않은 노드들의 정보를 수집 및 가공하고, 상기 탐색되지 않은 노드를 시작 노드로 사용할 수 있는지 판단하여 저장하는 단계
    를 포함하는 실행 경로 탐색 방법.
  5. 제1항에 있어서,
    상기 선택된 크기가 가장 큰 노드가 가리키는 복수의 경로 중 우선적으로 순회할 경로를 결정하는 단계는,
    복수 개의 노드 모두 탐색되는지 여부를 판단하는 단계; 및
    상기 복수 개의 노드 모두 탐색되지 않은 경우, 상기 탐색되지 않은 노드 중 크기가 큰 노드를 선택하는 단계
    를 포함하는 실행 경로 탐색 방법.
  6. 제5항에 있어서,
    상기 선택된 크기가 가장 큰 노드가 가리키는 복수의 경로 중 우선적으로 순회할 경로를 결정하는 단계는,
    상기 복수 개의 노드 모두 탐색됨에 따라 현재 상태의 노드를 선택하는 단계; 및
    상기 복수 개의 노드 중 적어도 하나의 노드가 탐색된 경우, 상기 탐색되지 않은 노드를 선택하는 단계
    를 포함하는 실행 경로 탐색 방법.
  7. 코드 커버리지(Code Coverage)를 향상시키기 위한 노드의 경로를 탐색하는 장치에 있어서,
    탐색 가능한 시작 노드를 판단하고, 상기 판단된 탐색 가능한 시작 노드 중 크기가 가장 큰 노드를 선택하는 선택부; 및
    상기 선택된 크기가 가장 큰 노드가 가리키는 복수의 경로 중 우선적으로 순회할 경로를 결정하는 결정부
    를 포함하는 실행 경로 탐색 장치.
  8. 제7항에 있어서,
    상기 선택부는,
    상기 실행 경로를 탐색하기 위한 탐색 반복(Iteration)이 시작될 때마다 최초로 탐색 가능한 노드 중에서 크기가 가장 큰 노드를 우선적으로 탐색하는
    실행 경로 탐색 장치.
  9. 제8항에 있어서,
    상기 선택부는,
    상기 탐색 반복의 시작 노드로 사용할 수 있는지 판단하기 위하여 프로빙(Probing) 과정을 수행하여 복수 개의 노드 정보를 수집하는
    실행 경로 탐색 장치.
  10. 제9항에 있어서,
    상기 선택부는,
    탐색되지 않은 노드들의 정보를 수집 및 가공하고, 상기 탐색되지 않은 노드를 시작 노드로 사용할 수 있는지 판단하여 저장하는
    실행 경로 탐색 장치.
  11. 제7항에 있어서,
    상기 결정부는,
    복수 개의 노드 모두 탐색되는지 여부를 판단하고, 상기 복수 개의 노드 모두 탐색되지 않은 경우 상기 탐색되지 않은 노드 중 상기 크기가 큰 노드를 선택하는
    실행 경로 탐색 장치.
  12. 제11항에 있어서,
    상기 결정부는,
    상기 복수 개의 노드 모두 탐색됨에 따라 현재 상태의 노드를 선택하고, 상기 복수 개의 노드 중 적어도 하나의 노드가 탐색된 경우, 상기 탐색되지 않은 노드를 선택하는
    실행 경로 탐색 장치.
KR1020140193529A 2014-12-30 2014-12-30 코드 커버리지 향상을 위한 베이직 블록 크기 감응 실행 경로 탐색 방법 및 시스템 KR101837236B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020140193529A KR101837236B1 (ko) 2014-12-30 2014-12-30 코드 커버리지 향상을 위한 베이직 블록 크기 감응 실행 경로 탐색 방법 및 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140193529A KR101837236B1 (ko) 2014-12-30 2014-12-30 코드 커버리지 향상을 위한 베이직 블록 크기 감응 실행 경로 탐색 방법 및 시스템

Publications (2)

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

Family

ID=56708100

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140193529A KR101837236B1 (ko) 2014-12-30 2014-12-30 코드 커버리지 향상을 위한 베이직 블록 크기 감응 실행 경로 탐색 방법 및 시스템

Country Status (1)

Country Link
KR (1) KR101837236B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200088155A (ko) * 2019-01-14 2020-07-22 한국전자통신연구원 이기종 온디바이스 시스템에서의 그래프 기반 영상 처리 모델 실행 최적화 장치 및 그 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200088155A (ko) * 2019-01-14 2020-07-22 한국전자통신연구원 이기종 온디바이스 시스템에서의 그래프 기반 영상 처리 모델 실행 최적화 장치 및 그 방법

Also Published As

Publication number Publication date
KR101837236B1 (ko) 2018-04-20

Similar Documents

Publication Publication Date Title
JP4485330B2 (ja) 回路の有向ファルシフィケーション
US11263116B2 (en) Champion test case generation
US8327325B2 (en) Programmable framework for automatic tuning of software applications
KR101966514B1 (ko) 소프트웨어 정의 네트워크에서의 악성 프로그램 탐지 장치, 방법 및 컴퓨터 프로그램
US20190384697A1 (en) Branch coverage guided symbolic execution for hybrid fuzz testing of software binaries
JP2019204482A (ja) 並行脆弱性検出
US20080147589A1 (en) Method and System for Optimizing Configuration Classification of Software
KR101535813B1 (ko) 복합 이벤트 처리를 위한 이벤트 구성 규칙의 동적 업데이트를 위한 시스템 및 방법
GB2530516A (en) Intelligent Software Test Augmenting
US20180121544A1 (en) Apparatus and method for enhancing regular expression search performance through cost-based optimization technique
WO2018054221A1 (en) Pipeline dependent tree query optimizer and scheduler
US20170277887A1 (en) Information processing apparatus, information processing method, and computer readable medium
US20120095986A1 (en) Runtime optimization of spatiotemporal events processing background
JP2015176230A (ja) テストケース生成装置、方法、及びプログラム
US8601459B2 (en) Control structure refinement of loops using static analysis
US9552284B2 (en) Determining valid inputs for an unknown binary program
KR101962250B1 (ko) 재구성가능 아키텍처를 위한 스케줄러 및 스케줄링 방법
US20150058272A1 (en) Event correlation detection system
KR101837236B1 (ko) 코드 커버리지 향상을 위한 베이직 블록 크기 감응 실행 경로 탐색 방법 및 시스템
Kim et al. Performance evaluation and tuning for MapReduce computing in Hadoop distributed file system
KR20190070627A (ko) 처리 스케줄러를 이용한 워크플로우 장치 및 워크플로우 장치의 동작 방법
US8762898B1 (en) Double patterning aware routing without stitching
CN111198766B (zh) 数据库访问操作部署方法、数据库访问方法及装置
KR102046249B1 (ko) 머신러닝 기반 악성코드 탐지를 위한 특성선정 방법 및 이를 수행하기 위한 기록매체 및 장치
JPH1040112A (ja) 動的情報利用型プログラム最適化装置

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