[go: up one dir, main page]

KR101290847B1 - 기 개발된 시스템의 소스코드를 기반으로 휘처모델을 생성하는 방법과 그 장치 - Google Patents

기 개발된 시스템의 소스코드를 기반으로 휘처모델을 생성하는 방법과 그 장치 Download PDF

Info

Publication number
KR101290847B1
KR101290847B1 KR1020110117645A KR20110117645A KR101290847B1 KR 101290847 B1 KR101290847 B1 KR 101290847B1 KR 1020110117645 A KR1020110117645 A KR 1020110117645A KR 20110117645 A KR20110117645 A KR 20110117645A KR 101290847 B1 KR101290847 B1 KR 101290847B1
Authority
KR
South Korea
Prior art keywords
features
nodes
graph
relationship
node
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Fee Related
Application number
KR1020110117645A
Other languages
English (en)
Other versions
KR20130052283A (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 KR1020110117645A priority Critical patent/KR101290847B1/ko
Publication of KR20130052283A publication Critical patent/KR20130052283A/ko
Application granted granted Critical
Publication of KR101290847B1 publication Critical patent/KR101290847B1/ko
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • 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

Landscapes

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

Abstract

본 발명에 따른 휘처모델 생성장치 및 방법이 개시된다. 본 발명에 따른 휘처모델 생성장치는 특정 소스코드에 포함된 전처리 지시자들의 처리순서를 기초로 추상 구문 트리를 생성하는 추상 구문 트리 생성부, 상기 추상 구문 트리 내의 노드들 중 명령어와 관련된 노드를 휘처로 판별하여, 상기 판별된 휘처들 간의 관계를 표현한 표현식을 포함하는 구성 지식을 추출하는 구성 지식 추출부, 상기 구성 지식 추출부에서 추출된 구성 지식을 취합하여, 상기 취합된 구성 지식들에 포함된 휘처간의 관계를 표현한 그래프를 생성하는 그래프 생성부 및 상기 그래프 생성부에서 생성된 그래프에 최소비용신장 트리 알고리즘을 적용하여 상기 그래프에서 루트 노드를 제외한 모든 노드가 선택적 휘처인 최소비용신장 트리를 생성하는 휘처모델 생성부를 포함하여 구성한다. 따라서, 본 발명에 따른 휘처모델을 생성하는 장치 및 방법을 이용할 경우에는, 소스코드에 포함된 전처리 지시자를 이용하여 가변성이 표현된 소스코드로부터 소스코드에 구현된 휘처모델을 생성할 수 있다.

Description

기 개발된 시스템의 소스코드를 기반으로 휘처모델을 생성하는 방법과 그 장치{METHOD FOR CREATING A FEATURE MODEL FROM LEGACY SYSTEM SOURCE CODE}
본 발명은 기 개발된 시스템의 소스코드를 기반으로 휘처모델을 생성하는 방법과 그 장치에 관한 것으로, 더욱 상세하게는 본 발명은 기 개발된 시스템의 소스코드로부터 공통점과 차이점을 갖는 휘처를 추출하여 이를 이용한 휘처모델을 생성하는 방법과 그 장치에 관한 것이다.
소프트웨어 제품라인(이하 제품라인)이란 공통된 기능을 갖고 있는 소프트웨어 시스템 군을 뜻한다. 같은 제품라인에 속하는 시스템들은 공통된 기능을 많이 갖고 있기 때문에 시스템을 개발할 때 공통된 기능을 재사용할 수 있는 가능성이 높다.
소프트웨어 제품라인 공학(이하 제품라인 공학)은 시스템 재사용 방법 중 하나로, 시스템 하나를 개발하기 위한 패러다임이 아니라 제품라인을 개발하기 위한 새로운 패러다임을 제시한다. 제품라인 공학은 제품라인에 속하는 시스템들의 공통점과 차이점을 분석하고, 분석 내용을 바탕으로 핵심 자산을 개발하고 관리하여, 핵심 자산으로부터 제품라인에 속하는 시스템들을 개발하는 소프트웨어 개발 방법이다. 이 때 제품라인의 핵심 자산은 시스템 요구 사항, 아키텍처 디자인, 소스코드 컴포넌트, 테스트 케이스 등을 포함한다.
제품라인 공학에서 제품라인에 속하는 시스템 간의 공통점과 차이점을 체계적으로 분석하고 관리하는 것이 매우 중요하다. 이때, 휘처모델은 제품라인에 속하는 시스템 간의 공통점과 차이점을 "휘처" 단위로 나타내고, 휘처 사이의 관계를 표현하는 분석 모델이다.
휘처모델의 휘처는 필수, 선택, 택일의 세 가지 타입이 있다. 필수 타입의 휘처는 제품라인에 속하는 모든 시스템에 포함되는 휘처이다. 선택 타입의 휘처는 제품라인에 속하는 일부 시스템에만 선택적으로 포함되는 휘처이다. 택일 타입의 휘처는 같은 택일 그룹에 속하는 휘처 중 단 하나만 제품라인에 속하는 시스템에 들어가야 하는 휘처이다. 또한 휘처 사이에는 포함관계, 추상화-상세화 관계와 같은 구조적인 관계가 있을 수 있다. 또한 어떤 휘처가 시스템에 포함될 때 다른 어떤 휘처가 함께 시스템에 포함되어야 하는 필요 관계, 어떤 휘처가 시스템에 포함될 때 다른 어떤 휘처가 시스템에 포함되면 안되는 배제 관계와 같은 조합규칙이 있을 수 있다.
제품라인에 속하는 시스템 중 특정 시스템에 따라서 제품에 포함이 되거나 포함이 되지 않는 가변 휘처(선택 또는 택일 타입의 휘처)가 있기 때문에, 제품라인의 핵심 자산은 가변 휘처가 시스템에 포함되는지 여부에 따라서 핵심 자산의 일부가 시스템에 포함이 되거나 포함이 되지 않도록 처리가 되어야 한다. 이 때 사용되는 처리 방법을 가변성 구현 방법이라고 하는데, 그 중 산업체에 실제적으로 많이 쓰이는 가변성 구현 방법 중 하나가 전처리 지시자를 통한 가변성 구현 방법이다. 전처리 지시자를 통한 가변성 구현 방법은, 전처리기가 컴파일 이전에 전처리 지시자 구문이 들어간 소스코드를 제품에 포함되거나 포함되지 않도록 치환하는 방법이다.
제품라인 공학의 추출식 접근법은 제품라인의 핵심 자산을 개발할 때 기 개발된 시스템의 소스코드를 재사용하여 핵심 자산을 개발하는 방법이다. 이러한 추출식 접근법을 통하여 제품라인의 핵심 자산을 개발하는 경우, 핵심 자산을 처음부터 새로 만드는 선행식 접근법을 통하여 핵심 자산을 개발하는 것에 비해 핵심 자산을 개발하는 시간과 노력이 적게 드는 장점이 있다. 그러나 추출식 접근법을 통하여 제품라인의 핵심 자산을 개발할 경우, 핵심 자산을 만드는데 재사용되는 기 개발된 시스템은 과거에 휘처 모델이 없이 개발되었기 때문에, 기 개발된 시스템을 분석하여 휘처 모델을 복원해야 하는 문제가 있다. 그러나 기 개발된 시스템의 소스코드를 분석하여 휘처모델을 직접 수작업으로 생성하는 경우 소스코드의 구조가 복잡할 수록 분석의 복잡도가 높아져서 휘처모델을 수동으로 생성하기가 어렵다는 문제점을 가지고 있다.
상기와 같은 문제점을 해결하기 위한 본 발명의 목적은, 기 개발된 시스템의 소스코드로부터 휘처모델을 자동으로 생성하는 장치를 제공하는데 있다.
상기와 같은 문제점을 해결하기 위한 본 발명의 목적은, 기 개발된 시스템의 소스코드로부터 휘처모델을 자동으로 생성하는 방법을 제공하는데 있다.
상기 목적을 달성하기 위한 본 발명의 일 실시예는, 특정 소스코드에 포함된 전처리 지시자들의 처리순서를 기초로 추상 구문 트리를 생성하는 추상 구문 트리 생성부, 상기 추상 구문 트리 내의 노드들 중 명령어와 관련된 노드를 휘처로 판별하여, 상기 판별된 휘처들 간의 관계를 표현한 표현식을 포함하는 구성 지식을 추출하는 구성 지식 추출부, 상기 구성 지식 추출부에서 추출된 구성 지식을 취합하여, 상기 취합된 구성 지식들에 포함된 휘처간의 관계를 표현한 그래프를 생성하는 그래프 생성부 및 상기 그래프 생성부에서 생성된 그래프에 최소비용신장 트리 알고리즘을 적용하여 상기 그래프에서 루트 노드를 제외한 모든 노드가 선택적 휘처인 최소비용신장 트리를 생성하는 휘처모델 생성부를 포함하는 휘처모델 생성장치를 제공한다.
상기 다른 목적을 달성하기 위한 본 발명의 일 실시예는 특정 소스코드에 포함된 전처리 지시자들의 처리순서를 기초로 추상 구문 트리를 생성하는 추상 구문 트리 생성단계, 상기 추상 구문 트리 내의 노드들 중 명령어와 관련된 노드를 휘처로 판별하여, 상기 판별된 휘처들 간의 관계를 표현한 표현식을 포함하는 구성 지식을 추출하는 구성 지식 추출단계, 상기 추출된 구성 지식을 취합하여, 상기 취합된 구성 지식들에 포함된 휘처간의 관계를 표현한 그래프를 생성하는 그래프 생성단계 및 상기 생성된 그래프에 최소비용신장 트리 알고리즘을 적용하여 상기 그래프에서 루트 노드를 제외한 모든 노드가 선택적 휘처인 최소비용신장 트리를 생성하는 휘처모델 생성단계를 포함하는 휘처모델 생성방법을 제공한다.
상기와 같은 본 발명에 따른 휘처모델을 생성하는 장치 및 방법을 이용할 경우에는, 소스코드에 포함된 전처리 지시자를 이용하여 가변성이 표현된 소스코드로부터 휘처모델을 생성할 수 있다. 이를 통해 기 개발된 시스템에 구현된 휘처를 확인할 수 있다. 또한 기존 휘처모델이 존재하는 경우, 기존 휘처모델과 기 개발된 시스템의 소스코드로부터 생성한 휘처모델을 비교하여 휘처모델의 일관성을 검증할 수 있다.
도 1은 본 발명의 일 실시예에 따른 휘처모델 생성장치의 구성을 보여주는 블록도이다.
도 2는 전처리 지시자가 기술된 소스코드의 일 예를 보여주는 개념도이다.
도 3은 본 발명의 일 실시예에 따른 소스코드의 전처리 지시자에 기초하여 생성된 추상구문트리를 보여주는 트리 구조도이다.
도 4는 본 발명의 일 실시예에 따른 추상구문트리로부터 추출된 구성 지식을 보여주는 트리 구조도이다.
도 5는 본 발명의 일 실시예에 따른 휘처간의 함축관계를 나타내는 함축 그래프를 보여주는 트리 구조도이다.
도 6은 본 발명의 일 실시예에 따른 변 가중치가 부여된 함축 그래프를 보여주는 트리 구조도이다.
도 7은 본 발명의 일 실시예에 따른 함축그래프에 최소비용신장 트리 알고리즘을 적용한 휘처모델을 보여주는 트리 구조도이다.
도 8은 본 발명의 일 실시예에 따른 택일적 휘처를 갖는 휘처모델을 보여주는 트리 구조도이다.
도 9는 본 발명의 일 실시예에 따른 휘처모델 생성방법을 수행하기 위한 과정을 보여주는 흐름도이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.
제1, 제2, A, B 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 발명에 따른 바람직한 실시예를 첨부한 도면들을 참조하여 상세하게 설명한다. 본 발명을 설명함에 있어 전체적인 이해를 용이하게 하기 위하여 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 일 실시예에 따른 휘처모델 생성장치의 구성을 보여주는 블록도이다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 휘처모델 생성장치는 소스코드 저장부(110), 추상 구문트리 생성부(120), 구성 지식 추출부(130), 그래프 생성부(140), 참조 휘처모델 저장부(150) 및 휘처모델 생성부(160)를 포함하여 구성될 수 있다.
또한 도 1을 참조하면, 본 발명의 일 실시예에 따른 그래프 생성부(140)는 함축그래프 생성부(141), 응집군 통합부(143) 및 변 가중치 계산부(145)를 포함하여 구성될 수 있다.
또한 도1을 참조하면, 본 발명의 일 실시예에 따른 휘처모델 생성장치는 다음과 같이 설명될 수 있다.
소스코드 저장부(110)는 소프트웨어 제품라인에서 전처리 지시자를 사용하여 각 제품 간의 가변성을 구현한 소스코드가 저장할 수 있고, 또한 본 발명의 일 실시예에 따른 휘처모델 생성을 위한 입력으로서 소스코드를 제공할 수 있다.
한편 전처리 지시자를 이용하여 가변성을 구현한 소스코드는 C/C++ 언어를 이용하여 작성될 수 있고, 전처리 지시자의 유형은 소스파일을 포함하는 전처리 지시자, 조건을 포함하는 조건형 전처리 지시자, 그리고 에러 전처리 지시자를 포함할 수 있다. 또한 전처리 지시자는 코드 세그먼트의 조건적 포함이나 조건적 배제를 통해 소스코드의 가변성을 표현하고, 코드 세그먼트의 포함 혹은 배제를 제어함으로써, 컴파일 이후 생성되는 프로그램의 휘처 구성을 결정할 수 있다.
이하 도면을 참조하여 전처리지시자가 포함된 소스코드의 예를 설명한다.
도 2는 전처리 지시자가 기술된 소스코드의 일 예를 보여주는 개념도로서, 도 2에 예시된 소스코드(210)는 C/C++ 언어로 작성되었으며 전처리 지시자가 포함되어 있다.
도 2를 참조하면 소스코드(200)내에 포함된 전처리 지시자는 '#'으로 시작되는 명령어일 수 있다.
한편, #include "lib.h"(210)의 '#include'는 소스파일 포함 전처리 지시자에 속하며, "lib.h"라는 이름의 소스 파일을 포함시키라는 의미이다.
또한 #if Weight_Sensor==1...endif"(220)의 "#if...#endif"는 조건 포함 전처리 지시자에 속한다. 이때, "#if Weight_Sensor==1"는 Weight_Sensor의 값이 1일 경우 (즉, 조건을 만족했을 때) "#if"와 "#endif"사이에 속하는 코드가 제품에 포함되도록 할 수 있고, Weight_Sensor의 값이 1 이 아닐 경우 (즉, 조건을 만족하지 못했을 때) "#if"와 "#endif"사이에 속하는 코드가 제품에서 제외되도록 할 수 있다.
#define Digital 1(230)과 #define Analog 0(240)에서 "#define"과 같이 조건 포함 전처리 지시자의 조건문에 사용될 수 있는 식별자를 매크로라고 한다. "#error"(250)는 에러 전처리 지시자에 속하며, 해당 구문에 도달하면 컴파일을 중단시킬 수 있다.
추상 구문트리 생성부(120)는 소스코드 저장부(110)에 저장된 소스코드에 포함된 전처리 지시자들의 처리순서를 기초로 추상 구문 트리를 생성하는 부분일 수 있다.
일반적인 추상 구문 트리가 소스코드의 추상 구문 정보에 대한 트리 표현인 반면에, 본 발명에서 사용한 추상 구문 트리는 소스코드에 사용된 전처리 지시자에 대한 추상 구문을 표현할 수 하고, 조건형 전처리 지시자의 경우에는 기존 추상 구문 트리의 구조를 확장하여 연결된 두 노드간에 참 또는 거짓의 관계를 더 포함시킨다. 즉, 소스 코드내의 전처리 지시자 중 특정 전처리 지시자가 조건을 갖는 조건형 전처리 지시자이면, 상기 특정 전처리 지시자에 대응하는 노드와 그 하위 노드와의 포함관계는 조건의 만족 여부, 예를 들면 참 또는 거짓에 따라 택일적으로 포함되는 방식으로 표현할 수 있다.
특히, 추상 구문 트리 생성부(120)에서 생성하는 추상 구문 트리는 소스 코드내의 각 전처리 지시자와 관련된 추상 구문을 표현한 노드들의 집합과, 상기 노드의 집합에 포함된 노드들 중 두 노드 간의 포함 관계를 표현한 포함 관계의 집합으로 구성된 방향성을 갖는 구문트리일 수 있다.
이하 도면을 참조하여 추상 구문 트리 생성부(120)에서 구문트리를 생성하는 예를 설명한다.
도 3은 본 발명의 일 실시예에 따른 소스코드의 전처리 지시자에 기초하여 생성된 추상구문트리를 보여주는 트리 구조도이다.
도 3을 참조하면, 추상 구문 트리는 노드의 집합과 두 노드 간의 TRUE 또는 FALSE를 나타내는 포함 관계의 집합으로 이루어져 있다.
이는 만일 어떤 노드 A가 다른 어떤 노드 B를 TRUE로 포함하고 있다면, 상위 노드에 대응하는 전처리 지시자가 TRUE인 경우 하위 노드에 대응하는 전처리 지시자가 처리됨을 의미할 수 있다. 한편, 어떤 노드 A가 다른 어떤 노드 B를 FALSE로 포함하고 있다면, 상위 노드에 대응하는 전처리 지시자가 FALSE인 경우 하위 노드에 대응하는 전처리 지시자가 처리됨을 의미할 수 있다.
예를 들면 도 3 에서 Weight_Sensor(310) 전처리 지시자가 'TRUE'로 포함하는 Include Code Block(320) 밑에 Digital(330) 전처리 지시자가 자손으로 포함되어 있다. 이는 Weight_Sensor(310) 전처리 지시자가 'FALSE'인 경우 Digital(330) 전처리 지시자는 처리될 수 없음을 지시하는 것일 수 있다.
본 실시예는 조건형 전처리 지시자를 포함하는 소스코드의 일부에 대한 트리생성의 예를 보여주는 것이며, 본 발명에 따른 추상 구문트리는 다양한 형태로 생성될 수 있고 상기의 실시예에 한정되지 않는다.
구성 지식 추출부(130)는 추상 구문트리 생성부(120)에서 생성된 추상 구문 트리로부터 특정 패턴을 찾아 휘처에 대한 구성 지식을 추출해낼 수 있다. 즉 추상 구문트리 생성부(120)에서 생성된 추상 구문 트리 내의 노드들 중에서 명령어와 관련된 노드를 휘처로 판별하여, 상기 판별된 휘처들간의 관계를 표현한 표현식을 포함하는 구성 지식을 추출할 수 있다.
특히, 구성 지식 추출부(130)는 상기 추상 구문 트리 내의 노드들 중 예를 들면 매크로를 지시하는 노드를 휘처로 판별하여 상기 판별된 휘처들간의 함축 또는 배제관계를 표현한 표현식을 포함하는 구성 지식을 추출할 수 있다.
이하 도면을 참조하여 구성 지식 추출부(130)에서 구성 지식을 추출하는 예를 설명한다.
도 4는 본 발명의 일 실시예에 따른 추상구문 트리로부터 추출된 구성 지식을 보여주는 트리 구조도이다.
도 4를 참조하면, 도 3에 도시된Digital(330)은 Weight_Sensor==1(310)을 만족해야만 코드에 포함될 수 있다고 표현된 추상구문 트리를 통해 도 4의 "Digital->Weight_Sensor"(410)라는 휘처 간의 함축 관계에 대한 표현식을 얻을 수 있으며, 이는 Digital 휘처가 선택되기 위해서는 Analog 휘처가 선택되어야 한다는 것을 의미한다.
다른 예로, 도 2 에 도시된, "#if Digital...#elif Analog...#else #error #endif"(261, 263, 265, 250, 267) 구문을 통해서 "¬Digital∧¬Analog->False"(450)라는 휘처 간의 함축 관계에 대한 표현식을 얻을 수 있다. 이는 Digital 휘처와 Analog 휘처 중 적어도 하나가 반드시 선택되어야 한다는 것을 의미한다.
그래프 생성부(140)는 구성 지식 추출부(130)에서 추출된 구성 지식을 취합하여, 취합된 구성 지식들에 포함된 휘처간의 관계를 표현한 그래프를 생성하는 부분일 수 있다.
좀 더 상세하게는 그래프 생성부(140)는 함축그래프 생성부(141), 응집군 통합부(143) 및 변 가중치 계산부(145)를 포함하여 구성될 수 있고, 각 구성은 다음과 같이 설명될 수 있다.
함축그래프 생성부(141)는 구성 지식 추출부(130)에서 추출된 구성 지식을 취합하여, 상기 취합된 각 구성 지식에 포함된 휘처간의 관계가 함축관계인 구성 지식을 추출하고, 상기 추출된 구성 지식들에 포함된 각 휘처를 노드로 표현하고 상기 휘처들 간 함축 관계를 방향성을 갖는 변으로 표현하는 함축 그래프를 생성하는 부분일 수 있다.
응집군 통합부(143)는 함축그래프 생성부(141)에서 생성된 함축 그래프 내에서 양 방향성을 갖는 두 노드를 식별하고 상기 식별된 두 노드를 하나의 노드로 통합함으로써 함축그래프를 변경할 수 있다. 따라서 변경된 함축그래프에는 양 방향성을 갖는 두 노드가 존재 하지 않을 수 있다.
이하 도면을 참조하여 함축그래프 생성 예를 설명한다.
도 5는 본 발명의 일 실시예에 따른 취처 간의 함축관계를 나타내는 함축 그래프를 보여주는 트리 구조도이다.
도 5에 도시된 함축그래프는 엘리베이터에 내장되는 소프트웨어에 대한 소스코드를 이용하여 생성된 함축그래프로서, 그래프 내의 두 노드 간의 화살표는 화살표 방향의 노드가 반대편 노드에게 함축된 것을 의미할 수 있다.
예를 들면 Absolute 노드(551)는 Position Sensor 노드(531)를 함축함을 의미할 수 있다. 또한, 만일 두 노드가 상호 함축하는 관계이면 양방향 화살표로 나타낼 수 있다. 예를 들면, 도 5의 Car Input Handling 노드(535)와 Car Call Handling 노드(523)는 양방향 화살표로 연결되어 있는데, 이는 서로를 함축하고 있음을 의미할 수 있다.
또한, 상술한 바와 같이, 양방향성을 갖는 두 노드는 응집군 통합부(105)에서 하나의 노드로 통합될 수 있다. 도 5를 참조하면 양방향성을 갖는 노드들이 원(591-594)으로 표시되어 있다. 양방향성을 제거하기 위하여Car Input Handling 노드(535)는 Car Call Handling 노드(523)로 통합되고, 다시 Car Call Handling 노드(523)는 Root(511)노드로 통합될 수 있고, 또한 Environment 노드(521)도 Root(511)노드로 통합된다. 한편, Digital_Sensor.c 노드(561)는 Digital 노드(553) 로, Analog_Sensor.c 노드(563)는 Anolog 노드(554) 로 통합될 수 있다.
변 가중치 계산부(145)는 참조 휘처모델 저장부(150)에 저장된 참조 휘처모델을 참조하여, 응집군 통합부(143)에서 변경된 함축 그래프의 각 변에 대하여, 상기 각 변을 연결하는 두 노드에 각각 대응하는 두 휘처의 거리를 판별하고 상기 판별된 거리를 상기 변의 가중치로 부여하는 부분일 수 있다.
특히, 변 가중치 계산부(145)는 응집군 통합부(143)에서 변경된 함축 그래프 내의 변들 중에서 가중치를 갖지 않는 변과 이에 연결된 두 노드에 각각 대응하는 두 휘처를 식별하고, 참조 휘처모델을 참조하여, 상기 식별된 두 휘처 간의 거리를 가중치를 갖지 않는 변에 대한 정량화된 가중치로 부여할 수 있다. 이때, 상기 식별된 두 휘처간의 관계가 조상-자손의 관계라면 두 휘처 간의 깊이 차를 상기 식별된 변에 대한 가중치로 부여할 수 있다. 이때 조상-자손의 관계란 트리 구조에서 맨 하위층에서부터 거슬러 올라갈 때 같은 연결선 상에서 상위층에 있는 노드를 조상 하위층에 있는 노드를 자손 노드라고 할 수 있다.
한편, 상기 식별된 두 휘처간의 관계가 조상-자손의 관계가 아니라면 무한값 또는 0이 상기 변에 대한 가중치로 부여될 수도 있다.
참조 휘처모델 저장부(150)는 참조 휘처모델이 저장되는 부분으로, 참조 휘처모델은 도메인 전문가가 도메인 지식을 바탕으로 수동으로 작성한 휘처모델일 수 있고, 기 개발된 시스템의 소스코드로부터 복원한 휘처모델과 다를 수 있다. 본 발명의 일 실시예에서는 상술한 바와 같이 본 발명의 일 실싱예에 의한 휘처모델 생성장치를 통해 추출된 함축 그래프내의 변 가중치를 계산하기 위해 참조 휘처모델을 참조한다.
이하, 도면을 참조하여 함축그래프에 변가중치를 부여하는 예를 설명한다.
도 6은 본 발명의 일 실시예에 따른 변 가중치가 부여된 함축 그래프를 보여주는 트리 구조도이다.
도 6을 참조하면 Position_Sensor 노드(622)와 Absolute 노드(631) 사이의 변은 가중치가 1로 표기되어 있어 있는데, 이는 두 노드에 대응하는 두 휘처가 조상과 자손 관계이며 두 휘처의 깊이 차이가 1임을 의미한다. Car Call Cancellation 노드(623)와 Anti-Nuisance 노드(625)의 경우 두 노드에 대응하는 두 휘처가 조상과 자손 관계가 아닌데, 이 경우 변은 최대 가중치(Unknown)를 부여 받을 수 있다.
휘처모델 생성부(160)는 그래프 생성부(140)에서 생성된 그래프에 최소비용신장 트리 알고리즘을 적용하여 상기 그래프에서 루트 노드를 제외한 모든 노드가 선택적 휘처인 최소비용신장 트리를 생성하는 부분일 수 있다. 이때, 최소비용신장 트리 내의 조상 노드와 자손 노드의 관계는 포함관계로 표현될 수 있다. 또한 함축그래프에는 존재하는 변이였지만, 최소비용신장 트리에서 제거된 변에 대하여, 함축그래프에서 상기 변에 연결된 두 노드에 대응되는 두 피처 간의 관계를 필요관계로 정의하여 휘처모델의 조합규칙에 추가할 수 있다.
조합규칙이란 휘처모델의 휘처가 시스템에 선택적으로 포함될 때 지켜져야 할 규칙으로, 어떤 휘처가 시스템에 포함될 때 다른 어떤 휘처가 시스템에 함께 시스템에 포함되어야 하는 필요관계, 어떤 휘처가 시스템에 포함될 때 다른 어떤 휘처는 시스템에 포함되면 안되는 배제관계가 있을 수 있다
또한 휘처모델 생성부(160)는 구성 지식 추출부(130)에서 생성한 구성 지식 중에서 두 휘처간의 관계가 배제 관계인 구성 지식을 추출하고, 추출된 구성 지식 내의 배제관계를 갖는 두 휘처에 각각 대응되는 두 휘처를 최소비용신장 트리 내에서 식별하고, 최소비용신장 트리 내에서 식별된 두 휘처에 대응되는 두 노드가 같은 조상 밑에 속하는 유일한 형제 자손인 경우 (즉 상기 두 노드외에 다른 형제 노드가 존재하지 않는 경우) 상기 두 휘처를 택일적 휘처로 설정할 수 있다. 이때 형제 자손(형제 노드)이란 직접 연결은 되어 있지 않지만 동일한 노드를 조상으로 공유하는 관계일 수 있다.
한편, 휘처모델 생성부(160)는 상기 최소비용신장 트리에서 식별된 두 휘처에 대응되는 두 노드가 같은 조상 밑에 속하는 유일한 형제 자손이 아닌 경우 상기 두 휘처간의 배제 관계를 조합규칙에 추가할 수 있다.
이하, 도면을 참조하여 휘처모델을 생성하는 예를 설명한다.
도 7은 본 발명의 일 실시예에 따른 함축그래프에 최소비용신장 트리 알고리즘을 적용한 휘처모델을 보여주는 트리 구조도이다.
도 7을 참조하면, 각 노드는 선택적 휘처(Optional feature)로 표현되며, 조상-자손 관계의 노드는 포함관계(Composed-of relationship)로 표현된다. 또한, 도 6의 함축 그래프에 나타난 휘처간의 관계 중 도 7에서 제거된 관계는 조합규칙(Composition rule)(750)에 필요 관계로 추가될 수 있다. 예를 들면, 도 6에 도시된 Car Call Cancellation 노드(623)와 Position Sensor 노드(622) 사이의 관계는 도 7의 트리 내에 도시된 Car Call Cancellation 노드(723)와 Position Sensor 노드(722)는 관계가 설정되어 있지 않은 걸로 표현되어 있다. 그러나 Composition rule(750)에 "Car Call Cancellation requires Position Sensor"(751)로 추가될 수 있다.
도 8은 본 발명의 일 실시예에 따른 택일적 휘처를 갖는 휘처모델을 보여주는 트리 구조도이다.
도 8을 참조하면, 도 7의 트리내의 휘처들 중 일부 휘처를 택일적 휘처로 변경한 것을 보여주는데, 휘처모델 생성부(160)는 구성 지식 추출부(130)에서 생성한 구성 지식을 통해 Absolute(831)와 Relative(832)가 배제 관계이고, Digital(834)과 Analog(835)가 배제 관계라는 정보를 받을 수 있다. Absolute(831)와 Relative(832)는 배제 관계이면서 같은 조상 밑에 속하는 유일한 형제 자손이기 때문에 택일적 휘처(Alternativel feature)가 될 수 있다. 만일, 같은 조상 밑에 배제 관계를 갖지 않는 다른 형제 자손이 존재할 경우에는, 두 휘처는 택일적 휘처가 아니고, 두 휘처 사이의 배제 관계는 조합규칙에 추가될 수 있다. Digital(834)과 Analog(835)도 마찬가지로 배제 관계이면서 같은 조상 밑에 속하는 유일한 형제 자손이기 때문에 택일적 휘처가 된다. 택일적 휘처가 된 자손과 조상 사이의 관계는 포함 관계가 아닌 추상화-상세화 관계(generalization relationship)가 된다
도 9는 본 발명의 일 실시예에 따른 휘처모델 생성방법을 수행하기 위한 과정을 보여주는 흐름도이다.
도 9를 참조하면, 본 발명의 일 실시예에 따른 휘처모델을 생성하는 과정은 추상구문 트리 생성단계(S910), 구성 지식 추출단계(S920), 함축그래프 생성단계(S930), 응집군 통합 단계(S940), 변 가중치 계산 단계(S950) 및 휘처모델 생성 단계(S960)을 포함하여 구성될 수 있다.
또한, 도 9를 참조하면, 본 발명의 일 실시예에 따른 휘처모델을 생성하는 각 단계는 다음과 같이 설명될 수 있다.
추상 구문트리 생성단계(S910)은 소스코드에 포함된 전처리 지시자들의 처리순서를 기초로 추상 구문 트리를 생성하는 단계일 수 있다. 일반적인 추상 구문 트리가 소스코드의 추상 구문 정보에 대한 트리 표현인 반면에, 본 발명에서 사용한 추상 구문 트리는 소스코드에 사용된 전처리 지시자에 대한 추상 구문을 표현할 수 하고, 조건형 전처리 지시자의 경우에는 기존 추상 구문 트리의 구조를 확장하여 연결된 두 노드간에 참 또는 거짓의 관계를 더 포함시킨다. 즉, 소스 코드내의 전처리 지시자 중 특정 전처리 지시자가 조건을 갖는 조건형 전처리 지시자이면, 상기 특정 전처리 지시자에 대응하는 노드와 그 하위 노드와의 포함관계는 조건의 만족 여부, 예를 들면 참 또는 거짓에 따라 택일적으로 포함되는 방식으로 표현할 수 있다.
특히, 추상 구문 트리 생성단계(S910)에서 생성하는 추상 구문 트리는 소스 코드내의 각 전처리 지시자와 관련된 추상 구문을 표현한 노드들의 집합과, 상기 노드의 집합에 포함된 노드들 중 두 노드 간의 포함 관계를 표현한 포함 관계의 집합으로 구성된 방향성을 갖는 구문트리일 수 있다.
구성 지식 추출단계(S920)는 상기 생성된 추상 구문 트리로부터 특정 패턴을 찾아 휘처에 대한 구성 지식을 추출해낼 수 있다. 즉 추상 구문 트리 내의 노드들 중에서 명령어와 관련된 노드를 휘처로 판별하여, 상기 판별된 휘처들간의 관계를 표현한 표현식을 포함하는 구성 지식을 추출할 수 있다.
특히, 추상 구문 트리 내의 노드들 중 예를 들면 매크로를 지시하는 노드가 휘처로 판별되어 상기 판별된 휘처들간의 함축 또는 배제관계를 표현한 표현식을 포함하는 구성 지식이 추출될 수 있다.
함축그래프 생성단계(S930)는 구성 지식 추출단계(S920)에서 추출된 구성 지식을 취합하여, 취합된 각 구성 지식에 포함된 휘처간의 관계가 함축관계인 구성 지식을 추출하고, 추출된 구성 지식들에 포함된 각 휘처를 노드로 표현하고 상기 휘처들 간 함축 관계를 방향성을 갖는 변으로 표현하는 함축 그래프를 생성하는 부분일 수 있다.
응집군 통합단계(S940)는 함축 그래프 내에서 양 방향성을 갖는 두 노드를 식별하고 식별된 두 노드를 하나의 노드로 통합함으로써 함축그래프를 변경할 수 있다. 따라서 변경된 함축그래프에는 양방향성을 갖는 두 노드가 존재 하지 않을 수 있다.
변 가중치 계산부(S950)는 참조 휘처모델을 참조하여, 응집군 통합단계(S940)에서 변경된 함축 그래프의 각 변에 대하여, 상기 각 변을 연결하는 두 노드에 각각 대응하는 두 휘처의 거리를 판별하고 상기 판별된 거리를 상기 변의 가중치로 부여하는 부분일 수 있다.
특히, 변 가중치 계산부(S950)는 변경된 함축 그래프 내의 변들 중에서 가중치를 갖지 않는 변과 상기 변에 연결된 두 노드에 각각 대응하는 두 휘처를 식별하고, 참조 휘처모델을 참조하여, 상기 식별된 두 휘처 간의 거리를 가중치를 갖지 않는 변에 대한 정량화된 가중치로 부여할 수 있다. 이때, 상기 식별된 두 휘처간의 관계가 조상-자손의 관계라면 두 휘처 간의 깊이 차를 상기 식별된 변에 대한 가중치로 부여할 수 있다.
한편, 상기 식별된 두 휘처간의 관계가 조상-자손의 관계가 아니라면 무한값 또는 0이 상기 변에 대한 가중치로 부여될 수도 있다.
휘처모델 생성단계(S960)는 함축 그래프에 최소비용신장 트리 알고리즘을 적용하여 상기 그래프에서 루트 노드를 제외한 모든 노드가 선택적 휘처인 최소비용신장 트리를 생성하는 부분일 수 있다. 이때, 최소비용신장 트리 내의 조상 노드와 자손 노드의 관계는 포함관계로 표현될 수 있다. 또한 함축그래프에는 존재하는 변이였지만, 최소비용신장 트리에서 제거된 변에 대하여, 함축그래프에서 상기 변에 연결된 두 노드에 대응되는 두 피처 간의 관계를 필요관계로 정의하여 휘처모델의 조합규칙에 추가하는 것을 생성할 수 있다.
또한 휘처모델 생성단계(S960)는 구성 지식 중에서 두 휘처간의 관계가 배제 관계인 구성 지식을 추출하고, 추출된 구성 지식 내의 배제관계를 갖는 두 휘처에 각각 대응되는 두 휘처를 최소비용신장 트리 내에서 식별하고, 최소비용신장 트리 내에서 식별된 두 휘처에 대응되는 두 노드가 같은 조상 밑에 속하는 유일한 형제 자손인 경우 상기 두 휘처를 택일적 휘처로 설정할 수 있다.
한편, 상기 최소비용신장 트리에서 식별된 두 휘처에 대응되는 두 노드가 같은 조상 밑에 속하는 유일한 형제 자손이 아닌 경우 상기 두 휘처간의 배제 관계가 조합규칙에 추가될 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.

Claims (20)

  1. 특정 소스코드에 포함된 전처리 지시자들의 처리순서를 기초로 추상 구문 트리를 생성하는 추상 구문 트리 생성부;
    상기 추상 구문 트리 내의 노드들 중 명령어와 관련된 노드를 휘처로 판별하여, 상기 판별된 휘처들 간의 관계를 표현한 표현식을 포함하는 구성 지식을 추출하는 구성 지식 추출부;
    상기 구성 지식 추출부에서 추출된 구성 지식을 취합하여, 상기 취합된 구성 지식들에 포함된 휘처간의 관계를 표현한 그래프를 생성하는 그래프 생성부; 및
    상기 그래프 생성부에서 생성된 그래프에 최소비용신장 트리 알고리즘을 적용하여 상기 그래프에서 루트 노드를 제외한 모든 노드가 선택적 휘처인 최소비용신장 트리를 생성하는 휘처모델 생성부를 포함하는 휘처모델 생성장치.
  2. 제 1항에 있어서,
    상기 추상 구문 트리 생성부에서 생성하는 추상 구문 트리는
    상기 각 전처리 지시자와 관련된 추상 구문을 표현한 노드의 집합과, 상기 노드의 집합에 포함된 노드들 중 두 노드 간의 포함 관계를 표현한 포함 관계의 집합으로 구성되는 것을 특징으로 하는 휘처모델 생성장치.
  3. 제 2항에 있어서,
    상기 추상 구문 트리 생성부는,
    상기 전처리 지시자 중 특정 전처리 지시자가 조건형 전처리 지시자이면, 상기 특정 전처리 지시자에 대응하는 노드와 상기 노드의 하위 노드와의 포함관계는 조건의 만족 여부로 표현하여 상기 추상 구문 트리를 생성하는 것을 특징으로 하는 휘처모델 생성장치.
  4. 제 1항에 있어서,
    상기 구성 지식 추출부는 상기 추상 구문 트리 내의 노드들 중 매크로를 지시하는 노드를 휘처로 판별하여 상기 판별된 휘처들간의 함축 또는 배제관계를 표현한 표현식을 포함하는 구성 지식을 추출하는 것을 특징으로 하는 휘처모델 생성장치.
  5. 제 1항 또는 제 4항에 있어서,
    상기 그래프 생성부는
    상기 구성 지식 추출부에서 추출된 구성 지식을 취합하여, 상기 취합된 각 구성 지식에 포함된 휘처간의 관계가 함축관계인 구성 지식을 추출하고, 상기 추출된 구성 지식들에 포함된 각 휘처를 노드로 표현하고 상기 휘처들 간 함축 관계를 방향성을 갖는 변으로 표현하는 함축 그래프를 생성하는 함축 그래프 생성부;
    상기 함축 그래프 생성부에서 생성된 함축 그래프 내에서 양 방향성을 갖는 두 노드를 식별하고 상기 식별된 두 노드를 하나의 노드로 통합함으로써 상기 함축 그래프를 변경하는 응집군 통합부; 및
    참조 휘처모델을 참조하여, 상기 응집군 통합부에서 변경된 함축 그래프의 각 변에 대하여, 상기 각 변을 연결하는 두 노드에 각각 대응하는 두 휘처의 거리를 판별하고 상기 판별된 거리를 상기 변의 가중치로 부여하는 변 가중치 계산부를 포함하는 특징으로 하는 휘처모델 생성장치.
  6. 제 5항에 있어서,
    상기 변 가중치 계산부는 상기 응집군 통합부에서 변경된 함축 그래프 내의 변들 중에서 가중치를 갖지 않는 변과 상기 변에 연결된 두 노드에 각각 대응하는 두 휘처를 식별하고,
    참조 휘처모델을 참조하여, 상기 식별된 두 휘처 간의 거리를 상기 가중치를 갖지 않는 변에 대한 정량화된 가중치로 부여하되,
    상기 식별된 두 휘처간의 관계가 조상-자손의 관계라면 두 휘처 간의 깊이 차를 상기 식별된 변에 대한 가중치로 부여하는 것을 특징으로 하는 휘처모델 생성장치.
  7. 제 6항에 있어서,
    상기 변 가중치 계산부는 상기 식별된 두 휘처간의 관계가 조상-자손의 관계가 아니라면 무한값 또는 0을 상기 변에 대한 가중치로 부여하는 것을 특징으로 하는 휘처모델 생성장치.
  8. 제 1항에 있어서,
    상기 휘처모델 생성부는
    상기 그래프 생성부에서 생성된 그래프에 최소비용신장 트리 알고리즘을 적용하여 상기 최소비용신장 트리에서 최상위 노드를 제외한 모든 노드를 선택적 휘처로 표현하고, 조상 노드와 자손 노드의 관계는 포함관계로 표현하고,
    상기 최소비용신장 트리에서 제거된 상기 그래프 내의 변에 대하여, 상기 제거된 그래프 내의 변에 연결된 두 노드에 대응되는 두 피처 간의 관계를 필요관계로 정의하여 휘처모델의 조합규칙에 추가하는 것을 생성하는 것을 특징으로 하는 휘처모델 생성장치.
  9. 제 8항에 있어서,
    상기 휘처모델 생성부는
    상기 구성 지식 추출부에서 생성한 구성 지식 중 두 휘처간의 관계가 배제 관계인 구성 지식을 추출하고,
    상기 추출된 구성 지식 내의 배제관계를 갖는 두 휘처에 각각 대응되는 두 휘처를 상기 최소비용신장 트리 내에서 식별하고,
    상기 최소비용신장 트리 내에서 식별된 두 휘처에 각각 대응되는 두 노드외에 다른 형제 노드가 존재하지 않는 경우 상기 두 휘처를 택일적 휘처로 설정하는 것을 특징으로 하는 휘처모델 생성장치.
  10. 제 9항에 있어서,
    상기 휘처모델 생성부는
    상기 최소비용신장 트리 내에서 식별된 두 휘처에 대응되는 두 노드 외의 다른 형제 노드가 존재하는 경우 상기 두 휘처간의 배제 관계를 상기 조합규칙에 추가하는 것을 특징으로 하는 휘처모델 생성장치.
  11. 특정 소스코드에 포함된 전처리 지시자들의 처리순서를 기초로 추상 구문 트리를 생성하는 추상 구문 트리 생성단계;
    상기 추상 구문 트리 내의 노드들 중 명령어와 관련된 노드를 휘처로 판별하여, 상기 판별된 휘처들 간의 관계를 표현한 표현식을 포함하는 구성 지식을 추출하는 구성 지식 추출단계;
    상기 추출된 구성 지식을 취합하여, 상기 취합된 구성 지식들에 포함된 휘처간의 관계를 표현한 그래프를 생성하는 그래프 생성단계; 및
    상기 생성된 그래프에 최소비용신장 트리 알고리즘을 적용하여 상기 그래프에서 루트 노드를 제외한 모든 노드가 선택적 휘처인 최소비용신장 트리를 생성하는 휘처모델 생성단계를 포함하는 휘처모델 생성방법.
  12. 제 11항에 있어서,
    상기 추상 구문 트리 생성단계에서 생성하는 추상 구문 트리는
    상기 각 전처리 지시자와 관련된 추상 구문을 표현한 노드의 집합과, 상기 노드의 집합에 포함된 노드들 중 두 노드 간의 포함 관계를 표현한 포함 관계의 집합으로 구성되는 것을 특징으로 하는 휘처모델 생성방법.
  13. 제 12항에 있어서,
    상기 추상 구문 트리 생성단계는,
    상기 전처리 지시자 중 특정 전처리 지시자가 조건형 전처리 지시자이면, 상기 특정 전처리 지시자에 대응하는 노드와 상기 노드의 하위 노드와의 포함관계는 조건의 만족 여부로 표현하여 상기 추상 구문 트리를 생성하는 것을 특징으로 하는 휘처모델 생성방법.
  14. 제 11항에 있어서,
    상기 구성 지식 추출단계는 상기 추상 구문 트리 내의 노드들 중 매크로를 지시하는 노드를 휘처로 판별하여 상기 판별된 휘처들간의 함축 또는 배제관계를 표현한 표현식을 포함하는 구성 지식을 추출하는 것을 특징으로 하는 휘처모델 생성방법.
  15. 제 11항 또는 제 14항에 있어서,
    상기 그래프 생성단계는
    상기 구성 지식 추출단계에서 추출된 구성 지식을 취합하여, 상기 취합된 각 구성 지식에 포함된 휘처간의 관계가 함축관계인 구성 지식을 추출하고, 상기 추출된 구성 지식들에 포함된 각 휘처를 노드로 표현하고 상기 휘처들 간 함축 관계를 방향성을 갖는 변으로 표현하는 함축 그래프를 생성하는 함축 그래프 생성단계;
    상기 함축 그래프 생성단계에서 생성된 함축 그래프 내에서 양 방향성을 갖는 두 노드를 식별하고 상기 식별된 두 노드를 하나의 노드로 통합함으로써 상기 함축 그래프를 변경하는 응집군 통합단계; 및
    참조 휘처모델을 참조하여, 상기 응집군 통합단계에서 변경된 함축 그래프의 각 변에 대하여, 상기 각 변을 연결하는 두 노드에 각각 대응하는 두 휘처의 거리를 판별하고 상기 판별된 거리를 상기 변의 가중치로 부여하는 변 가중치 계산단계를 포함하는 특징으로 하는 휘처모델 생성방법.
  16. 제 15항에 있어서,
    상기 변 가중치 계산단계는 상기 응집군 통합부에서 변경된 함축 그래프 내의 변들 중에서 가중치를 갖지 않는 변과 상기 변에 연결된 두 노드에 각각 대응하는 두 휘처를 식별하고,
    참조 휘처모델을 참조하여, 상기 식별된 두 휘처 간의 거리를 상기 가중치를 갖지 않는 변에 대한 정량화된 가중치로 부여하되,
    상기 식별된 두 휘처간의 관계가 조상-자손의 관계라면 두 휘처 간의 깊이 차를 상기 식별된 변에 대한 가중치로 부여하는 것을 특징으로 하는 휘처모델 생성방법.
  17. 제 16항에 있어서,
    상기 변 가중치 계산단계는 상기 식별된 두 휘처간의 관계가 조상-자손의 관계가 아니라면 무한값 또는 0을 상기 변에 대한 가중치로 부여하는 것을 특징으로 하는 휘처모델 생성방법.
  18. 제 11항에 있어서,
    상기 휘처모델 생성단계는
    상기 그래프 생성단계에서 생성된 그래프에 최소비용신장 트리 알고리즘을 적용하여 상기 최소비용신장 트리에서 최상위 노드를 제외한 모든 노드를 선택적 휘처로 표현하고, 조상 노드와 자손 노드의 관계는 포함관계로 표현하고,
    상기 최소비용신장 트리에서 제거된 상기 그래프 내의 변에 대하여, 상기 제거된 그래프 내의 변에 연결된 두 노드에 대응되는 두 피처 간의 관계를 필요관계로 정의하여 휘처모델의 조합규칙에 추가하는 것을 생성하는 것을 특징으로 하는 휘처모델 생성방법.
  19. 제 18항에 있어서,
    상기 휘처모델 생성단계는
    상기 구성 지식 추출단계에서 생성한 구성 지식 중 두 휘처간의 관계가 배제 관계인 구성 지식을 추출하고,
    상기 추출된 구성 지식 내의 배제관계를 갖는 두 휘처에 각각 대응되는 두 휘처를 상기 최소비용신장 트리 내에서 식별하고,
    상기 최소비용신장 트리 내에서 식별된 두 휘처에 각각 대응되는 두 노드외의 다른 형제 노드가 존재하지 않는 경우 상기 두 휘처를 택일적 휘처로 설정하는 것을 특징으로 하는 휘처모델 생성방법.
  20. 제 19항에 있어서,
    상기 휘처모델 생성단계는
    상기 최소비용신장 트리 내에서 식별된 두 휘처에 대응되는 두 노드외의 다른 형제 노드가 존재하는 경우 상기 두 휘처간의 배제 관계를 상기 조합규칙에 추가하는 것을 특징으로 하는 휘처모델 생성방법.
KR1020110117645A 2011-11-11 2011-11-11 기 개발된 시스템의 소스코드를 기반으로 휘처모델을 생성하는 방법과 그 장치 Expired - Fee Related KR101290847B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020110117645A KR101290847B1 (ko) 2011-11-11 2011-11-11 기 개발된 시스템의 소스코드를 기반으로 휘처모델을 생성하는 방법과 그 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110117645A KR101290847B1 (ko) 2011-11-11 2011-11-11 기 개발된 시스템의 소스코드를 기반으로 휘처모델을 생성하는 방법과 그 장치

Publications (2)

Publication Number Publication Date
KR20130052283A KR20130052283A (ko) 2013-05-22
KR101290847B1 true KR101290847B1 (ko) 2013-07-29

Family

ID=48661945

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110117645A Expired - Fee Related KR101290847B1 (ko) 2011-11-11 2011-11-11 기 개발된 시스템의 소스코드를 기반으로 휘처모델을 생성하는 방법과 그 장치

Country Status (1)

Country Link
KR (1) KR101290847B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101667262B1 (ko) * 2014-08-18 2016-10-19 슈어소프트테크주식회사 코드 커버리지 측정 방법 및 이를 실행하기 위한 프로그램을 기록한 컴퓨터로 판독가능한 기록매체

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100744886B1 (ko) 2005-06-28 2007-08-01 학교법인 포항공과대학교 아사달 : 휘처 기반 소프트웨어 제품라인 개발 환경을제공하는 시스템
KR20110074156A (ko) * 2009-12-24 2011-06-30 주식회사 포스코 소프트웨어 자산구축 방법 및 기록매체
KR20110113276A (ko) * 2010-04-09 2011-10-17 포항공과대학교 산학협력단 소프트웨어 시스템의 자율 관리 제공 방법, 이를 수행하는 프로그램을 기록한 기록매체 및 소프트웨어의 자율 관리 기능을 구비한 시스템

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100744886B1 (ko) 2005-06-28 2007-08-01 학교법인 포항공과대학교 아사달 : 휘처 기반 소프트웨어 제품라인 개발 환경을제공하는 시스템
KR20110074156A (ko) * 2009-12-24 2011-06-30 주식회사 포스코 소프트웨어 자산구축 방법 및 기록매체
KR20110113276A (ko) * 2010-04-09 2011-10-17 포항공과대학교 산학협력단 소프트웨어 시스템의 자율 관리 제공 방법, 이를 수행하는 프로그램을 기록한 기록매체 및 소프트웨어의 자율 관리 기능을 구비한 시스템

Also Published As

Publication number Publication date
KR20130052283A (ko) 2013-05-22

Similar Documents

Publication Publication Date Title
US20180336018A1 (en) Method and system for template extraction based on source code similarity
US11079749B2 (en) Method and apparatus for automated hazard detection
WO2023093689A1 (zh) 一种计算图优化方法、装置及设备
JP6937659B2 (ja) ソフトウェアテスト装置および方法
US9880834B2 (en) Source program analysis system, source program analysis method, and recording medium on which program is recorded
CN105808438B (zh) 一种基于函数调用路径的测试用例复用方法
Le et al. Validating consistency between a feature model and its implementation
CN108228187A (zh) 一种数值程序的全局优化方法
US9996606B2 (en) Method for determining condition of category division of key performance indicator, and computer and computer program therefor
CN104267936A (zh) 基于树语义的异步动态下推网络可达性分析方法
KR101290847B1 (ko) 기 개발된 시스템의 소스코드를 기반으로 휘처모델을 생성하는 방법과 그 장치
KR102114547B1 (ko) 대상 프로그램에 포함된 대상 함수를 테스트하는 방법 및 장치
Gull et al. A block-chain oriented model driven framework for handling inconsistent requirements in global software development
KR102557800B1 (ko) 차분 프라이버시 기반 의사결정 트리 생성 방법 및 장치
CN116595538A (zh) 代码漏洞检测方法、装置、电子设备及存储介质
CN106528179B (zh) 一种Java类依赖关系的静态识别方法
JP5075695B2 (ja) プロパティ記述のカバレッジ測定装置及びプログラム
Ali et al. Cobrex: A tool for extracting business rules from cobol
JP7627167B2 (ja) 設備id推論方法および設備id推論装置
Bortolussi et al. jSSTL-a tool to monitor spatio-temporal properties
Daszczuk et al. Deadlock detection in distributed systems using the IMDS formalism and Petri nets
CN109710538B (zh) 一种用于大规模系统中状态相关缺陷的静态检测方法
CN108536606B (zh) 一种基于复合依赖关系覆盖准则的efsm测试方法
Järvi et al. Expressing multi-way data-flow constraint systems as a commutative monoid makes many of their properties obvious
Ba-Brahem et al. The proposal of improved inexact isomorphic graph algorithm to detect design patterns

Legal Events

Date Code Title Description
A201 Request for examination
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20111111

PA0201 Request for examination
PG1501 Laying open of application
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20130723

PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20130723

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20130723

End annual number: 3

Start annual number: 1

PG1601 Publication of registration
LAPS Lapse due to unpaid annual fee
PC1903 Unpaid annual fee

Termination category: Default of registration fee

Termination date: 20170609