KR101916960B1 - 복수의 소스 코드들을 자동적으로 결합하는 방법 - Google Patents

복수의 소스 코드들을 자동적으로 결합하는 방법 Download PDF

Info

Publication number
KR101916960B1
KR101916960B1 KR1020170183537A KR20170183537A KR101916960B1 KR 101916960 B1 KR101916960 B1 KR 101916960B1 KR 1020170183537 A KR1020170183537 A KR 1020170183537A KR 20170183537 A KR20170183537 A KR 20170183537A KR 101916960 B1 KR101916960 B1 KR 101916960B1
Authority
KR
South Korea
Prior art keywords
objects
source codes
class
source
partition
Prior art date
Application number
KR1020170183537A
Other languages
English (en)
Inventor
김남기
윤여강
Original Assignee
경기대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 경기대학교 산학협력단 filed Critical 경기대학교 산학협력단
Priority to KR1020170183537A priority Critical patent/KR101916960B1/ko
Application granted granted Critical
Publication of KR101916960B1 publication Critical patent/KR101916960B1/ko

Links

Images

Classifications

    • 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/40Transformation of program code
    • G06F8/41Compilation

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

본 실시예는 프로그래밍 생성 요청에 포함된 데이터를 분석하여 객체들과 상기 객체들에 대응되는 클래스 구조를 생성하고 상기 객체들과 대응되는 객체 소스 코드들 및 상기 객체들에 대응되는 클래스 구조와 대응되는 클래스 소스 코드들을 생성하는 단계; 상기 프로그래밍 생성 요청에서 상기 객체들 및 클래스 구조를 제외한 예외 데이터를 검색하고, 상기 예외 데이터에서 유효 인스트럭션을 추출하고, 상기 유효 인스트럭션과 대응되는 소스 코드 세트를 요청하는 신호를 생성하고, 상기 신호를 데이터베이스로 전달하는 단계; 상기 신호의 응답으로, 상기 유효 인스트럭션과 대응되는 소스 코드 세트에 포함된 개별 데이터 선언문들을 통일시키고, 결과물인 소스 코드 셋트 및 상기 객체 소스 코드들, 상기 클래스 소스 코드들을 결합시킨 프로그램을 생성하는 단계;를 포함하는, 복수의 소스 코드들을 자동적으로 결합하는 방법을 개시한다.

Description

복수의 소스 코드들을 자동적으로 결합하는 방법{APPARATUS AND METHOD IN WHICH A PLURALITY OF SOURCE CODES ARE AUTOMATICALLY COMBINED}
본 명세서는 복수의 소스 코드들을 자동적으로 결합하는 장치 및 방법에 관한 것이다.
오늘날의 소프트웨어 개발, 특히 내부 구조가 복잡하고 규모가 큰 기업용 애플리케이션의 개발은 대부분 자바나 C# 같은 클래스 기반 객체지향 프로그래밍 언어와, 객체 생명주기 관리와 트랜잭션 처리 등의 공통 서비스를 위임받아 수행해주는 EJB(Enterprise JavaBeans) 객체 컨테이너나 스프링 프레임워크 같은 서버 소프트웨어를 기반으로 이루어진다. 또한 기업용 애플리케이션의 설계에는 대개 UML(Unified Modeling Language)류의 그래픽 설계 언어가 사용된다.
본 발명의 바람직한 일 실시예에서는 복수의 소스 코드들이 자동적으로 결합되는 장치 및 방법을 제공한다.
본 발명의 실시예들에 따른 애플리케이션 설계와 구현을 통합하는 객체 지향 프로그래밍 방법은 비주얼 코드 편집 모듈이 개발자에 의해 수신된 비주얼 코드에 포함된 객체들과 대응되는 클래스 구조를 생성하고, 상기 클래스 구조와 대응되는 클래스 소스 코드들 및 상기 비주얼 코드에 포함된 객체들과 대응되는 객체 소스 코드들을 생성하는 단계; 상기 비주얼 코드 편집 모듈이 상기 비주얼 코드에 포함된 상기 객체들 중 적어도 2개의 객체들 간의 상호 협력 관계와 대응되도록 상기 생성된 클래스 소스 코드들 및 객체 소스 코드들을 수정하는 단계; 텍스트 코드 편집 모듈이 상기 개발자에 의해 입력된 상기 클래스 소스 코드들에 포함된 메소드의 명령문(statements)들을 포함하도록 상기 클래스 소스 코드들을 수정하는 단계; 동기화 모듈이 상기 클래스 소스 코드들과 상기 객체 소스 코드들을 분석함으로써, 상기 객체들 중 적어도 2개의 객체들 간의 상호 협력 관계에 대한 유효성을 판단하고, 상기 판단 결과를 제공하는 단계;를 포함할 수 있다.
본 발명의 실시예들에 따른 애플리케이션 설계와 구현을 통합하는 객체 지향 프로그래밍 방법은 객체 코드 컴파일러가 상기 객체 소스 코드들을 객체 컨테이너(runtime-system) 설정 코드들로 변환하는 단계; 클래스 코드 컴파일러가 클래스 소스 코드들을 클래스 바이너리 코드들로 변환하는 단계;를 더 포함할 수 있다.
본 발명의 실시예들에 따른 애플리케이션 설계와 구현을 통합하는 객체 지향 프로그래밍 방법은 객체 컨테이너가 상기 객체 컨테이너 설정 코드들과 상기 클래스 바이너리 코드들을 실행하는 단계;를 더 포함할 수 있다.
상기 판단 결과를 제공하는 단계는 상기 동기화 모듈은 상기 판단 결과에 포함된 유효하지 않은 상호 협력 관계를 포함하는 하나 이상의 객체를 추출하고, 상기 비주얼 코드 편집 모듈은 상기 하나 이상의 객체가 유효한 상호 협력 관계를 포함하도록 상기 비주얼 코드를 수정하고, 상기 수정된 비주얼 코드를 제공할 수 있다.
상기 판단 결과를 제공하는 단계는 상기 동기화 모듈은 상기 판단 결과에 포함된 유효하지 않은 상호 협력 관계를 포함하는 하나 이상의 객체를 추출하고, 상기 유효하지 않은 상호 협력 관계를 포함하는 하나 이상의 객체와 관련된 상기 개발자로부터의 입력이 수신되면, 상기 비주얼 코드 편집 모듈은 상기 개발자로부터의 입력과 대응하도록 상기 비주얼 코드를 수정하고, 상기 텍스트 코드 편집 모듈은 상기 개발자로부터의 입력과 대응하도록 상기 클래스 소스 코드들 또는 상기 객체 소스 코드들을 수정할 수 있다.
상기 객체 간의 상호 협력 관계에 대응되도록 클래스 소스 코드들과 객체 소스 코드들을 수정하는 단계는 상기 비주얼 코드 편집 모듈은 상기 비주얼 코드에 포함된 클라이언트 객체와 서버 객체간의 상호 협력 관계와 대응하여, 상기 클라이언트 객체가 상기 서버 객체에 포함된 메소드를 호출하기 위한 변수 선언(variable declaration)과 메소드 호출문(method invocation statement)을 생성하고, 상기 변수 선언 및 상기 메소드 호출문을 포함하도록 클라이언트 객체와 대응되는 클래스 소스 코드들를 수정하고, 상기 서버 객체의 식별자와 상기 변수 선언에 포함된 변수를 포함하도록 클라이언트 객체와 대응되는 객체 소스 코드들을 수정할 수 있다.
상기 하나 이상의 객체가 유효한 상호 협력 관계를 포함하도록 상기 비주얼 코드를 수정하는 단계는 상기 동기화 모듈은 상기 개발자에 의해 상기 클래스 소스 코드들이 수정되었는지 여부 또는 상기 객체 소스 코드에 포함된 식별자와 변수가 클래스 소스 코드의 변수 선언과 일치하는지 여부를 판단할 수 있다.
본 발명의 실시예들에 따른 애플리케이션 설계와 구현을 통합하는 객체 지향 프로그래밍 방법은 상기 객체 컨테이너는 실행 결과가 상기 개발자에 의해 입력된 요구 사항과 매칭하는지 여부를 판단하고, 판단 결과, 상기 실행 결과가 요구사항과 부합되지 않는 경우, 상기 실행 결과가 상기 요구 사항과 매칭될 때까지 상기 단계들을 반복하는 단계;를 더 포함할 수 있다.
본 발명의 실시예에 따른 컴퓨터 프로그램은 컴퓨터를 이용하여 본 발명의 실시예에 따른 객체 지향 프로그래밍 방법 중 어느 하나의 방법을 실행시키기 위하여 매체에 저장될 수 있다.
본 발명의 바람직한 일 실시예로서, 파티션테이블 관리를 수행하는 데이터베이스는 파티션테이블을 구성하는 복수 개의 파티션들에서 병렬로 데이터 적재작업을 수행하고자 하는 경우, 데이터 적재 작업을 수행하고자 하는 상기 복수 개의 파티션들을 파티션 키 값에 따라 파티션 단위로 각각 해체하고, 해체된 각각의 파티션을 각각 일반테이블로 재생성하는 제1 테이블 생성부; 복수개의 일반테이블을 모아 하나의 파티션테이블로 생성하는 제2 테이블 생성부; 및 상기 재생성된 일반테이블 또는 상기 생성된 하나의 파티션테이블의 인덱스를 수정하는 인덱스 생성부;를 포함하는 것을 특징으로 한다.
이 경우 상기 제2 테이블 생성부에서 상기 복수개의 일반테이블은 소유자와 스키마(schema)가 동일한 것을 특징으로 한다.
본 발명의 바람직한 일 실시예로서, 인덱스 생성부는 데이터 적재 작업을 수행하고자 하는 상기 복수 개의 파티션에 할당되었던 로컬인덱스를 각각 일반 인덱스로 변경하여 상기 재생성된 각각의 일반테이블에 할당하는 것을 특징으로 한다.
본 발명의 바람직한 일 실시예로서, 제1 테이블 생성부에서 파티션테이블을 구성하는 모든 파티션을 해체한 경우 파티션테이블은 삭제되고, 파티션 키(partition key)와 파티션 범위(partition range) 정보도 삭제되며, 파티션테이블에 글로벌인덱스가 부여된 경우, 파티션테이블에 부여된 글로벌인덱스도 삭제되는 것을 특징으로 한다.
이 경우, 인덱스 생성부는 상기 하나의 파티션테이블을 생성한 상기 복수개의 일반테이블에 할당되었던 각각의 일반 인덱스를 각각 로컬 인덱스로 변경하는 것을 특징으로 한다.
본 발명의 또 다른 바람직한 일 실시예로서, 데이터베이스에서 파티션테이블 관리를 수행하는 방법은 파티션테이블을 구성하는 복수 개의 파티션들에서 병렬로 데이터 적재작업을 수행하고자 하는 경우, 제1 테이블 생성부에서 데이터 적재 작업을 수행하고자 하는 상기 복수 개의 파티션들을 파티션 키 값에 따라 파티션 단위로 각각 해체하는 단계; 제1 테이블 생성부에서 해체된 각각의 파티션을 각각 일반테이블로 재생성하는 단계; 및 인덱스 생성부에서 상기 재생성된 일반테이블의 파티션테이블의 인덱스를 수정하는 단계;를 포함할 수 있다.
본 발명의 또 다른 바람직한 일 실시예로서, 데이터베이스에서 파티션테이블 관리를 수행하는 방법은 파티션테이블을 구성하는 복수 개의 파티션들에서 병렬로 데이터 적재작업을 수행하고자 하는 경우, 제1 테이블 생성부에서 데이터 적재 작업을 수행하고자 하는 상기 복수 개의 파티션들을 파티션 키 값에 따라 파티션 단위로 각각 해체하는 단계, 제1 테이블 생성부에서 해체된 각각의 파티션을 각각 일반테이블로 재생성하는 단계, 제2 테이블 생성부에서 복수개의 일반테이블을 모아 하나의 파티션테이블로 생성하는 단계, 및 인덱스 생성부에서 상기 재생성된 일반테이블 또는 상기 생성된 하나의 파티션테이블의 인덱스를 수정하는 단계;를 포함하는 것을 특징으로 한다.
본 발명의 바람직한 일 실시예에 따른 장치 및 방법은 복수의 소스 코드들을 자동적으로 결합할 수 있다.
도 1은 본 발명의 실시예에 따른 장치의 구조를 나타내는 블록도이다.
도 2는 본 발명의 실시예에 따른 데이터베이스의 구조를 설명하는 흐름도이다.
도 3 내지 도 6는 본 발명의 실시예들을 설명하기 위한 도면이다.
본 발명은 다양한 변환을 가할 수 있고 여러 가지 실시예를 가질 수 있는바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 본 발명의 효과 및 특징, 그리고 그것들을 달성하는 방법은 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 다양한 형태로 구현될 수 있다.
도 1은 본 발명의 실시예에 따른 복수의 소스 코드들을 결합하는 장치의 구조를 나타내는 블록도 이다.
복수의 소스 코드들을 결합하는 장치(100)는 사용자로부터 입력을 수신하는 입력 장치(110), 생성 모듈(120), 검색 모듈(130), 결합 모듈(140), 컴파일러(150), 데이터베이스(200)를 포함할 수 있다.
입력 장치(110)는 사용자로부터 데이터를 입력 하는 수단을 의미한다. 예를 들어, 사용자 입력부(150)에는 키 패드(key pad), 돔 스위치 (dome switch), 터치 패드(접촉식 정전 용량 방식, 압력식 저항막 방식, 적외선 감지 방식, 표면 초음파 전도 방식, 적분식 장력 측정 방식, 피에조 효과 방식 등), 조그 휠, 조그 스위치 등이 있을 수 있으나 이에 한정되는 것은 아니다.
입력 장치(110)는 사용자로부터 프로그램밍 생성 요청을 입력 받는다. 입력 장치(110)는 이미지 및 텍스트를 포함하는 프로그래밍 생성 요청을 입력 받는다. 입력 장치(110)는 프로그래밍 생성 요청에 포함된 다양한 타입의 데이터를 다른 모듈로 전달하는 기능을 수행한다.
생성 모듈(120)은 프로그래밍 생성 요청에 포함된 데이터를 분석하여, 객체들과, 객체들에 대응되는 클래스 구조를 생성하고, 객체와 대응되는 객체 소스 코드들 및 상기 객체들에 대응되는 클래스 구조와 대응되는 클래스 소스 코드들을 생성하는 기능을 수행한다.
생성 모듈(120)은 사용자 또는 개발자로부터 입력된 프로그래밍 생성 요청에 따라 소스 코드를 생성할 수 있도록 제어한다. 생성 모듈(120)은 이미지에 포함된 객체들과 대응되는 클래스 구조를 생성하고 클래스 구조체와 대응되는 클래스 소스 코드들 및 이미지에 포함된 객체들과 대응되는 객체 소스 코드들을 생성할 수 있다. 생성 모듈(120)은 이미지에 포함된 객체 및 객체들 사이의 작용-반작용 관계를 포함하는 소스 코드들을 생성할 수 있는 편집 도구들을 제공할 수 있다. 편집 도구들은 다양한 사용자 인터페이스로 구현되며, 사용자 또는 개발자는 마우스, 터치 등의 사용자 입력으로써, 객체 또는 객체들 사이의 작용-반작용 관계를 생성할 수 있다. 이때, 객체의 구조에 해당하는 클래스에 대한 소스 코드는 생성되지 않을 수 있다.
여기서, 작용-반작용 관계를 가지는 2개의 객체 쌍에 포함되는 객체들 중 하나는 메인 객체이고, 다른 하나는 서브 객체라고 명명하겠다. 메인 객체 및 서브 객체는 상대적인 개념이다. 여기서, 작용-반작용 관계는 1개의 객체 대 1개의 객체 사이에 형성될 수 있고, 복수의 객체 대 1개의 객체 사이에, 또는 1개의 객체 대 복수의 객체 사이에 형성될 수 있다. 작용 관계는 메인 객체에서 서브 객체로 향하는 관계이다. 작용 관계의 효과는 메인 객체에 해당하는 명령문들이 서브 객체에 해당하는 명령문에도 그대로 영향을 미치게 하는 것이다.
생성 모듈(120)에 의해 별도로 입력된 사용자 입력에 따라 객체들이 먼저 생성되고, 상기 객체들 간의 작용-반작용 관계들은 다음으로 생성될 수 있다. 객체들과 대응되어 생성되는 소스 코드들은 프로그래밍 생성 신호에 포함된 이미지로부터 추출된, 클래스의 이름대로 클래스를 정의, 선언하는 코드들을 포함할 수 있다. 객체들 간의 작용-반작용 관계와 대응되는 소스 코드들은 객체들 사이의 작용-반작용 관계에 따라, 제1 객체의 메소드가 상기 제2 객체에 의해 호출될 수 있도록 하는 메소드 및 제2 객체를 연결하는 코드들을 포함할 수 있다.
검색 모듈(130)은 프로그래밍 생성 요청에 포함된 텍스트와 매칭되는 소스 코드 셋트를 데이터베이스로부터 검색하는 기능을 수행한다. 검색 모듈(130)은 데이터베이스가 이해할 수 있는 검색 신호를 생성하고, 검색 신호의 응답을 데이터베이스로부터 수신하는 기능을 수행한다.
검색 모듈(130)은 프로그래밍 생성 요청에서 객체들 및 클래스 구조를 제외한 예외 데이터를 검색하고, 상기 예외 데이터에서 유효 인스트럭션을 추출하고, 상기 유효 인스트럭션과 대응되는 소스 코드 세트를 요청하는 신호를 생성하고, 상기 신호를 데이터베이스로 전달한다. 여기서, 예외 데이터는 프로그래밍 생성 요청에서, 객체 소스 코드들 및 클래스 소스 코드들로 변환되지 않고 남은 부분들을 말한다. 유효 인스트럭션은 사용자에 의해 요청된 결과물, 요청 기능들, 요청되는 조건들에 해당하는 것으로, 일반적으로는 텍스트의 형식이나, 이에 한정되지는 않는다.
검색 모듈(130)은 데이터베이스로 요청한 신호의 응답으로 상기 유효 인스트럭션과 대응되는 소스 코드 세트에 포함된 개별 데이터 선언문들을 통일시키는 기능을 수행한다. 검색 모듈(130)은 소스 코드 세트에 포함된 개별 데이터 중에서, 일치하는 기능을 수행하는 하나 이상의 데이터의 이름을 추출한다. 검색 모듈(130)은 일치하는 기능을 수행하는 하나 이상의 데이터의 이름을 통일 시킨다. 이때, 제일 처음에 정의된 데이터의 이름이 참고될 수 있다.
결합 모듈(140)은 클래스 소스 코드들, 객체 소스 코드들, 소스 코드 셋트를 결합시킨 프로그램을 생성할 수 있다. 결합 모듈(140)은 생성된 프로그램을 컴파일 할 수 있는 배치 파일을 생성할 수 있다. 배치 파일은 기본적인 파일명들을 포함하도록 미리 저장되어 있는 것을 이용하여 생성될 수 있다. 파일 명의 변경 사항이 배치 파일에 새롭게 적용된다.
결합 모듈(140)은 컴파일러(150)에 의해 컴파일된 결과를 수신 받으며, 컴파일에 포함된 에러를 수정하는 기능을 수행한다. 컴파일에 포함된 에러는 리스트로 생성된다. 결합 모듈(140)은 리스트화된 에러를 해결하기 위해, 에러의 대상, 대상에 대한 에러의 종류를 설정할 수 있다. 결합 모듈은 에러의 종류에 따라 해결 방법이 매칭된 테이블을 이용하여 에러의 대상을 제거할 수 있다.
결합 모듈(140)은 이미지 또는 텍스트를 통해 획득된 순서 정보에 따라 클래스 소스 코드들, 객체 소스 코드들을 배열시킬 수 있다. 순서 정보는 작용-반작용 관계를 통해서 설정될 수 있다. 예를 들어, 작용 관계에서의 메인 객체의 정의 순서는 서브 객체의 정의 순서의 후행 할 수 있다. 반작용 관계는 작용 관계와 대꾸를 이루는 관계이므로, 반작용 관계의 메인 객체의 정의 순서는 서브 객체의 정의 순서의 후행 할 수 있다.
결합 모듈(140)은 텍스트를 통해 획득된 상세 기능 정보에 따라 검색된 소스 코드 셋트를 추가로 결합 시킨다. 검색된 소스 코드 셋트는 서로 다른 프로그램에서 작용하던 것으로, 기능 면에서 동일한 데이터가 서로 다른 이름으로 각각 명명될 수 있다. 검색된 소스 코드 셋트는 기능 면에서 연결시키기 위해서, 결합 모듈(140)은 기능 면에서 동일한 데이터의 이름을 통일 시킬 수 있다.
결합 모듈(140)은 기본적으로는 단순 결합하는 과정으로 프로그램을 생성하고, 컴파일 후에 에러를 제거하는 방식으로 프로그램을 보정한다.
컴파일러(150)는 결합 모듈(140)에 의해 생성된 배치 파일에 의해 프로그램을 컴파일하게 된다. 컴파일 과정은 일반적인 당업자라면 이해할 수 있는 것이므로, 생략한다.
데이터베이스(200)는 소스 코드들을 행과 열로 적재하는 기능을 수행한다. 데이터베이스(200)는 본 발명의 실시예들에 의해 생성된 소스 코드들, 프로그램을 새롭게 테이블들로 저장하게 된다.
데이터베이스(200)는 하나의 기능을 단위로 테이블을 생성할 수 있다. 개발자들에 의해 생성된 소스 코드들은 개발자 또는 분석 장치를 통해 기능 단위로 분리되며, 기능 단위의 소스 코드들을 하나의 테이블로 생성하여 관리할 수 있다. 테이터베이스(200)는 이때, 효율적인 공간 활용을 위해서,
도 2는 본 발명의 실시예에 따른 방법을 설명하는 흐름도이다.
본 발명의 바람직한 일 실시예로서 데이터베이스(200)는 소스 코드들을 기능 단위로 분류한 테이블 및 테이블을 소정의 기준으로 분류한 파티션 테이블 관리를 수행하여 대용량 데이터를 효율적으로 수행하며, 파티션 테이블을 구성하는 파티션들 각각에 동시에 여러 작업을 병렬적으로 효율적으로 수행하고자 한다.
또한, 데이터베이스(200)는 복수의 테이블에 동시에 병렬로 적재 작업을 수행한 이후, 복수의 테이블들을 이용하여 하나의 파티션 테이블을 생성할 수 있다.
본 발명의 바람직한 일 실시예로서, 데이터베이스(200)는 제1 테이블 생성부(210), 제2 테이블 생성부(220) 및 인덱스 생성부(230)를 포함한다.
제1 테이블 생성부(210)는 파티션테이블(도 3 참고)을 구성하는 복수 개의 파티션들에서 병렬로 데이터 적재작업을 수행하고자 하는 경우, 데이터 적재 작업을 수행하고자 하는 복수 개의 파티션들을 파티션 키 값에 따라 파티션 단위로 각각 해체한다. 이 경우, 파티션 키는 파티션을 구분하기 위해 사용되는 단수 혹은 복수개의 컬럼들을 의미한다.
이 후, 해체된 각각의 파티션을 각각 일반테이블로 재 생성한다. 여기서, 일반테이블은 소스 코드에 포함된 명령문들의 집합에 해당하는 것이다. 제1 테이블 생성부(210)에서 파티션테이블을 해체하는 구체적인 일 실시예는 도 4를 참고한다.
제2 테이블 생성부(220)는 병렬로 적재 작업을 수행한 복수개의 일반테이블을 모아 하나의 파티션테이블을 생성한다. 이 경우 복수 개의 일반테이블의 소유자와 스키마(schema)는 동일할 것을 전제로 한다. 하나의 파티션테이블 생성시, 파티션 키(partition key)와 파티션 방법(partition method)은 관리자에 의해 방법이 주어진다. 또한 생성하려는 하나의 파티션테이블의 명칭도 관리자에 의해 부여되며, 각 파티션의 명칭도 데이터베이스에서 기 설정된 방식에 따라 자동 생성될 수 있다. 하나의 파티션테이블이 생성된 이후에는 이를 구성하는 복수 개의 일반테이블은 사라지며, 조립된 하나의 파티션테이블은 사용자가 새로 생성한 것과 같은 상태가 된다. 제2 테이블 생성부(220)에서 새로운 하나의 파티션테이블을 생성하는 실시예는 도 3을 참고한다.
인덱스 생성부(230)는 제1 테이블 생성부(210)에서 재생성된 일반테이블 또는 제2 테이블 생성부(220)에서 생성된 하나의 파티션테이블의 인덱스를 수정한다.
바람직한 일 실시예로서, 제1 테이블 생성부(210)에서 파티션테이블을 파티션별로 해체하여 각 파티션에 대응하는 일반테이블을 생성한 경우, 파티션테이블은 삭제되고, 파티션테이블에 글로벌 인덱스가 부여된 경우 글로벌 인덱스 정보도 삭제된다. 또한, 인덱스 생성부(230)는 각 파티션에 부여되었던 로컬 인덱스(local index)를 재생성된 일반테이블에 부여하는 일반 인덱스로 변경한다. 이에 대한 일 실시예는 도 3을 참고한다.
인덱스 생성부(230)는 제2 테이블 생성부(220)에서 하나의 파티션테이블을 생성한 경우, 복수의 일반테이블 각각에 할당되었던 일반 인덱스를 로컬 인덱스로 변환한다.
도 3 (a) 내지 (b)는 본 발명의 바람직한 일 실시예로서, 테이블과 파티션 테이블(Partitioned table)의 예를 도시한다.
도 3(a)는 일반테이블의 일 실시예를 도시한다. 테이블은 행과 열로 구성되어 있다. 도 3(b)는 파티션테이블(310)의 일 실시예로 도시한다. 파티션테이블은 다수의 파티션, 예를 들어 파티션P1(312), 파티션 P2(314) 및 파티션 P3(316)로 나누어 진다. 이 경우, 파티션P1(312), 파티션 P2(314) 및 파티션 P3(316)은 각각 파티션 범위(partition range)를 포함하고 있다.
파티션테이블(310)을 파티션 키(partition key)(311)로 분리한 경우, 파티션P1(312)은 -∞≤i1<20, 파티션P2(314)은 20≤i1<30, 그리고 파티션P3(316)은 30≤i1<∞의 범위를 각각 지닌다.
도 4는 본 발명의 바람직한 일 실시예로서, 파티션 테이블의 해체기능의 일 예를 도시한다.
제1 테이블 생성부는 파티션테이블 T2(410)을 구성하는 파티션을 각각 파티션 범위에 따라 분리할 수 있다(412, 414, 416).
disjoin table t2 into (partition p1 to table t2_A, partition p2 to table t2_B, partition p3 to table t2_C);
제1 테이블 생성부는 파티션테이블 T2(410)을 파티션키 il(411)을 기준으로 파티션을 범위별로 분리한다. 바람직한 일 실시예로서, 파티션P1(412)은 -∞≤i1<20, 파티션P2(414)은 20≤i1<30, 그리고 파티션P3(416)은 30≤i1<∞의 범위로 각각 분리한다.
그 후, 제1 테이블 생성부는 분리된 각각의 파티션P1(412), 파티션 P2(414) 및 파티션 P3(416)을 각각 일반테이블, 예를 들어 일반테이블 T2_A(422), 일반테이블 T2_B(424) 그리고 일반테이블 T2_C(426)로 재생성한다.
제1 테이블 생성부에서 이상과 같이 일반테이블(422, 424, 426)을 재생성하면, 인덱스 생성부는 재생성된 일반테이블(422, 424, 426)의 인덱스를 수정한다. 이에 대해 도 5 내지 도 6을 참고한다.
도 5는 파티션테이블 T2(510)에 글로벌 인덱스(520)가 할당되고, 각 파티션P1(512), 파티션 P2(514) 및 파티션 P3(516)에 로컬 인덱스(530, 531, 532)가 할당된 일 실시예를 도시한다.
도 6은 제1 테이블 생성부에서 파티션테이블 T2(610)을 해체한 경우, 파티션테이블 T2(610)이 삭제되고(drop), 파티션테이블 T2(610)에 할당되었던 글로벌 인덱스(620)도 삭제되는(drop) 일 실시예를 도시한다. 이 경우, 파티션 키(partition key)와 파티션 범위(partition range) 정보도 삭제된다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 어플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다. 나아가, 매체는 네트워크 상에서 전송 가능한 형태로 구현되는 무형의 매체를 포함할 수 있으며, 예를 들어 소프트웨어 또는 애플리케이션 형태로 구현되어 네트워크를 통해 전송 및 유통이 가능한 형태의 매체일 수도 있다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.
100: 장치
200: 데이터베이스

Claims (2)

  1. 장치가 프로그래밍 생성 요청에 포함된 데이터를 분석하여 객체들과 상기 객체들에 대응되는 클래스 구조를 생성하고 상기 객체들과 대응되는 객체 소스 코드들, 상기 객체들에 대응되는 클래스 구조와 대응되는 클래스 소스 코드들 및 사용자에 의해 입력된 이미지에 포함된 객체들과 대응되는 객체 소스 코드들을 생성하고, 상기 이미지에 포함된 객체 및 객체들 사이의 작용-반작용 관계를 포함하는 소스 코드들을 생성할 수 있는 편집 도구들을 제공하고,
    사용자로부터의 입력에 기반하여 객체들 사이의 작용-반작용 관계를 생성하는 단계 - 상기 객체들과 대응되는 객체 소스 코드들은 클래스의 이름대로 클래스를 정의, 선언하는 코드들을 포함함, 상기 객체들 간의 작용-반작용 관계와 대응되는 소스 코드들은 제1 객체의 메소드가 제2 객체에 의해 호출될 수 있도록 하는 메소드 및 상기 제1 객체와 상기 제2 객체 사이를 연결하는 코드들을 포함함 - ;
    상기 장치가 상기 프로그래밍 생성 요청에서 객체 소스 코드들 및 클래스 소스 코드들로 변환되지 않은 예외 데이터를 검색하고, 상기 예외 데이터에서 사용자에 의해 요청된 결과물, 요청 기능들, 요청되는 조건들 중 하나에 해당하는 유효 인스트럭션을 추출하고, 상기 유효 인스트럭션의 텍스트와 대응되는 소스 코드 세트를 요청하는 신호를 생성하고, 상기 신호를 데이터베이스로 전달하는 단계;
    상기 데이터베이스는 소스 코드 세트에 포함된, 소스 코드들을 기능 단위로 분류한 테이블에 따라 상기 텍스트와 대응되는 소스 코드 세트를 검색하는 단계;
    상기 장치가 상기 신호의 응답으로, 상기 유효 인스트럭션과 대응되는 소스 코드 세트 중에서, 동일한 기능을 수행하는 하나 이상의 데이터의 이름을 추출하고, 상기 하나 이상의 데이터의 이름을 통일시키고, 상기 결과물인 소스 코드 세트 및 상기 객체 소스 코드들, 상기 클래스 소스 코드들을 결합시킨 프로그램을 생성하는 단계;를 포함하는, 복수의 소스 코드들을 자동적으로 결합하는 방법.

  2. 컴퓨터를 이용하여 제1항의 방법을 실행시키기 위하여 컴퓨터 판독 가능한 저장 매체에 저장된 컴퓨터 프로그램.
KR1020170183537A 2017-12-29 2017-12-29 복수의 소스 코드들을 자동적으로 결합하는 방법 KR101916960B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170183537A KR101916960B1 (ko) 2017-12-29 2017-12-29 복수의 소스 코드들을 자동적으로 결합하는 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170183537A KR101916960B1 (ko) 2017-12-29 2017-12-29 복수의 소스 코드들을 자동적으로 결합하는 방법

Publications (1)

Publication Number Publication Date
KR101916960B1 true KR101916960B1 (ko) 2019-01-30

Family

ID=65276712

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170183537A KR101916960B1 (ko) 2017-12-29 2017-12-29 복수의 소스 코드들을 자동적으로 결합하는 방법

Country Status (1)

Country Link
KR (1) KR101916960B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220105799A (ko) * 2021-01-21 2022-07-28 엘에스일렉트릭(주) 데이터 모델 설계를 위한 사용자 인터페이스 제공 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8387010B2 (en) * 2008-02-26 2013-02-26 Hitachi, Ltd. Automatic software configuring system
KR101747424B1 (ko) * 2016-02-04 2017-06-27 주식회사 제이티엘소프트 애플리케이션 설계와 구현을 통합하는 객체 지향 프로그래밍 장치, 및 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8387010B2 (en) * 2008-02-26 2013-02-26 Hitachi, Ltd. Automatic software configuring system
KR101747424B1 (ko) * 2016-02-04 2017-06-27 주식회사 제이티엘소프트 애플리케이션 설계와 구현을 통합하는 객체 지향 프로그래밍 장치, 및 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220105799A (ko) * 2021-01-21 2022-07-28 엘에스일렉트릭(주) 데이터 모델 설계를 위한 사용자 인터페이스 제공 방법
KR102482526B1 (ko) * 2021-01-21 2022-12-28 엘에스일렉트릭(주) 데이터 모델 설계를 위한 사용자 인터페이스 제공 방법

Similar Documents

Publication Publication Date Title
US20240104067A1 (en) Data revision control in large-scale data analytic systems
JP6939132B2 (ja) アプリケーション・プロファイリング・ジョブ管理システム、プログラム、及び方法
US9772890B2 (en) Sophisticated run-time system for graph processing
CN101887365B (zh) 用于构造基于组件的应用的可执行代码的方法和编译器
Liao et al. Concurrency bugs in multithreaded software: Modeling and analysis using Petri nets
Schlegel et al. Management of machine learning lifecycle artifacts: A survey
Cuevas-Vicenttín et al. Scientific workflows and provenance: Introduction and research opportunities
US20210263833A1 (en) Code Generation Platform with Debugger
CN101866315A (zh) 软件开发工具的测试方法及系统
Sözer et al. Optimizing decomposition of software architecture for local recovery
de Carvalho Silva et al. A Scientific Workflow Management System for orchestration of parallel components in a cloud of large-scale parallel processing services
CN113297057A (zh) 内存分析方法、装置及系统
Gu et al. Towards efficient large-scale interprocedural program static analysis on distributed data-parallel computation
Zou et al. Lachesis: automatic partitioning for UDF-centric analytics
Requeno et al. Quantitative analysis of apache storm applications: the newsasset case study
US11151134B2 (en) Method and system for efficient processing of polymorphic table functions
Spinner et al. A reference architecture for online performance model extraction in virtualized environments
CN114356964A (zh) 数据血缘构建方法、装置、存储介质及电子设备
Thakur et al. DWEVOLVE: a requirement based framework for data warehouse evolution
Bose Component based development
KR101916960B1 (ko) 복수의 소스 코드들을 자동적으로 결합하는 방법
de Carvalho Junior et al. Contextual abstraction in a type system for component-based high performance computing platforms
WO2020229900A1 (en) Service management in a dbms
Yasin et al. Big data services requirements analysis
RU2681408C2 (ru) Способ и система графо-ориентированного создания масштабируемых и сопровождаемых программных реализаций сложных вычислительных методов