KR101371619B1 - 레거시 시스템을 컴포넌트화하는 장치 및 방법 - Google Patents

레거시 시스템을 컴포넌트화하는 장치 및 방법 Download PDF

Info

Publication number
KR101371619B1
KR101371619B1 KR1020070015487A KR20070015487A KR101371619B1 KR 101371619 B1 KR101371619 B1 KR 101371619B1 KR 1020070015487 A KR1020070015487 A KR 1020070015487A KR 20070015487 A KR20070015487 A KR 20070015487A KR 101371619 B1 KR101371619 B1 KR 101371619B1
Authority
KR
South Korea
Prior art keywords
component
legacy
components
data
composite
Prior art date
Application number
KR1020070015487A
Other languages
English (en)
Other versions
KR20080076059A (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 KR1020070015487A priority Critical patent/KR101371619B1/ko
Priority to US11/865,944 priority patent/US8196093B2/en
Publication of KR20080076059A publication Critical patent/KR20080076059A/ko
Application granted granted Critical
Publication of KR101371619B1 publication Critical patent/KR101371619B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • 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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • G06F16/972Access to data in other repository systems, e.g. legacy data or dynamic Web page generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/74Reverse engineering; Extracting design information from source code
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 레거시 시스템을 컴포넌트화하는 장치 및 방법에 관한 것으로서, 레거시 시스템에 포함된 소프트웨어 구성 요소들을 그 연관 관계에 따라 추상적 또는 논리적 모듈로 재구성하는 레거시 시스템을 컴포넌트화하는 장치 및 방법에 관한 것이다.
본 발명의 실시예에 따른 레거시 시스템을 컴포넌트화하는 장치는 레거시 시스템에 포함된 적어도 하나 이상의 레거시 코드간의 연관 관계를 분석하는 레거시 코드 분석부와, 상기 분석된 연관 관계를 참조하여 적어도 하나 이상의 컴포넌트를 정의하기 위한 데이터를 생성하는 컴포넌트 생성부와, 상기 컴포넌트간의 연관 관계를 분석하는 컴포넌트 분석부 및 상기 컴포넌트간의 연관 관계를 참조하여 상기 데이터를 갱신하는 데이터 갱신부를 포함한다.
레거시 시스템, 컴포넌트 모델, 컴포넌트 유닛 디렉토리, 함수 레벨 데이터, 빌드 레벨 데이터, 인터페이스 데이터

Description

레거시 시스템을 컴포넌트화하는 장치 및 방법{Apparatus and method for componentizing legacy system}
도 1은 본 발명의 실시예에 따라 레거시 시스템을 컴포넌트 모델로 구성하는 것을 나타낸 개념도이다.
도 2는 본 발명의 실시예에 따른 레거시 시스템을 컴포넌트화하는 장치를 나타낸 블록도이다.
도 3은 도 2에 도시된 데이터 갱신부에 대한 세부 구성을 나타낸 블록도이다.
도 4는 본 발명의 실시예에 따른 컴포넌트 유닛 디렉토리의 조합에 따라 컴포넌트가 구성되는 것을 나타낸 도면이다.
도 5a 내지 도 5b는 도 4에 도시된 컴포넌트에 대한 함수 레벨 데이터 및 인터페이스 데이터를 나타낸 도면이다.
도 6은 본 발명의 실시예에 따른 레거시 시스템에 대한 컴포넌트 패키지 트리를 나타낸 도면이다.
도 7a 내지 도 7b는 도 6에 도시된 컴포넌트에 대한 빌드 레벨 데이터 및 소스 코드 목록을 나타낸 도면이다.
도 8은 본 발명의 실시예에 따른 컴포넌트화가 수행되기 이전의 레거시 시스 템을 나타낸 예시도이다.
도 9는 도 8의 레거시 시스템에 포함된 컴포넌트에 대한 함수 레벨 데이터를 나타낸 도면이다.
도 10은 본 발명의 실시예에 따른 컴포넌트화가 수행된 이후의 시스템을 나타낸 도면이다.
도 11은 도 10의 시스템에 포함된 컴포넌트에 대한 함수 레벨 데이터를 나타낸 도면이다.
도 12는 본 발명의 실시예에 따라 신규로 생성된 복합 컴포넌트와 기존 복합 컴포넌트와의 연결 관계를 나타낸 도면이다.
도 13은 도 12에 도시된 복합 컴포넌트에 대한 함수 레벨 데이터를 나타낸 도면이다.
도 14는 본 발명의 실시예에 따라 레거시 시스템을 컴포넌트화하는 과정을 나타낸 흐름도이다.
도 15는 본 발명의 실시예에 따라 레거시 코드를 분석하는 과정을 나타낸 흐름도이다.
도 16은 본 발명의 실시예에 따라 기본 컴포넌트를 생성하는 과정을 나타낸 흐름도이다.
도 17은 본 발명의 실시예에 따라 빌드 레벨 데이터를 생성하는 과정을 나타낸 흐름도이다.
도 18은 본 발명의 실시예에 따라 복합 컴포넌트를 생성하는 과정을 나타낸 흐름도이다.
도 19는 본 발명의 실시예에 따라 데이터가 갱신되는 과정을 나타낸 흐름도이다.
도 20은 본 발명의 실시예에 따른 컴포넌트 유닛 디렉토리가 선택된 것을 나타낸 도면이다.
도 21은 본 발명의 실시예에 따라 분석 완료된 컴포넌트 유닛 디렉토리에 대한 함수 레벨 데이터를 나타낸 도면이다.
도 22는 본 발명의 실시예에 따라 분석 완료된 컴포넌트 유닛 디렉토리에 대한 인터페이스 데이터를 나타낸 도면이다.
도 23은 본 발명의 실시예에 따른 기본 컴포넌트의 조합으로 복합 컴포넌트가 생성되는 것을 나타낸 도면이다.
도 24는 본 발명의 실시예에 따른 복합 컴포넌트가 신규로 생성됨으로 인하여 발생된 인터페이스의 변경이 감지된 것을 나타낸 도면이다.
<도면의 주요 부분에 관한 부호의 설명>
210 : 레거시 코드 분석부 221 : 기본 컴포넌트 생성부
222 : 컴포넌트 관리부 223 : 복합 컴포넌트 생성부
230 : 그래픽 사용자 인터페이스부 240 : 저장부
250 : 컴포넌트 분석부 260 : 데이터 갱신부
본 발명은 레거시 시스템을 컴포넌트화하는 장치 및 방법에 관한 것으로서, 더욱 상세하게는 레거시 시스템에 포함된 소프트웨어 구성 요소들을 그 연관 관계에 따라 추상적 또는 논리적 모듈로 재구성하는 레거시 시스템을 컴포넌트화하는 장치 및 방법에 관한 것이다.
소프트웨어 분야의 기술 발전과 더불어 디지털 기기에 대한 소프트웨어 관리의 중요성도 점차 증대하고 있다. 이는 하드웨어 자체에 의하여 제공되는 기능, 하드웨어와 소프트웨어의 조합에 의하여 제공되는 기능이 소프트웨어만에 의하여 제공되어 가는 과정에서 필연적으로 발생하는 현상이다.
유사한 특성을 갖는 기기군은 동일한 플랫폼을 공유하면서, 특정 기능을 제공하는 별도의 모듈을 포함하는 형태로 개발될 수 있다.
컴포넌트 모델은 하나의 소프트웨어 시스템을 구성하는 모든 기능 요소들을 세분화하고 각 요소들간의 연관 관계를 파악함으로써, 다양한 형태의 개발 작업에 보다 쉽게 적용할 수 있는 추상적 또는 논리적 모듈 구조를 제공하는 개념이다. 이러한 컴포넌트 모델은 시스템의 설계 시점부터 컴포넌트 모델에 기반하여 시스템을 개발하는 톱-다운(top-down) 방식과, 이미 구현된 시스템을 분석하여 컴포넌트 모델로 구성하는 바텀-업(bottom-up) 방식으로 분류될 수 있다.
소프트웨어 시스템을 구성하는 모듈들은 각각의 기능을 제공할 수 있도록 설계되는데, 이 모듈들이 통합됨으로써 시스템은 독자적인 작업을 수행할 수 있는 능력을 갖추게 된다. 또한, 기능 개선을 위하여 재 작성된 일부 모듈이 적용됨으로써 다양한 실행 환경에 적응할 수 있는 소프트웨어 시스템이 구현될 수 있다.
소프트웨어의 재사용은 기능적 유사성을 가지는 두 소프트웨어 시스템간에 공통된 모듈을 정의하고, 공통된 모듈의 기능을 확장하거나 공통된 모듈간의 접합 코드를 소프트웨어 시스템에 부가하는 것으로 구현되는데, 소프트웨어의 재사용으로 인하여 시스템 개발의 효율성이 증가하게 된다.
바텀-업 방식으로 컴포넌트 모델을 구성하기 위한 종래의 분석 방법은 각 소스 코드간의 참조 및 호출 정보에 기반한 일차원적인 정보만을 소프트웨어 개발자에게 제공하였다. 이에 따라, 개발자는 기 개발된 소프트웨어 시스템에 포함된 컴포넌트간의 경계를 인식함에 있어서 어려움을 겪게 되었고, 수동 작업을 통해서만 컴포넌트 모델을 구성할 수 있게 되었다. 즉, 분석된 정보를 이용한 개발자의 수동 작업이 수행됨에 따라, 기존 소프트웨어 시스템의 갱신을 위한 비용과 시간의 낭비가 필연적으로 수반될 수 밖에 없었던 것이다.
따라서, 개발자의 개입 없이도 기존 소프트웨어 시스템을 자동으로 컴포넌트 모델로 구성하는 발명의 등장이 요구된다.
본 발명은 레거시 시스템에 포함된 소프트웨어 구성 요소들을 그 연관 관계에 따라 자동으로 추상적 또는 논리적 모듈로 재구성하여 레거시 시스템을 컴포넌트화하는데 그 목적이 있다.
본 발명의 목적들은 이상에서 언급한 목적으로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해되어질 수 있 을 것이다.
상기 목적을 달성하기 위하여, 본 발명의 실시예에 따른 레거시 시스템을 컴포넌트화하는 장치는 레거시 시스템에 포함된 적어도 하나 이상의 레거시 코드간의 연관 관계를 분석하는 레거시 코드 분석부와, 상기 분석된 연관 관계를 참조하여 적어도 하나 이상의 컴포넌트를 정의하기 위한 데이터를 생성하는 컴포넌트 생성부와, 상기 컴포넌트간의 연관 관계를 분석하는 컴포넌트 분석부 및 상기 컴포넌트간의 연관 관계를 참조하여 상기 데이터를 갱신하는 데이터 갱신부를 포함한다.
본 발명의 실시예에 따른 레거시 시스템을 컴포넌트화하는 방법은 레거시 시스템에 포함된 적어도 하나 이상의 레거시 코드간의 연관 관계를 분석하는 단계와, 상기 분석된 연관 관계를 참조하여 적어도 하나 이상의 컴포넌트를 정의하기 위한 데이터를 생성하는 단계와, 상기 컴포넌트간의 연관 관계를 분석하는 단계 및 상기 컴포넌트간의 연관 관계를 참조하여 상기 데이터를 갱신하는 단계를 포함한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명하기로 한다.
도 1은 본 발명의 실시예에 따라 레거시 시스템을 컴포넌트 모델로 구성하는 것을 나타낸 개념도로서, 바텀-업(bottom-up) 방식으로 컴포넌트 모델(120)을 구성하는 것을 나타낸 도면이다.
즉, 동일한 플랫폼을 공유하는 레거시 소프트웨어 시스템(이하, 레거시 시스템이라 한다)(110)에서 특정 기능을 제공하는 추상적 또는 논리적 모듈을 추출하여 이를 컴포넌트로 구성하는 것을 나타내고 있다.
이를 위하여, 본 발명의 레거시 시스템(110)을 컴포넌트화하는 장치는 레거시 시스템(110)에 포함된 코드를 분석하여 특정 기능을 수행하는데 필요한 적어도 하나 이상의 파일을 하나의 컴포넌트로 구성하여 컴포넌트 데이터(123)를 생성하고, 복수 개의 컴포넌트를 하나의 컴포넌트 패키지(122)에 포함시킨다.
한편, 전체 레거시 시스템을 컴포넌트 모델로 구성하거나 또는 그 구성이 기 완료된 컴포넌트 모델에 새로운 레거시 시스템을 적용하여 새로운 컴포넌트 모델을 구성하고자 하는 경우 레거시 시스템을 컴포넌트화하는 장치는 참조 관련 데이터(121)를 참조할 수 있다.
참조 관련 데이터(121)에는 각 코드간의 연관 관계 및 빌드 정보가 포함되어 있는데, 컴포넌트 장치(200)는 컴포넌트 모델(120)을 구성하면서 참조 관련 데이 터(121)를 지속적으로 갱신할 수 있다.
도 2는 본 발명의 실시예에 따른 레거시 시스템을 컴포넌트화하는 장치를 나타낸 블록도로서, 레거시 시스템을 컴포넌트화하는 장치(이하, 컴포넌트 장치라 한다)(200)는 레거시 코드 분석부(210), 컴포넌트 생성부(220), 그래픽 사용자 인터페이스부(230), 저장부(240), 컴포넌트 분석부(250) 및 데이터 갱신부(260)를 포함하여 구성된다.
레거시 코드 분석부(210)는 레거시 시스템에 포함된 적어도 하나 이상의 레거시 코드간의 연관 관계를 분석하는 역할을 한다. 여기서, 레거시 시스템은 특정 기기의 전반적인 제어를 수행하는 소프트웨어의 집합을 의미하는 것으로서, 기기의 다양한 기능을 수행하는 적어도 하나 이상의 레거시 코드로 구성된다.
또한, 레거시 코드는 개발자에 의하여 작성된 코드를 의미하는 것으로서, 컴파일되지 않은 소스 코드를 의미하는데 본 발명에서 레거시 코드는 헤더 파일과 소스 파일로 구성된 것을 가정한다.
그리고, 레거시 시스템 내에서 특정 기능을 수행하는 하나의 컴포넌트를 구성하는 적어도 하나 이상의 소스 파일과 이에 해당하는 헤더 파일을 포함하는 디렉토리를 이하, 컴포넌트 유닛 디렉토리라 한다.
따라서, 레거시 코드 분석부(210)는 레거시 코드에 포함된 헤더 파일 참조 정보, 함수 호출 정보 및 심볼 참조 정보 중 적어도 하나를 이용하여 레거시 코드간의 연관 관계를 분석할 수 있다. 즉, 레거시 코드 분석부(210)는 각 헤더 파일 내에서 참조되고 있는 다른 헤더 파일들의 목록을 검색하고, 소스 파일 내에서 함 수의 호출 관계 및 심볼의 참조 관계를 검색하는 것이다.
한편, 레거시 코드는 단순히 헤더 파일간의 참조 여부만으로 실질적인 연관 관계를 분석할 수 없을 수도 있다. 예를 들어, 특정 헤더 파일이 다른 헤더 파일에 의하여 참조되고 있으나 실제로는 소스 파일에 단 한번의 함수 호출이나 심볼 참조를 위한 코드가 없을 수도 있기 때문이다.
따라서, 레거시 코드 분석부(210)는 기 설정된 분석 범위에 따라 헤더 파일 참조 정보, 함수 호출 정보 또는 심볼 참조 정보를 선택적으로 이용하여 레거시 코드간의 연관 관계를 분석할 수 있다.
예를 들어, 분석 범위를 제 1 단계 내지 제 3 단계로 구분한 후, 분석 범위가 제 1 단계인 경우 레거시 코드 분석부(210)는 헤더 파일 참조 정보만을 이용하여 레거시 코드를 분석하고, 분석 범위가 제 2 단계인 경우 레거시 코드 분석부(210)는 함수 호출 정보만을 이용하여 레거시 코드를 분석하고, 분석 범위가 제 3 단계인 경우 레거시 코드 분석부(210)는 심볼 참조 정보만을 이용하여 레거시 코드를 분석하는 것이다.
또한, 레거시 코드 분석부(210)는 헤더 파일 참조 정보, 함수 호출 정보 및 심볼 참조 정보의 조합에 따라 레거시 코드를 분석할 수도 있는데 예를 들어, 분석 범위가 제 1 단계인 경우 레거시 코드 분석부(210)는 헤더 파일 참조 정보만을 이용하여 레거시 코드를 분석하고, 분석 범위가 제 2 단계인 경우 레거시 코드 분석부(210)는 헤더 파일 참조 정보 및 함수 호출 정보를 이용하여 레거시 코드를 분석하고, 분석 범위가 제 3 단계인 경우 레거시 코드 분석부(210)는 헤더 파일 참조 정보, 함수 호출 정보 및 심볼 참조 정보를 이용하여 레거시 코드를 분석할 수 있는 것이다.
레거시 코드 분석부(210)에 의하여 분석된 결과는 컴포넌트 생성부(220)로 전달되고, 컴포넌트 생성부(220)는 분석된 연관 관계를 참조하여 적어도 하나 이상의 컴포넌트를 정의하기 위한 데이터를 생성한다. 즉, 컴포넌트를 생성하는 것으로서, 컴포넌트는 기본 컴포넌트(primitive component) 또는 복합 컴포넌트(composite component)일 수 있다.
컴포넌트를 생성하기 위하여 컴포넌트 생성부(220)는 기본 컴포넌트 생성부(221), 컴포넌트 관리부(222) 및 복합 컴포넌트 생성부(223)를 포함하여 구성될 수 있는데, 데이터의 생성은 기본 컴포넌트 생성부(221)에 의하여 수행된다.
여기서, 데이터는 함수 레벨 데이터, 빌드 레벨 데이터 및 인터페이스 데이터를 포함하는데, 문서형식의 파일로 존재할 수 있다.
함수 레벨 데이터는 컴포넌트와 다른 컴포넌트간의 인터페이스 제공 또는 요청 관계, 컴포넌트가 복합 컴포넌트인 경우 복합 컴포넌트 내에 포함된 컴포넌트들의 연결 관계를 포함한다.
빌드 레벨 데이터는 컴포넌트의 빌드 결과 생성되는 라이브러리 또는 실행 파일 정보, 컴포넌트의 빌드 시 요구되는 라이브러리 정보 및 컴포넌트가 복합 컴포넌트인 경우 복합 컴포넌트 내에 포함된 컴포넌트들의 빌드 정보를 포함한다.
인터페이스 데이터는 컴포넌트에 의하여 제공되는 인터페이스를 포함한다.
컴포넌트는 레거시 코드의 조합에 의하여 구성되는 적어도 하나 이상의 컴포 넌트 유닛 디렉토리로 구성될 수 있는데, 기본 컴포넌트 생성부(221)는 컴포넌트 유닛 디렉토리를 포함하는 디렉토리(이하, 유닛 디렉토리라 한다)를 생성하고, 여기에 빌드 레벨 데이터를 포함시킨다. 여기서, 컴포넌트 유닛 디렉토리의 목록은 레거시 코드 분석부(210)에 의하여 생성될 수 있다.
기본 컴포넌트 생성부(221)는 적어도 하나 이상의 기본 컴포넌트를 생성하는데, 컴포넌트 관리부(222)는 각각의 기본 컴포넌트를 정의하는 데이터(함수 레벨 데이터, 빌드 레벨 데이터 및 인터페이스 데이터)를 이용하여 기본 컴포넌트간의 연관 관계를 분석하고 컴포넌트 유닛 디렉토리의 목록을 갱신한다. 즉, 레거시 시스템에 포함된 컴포넌트 중 유지된 것의 목록에 새롭게 생성된 컴포넌트의 목록(이하, 컴포넌트 관리 목록이라 한다)을 추가하는 것이다.
그리고, 복합 컴포넌트 생성부(223)는 기본 컴포넌트간의 연관 관계를 참조하여 적어도 하나 이상의 기본 컴포넌트로 구성된 복합 컴포넌트를 생성한다. 여기서, 복합 컴포넌트 생성부(223)는 적어도 하나 이상의 기본 컴포너트 및 또 다른 복합 컴포넌트로 구성된 복합 컴포넌트를 생성할 수도 있다.
복합 컴포넌트에 포함되는 기본 컴포넌트 또는 또 다른 복합 컴포넌트의 범위는 수동 또는 자동으로 결정될 수 있는데, 자동으로 결정되는 경우 레거시 시스템에 포함된 빌드 파일이 참조될 수 있다.
컴포넌트 분석부(250)는 생성된 컴포넌트간의 연관 관계를 분석하는 역할을 한다. 즉, 컴포넌트 분석부(250)는 생성된 데이터를 이용하여 컴포넌트간의 연관 관계를 분석하는 것이다.
이 때, 컴포넌트 분석부(250)는 복합 컴포넌트 생성부(223)에 의하여 복합 컴포넌트가 생성되는 경우 복합 컴포넌트에 포함된 기본 컴포넌트 및 다른 복합 컴포넌트에 의하여 제공되거나 요청되는 인터페이스를 추출할 수 있는데, 이렇게 추출된 인터페이스는 데이터 갱신부(260)로 전달되고, 데이터 갱신부(260)는 추출된 인터페이스를 참조하여 데이터를 갱신하는 역할을 한다.
컴포넌트의 생성, 컴포넌트의 분석 및 데이터의 갱신은 전체 레거시 시스템에 대한 컴포넌트 모델이 완성될 때까지 반복적으로 수행되는데, 일단 컴포넌트 모델이 완성된 이후에 추가적인 레거시 코드가 적용된 컴포넌트 모델을 구성하는 경우, 컴포넌트 장치(200)는 전체 레거시 시스템에 대한 컴포넌트 모델 구성을 다시 수행하는 것이 아니라 추가적인 레거시 코드에 대한 분석 및 데이터 갱신만으로 새로운 컴포넌트 모델을 구성할 수도 있다.
저장부(240)는 함수 레벨 데이터, 빌드 레벨 데이터 및 인터페이스 데이터를 저장하는 역할을 한다. 즉, 기본 컴포넌트 생성부(221)에 의하여 생성된 데이터가 저장부(240)에 저장되는 것으로서, 데이터 갱신부(260)는 저장부(240)에 저장된 데이터를 갱신하는 것이다. 또한, 저장부(240)는 컴포넌트 관리 목록을 저장할 수 있으며, 레거시 코드 분석부(210)에 의한 분석 범위를 저장할 수도 있다.
저장부(240)는 하드 디스크, 플래시 메모리, CF 카드(Compact Flash Card), SD 카드(Secure Digital Card), SM 카드(Smart Media Card), MMC(Multimedia Card) 또는 메모리 스틱(Memory Stick) 등 정보의 입출력이 가능한 모듈로서 컴포넌트 장치(200)의 내부에 구비되어 있을 수도 있고, 별도의 장치에 구비되어 있을 수도 있 다. 이 때, 저장부(240)가 별도의 장치에 구비되어 있는 경우 컴포넌트 장치(200)에는 별도의 장치와 통신을 수행할 수 있는 통신부(미도시)가 구비되어 있을 수 있다.
그래픽 사용자 인터페이스부(230)는 본 발명의 실시예에 따라 생성된 데이터 즉, 함수 레벨 데이터, 빌드 레벨 데이터 또는 인터페이스 데이터를 디스플레이하는 역할을 한다. 개발자는 그래픽 사용자 인터페이스부(230)를 통하여 생성된 데이터를 확인할 수 있으며, 데이터에 대한 수정을 할 수도 있다.
그래픽 사용자 인터페이스부(230)에 의하여 디스플레이되는 그래픽 사용자 인터페이스에 대한 자세한 설명은 도 20 내지 도 24를 통하여 후술하기로 한다.
도 3은 도 2에 도시된 데이터 갱신부(260)에 대한 세부 구성을 나타낸 블록도로서, 데이터 갱신부(260)는 함수 레벨 데이터 갱신부(261), 빌드 레벨 데이터 갱신부(262) 및 인터페이스 데이터 갱신부(263)를 포함하여 구성된다.
함수 레벨 데이터 갱신부(261)는 함수 레벨 데이터를 갱신하는 역할을 수행한다. 여기서, 함수 레벨 데이터는 provides, requires, contains, connects 및 configuration-variables 구문으로 구성될 수 있다.
provides 구문은 해당 컴포넌트가 제공하는 기능을 나타낸 인터페이스(이하, 제공 인터페이스라 한다)이고, requires 구문은 해당 컴포넌트가 요청하는 다른 컴포넌트의 인터페이스(이하, 요청 인터페이스라 한다)이고, contains 구문은 해당 컴포넌트가 컴포넌트가 복합 컴포넌트인 경우 내부에 포함된 컴포넌트의 목록 즉, 컴포넌트 관리 목록을 나타내고, connects 구문은 해당 컴포넌트가 복합 컴포넌트 인 경우 내부 컴포넌트간의 연결 관계를 나타내고, configuration-variables 구문은 해당 컴포넌트가 복합 컴포넌트인 경우 해당 컴포넌트의 기능에 대한 가변성을 부여하기 위한 것으로서, 내부에 존재하는 특정 컴포넌트의 포함 여부를 결정하는 option 및 switch 구문을 포함할 수 있다.
빌드 레벨 데이터 갱신부(262)는 빌드 레벨 데이터를 갱신하는 역할을 수행한다. 여기서, 빌드 레벨 데이터는 properties, provides, requires, contains 및 configuration-variables 구문으로 구성될 수 있다.
properties 구문은 해당 컴포넌트의 버전, 소스 코드의 ID, 빌드 타입, 빌드 파일의 명칭, 빌드 파일의 위치 및 소스 코드의 목록 등을 포함하는 것으로서, 해당 컴포넌트를 빌드함에 있어서 필요한 기본 정보(이하, 빌드 정보라 한다)를 나타내고, provides 구문은 해당 컴포넌트의 빌드 수행 시 그 결과로 생성되는 라이브러리 또는 실행 파일 정보를 나타내고, requires 구문은 해당 컴포넌트의 빌드 수행 시 요구되는 외부 라이브러리 정보를 나타내고, contains 구문은 해당 컴포넌트가 복합 컴포넌트인 경우 내부에 포함된 컴포넌트에 대한 빌드 레벨 데이터의 목록을 나타내고, configuration-variables 구문은 해당 컴포넌트가 복합 컴포넌트인 경우 해당 컴포넌트의 빌드 시에 가변성을 부여하기 위한 것으로서, 내부에 존재하는 특정 컴포넌트의 빌드 여부를 나타낸다.
인터페이스 데이터 갱신부(263)는 인터페이스 데이터를 갱신하는 역할을 수행한다. 여기서, 인터페이스 데이터는 다른 컴포넌트에 의하여 참조될 수 있는 함수 및 심볼로 구성된다.
인터페이스 데이터의 생성은 기본 컴포넌트 생성부(221)에 의하여 수행되는데, 기본 컴포넌트 생성부(221)는 함수와 심볼이 포함된 인터페이스 데이터를 생성하거나 컴포넌트 유닛 디렉토리에 포함된 헤더 파일의 목록만을 포함하는 인터페이스 데이터를 생성할 수 있다. 그리고, 인터페이스 데이터 갱신부(263)는 생성된 인터페이스 데이터의 형태에 따라 그 갱신을 수행할 수 있다.
도 4는 본 발명의 실시예에 따른 컴포넌트 유닛 디렉토리의 조합에 따라 컴포넌트가 구성되는 것을 나타낸 도면으로서, 물리 영역(410)에 존재하는 레거시 시스템과 본 발명의 실시예에 따라 논리 영역(420)에서 생성되는 컴포넌트(421, 422)를 나타낸 도면이다.
도 4에 도시된 바와 같이, 레거시 시스템은 루트 디렉토리(411) 및 하위 컴포넌트 유닛 디렉토리(412)를 포함할 수 있는데, 적어도 하나 이상의 컴포넌트 유닛 디렉토리(412)의 조합에 의하여 하나의 컴포넌트가 생성될 수 있다. 도 4는 컴포넌트 유닛 디렉토리 1, 3 및 4에 의하여 컴포넌트 A(421)가 생성되고, 컴포넌트 유닛 디렉토리 2및 5에 의하여 컴포넌트 B(422)가 생성되는 것을 나타내고 있다.
컴포넌트가 생성됨에 따라 함수 레벨 데이터, 빌드 레벨 데이터 및 인터페이스 데이터가 기본 컴포넌트 생성부(221)에 의하여 생성되는데, 도 5a 및 도 5b는 컴포넌트 A (421)및 컴포넌트 B(422)에 대한 함수 레벨 데이터(510, 530) 및 인터페이스 데이터(520, 540)를 나타내고 있다.
도 5a는 컴포넌트 A(421)에 대한 함수 레벨 데이터(510) 및 인터페이스 데이터(520)를 나타내고 있는데, 함수 레벨 데이터(510)는 ipI_A라는 명칭의 인터페이 스 I_A가 포함되어 있을 나타내고 있고, 인터페이스 데이터(520)는 인터페이스 I_A가 컴포넌트 유닛 디렉토리 1, 3 및 4의 심볼 또는 헤더 파일로 정의되어 있음을 나타내고 있다.
도 5b는 컴포넌트 B(422)에 대한 함수 레벨 데이터(530) 및 인터페이스 데이터(540)를 나타내고 있는데, 함수 레벨 데이터(530)는 ipI_B라는 명칭의 인터페이스 I_B가 포함되어 있음을 나타내고 있고, 인터페이스 데이터(540)는 인터페이스 I_B가 컴포넌트 유닛 디렉토리 2 및 5의 심볼 또는 헤더 파일로 정의되어 있음을 나타내고 있다.
컴포넌트 생성부(220)에 의하여 생성된 컴포넌트는 전체 시스템을 구성하는 컴포넌트 패키지 중 일부가 되는데, 도 6은 본 발명의 실시예에 따른 레거시 시스템에 대한 컴포넌트 패키지 트리(600)를 나타낸 도면이다. 즉, 도 4에 도시된 컴포넌트 A(421) 및 컴포넌트 B(422)가 컴포넌트 패키지의 일부로 존재함으로 나타낸 도면이다.
컴포넌트 패키지 트리는 패키지 루트 디렉토리 및 컴포넌트로 구성되는데, 패키지 루트 디렉토리(650)에는 전체 시스템을 구성하는 모든 컴포넌트가 포함된다. 여기서, 컴포넌트는 기본 컴포넌트 및 복합 컴포넌트를 포함하는데, 결국 패키지 루트 디렉토리는 모든 컴포넌트를 포함하는 복합 컴포넌트인 것이다.
도 6에 도시된 바와 같이, 각 컴포넌트(421, 422)에는 컴포넌트 유닛 디렉토리(611, 612, 621, 622, 623)뿐만 아니라 빌드 파일(613, 624)도 포함되어 있다. 즉, 전체 시스템에 대한 빌드가 수행되는 경우 컴포넌트별로 수행된 빌드의 결과가 각 컴포넌트별로 구비되는 것이다.
도 7a 내지 도 7b는 도 6에 도시된 컴포넌트 중 컴포넌트 A에 대한 빌드 레벨 데이터 및 소스 코드 목록을 나타낸 도면으로서, 빌드 레벨 데이터(710)에 properties 및 provides 구문이 포함된 것을 나타내고 있다.
도 7a에 도시된 바와 같이, 빌드 레벨 데이터(710)의 properties 구문에는 컴포넌트의 버전, 소스 코드의 ID, 빌드 타입, 빌드 파일의 명칭 및 소스 코드 목록 등이 포함되어 있고, provides 구문에는 컴포넌트의 빌드 수행 시 그 결과로 생성되는 라이브러리가 포함되어 있다.
또한, 도 7b의 소스 코드 목록(720)에는 컴포넌트 유닛 디렉토리의 헤더 파일 및 소스 파일의 목록이 포함되어 있고, 빌드 파일의 명칭이 포함되어 있다.
도 8은 본 발명의 실시예에 따른 컴포넌트화가 수행되기 이전의 레거시 시스템을 나타낸 예시도로서, 레거시 시스템(800)은 컴포넌트 A(810), B(820) 및 C(830)로 구성되어 있으며, 컴포넌트 B(820)에 의한 요청 인터페이스가 컴포넌트 C(830)에 의한 제공 인터페이스에 연결되어 있는 것을 나타내고 있다.
또한, 도 9는 도 8의 레거시 시스템에 포함된 컴포넌트(810, 820, 830) 및 전체 레거시 시스템에 대한 컴포넌트에 대한 함수 레벨 데이터(910, 920, 930, 940)를 나타낸 도면이다.
도 9에 도시된 바와 같이, 컴포넌트 A(810)에 대한 함수 레벨 데이터(910)에는 provides 구문에 의하여 ipI_A라는 명칭의 제공 인터페이스 I_A가 포함되어 있는 것이 명시되어 있고, 컴포넌트 B(820)에 대한 함수 레벨 데이터(920)에는 provides 구문에 의하여 ipI_B라는 명칭의 제공 인터페이스 I_B가 포함되어 있는 것이 명시되어 있으며, 컴포넌트 C(830)에 대한 함수 레벨 데이터(930)에는 provides 구문에 의하여 ipI_C라는 명칭의 제공 인터페이스 I_C가 포함되어 있는 것이 명시되어 있다.
여기서, 컴포넌트 B(820)에 대한 함수 레벨 데이터(920)에는 requires 구문에 의하여 컴포넌트 C(830)의 제공 인터페이스인 I_C가 irI_C라는 명칭으로 포함되어 있는 것이 명시되어 있다.
컴포넌트 T는 전체 레거시 시스템에 대한 컴포넌트 즉, 복합 컴포넌트로서, 컴포넌트 T에 대한 함수 레벨 데이터(940)에는 contains 구문에 의하여 cA, cB 및 cC라는 명칭의 컴포넌트 A, B 및 C가 하위 컴포넌트로 포함되어 있는 것이 명시되어 있고, provides 구문에 의하여 ipI_A, ipI_B 및 ipI_C라는 명칭의 제공 인터페이스 I_A, I_B 및 I_C가 포함되어 있는 것이 명시되어 있으며, connects 구문에 의하여 컴포넌트 A, B, C 및 T의 연결 관계가 명시되어 있다.
connects 구문에 의한 컴포넌트간의 연결 관계를 보면, 컴포넌트 T에 포함된 제공 인터페이스인 ipI_A, ipI_B 및 ipI_C는 각각 컴포넌트 A, B 및 C의 제공 인터페이스인 ipI_A, ipI_B 및 ipI_C에 연결되어 있고, 컴포넌트 B에 포함된 요청 인터페이스인 irI_C는 컴포넌트 C의 제공 인터페이스인 ipI_C에 연결되어 있음을 알 수 있다.
도 10은 본 발명의 실시예에 따른 컴포넌트화가 수행된 이후의 시스템을 나타낸 도면으로서, 도 8의 레거시 시스템(800)에 포함된 컴포넌트 A(810) 및 B(820) 가 컴포넌트 D(1010)로 재구성된 시스템(1000)을 나타낸 도면이다.
즉, 도 10은 컴포넌트 A(810) 및 B(820)가 컴포넌트 D(1010)로 재구성됨에 따라 컴포넌트 A(810) 및 B(820)에 포함된 제공 인터페이스가 컴포넌트 D(1010)에 포함되며, 컴포넌트 B(820)에 포함된 요청 인터페이스가 컴포넌트 D(1010)에 포함되는 것을 나타내고 있는 것이다.
또한, 도 11은 도 10의 재구성된 시스템에 포함된 컴포넌트에 대한 함수 레벨 데이터(1110, 1120)를 나타낸 도면이다.
도 11에 도시된 바와 같이, 컴포넌트 D(1010)는 기본 컴포넌트 A(810) 및 B(820)를 포함하는 컴포넌트 즉, 복합 컴포넌트로서, 컴포넌트 D(1010)에 대한 함수 레벨 데이터(1110)에는 contains 구문에 의하여 cA 및 cB라는 명칭의 컴포넌트 A 및 B가 하위 컴포넌트로 포함되어 있는 것이 명시되어 있고, provides 구문에 의하여 ipI_A 및 ipI_B라는 명칭의 제공 인터페이스 I_A 및 I_B가 포함되어 있는 것이 명시되어 있고, requires 구문에 의하여 irI_C라는 명칭의 요청 인터페이스 I_C가 포함되어 있는 것이 명시되어 있으며, connects 구문에 의하여 컴포넌트 A, B 및 D의 연결 관계가 명시되어 있다.
connects 구문에 의한 컴포넌트간의 연결 관계를 보면, 컴포넌트 D에 포함된 제공 인터페이스인 ipI_A 및 ipI_B는 각각 컴포넌트 A 및 B의 제공 인터페이스인 ipI_A 및 ipI_B에 연결되어 있고, 요청 인터페이스인 irI_C는 컴포넌트 B의 요청 인터페이스인 irI_C에 연결되어 있음을 알 수 있다.
또한, 도 11에 도시된 전체 시스템에 대한 컴포넌트 T에 대한 함수 레벨 데 이터(1120)에는 contains 구문에 의하여 cC 및 cD라는 명칭의 컴포넌트 C 및 D가 하위 컴포넌트로 포함되어 있는 것이 명시되어 있고, provides 구문에 의하여 ipI_A, ipI_B 및 ipI_C라는 명칭의 제공 인터페이스 I_A, I_B 및 I_C가 포함되어 있는 것이 명시되어 있으며, connects 구문에 의하여 컴포넌트 C, D 및 T의 연결 관계가 명시되어 있다.
connects 구문에 의한 컴포넌트간의 연결 관계를 보면, 컴포넌트 T에 포함된 제공 인터페이스인 ipI_A 및 ipI_B는 각각 컴포넌트 A 및 B의 제공 인터페이스인 ipI_A 및 ipI_B에 연결되어 있고, 컴포넌트 D에 포함된 요청 인터페이스인 irI_C는 컴포넌트 C의 제공 인터페이스인 ipI_C에 연결되어 있음을 알 수 있다.
도 12는 본 발명의 실시예에 따라 신규로 생성된 복합 컴포넌트와 기존 복합 컴포넌트와의 연결 관계를 나타낸 도면으로서, 기본 컴포넌트 A(1211), B(1212), C(1221), D(1222), E(1231) 및 F(1232) 중 기본 컴포넌트 A(1211) 및 B(1212)가 복합 컴포넌트 L(1210)에 포함되어 있고, 기본 컴포넌트 C(1221) 및 D(1222)가 복합 컴포넌트 M(1220)에 포함되어 있는 상태에서 기본 컴포넌트 E(1231) 및 F(1232)가 신규로 생성되는 복합 컴포넌트 N(1230)에 포함되는 것을 나타낸 도면이다.
도 12에 도시된 바와 같이, 복합 컴포넌트 L(1210)은 기본 컴포넌트 A(1211) 및 B(1212)에 의한 제공 인터페이스 및 기본 컴포넌트 B(1212)에 의한 요청 인터페이스를 포함하고, 복합 컴포넌트 M(1220)은 기본 컴포넌트 C(1221) 및 D(1222)에 의한 제공 인터페이스 및 기본 컴포넌트 D(1222)에 의한 요청 인터페이스를 포함하고 있는 것을 나타내고 있다.
여기서, 복합 컴포넌트 L(1210) 및 M(1220)에 의한 요청 인터페이스는 각각 기본 컴포넌트 F(1232) 및 E(1231)에 연결되어 있다.
또한, 도 13은 도 12에 도시된 복합 컴포넌트에 대한 함수 레벨 데이터를 나타낸 도면으로서, 전체 시스템 T에 대하여 복합 컴포넌트화가 수행되기 이전의 함수 레벨 데이터(1310)와 이후의 함수 레벨 데이터(1320)를 나타낸 도면이다.
복합 컴포넌트화가 수행되기 이전의 함수 레벨 데이터(1310)에는 contains 구문에 의하여 cL, cM, cE 및 cF라는 명칭의 컴포넌트 L, M, E 및 F가 하위 컴포넌트로 포함되어 있는 것이 명시되어 있고, provides 구문에 의하여 ipI_A, ipI_B, ipI_C, ipI_D, ipI_E 및 ipI_F라는 명칭의 제공 인터페이스 I_A, I_B, I_C, I_D, I_E 및 I_F가 포함되어 있는 것이 명시되어 있고, connects구문에 의하여 컴포넌트 L, M, E, F 및 T의 연결 관계가 명시되어 있다.
connects 구문에 의한 컴포넌트간의 연결 관계를 보면, 컴포넌트 T에 포함된 제공 인터페이스인 ipI_A, ipI_B, ipI_C, ipI_D, ipI_E 및 ipI_F는 각각 컴포넌트 L, M, E 및 F에 포함된 제공 인터페이스인 ipI_A, ipI_B, ipI_C, ipI_D, ipI_E 및 ipI_F에 연결되어 있고, 컴포넌트 L 및 M에 포함된 요청 인터페이스인 irI_F 및 irI_E는 각각 컴포넌트 F 및 E에 포함된 제공 인터페이스인 ipI_F 및 ipI_E에 연결되어 있음을 알 수 있다.
한편, 복합 컴포넌트화가 수행된 이후의 함수 레벨 데이터(1320)에는 contains 구문에 의하여 cL, cM 및 cN이라는 명칭의 컴포넌트 L, M 및 N이 하위 컴포넌트로 포함되어 있는 것이 명시되어 있고, provides 구문에 의하여 ipI_A, ipI_B, ipI_C, ipI_D, ipI_E 및 ipI_F라는 명칭의 제공 인터페이스 I_A, I_B, I_C, I_D, I_E 및 I_F가 포함되어 있는 것이 명시되어 있고, connects구문에 의하여 컴포넌트 L, M, N 및 T의 연결 관계가 명시되어 있다.
connects 구문에 의한 컴포넌트간의 연결 관계를 보면, 컴포넌트 T에 포함된 제공 인터페이스인 ipI_A, ipI_B, ipI_C, ipI_D, ipI_E 및 ipI_F는 각각 컴포넌트 L, M 및 N에 포함된 제공 인터페이스인 ipI_A, ipI_B, ipI_C, ipI_D, ipI_E 및 ipI_F에 연결되어 있고, 컴포넌트 L 및 M에 포함된 요청 인터페이스인 irI_F 및 irI_E는 컴포넌트 N에 포함된 제공 인터페이스인 ipI_F 및 ipI_E에 각각 연결되어 있음을 알 수 있다.
도 14는 본 발명의 실시예에 따라 레거시 시스템을 컴포넌트화하는 과정을 나타낸 흐름도이다.
레거시 시스템을 컴포넌트화하기 위하여 컴포넌트 장치(200)의 레거시 코드 분석부(210)는 레거시 시스템에 포함된 적어도 하나 이상의 레거시 코드간의 연관 관계를 분석한다(S1410). 즉, 레거시 코드 분석부(210)는 레거시 코드에 포함된 헤더 파일 참조 정보, 함수 호출 정보 및 심볼 참조 정보 중 적어도 하나를 이용하여 레거시 코드간의 연관 관계를 분석하는 것이다.
그리고, 레거시 코드간의 연관 관계 분석이 완료되면, 레거시 코드 분석부(210)는 컴포넌트 유닛 디렉토리의 목록을 생성한다(S1420).
또한, 레거시 코드 분석부(210)는 기 설정된 분석 범위에 따른 분석을 수행할 수도 있는데, 이에 대한 자세한 설명은 도 15를 통하여 후술하기로 한다.
기본 컴포넌트 생성부(221)는 기본 컴포넌트를 생성한다(S1430). 즉, 분석된 연관 관계를 참조하여 적어도 하나 이상의 컴포넌트를 정의하기 위한 데이터를 생성하는 것이다. 여기서, 생성되는 데이터는 함수 레벨 데이터, 빌드 레벨 데이터 및 인터페이스 데이터가 포함될 수 있다.
그리고, 기본 컴포넌트의 생성이 완료되면 컴포넌트 관리부(222)는 컴포넌트 유닛 디렉토리의 목록을 갱신하고(S1440), 복합 컴포넌트 생성부(223)는 복합 컴포넌트를 생성한다(S1450). 여기서, 복합 컴포넌트는 기본 컴포넌트만으로 구성될 수 있으며, 또 다른 복합 컴포넌트를 포함할 수도 있다.
기본 컴포넌트 및 복합 컴포넌트의 생성이 완료되면, 완료되었음을 나타내는 제어 명령이 컴포넌트 분석부(250)로 전달되고, 이에 따라 컴포넌트 분석부(250)는 생성된 데이터를 이용하여 컴포넌트간의 연관 관계를 분석한다(S1460).
그리고, 컴포넌트 분석부(250)에 의하여 분석된 결과는 데이터 갱신부(260)로 전달되고, 데이터 갱신부(260)는 전달받은 결과를 이용하여 저장부(240)에 저장된 데이터를 갱신한다(S1470).
도 15는 본 발명의 실시예에 따라 레거시 코드를 분석하는 과정을 나타낸 흐름도이다.
레거시 코드를 분석하기 위하여 레거시 코드 분석부(210)는 우선 레거시 시스템의 루트 디렉토리를 검색한다(S1510).
그리고, 루트 디렉토리의 검색이 완료되면 그 하위 계층에 존재하는 하위 디렉토리를 검색한다(S1520). 한편, 하위 디렉토리에는 컴포넌트에 포함되는 디렉토 리와 컴포넌트에 포함되지 않는 디렉토리로 구분될 수 있는데, 레거시 코드 분석부(210)는 컴포넌트에 포함되는 디렉토리 즉, 컴포넌트 유닛 디렉토리를 검색한다(S1530).
그리고, 레거시 코드 분석부(210)는 기 설정된 분석 범위를 확인한다(S1540). 여기서, 분석 범위는 개발자에 의하여 입력될 수 있으며, 저장부(240)에 기 저장된 것일 수도 있다.
설정된 분석 범위에 따라 레거시 코드 분석부(210)는 헤더 분석(S1550), 함수 호출 분석(S1560), 심볼 참조 분석(S1570) 및 기타 분석(S1580)을 선택적으로 수행한다. 여기서, 기타 분석(S1580)은 헤더, 함수 호출 및 심볼 참조를 제외한 나머지 코드에 대한 분석으로서, 특정 명령어가 포함된 구문에 대한 분석이 포함될 수 있으며, 특정 명령어에 대한 설정은 개발자에 의하여 입력될 수 있다.
한편, 도 15는 분석 범위에 따라 하나의 분석 과정이 수행되는 것으로 도시되어 있으나, 두 개 이상의 분석 과정이 연속적으로 수행될 수도 있다. 예를 들어, 분석 범위가 2단계인 경우 헤더 분석(S1550) 및 함수 호출 분석(S1560)이 순차적으로 수행될 수 있으며, 분석 범위가 4 단계인 경우 헤더 분석(S1550), 함수 호출 분석(S1560), 심볼 참조 분석(S1570) 및 기타 분석(S1580)이 순차적으로 수행될 수 있는 것이다.
도 16은 본 발명의 실시예에 따라 기본 컴포넌트를 생성하는 과정을 나타낸 흐름도이다.
기본 컴포넌트를 생성하기 위하여 기본 컴포넌트 생성부(221)는 우선 컴포넌 트 유닛 디렉토리의 목록을 확인한다(S1610). 그리고, 기본 컴포넌트 생성부(221)는 기본 컴포넌트의 생성 방식이 수동인지 자동인지를 확인한다(S1620).
그리하여, 컴포넌트의 생성 방식이 수동인 경우 개발자로부터 컴포넌트의 생성 범위를 수신한다(S1630). 즉, 개발자는 컴포넌트 유닛 디렉토리 중 하나의 기본 컴포넌트에 포함시킬 컴포넌트 유닛 디렉토리를 선택하여 입력할 수 있는 것이다.
한편, 컴포넌트의 생성 방식이 자동인 경우 기본 컴포넌트 생성부(221)는 레거시 시스템에 존재하는 타겟 정보를 이용하여 컴포넌트의 생성 범위를 결정한다(S1640). 예를 들어, 헤더 파일 또는 소스 파일 등의 참조 정보를 이용하여 컴포넌트의 생성 범위를 결정하는 것이다.
컴포넌트의 생성 범위가 결정되면 즉, 기본 컴포넌트에 포함시킬 컴포넌트 유닛 디렉토리의 목록이 선택되면 기본 컴포넌트 생성부(221)는 기본 컴포넌트를 생성한다. 즉, 함수 레벨 데이터, 빌드 레벨 데이터 및 인터페이스 데이터를 생성하는 것이다(S1650).
그리고, 기본 컴포넌트 생성부(221)는 컴포넌트 유닛 디렉토리에 포함된 컴포넌트 데이터, 함수 레벨 데이터, 빌드 레벨 데이터 및 인터페이스 데이터를 하나로 패키지화하고, 이를 컴포넌트 관리 목록에 추가한다(S1660).
도 17은 본 발명의 실시예에 따라 빌드 레벨 데이터를 생성하는 과정을 나타낸 흐름도이다.
빌드 레벨 데이터를 생성하기 위하여 기본 컴포넌트 생성부(221)는 우선 컴포넌트 유닛 디렉토리의 목록을 확인한다(S1710). 그리고, 기본 컴포넌트 생성 부(221)는 해당 컴포넌트 유닛 디렉토리에 포함된 소스 코드 파일의 목록을 추출하고(S1720), 헤더 파일의 목록을 추출하며(S1730), 각 헤더 파일에 의하여 참조되는 다른 헤더 파일의 목록을 추출한다(S1740).
헤더 파일의 목록을 추출함에 있어서, 기본 컴포넌트의 내부에 존재하는 파일들은 추출 대상에서 제외될 수 있다.
그리고, 기본 컴포넌트 생성부(221)는 추출된 파일들을 기본 컴포넌트의 패키지에 추가한다(S1750). 즉, 물리적인 저장 경로를 레거시 시스템에서의 저장 위치에서 컴포넌트 패키지의 저장 위치로 전환하는 것이다.
그리고, 기본 컴포넌트 생성부(221)는 추출된 파일의 리스트를 작성하고(S1760), 빌드 정보를 추출한다(S1770). 빌드 정보는 레거시 시스템에 기 설정된 정보가 참조되어 추출될 수 있는 것으로서, 컴포넌트의 버전, 소스 코드의 ID, 빌드 타입, 빌드 파일의 명칭, 빌드 파일의 위치 및 소스 코드의 목록을 포함할 수 있다.
그리고, 기본 컴포넌트 생성부(221)는 추출된 빌드 정보가 포함된 빌드 레벨 데이터를 생성한다(S1780).
도 18은 본 발명의 실시예에 따라 복합 컴포넌트를 생성하는 과정을 나타낸 흐름도이다.
복합 컴포넌트를 생성하기 위하여 복합 컴포넌트 생성부(223)는 저장부(240)에 저장된 컴포넌트 관리 목록을 참조하여 생성된 컴포넌트의 목록을 확인한다(S1810).
그리고, 새로운 복합 컴포넌트에 포함시킬 컴포넌트를 결정한다(S1820). 여기서, 새로운 복합 컴포넌트에 포함될 컴포넌트는 기본 컴포넌트 및 또 다른 복합 컴포넌트를 포함한다.
그리고, 복합 컴포넌트 생성부(223)는 함수 레벨 데이터 및 빌드 레벨 데이터의 contains 블록을 생성한다(S1830). 이 때, 복합 컴포넌트 생성부(223)는 하위 계층의 복합 컴포넌트가 존재하는지 여부를 확인한 후(S1840), 하위 계층의 복합 컴포넌트가 존재하지 않는 경우 기본 컴포넌트의 제공 인터페이스를 추출하고(S1850), 하위 계층의 복합 컴포넌트가 존재하는 경우 기본 컴포넌트 및 하위 계층의 복합 컴포넌트의 제공 인터페이스를 추출한다(S1860).
그리고, 복합 컴포넌트 생성부(223)는 provides 블록을 생성하고(S1870), 추출된 제공 인터페이스를 추가한다.
또한, 복합 컴포넌트 생성부(223)는 내부에 포함된 컴포넌트에 요청 인터페이스가 존재하는지 확인한 후(S1880), 요청 인터페이스가 존재하는 경우 requires 블록을 생성하여 요청 인터페이스를 추가한다(S1890).
마지막으로, 복합 컴포넌트 생성부(223)는 connects 블록을 생성하여(S1900) 내부에 포함된 컴포넌트간의 연결 관계를 추가함으로써 복합 컴포넌트의 생성을 완료한다.
도 19는 본 발명의 실시예에 따라 데이터가 갱신되는 과정을 나타낸 흐름도이다.
데이터를 갱신하기 위하여 컴포넌트 분석부(250)는 컴포넌트 관리 목록에 포 함된 모든 복합 컴포넌트를 추출한다(S1910).
그리고, 컴포넌트 분석부(250)는 신규 복합 컴포넌트의 contains에 포함되는 컴포넌트를 확인한다(S1920).
그리고, 기존 복합 컴포넌트의 요청 인터페이스와 신규 복합 컴포넌트에 포함되는 컴포넌트의 제공 인터페이스간의 일치 여부를 확인한다(S1930). 이 때, 기존 복합 컴포넌트의 내부에 또 다른 복합 컴포넌트가 존재하는 경우 또 다른 복합 컴포넌트의 요청 인터페이스와 신규 복합 컴포넌트에 포함되는 컴포넌트의 제공 인터페이스간의 일치 여부가 확인될 수도 있다.
그리하여, 동일한 인터페이스인 것이 확인되는 경우 데이터 갱신부(260)는 이와 같은 사항을 반영하여 connects 블록을 갱신한다(S1940). 도 13을 통하여 이를 설명하면, 1320의 connects 구문의 하단에 위치하고 있는 두 개의 connect 구문을 참조할 수 있다.
즉, 기존 복합 컴포넌트인 컴포넌트 L 및 M의 요청 인터페이스인 irI_F 및 irI_E가 컴포넌트 F 및 E에 포함된 제공 인터페이스인 ipI_F 및 ipI_E에 연결되어 있으므로, 기존 복합 컴포넌트에 포함된 요청 인터페이스 irI_F 및 irI_E는 신규 복합 컴포넌트에 포함된 제공 인터페이스인 ipI_F 및 ipI_E에 연결되는 것이다.
도 20은 본 발명의 실시예에 따른 컴포넌트 유닛 디렉토리가 선택된 것을 나타낸 도면이다.
기본 컴포넌트의 생성 방식은 수동 및 자동으로 구분될 수 있는데, 생성 방식이 수동으로 설정되어 있는 경우 개발자는 기본 컴포넌트에 포함시킬 컴포넌트 유닛 디렉토리를 직접 선택할 수 있다.
도 20은 개발자에 의하여 특정 컴포넌트 유닛 디렉토리가 체크 박스를 선택함으로써 선택된 것을 나타내는 그래픽 사용자 인터페이스이다.
한편, 기본 컴포넌트의 생성 방식이 자동인 경우에도 도 20에 도시된 바와 같이 체크 박스를 이용하여 선택된 컴포넌트 유닛 디렉토리가 그래픽 사용자 인터페이스상에 디스플레이될 수 있는데 이 때, 개발자는 체크 박스의 선택 여부를 수정하여 특정 컴포넌트 유닛 디렉토리를 추가하거나 배제하여 기본 컴포넌트가 생성되도록 할 수 있다.
도 21은 본 발명의 실시예에 따라 분석 완료된 컴포넌트 유닛 디렉토리에 대한 함수 레벨 데이터를 나타낸 도면으로서, 컴포넌트 TVViewer_1_0_Config의 함수 레벨 데이터에 ipTVViewer_1_0_Config라는 명칭의 제공 인터페이스인 I_TVViewer_1_0_Config와 irTVViewer_1_0라는 명칭의 요청 인터페이스인 I_TVViewer_1_0이 포함되어 있는 그래픽 사용자 인터페이스를 나타내고 있다.
도 21의 그래픽 사용자 인터페이스를 통하여 개발자는 적어도 하나 이상의 컴포넌트 유닛 디렉토리에 따라 구성된 컴포넌트의 디렉토리 즉, 유닛 디렉토리를 선택하여 해당 유닛 디렉토리에 포함되어 있는 헤더 파일의 목록과 참조 대상인 헤더 파일의 목록을 확인할 수 있다.
도 22는 본 발명의 실시예에 따라 분석 완료된 컴포넌트 유닛 디렉토리에 대한 인터페이스 데이터를 나타낸 도면으로서, 컴포넌트 Reminder_1.0_Config의 인터페이스인 I_Reminder_1_0_Config에 복수 개의 인터페이스가 포함되어 있는 그래픽 사용자 인터페이스를 나타내고 있다.
도 23은 본 발명의 실시예에 따른 기본 컴포넌트의 조합으로 복합 컴포넌트가 생성되는 것을 나타낸 도면으로서, 기본 컴포넌트 CM_1.0 및 CM_1.0_Config를 포함하는 복합 컴포넌트 CM에 대한 함수 레벨 데이터가 그래픽 사용자 인터페이스를 통하여 디스플레이된 도면이다.
도 23에 디스플레이된 함수 레벨 데이터를 통하여 개발자는 기본 컴포넌트 CM_1.0 및 CM_1.0_Config에 포함된 제공 인터페이스인 ipCM_1_0 및 ipCM_1_0_Config가 각각 복합 컴포넌트의 제공 인터페이스인 ipCM_1_0 및 ipCM_1_0_Config에 연결되어 있으며, 컴포넌트 CM_1_0의 제공 인터페이스인 ipCM_1_0이 컴포넌트 CM_1_0_Config의 요청 인터페이스인 irCM_1_0에 연결되어 있는 것을 알 수 있게 된다.
도 23에 도시된 그래픽 사용자 인터페이스를 통하여 개발자는 특정 컴포넌트를 추가하거나 배제하여 새로운 복합 컴포넌트를 생성할 수 있다.
도 24는 본 발명의 실시예에 따른 복합 컴포넌트가 신규로 생성됨으로 인하여 발생된 인터페이스의 변경이 감지된 것을 나타낸 도면으로서, irReminder_1_0이라는 명칭의 요청 인터페이스 I_Reminder_1_0이 irReminder라는 명칭의 요청 인터페이스 I_Reminder로 변경된 것을 나타낸 그래픽 사용자 인터페이스이다.
개발자는 추가하거나 배제하고자 하는 컴포넌트를 선택할 수 있는데, 이에 따라 컴포넌트 장치(200)는 변경된 정보가 반영된 함수 레벨 데이터를 생성하는 것이다.
한편, 도 21 내지 도 24는 함수 레벨 데이터 또는 인터페이스 데이터가 그래픽 사용자 인터페이스를 통하여 디스플레이된 것을 나타내고 있는데, 개발자는 디스플레이된 함수 레벨 데이터 또는 인터페이스 데이터를 직접 수정할 수도 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
상기한 바와 같은 본 발명의 레거시 시스템을 컴포넌트화하는 장치 및 방법에 따르면 레거시 시스템에 포함된 소프트웨어 구성 요소들을 그 연관 관계에 따라 자동으로 추상적 또는 논리적 모듈로 재구성하여 레거시 시스템을 컴포넌트화함으로써 레거시 시스템에 대한 컴포넌트 모델 구성에 소요되는 시간 및 비용을 절감하는 장점이 있다.

Claims (20)

  1. 레거시 시스템에 포함된 적어도 하나 이상의 레거시 코드간의 연관 관계를 분석하는 레거시 코드 분석부;
    상기 분석된 연관 관계를 참조하여 적어도 하나 이상의 컴포넌트를 정의하기 위한 정의 데이터를 생성하는 컴포넌트 생성부;
    상기 컴포넌트간의 연관 관계를 분석하는 컴포넌트 분석부; 및
    상기 컴포넌트간의 연관 관계를 참조하여 상기 정의 데이터를 갱신하는 데이터 갱신부를 포함하는 레거시 시스템을 컴포넌트화하는 장치.
  2. 제 1항에 있어서,
    상기 레거시 코드 분석부는 상기 레거시 코드에 포함된 헤더 파일 참조 정보, 함수 호출 정보 및 심볼 참조 정보 중 적어도 하나를 이용하여 상기 레거시 코드간의 연관 관계를 분석하는 레거시 시스템을 컴포넌트화하는 장치.
  3. 제 2항에 있어서,
    상기 레거시 코드 분석부는 기 설정된 분석 범위에 따라 상기 헤더 파일 참조 정보, 상기 함수 호출 정보 또는 상기 심볼 참조 정보를 선택적으로 이용하여 상기 레거시 코드간의 연관 관계를 분석하는 레거시 시스템을 컴포넌트화하는 장치.
  4. 제 1항에 있어서,
    상기 컴포넌트는 기본 컴포넌트 및 복합 컴포넌트를 포함하는 레거시 시스템을 컴포넌트화하는 장치.
  5. 제 4항에 있어서,
    상기 컴포넌트 생성부는 상기 기본 컴포넌트를 정의하는 기본 데이터를 생성하는 기본 컴포넌트 생성부;
    상기 기본 데이터를 이용하여 상기 기본 컴포넌트간의 연관 관계를 분석하는 컴포넌트 관리부; 및
    상기 기본 컴포넌트간의 연관 관계를 참조하여 적어도 하나 이상의 상기 기본 컴포넌트로 구성된 상기 복합 컴포넌트를 생성하는 복합 컴포넌트 생성부를 포함하는 레거시 시스템을 컴포넌트화하는 장치.
  6. 제 5항에 있어서,
    상기 복합 컴포넌트 생성부는 상기 적어도 하나 이상의 상기 기본 컴포넌트 및 또 다른 복합 컴포넌트로 구성된 상기 복합 컴포넌트를 생성하는 레거시 시스템을 컴포넌트화하는 장치.
  7. 제 5항에 있어서,
    상기 컴포넌트 분석부는 상기 복합 컴포넌트가 생성되는 경우 상기 복합 컴포넌트에 포함된 기본 컴포넌트 및 다른 복합 컴포넌트에 의하여 제공되거나 요청되는 인터페이스를 추출하는 레거시 시스템을 컴포넌트화하는 장치.
  8. 제 7항에 있어서,
    상기 데이터 갱신부는 상기 추출된 인터페이스를 참조하여 상기 정의 데이터를 갱신하는 레거시 시스템을 컴포넌트화하는 장치.
  9. 제 1항에 있어서,
    상기 정의 데이터는 상기 컴포넌트와 다른 컴포넌트간의 인터페이스 제공 또는 요청 관계, 상기 컴포넌트가 복합 컴포넌트인 경우 상기 복합 컴포넌트 내에 포함된 컴포넌트들의 연결 관계를 포함하는 함수 레벨 데이터;
    상기 컴포넌트의 빌드 결과 생성되는 라이브러리 또는 실행 파일 정보, 상기 컴포넌트의 빌드 시 요구되는 라이브러리 정보 및 상기 컴포넌트가 복합 컴포넌트인 경우 상기 복합 컴포넌트 내에 포함된 컴포넌트들의 빌드 정보를 포함하는 빌드 레벨 데이터; 및
    상기 컴포넌트에 의하여 제공되는 인터페이스를 포함하는 인터페이스 데이터 중 적어도 하나를 포함하는 레거시 시스템을 컴포넌트화하는 장치.
  10. 제 9항에 있어서,
    상기 컴포넌트는 상기 레거시 코드의 조합에 의하여 구성되는 적어도 하나 이상의 컴포넌트 유닛 디렉토리 및 상기 컴포넌트에 대한 빌드의 결과로 생성되는 빌드 파일을 포함하는 레거시 시스템을 컴포넌트화하는 장치.
  11. 레거시 시스템을 컴포넌트화하는 장치가 상기 레거시 시스템에서 특정 기능을 제공하는 추상적 또는 논리적 모듈을 추출하여 컴포넌트로 구성하는 방법에 있어서,
    상기 레거시 시스템을 컴포넌트화하는 장치가 상기 레거시 시스템에 포함된 적어도 하나 이상의 레거시 코드간의 연관 관계를 분석하는 단계;
    상기 분석된 연관 관계를 참조하여 적어도 하나 이상의 컴포넌트를 정의하기 위한 정의 데이터를 생성하는 단계;
    상기 컴포넌트간의 연관 관계를 분석하는 단계; 및
    상기 컴포넌트간의 연관 관계를 참조하여 상기 정의 데이터를 갱신하는 단계를 포함하는 레거시 시스템을 컴포넌트화하는 방법.
  12. 제 11항에 있어서,
    상기 레거시 코드간의 연관 관계를 분석하는 단계는 상기 레거시 코드에 포함된 헤더 파일 참조 정보, 함수 호출 정보 및 심볼 참조 정보 중 적어도 하나를 이용하여 상기 레거시 코드간의 연관 관계를 분석하는 단계를 포함하는 레거시 시스템을 컴포넌트화하는 방법.
  13. 제 12항에 있어서,
    상기 레거시 코드간의 연관 관계를 분석하는 단계는 기 설정된 분석 범위에 따라 상기 헤더 파일 참조 정보, 상기 함수 호출 정보 또는 상기 심볼 참조 정보를 선택적으로 이용하여 상기 레거시 코드간의 연관 관계를 분석하는 단계를 포함하는 레거시 시스템을 컴포넌트화하는 방법.
  14. 제 11항에 있어서,
    상기 컴포넌트는 기본 컴포넌트 및 복합 컴포넌트를 포함하는 레거시 시스템을 컴포넌트화하는 방법.
  15. 제 14항에 있어서,
    상기 정의 데이터를 생성하는 단계는 상기 기본 컴포넌트를 정의하는 기본 데이터를 생성하는 단계;
    상기 기본 데이터를 이용하여 상기 기본 컴포넌트간의 연관 관계를 분석하는 단계; 및
    상기 기본 컴포넌트간의 연관 관계를 참조하여 적어도 하나 이상의 상기 기본 컴포넌트로 구성된 상기 복합 컴포넌트를 생성하는 단계를 포함하는 레거시 시스템을 컴포넌트화하는 방법.
  16. 제 15항에 있어서,
    상기 복합 컴포넌트를 생성하는 단계는 상기 적어도 하나 이상의 상기 기본 컴포넌트 및 또 다른 복합 컴포넌트로 구성된 상기 복합 컴포넌트를 생성하는 단계 를 포함하는 레거시 시스템을 컴포넌트화하는 방법.
  17. 제 15항에 있어서,
    상기 컴포넌트간의 연관 관계를 분석하는 단계는 상기 복합 컴포넌트가 생성되는 경우 상기 복합 컴포넌트에 포함된 기본 컴포넌트 및 다른 복합 컴포넌트에 의하여 제공되거나 요청되는 인터페이스를 추출하는 단계를 포함하는 레거시 시스템을 컴포넌트화하는 방법.
  18. 제 17항에 있어서,
    상기 정의 데이터를 갱신하는 단계는 상기 추출된 인터페이스를 참조하여 상기 정의 데이터를 갱신하는 단계를 포함하는 레거시 시스템을 컴포넌트화하는 방법.
  19. 제 11항에 있어서,
    상기 정의 데이터는 상기 컴포넌트와 다른 컴포넌트간의 인터페이스 제공 또는 요청 관계, 상기 컴포넌트가 복합 컴포넌트인 경우 상기 복합 컴포넌트 내에 포함된 컴포넌트들의 연결 관계를 포함하는 함수 레벨 데이터;
    상기 컴포넌트의 빌드 결과 생성되는 라이브러리 또는 실행 파일 정보, 상기 컴포넌트의 빌드 시 요구되는 라이브러리 정보 및 상기 컴포넌트가 복합 컴포넌트인 경우 상기 복합 컴포넌트 내에 포함된 컴포넌트들의 빌드 정보를 포함하는 빌드 레벨 데이터; 및
    상기 컴포넌트에 의하여 제공되는 인터페이스를 포함하는 인터페이스 데이터 중 적어도 하나를 포함하는 레거시 시스템을 컴포넌트화하는 방법.
  20. 제 19항에 있어서,
    상기 컴포넌트는 상기 레거시 코드의 조합에 의하여 구성되는 적어도 하나 이상의 컴포넌트 유닛 디렉토리 및 상기 컴포넌트에 대한 빌드의 결과로 생성되는 빌드 파일을 포함하는 레거시 시스템을 컴포넌트화하는 방법.
KR1020070015487A 2007-02-14 2007-02-14 레거시 시스템을 컴포넌트화하는 장치 및 방법 KR101371619B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020070015487A KR101371619B1 (ko) 2007-02-14 2007-02-14 레거시 시스템을 컴포넌트화하는 장치 및 방법
US11/865,944 US8196093B2 (en) 2007-02-14 2007-10-02 Apparatus and method for componentizing legacy system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070015487A KR101371619B1 (ko) 2007-02-14 2007-02-14 레거시 시스템을 컴포넌트화하는 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20080076059A KR20080076059A (ko) 2008-08-20
KR101371619B1 true KR101371619B1 (ko) 2014-03-06

Family

ID=39686957

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070015487A KR101371619B1 (ko) 2007-02-14 2007-02-14 레거시 시스템을 컴포넌트화하는 장치 및 방법

Country Status (2)

Country Link
US (1) US8196093B2 (ko)
KR (1) KR101371619B1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060117009A1 (en) * 2004-11-30 2006-06-01 Joe Matthew D Declarative aspects and aspect containers for application development
KR100911324B1 (ko) 2007-06-22 2009-08-07 삼성전자주식회사 가변성 요소 관리 방법 및 그 장치
KR101470319B1 (ko) 2008-02-15 2014-12-08 삼성전자주식회사 컴포넌트 모델 기반의 가상 소프트웨어 플랫폼을 생성하는방법, 이를 이용하여 소프트웨어 플랫폼 아키텍처를검증하는 방법 및 그 장치
US8418227B2 (en) * 2009-08-21 2013-04-09 Verizon Patent And Licensing, Inc. Keystroke logger for Unix-based systems
US20130174124A1 (en) * 2011-12-29 2013-07-04 Christina Watters Version numbering in single development and test environment
US9304766B2 (en) * 2014-02-21 2016-04-05 Red Hat Israel, Ltd. Determining character sequence digest
CN109976744B (zh) * 2017-12-26 2022-09-23 深圳市优必选科技有限公司 一种可视化编程方法、系统及终端设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100496868B1 (ko) 2001-12-28 2005-06-22 한국전자통신연구원 레가시 시스템으로부터 설계 패턴 추출을 통한 컴포넌트의생성 장치 및 방법
KR20050063402A (ko) * 2003-12-22 2005-06-28 한국전자통신연구원 레거시 시스템의 재공학을 위한 컴포넌트화 방법

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09134282A (ja) 1995-11-08 1997-05-20 Hitachi Ltd プログラム作成方法
US20010051974A1 (en) * 1998-06-23 2001-12-13 Ron Saad Method and apparatus for automatic generation of data interfaces
US6601233B1 (en) * 1999-07-30 2003-07-29 Accenture Llp Business components framework
WO2001046804A1 (en) * 1999-08-16 2001-06-28 Z-Force Corporation System of reusable software parts for implementing concurrency and hardware access, and methods of use
US6654950B1 (en) * 1999-08-24 2003-11-25 Bae Systems Mission Solutions Inc. Software rehosting system and method
US6636242B2 (en) * 1999-08-31 2003-10-21 Accenture Llp View configurer in a presentation services patterns environment
WO2002093367A1 (en) * 2001-05-11 2002-11-21 Computer Associates Think, Inc. Method and system for transforming legacy software applications into modern object-oriented systems
US20040031015A1 (en) * 2001-05-24 2004-02-12 Conexant Systems, Inc. System and method for manipulation of software
US20070198562A1 (en) * 2001-08-14 2007-08-23 Tata Consultancy Services Limited Method and Apparatus for Ensuring Business Process Integration Capability for one or more Distributed Component Systems in Communication with one or more Legacy Systems
US7562346B2 (en) 2003-09-02 2009-07-14 Microsoft Corporation Software componentization for building a software product
US20070067756A1 (en) * 2005-09-20 2007-03-22 Trinity Millennium Group, Inc. System and method for enterprise software portfolio modernization
EP1818813A1 (en) * 2006-02-02 2007-08-15 Research In Motion Limited System and method and apparatus for using UML tools for defining web service bound component applications
WO2007122640A2 (en) * 2006-04-26 2007-11-01 Tata Consultancy Services A system and method for automated re-architectureing of legacy systems using object-oriented language
US7886286B2 (en) * 2006-05-05 2011-02-08 International Business Machines Corporation Integration of non-componentized libraries in component-based systems

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100496868B1 (ko) 2001-12-28 2005-06-22 한국전자통신연구원 레가시 시스템으로부터 설계 패턴 추출을 통한 컴포넌트의생성 장치 및 방법
KR20050063402A (ko) * 2003-12-22 2005-06-28 한국전자통신연구원 레거시 시스템의 재공학을 위한 컴포넌트화 방법

Also Published As

Publication number Publication date
US8196093B2 (en) 2012-06-05
KR20080076059A (ko) 2008-08-20
US20080196009A1 (en) 2008-08-14

Similar Documents

Publication Publication Date Title
KR101371619B1 (ko) 레거시 시스템을 컴포넌트화하는 장치 및 방법
US9639558B2 (en) Image building
US9773017B2 (en) Method of configuring a virtual application
CN106775723B (zh) 基于Android平台的系统固件定制的方法和Android设备
US8370835B2 (en) Method for dynamically generating a configuration for a virtual machine with a virtual hard disk in an external storage device
US8434093B2 (en) Method and system for virtualization of software applications
CN111090433B (zh) 一种数据处理的方法、装置和存储介质
US20170277524A1 (en) Dynamic container deployment with parallel conditional layers
CN110908671A (zh) 构建docker镜像的方法、装置及计算机可读存储介质
CN101002174B (zh) 在便携式装置中加载具有面向对象的中间语言的软件的方法
CN108595186B (zh) 一种飞腾平台上基于完全函数的多版本软件管理方法
TW201545067A (zh) 一種動態創建可附加和可拆除二進位檔案的系統和方法
CN103324474B (zh) 基于Linux操作系统跨体系构造ISO的方法及模块
Dolstra et al. NixOS: A purely functional Linux distribution
EP3698241A1 (en) Using semantic annotations to control compatibility behaviors
CN107168735A (zh) 一种自动部署windows系统的方法
US20100058277A1 (en) Method and system for organizing data generated by electronic design automation tools
US11645058B2 (en) User interface resource file optimization
KR100656419B1 (ko) 정보시스템 개발장치 및 방법
JP2009059351A (ja) コンピュータソースコードに対して行われる操作を記録するためのシステム、方法、及びコンピュータプログラム製品
CN117667248A (zh) 一种第三方库管理方法、装置、电子设备及存储介质
US9495133B1 (en) Template-based BIOS component creation
CN117762473A (zh) 项目开发的方法、装置及电子设备
Zuber Jukebox Core Documentation
US10255050B2 (en) Method for code disambiguation

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20170125

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee