KR101691600B1 - 공통 구조 변환 기반 프로그램 분석 방법 및 장치 - Google Patents

공통 구조 변환 기반 프로그램 분석 방법 및 장치 Download PDF

Info

Publication number
KR101691600B1
KR101691600B1 KR1020160052018A KR20160052018A KR101691600B1 KR 101691600 B1 KR101691600 B1 KR 101691600B1 KR 1020160052018 A KR1020160052018 A KR 1020160052018A KR 20160052018 A KR20160052018 A KR 20160052018A KR 101691600 B1 KR101691600 B1 KR 101691600B1
Authority
KR
South Korea
Prior art keywords
language
object type
data
type intermediate
common object
Prior art date
Application number
KR1020160052018A
Other languages
English (en)
Other versions
KR101691600B9 (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 KR1020160052018A priority Critical patent/KR101691600B1/ko
Application granted granted Critical
Publication of KR101691600B1 publication Critical patent/KR101691600B1/ko
Publication of KR101691600B9 publication Critical patent/KR101691600B9/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

공통 구조 변환 기반 프로그램 분석 방법 및 장치가 개시된다. 본 발명의 일 실시예에 따른 프로그램 분석 방법은 프로그램의 소스 파일을 수신하는 단계; 상기 소스 파일의 프로그래밍 언어를 파싱하여 상기 소스 파일에 대한 파싱 데이터를 추출하는 단계; 미리 설정된 복수의 프로그래밍 언어들에 대해 공통 구조를 가지도록 미리 정의된 공통 객체형 중간 언어와 상기 파싱 데이터에 기초하여 상기 파싱 데이터를 상기 공통 객체형 중간 언어의 통합 데이터로 변환하는 단계; 및 상기 변환된 통합 데이터를 분석하여 상기 소스 파일에 대한 분석 결과를 제공하는 단계를 포함한다.

Description

공통 구조 변환 기반 프로그램 분석 방법 및 장치 {Program Analysis Method Based on Common Structure Transformation and Apparatus Therefor}
본 발명은 프로그램 분석 기술에 관한 것으로서, 보다 상세하게는 프로그래밍 언어들에 대해 공통 구조를 가지도록 미리 정의된 공통 객체형 중간 언어(common objective intermediate language)를 이용하여 다양한 프로그래밍 언어들에 의해 작성된 프로그램들을 효율적으로 분석할 수 있는 공통 구조 변환 기반 프로그램 분석 방법 및 장치에 관한 것이다.
최근 소프트웨어시스템은 다양한 언어를 사용한 소프트웨어부품을 유기적으로 결합하여 개발된다.
소스 코드에 기반한 프로그램 정적 분석(program static analysis)을 이러한 소프트웨어시스템에 적용하기 위한 종래 일 실시예의 기술은 다양한 언어로 작성된 소프트웨어시스템을 한번에 모두 직접 처리하는 방법으로, 이 방법은 구현이 매우 복잡하여 만들기 어려울 뿐 아니라, 구현 및 유지보수 차원에서 효율적이지 않은 문제점이 있다.
종래 다른 일 실시예의 기술은 도 1에 도시된 바와 같이, 각 언어 예를 들어, Java, C, C++ 등의 프로그래밍 언어에 대해 개별적인 정적분석기를 만들고, 각각의 분석결과를 종합하여 처리하는 방법으로, 이 방법은 똑같은 정적분석기를 대상언어의 수만큼 만들어야 하기 때문에 대상 언어가 추가되거나 새로운 분석을 구현 할 때 부담이 큰 문제점이 있다.
프로그래밍 언어가 추가될 때마다, 결함을 찾아내기 위한 분석기를 매번 구현해야 하며, 변경 사항이 발생할 때마다 동일한 중복 작업을 수행해야 한다.
본 발명의 실시예들은, 프로그래밍 언어들에 대해 공통 구조를 가지도록 미리 정의된 공통 객체형 중간 언어(common objective intermediate language)를 이용하여 다양한 프로그래밍 언어들에 의해 작성된 프로그램들을 효율적으로 분석할 수 있는 공통 구조 변환 기반 프로그램 분석 방법 및 장치를 제공한다.
본 발명의 일 실시예에 따른 프로그램 분석 방법은 프로그램의 소스 파일을 수신하는 단계; 상기 소스 파일의 프로그래밍 언어를 파싱하여 상기 소스 파일에 대한 파싱 데이터를 추출하는 단계; 미리 설정된 복수의 프로그래밍 언어들에 대해 공통 구조를 가지도록 미리 정의된 공통 객체형 중간 언어와 상기 파싱 데이터에 기초하여 상기 파싱 데이터를 상기 공통 객체형 중간 언어의 통합 데이터로 변환하는 단계; 및 상기 변환된 통합 데이터를 분석하여 상기 소스 파일에 대한 분석 결과를 제공하는 단계를 포함한다.
상기 공통 객체형 중간 언어는 Java 언어를 기반으로 미리 결정된 복수의 다른 프로그래밍 언어들을 포괄하는 공통 구조를 가지도록 정의된 언어일 수 있다.
상기 공통 객체형 중간 언어는 EBNF(Extended Backus-Naur Form)를 사용하여 문법구조를 표기하며, 상기 문법구조의 요소들은 의미를 자연어로 기술할 수 있다.
상기 공통 객체형 중간 언어는 UTF-8 문자집합을 사용할 수 있다.
본 발명의 일 실시예에 따른 프로그램 분석 장치는 프로그램의 소스 파일을 수신하는 수신부; 상기 소스 파일의 프로그래밍 언어를 파싱하여 상기 소스 파일에 대한 파싱 데이터를 추출하는 파싱부; 미리 설정된 복수의 프로그래밍 언어들에 대해 공통 구조를 가지도록 미리 정의된 공통 객체형 중간 언어와 상기 파싱 데이터에 기초하여 상기 파싱 데이터를 상기 공통 객체형 중간 언어의 통합 데이터로 변환하는 공통 구조 변환부; 상기 변환된 통합 데이터를 분석하는 통합 분석부; 및 상기 분석된 분석 데이터에 기초하여 상기 소스 파일에 대한 분석 결과를 제공하는 제공부를 포함한다.
상기 공통 객체형 중간 언어는 Java 언어를 기반으로 미리 결정된 복수의 다른 프로그래밍 언어들을 포괄하는 공통 구조를 가지도록 정의된 언어일 수 있다.
상기 공통 객체형 중간 언어는 EBNF(Extended Backus-Naur Form)를 사용하여 문법구조를 표기하며, 상기 문법구조의 요소들은 의미를 자연어로 기술할 수 있다.
상기 공통 객체형 중간 언어는 UTF-8 문자집합을 사용할 수 있다.
본 발명의 실시예들에 따르면, 프로그래밍 언어들에 대해 공통 구조를 가지도록 미리 정의된 공통 객체형 중간 언어(common objective intermediate language)를 이용하여 프로그래밍 언어들에 의해 만들어진 프로그램을 분석할 수 있다.
본 발명의 실시예들에 따르면, 공통 객체형 중간 언어를 이용하여 분석 대상 프로그램의 소스 파일을 공통 구조의 통합 데이터로 변환할 수 있기 때문에 단일 통합 분석기를 이용하여 다양한 프로그래밍 언어들에 의해 작성된 소스 파일을 분석할 수 있고, 이를 통해 중복 작업을 제거하며, 정적 분석의 효율성을 높일 수 있다.
본 발명의 실시예들에 따르면, 새로운 프로그래밍 언어를 추가되는 경우 추가되는 언어에 대한 공통 구조를 중간 언어로 구현함으로써, 프로그래밍 언어를 추가하기가 용이하다.
도 1은 종래 일 실시예 기술에 대한 방법을 설명하기 위한 예시도를 나타낸 것이다.
도 2는 본 발명을 설명하기 위한 일 예시도를 나타낸 것이다.
도 3은 본 발명의 일 실시예에 따른 프로그램 분석 장치의 구성을 나타낸 것이다.
도 4는 본 발명에 의해 중간 언어로 변환되는 일 예시도를 나타낸 것이다.
도 5는 본 발명에 의해 중간 언어로 변환되는 다른 일 예시도를 나타낸 것이다.
도 6은 본 발명의 일 실시예에 따른 프로그램 분석 방법에 대한 동작 흐름도를 나타낸 것이다.
이하, 본 발명에 따른 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 그러나 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 또한, 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
본 발명의 실시예들은, 프로그래밍 언어들에 대해 공통 구조를 가지도록 미리 정의된 공통 객체형 중간 언어를 이용하여 다양한 프로그래밍 언어들에 의해 작성된 프로그램들을 단일 통합 분석기를 통해 분석하는 것을 그 요지로 한다.
여기서, 공통 객체형 중간 언어는 Java 언어를 기반으로 다른 프로그래밍 언어들을 포괄하는 공통 구조를 가지도록 정의된 언어로, 각 프로그래밍 언어의 파서를 통해 수신된 파싱 데이터를 단일 통합 분석기에서 분석을 수행할 수 있도록 공통 구조의 통합 데이터로 변경할 수 있다.
도 2는 본 발명을 설명하기 위한 일 예시도를 나타낸 것이다.
도 2에 도시된 바와 같이, 본 발명의 실시예에 따른 프로그램 분석 장치(200)는 분석 대상이 되는 프로그램의 소스 파일(또는 소스 코드)을 입력으로 하고, 입력된 프로그래밍 언어의 소스 파일을 해당 프로그래밍 언어의 파서를 이용한 파싱을 통해 파싱 데이터를 추출하며, 추출된 파싱 데이터를 공통 구조인 공통 객체형 중간 언어 형태의 통합 데이터로 변환함으로써, 단일 통합 분석기를 이용하여 변환된 통합 데이터를 분석하고, 이러한 분석 데이터에 기초하여 해당 프로그래밍 언어의 소스 파일에 대한 분석 결과를 제공한다.
물론, 본 발명에 따른 프로그램 분석 장치는 본 발명의 실시예에 따른 프로그램 분석 방법에 의해 프로그램을 분석할 수 있으며, 이러한 본 발명에 따른 방법 및 장치에 대해 도 3 내지 도 6을 참조하여 설명한다.
도 3은 본 발명의 일 실시예에 따른 프로그램 분석 장치의 구성을 나타낸 것이다.
도 3을 참조하면, 본 발명의 실시예에 따른 프로그램 분석 장치는 수신부(210), 파싱부(220), 공통 구조 변환부(230), 통합 분석부(240) 및 제공부(250)를 포함한다.
수신부(210)는 분석하고자 하는 분석 대상 프로그램의 소스 파일을 수신한다.
이 때, 수신부(210)는 도 3에 도시된 바와 같이, 미리 결정된 복수의 프로그래밍 언어들 각각에 대한 소스 파일 예를 들어, Java 프로그램 소스 파일, C 프로그램 소스 파일, C++ 프로그램 소스 파일 및 기타 프로그램 소스 파일을 입력으로 수신할 수 있다.
파싱부(220)는 소스 파일이 수신되면 수신된 소스 파일의 프로그래밍 언어에 대응하는 파서를 이용하여 소스 파일로부터 파싱 데이터를 추출한다.
이 때, 파싱부(220)는 도 2에 도시된 바와 같이 Java 파서, C 파서, C++ 파서 및 기타 미리 설정된 프로그램에 대한 파서를 포함할 수 있으며, 소스 파일이 수신되면 수신된 소스 파일의 프로그래밍 언어를 확인하여 해당 프로그래밍 언어의 파서를 이용하여 소스 파일로부터 파싱 데이터를 추출할 수 있다.
프로그래밍 언어 파서에 대한 동작은 이 기술 분야에 종사하는 당업자에게 있어서 자명하기에 그 상세한 설명은 생략한다.
공통 구조 변환부(230)는 미리 설정된 복수의 프로그래밍 언어들에 대해 공통 구조를 가지도록 미리 정의된 공통 객체형 중간 언어를 이용하여 소스 파일로부터 추출된 파싱 데이터를 공통 객체형 중간 언어의 통합 데이터로 변환하는 구성 수단으로, 파싱 데이터의 의미를 파악하여 파싱 데이터를 공통 객체형 중간 언어를 이용하여 통합 데이터로 변환한다.
즉, 공통 구조 변환부(230)는 Java/JSP, C, C++, Objective-C, ASP, PHP 등을 포함하는 프로그래밍 언어들의 소스 파일을 미리 정의된 공통 객체형 중간 언어 기반의 소스 파일로 변환하는 것으로, 단일 통합 분석기를 이용한 정적 분석을 수행하기 위하여 미리 설정된 복수의 프로그램 언어들에 대한 소스 파일을 공통 구조를 가지는 미리 정의된 공통 객체형 중간 언어로 변환하는 것이다.
여기서, 공통 구조 변환부(230)는 공통 구조를 가지는 공통 객체형 중간 언어를 사용하기 때문에 다른 프로그래밍 언어를 추가하기가 용이하며, 공통 객체형 중간 언어는 Java 언어를 중심으로 많이 사용되는 프로그래밍 언어들로 작성된 프로그램들을 동시에 수용하여 정적 분석을 적용할 수 있는 언어일 수 있거나 또는 Java와 C 계열 언어를 중심으로 많이 사용되는 프로그래밍 언어들로 작성된 프로그램들을 동시에 수용하여 정적 분석을 적용할 수 있는 언어일 수 있다.
본 발명에서 사용되는 공통 객체형 중간 언어는 EBNF(Extended Backus-Naur Form)를 사용하여 문법구조를 표기하며, 각 문법구조의 요소들은 의미를 자연어로 기술할 수 있다. 이러한 공통 객체형 중간 언어는 기본적인 명령형 언어 핵심 요소들, 클래스/레코드와 프로시저/함수, 객체지향 요소 및 예외 처리 등을 포함할 수 있으며, 이들을 통해 공통 객체형 중간 언어의 의미구조(semantics)를 정의할 수 있다.
또한, 공통 객체형 중간 언어는 UTF-8 문자집합을 사용하며, 가능한 다양한 언어의 요소를 수용하기 위해 각 요소들의 범위가 넓을 수 있다.
일 예로, 도 4a에 도시된 바와 같이, C 언어의 소스 파일이 수신되어 추출된 파싱 데이터가 배열 타입이고 전역 변수에 대한 선언일 때, 공통 구조 변환부는 도 4a에 도시된 C 언어의 배열 타입 전역 변수를 도 4b에 도시된 바와 같은 공통 객체형 중간 언어의 SF를 이용하여 통합 데이터로 변환한다.
여기서, SF는 공통 객체형 중간 언어에서 정적 전역 변수를 의미할 수 있으며, 이러한 SF는 Java 언어에서의 정적 필드를 의미하는 것으로, 본 발명에서의 공통 객체형 중간 언어가 Java 언어를 기반으로 한 것을 알 수 있다.
다른 일 예로, 도 5a에 도시된 바와 같이, C 언어의 소스 파일이 수신되어 추출된 파싱 데이터가 배열 타입이고 지역 변수에 대한 선언일 때, 공통 구조 변환부는 도 5a에 도시된 C 언어의 배열 타입 지역 변수를 도 4b에 도시된 바와 같은 공통 객체형 중간 언어의 VD를 이용하여 통합 데이터로 변환한다.
통합 분석부(240)는 공통 객체형 중간 언어에 대응하는 단일 통합 분석기로, 공통 객체형 중간 언어의 공통 구조로 변환된 변환 데이터(또는 소스 파일)를 분석함으로써, 분석 데이터를 제공부로 제공한다.
여기서, 통합 분석부(240)는 공통 객체형 중간 언어로 변환된 데이터(또는 소스 파일)에 대한 정적 분석을 수행하기 때문에 다양한 프로그래밍 언어를 추가하기 용이하며, 따라서 프로그래밍 언어들 각각에 대한 중복 작업을 제거하고 정적 분석의 효율성을 향상시킬 수 있다.
제공부(250)는 통합 분석부(240)에 의해 분석된 분석 데이터에 기초하여 프로그램의 소스 파일에 대한 분석 결과 예를 들어, 해당 프로그래밍 언어로 만들어진 프로그램에 대한 결함 여부 등을 제공한다.
이 때, 제공부(250)는 각 프로그래밍 언어 예를 들어, Java 언어 관련 결함, C 언어 관련 결함, C++ 언어 관련 결함, 및 기타 프로그래밍 언어의 결함 등을 분석 데이터에 기초하여 검출함으로써, 이에 대한 분석 결과를 사용자에게 제공할 수 있다.
도 6은 본 발명의 일 실시예에 따른 프로그램 분석 방법에 대한 동작 흐름도를 나타낸 것으로, 상술한 프로그램 분석 장치에서의 동작 흐름도를 나타낸 것이다.
도 6을 참조하면, 본 발명의 일 실시예에 따른 프로그램 분석 방법은 분석하고자 하는 분석 대상 프로그램의 소스 파일을 수신하고, 수신된 소스 파일의 프로그래밍 언어에 대응하는 파서를 이용하여 소스 파일로부터 파싱 데이터를 추출한다(S610, S620).
여기서, 단계 S610은 미리 결정된 복수의 프로그래밍 언어들 각각에 대한 소스 파일 예를 들어, Java 프로그램 소스 파일, C 프로그램 소스 파일, C++ 프로그램 소스 파일 및 기타 프로그램 소스 파일을 분석 대상 프로그램의 소스 파일로 수신할 수 있으며, 단계 S620은 소스 파일이 수신되면 수신된 소스 파일의 프로그래밍 언어를 확인하여 해당 프로그래밍 언어의 파서를 이용하여 소스 파일로부터 파싱 데이터를 추출할 수 있다.
단계 S620에 의해 해당 프로그래밍 언어에 의해 만들어진 소스 파일의 파싱 데이터가 추출되면 미리 설정된 복수의 프로그래밍 언어들에 대해 공통 구조를 가지도록 미리 정의된 공통 객체형 중간 언어를 이용하여 추출된 파싱 데이터를 공통 객체형 중간 언어의 통합 데이터로 변환한다(S630).
여기서, 공통 객체형 중간 언어는 Java 언어를 중심으로 많이 사용되는 프로그래밍 언어들로 작성된 프로그램들을 동시에 수용하여 정적 분석을 적용할 수 있는 언어일 수 있거나 또는 Java와 C 계열 언어를 중심으로 많이 사용되는 프로그래밍 언어들로 작성된 프로그램들을 동시에 수용하여 정적 분석을 적용할 수 있는 언어일 수 있으며, EBNF(Extended Backus-Naur Form)를 사용하여 문법구조를 표기하고, 각 문법구조의 요소들은 의미를 자연어로 기술할 수 있다. 이러한 공통 객체형 중간 언어는 기본적인 명령형 언어 핵심 요소들, 클래스/레코드와 프로시저/함수, 객체지향 요소 및 예외 처리 등을 포함할 수 있으며, 이들을 통해 공통 객체형 중간 언어의 의미구조(semantics)를 정의할 수 있다.
또한, 공통 객체형 중간 언어는 UTF-8 문자집합을 사용하며, 가능한 다양한 언어의 요소를 수용하기 위해 각 요소들의 범위가 넓을 수 있다.
단계 S630에 의해 파싱 데이터가 공통 객체형 중간 언어의 공통 구조를 가지는 변환 데이터로 변환되면 공통 객체형 중간 언어의 공통 구조로 변환된 변환 데이터(또는 소스 파일)를 공통 객체형 중간 언어에 대응하는 단일 통합 분석기로 분석함으로써, 분석 데이터를 생성하고, 생성된 분석 데이터에 기초하여 단계 S610에서 수신된 프로그램의 소스 파일에 대한 분석 결과를 제공한다(S640).
여기서, 단계 S640은 분석 데이터에 기초하여 프로그램의 소스 파일에 대한 분석 결과 예를 들어, 해당 프로그래밍 언어로 만들어진 프로그램에 대한 결함 여부 등을 제공할 수 있다.
상술한 바와 같이, 본 발명의 실시예들은 프로그래밍 언어들에 대해 공통 구조를 가지도록 미리 정의된 공통 객체형 중간 언어를 이용하여 다양한 프로그래밍 언어들에 의해 작성된 프로그램을 분석할 수 있고, 공통 객체형 중간 언어를 이용하여 분석 대상 프로그램의 소스 파일을 공통 구조를 가지는 통합 데이터로 변환할 수 있기 때문에 단일 통합 분석기를 이용하여 다양한 프로그래밍 언어들에 의해 작성된 소스 파일을 분석할 수 있고, 이를 통해 중복 작업을 제거하며, 정적 분석의 효율성을 높일 수 있다.
또한 본 발명의 실시예들은, 새로운 프로그래밍 언어를 추가되는 경우 추가되는 언어에 대한 공통 구조를 중간 언어로 구현함으로써, 프로그래밍 언어를 추가하기가 용이하다.
이상에서 설명된 시스템 또는 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 시스템, 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, 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 (8)

  1. 프로그램의 소스 파일을 수신하는 단계;
    상기 소스 파일의 프로그래밍 언어를 파싱하여 상기 소스 파일에 대한 파싱 데이터를 추출하는 단계;
    미리 설정된 복수의 프로그래밍 언어들에 대해 공통 구조를 가지도록 미리 정의된 공통 객체형 중간 언어와 상기 파싱 데이터에 기초하여 상기 파싱 데이터를 상기 공통 객체형 중간 언어의 통합 데이터로 변환하는 단계; 및
    상기 변환된 통합 데이터를 분석하여 상기 소스 파일에 대한 분석 결과를 제공하는 단계
    를 포함하고,
    상기 공통 객체형 중간 언어는
    미리 결정된 명령형 언어 핵심 요소들, 클래스/레코드, 프로시저/함수, 객체지향 요소 및 예외 처리를 포함하며, 상기 명령형 언어 핵심 요소들, 상기 클래스/레코드, 상기 프로시저/함수, 상기 객체지향 요소 및 상기 예외 처리를 통해 상기 공통 객체형 중간 언어의 의미구조(semantics)가 정의되고,
    상기 통합 데이터로 변환하는 단계는
    상기 파싱 데이터의 의미를 파악하며, 상기 파악된 의미의 파싱 데이터를 상기 공통 객체형 중간 언어를 이용하여 상기 통합 데이터로 변환하는 프로그램 분석 방법.
  2. 제1항에 있어서,
    상기 공통 객체형 중간 언어는
    Java 언어를 기반으로 미리 결정된 복수의 다른 프로그래밍 언어들을 포괄하는 공통 구조를 가지도록 정의된 언어인 것을 특징으로 하는 프로그램 분석 방법.
  3. 제2항에 있어서,
    상기 공통 객체형 중간 언어는
    EBNF(Extended Backus-Naur Form)를 사용하여 문법구조를 표기하며,
    상기 문법구조의 요소들은
    의미를 자연어로 기술하는 것을 특징으로 하는 프로그램 분석 방법.
  4. 제2항에 있어서,
    상기 공통 객체형 중간 언어는
    UTF-8 문자집합을 사용하는 것을 특징으로 하는 프로그램 분석 방법.
  5. 프로그램의 소스 파일을 수신하는 수신부;
    상기 소스 파일의 프로그래밍 언어를 파싱하여 상기 소스 파일에 대한 파싱 데이터를 추출하는 파싱부;
    미리 설정된 복수의 프로그래밍 언어들에 대해 공통 구조를 가지도록 미리 정의된 공통 객체형 중간 언어와 상기 파싱 데이터에 기초하여 상기 파싱 데이터를 상기 공통 객체형 중간 언어의 통합 데이터로 변환하는 공통 구조 변환부;
    상기 변환된 통합 데이터를 분석하는 통합 분석부; 및
    상기 분석된 분석 데이터에 기초하여 상기 소스 파일에 대한 분석 결과를 제공하는 제공부
    를 포함하고,
    상기 공통 객체형 중간 언어는
    미리 결정된 명령형 언어 핵심 요소들, 클래스/레코드, 프로시저/함수, 객체지향 요소 및 예외 처리를 포함하며, 상기 명령형 언어 핵심 요소들, 상기 클래스/레코드, 상기 프로시저/함수, 상기 객체지향 요소 및 상기 예외 처리를 통해 상기 공통 객체형 중간 언어의 의미구조(semantics)가 정의되고,
    상기 공통 구조 변환부는
    상기 파싱 데이터의 의미를 파악하며, 상기 파악된 의미의 파싱 데이터를 상기 공통 객체형 중간 언어를 이용하여 상기 통합 데이터로 변환하는 프로그램 분석 장치.
  6. 제5항에 있어서,
    상기 공통 객체형 중간 언어는
    Java 언어를 기반으로 미리 결정된 복수의 다른 프로그래밍 언어들을 포괄하는 공통 구조를 가지도록 정의된 언어인 것을 특징으로 하는 프로그램 분석 장치.
  7. 제6항에 있어서,
    상기 공통 객체형 중간 언어는
    EBNF(Extended Backus-Naur Form)를 사용하여 문법구조를 표기하며,
    상기 문법구조의 요소들은
    의미를 자연어로 기술하는 것을 특징으로 하는 프로그램 분석 장치.
  8. 제6항에 있어서,
    상기 공통 객체형 중간 언어는
    UTF-8 문자집합을 사용하는 것을 특징으로 하는 프로그램 분석 장치.
KR1020160052018A 2016-04-28 2016-04-28 공통 구조 변환 기반 프로그램 분석 방법 및 장치 KR101691600B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160052018A KR101691600B1 (ko) 2016-04-28 2016-04-28 공통 구조 변환 기반 프로그램 분석 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160052018A KR101691600B1 (ko) 2016-04-28 2016-04-28 공통 구조 변환 기반 프로그램 분석 방법 및 장치

Publications (2)

Publication Number Publication Date
KR101691600B1 true KR101691600B1 (ko) 2017-01-02
KR101691600B9 KR101691600B9 (ko) 2022-06-16

Family

ID=57810358

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160052018A KR101691600B1 (ko) 2016-04-28 2016-04-28 공통 구조 변환 기반 프로그램 분석 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101691600B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220126886A (ko) 2021-03-10 2022-09-19 주식회사 아이엠폼 중간 언어를 기반으로 한 콘텐츠 페이지 생성 장치 및 방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07239787A (ja) * 1994-03-01 1995-09-12 Nippon Steel Corp 構文解析木からの情報抽出装置
KR100433319B1 (ko) * 1995-12-08 2004-08-09 선 마이크로시스템즈 인코퍼레이티드 신뢰된소오스로부터의검사불가능한프로그램을사용하는장치로검사가능한프로그램을실행하기위한시스템및방법
KR101150003B1 (ko) * 2003-06-26 2012-06-01 마이크로소프트 코포레이션 소프트웨어 개발 툴 생성 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07239787A (ja) * 1994-03-01 1995-09-12 Nippon Steel Corp 構文解析木からの情報抽出装置
KR100433319B1 (ko) * 1995-12-08 2004-08-09 선 마이크로시스템즈 인코퍼레이티드 신뢰된소오스로부터의검사불가능한프로그램을사용하는장치로검사가능한프로그램을실행하기위한시스템및방법
KR101150003B1 (ko) * 2003-06-26 2012-06-01 마이크로소프트 코포레이션 소프트웨어 개발 툴 생성 방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
‘EBNF로부터 구문 트리 자동 생성에 관한 연구’, 한국정보과학회 1994년도 봄 학술발표논문집 제21권 제1호(1994)* *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220126886A (ko) 2021-03-10 2022-09-19 주식회사 아이엠폼 중간 언어를 기반으로 한 콘텐츠 페이지 생성 장치 및 방법

Also Published As

Publication number Publication date
KR101691600B9 (ko) 2022-06-16

Similar Documents

Publication Publication Date Title
US9747187B2 (en) Simulating black box test results using information from white box testing
US9223570B2 (en) Migration assistance using compiler metadata
JP5303795B2 (ja) アプリケーションの解析方法、解析システム及び解析プログラム
US20180025162A1 (en) Application program analysis apparatus and method
CN106293687B (zh) 一种打包流程的控制方法,及装置
KR101837337B1 (ko) 네이티브코드에서 기본 블록들 간의 모든 상대주소 점프를 간접 점프로 변환하여 분석도구의 cfg 생성을 방해하는 방법 및 장치
KR101691600B1 (ko) 공통 구조 변환 기반 프로그램 분석 방법 및 장치
JP2010122959A (ja) テスト支援システム、方法、及び、プログラム
CN108132799B (zh) 过程间静态程序分析信息提取方法、装置及设备
KR102009576B1 (ko) 처리 스케줄러를 이용한 워크플로우 장치 및 워크플로우 장치의 동작 방법
Yao et al. In situ data infrastructure for scientific unit testing platform
JP6404751B2 (ja) 制御プログラム分割装置、制御プログラム分割方法及びコンピュータプログラム
KR101673151B1 (ko) 프로그램 소스 및 db 스키마의 연관 관계 변화 분석 방법 및 장치
KR102520240B1 (ko) 비음수 행렬 인수분해를 이용하는 데이터 증강 방법 및 장치
US20140149970A1 (en) Optimising a compilation parser for parsing computer program code in arbitrary applications
WO2020085129A1 (ja) テストデータ生成装置、テストデータ生成方法及びプログラム
KR101976167B1 (ko) 프로그램 소스 및 db 스키마의 누락 연관 관계 검증 방법 및 그 장치
EP2782005A1 (en) Verifying state reachability in a statechart model having computer program code embedded therein
KR101656358B1 (ko) 클러스터 기반 프로그램 분석 방법 및 장치
KR100916301B1 (ko) 커널 api 대화식 실행 장치 및 방법
KR20200092477A (ko) 빅데이터 환경에서 데이터 수집을 위한 패킷 해석 방법 및 시스템
KR20150041541A (ko) 프로세서의 디코더 검증을 위한 테스트 벤치 생성 방법 및 이를 위한 장치
JP2015035174A (ja) 制御プログラム分割装置、制御プログラム分割方法及びその記録媒体
Saeidi et al. Gelato: GEneric LAnguage TOols for model-driven analysis of legacy software systems
WO2022038701A1 (ja) プログラム解析装置、プログラム解析方法、及びコンピュータ可読媒体

Legal Events

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

Payment date: 20190905

Year of fee payment: 4

G170 Re-publication after modification of scope of protection [patent]