KR20130097252A - 소스 코드 분석에 의한 응용 프로그램 분석을 위한 방법 및 장치 - Google Patents

소스 코드 분석에 의한 응용 프로그램 분석을 위한 방법 및 장치 Download PDF

Info

Publication number
KR20130097252A
KR20130097252A KR1020120018428A KR20120018428A KR20130097252A KR 20130097252 A KR20130097252 A KR 20130097252A KR 1020120018428 A KR1020120018428 A KR 1020120018428A KR 20120018428 A KR20120018428 A KR 20120018428A KR 20130097252 A KR20130097252 A KR 20130097252A
Authority
KR
South Korea
Prior art keywords
application
api
configuration information
source code
application program
Prior art date
Application number
KR1020120018428A
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 KR1020120018428A priority Critical patent/KR20130097252A/ko
Priority to EP13156430.4A priority patent/EP2631791A1/en
Priority to CN201310057122XA priority patent/CN103294519A/zh
Priority to US13/776,170 priority patent/US20130227524A1/en
Publication of KR20130097252A publication Critical patent/KR20130097252A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • 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/44Arrangements for executing specific programs

Abstract

본 발명은 소스 코드 분석에 관한 것으로, 응용 프로그램에서 소스 코드 분석을 위한 방법에 있어서 응용 프로그램을 분석하여 상기 응용 프로그램에서 사용되는 응용 프로그램 구성 정보를 결정하는 과정과 상기 응용 프로그램 구성 정보를 결정된 항목에 따라 분류하여 출력하는 과정을 포함하는 것을 특징으로 한다.

Description

소스 코드 분석에 의한 응용 프로그램 분석을 위한 방법 및 장치{METHOD AND APPARATUS FOR ANALYSING APPLICATION BY SOURCE CODE ANALYSIS}
본 발명은 소스 코드 분석에 관한 것으로, 특히, 웹 응용 프로그램과 같이 소스 코드 공개가 가능한 응용 프로그램의 소스를 분석하여 해당 응용 프로그램에 사용된 기술, 특징 등을 분석하기 위한 방법 및 장치에 관한 것이다.
일반적인 응용 프로그램, 즉, 응용 프로그램의 소스 코드가 공개되어 있지 않은 응용 프로그램의 경우, 응용 프로그램에서 지원하는 기능, 특징 등을 알기 위해서는 개발자, 또는 배포자에 의해 작성된 자료에 의존한다. 즉, 일반적인 응용 프로그램은 이진 코드(binary code) 형태로 제공되었기 때문에, 응용 프로그램의 특징과 기능을 파악하기 위해서는, 개발자가 제공하는 정보만을 전적으로 의존해야 한다.
이러한 이유로 사용자는 해당 응용 프로그램을 사용하기 전에는 응용 프로그램이 가진 기술적인 특징 들을 파악할 수 없었고 원하는 기능을 포함하는 응용 프로그램을 효과적으로 찾을 수 없는 문제점이 있다.
웹 응용 프로그램과 같이 소스 코드가 공개되는 응용 프로그램의 경우라도 공개되는 소스 코드는 그 크기를 줄이기 위해 또는 가독성(readability)를 작게 하기 위해 변수 이름 등에 문법적인 의미를 가진 요소를 완전히 제거한 상태로 배포되기 때문에 응용 프로그램의 소스 코드가 공개되어 있더라도 소스 코드를 파악하여 분류하는 등의 작업이 곤란한 문제점이 있다.
        
본 발명의 목적은 소스 코드 분석에 의한 응용 프로그램 분석을 위한 방법 및 장치를 제공함에 있다.
본 발명의 다른 목적은 응용 프로그램에서 공개되어 있는 소스 코드를 분석하여 해당 응용 프로그램이 제공하는 기능을 분석하기 위한 방법 및 장치를 제공함에 있다.
본 발명의 또 다른 목적은 문법적인 의미를 가진 요소들이 제거된 소스 코드라 할지라도 표준화 단체(eg. W3C, Khronos Group)에서 정의된 표준 API (Application Programming Interface) 또는 일반적으로 사용되는 Open API (eg. Google Map API, Facebook API), 사용자 인터페이스 프레임워크(eg. jQuery, Sencha touch) 등의 API 명은 그대로 사용하는 경우가 많기 때문에, 해당 API들의 사용 여부를 통해 어떠한 기술이 사용되었는지를 분석하기 위한 방법 및 장치를 제공함에 있다.
본 발명의 목적들을 달성하기 위한 제 1 견지에 따르면, 응용 프로그램에서 소스 코드 분석을 위한 방법에 있어서 응용 프로그램을 분석하여 상기 응용 프로그램에서 사용되는 응용 프로그램 구성 정보를 결정하는 과정과 상기 응용 프로그램 구성 정보를 결정된 항목에 따라 분류하여 출력하는 과정을 포함하는 것을 특징으로 한다.
본 발명의 목적들을 달성하기 위한 제 2 견지에 따르면, 응용 프로그램에서 소스 코드 분석을 위한 장치에 있어서 응용 프로그램을 분석하여 상기 응용 프로그램에서 사용되는 응용 프로그램 구성 정보를 결정하고 상기 응용 프로그램 구성 정보를 결정된 항목에 따라 분류하여 출력하는 제어부와 상기 제어부의 출력을 디스플레이하는 표시부를 포함하는 것을 특징으로 한다.
본 발명을 통하면 웹 응용 프로그램에서 사용된 기술, 소스 코드를 분석하여 분류화 할 수 있고 응용 프로그램을 분석하여 사용된 기술, 특징 등을 기반으로 태깅이 가능하다 그리고 본 발명은 이렇게 생성된 태그를 기반으로 좀 더 스마트한 검색기능을 제공할 수 있다.
또한, 본 발명을 통하면, 사용하는 환경에서 응용 프로그램이 정상적인 동작이 가능한지 여부를 파악할 수 있다.
또한, 본 발명을 통하면 현재 웹 응용 프로그램의 트렌드를 분석할 수 있다. 현재 다수의 응용 프로그램들이 주로 사용하고 있는 기술, 사용자 인터페이스 프레임워크 등의 통계자료 산출을 통해서 최신 경향 분석이 가능하다
또한, 본 발명을 통하면, 어떠한 기술들이 결합되어 사용되는지 여부를 파악하는 등의 경향분석도 가능하다.
도 1은 본 발명의 제 1 실시 예에 따른 소스 코드 분석을 위한 장치의 블록 구성을 도시한 도면이다.
도 2는 본 발명의 제 2 실시 예에 따른 소스 코드 분석을 위한 장치의 블록 구성을 도시한 도면이다.
도 3은 본 발명의 제 3 실시 예에 따른 소스 코드 분석을 위한 장치의 블록 구성을 도시한 도면이다.
도 4는 본 발명의 실시 예에 따른 동작 과정을 도시한 흐름도이다.
도 5는 본 발명의 제 4 실시 예에 따른 장치의 블록 구성을 도시한 도면이다.
도 6은 본 발명의 실시 예에 따른 데이터 발굴 과정을 도시한 도면이다.
도 7은 본 발명의 실시 예에 따른 데이터베이스에서의 API 카테고리를 도시한 도면이다.
이하 본 발명의 바람직한 실시 예를 첨부된 도면을 기준하여 상세히 설명한다. 그리고, 본 발명을 설명함에 있어서, 관련된 공지기능 혹은 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단된 경우 그 상세한 설명은 생략한다. 그리고 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
이하, 본 발명은 소스 코드 분석에 의한 응용 프로그램 특징 분석을 위한 방법 및 장치에 대해 설명할 것이다.
도 1은 본 발명의 제 1 실시 예에 따른 소스 코드 분석을 위한 장치의 블록 구성을 도시한 도면이다.
상기 도 1을 참조하면, 상기 장치는 응용 프로그램(100), 패턴 매칭부(110) 그리고 API 데이터베이스(130)를 포함하여 구성된다. 상기 응용 프로그램(100)은 다수의 소스 코드(101, 102)를 포함하여 구성된다.
상기 응용 프로그램(100)은 소스 코드가 공개된 응용 프로그램을 나타내는 것으로, 예를 들어, 웹 응용 프로그램을 나타낸다.
상기 패턴 매칭부(110)는 응용 프로그램(100)의 소스 코드(101, 102)와 상기 API 데이터베이스(130)를 이용하여 해당 응용 프로그램에서 사용된 API를 결정하고, 결정된 API 리스트를 출력한다.
상기 패턴 매칭부(110)는 상기 응용 프로그램(100)의 소스 코드를 스캔하여 API 데이터베이스(130)에서 정의된 API 들의 사용 여부를 결정한다. 예를 들어, 상기 패턴 매칭부(110)는 XMLHttpRequest와 같이 파라미터가 문법적인 의미를 가지고 있는 API가 사용된 경우에는, 소스 코드를 분석하여 해당 파라미터가 가지고 있는 문법적인 의미를 정적 또는 동적으로 파악한다.
예를 들면, 하기 <표 1>의 예시 코드는 제공되는 open API 중 파라미터로 지정된 사원번호에 해당하는 임직원의 정보를 반환해주는 API를 가정한 것이다.
상기 패턴 매칭부(110)는 하기 <표 1>의 소스 코드에서의 문법적인 의미를 파악하기 위해서, new XMLHttpRequest()를 사용하여 생성한 객체의 함수의 파라미터로 주어진 URL (Uniform Resource Location)를 분석해서 의미를 결정할 수 있다.
xhr = new XMLHttpRequest();
 
var host = "http://samsung.com/";
var param  =“getEmployeeInfo?ID=23456”;
 
var url = host + param;
 
xhr.open(“GET", url);
……
즉, 상기 <표 1>에서, new XMLHttpRequest()를 사용하여 생성된 객체는 이고, 객체의 함수(xhr.open)의 파라미터는 "GET", url(=http://samsung.com/“getEmployeeInfo?ID=23456)이다. 상기 파라미터를 분석하면, 상기 소스 코드가 직원 정보를 획득하기 위한 것이라는 것을 알 수 있다.
이러한 방법은 정적인 방법에 대한 것으로, 생성되는 객체, 객체의 함수 또는 파라미터가 실제로 호출된 이후에 결정되는 동적인 방법에서도, 호출된 파라미터가 문법적인 의미를 가지고 있으면 상기 분석 방법을 적용할 수 있다.. REST 방식의 소스 코드도 이와 같은 방식으로 분석이 가능하다.
상기 패턴 매칭부(110)는 해당 소스 코드를 분석하여 현재의 소스 코드에서 사용된 API 리스트(120)를 출력하거나, 해당 소스 코드 분석을 통해 현재 분석하고 있는 응용 프로그램이 어떤 응용 프로그램의 API를 사용하고 있는 지를 파악할 수 있다.
상기 API 데이터베이스(130)는 표준으로 정해진 또는 표준화 진행 중인 API 를 기술별, 분야별로 모두 정리해 놓은 데이터베이스를 나타내고, Open API, 사용자 인터페이스 프레임 워크의 API 리스트 등을 포함하고 있다 그리고 여러 개의 AP I들을 카테고리화하여 특정 분야에 따른 검색이 가능하도록 구성된다.  예를 들어, 도 7과 같이 웹 특정 응용 프로그램 단위의 트리 형태로 구성될 수 있다.
특히, 상기 API 데이터베이스(130)는 XMLHttpRequest와 같이 파라미터가 문법적인 의미를 가지고 있는 API 집합을 별도로 카테고리화 할 수 있다.
본 발명에서는상기 응용 프로그램에서 사용되는 적어도 하나의 API(Application Programming Interface) 및 상기 적어도 하나의 API를 사용하는 적어도 하나의 응용 프로그램을 프로그램 구성 정보라 칭할 수 있다.
도 2는 본 발명의 제 2 실시 예에 따른 소스 코드 분석을 위한 장치의 블록 구성을 도시한 도면이다. 상기 도 2의 장치는 상기 도 1의 장치에 사용자 선호도 반영부(240)가 추가된 형태이다.
상기 도 2를 참조하면, 상기 장치는 응용 프로그램(200), 패턴 매칭부(210), API 데이터베이스(230) 그리고 사용자 선호도 반영부(240)를 포함하여 구성된다.
상기 응용 프로그램(200)는 다수의 소스 코드(201, 202)를 포함하여 구성된다. 상기 응용 프로그램(200)는 소스 코드가 공개된 응용 프로그램을 나타내는 것으로, 예를 들어, 웹 응용 프로그램을 나타낸다.
상기 패턴 매칭부(210)는 상기 응용 프로그램(200)의 소스 코드(201, 202)와 API 데이터베이스(230)를 이용하여 해당 응용 프로그램에서 사용된 API를 결정하고, 결정된 API 리스트를 출력한다.
상기 패턴 매칭부(210)는 응용 프로그램(200)의 소스 코드를 스캔하여 API 데이터베이스(230)에서 정의된 API 들의 사용 여부를 결정한다. 예를 들어, 상기 패턴 매칭부(210)는 XMLHttpRequest와 같이 파라미터가 문법적인 의미를 가지고 있는 API가 사용된 경우에는, 상기 <표 1>의 경우와 같이 소스 코드를 분석하여 해당 파라미터가 가지고 있는 문법적인 의미를 정적 또는 동적으로 파악한다.
상기 패턴 매칭부(210)는 해당 소스 코드를 분석하여 현재의 소스 코드에서 사용된 API 리스트를 출력하거나, 해당 소스 코드 분석을 통해 현재 분석하고 있는 응용 프로그램이 어떤 응용 프로그램인지를 파악할 수 있다.
상기 패턴 매칭부(210)는 해당 소스 코드를 분석하여 현재의 소스 코드에서 API 리스트를 출력하거나, 해당 소스 코드 분석을 통해 현재 분석하고 있는 응용 프로그램이 어떤 응용 프로그램의 API를 사용하고 있는 지를 파악할 수 있다.
상기 API 데이터베이스(230)는 표준으로 정해진 또는 표준화 진행 중인 API 를 기술별, 분야별로 모두 정리해 놓은 데이터베이스를 나타내고, Open API, 사용자 인터페이스 프레임 워크의 API 리스트 등을 포함하고 있다 그리고 여러 개의 AP I들을 카테고리화하여 특정 분야에 따른 검색이 가능하도록 구성된다.  예를 들어, 도 7과 같이 웹 특정 응용 프로그램 단위의 트리 형태로 구성될 수 있다.
특히, 상기 API 데이터베이스(230)는 XMLHttpRequest와 같이 파라미터가 문법적인 의미를 가지고 있는 API 집합을 별도로 카테고리화 할 수 있다.
상기 사용자 선호도 반영부(240)는 사용자가 입력한 사용자 선호도를 상기 패턴 매칭부(210)에 제공한다.
상기 패턴 매칭부(210)는 제공되는 사용자 선호도를 추가적으로 이용하여, 사용자가 지정한 형태의 검색을 수행하거나, 사용자가 원하는 형태의 결과물을 생성할 수 있다.
즉, 상기 패턴 매칭부(210)는 소스 코드 분석 과정에서 사용자가 선택한 응용 프로그램의 소스 코드가 포함되어 있는지를 검사하고, 사용자 선호도가 반영된 사용된 API 리스트(225)를 출력한다.
도 3은 본 발명의 제 3 실시 예에 따른 소스 코드 분석을 위한 장치의 블록 구성을 도시한 도면이다. 상기 도 3의 장치는 상기 도 2의 장치에 데이터 발굴부(350)가 추가된 형태이다.
상기 도 3을 참조하면, 상기 장치는 응용 프로그램(300), 패턴 매칭부(310), API 데이터베이스(330), 사용자 선호도 반영부(340) 그리고 데이터 발굴부(350)를 포함하여 구성된다.
상기 응용 프로그램(300)는 다수의 소스 코드(301, 302)를 포함하여 구성된다. 상기 응용 프로그램(300)은 소스 코드가 공개된 응용 프로그램을 나타내는 것으로, 예를 들어, 웹 응용 프로그램을 나타낸다.
상기 패턴 매칭부(310)는 상기 응용 프로그램(300)의 소스 코드(301, 302)와 상기 API 데이터베이스(330)를 이용하여 해당 응용 프로그램에서 사용된 API를 결정하고, 결정된 API 리스트를 출력한다.
상기 패턴 매칭부(310)는 상기 응용 프로그램(300)의 소스 코드를 스캔하여 상기 API 데이터베이스(330)에서 정의된 API 들의 사용 여부를 결정한다.
예를 들어, 상기 패턴 매칭부(310)는 XMLHttpRequest와 같이 파라미터가 문법적인 의미를 가지고 있는 API가 사용된 경우에는, 상기 <표 1>의 경우와 같이 소스 코드를 분석하여 해당 파라미터가 가지고 있는 문법적인 의미를 정적 또는 동적으로 파악한다.
상기 패턴 매칭부(310)는 해당 소스 코드를 분석하여 현재의 소스 코드에서 사용된 API 리스트를 출력하거나, 해당 소스 코드 분석을 통해 현재 분석하고 있는 응용 프로그램이 어떤 응용 프로그램의 API를 사용하고 있는 지를 파악할 수 있다.
상기 API 데이터베이스(330)는 표준으로 정해진 또는 표준화 진행 중인 API 를 기술별, 분야별로 모두 정리해 놓은 데이터베이스를 나타내고, Open API, 사용자 인터페이스 프레임 워크의 API 리스트 등을 포함하고 있다 그리고 여러 개의 AP I들을 카테고리화하여 특정 분야에 따른 검색이 가능하도록 구성된다.  예를 들어, 도 7과 같이 웹 특정 응용 프로그램 단위의 트리 형태로 구성될 수 있다.
특히, 상기 API 데이터베이스(330)는 XMLHttpRequest와 같이 파라미터가 문법적인 의미를 가지고 있는 API 집합을 별도로 카테고리화 할 수 있다.
상기 사용자 선호도 반영부(340)는 사용자가 입력한 사용자 선호도를 상기 패턴 매칭부(310)에 제공한다.
상기 패턴 매칭부(310)는 제공되는 사용자 선호도를 추가적으로 이용하여, 사용자가 지정한 형태의 검색을 수행하거나, 사용자가 원하는 형태의 결과물을 생성할 수 있다.
즉, 상기 패턴 매칭부(310)는 소스 코드 분석 과정에서 사용자가 선택한 응용 프로그램의 소스 코드가 포함되어 있는지를 검사하고, 사용자 선호도가 반영된 사용된 API 리스트를 출력한다.
데이터 발굴부(350)는 생성된 API 리스트를 가공하여 사용자가 원하는 형태로 변경된 결과물을 생성하여 출력한다. 상기 데이터 발굴부(350)는 생성된 API 리스트를 카테고리화하거나 태그를 생성하는 등의 역할을 수행한다.
즉, 상기 데이터 발굴부(350)는 응용 프로그램에서 사용된 API들 중에서 사용자에게 의미 있는 API 집합을 필터링하는 역할을 수행하고, 사용자 선택이 반영된 결과(325)를 디스플레이한다.
예를 들면, 포드캐스트(podcast) 응용 프로그램에서 트위터(tweeter) 기능을 제공한다고 할 때, 타임라인(timeline)을 불러오는 API를 사용한 것보다는 트윗(tweet)을 작성하여 공유할 수 있는 기능을 포함했을 때, 상기 포드캐스트 응용 프로그램에서 의미 있는 트윗 기능을 제공한다고 판단할 수 있다.
예를 들어 설명하면, 도 6a에서 사용자 선호도 반영부(340)는 패턴 매칭부(310)가 트위터, 페이스북, 맵, 지오로케이션에 대한 API가 있는지를 검사하게 하기 위해서, 상기 패턴 매칭부(310)에 트위터, 페이스북, 맵, 지오로케이션에 대한 API를 검색하게 한다.
상기 패턴 매칭부(310)는, 이러한 API가 존재하는 경우, 트위터, 페이스북, 맵, 지오로케이션이 검색되었음을 상기 데이터 발굴부(350)에 알리고, 상기 데이터 발굴부(350)는 트위터, 페이스북, 맵, 지오로케이션이 검색되었음을 사용자에게 알리기 위해 트위터, 페이스북, 맵, 지오로케이션을 도 6a 하부와 같이 디스플레이하고, 트위터, 페이스북, 맵, 지오로케이션의 API를 사용하는 응용 프로그램의 이름을 도 6a 상부와 같이 디스플레이한다.
이후, 도 6b에서 사용자가 트위터, 지오로케이션을 선택하면, 상기 데이터 발굴부(350)는 상기 트위터, 지오로케이션의 API를 사용하는 어플리케이션을 디스플레이한다. 상기 도 6b에서는 CCC podcast가 상기 트위터, 지오로케이션의 API를 사용하지 않음을 알 수 있다.
도 4는 본 발명의 실시 예에 따른 동작 과정을 도시한 흐름도이다.
상기 도 4를 참조하면, 본 발명의 장치는 사용자의 소스 코드 분석 기능이 구동되는 경우(405 단계), 사용자로부터 분석할 특정 응용 프로그램을 선택받고 실행한 후(410 단계). 해당 응용 프로그램에 대한 소스 코드 분석을 시작한다(415 단계).
이후, 본 발명의 장치는 상기 특정 응용 프로그램에서 사용되는 API 및 파라미터가 문법적인 의미를 가지는 API 분석을 통해, 사용된 API를 카테고리화하여 정렬한다(420 단계).
이 경우, 상기 본 발명의 장치는 상기 특정 응용 프로그램에서 사용되는 API를 파악할 수 있고, 상기 API가 어떤 응용 프로그램에서 사용되는 지를 파악할 수 있다.
이후, 본 발명의 장치는 사용자의 선호도 선택이 있는 지를 검사하고(425 단계), 상기 선호도 선택이 있는 경우, 사용자 선호도에 따른 응용 프로그램의 API가 존재하는 지를 검색하고(430 단계), 존재하는 경우, 사용자 선호도에 따른 API를 추출한다(435 단계).
이후, 본 발명의 장치는 사용자 선호동에 따른 API를 카테고리화하여 정렬하고 사용된 API에 따른 응용 프로그램의 종류를 결정한다(440 단계).
이후, 본 발명의 장치는 기 설정된 형식에 맞게 사용된 API 또는 사용된 API에 따른 응용 프로그램의 종류를 디스플레이한다(445 단계).
만약, 본 발명의 장치는 사용자의 상기 선호도 선택이 없는 것을 감지한 경우(425 단계), 기 설정된 형식에 맞게 사용된 API 또는 사용된 API에 따른 응용 프로그램의 종류를 디스플레이한다(445 단계).
이후, 사용자의 추가 선택이 있는 경우(450 단계), 상기 추가 선택된 사용자의 선호도에 따른 응용 프로그램의 API가 존재하는지 검사하고(430 단계), 이후의 과정을 수행한다.
여기서, 상기 사용자의 추가 선택은 전술한 상기 도 6b에서와 같이, 특정 응용 프로그램에 대한 선택을 나타낸다. 예를 들어 설명하면, 도 6b에서 사용자가 트위터, 지오로케이션을 선택하면, 상기 트위터, 지오로케이션의 API를 사용하는 응용 프로그램을 디스플레이한다. 상기 도 6b에서는 CCC podcast가 상기 트위터, 지오로케이션의 API를 사용하지 않음을 알 수 있다.
도 5는 본 발명의 제 4 실시 예에 따른 장치의 블록 구성을 도시한 도면이다.
상기 도 5를 참조하면, 상기 장치는 제어부(500), 저장부(555), 입력부(530) 및 표시부(540)를 포함하여 구성된다.
상기 제어부(500)는 상기 장치의 전반적인 동작을 제어하고, 특히 본 발명에 따라 소스 코드를 포함하는 응용 프로그램(501), 패턴 매칭부(503), 데이터 발굴부(505) 및 사용자 선호도 반영부(507)를 포함하거나 제어한다.
상기 저장부(550)는 상기 장치의 전반적인 동작을 제어하기 위한 프로그램 및 프로그램 수행 중 발생하는 일시적인 데이터를 저장하는 기능을 수행한다. 특히, 상기 저장부(550)는 API 데이터베이스(555)를 포함한다.
상기 입력부(530)는 사용자의 입력을 상기 제어부(500)로 제공한다. 상기 입력부(530)는 터치 스크린, 키보드, 마우스 등이 될 수 있고, 그 종류에 제한이 없음은 당연하다 할 것이다.
상기 표시부(540)는 상기 제어부(500)의 출력을 디스플레이하는 역할을 수행하고, LCD(Liquid Crystal Display)와 같은 기기가 사용될 수 있고, 또한, 그 기기의 종류에 제한이 없음은 당연하다 할 것이다.
상기 응용 프로그램(501)은 다수의 소스 코드를 포함하여 구성된다. 상기 응용 프로그램(501)은 소스 코드가 공개된 응용 프로그램을 나타내는 것으로, 예를 들어, 웹 응용 프로그램을 나타낸다.
상기 패턴 매칭부(503)는 상기 응용 프로그램(501)의 소스 코드와 상기 API 데이터베이스(555)를 이용하여 해당 응용 프로그램에서 사용된 API를 결정하고, 결정된 API 리스트를 출력한다.
상기 패턴 매칭부(503)는 상기 응용 프로그램(501)의 소스 코드를 스캔하여 상기 API 데이터베이스(555)에서 정의된 API 들의 사용 여부를 결정한다.
예를 들어, 상기 패턴 매칭부(503)는 XMLHttpRequest와 같이 파라미터가 문법적인 의미를 가지고있는 API가 사용된 경우에는, 상기 <표 1>의 경우와 같이 소스 코드를 분석하여 해당 파라미터가 가지고 있는 문법적인 의미를 정적 또는 동적으로 파악한다.
상기 패턴 매칭부(503)는 해당 소스 코드를 분석하여 현재의 소스 코드에서 사용된 API 리스트를 출력하거나, 해당 소스 코드 분석을 통해 현재 분석하고 있는 응용 프로그램이 어떤 응용 프로그램의 API를 사용하고 있는 지를 파악할 수 있다.
상기 API 데이터베이스(555)는 표준으로 정해진 또는 표준화 진행 중인 API 를 기술별, 분야별로 모두 정리해 놓은 데이터베이스를 나타내고, Open API, 사용자 인터페이스 프레임 워크의 API 리스트 등을 포함하고 있다 그리고 여러 개의 AP I들을 카테고리화하여 특정 분야에 따른 검색이 가능하도록 구성된다.  예를 들어, 도 7과 같이 웹 특정 응용 프로그램 단위의 트리 형태로 구성될 수 있다.
특히, 상기 API 데이터베이스(555)는 XMLHttpRequest와 같이 파라미터가 문법적인 의미를 가지고 있는 API 집합을 별도로 카테고리화 할 수 있다.
상기 사용자 선호도 반영부(507)는 사용자가 입력한 사용자 선호도를 상기 패턴 매칭부(503)에 제공한다.
상기 패턴 매칭부(503)는 제공되는 사용자 선호도를 추가적으로 이용하여, 사용자가 지정한 형태의 검색을 수행하거나, 사용자가 원하는 형태의 결과물을 생성할 수 있다.
즉, 상기 패턴 매칭부(503)는 소스 코드 분석 과정에서 사용자가 선택한 응용 프로그램의 소스 코드가 포함되어 있는지를 검사하고, 사용자 선호도가 반영된 사용된 API 리스트를 출력한다.
상기 데이터 발굴부(505)는 생성된 API 리스트를 가공하여 사용자가 원하는 형태로 변경된 결과물을 생성하여 출력한다. 상기 데이터 발굴부(505)는 생성된 API 리스트를 카테고리화하거나 태그를 생성하는 등의 역할을 수행한다.
즉, 상기 데이터 발굴부(505)는 응용 프로그램에서 사용된 API들 중에서 사용자에게 의미 있는 API 집합을 필터링하는 역할을 수행하고, 사용자 선택이 반영된 결과를 표시부(540)에 디스플레이한다.
예를 들면, 포드캐스트(podcast) 응용 프로그램에서 트위터(tweeter) 기능을 제공한다고 할 때, 타임라인(timeline)을 불러오는 API를 사용한 것보다는 트윗(tweet)을 작성하여 공유할 수 있는 기능을 포함했을 때, 상기 포드캐스트 응용 프로그램에서 의미 있는 트윗 기능을 제공한다고 판단할 수 있다.
예를 들어 설명하면, 도 6a에서 사용자 선호도 반영부(507)는 패턴 매칭부(503)가 트위터, 페이스북, 맵, 지오로케이션에 대한 API가 있는지를 검사하게 하기 위해서, 상기 패턴 매칭부(503)에 트위터, 페이스북, 맵, 지오로케이션에 대한 API를 검색하게 한다.
상기 패턴 매칭부(503)는, 이러한 API가 존재하는 경우, 트위터, 페이스북, 맵, 지오로케이션이 검색되었음을 상기 데이터 발굴부(505)에 알리고, 상기 데이터 발굴부(505)는 트위터, 페이스북, 맵, 지오로케이션이 검색되었음을 사용자에게 알리기 위해 트위터, 페이스북, 맵, 지오로케이션을 도 6a 하부와 같이 디스플레이하고, 트위터, 페이스북, 맵, 지오로케이션의 API를 사용하는 응용 프로그램의 이름을 도 6a 상부와 같이 디스플레이한다.
이후, 도 6b에서 사용자가 트위터, 지오로케이션을 선택하면, 상기 데이터 발굴부(505)는 상기 트위터, 지오로케이션의 API를 사용하는 어플리케이션을 상기 표시부(540)를 통해 디스플레이한다. 상기 도 6b에서는 CCC podcast가 상기 트위터, 지오로케이션의 API를 사용하지 않음을 알 수 있다.
본 발명은 웹 응용 프로그램에서 사용된 기술, 소스 코드를 분석하여 분류화 할 수 있고 본 발명은 응용 프로그램을 분석하여 사용된 기술, 특징 등을 기반으로 태깅을 가능하게 한다 그리고 본 발명은 이렇게 생성된 태그를 기반으로 좀 더 스마트한 검색기능을 제공할 수 있다.
예를 들어, 사용자에게 포드캐스트 프로그램 중 지오로케이션 정보를 활용하여 방송을 추천해주고, 트위터를 사용하여 공유할 수 있는 기능을 제공해 주는 응용 프로그램을 검색한다거나, 또는 사용자가 운동 내용을 기록해 주는 응용 프로그램 중에서, 지오로케이션 API를 사용하여 GPS에 의한 위치정보를 기록하고 맵 상에 표시하는 기능을 갖춘 응용 프로그램을 검색할  수 있도록 해주는 등의 활용이 가능하다.
또한, 사용자는 사용하는 환경에서 응용 프로그램이 정상적인 동작이 가능한지 여부를 파악할 수 있다. 예를 들면, 사용자가 사용하고 있는 웹 브라우저에서 특정 API를 지원하지 않는다면, 사용자는 특정 API를 사용하는 응용 프로그램을 사용할 수 없다. 본 발명은 이러한 사실을 응용 프로그램을 실행해 보기 이전에 확인할 수 있다.
또한, 사용자는 본 발명을 활용하여 현재 웹 응용 프로그램의 트렌드 분석할 수 있다. 현재 다수의 응용 프로그램들이 주로 사용하고 있는 기술, 사용자 인터페이스 프레임워크 등의 통계자료 산출을 통해서 최신 경향 분석이 가능하다 또한 어떠한 기술들이 결합되어 사용되는지 여부를 파악하는 등의 경향분석도 가능하다. 예를 들면, 뉴스 캐스트를 위한 API를 주로 사용하는 응용 프로그램들이 트위터나 페이스북 등을 통한 공유기능을 대부분 제공한다는 등의 분석이 가능하다.
한편 본 발명의 상세한 설명에서는 구체적인 실시 예에 관해 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능하다. 그러므로 본 발명의 범위는 설명된 실시 예에 국한되어 정해져서는 아니 되며 후술하는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.

Claims (14)

  1. 응용 프로그램에서 소스 코드 분석을 위한 방법에 있어서,
    응용 프로그램을 분석하여 상기 응용 프로그램에서 사용되는 응용 프로그램 구성 정보를 결정하는 과정과,
    상기 응용 프로그램 구성 정보를 결정된 항목에 따라 분류하여 출력하는 과정을 포함하는 것을 특징으로 하는 방법.
  2. 제 1항에 있어서,
    상기 프로그램 구성 정보는,
    상기 응용 프로그램에서 사용되는 적어도 하나의 API(Application Programming Interface) 및 상기 적어도 하나의 API를 사용하는 적어도 하나의 응용 프로그램인 것을 특징으로 하는 방법.
  3. 제 1항에 있어서,
    상기 응용 프로그램에서 사용되는 응용 프로그램 구성 정보를 결정하는 과정은,
    상기 응용 프로그램에서 사용되는 적어도 하나의 API를 데이터베이스에서 확인하고, API 각각이 사용되는 응용 프로그램을 결정하는 과정을 포함하는 것을 특징으로 하는 방법.
  4. 제 3항에 있어서,
    상기 데이터 베이스는 다수의 API들을 카테고리화하여 특정 항목에 따른 검색이 가능하도록 구성되어 있는 것을 특징으로 하는 방법.
  5. 제 3항에 있어서,
    사용자의 선호도 선택이 있는 경우,
    상기 사용자의 선호도 선택에 따른 응용 프로그램에서 사용되는 적어도 하나의 API를 상기 데이터베이스에서 확인하고, API 각각이 사용되는 응용 프로그램을 결정하는 과정을 더 포함하는 것을 특징으로 하는 방법.
  6. 제 1항에 있어서,
    상기 응용 프로그램 구성 정보를 결정된 항목에 따라 분류하여 출력하는 과정은,
    결정된 응용 프로그램 구성 정보를 출력하는 과정과,
    상기 결정된 응용 프로그램 구성 정보에 대한 사용자의 추가 선택이 있는 경우, 상기 추가 선택에 따라 상기 결정된 응용 프로그램 구성 정보를 필터링하여 출력하는 과정을 더 포함하는 것을 특징으로 하는 방법.
  7. 제 1항에서 있어서,
    상기 응용 프로그램을 분석하기 전에, 분석할 응용 프로그램을 선택받는 과정을 더 포함하는 것을 특징으로 하는 방법.
  8. 응용 프로그램에서 소스 코드 분석을 위한 장치에 있어서,
    응용 프로그램을 분석하여 상기 응용 프로그램에서 사용되는 응용 프로그램 구성 정보를 결정하고, 상기 응용 프로그램 구성 정보를 결정된 항목에 따라 분류하여 출력하는 제어부와,
    상기 제어부의 출력을 디스플레이하는 표시부를 포함하는 것을 특징으로 하는 장치.
  9. 제 8항에 있어서,
    상기 프로그램 구성 정보는,
    상기 응용 프로그램에서 사용되는 적어도 하나의 API(Application Programming Interface) 및 상기 적어도 하나의 API를 사용하는 적어도 하나의 응용 프로그램인 것을 특징으로 하는 장치.
  10. 제 8항에 있어서,
    상기 제어부는,
    상기 응용 프로그램에서 사용되는 응용 프로그램 구성 정보를 결정할 시,
    상기 응용 프로그램에서 사용되는 적어도 하나의 API를 데이터베이스에서 확인하고, API 각각이 사용되는 응용 프로그램을 결정하고,
    상기 장치는 상기 데이터 베이스를 더 포함하는 것을 특징으로 하는 장치.
  11. 제 10항에 있어서,
    상기 데이터 베이스는 다수의 API들을 카테고리화하여 특정 항목에 따른 검색이 가능하도록 구성되어 있는 것을 특징으로 하는 장치.
  12. 제 10항에 있어서,
    상기 제어부는,
    사용자의 선호도 선택이 있는 경우,
    상기 사용자의 선호도 선택에 따른 응용 프로그램에서 사용되는 적어도 하나의 API를 상기 데이터베이스에서 확인하고, API 각각이 사용되는 응용 프로그램을 결정하는 것을 특징으로 하는 장치.
  13. 제 8항에 있어서,
    상기 제어부는,
    상기 응용 프로그램 구성 정보를 결정된 항목에 따라 분류하여 출력할 시,
    결정된 응용 프로그램 구성 정보를 출력하고,
    상기 결정된 응용 프로그램 구성 정보에 대한 사용자의 추가 선택이 있는 경우, 상기 추가 선택에 따라 상기 결정된 응용 프로그램 구성 정보를 필터링하여 출력하는 것을 특징으로 하는 장치.
  14. 제 8항에서 있어서,
    상기 제어부는,
    상기 응용 프로그램을 분석하기 전에, 분석할 응용 프로그램을 선택받고,
    상기 장치는
    상기 분석할 응용 프로그램에 대한 선택 입력을 상기 제어부로 전달하기 위한 입력부를 더 포함하는 것을 특징으로 하는 장치.
KR1020120018428A 2012-02-23 2012-02-23 소스 코드 분석에 의한 응용 프로그램 분석을 위한 방법 및 장치 KR20130097252A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020120018428A KR20130097252A (ko) 2012-02-23 2012-02-23 소스 코드 분석에 의한 응용 프로그램 분석을 위한 방법 및 장치
EP13156430.4A EP2631791A1 (en) 2012-02-23 2013-02-22 Method and apparatus for analyzing application program by analysis of source code
CN201310057122XA CN103294519A (zh) 2012-02-23 2013-02-22 通过分析源代码来分析应用程序的方法和装置
US13/776,170 US20130227524A1 (en) 2012-02-23 2013-02-25 Method and apparatus for analyzing application program by analysis of source code

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120018428A KR20130097252A (ko) 2012-02-23 2012-02-23 소스 코드 분석에 의한 응용 프로그램 분석을 위한 방법 및 장치

Publications (1)

Publication Number Publication Date
KR20130097252A true KR20130097252A (ko) 2013-09-03

Family

ID=47900540

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120018428A KR20130097252A (ko) 2012-02-23 2012-02-23 소스 코드 분석에 의한 응용 프로그램 분석을 위한 방법 및 장치

Country Status (4)

Country Link
US (1) US20130227524A1 (ko)
EP (1) EP2631791A1 (ko)
KR (1) KR20130097252A (ko)
CN (1) CN103294519A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150111134A (ko) * 2014-03-25 2015-10-05 한국전자통신연구원 코드 추천 및 공유 시스템 및 방법
KR20160025426A (ko) 2014-08-27 2016-03-08 주식회사 파수닷컴 소스 코드 분석 장치, 이를 위한 컴퓨터 프로그램, 그 기록매체

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10607733B2 (en) 2013-06-14 2020-03-31 Syntel, Inc. System and method for ensuring medical benefit claim payment neutrality between different disease classification codes
US9910724B2 (en) * 2013-09-13 2018-03-06 Airwatch Llc Fast and accurate identification of message-based API calls in application binaries
US20190156024A1 (en) * 2017-11-20 2019-05-23 Somansa Co., Ltd. Method and apparatus for automatically classifying malignant code on basis of malignant behavior information
US11663505B2 (en) 2020-03-10 2023-05-30 International Business Machines Corporation Estimating performance and required resources from shift-left analysis
US11954007B2 (en) 2022-04-20 2024-04-09 International Business Machines Corporation Tracking usage of common libraries by means of digitally signed digests thereof

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3494376B1 (ja) * 2002-12-05 2004-02-09 株式会社システムズ プログラム解析装置およびプログラム
US7681204B2 (en) * 2004-03-01 2010-03-16 Microsoft Corporation Event filtering at a performance-based interface
US7647579B2 (en) * 2004-03-31 2010-01-12 International Business Machines Corporation Method, system and program product for detecting deviation from software development best practice resource in a code sharing system
US8800042B2 (en) * 2005-05-16 2014-08-05 Hewlett-Packard Development Company, L.P. Secure web application development and execution environment
ATE515872T1 (de) * 2006-03-27 2011-07-15 Telecom Italia Spa Verfahren und system zum identifizieren von böswilligen nachrichten in mobilkommunikationsnetzen, diesbezügliches netz und computerprogrammprodukt dafür
US7987458B2 (en) * 2006-09-20 2011-07-26 Intel Corporation Method and system for firmware image size reduction
KR100921514B1 (ko) * 2006-12-05 2009-10-13 한국전자통신연구원 성능 예측 기능을 제공하는 소프트웨어 개발 장치 및 방법
US8074234B2 (en) * 2007-04-16 2011-12-06 Microsoft Corporation Web service platform for keyword technologies
US8181167B2 (en) * 2008-01-09 2012-05-15 Kan Zhao Method and system for presenting and analyzing software source code through intermediate representation
US20110019574A1 (en) * 2008-03-10 2011-01-27 Szabolcs Malomsoky Technique for classifying network traffic and for validating a mechanism for classifying network traffic
US8347272B2 (en) * 2008-07-23 2013-01-01 International Business Machines Corporation Call graph dependency extraction by static source code analysis
KR101661210B1 (ko) * 2008-07-24 2016-09-29 삼성전자주식회사 Iptv 통신 서비스 수행 방법 및 장치
US9020939B2 (en) * 2009-06-30 2015-04-28 International Business Machines Corporation Correlating queries issued by applications with their source lines and analyzing applications for problem determination and where used analysis
US9189244B2 (en) * 2009-08-18 2015-11-17 Adobe Systems Incorporated Methods and systems for managing data service specifications
US8566943B2 (en) * 2009-10-01 2013-10-22 Kaspersky Lab, Zao Asynchronous processing of events for malware detection
US9069804B2 (en) * 2010-07-07 2015-06-30 Fujitsu Limited System and a method for generating database model for analysis of applications
US20120016862A1 (en) * 2010-07-14 2012-01-19 Rajan Sreeranga P Methods and Systems for Extensive Crawling of Web Applications
US9911142B2 (en) * 2010-12-10 2018-03-06 Viacom International Inc. Centralized deployment of advertising code
US8832836B2 (en) * 2010-12-30 2014-09-09 Verisign, Inc. Systems and methods for malware detection and scanning
US9733934B2 (en) * 2011-03-08 2017-08-15 Google Inc. Detecting application similarity
US8972489B2 (en) * 2011-11-15 2015-03-03 Google Inc. Providing a client interface for a server-based web application programming interface
US9317408B2 (en) * 2011-12-15 2016-04-19 The Mathworks, Inc. System and method for systematic error injection in generated code
US9292502B2 (en) * 2013-02-28 2016-03-22 Web Computing AS Modular platform for web applications and systems

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150111134A (ko) * 2014-03-25 2015-10-05 한국전자통신연구원 코드 추천 및 공유 시스템 및 방법
KR20160025426A (ko) 2014-08-27 2016-03-08 주식회사 파수닷컴 소스 코드 분석 장치, 이를 위한 컴퓨터 프로그램, 그 기록매체

Also Published As

Publication number Publication date
EP2631791A1 (en) 2013-08-28
US20130227524A1 (en) 2013-08-29
CN103294519A (zh) 2013-09-11

Similar Documents

Publication Publication Date Title
RU2336557C2 (ru) Классы структур автоматизации пользовательского интерфейса и интерфейсы
US20180081935A1 (en) Data Visualization in a Dashboard Display Using Panel Templates
US10884891B2 (en) Interactive detection of system anomalies
Mairiza et al. Constructing a catalogue of conflicts among non-functional requirements
KR20130097252A (ko) 소스 코드 분석에 의한 응용 프로그램 분석을 위한 방법 및 장치
US7917815B2 (en) Multi-layer context parsing and incident model construction for software support
KR101374385B1 (ko) 단축 아이콘 제공 기능을 갖는 휴대용 디바이스 및 단축 아이콘 제공방법
CA2684822C (en) Data transformation based on a technical design document
US8898178B2 (en) Solution monitoring system
US10506078B2 (en) Centralized overview display generated from annotated data sources
CN110309498B (zh) 基于参数生成审查报告的实现方法及装置,以及利用其生成审查报告的方法
KR20140126702A (ko) 관련 문서들에 대한 확장 활성화 기법
US20220300698A1 (en) Techniques for web framework detection
CN111045653B (zh) 系统生成方法、装置、计算机可读介质及电子设备
US10713070B2 (en) Systems and methods for capturing and visualizing user interactions across devices
US20160162539A1 (en) Computer executable method of generating analysis data and apparatus performing the same and storage medium for the same
US10248733B2 (en) Integration of a catalog application with a monitoring application
JP2017045238A (ja) 情報処理システム、情報処理装置、及び情報処理方法
US8782626B2 (en) Search suggestions for static code analysis
US9104573B1 (en) Providing relevant diagnostic information using ontology rules
US11036763B2 (en) Flexible organizational hierarchy
Zenker et al. Design and implementation of a usability-framework for smartwatches
JPWO2017047341A1 (ja) 情報処理装置、情報処理方法、およびプログラム
KR101351079B1 (ko) 데이터베이스와 연동되는 프로그램을 제어하는 서비스 제공 방법 및 시스템
de Camargo Magano et al. Abstracting Big Data Processing Tools for Smart Cities

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid