KR101083488B1 - 객체 모델의 영향 분석 - Google Patents

객체 모델의 영향 분석 Download PDF

Info

Publication number
KR101083488B1
KR101083488B1 KR1020050037984A KR20050037984A KR101083488B1 KR 101083488 B1 KR101083488 B1 KR 101083488B1 KR 1020050037984 A KR1020050037984 A KR 1020050037984A KR 20050037984 A KR20050037984 A KR 20050037984A KR 101083488 B1 KR101083488 B1 KR 101083488B1
Authority
KR
South Korea
Prior art keywords
data
resource
package
delete delete
impact analysis
Prior art date
Application number
KR1020050037984A
Other languages
English (en)
Other versions
KR20060045924A (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 마이크로소프트 코포레이션
Publication of KR20060045924A publication Critical patent/KR20060045924A/ko
Application granted granted Critical
Publication of KR101083488B1 publication Critical patent/KR101083488B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/24Object-oriented
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99942Manipulating data structure, e.g. compression, compaction, compilation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99943Generating database or data structure, e.g. via user interface
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Investigating Strength Of Materials By Application Of Mechanical Stress (AREA)
  • Crushing And Pulverization Processes (AREA)

Abstract

영향 분석은 특정 객체가 의존하거나 사용하는 객체 및 의존되거나 특정 객체를 사용하는 객체를 결정하는 기능을 제공한다. 객체란 예를 들면, 태스크 및/또는 객체 유형을 칭할 수 있다. 영향 분석은 시스템에서 객체가 다른 객체에 의해 사용되는 방법 및 장소를 결정하는 것을 용이하게 하여 잠재적으로 대량의 수동 작업을 줄여주기 때문에 대량이며 복잡한 문서에서의 사용자 생산성을 향상시키는 데에는 이 영향 분석이 바람직하다.
영향 분석, 객체, 객체 유형, 데이터베이스, 데이터 변환 서비스 시스템

Description

객체 모델의 영향 분석{IMPACT ANALYSIS IN AN OBJECT MODEL}
도 1은 본 발명의 양태가 포함될 수 있는 컴퓨터 시스템을 나타내는 블럭도.
도 2는 본 발명의 양태가 포함될 수 있는 네트워크를 나타내는 계략도.
도 3은 본 발명의 양태를 설명하기에 유용한 예시적인 데이터 흐름 실행을 도시하는 도면.
도 4는 본 발명의 양태를 설명하기에 유용한 예시적인 구조의 도면.
도 5는 본 발명에 따른 예시적인 방법의 흐름도.
도 6은 본 발명에 따른 예시적인 추적 리스트의 도면.
도 7은 본 발명에 따른 다른 예시적인 방법의 흐름도.
<도면의 주요 부분에 대한 부호의 설명>
21: 프로세싱 유닛
22: 시스템 메모리
23: 시스템 버스
20a: 클라이언트 컴퓨터
20b: 서버 컴퓨터
20c: 데이터 소스
70: 데이터
80: 통신 네트워크
본 발명은 일반적으로 객체 모델의분야에 관한 것으로, 보다 상세히는 데이터 구조 또는 시스템 내의 객체들 간의 관계를 분석하는 것에 관한 것이다.
저장 시스템은 종종 그래프와 같은 특정 구조로 객체를 배열한다. 그 구조 내의 객체들 간에는 함축적인 의존성이 존재하며 하나의 객체에 대한 변경은 전체적으로 구조 또는 시스템 내의 다른 객체를 변경시키거나 그렇지 않으면 영향을 미친다. 객체에 대한 변경이 전체적으로 그 구조 또는 시스템에 미칠 영향을 결정하는 데에는 문제가 있다. 변경의 영향은 오직 구조 내의 객체들 간의 대화가 그 구조 내의 객체들의 위치에 전적으로 기초할 경우에만 명백하다. 그러나, 특히 구조 내의 객체들이 실행가능 코드로 구성되고 따라서 임의의 방식으로 행동할 수 있을 경우에는 그렇지 않다. 객채 간의 의존성을 쉽게 볼 수 없는 환경에서의 변경의 영향의 발견 - 영향 분석 - 의 난해함을 극복할 필요가 있다.
저장 시스템의 한 유형이 데이터베이스 관리 시스템이다. 컴퓨터에서의 관계형 데이터베이스 관리 시스템의 데이터 레코드는 모두 동일한 열들을 가지고 있는 행들의 컬렉션인 테이블 내에 보유된다. 각 열은 행으로 구성된 데이터 레코드에 대한 데이터의 특정 유형의 정보를 보유한다. 하나 이상의 인덱스가 각 테이블 과 연관될 수 있다. 인덱스란 테이블의 하나 이상의 열의 데이터에 기초하는 테이블의 데이터 레코드로의 포인터들의 정렬된 집합이다. 몇몇의 경우에서, 질의에 의해 요구되는 모든 정보를 인덱스로 찾을 수 있어, 실제 테이블을 검색할 필요성을 없앤다. 인덱스는 인덱스키 및 인덱스 엔트리 키의 키 열 값을 가지는 테이블 내의 데이터베이스 레코드로의 포인터를 포함하는 인덱스 엔트리 또는 행으로 구성된다. 인덱스키는 테이블 내의 레코드에 순서를 제공하는 키 열을 포함한다. 인덱스키 열은 테이블의 열을 포함하고, 그 특정한 열에 가능한 임의의 값을 포함할 수 있다. 테이블을 액세스하는 데에 자주 이용되는 열은 키 열로서 이용될 수 있다.
데이터베이스 테이블 내의 외래 키워드라고도 칭하는, 외래키는 사용되고 있는 테이블에서, 특정키, 보통 주 키를 참조(또는 목표로 하는)하는 다른 테이블로부터의 키이다. 주 키를 다른 테이블로부터의 복수의 외래키가 목표로 삼을 수 있다. 그러나 주 키가 반드시 임의의 외래키의 목표가 되어야할 필요는 없다. 사용자의 특별한 요구사항이 변경될 때 테이블에서 주 키를 변경하는 것이 가능하다. 예를 들면, 한 마을의 사람들은 한 애플리케이션으로 이들의 운전 면허 번호에 따라서 고유하게 식별되지만, 이들의 전화 번호에 따라 이들을 식별하는 것이 더 편리할 수 있는 다른 상황이 있을 수 있다. 테이블 내의 주 키가 변경되면, 결과로서, 관련된 외래키의 집합이, 존재한다면, 이 집합은 종종 변경될 수 있다. 외래키와 주 키 간의 관계는 결정되기 쉽고, 외래키에 대한 변경이 주 키에 영향을 어떻게 미칠지, 또한 주키에 대한 변경이 외래키에 어떻게 영향을 미칠지를 이해하는 것이 용이하다.
소프트웨어 컴포넌트들 간의 표준 상호연결 메카니즘을 제공하는 다양한 객체 모델이 정의되어 왔다. 이들 객체 모델에서, 소프트웨어 컴포넌트는 객체-지향적 의미로 "객체"이며, 소프트웨어 컴포넌트는 자신의 기능을 액세스할 수 있도록 하는 "인터페이스"를 제공한다. 객체 모델에서는, 객체 모델의 객체에 대한 변경이 구조 또는 시스템 상에 전체적으로 미치는 영향을 결정하는 것은 매우 어렵다.
대부분의 체계(organizations)에서는 공통 결정-과정을 향상시키기 위하여 데이터를 집중시킬 필요가 있다. 그러나, 이들의 데이터는 다양한 포맷으로 다른 위치에 저장될 수 있다. DTS는 독립된 소스로부터 DTS 연결성에 의해 지원되는 하나의 또는 복수의 목적지까지 데이터를 통합, 변환, 및 추출을 할 수 있도록 해주는 도구의 집합을 제공함으로써 이러한 욕구를 충족시킨다. DTS 패키지를 도식적으로 작성하는 DTS 도구를 이용하거나 DTS 객체 모델을 가지는 패키지를 프로그래밍함으로써, 커스텀 데이터 변동 솔루션은 원하는 바와 같이 조정될 수 있다.
DTS 패키지는 DTS 도구를 이용하거나 프로그램적으로 다양한 협동 컴퓨팅 애플리케이션들 또는 구조화된 저장 파일들로 어셈블(assemble)된 워크플로우(workflow) 제약사항, 변수, DTS 변환, DTS 태스크 및 연결들의 조직화된 컬렉션이다. 일반적으로, 각 패키지는,실행될 때, 순차적으로 또는 병렬로 수행되는 하나 이상의 단계를 포함한다. 패키지는, 실행될 때, 올바른 데이터 소스에 연결되고, 데이터 및 데이터베이스 객체를 복사하고, 데이터를 변환하여 다른 사용자나 프로세스에게 이벤트를 통지한다. 예를 들면, 패키지는 편집되고, 그 패스워드가 보호 되고, 실행을 위하여 스케줄링되며, 버전에 의해 검색된다.
사용자는 통상적으로 다양한 컴포넌트를 한번에 하나씩 추가한 다음 변경을 테스트함으로써 패키지를 조각 단위로 작성하거나 편집할 수 있다. 이러한 패키지는 독단적으로 복잡할 수 있어, 실제로 프로그램을 실행시키지 않고, 제1 객체에 대한 변경 또는 갱신이 제2 객체에 미칠 영향을 판정하는 것은 조금은 가능하더라도 어려운 일이다. 이는 원하는 행동을 얻기 위하여 반복된 시행 착오를 겪게 된다.
상술한 바로부터, 종래 기술을 극복하는 시스템 및 방법에 대한 필요성이 존재한다고 이해된다.
이하의 요약은 본 발명의 다양한 양태의 개관을 제공한다. 이 요약은 본 발명의 모든 중요한 양태의 철저한 설명을 제공하거나, 본 발명의 범위를 정의한다고 의도되지 않는다. 오히려, 이 요약은 이하의 상세한 설명 및 도면으로의 도입부로서 간주되도록 의도된다.
본 발명은 영향 분석에 관한 것이며, 이는 특정 객체가 의존하거나 이용하는 객체 및, 의존되거나 특정 객체를 이용하는 객체를 결정하는 기능을 제공한다. 객체란, 예를 들면, 태스크 및/또는 객체 유형을 칭할 수 있다. 영향 분석은 시스템에서 객체가 다른 객체에 의해서 이용되는 방법 및 장소를 결정하는 것을 용이하게 하여 잠재적으로 대량의 수동 작업을 줄여주기 때문에, 대량이며 복잡한 문서에서의 사용자 생산성을 향상시키는데에는 이 영향 분석이 바람직하다.
예시적인 실시예는 참조 추적자를 이용하여 자원-이용 컴포넌트(태스크)가 이 컴포넌트들이 이용하는 자원(객체 유형)을 선언하도록 한다. 다시 말하면, 참조 추적자는 자원-이용 컴포넌트로부터 이용될 자원으로의 참조를 생성함으로써, 태스크와 객체 유형 간의 관계를 표시한다. 그 다음 연결과 태스크 간의 링크, 및 변수와 태스크 사이에 링크가 생성된다. 참조 추적자는 영향 분석을 위하여 추적되어야 하는 각 객체 유형에 제공되는 추적 리스트를 파퓰레이팅(populate)한다. 객체가 다른 객체에 의존(또는 다른 객체를 사용)한다고 가정한다면, 이 객체는 새로운 엔트리를 추적 리스트에 추가하는 참조 추적자에 그 의존성을 등록한다. 사용이 변경되거나 그렇지 않은 경우 종료된다면, 참조 추적자에게 다시 통지하고 대응하는 엔트리는 추적 리스트로부터 제거된다.
본 발명의 양태에 따르면, 추적 리스트가 생성된 이후에, 객체 유형에 대한 변경이 수신될 수 있다. 객체에 대한 변경이 미치는 영향은 이 객체를 이용하면서 등록되는 객체 모델의 다른 객체 유형을 결정하는 추적 리스트를 참조함으로써 결정된다. 그 다음 이 정보가 사용자 또는 애플리케이션에 반환된다.
본 발명의 다른 특징 및 이점은 본 발명의 이하의 상세한 설명 및 첨부된 도면으로부터 명백해질 수 있다.
전술된 요약 및 바람직한 실시예의 이하 상세한 설명은 첨부된 도면에 연관지어 읽을 때 더 잘 이해된다. 본 발명을 예시하기 위하여, 본 발명의 예시적인 구조들이 도면에 도시되지만, 본 발명은 특정 방법 및 개시된 도구들에 제한되지 않는다.
본 발명의 요지는 법에 의해 규정된 요구사항을 충족시키기 위하여 전문적으로 기술된다. 그러나, 이 설명은 결코 이 특허의 범위를 제한하려고 의도되지 않는다. 오히려, 본 발명자는 청구된 요지가, 다른 현재 기술 또는 미래 기술에 관련하여, 본 명세서에서 기술한 것과 유사한 다른 단계 또는 단계들의 조합을 포함하는 다른 방법으로 실시될 수도 있다고 여겨진다. 또한, 용어 "단계"는 본 명세서에서 채택된 방법들의 서로 다른 구성요소에 의미를 부여하기 위해 이용될 수 있지만, 이 용어는 개개의 단계들의 순서가 명확하게 기술되지 않는 한 본 명세서에 개시된 다양한 단계들 간에 어떠한 특정한 순서도 내포하도록 해석되어서는 안된다.
예시적인 컴퓨팅 환경
본 발명의 다양한 실시예가 컴퓨터에서 실행될 수 있다. 도 1 및 이하의 설명은 본 발명이 구현될 수 있는 적절한 컴퓨팅 환경의 간단하고 일반적인 설명을 제공하도록 의도된다. 요구사항은 아니지만, 본 발명은 클라이언트 워크스테이션 또는 서버와 같은 컴퓨터에 의해 실행되고 있는 프로그램 모듈과 같은 컴퓨터 실행가능 명령어에 관련하여 기술될 것이다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상 데이터 유형을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. "객체"는 하드웨어/소프트웨어 인터페이스 시스템 셸에 의해 말단-사용자에게 노출된 모든 객체를 통하여 일반적으로 지원되는 속성들의 기본 집합을 가지는 그 하드웨어/소프트웨어 인터페이스 시스템에 액세스될 수 있는 저장가능한 정보의 유닛이다. 객체는 또한 새로운 속성 및 관계를 도입하도록 하는 특징들을 포함하는 모든 유형을 통해 일반적으로 지원되는 속성 및 관계를 가진다.
또한, 본 기술 분야에서 숙련된 기술을 가진 자라면 본 발명은 핸드헬드(handheld) 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 또는 프로그램가능한 가전제품(programmable consumer electronic), 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터 등을 포함하는 다른 컴퓨터 시스템 구성과 함께 실행될 수 있음을 인식할 것이다. 본 발명은 또한 통신 네트워크를 통해 링크된 원격 프로세싱 장치에 의해 태스크를 수행하는 분산형 컴퓨팅 환경에서 실행될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 국부 및 원격 메모리 저장 장치에 위치할 수 있다.
도 1에 도시된 바와 같이, 예시적인 범용 컴퓨팅 시스템은 프로세싱 유닛(21), 시스템 메모리(22), 및 시스템 메모리를 포함하는 다양한 시스템 컴포넌트를 프로세싱 유닛(21)에 연결시키는 시스템 버스(23)를 포함하는 통상의 퍼스널 컴퓨터(20) 등을 포함한다. 시스템 버스(23)는 다양한 버스 아키텍처 중의 임의의 것을 사용하는 로컬 버스, 주변 버스, 및 메모리 버스 또는 메모리 컨트롤러를 포함하는 몇가지 유형의 버스 구조 중의 임의의 것일 수 있다. 시스템 메모리는 ROM(24) 및 RAM(25)을 포함한다. 시동중과 같은 때에 퍼스널 컴퓨터(20) 내의 구성요소들 간에 정보를 전송하는 것을 돕는 기본 루틴을 포함하는 기본 입출력 시스템(26; BIOS)은 ROM(24)에 저장된다.
퍼스널 컴퓨터(20)는 (도시되지 않은) 하드 디스크로부터 판독하거나 그 하 드 디스크에 기록하는 하드 디스크 드라이브(27), 분리형 자기 디스크(29)로부터 판독하거나 그 자기 디스크에 기록하는 자기 디스크 드라이브(28), 및 CD-ROM 또는 기타 광 매체 등의 분리형 광 디스크(31)로부터 판독하거나 그 광 디스크에 기록하는 광 디스크 드라이브(30)를 더 포함할 수 있다. 하드 디스크 드라이브(27), 자기 디스크 드라이브(28), 및 광 디스크 드라이브(30)는 각각 하드 디스크 드라이브 인터페이스(32), 자기 디스크 드라이브 인터페이스(33), 및 광 드라이브 인터페이스(34)에 의해 시스템 버스(23)에 접속된다. 드라이브 및 그 관련 컴퓨터 판독가능 매체는 퍼스널 컴퓨터(20)를 위한 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 및 기타 데이터의 비휘발성 저장을 제공한다.
본 명세서에서 기술한 예시적인 환경은 하드 디스크, 분리형 자기 디스크(29), 및 분리형 광 디스크(31)를 채용하지만, 본 기술 분야에서 숙련된 기술을 가진 자라면 자기 카세트, 플래쉬 메모리 카드, DVD, 베르누이 카트리지, RAM, ROM 등과 같은, 컴퓨터에 의해 액세스 가능한 데이터를 저장할 수 있는 다른 유형의 컴퓨터 판독가능 매체 또한 예시적인 오퍼레이팅 환경에 이용될 수 있다고 이해할 것이다.
오퍼레이팅 시스템(35), 하나 이상의 애플리케이션 프로그램(36), 다른 프로그램 모듈(37) 및 프로그램 데이터(38)를 포함하는 복수의 프로그램 모듈은 하드 디스크, 자기 디스크(29), 광 디스크(31), ROM(24) 또는 ROM(25)에 저장될 수 있다. 사용자는 포인팅 장치(42) 및 키보드(40)와 같은 입력 장치를 통해 퍼스널 컴퓨터(20)에 명령 및 정보를 입력할 수 있다. (도시되지 않은) 기타 입력 장치는 마이크로폰, 조이스틱, 게임 패드, 위성 디스크, 스캐너 등을 포함할 수 있다. 이들 입력 장치 및 그외의 입력 장치는 시스템 버스에 연결된 직렬 포트 인터페이스(46)를 통해 종종 프로세싱 유닛(21)에 접속되지만, 병렬 포트, 게임 포트 또는 유니버설 시리얼 포트(USB)와 같은 기타 인터페이스에 의해 접속될 수 있다. 모니터(47) 또는 다른 유형의 디스플레이 장치는 또한 비디오 어댑터(48) 등의 인터페이스를 통해 시스템 버스(23)에 접속된다. 모니터(47)외에도, 퍼스널 컴퓨터는 통상적으로 스피커 및 프린터 등의 기타 주변 출력 장치(도시되지 않음)를 포함한다. 도 1의 예시적인 시스템은 호스트 어댑터(55), 소형 컴퓨터 시스템 인터페이스(SCSI) 버스(56), 및 SCSI 버스(56)에 접속된 외부 저장 장치(62) 또한 포함한다.
퍼스널 컴퓨터(20)는 원격 컴퓨터(49)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 이용한 네트워크 환경에서 동작할 수 있다. 원격 컴퓨터(49)는 다른 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어(peer) 장치, 또는 기타 공통 네트워크 노드일 수 있으며, 비록 도 1 에는 메모리 저장 장치(50)만이 도시되어 있지만, 퍼스널 컴퓨터(20)에 관하여 상술한 구성요소 중 다수 또는 모든 구성요소를 일반적으로 포함할 수 있다. 도 1에 도시된 논리적 접속은 근거리 통신망(LAN; 51) 및 원거리 통신망(WAN; 52)을 포함한다. 이러한 네트워킹 환경은 사무실, 기업 광역 컴퓨터 네트워크(enterprise-wide computer network), 인트라넷, 및 인터넷에서 일반적인 것이다.
LAN 네트워킹 환경에서 사용되는 경우, 퍼스널 컴퓨터(20)는 네트워크 인터페이스, 즉, 어댑터(53)를 통해 LAN(51)에 접속된다. WAN 네트워킹 환경에서 사용 되는 경우, 퍼스널 컴퓨터(20)는 일반적으로 인터넷 등의 WAN(52)을 통해 통신을 구축하기 위한 모뎀(54) 또는 기타 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(54)은 직렬 포트 인터페이스(46)를 통해 시스템 버스(23)에 접속된다. 네트워크 환경에서, 퍼스널 컴퓨터(20)에 관하여 도시된 프로그램 모듈 또는 그 일부분은 원격 메모리 저장 장치에 저장될 수 있다. 도시된 네트워크 접속은 예시적인 것이며, 컴퓨터들 간의 통신 링크를 구축하는 그 외의 수단이 사용될 수 있다고 인식될 것이다.
본 발명의 다양한 실시예들이 특별히 전산화된 시스템에 매우 적합한 것이라 생각되지만, 본 명세서에서 이러한 실시예로 본 발명을 제한하려는 의도는 전혀 없다. 이와 다르게, 본 명세서에서 사용된 용어 "컴퓨터 시스템"은 이러한 장치가 특징적으로 전자적, 기계적, 논리적 또는 가상적인지 여부에 관계 없이, 누름 버튼을 포함하거나 버튼 누름 또는 버튼 누름의 동등물을 결정할 수 있는 임의의 장치 또는 모든 장치를 포함하도록 의도된다.
네트워크 환경
도 2는 본 발명이 채택될 수 있는 예시적인 네트워크 환경을 도시한다. 물론, 실제 네트워크 및 데이터베이스 환경은 다양한 구성으로 배치될 수 있지만, 본 명세서에 도시된 예시적인 환경은 본 발명이 동작할 수 있는 환경의 유형을 이해하기 위한 프레임워크를 제공한다. 다른 환경들도 고려된다.
네트워크는 클라이언트 컴퓨터(20a), 서버 컴퓨터(20b), 데이터 소스 컴퓨터(20c), 및 데이터베이스(70, 72a 및 72b)를 포함할 수 있다. 클라이언트 컴퓨터 (20a) 및 데이터 소스 컴퓨터(20c)는 인터넷 등의 통신 네트워크(80)를 통해 서버 컴퓨터와 전자적으로 통신한다. 클라이언트 컴퓨터(20a) 및 데이터 소스 컴퓨터(20c)는 통신 인터페이스(82)를 통하여 통신 네트워크에 접속된다. 통신 인터페이스(82)는 이더넷 접속, 모뎀 접속 등의 잘 알려진 통신 인터페이스 중 임의의 하나일 수 있다.
서버 컴퓨터(20b)는 데이터베이스 서버 시스템 소프트웨어를 통해 데이터베이스(70)의 관리를 제공한다. 이와 같이, 서버(20b)는 다양한 데이터 소스로부터의 데이터 저장고로서 작용하고 그 데이터를 다양한 데이터 소비자에게 제공한다.
도 2의 예에서, 데이터 소스는 데이터 소스 컴퓨터(20c)에 의해 제공된다. 데이터 소스 컴퓨터(20c)는 LAN, WAN, 인트라넷, 인터넷 등일 수 있는 통신 네트워크(80)를 통하여 서버 컴퓨터(20b)에 데이터를 전송한다. 데이터 소스 컴퓨터(20c)는 관계형 데이터베이스 서버, 스프레드시트(spreadsheet), 파일 등일 수 있는 데이터베이스(72a, 72b)에 국부적으로 데이터를 저장한다. 예를 들면, 데이터베이스(72a)는 테이블(150, 152, 및 154)에 저장된 데이터를 도시한다. 데이터 소스(20c)에 의해 제공된 데이터는 서버(20b)에 의해 보유되는 데이터 웨어하우스(warehouse)와 같은 대량의 데이터베이스에 결합되고 저장된다.
서버 컴퓨터(20b)에 의해 저장된 데이터를 이용하고자 하는 클라이언트 컴퓨터(20a)는 통신 네트워크(80)를 통해 데이터베이스(70)를 액세스할 수 있다. 클라이언트 컴퓨터(20a)는 데이터베이스(70)에 저장된 데이터에서의 SQL 질의(예를 들면, 갱신, 삽입, 및 삭제)를 통하여 데이터를 요청한다.
데이터베이스 구조
데이터베이스는 관련된 데이터의 컬렉션이다. 한 유형의 데이터베이스, 즉 관계형 데이터베이스에서, 데이터는 테이블이라 칭하는 2차원의 열과 행 형태로 구조화된다. 도 2는 데이터베이스(72a)에 저장된 테이블(150, 152, 및 154)과 같이 테이블을 도시한다. 관계형 데이터베이스는 통상적으로 복수의 테이블을 포함한다. 테이블은 0 이상의 레코드 및 각 레코드 안에 적어도 하나의 필드를 포함할 수 있다. 레코드는 레코드 식별자라 칭하는 고유한 숫자에 의해 식별되는 테이블 내의 한 행이다. 테이블 내의 데이터의 열이 테이블 내의 각 레코드에 대하여 동일한 필드를 나타낸 다는 점에서 필드는 레코드의 세부영역이다.
데이터베이스는 통상적으로 결합적인 구조도 포함할 수 있다. 결합적인 구조의 예는, 통상적으로 B-트리 또는 해쉬 인덱스의 형태인 인덱스이지만, 인덱스는 반드시 이러한 형태일 필요는 없다. 인덱스는 테이블의 크기에 상관없이 거의 일정한 액세스 시간으로 테이블 내의 특정 행을 찾는 기능을 제공한다. 결합적인 구조는 데이터베이스의 사용자에게 투명성있는 것이 바람직하며 효과적인 오퍼레이션 및 데이터베이스 관리 시스템의 제어를 제공하는 것을 돕는다. DBMS(database management system) 및 상세히는 RDBMS(relational database management system)는 메모리 매체에 데이터를 저장하고, 그 메모리 매체로부터 데이터를 검색하고, 그 메모리 매체 상의 데이터를 갱신하는 것(이들에 한정되지 않음)을 포함하는 데이터베이스 특징을 지원하는 제어 시스템이다.
일반적으로, 관계형 데이터베이스에 저장된 데이터는 SQL 등의 질의 언어로 구성된 사용자-정의 질의를 통하여 액세스된다. 통상적으로, 임의의 소정의 SQL 질의에는 SQL 질의의 목적을 달성하기 위하여 데이터에서 수행될 필요가 있는 수많은 절차적인 오퍼레이션이 존재한다. 예를 들면, 원하는 목적을 달성하기 위하여 수행될 필요가 있는 수많은 조인(join) 및 테이블 스캔이 존재할 수 있다.
데이터 변환 서비스 및 데이터 변환 파이프라인(pipeline)
예시적인 데이터 변환 서비스 시스템(DTS)은 (소스로부터 데이터를 수신하는 데이터 검색 시스템과 같이) 데이터 소스로부터 데이터를 수신하는 기능, 변환된 데이터 및/또는 변환되지 않은 데이터를 데이터 목적지(데이터를 저장하는 목적지 데이터 저장 시스템)에 저장하는 능력을 가지는 데이터 목적지, 및 (인스턴스화 될 때, 파이프라인의 컴포넌트가 되는) 다양한 상호연결된 노드를 통해 하나 이상의 소스로부터 하나 이상의 목적지까지의 데이터 흐름을, 이 흐름에 따라 데이터를 변환하기 위하여(여기서 데이터에, 데이터와, 데이터에 의하여 처리될 수 있는 다수의 대화를 광범위하게 기술하기 위하여 본 명세서에서 용어 변환이 이용된다) 파이프라이닝함으로써 복잡한 엔드-투-엔드(end-to-end) 데이터 변환 기능(데이터 변환 실행 또는 DFE)을 구축하는 데이터 변환 파이프라인(DTP)을 포함한다. 파이프라인 내의 각 컴포넌트는 특정한 소정의 데이터 변환 기능을 구비하고, 컴포넌트들 간의 논리적 연결은 동작적인 의미로 데이터 흐름 과정을 정의한다.
DTP는, 다양한 상호연결된 노드(그래프)를 통하여 하나 이상의 소스로부터 하나 이상의 목적지까지의 원하는 데이터 흐름을 그래픽 사용자 인터페이스(GUI)를 통해 도식적으로 기술하고 나타냄으로써 사용자가 복잡한 엔드-투-엔드 데이터 변 환 기능(DFE)을 전개할 수 있도록 한다. 사용자에 의해 선택되고 그래프에 포함되는 그래프 내의 각 노드(각각이 한 컴포넌트)는 특정한 소정의 데이터 변환 기능을 나타내고, 노드들(컴포넌트들) 간의 연결은 데이터 흐름 과정을 정의한다.
도 3은 패키지(320)에서의 소스(350)와 목적지(360) 간의 예시적인 데이터 흐름 실행을 도시한다. 엘리먼트(322, 326, 328, 330)는 데이터가 조작되는 다양한 오퍼레이션을 말한다. 소스(350)는 예를 들면, 파일, 데이터베이스, 웹사이트 등으로부터 데이터를 수신한다. 추출 컴포넌트(322)는 데이터 소스(350)로부터 데이터를 추출한다. 변환 컴포넌트(326)는 컴포넌트(326)의 입/출력 기능에 따라 데이터를 변환한다. 제2 변환 컴포넌트(328)는 자신의 특정 기능에 따라 데이터를 더 조작한다. 그 다음 로딩 컴포넌트(330)는 특정 데이터를 데이터 목적지(360)로 로딩시킨다. 이러한 방법으로, 복잡한 데이터 변환이 전개될 수 있다.
예시적인 실시예
DTS는 본 발명의 그 안에 양태가 구현될 수 있는 확장가능한 컴포넌트 및 통신을 구비하는 예시적인 컴퓨팅 환경이다. 대부분의 체계(organizations)에서는 공통 결정-과정을 향상시키기 위해서 데이터를 집중시킬 필요가 있다. 그러나, 이들의 데이터는 다양한 포맷으로 다양한 위치에 저장될 수 있다. DTS는 독립된 소스로부터 DTS 연결 성에 의해 지원되는 하나의 또는 복수의 목적지까지의 데이터의 추출, 변환 및 통합을 할 수 있도록 해주는 도구의 집합을 제공함으로써 이를 해결한다. DTS 패키지를 도식적으로 작성하는 DTS 도구를 이용하거나 DTS 객체 모델을 가지는 패키지를 프로그래밍함으로써, 조직의 특화된 기업 요구에 맞추어진 커스텀 데이터 변동 솔루션이 생성될 수 있다.
DTS 패키지는 DTS 도구를 이용하거나 프로그래밍하고 예를 들면, MICROSOFT SQL ServerTM 또는 XML에 저장함으로써 어셈블되는 워크플로우 제약사항, DTS 변환, DTS 태스크 및 연결들의 조직화된 컬렉션이다. 일반적으로, 각 패키지는, 실행될 때, 순차적으로 또는 병렬로 실행되는 하나 이상의 단계를 포함된다. 패키지는, 실행될 때, 올바른 데이터 소스에 연결되고, 데이터 및 데이터베이스 객체를 복사하고, 데이터를 변환하고, 다른 사용자 또는 프로세스에게 이벤트를 통지한다. 패키지는 편집되고, 그 패스워드가 보호되고, 실행을 위하여 스케줄링되며, 버전에 의해 검색될 수 있다.
DTS 패키지와 함께 DTS 태스크가 존재한다. DTS 태스크는 패키지에서 하나의 단계로 실행되는 기능의 분리된 집합이다. 각 태스크는 데이터 이동 및 데이터 변환 프로세스의 일부로서 또는 실행될 작업으로서 수행될 작업 아이템을 정의한다. 일반적으로 사용되는 DTS 태스크의 예는: 1) 데이터 가져오기 및 내보내기, 2) 데이터 변환, 3) 데이터베이스 객체 복사, 및 4) 메시지를 다른 사용자와 패키지로 송신 및 다른 사용자와 패키지로부터의 수신을 포함한다. DTS 컴포넌트 및 오퍼레이션을 완료하는 것은 DTS 변환이다. DTS 변환은 데이터가 목적지에 도착하기 이전에 데이터 조각에 대하여 적용되는 하나 이상의 함수 또는 오퍼레이션이다.
영향 분석은 특정 객체가 의존하거나 이용하는 객체 및 의존되거나 특정 객체를 이용하는 객체를 결정하는 기능을 제공한다. 본 명세서에서 사용된, 객체란, 예를 들면, 태스크 및/또는 객체 유형을 칭할 수 있다. 영향 분석은 시스템에서 객체가 다른 객체에 의해 이용되는 방법 및 장소를 결정하는 것을 용이하게 하여 잠재적으로 대량의 수동 작업을 줄여주기 때문에 대량이며 복잡한 문서에서의 사용자 생산성을 향상시키는 데에는 이 영향 분석이 바람직하다.
예시적인 객체 유형은 판독 액세스 변수 및 판독/기록-액세스 변수와 같은 변수 및 접속을 포함한다. 예시적인 실시예가 본 명세서에서 연결 및 변수에 관련하여 기술되지만, 본 발명에 따라 다른 객체 유형이 이용되고 추적될 수 있다고 고려된다. 이러한 객체 유형은 이 유형이 패키지에 영향을 미칠 수 있다고 판정되는 경우 추적되는 것이 바람직할 수 있다. 본 발명은 데이터베이스가 아닌 객체 모델에 구현되는 것이 바람직하다. 따라서, 본 발명에 따르는 객체 간의 함축적인 관계가 노출되는 확장가능한 객체 모델이 제공된다.
상술된 바와 같이, 패키지에서 소스는 데이터를 수신한다. 그 다음 데이터는 패키지에서의 자신의 목적지에 도달하기 이전에 조작된다. 본 발명에 따르면, 어떠한 패키지가 어떠한 것에 관련되는지를 보여주는 연결의 리스트가 제공된다. 다시 말하면, 패키지는 (컴포넌트를 가지는) 태스크 및 객체 유형을 포함한다. 예를 들면, 패키지를 생성하기 위하여, 사용자는 태스크 및 객체 유형을 사용자 인터페이스를 통하여 제공한다. 그 다음 시스템은 도 4에 도시된 것과 같은, 트리와-유사한 구조를 생성한다. 도 4의 예시적인 구조에서, 컴포넌트를 포함하는 태스크를 포함하는 패키지가 도시되는데, 이 컴포넌트들 중 하나는 Task 1 및 2를 수행하는 소스이다. Connection 1 및 2와, Variables 1 및 2는 객체 유형으로서 도시된 다. 이러한 트리와-유사한 구조는 후술될 바와 같이 추적 리스트를 전개하는 데에 이용될 수 있다.
도 5는 본 발명에 따른 예시적인 방법의 흐름도를 도시한다. 초기에, 단계(500)에서 자원-이용 컴포넌트(예를 들면, 태스크) 및 이 자원-이용 컴포넌트에 관련된 소스를 가지는 패키지가 생성된다. 사용될 자원(예를 들면, 연결 또는 변수와 같은 객체 유형)도 기술된다. 단계(510)에서 참조 추적자가 액세스되어 자원-이용 컴포넌트(태스크)가 이들이 이용하는 자원(객체 유형)을 선언할 수 있도록 한다. 다시 말하면, 참조 추적자는 자원-이용 컴포넌트로부터 사용할 자원으로의 참조를 생성함으로써 태스크와 객체 유형 간의 관계를 표시한다. 그 다음 단계(520)에서 연결과 태스크 간의 링크, 및 변수와 태스크 간의 링크가 생성된다.
단계(530)에서 참조 추적자는 영향 분석을 위하여 추적되어야 할 각각의 객체 유형에 제공되는 추적 리스트를 파퓰레이팅한다. 객체가 다른 객체 상에 의존(또는 다른 객체를 사용)한다고 가정한다면, 이 객체는 단계(540)에서 새로운 엔트리를 추적 리스트에 추가하는 참조 추적자로 그 의존성을 등록한다. 단계(550)에서 이러한 사용이 변경되거나 그렇지 않은 경우 종료된다면, 참조 추적자에게 다시 통지하고 대응하는 엔트리는 추적 리스트로부터 제거된다.
도 6에서 객체 유형(예를 들면, TASK1)에 대한 예시적인 추적 리스트가 도시된다. 여기서, 추적 리스트는 TASK1이 의존(또는 사용)하는 연결의 리스트, 및 TASK1이 의존(또는 사용)하는 변수의 리스트를 제공한다. 각 연결은 소스 식별자를 통하여 식별되는 것이 바람직하며, 각 변수는 이 변수의 이름, 유형, 및/또는 설명을 통하여 식별되는 것이 바람직하다. 추적 리스트는 변수 및/또는 연결을 이용하는 태스크 또는 컴포넌트, 또는 영향 분석을 위하여 모니터링되고 있는 임의의 객체 유형에 응답하여 생성되는 것이 바람직하다.
추적 리스트는 예를 들면, 특정 객체가 이용하는 객체, 특정 객체를 이용하는 객체, 특정 유형의 모든 객체, 특정 유형의 객체를 이용하는 객체, 특정 유형의 객체가 이용하는 객체 등에 대하여, 다양한 방법으로 질의되고 보고될 수 있는 관계형 구조이다. 객체에 대한 변경의 히스토리가 추적 리스트에 의해 보유될 수 있다. 이 정보로부터의 개관적인 보고를 생성하는 것도 고려된다.
본 발명에 따른 다른 예시적인 방법이 도 7의 흐름도로 도시된다. (예를 들면, 도 5에 관련하여 기술된 예시적인 방법을 통하여) 추적 리스트가 생성된 이후에, 단계(700)에서 객체 유형에 대한 변경이 수신될 수 있다. 단계(710)에서 추적 리스트를 참조하여 객체를 이용하면서 등록되는 객체 모델의 다른 객체 유형을 결정함으로써, 객체에 대한 변경이 미치는 영향이 결정된다. 그 다음 단계(720)에서 이 정보는 사용자 또는 애플리케이션에 반환된다.
예를 들면, (도 6에 도시된 예시적인 추적 리스트로부터의) TASK1이 예를 들어, 데이터베이스의 객체 모델에서 삭제되거나 그렇지 않으변 변경되고 있다고 가정한다. 추적 리스트가 액세스되어 영향 받을 것을 결정하고, 이 정보(TASK1에 대한 추적 리스트 연결 및 변수)는 사용자 또는 애플리케이션에 제공된다. 그러므로, 본 발명에 따른, 객체 유형에 대한 이러한 변경의 영향이 탐지되고 보고되거나 그렇지 않다면 보유될 수 있다. 잠재적인 변경은 변경이 이루어지기 이전에 결정 되고 통신되는 것이 바람직하다.
예시적인 실시예에서, IDTSObjectReferenceTracker 인터페이스가 구현된다. 본 명세서에서 기술된 바와 같이, 참조 추적자는 객체 모델의 영향 분석을 위한 확장가능한 매카니즘이다. 객체의 사용자는 이들이 이용하고 있는 객체 및 그 이용 장소를 등록한다. 그 다음, 예를 들어, 사용자가 객체를 삭제하려는 시도를 한다면, 시스템은 이 객체가 다른 어딘가에 사용되지 않는지 검사할 수 있고, 사용되지 않는다면, 이 정보를 사용자에게 디스플레이한다. 이 사용자는 또한 객체 모델의 특정 객체의 사용에 관한 정보를 수신하기 위하여 추적 리스트를 활발하게 질의할 수 있다.
변수 또는 연결을 이용하는 런타임 태스크 또는 파이프라인 컴포넌트는 이들 객체 유형의 추적 리스트를 생성하는 것이 바람직하다. 이 런타임 태스크 또는 파이프라인 컴포넌트는 그 리스트에게 사용 위치 또는 설명을 제공한다. 예를 들면, 하나의 변수를 가지는 태스크는 위치 정보로서 자신의 이름을 이용하고, 이용 설명으로서 변수가 어떤 용도로 이용되는지에 대한 설명을 이용한다.
변수 또는 연결의 서로 다른 이용을 여러번 하게 하는 태스크 또는 컴포넌트는 다수의 분리되는 추적 리스트를 원하는 만큼 생성할 수 있다. 예를 들면, "조건적 분리" 컴포넌트는 출력 상의 표식으로 변수들을 이용하고, 변수들을 이용하는 각 출력 표식에 대하여 분리된 추적 리스트를 생성하는 것이 바람직하다. 이 컴포넌트는 사용 위치로서 컴포넌트 이름을 설정하고, 표식 및 이 표식이 설명에 나타날 위치를 포함할 수 있다. 이 방법은 동일한 변수가 복수의 표식에 이용된다면, 각 사용 위치가 시스템에 의해 추적될 것이다.
파이프라인 컴포넌트는 GetReferenceTracker()와 같은, 기본 클래스 액세스자를 이용하여 인터페이스를 얻는 것이 바람직하다. 인터페이스의 설계는 시스템이 동적으로 확장될 수 있도록 한다. 즉, 다른 프로그래머가 자신들의 고유한 태스크 또는 컴포넌트를 생성하고 동일한 참조 추적자에게 등록할 수 있어, 이들이 영향 분석 모델에 완전히 참여할 수 있도록 한다. 그러면, 제3자의 Task가 변수 및 연결의 자신의 이용을 등록한다면, 사용자가 이들을 삭제하려고 시도할 때 통지되도록 하는 것이 바람직할 것이다.
추적 리스트로부터의 참조는 이 객체가 더 이상 이용되지 않거나 파기되고 있을 때 제거될 수 있다. 예를 들면, 리스트를 소유하는 객체가 파기되었을 때 전체 추적 리스트는 참조 추적자 시스템으로부터 제거될 수 있다. 추적 리스트는 리스트를 소유하는 객체가 리프레시(refresh)되고 새로운 리스트가 생성되고 있을 때도 제거될 수 있다. 예를 들면, "조건 분열" 변환에서, 출력 상의 표식이 변경되면, 그 표식에 대한 추적 리스트가 파기될 수 있고, 새로운 표식이 파싱됨에 따라 새로운 리스트가 생성될 수 있다.
추적 리스트에 대한 메타데이터가 제공될 수 있다. 예를 들면, 사용 위치는 리스트를 소유하는 태스크 또는 컴포넌트의 이름일 수 있다. 사용 설명은 리스트의 객체가 이용되는 방법의 보다 상세한 설명을 제공할 수 있다. 사용 위치 및 사용 설명은 원하는 만큼의 빈도로 갱신되거나 변경될 수 있다고 생각된다.
결론
본 명세서에서 기술된 다양한 시스템, 방법, 및 기법은 하드웨어 또는 소프트웨어로 구현될 수 있고, 적절한 곳에는 이 둘의 조합으로 구현될 수 있다. 그러므로, 본 발명의 방법 및 장치, 또는 특정 양태들이나 이들의 일부는 플로피 디스켓, CD-ROM, 하드 드라이브, 또는 임의의 다른 기기-판독가능 저장 매체와 같은 실질적인 매체에서 실시되는 프로그램 코드(즉, 명령어)의 형태를 취할 수 있는데, 여기에서 프로그램 코드가 컴퓨터와 같은 기기로 로딩되고 이 기기에 의해 실행될 때, 이 기기는 본 발명을 실행하는 장치가 된다. 프로그램가능한 컴퓨터에서 프로그램 코드를 실행하는 경우에, 컴퓨터는 일반적으로 프로세서, (휘발성 및 비휘발성 메모리 및/또는 저장 구성요소를 포함하는) 프로세서가 판독할 수 있는 저장 매체, 적어도 하나의 입력 장치, 및 적어도 하나의 출력 장치를 포함할 수 있다. 컴퓨터 시스템과 통신하기 위한 하나 이상의 프로그램은 고급 프로시저의 또는 객체 지향 프로그래밍 언어로 구현되는 것이 바람직하다. 그러나, 원한다면, 프로그램(들)은 어셈블리 또는 기계어로 구현될 수 있다. 임의의 경우에서, 언어는 컴파일되는 언어 또는 해석되는 언어일 수 있고, 하드웨어 구현과 결합될 수 있다.
본 발명의 방법 및 장치는 전자 배선화 또는 케이블링, 광 섬유 또는 임의의 다른 형태의 전송 등의, 몇몇의 전송 매체를 통해 전송되는 프로그램 코드의 형태로 실시될 수도 있는데, 여기서 프로그램 코드가 수신되고, EPROM, 게이트 어래이(array), 프로그램가능한 논리 장치(PLD), 클라이언트 컴퓨터, 비디오 레코더 등의 기기에 로딩되고 이 기기에 의해 실행될 때, 이 기기는 본 발명을 실행하는 장치가 된다. 범용 프로세서에서 구현될 때, 프로그램 코드는 프로세서와 결합되어 본 발 명의 기능을 수행하도록 동작하는 고유한 장치를 제공한다.
본 발명은 다양한 도면의 바람직한 실시예와 연관지어 기술되었지만, 다른 유사한 실시예가 이용되거나 본 발명을 벗어나지 않고 본 발명의 동일한 기능을 수행하는 상술된 실시예에 변형 및 추가가 이루어질 수 있다고 이해되어야 한다. 그러므로, 본 발명은 임의의 하나의 실시예로 제한되어서는 안되며, 오히려 특허 청구범위에 따르는 범위 및 영역에서 해석된다.
본 발명은 영향 분석에 관한 것이며, 이는 특정 객체가 의존하거나 이용하는 객체 및, 의존되거나 특정 객체를 이용하는 객체를 결정하는 기능을 제공한다. 객체란, 예를 들면, 태스크 및/또는 객체 유형을 칭할 수 있다. 영향 분석은 시스템에서 객체가 다른 객체에 의해서 이용되는 방법 및 장소를 결정하는 것을 용이하게 하여 잠재적으로 대량의 수동 작업을 줄여주기 때문에, 대량이며 복잡한 문서에서의 사용자 생산성을 향상시키는데에는 이 영향 분석이 바람직하다.

Claims (30)

  1. 데이터 변환 서비스를 구현하기 위한 컴퓨팅 시스템으로서,
    중앙 처리 장치; 및
    상기 중앙 처리 장치에 액세스가능한 메모리
    를 포함하고,
    상기 메모리는,
    하나 이상의 소스 중 하나의 소스로부터 데이터를 수신하는 데이터 검색 시스템;
    상기 하나 이상의 소스로부터 하나 이상의 목적지로의 데이터 흐름을 파이프라이닝(pipelining)함으로써 복합 엔드-투-엔드(complex end-to-end) 변환 기능을 구축하는 데이터 변환 파이프라인 - 상기 데이터 변환 파이프라인은,
    복수의 자원 이용 컴포넌트 객체,
    데이터 변환 기능의 전개(development)를 용이하게 하는 그래픽 사용자 인터페이스 - 상기 그래픽 사용자 인터페이스는 그래프에서 일련의 상호연결된 노드들로서 표현된 패키지로서 데이터 변환을 표현하고, 각각의 노드는 상기 패키지의 일부가 될 복수의 자원 이용 컴포넌트 객체 중에서 사용자에 의해 선택된 각자의 자원 이용 컴포넌트 객체에 대응하고, 상기 패키지의 일부가 실행될 때에 상기 패키지는 상기 패키지에 포함된 자원 이용 컴포넌트 객체들의 입력 또는 출력 기능에 따라 데이터를 변환함 -,
    상기 그래프를 트레버싱(traverse)하고 상기 그래프를 데이터 흐름 실행 계획 및 적어도 하나의 작업 아이템을 포함하는 적어도 하나의 작업 리스트로 번역하는 인터프리터(interpreter), 및
    상기 복수의 자원 이용 컴포넌트 객체로부터 인스턴스화된(instantiated) 컴포넌트들의 집합을 포함하는 상기 데이터 흐름 실행 계획에 기초하여 데이터 흐름 실행을 구축(build)하는 파이프라인 엔진
    을 포함함 -;
    파이프라인 컴포넌트에 의해 사용되고 객체 모델에서 동작하는 참조 추적자 - 상기 참조 추적자는,
    자원 이용 컴포넌트 객체와 자원 간의 관계를 결정하고,
    영향 분석(impact analysis)을 위해 추적될 각각의 자원을 리스팅하는 추적 리스트 - 상기 추적 리스트는 상기 자원 이용 컴포넌트 객체에 의해 사용되는 하나 이상의 자원 및 상기 자원 이용 컴포넌트 객체가 의존하는 하나 이상의 자원을 포함함 - 를 파퓰레이팅(populating)하고,
    상기 추적 리스트를 파퓰레이팅한 후에 상기 자원 이용 컴포넌트 객체가 추가적인 자원에 대한 의존성을 상정했다는 통지를 상기 자원 이용 컴포넌트 객체로부터 수신하고,
    상기 자원 이용 컴포넌트 객체로부터 상기 통지를 수신하는 것에 응답하여 추가적인 자원에 대한 상기 자원이용 컴포넌트 객체의 의존성을 명시하는 새로운 엔트리를 상기 추적 리스트에 추가함 -;
    하나 이상의 자원 이용 컴포넌트 객체 상의 자원을 변경하라는 명령문(statement)의 영향을 나타내는 상기 영향 분석을 결정하기 위해 상기 중앙 처리 장치에 의해 실행가능한 프로그램 모듈; 및
    데이터를 저장하기 위한 목적 데이터 저장 시스템 - 상기 목적 데이터 저장 시스템은 상기 영향 분석을 저장함 -
    을 포함하는 컴퓨팅 시스템.
  2. 제1항에 있어서,
    상기 자원 이용 컴포넌트 객체는 태스크이고, 상기 자원은 객체 유형인 컴퓨팅 시스템.
  3. 제2항에 있어서,
    상기 객체 유형은 판독 액세스 변수 및 판독 또는 기록 액세스 변수 중 하나의 변수인 컴퓨팅 시스템.
  4. 제1항에 있어서,
    상기 추적 리스트는 객체들 간의 함축적인 관계들을 노출하는 컴퓨팅 시스템.
  5. 데이터 변환 서비스에서 영향 분석을 제공하는 방법으로서,
    메모리 및 중앙 처리기를 포함하는 컴퓨팅 시스템에서 하나 이상의 소스 중 하나의 소스로부터 데이터를 수신하는 단계 - 상기 컴퓨팅 시스템은 상기 데이터 변환 서비스를 실행함 -;
    상기 하나 이상의 소스로부터 하나 이상의 목적지로의 데이터 흐름을 파이프라이닝(pipelining)하는 단계 - 상기 파이프라이닝하는 단계는,
    사용자로부터, 상기 컴퓨팅 시스템에 의해 제공된 그래픽 사용자 인터페이스를 통해, 패키지에의 포함을 위해 하나 이상의 자원 이용 컴포넌트 객체의 선택을 수신하는 단계 - 상기 하나 이상의 자원 이용 컴포넌트 객체가 실행될 때에 상기 패키지는 상기 패키지에 포함된 상기 하나 이상의 자원 이용 컴포넌트 객체의 입력 또는 출력 기능에 따라 데이터를 변환함 -,
    상기 컴퓨팅 시스템의 모니터를 통해, 상기 선택을 수신하는 단계에 응답하여, 상기 패키지에 따라 데이터 변환의 그래픽 표현을 디스플레이하는 단계 - 상기 패키지는 그래프에서 일련의 상호연결된 노드들로서 표현되고, 각각의 노드는 상기 패키지의 일부가 되도록 상기 사용자에 의해 선택된 각자의 자원 이용 컴포넌트 객체에 대응함 -,
    상기 컴퓨팅 시스템에서 상기 그래프를 트레버싱(traversing)하고 상기 그래프를 데이터 흐름 실행 계획 및 적어도 하나의 작업 아이템을 포함하는 적어도 하나의 작업 리스트로 번역하는 단계 -, 및
    상기 하나 이상의 자원 이용 컴포넌트 객체로부터 인스턴스화된(instantiated) 컴포넌트들의 집합을 포함하는 상기 데이터 흐름 실행 계획에 기초하여 상기 컴퓨팅 시스템에서 데이터 흐름 실행을 구축(building)하는 단계
    를 포함함 -,
    상기 컴퓨팅 시스템에서 자원 이용 컴포넌트 객체와 연관된 자원을 변경하라는 명령문(statement)을 수신하는 단계;
    상기 컴퓨팅 시스템에서, 복수의 추적 리스트를 생성하는 단계 - 각각의 추적 리스트는 영향 분석을 위해 추적될 각각의 자원을 리스팅하고 상기 자원 이용 컴포넌트 객체와 연관된 복수의 자원의 리스트를 포함하고, 상기 복수의 자원은 하나 이상의 변수를 포함하며, 각각의 추적 리스트는 상기 자원 이용 컴포넌트 객체에 의한 지정된 자원의 상이한 사용에 관련됨 -;
    상기 컴퓨팅 시스템에서, 상기 자원 이용 컴포넌트 객체에서의 변경의 명령문의 영향을 나타내는 영향 분석을 결정하는 단계 - 상기 영향 분석은 상기 자원 이용 컴포넌트 객체가 의존하거나 사용하는 자원 이용 컴포넌트들 및 자원들을 결정함 -; 및
    상기 영향 분석을 저장하고 상기 영향 분석을 상기 사용자에게 제공하는 단계
    를 포함하는 방법.
  6. 제5항에 있어서,
    상기 복수의 추적 리스트를 생성하는 단계, 사용자로부터 수신하는 단계, 및 상기 영향 분석을 결정하는 단계는 객체 모델 내에서 일어나는 방법.
  7. 제5항에 있어서,
    상기 자원은 객체 유형인 방법.
  8. 제7항에 있어서,
    상기 객체 유형은 판독 액세스 변수 및 판독 또는 기록 액세스 변수 중 하나의 변수인 방법.
  9. 제5항에 있어서,
    상기 추적 리스트는 객체들 간의 함축적인 관계들을 노출하는 방법.
  10. 데이터 변환 서비스에서 데이터 변환의 영향을 평가하기 위한 방법을 수행하기 위해 중앙 처리기에 의해 실행되는 컴퓨터 실행가능 명령어들을 포함하는 컴퓨터 판독가능 저장 매체로서,
    상기 방법은,
    하나 이상의 소스 중 하나의 소스로부터 데이터를 수신하는 단계;
    상기 하나 이상의 소스로부터 하나 이상의 목적지로의 데이터 흐름을 파이프라이닝(pipelining)하는 단계 - 상기 파이프라이닝하는 단계는,
    사용자로부터, 그래픽 사용자 인터페이스를 통해, 패키지에의 포함을 위해 하나 이상의 자원 이용 컴포넌트 객체의 선택을 수신하는 단계 - 상기 하나 이상의 자원 이용 컴포넌트가 실행될 때에 상기 패키지는 상기 패키지에 포함된 상기 하나 이상의 자원 이용 컴포넌트 객체의 입력 또는 출력 기능에 따라 데이터를 변환함 -,
    하드웨어 모니터에 의해, 상기 선택을 수신하는 단계에 응답하여, 상기 패키지에 따라 데이터 변환의 그래픽 표현을 디스플레이하는 단계 - 상기 패키지는 그래프에서 일련의 상호연결된 노드들로서 표현되고, 각각의 노드는 상기 패키지의 일부가 되도록 상기 사용자에 의해 선택된 각자의 자원 이용 컴포넌트 객체에 대응함 -,
    상기 그래프를 트레버싱(traverse)하고 상기 그래프를 데이터 흐름 실행 계획 및 적어도 하나의 작업 아이템을 포함하는 적어도 하나의 작업 리스트로 번역하는 단계, 및
    상기 하나 이상의 자원 이용 컴포넌트 객체로부터 인스턴스화된(instantiated) 컴포넌트들의 집합을 포함하는 상기 데이터 흐름 실행 계획에 기초하여 데이터 흐름 실행을 구축하는 단계
    를 포함함 -;
    자원 이용 컴포넌트 객체와 연관된 자원을 변경하라는 명령문을 수신하는 단계;
    복수의 추적 리스트를 생성하는 단계 - 각각의 추적 리스트는 영향 분석을 위해 추적될 각각의 자원을 리스팅하고 자원 이용 컴포넌트 객체와 연관된 복수의 자원의 리스트를 포함하고, 상기 복수의 자원은 하나 이상의 변수를 포함하며, 각각의 추적 리스트는 상기 자원 이용 컴포넌트 객체에 의한 지정된 자원의 상이한 사용에 관련됨 -;
    상기 자원 이용 컴포넌트 객체에서의 변경의 명령문의 영향을 나타내는 영향 분석을 결정하는 단계 - 상기 영향 분석은 상기 자원 이용 컴포넌트 객체가 의존하거나 사용하는 자원 이용 컴포넌트들 및 자원들을 결정함 -; 및
    상기 영향 분석을 저장하고 상기 영향 분석을 상기 사용자에게 제공하는 단계
    를 포함하는, 컴퓨터 판독가능 저장 매체.
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
KR1020050037984A 2004-06-23 2005-05-06 객체 모델의 영향 분석 KR101083488B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/874,921 US7536406B2 (en) 2004-06-23 2004-06-23 Impact analysis in an object model
US10/874,921 2004-06-23

Publications (2)

Publication Number Publication Date
KR20060045924A KR20060045924A (ko) 2006-05-17
KR101083488B1 true KR101083488B1 (ko) 2011-11-17

Family

ID=35507338

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050037984A KR101083488B1 (ko) 2004-06-23 2005-05-06 객체 모델의 영향 분석

Country Status (5)

Country Link
US (1) US7536406B2 (ko)
EP (1) EP1637993A3 (ko)
JP (1) JP5710851B2 (ko)
KR (1) KR101083488B1 (ko)
CN (1) CN1713179B (ko)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8214799B2 (en) * 2004-07-08 2012-07-03 Microsoft Corporation Providing information to an isolated hosted object via system-created variable objects
US20060089943A1 (en) * 2004-10-25 2006-04-27 Perot Systems Corporation Computer system and process for aiding in an outsourcing environment
US7958486B2 (en) * 2005-04-22 2011-06-07 Sap Ag Methods and systems for data-focused debugging and tracing capabilities
US20060293934A1 (en) * 2005-04-22 2006-12-28 Igor Tsyganskiy Methods and systems for providing an integrated business application configuration environment
US8539003B2 (en) * 2005-04-22 2013-09-17 Sap Ag Systems and methods for identifying problems of a business application in a customer support system
US20060242197A1 (en) * 2005-04-22 2006-10-26 Igor Tsyganskiy Methods of transforming application layer structure as objects
US20060242194A1 (en) * 2005-04-22 2006-10-26 Igor Tsyganskiy Systems and methods for modeling and manipulating a table-driven business application in an object-oriented environment
US8639652B2 (en) * 2005-12-14 2014-01-28 SAP France S.A. Apparatus and method for creating portable ETL jobs
CN100512150C (zh) * 2006-07-31 2009-07-08 华为技术有限公司 业务跟踪控制方法及业务跟踪系统与相关跟踪装置
EP2109979B1 (fr) * 2006-12-29 2018-10-31 Orange Procédé et dispositif de gestion de connexions dans un réseau de télécommunications
US20080196012A1 (en) * 2007-02-12 2008-08-14 Panaya Ltd. System and methods for static analysis of large computer programs and for presenting the results of the analysis to a user of a computer program
US20090165015A1 (en) * 2007-12-21 2009-06-25 Schlumberger Technology Corporation Managing dependencies among applications using satisfiability engine
US8479149B2 (en) * 2008-04-04 2013-07-02 Infosys Limited Concept-oriented software engineering system and method for identifying, extracting, organizing, inferring and querying software system facts
US8209216B2 (en) * 2008-10-31 2012-06-26 Demandtec, Inc. Method and apparatus for configurable model-independent decomposition of a business metric
CA2744881C (en) 2008-12-02 2020-03-10 Ab Initio Technology Llc Mapping instances of a dataset within a data management system
US8862563B2 (en) 2010-05-12 2014-10-14 Microsoft Corporation Getting dependency metadata using statement execution plans
KR101911793B1 (ko) * 2010-10-25 2018-10-25 아브 이니티오 테크놀로지 엘엘시 컴퓨터 프로그램을 나타내는 데이터플로우 그래프 내의 데이터세트 객체의 관리
AU2012203333A1 (en) 2011-06-15 2013-01-10 Agile Software Pty Limited Method and apparatus for testing data warehouses
KR101146293B1 (ko) * 2011-07-06 2012-05-21 (주)큐브젠소프트 어플리케이션 소스자원의 상호 관련 정보를 효과적으로 추출하는 소스자원 파싱 방법
US10489360B2 (en) 2012-10-17 2019-11-26 Ab Initio Technology Llc Specifying and applying rules to data
US9239854B2 (en) 2013-03-15 2016-01-19 Sas Institute Inc. Multi-domain impact analysis using object relationships
JP6636009B2 (ja) 2014-07-18 2020-01-29 アビニシオ テクノロジー エルエルシー 系統情報の管理
US9626393B2 (en) 2014-09-10 2017-04-18 Ab Initio Technology Llc Conditional validation rules
US10176234B2 (en) * 2014-11-05 2019-01-08 Ab Initio Technology Llc Impact analysis
US10135913B2 (en) * 2015-06-17 2018-11-20 Tata Consultancy Services Limited Impact analysis system and method
US9639411B2 (en) 2015-07-24 2017-05-02 Bank Of America Corporation Impact notification system
US11347482B2 (en) * 2016-08-22 2022-05-31 Oracle International Corporation System and method for dynamic lineage tracking, reconstruction, and lifecycle management
MX2023008982A (es) 2021-01-31 2023-12-04 Ab Initio Technology Llc Sistema de procesamiento de datos con manipulacion de grupos de conjuntos de datos logicos.
WO2023180301A1 (en) 2022-03-25 2023-09-28 Lanxess Deutschland Gmbh Data transformation pipelines

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030120665A1 (en) 2001-05-25 2003-06-26 Joshua Fox Run-time architecture for enterprise integration with transformation generation
US20050015377A1 (en) 2002-11-12 2005-01-20 Oracle International Corporation Method and system for metadata reconciliation in a data warehouse

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5898872A (en) * 1997-09-19 1999-04-27 Tominy, Inc. Software reconfiguration engine
US6493720B1 (en) * 1998-01-26 2002-12-10 International Business Machines Corporation Method and system for synchronization of metadata in an information catalog
US6427230B1 (en) * 1998-11-09 2002-07-30 Unisys Corporation System and method for defining and managing reusable groups software constructs within an object management system
US6397204B1 (en) 1999-06-25 2002-05-28 International Business Machines Corporation Method, system, and program for determining the join ordering of tables in a join query
US7260777B2 (en) * 2001-08-17 2007-08-21 Desknet Inc. Apparatus, method and system for transforming data

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030120665A1 (en) 2001-05-25 2003-06-26 Joshua Fox Run-time architecture for enterprise integration with transformation generation
US20050015377A1 (en) 2002-11-12 2005-01-20 Oracle International Corporation Method and system for metadata reconciliation in a data warehouse

Also Published As

Publication number Publication date
JP5710851B2 (ja) 2015-04-30
CN1713179A (zh) 2005-12-28
KR20060045924A (ko) 2006-05-17
US20050289167A1 (en) 2005-12-29
EP1637993A2 (en) 2006-03-22
US7536406B2 (en) 2009-05-19
EP1637993A3 (en) 2007-12-12
CN1713179B (zh) 2010-09-08
JP2006012146A (ja) 2006-01-12

Similar Documents

Publication Publication Date Title
KR101083488B1 (ko) 객체 모델의 영향 분석
US7844570B2 (en) Database generation systems and methods
KR101224670B1 (ko) 데이터 관리를 용이하게 해주는 시스템 및 방법
US9684699B2 (en) System to convert semantic layer metadata to support database conversion
US8005818B2 (en) Apparatus and method for maintaining metadata version awareness during set evaluation for OLAP hierarchies
US8190555B2 (en) Method and system for collecting and distributing user-created content within a data-warehouse-based computational system
US20080288822A1 (en) Exhaustive security fuzzing for transact structured query language
US20050256825A1 (en) Viewing annotations across multiple applications
EP1385100A2 (en) Mapping a class hierarchy to a relational database system
US7792851B2 (en) Mechanism for defining queries in terms of data objects
WO2010042238A1 (en) System and method for data warehousing and analytics on a distributed file system
US9372876B2 (en) Metadata driven reporting and editing of databases
US8667027B2 (en) Directed graph transitive closure
US7840603B2 (en) Method and apparatus for database change management
EP4150484A1 (en) Efficient indexing for querying arrays in databases
GB2451240A (en) Spatial data validation system utilising rule tree
US7130856B2 (en) Map and data location provider
Wojciechowski E-ETL: Framework for managing evolving ETL processes
US8136087B2 (en) In-line processing of standardized text values
Beheshti et al. A query language for summarizing and analyzing business process data
US20130018898A1 (en) Tracking queries and retrieved results
JP2004192657A (ja) 情報検索システム、情報検索方法および情報検索用プログラムを記録した記録媒体
Schuchardt et al. Applying content management to automated provenance capture
US20240184793A1 (en) Deep mining of enterprise data sources
Beach A Methodology to Identify Alternative Suitable NoSQL Data Models via Observation of Relational Database Interactions

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: 20141017

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20151016

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20161019

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20171018

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20181018

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20191016

Year of fee payment: 9