KR101371619B1 - 레거시 시스템을 컴포넌트화하는 장치 및 방법 - Google Patents
레거시 시스템을 컴포넌트화하는 장치 및 방법 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
- G06F16/972—Access to data in other repository systems, e.g. legacy data or dynamic Web page generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/74—Reverse engineering; Extracting design information from source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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
도 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항에 있어서,상기 컴포넌트는 기본 컴포넌트 및 복합 컴포넌트를 포함하는 레거시 시스템을 컴포넌트화하는 장치.
- 제 4항에 있어서,상기 컴포넌트 생성부는 상기 기본 컴포넌트를 정의하는 기본 데이터를 생성하는 기본 컴포넌트 생성부;상기 기본 데이터를 이용하여 상기 기본 컴포넌트간의 연관 관계를 분석하는 컴포넌트 관리부; 및상기 기본 컴포넌트간의 연관 관계를 참조하여 적어도 하나 이상의 상기 기본 컴포넌트로 구성된 상기 복합 컴포넌트를 생성하는 복합 컴포넌트 생성부를 포함하는 레거시 시스템을 컴포넌트화하는 장치.
- 제 5항에 있어서,상기 복합 컴포넌트 생성부는 상기 적어도 하나 이상의 상기 기본 컴포넌트 및 또 다른 복합 컴포넌트로 구성된 상기 복합 컴포넌트를 생성하는 레거시 시스템을 컴포넌트화하는 장치.
- 제 5항에 있어서,상기 컴포넌트 분석부는 상기 복합 컴포넌트가 생성되는 경우 상기 복합 컴포넌트에 포함된 기본 컴포넌트 및 다른 복합 컴포넌트에 의하여 제공되거나 요청되는 인터페이스를 추출하는 레거시 시스템을 컴포넌트화하는 장치.
- 제 7항에 있어서,상기 데이터 갱신부는 상기 추출된 인터페이스를 참조하여 상기 정의 데이터를 갱신하는 레거시 시스템을 컴포넌트화하는 장치.
- 제 1항에 있어서,상기 정의 데이터는 상기 컴포넌트와 다른 컴포넌트간의 인터페이스 제공 또는 요청 관계, 상기 컴포넌트가 복합 컴포넌트인 경우 상기 복합 컴포넌트 내에 포함된 컴포넌트들의 연결 관계를 포함하는 함수 레벨 데이터;상기 컴포넌트의 빌드 결과 생성되는 라이브러리 또는 실행 파일 정보, 상기 컴포넌트의 빌드 시 요구되는 라이브러리 정보 및 상기 컴포넌트가 복합 컴포넌트인 경우 상기 복합 컴포넌트 내에 포함된 컴포넌트들의 빌드 정보를 포함하는 빌드 레벨 데이터; 및상기 컴포넌트에 의하여 제공되는 인터페이스를 포함하는 인터페이스 데이터 중 적어도 하나를 포함하는 레거시 시스템을 컴포넌트화하는 장치.
- 제 9항에 있어서,상기 컴포넌트는 상기 레거시 코드의 조합에 의하여 구성되는 적어도 하나 이상의 컴포넌트 유닛 디렉토리 및 상기 컴포넌트에 대한 빌드의 결과로 생성되는 빌드 파일을 포함하는 레거시 시스템을 컴포넌트화하는 장치.
- 레거시 시스템을 컴포넌트화하는 장치가 상기 레거시 시스템에서 특정 기능을 제공하는 추상적 또는 논리적 모듈을 추출하여 컴포넌트로 구성하는 방법에 있어서,상기 레거시 시스템을 컴포넌트화하는 장치가 상기 레거시 시스템에 포함된 적어도 하나 이상의 레거시 코드간의 연관 관계를 분석하는 단계;상기 분석된 연관 관계를 참조하여 적어도 하나 이상의 컴포넌트를 정의하기 위한 정의 데이터를 생성하는 단계;상기 컴포넌트간의 연관 관계를 분석하는 단계; 및상기 컴포넌트간의 연관 관계를 참조하여 상기 정의 데이터를 갱신하는 단계를 포함하는 레거시 시스템을 컴포넌트화하는 방법.
- 제 11항에 있어서,상기 레거시 코드간의 연관 관계를 분석하는 단계는 상기 레거시 코드에 포함된 헤더 파일 참조 정보, 함수 호출 정보 및 심볼 참조 정보 중 적어도 하나를 이용하여 상기 레거시 코드간의 연관 관계를 분석하는 단계를 포함하는 레거시 시스템을 컴포넌트화하는 방법.
- 제 12항에 있어서,상기 레거시 코드간의 연관 관계를 분석하는 단계는 기 설정된 분석 범위에 따라 상기 헤더 파일 참조 정보, 상기 함수 호출 정보 또는 상기 심볼 참조 정보를 선택적으로 이용하여 상기 레거시 코드간의 연관 관계를 분석하는 단계를 포함하는 레거시 시스템을 컴포넌트화하는 방법.
- 제 11항에 있어서,상기 컴포넌트는 기본 컴포넌트 및 복합 컴포넌트를 포함하는 레거시 시스템을 컴포넌트화하는 방법.
- 제 14항에 있어서,상기 정의 데이터를 생성하는 단계는 상기 기본 컴포넌트를 정의하는 기본 데이터를 생성하는 단계;상기 기본 데이터를 이용하여 상기 기본 컴포넌트간의 연관 관계를 분석하는 단계; 및상기 기본 컴포넌트간의 연관 관계를 참조하여 적어도 하나 이상의 상기 기본 컴포넌트로 구성된 상기 복합 컴포넌트를 생성하는 단계를 포함하는 레거시 시스템을 컴포넌트화하는 방법.
- 제 15항에 있어서,상기 복합 컴포넌트를 생성하는 단계는 상기 적어도 하나 이상의 상기 기본 컴포넌트 및 또 다른 복합 컴포넌트로 구성된 상기 복합 컴포넌트를 생성하는 단계 를 포함하는 레거시 시스템을 컴포넌트화하는 방법.
- 제 15항에 있어서,상기 컴포넌트간의 연관 관계를 분석하는 단계는 상기 복합 컴포넌트가 생성되는 경우 상기 복합 컴포넌트에 포함된 기본 컴포넌트 및 다른 복합 컴포넌트에 의하여 제공되거나 요청되는 인터페이스를 추출하는 단계를 포함하는 레거시 시스템을 컴포넌트화하는 방법.
- 제 17항에 있어서,상기 정의 데이터를 갱신하는 단계는 상기 추출된 인터페이스를 참조하여 상기 정의 데이터를 갱신하는 단계를 포함하는 레거시 시스템을 컴포넌트화하는 방법.
- 제 11항에 있어서,상기 정의 데이터는 상기 컴포넌트와 다른 컴포넌트간의 인터페이스 제공 또는 요청 관계, 상기 컴포넌트가 복합 컴포넌트인 경우 상기 복합 컴포넌트 내에 포함된 컴포넌트들의 연결 관계를 포함하는 함수 레벨 데이터;상기 컴포넌트의 빌드 결과 생성되는 라이브러리 또는 실행 파일 정보, 상기 컴포넌트의 빌드 시 요구되는 라이브러리 정보 및 상기 컴포넌트가 복합 컴포넌트인 경우 상기 복합 컴포넌트 내에 포함된 컴포넌트들의 빌드 정보를 포함하는 빌드 레벨 데이터; 및상기 컴포넌트에 의하여 제공되는 인터페이스를 포함하는 인터페이스 데이터 중 적어도 하나를 포함하는 레거시 시스템을 컴포넌트화하는 방법.
- 제 19항에 있어서,상기 컴포넌트는 상기 레거시 코드의 조합에 의하여 구성되는 적어도 하나 이상의 컴포넌트 유닛 디렉토리 및 상기 컴포넌트에 대한 빌드의 결과로 생성되는 빌드 파일을 포함하는 레거시 시스템을 컴포넌트화하는 방법.
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)
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)
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)
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 |
-
2007
- 2007-02-14 KR KR1020070015487A patent/KR101371619B1/ko not_active IP Right Cessation
- 2007-10-02 US US11/865,944 patent/US8196093B2/en not_active Expired - Fee Related
Patent Citations (2)
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 |