KR101656358B1 - 클러스터 기반 프로그램 분석 방법 및 장치 - Google Patents

클러스터 기반 프로그램 분석 방법 및 장치 Download PDF

Info

Publication number
KR101656358B1
KR101656358B1 KR1020160048648A KR20160048648A KR101656358B1 KR 101656358 B1 KR101656358 B1 KR 101656358B1 KR 1020160048648 A KR1020160048648 A KR 1020160048648A KR 20160048648 A KR20160048648 A KR 20160048648A KR 101656358 B1 KR101656358 B1 KR 101656358B1
Authority
KR
South Korea
Prior art keywords
clusters
program
update
analysis
functions
Prior art date
Application number
KR1020160048648A
Other languages
English (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 KR1020160048648A priority Critical patent/KR101656358B1/ko
Application granted granted Critical
Publication of KR101656358B1 publication Critical patent/KR101656358B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/285Clustering or classification
    • G06F17/30598
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Databases & Information Systems (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Stored Programmes (AREA)

Abstract

클러스터 기반 프로그램 분석 방법 및 장치가 개시된다. 본 발명의 일 실시예에 따른 프로그램 분석 방법은 분석 대상이 되는 프로그램을 수신하는 단계; 상기 수신된 프로그램을 클러스터링하여 복수의 클러스터들로 분할하는 단계; 상기 분할된 클러스터들 각각에 대하여 분석을 수행하는 단계; 및 상기 클러스터들 각각에 대한 분석 결과를 통합하여 상기 프로그램의 분석 결과를 제공하는 단계를 포함한다.

Description

클러스터 기반 프로그램 분석 방법 및 장치 {Program Analysis Method Based on Cluster and Apparatus Therefor}
본 발명은 프로그램 분석 기술에 관한 것으로서, 보다 상세하게는 클러스터 기반으로 프로그램을 분석할 수 있는 클러스터 기반 프로그램 분석 방법 및 장치에 관한 것이다.
정보통신 기술의 발전은 우리 주변에 많은 전자제품에 많은 프로그램들이 탑재되어 사용되기 시작하였고, 이를 위해 많은 개발자들이 프로그램을 개발하고 있다. 물론, 전자제품 뿐만 아니라 다양한 분야에 적용하기 위한 다양한 프로그램들이 개발자들에 의해 개발되고 있다.
또한, 정보통신 기술의 급격한 발전이 가져온 컴퓨터 성능의 향상(또는 서버들의 성능 향상)을 통해 다양한 프로그램이 개발되고 있으며, 이러한 프로그램을 개발하는 개발자의 입장에서 일일이 테스트하여 문제를 찾아내기에는 많은 시간과 노력이 필요하게 된다.
종래 실시예에 따른 프로그램 분석 기술은, 프로그램 전체를 한번에 분석하여 분석 결과를 제공하기 때문에 멀티코어 환경을 활용하기 어렵고, 재분석이 요청되는 경우 프로그램 전체에 대해 다시 분석을 하는 문제점이 있다.
따라서, 멀티코어 환경에 적합하고, 재분석 시 분석 시간을 줄일 수 있는 방법의 필요성이 대두된다.
본 발명의 실시예들은, 클러스터 기반으로 프로그램을 분석할 수 있는 클러스터 기반 프로그램 분석 방법 및 장치를 제공한다.
본 발명의 실시예들은, 멀티코어를 이용한 클러스터 기반으로 프로그램을 분석함으로써, 분석 속도를 향상시킬 수 있는 클러스터 기반 프로그램 분석 방법 및 장치를 제공한다.
본 발명의 일 실시예에 따른 프로그램 분석 방법은 분석 대상이 되는 프로그램을 수신하는 단계; 상기 수신된 프로그램을 클러스터링하여 복수의 클러스터들로 분할하는 단계; 상기 분할된 클러스터들 각각에 대하여 병렬로 분석을 동시에 수행하는 단계; 및 상기 클러스터들 각각에 대한 분석 결과를 통합하여 상기 프로그램의 분석 결과를 제공하는 단계를 포함한다.
상기 클러스터들로 분할하는 단계는 상기 프로그램에 포함된 함수와 전역변수를 추출하고, 상기 추출된 함수와 전역변수에 기초하여 다른 함수로부터 호출되지 않은 함수인 최상위 함수들을 검출하며, 상기 검출된 최상위 함수들 각각으로 클러스터링함으로써, 상기 프로그램을 상기 복수의 클러스터들로 분할할 수 있다.
상기 클러스터들로 분할하는 단계는 상기 검출된 최상위 함수들을 기준으로 상기 함수와 상기 전역변수에 대한 의존성을 분석하고, 상기 분석된 의존성과 상기 최상위 함수들에 기초하여 상기 프로그램을 상기 복수의 클러스터들로 분할할 수 있다.
상기 클러스터들로 분할하는 단계는 상기 프로그램에 포함된 함수들 간의 의존성을 분석하고, 상기 분석된 의존성에 기초하여 상기 함수들 간의 간섭이 최소화되도록 상기 프로그램을 상기 복수의 클러스터들로 분할할 수 있다.
나아가, 본 발명의 일 실시예에 따른 프로그램 분석 방법은 상기 프로그램에 대한 업데이트 프로그램이 수신되는 경우 상기 업데이트 프로그램을 클러스터링하여 복수의 업데이트 클러스터들로 분할하는 단계; 상기 클러스터들과 상기 업데이트 클러스터들을 비교하여 상이한 업데이트 클러스터에 대하여 분석을 수행하는 단계; 및 상기 클러스터들 중 상기 업데이트 클러스터와 동일한 클러스터 각각에 대한 분석 결과와 상기 상이한 업데이트 클러스터 각각에 대한 분석 결과를 통합하여 상기 업데이트 프로그램의 분석 결과를 제공하는 단계를 더 포함할 수 있다.
본 발명의 일 실시예에 따른 프로그램 분석 장치는 분석 대상이 되는 프로그램을 수신하는 수신부; 상기 수신된 프로그램을 클러스터링하여 복수의 클러스터들로 분할하는 클러스터링부; 상기 분할된 클러스터들 각각에 대하여 분석을 수행하는 분석부; 및 상기 클러스터들 각각에 대한 분석 결과를 통합하여 상기 프로그램의 분석 결과를 제공하는 제공부를 포함한다.
상기 클러스터링부는 상기 프로그램에 포함된 함수와 전역변수를 추출하고, 상기 추출된 함수와 전역변수에 기초하여 다른 함수로부터 호출되지 않은 함수인 최상위 함수들을 검출하며, 상기 검출된 최상위 함수들 각각으로 클러스터링함으로써, 상기 프로그램을 상기 복수의 클러스터들로 분할할 수 있다.
상기 클러스터링부는 상기 검출된 최상위 함수들을 기준으로 상기 함수와 상기 전역변수에 대한 의존성을 분석하고, 상기 분석된 의존성과 상기 최상위 함수들에 기초하여 상기 프로그램을 상기 복수의 클러스터들로 분할할 수 있다.
상기 클러스터링부는 상기 프로그램에 포함된 함수들 간의 의존성을 분석하고, 상기 분석된 의존성에 기초하여 상기 함수들 간의 간섭이 최소화되도록 상기 프로그램을 상기 복수의 클러스터들로 분할할 수 있다.
상기 클러스터링부는 상기 프로그램에 대한 업데이트 프로그램이 수신되는 경우 상기 업데이트 프로그램을 클러스터링하여 복수의 업데이트 클러스터들로 분할하고, 상기 분석부는 상기 클러스터들과 상기 업데이트 클러스터들을 비교하여 상이한 업데이트 클러스터에 대하여 분석을 수행하며, 상기 제공부는 상기 클러스터들 중 상기 업데이트 클러스터와 동일한 클러스터 각각에 대한 분석 결과와 상기 상이한 업데이트 클러스터 각각에 대한 분석 결과를 통합하여 상기 업데이트 프로그램의 분석 결과를 제공할 수 있다.
본 발명의 실시예들에 따르면, 멀티코어를 이용한 클러스터 기반으로 프로그램을 분석하기 때문에 분석 속도를 향상시킬 수 있다.
본 발명의 실시예들에 따르면, 클러스터 기반으로 프로그램을 분석하기 때문에 프로그램을 재분석하는 경우 변경된 클러스터만을 분석하고, 변경되지 않은 클러스터에 대해서는 기존 분석 결과를 이용 가능하므로, 분석량을 최소화하여 재분석 시간을 줄일 수 있다.
도 1은 본 발명을 설명하기 위한 일 예시도를 나타낸 것이다.
도 2는 본 발명의 일 실시예에 따른 프로그램 분석 방법에 대한 동작 흐름도를 나타낸 것이다.
도 3은 본 발명의 일 실시예에 따른 프로그램 분석 방법에 대한 추가 동작 흐름도를 나타낸 것이다.
도 4는 도 2에 도시된 방법을 설명하기 위한 일 예시도를 나타낸 것이다.
도 5는 도 3에 도시된 방법을 설명하기 위한 일 예시도를 나타낸 것이다.
도 6은 본 발명의 일 실시예에 따른 프로그램 분석 장치에 대한 구성을 나타낸 것이다.
이하, 본 발명에 따른 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 그러나 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 또한, 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
본 발명의 실시예들은, 클러스터 기반으로 프로그램을 분석하여 멀티코어를 환경에 적용 가능하기 때문에 분석 속도를 향상시킬 수 있고, 프로그램을 재분석하는 경우 변경된 클러스터만을 분석하고, 변경되지 않은 클러스터에 대해서는 기존 분석 결과를 이용할 수 있기 때문에 분석량을 최소화하여 재분석 시간을 줄이는 것을 그 요지로 한다.
도 1은 본 발명을 설명하기 위한 일 예시도를 나타낸 것이다.
도 1에 도시된 바와 같이, 본 발명의 실시예에 따른 프로그램 분석 장치(100)는 분석 대상이 되는 프로그램을 입력으로 하고, 입력된 프로그램을 미리 결정된 기준에 따라 클러스터링하여 복수의 클러스터들로 분할한 후 분할된 클러스터들 각각에 대하여 멀티코어 환경으로 분석을 수행하며, 멀티코어 환경에서 각각 분석된 클러스터들의 분석 결과를 통합함으로써, 클러스터들 각각의 분석 결과가 통합된 프로그램의 분석 결과를 제공한다.
물론, 본 발명에 따른 프로그램 분석 장치는 본 발명의 실시예에 따른 프로그램 분석 방법에 의해 프로그램을 분석할 수 있으며, 이러한 본 발명에 따른 방법 및 장치에 대해 도 2 내지 도 6을 참조하여 설명한다.
도 2는 본 발명의 일 실시예에 따른 프로그램 분석 방법에 대한 동작 흐름도를 나타낸 것이다.
도 2를 참조하면, 본 발명의 실시예에 따른 방법은 분석하고자 하는 분석 대상이 되는 프로그램을 수신하고, 수신된 프로그램을 클러스터링하여 복수의 클러스터들로 분할한다(S210, S220).
여기서, 프로그램은 함수와 전역변수 등을 포함할 수 있으며, 단계 S220은 프로그램에 대한 플로우 분석과 같은 분석 결과에 기초하여 프로그램을 복수의 클러스터들로 분할할 수 있다.
예를 들어, 단계 S220은 프로그램의 함수 단위로 사용한 함수와 전역변수를 추출하고, 함수 단위로 추출된 함수와 전역변수에 기초하여 다른 함수로부터 호출되지 않은 함수인 최상위 함수들을 검출하며, 검출된 최상위 함수들 각각으로 클러스터링함으로써, 분석 대상 프로그램을 복수의 클러스터들로 분할할 수 있다.
이 때, 단계 S220은 최상위 함수들을 기준으로 함수와 전역변수에 대한 의존성을 분석하고, 분석된 의존성과 최상위 함수들에 기초하여 분석 대상 프로그램을 복수의 클러스터들로 분할할 수 있으며, 일 예로 의존성이 없는 단위로 프로그램을 클러스터들로 분할할 수 있다. 여기서, 의존성은 함수들 또는 전역변수들 간의 의존성(또는 간섭), 대상 함수와 호출 함수 간의 의존성 등을 포함할 수 있다.
나아가, 단계 S220은 최상위 함수별로 클러스터링하여 프로그램을 클러스터들로 분할할 수도 있지만, 이에 한정하지 않으며 미리 설정된 또는 지정된 함수에 대해서는 대상 함수와 호출 함수의 의존성을 분리하여 클러스터를 더 확장할 수도 있다.
또한, 단계 S220은 프로그램에 포함된 함수들 간의 의존성을 분석하고, 분석된 의존성에 기초하여 함수들 간의 간섭이 최소화되도록 프로그램을 복수의 클러스터들로 분할할 수도 있다.
물론, 단계 S220에 의해 프로그램이 복수의 클러스터들로 분할되면 분할된 클러스터들 각각에 대한 정보 또는 특성을 함께 저장함으로써, 인크리멘탈 분석(incremental analysis) 시 사용할 수 있도록 한다.
더 나아가, 단계 S220은 분석된 의존성(또는 간섭량)과 클러스터 수를 고려하여 프로그램을 복수의 클러스터들로 분할할 수 있다.
단계 S220에 의해 프로그램이 복수의 클러스터들로 분할되면 분할된 클러스터들 각각에 대하여 분석을 수행하고, 클러스터들 각각에 대해 수행된 분석 결과를 통합하여 분석 대상 프로그램의 분석 결과를 제공한다(S230, S240).
여기서, 단계 S230은 멀티코어 환경을 이용하여 각각의 코어에서 각각의 클러스터에 대해 분석을 수행할 수 있으며, 클러스터들 각각에 대한 분석은 미리 설정된 분석 방법을 이용하여 병렬적으로 수행될 수 있다. 물론, 본 발명에 따른 방법은 멀티코어를 이용하여 클러스터들 각각을 병렬적으로 분석하기 때문에 분석 속도를 향상시킬 수 있다.
도 2에 도시된 본 발명에 따른 방법에 대해 도 4를 참조하여 조금 더 설명하면 다음과 같다.
도 4에 도시된 바와 같이, 분석 대상 프로그램이 수신 또는 입력되고, 분석 대상 프로그램이 5개의 클러스터들 즉, 클러스터 1, 클러스터 2, 클러스터 3, 클러스터 4 및 클러스터 5로 분할되면 클러스터 1, 클러스터 2, 클러스터 3, 클러스터 4 및 클러스터 5 각각을 병렬적으로 분석하여 클러스터 1, 클러스터 2, 클러스터 3, 클러스터 4 및 클러스터 5 각각에 대한 분석 결과들 즉, 분석 결과 1, 분석 결과 2, 분석 결과 3, 분석 결과 4 및 분석 결과 5를 생성하고, 이렇게 생성된 분석 결과 1, 분석 결과 2, 분석 결과 3, 분석 결과 4 및 분석 결과 5를 통합함으로써, 분석 대상 프로그램에 대한 분석 결과를 제공한다.
여기서, 클러스터들 각각에 대한 분석 결과를 생성하는 분석기 각각은 미리 정해진 분석 방법을 통해 클러스터에 대한 분석 결과를 생성할 수 있으며, 분석 결과 통합은 프로그램을 클러스터들로 분할할 때의 분할 방식, 분할 기준 등을 고려하여 클러스터들 각각에 대한 분석 결과를 통합할 수 있다.
이와 같이, 본 발명의 실시예에 따른 방법은 멀티코어 환경에서 클러스터 기반으로 프로그램을 분석하기 때문에 프로그램의 분석 속도를 향상시킬 수 있다.
또한, 본 발명에 따른 방법은 분석 대상 프로그램을 업데이트하여 업데이트된 프로그램에 대한 재분석 시 인크리멘탈 분석을 수행할 수 있으며, 이에 대해 도 3과 도 5를 참조하여 설명한다.
도 3은 본 발명의 일 실시예에 따른 프로그램 분석 방법에 대한 추가 동작 흐름도를 나타낸 것이다.
도 5를 참조하면, 본 발명의 실시예에 따른 방법은 도 2에서 도시된 분석 대상 프로그램이 업데이트되어 업데이트된 프로그램이 수신되면 업데이트된 프로그램을 상술한 방식을 이용하여 복수의 클러스터들(이하, "업데이트 클러스터들"이라 칭함)로 분할한다(S310, S320).
여기서, 단계 S320은 업데이트 프로그램에 포함된 함수와 전역 변수 등을 이용하여 업데이트 프로그램에 대한 플로우 분석을 수행하고, 플로우 분석에 기초하여 업데이트 프로그램을 복수의 업데이트 클러스터들로 분할할 수 있다.
예컨대, 단계 S320은 업데이트 프로그램의 함수 단위로 사용한 함수와 전역변수를 추출하고, 함수 단위로 추출된 함수와 전역변수에 기초하여 다른 함수로부터 호출되지 않은 함수인 최상위 함수들을 검출하며, 검출된 최상위 함수들 각각으로 클러스터링함으로써, 업데이트 프로그램을 업데이트 클러스터들로 분할할 수 있다.
이 때, 단계 S320은 최상위 함수들을 기준으로 함수와 전역변수에 대한 의존성을 분석하고, 분석된 의존성과 최상위 함수들에 기초하여 업데이트 프로그램을 업데이트 클러스터들로 분할할 수 있다.
나아가, 단계 S320은 최상위 함수별로 클러스터링하여 업데이트 프로그램을 업데이트 클러스터들로 분할할 수도 있지만, 이에 한정하지 않으며 미리 설정된 또는 지정된 함수에 대해서는 대상 함수와 호출 함수의 의존성을 분리하여 업데이트 클러스터를 더 확장할 수도 있다.
또한, 단계 S320은 업데이트 프로그램에 포함된 함수들 간의 의존성을 분석하고, 분석된 의존성에 기초하여 함수들 간의 간섭이 최소화되도록 업데이트 프로그램을 업데이트 클러스터들로 분할할 수도 있다.
물론, 단계 S320에 의해 분할된 업데이트 클러스터들 각각에 대한 정보 또한 함께 생성될 수 있다.
단계 S320에 의해 업데이트 프로그램이 업데이트 클러스터들로 분할되면 분할된 업데이트 클러스터들 중 상술한 클러스터들에서 변경(또는 업데이트)되거나 추가된 업데이트 클러스터에 대해서만 분석을 수행한다(S330).
즉, 단계 S330은 상술한 클러스터들과 업데이트 클러스터들을 비교하여 업데이트 클러스터들 중 상이한 업데이트 클러스터에 대해서만 클러스터 분석을 수행한다.
예컨대, 도 5에 도시된 바와 같이, 업데이트 프로그램이 6개의 업데이트 클러스터들 즉, 클러스터 1, 클러스터 2, 클러스터 3-1, 클러스터 4-1, 클러스터 5 및 클러스터 6으로 분할되는 경우 클러스터 1, 클러스터 2와 클러스터 5는 기존 프로그램의 클러스터와 동일하고, 클러스터 3-1, 클러스터 4-1 및 클러스터 6은 기존 클러스터와 상이하기 때문에 상이한 업데이트 클러스터인 클러스터 3-1, 클러스터 4-1 및 클러스터 6에 대해서만 클러스터 분석을 수행하고, 기존 프로그램 클러스터와 동일한 클러스터인 클러스터 1, 클러스터 2와 클러스터 5에 대해서는 클러스터 분석을 수행하지 않고 기존에 분석된 분석 결과를 그대로 이용한다.
단계 S330은 프로그램의 변경 여부를 확인하여 변경된 경우 변경된 부분 예를 들어, 수정(또는 업데이트)된 클러스터, 추가된 클러스터에 대해서만 분석을 수행함으로써, 재분석 시간을 최소화할 수 있다.
단계 S330에 의해 상이한 업데이트 클러스터의 분석이 수행되면 상이한 업데이트 클러스터의 분석 결과와 이미 수행되어 저장된 동일 클러스터의 분석 결과를 통합하여 업데이트 프로그램의 분석 결과를 출력한다(S340).
예컨대, 도 5에 도시된 바와 같이, 기존 프로그램에 대해서 분석된 분석 결과 1, 분석 결과 2와 분석 결과 5를 불러오고, 불러온 분석 결과 1, 분석 결과 2와 분석 결과 5 그리고 상이한 업데이트 클러스터에 대해 분석된 분석 결과 3-1, 분석 결과 4-1과 분석 결과 6을 통합함으로써, 업데이트 프로그램에 대한 분석 결과를 제공한다.
이와 같이, 본 발명의 실시예에 따른 방법은 프로그램을 재분석 시 분할된 클러스터들 중 기존 프로그램과 상이한 클러스터에 대해서만 분석을 수행하고, 상이한 클러스터에 대한 분석 결과와, 기존 프로그램과 동일한 클러스터에 대해서는 기존 분석 결과를 이용하여 통합함으로써, 인크리멘탈 분석을 클러스터 기반으로 수행할 수 있고, 따라서 재분석에 필요한 분석량을 최소화하여 재분석 시간을 줄일 수 있다.
즉, 본 발명에 따른 방법은 프로그램에서 변경되지 않은 부분에 대해서는 재분석을 수행하지 않고, 변경된 부분에 대해서만 분석을 수행함으로써, 분석 속도를 높이고 편의성을 향상시킬 수 있다.
상술한 바와 같이, 본 발명에 따른 방법은 멀티코어 각각에서 클러스터 각각에 대한 분석을 수행하기 병렬적으로 수행할 수 있기 때문에 분석 속도를 향상시킬 수 있다. 물론, 코어의 수와 클러스터의 수에 따라 멀티 코어에 클러스터를 할당하는 방식이 달라질 수도 있다. 이에 대한 것은 본 발명의 요지를 흩트릴 수 있기 때문에 상세한 설명은 생략한다.
도 6은 본 발명의 일 실시예에 따른 프로그램 분석 장치에 대한 구성을 나타낸 것으로, 도 6은 상술한 도 2 내지 도 5의 동작을 수행하는 장치에 대한 구성을 나타낸 것이다.
도 6을 참조하면, 본 발명의 실시예에 따른 프로그램 분석 장치(600)는 수신부(610), 클러스터링부(620), 분석부(630) 및 제공부(640)를 포함한다.
수신부(610)는 분석하고자 하는 분석 대상이 되는 프로그램을 수신한다.
이 때, 수신부(610)는 해당 프로그램에 대한 변경 또는 업데이트 시 업데이트된 프로그램을 수신할 수 있다.
클러스터링부(620)는 프로그램을 클러스터링하여 복수의 클러스터들로 분할한다.
이 때, 클러스터링부(620)는 프로그램에 대한 플로우 분석과 같은 분석 결과에 기초하여 프로그램을 복수의 클러스터들로 분할할 수 있다
예를 들어, 클러스터링부(620)는 프로그램의 함수 단위로 사용한 함수와 전역변수를 추출하고, 함수 단위로 추출된 함수와 전역변수에 기초하여 다른 함수로부터 호출되지 않은 함수인 최상위 함수들을 검출하며, 검출된 최상위 함수들 각각으로 클러스터링함으로써, 분석 대상 프로그램을 복수의 클러스터들로 분할할 수 있다.
이 때, 클러스터링부(620)는 최상위 함수들을 기준으로 함수와 전역변수에 대한 의존성을 분석하고, 분석된 의존성과 최상위 함수들에 기초하여 분석 대상 프로그램을 복수의 클러스터들로 분할할 수 있으며, 일 예로 의존성이 없는 단위로 프로그램을 클러스터들로 분할할 수 있다.
나아가, 클러스터링부(620)는 최상위 함수별로 클러스터링하여 프로그램을 클러스터들로 분할할 수도 있지만, 이에 한정하지 않으며 미리 설정된 또는 지정된 함수에 대해서는 대상 함수와 호출 함수의 의존성을 분리하여 클러스터를 더 확장할 수도 있다.
더 나아가, 클러스터링부(620)는 프로그램에 포함된 함수들 간의 의존성을 분석하고, 분석된 의존성에 기초하여 함수들 간의 간섭이 최소화되도록 프로그램을 복수의 클러스터들로 분할할 수도 있다.
이 때, 클러스터링부(620)는 프로그램이 복수의 클러스터들로 분할되면 분할된 클러스터들 각각에 대한 정보 또는 특성을 함께 저장할 수도 있으며, 분석된 의존성(또는 간섭량)과 클러스터 수를 고려하여 프로그램을 복수의 클러스터들로 분할할 수 있다.
더 나아가, 클러스터링부(620)는 분석 대상 프로그램에 대한 업데이트 프로그램이 수신되는 경우 업데이트 프로그램을 복수의 업데이트 클러스터들로 분할할 수 있다. 물론, 클러스터링부(620)는 상술한 프로그램을 복수의 클러스터들로 분할하는 방식과 동일한 방식으로 업데이트 프로그램을 업데이트 클러스터들로 분할할 수 있다.
분석부(630)는 클러스터링부(620)에 의해 분할된 프로그램에 대한 클러스터들 각각에 대하여 분석을 수행함으로써, 클러스터들 각각에 대한 분석 결과를 생성한다.
이 때, 분석부(630)는 클러스터링부(620)에 의해 업데이트 프로그램을 업데이트 클러스터들로 분할하는 경우 기존 프로그램의 클러스터들과 상이한 클러스터에 해당하는 업데이트 클러스터만을 분석함으로써, 상이한 업데이트 클러스터에 대한 분석 결과를 생성할 수 있다.
제공부(640)는 분석부(630)에 의해 분석된 클러스터들 각각에 대한 분석 결과를 통합(또는 조합)하여 프로그램의 분석 결과를 제공한다.
이 때, 제공부(640)는 업데이트 프로그램의 경우 기존 프로그램과 동일한 클러스터에 대해서는 기존 클러스터의 분석 결과를 불러와서, 기존 클러스터의 분석 결과와 상이한 업데이트 클러스터의 분석 결과를 통합함으로써, 업데이트 프로그램의 분석 결과를 제공할 수 있다.
즉, 제공부(640)는 업데이트 프로그램의 경우 인크리멘탈 분석 방법을 이용하여 분석 결과를 제공할 수 있다.
이러한 본 발명의 실시예에 따른 장치는 도 6에서 설명한 내용에 한정되지 않으며, 상술한 도 2 내지 도 5에서 설명한 모든 내용을 포함할 수 있다.
이상에서 설명된 시스템 또는 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 시스템, 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, 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 (10)

  1. 수신부에서 분석 대상이 되는 프로그램을 수신하는 단계;
    클러스터링부에서 상기 수신된 프로그램을 클러스터링하여 복수의 클러스터들로 분할하는 단계;
    분석부에서 상기 분할된 클러스터들 각각에 대하여 분석을 수행하는 단계; 및
    제공부에서 상기 클러스터들 각각에 대한 분석 결과를 통합하여 상기 프로그램의 분석 결과를 제공하는 단계
    를 포함하고,
    상기 클러스터들로 분할하는 단계는
    상기 프로그램에 포함된 함수와 전역변수를 추출하고, 상기 추출된 함수와 전역변수에 기초하여 다른 함수로부터 호출되지 않은 함수인 최상위 함수들을 검출하며, 상기 검출된 최상위 함수들 각각으로 클러스터링함으로써, 상기 프로그램을 상기 복수의 클러스터들로 분할하는 프로그램 분석 방법.
  2. 삭제
  3. 제1항에 있어서,
    상기 클러스터들로 분할하는 단계는
    상기 검출된 최상위 함수들을 기준으로 상기 함수와 상기 전역변수에 대한 의존성을 분석하고, 상기 분석된 의존성과 상기 최상위 함수들에 기초하여 상기 프로그램을 상기 복수의 클러스터들로 분할하는 것을 특징으로 하는 프로그램 분석 방법.
  4. 삭제
  5. 제1항에 있어서,
    상기 클러스터링부에서 상기 프로그램에 대한 업데이트 프로그램이 수신되는 경우 상기 업데이트 프로그램을 클러스터링하여 복수의 업데이트 클러스터들로 분할하는 단계;
    상기 분석부에서 상기 클러스터들과 상기 업데이트 클러스터들을 비교하여 상이한 업데이트 클러스터에 대하여 분석을 수행하는 단계; 및
    상기 제공부에서 상기 클러스터들 중 상기 업데이트 클러스터와 동일한 클러스터 각각에 대한 분석 결과와 상기 상이한 업데이트 클러스터 각각에 대한 분석 결과를 통합하여 상기 업데이트 프로그램의 분석 결과를 제공하는 단계
    를 더 포함하는 것을 특징으로 하는 프로그램 분석 방법.
  6. 분석 대상이 되는 프로그램을 수신하는 수신부;
    상기 수신된 프로그램을 클러스터링하여 복수의 클러스터들로 분할하는 클러스터링부;
    상기 분할된 클러스터들 각각에 대하여 분석을 수행하는 분석부; 및
    상기 클러스터들 각각에 대한 분석 결과를 통합하여 상기 프로그램의 분석 결과를 제공하는 제공부
    를 포함하고,
    상기 클러스터링부는
    상기 프로그램에 포함된 함수와 전역변수를 추출하고, 상기 추출된 함수와 전역변수에 기초하여 다른 함수로부터 호출되지 않은 함수인 최상위 함수들을 검출하며, 상기 검출된 최상위 함수들 각각으로 클러스터링함으로써, 상기 프로그램을 상기 복수의 클러스터들로 분할하는 프로그램 분석 장치.
  7. 삭제
  8. 제6항에 있어서,
    상기 클러스터링부는
    상기 검출된 최상위 함수들을 기준으로 상기 함수와 상기 전역변수에 대한 의존성을 분석하고, 상기 분석된 의존성과 상기 최상위 함수들에 기초하여 상기 프로그램을 상기 복수의 클러스터들로 분할하는 것을 특징으로 하는 프로그램 분석 장치.
  9. 삭제
  10. 제6항에 있어서,
    상기 클러스터링부는
    상기 프로그램에 대한 업데이트 프로그램이 수신되는 경우 상기 업데이트 프로그램을 클러스터링하여 복수의 업데이트 클러스터들로 분할하고,
    상기 분석부는
    상기 클러스터들과 상기 업데이트 클러스터들을 비교하여 상이한 업데이트 클러스터에 대하여 분석을 수행하며,
    상기 제공부는
    상기 클러스터들 중 상기 업데이트 클러스터와 동일한 클러스터 각각에 대한 분석 결과와 상기 상이한 업데이트 클러스터 각각에 대한 분석 결과를 통합하여 상기 업데이트 프로그램의 분석 결과를 제공하는 것을 특징으로 하는 프로그램 분석 장치.
KR1020160048648A 2016-04-21 2016-04-21 클러스터 기반 프로그램 분석 방법 및 장치 KR101656358B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160048648A KR101656358B1 (ko) 2016-04-21 2016-04-21 클러스터 기반 프로그램 분석 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160048648A KR101656358B1 (ko) 2016-04-21 2016-04-21 클러스터 기반 프로그램 분석 방법 및 장치

Publications (1)

Publication Number Publication Date
KR101656358B1 true KR101656358B1 (ko) 2016-09-09

Family

ID=56939354

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160048648A KR101656358B1 (ko) 2016-04-21 2016-04-21 클러스터 기반 프로그램 분석 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101656358B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140282421A1 (en) * 2013-03-15 2014-09-18 Microsoft Corporation Distributed software validation

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140282421A1 (en) * 2013-03-15 2014-09-18 Microsoft Corporation Distributed software validation

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Mitchell, Brian S., and Spiros Mancoridis. "On the automatic modularization of software systems using the bunch tool." Software Engineering, IEEE Transactions on 32.3. 2006.3.* *

Similar Documents

Publication Publication Date Title
US8726255B2 (en) Recompiling with generic to specific replacement
CN107924323B (zh) 基于依赖的容器部署
US10997291B2 (en) Extending dynamic detection of malware using static and dynamic malware analyses
US8495598B2 (en) Control flow graph operating system configuration
KR101966514B1 (ko) 소프트웨어 정의 네트워크에서의 악성 프로그램 탐지 장치, 방법 및 컴퓨터 프로그램
US10303490B2 (en) Apparatus and method for optimizing startup of embedded system
US8856764B2 (en) Distributed static analysis of computer software applications
US8671397B2 (en) Selective data flow analysis of bounded regions of computer software applications
US20170212830A1 (en) Policy compliance of container images
KR101631242B1 (ko) 잠재 디리클레 할당을 이용한 악성 트래픽의 시그니처의 자동화된 식별 방법 및 장치
KR101530132B1 (ko) 기호 실행을 이용하는 바이너리 코드 실행 경로 확장 방법 및 장치
US10511645B2 (en) Dynamic stream operator fission and fusion with platform management hints
KR101428915B1 (ko) 안드로이드 보안을 위한 피드백 기반 어플리케이션 재가공 프레임워크 방법과 그 시스템
CN114631077B (zh) 用于使用配置对象来检测计算环境中软件应用的使用的自动化技术
KR101656358B1 (ko) 클러스터 기반 프로그램 분석 방법 및 장치
KR101876297B1 (ko) 전자 서명 검증 장치 및 방법
KR101995176B1 (ko) 프로그램 실행 컨텍스트 기반의 빅데이터를 활용한 역공학 방법 및 시스템
KR102009576B1 (ko) 처리 스케줄러를 이용한 워크플로우 장치 및 워크플로우 장치의 동작 방법
KR102323621B1 (ko) 펌웨어 퍼징 장치 및 방법
KR101691600B1 (ko) 공통 구조 변환 기반 프로그램 분석 방법 및 장치
US10642624B2 (en) System and method to transform an image of a container to an equivalent, bootable virtual machine image
KR101673151B1 (ko) 프로그램 소스 및 db 스키마의 연관 관계 변화 분석 방법 및 장치
KR102571477B1 (ko) 컨테이너의 실행시간 보안 프로파일 갱신을 위한 방법 및 시스템
KR101480244B1 (ko) 클래스 단위의 시그니처를 이용한 악성 어플리케이션 탐지 방법 및 장치
KR20220014230A (ko) 인공지능 기반 워크플로우 프로세스 시스템 및 장치

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant