KR20140006862A - 흐름 분석 계측 - Google Patents

흐름 분석 계측 Download PDF

Info

Publication number
KR20140006862A
KR20140006862A KR1020137020377A KR20137020377A KR20140006862A KR 20140006862 A KR20140006862 A KR 20140006862A KR 1020137020377 A KR1020137020377 A KR 1020137020377A KR 20137020377 A KR20137020377 A KR 20137020377A KR 20140006862 A KR20140006862 A KR 20140006862A
Authority
KR
South Korea
Prior art keywords
data
flow
flow unit
data record
record
Prior art date
Application number
KR1020137020377A
Other languages
English (en)
Other versions
KR101894925B1 (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 KR20140006862A publication Critical patent/KR20140006862A/ko
Application granted granted Critical
Publication of KR101894925B1 publication Critical patent/KR101894925B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3624Software debugging by performing operations on the source code, e.g. via a compiler
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time

Abstract

본 발명은 흐름 분석을 위한, 컴퓨터 저장 매체 상에 인코딩된 컴퓨터 프로그램을 포함하는, 방법, 시스템, 및 장치이다. 일 태양에서, 본 방법은 상기 데이터 레코드가 건너온 경로의 세그먼트를 식별하는 각각의 흐름 유닛을 데이터 레코드에 추가하거나 데이터 레코드로부터 제거하는 콤포넌트를 상기 데이터 흐름 그래프에 추가하는 단계를 포함하는, 하나 이상의 입구점과 하나 이상의 출구점을 연결하는 복수의 경로를 포함하는 데이터 흐름 그래프를 수정하는 단계(206)를 포함한다. 또한 본 방법은, 수정된 상기 데이터 흐름 그래프를 이용하여 복수의 데이터 레코드를 처리함으로써 획득된 흐름 유닛(flow unit)에 기초하여 실행 경로를 식별하는 단계(222)를 포함한다. 또한 본 방법은, 상기 복수의 데이터 레코드의 서브 세트(subset)를 판정하는 단계(230)를 포함하며, 여기서 상기 서브 세트는, 실행 경로의 선택된 세트를 나타내는 것이다.

Description

흐름 분석 계측{FLOW ANALYSIS INSTRUMENTATION}
본 출원은, 2011년 1월 7일에 출원된 미국 임시 특허 출원 제61/430,625호 "Flow Analysis Instrumentation"에 대한 우선권을 주장하며, 해당 출원의 모든 내용은 참조에 의해 본 명세서에 병합된다.
본 발명은 흐름 분석(flow analysis)에 관한 것이다.
데이터 흐름 그래프(dataflow graph)는 데이터 상에서 동작(operation)들을 수행하기 위해 이용된다. 데이터 흐름 그래프에는 데이터가 제공된다. 데이터 흐름 그래프는 데이터 상에서 연속된 일련의 동작들을 수행한다. 몇몇 시나리오에서는, 데이터 상에서 수행되는 연속된 일련의 동작들이 데이터 레코드에서 데이터 레코드까지 다양하게 변형될 수 있다.
데이터 흐름 그래프를 시험하기 위해, 데이터 레코드의 작은 세트가 이용된다; 그러나, 선택된 데이터 레코드의 세트가 제작 환경에서의 데이터 레코드들을 대표할 수는 없기 때문에, 데이터 레코드의 세트를 선택하는 것은 어려울 수 있다.
본 명세서는 흐름 분석에 관한 기술들을 설명한다.
대체로, 본 명세서에서 설명되는 발명 주제의 일 유형은, 적어도 하나의 입구점과 적어도 하나의 출구점을 연결하는 복수의 경로들을 포함하는 데이터 흐름 그래프를 수정하는 동작들을 포함하는 방법들로 실시될 수 있다. 데이터 흐름 그래프를 수정하는 단계에는, 데이터 레코드에, 데이터 레코드가 건너온 경로의 세그먼트(segment)를 식별하는 흐름 유닛(flow unit)을 추가하고 데이터 레코드로부터 그러한 흐름 유닛을 제거하는 콤포넌트(component)들을 데이터 흐름 그래프에 추가하는 단계가 포함된다. 또한 본 방법은, 수정된 데이터 흐름 그래프를 이용하여 복수의 데이터 레코드를 처리함으로써 획득된 흐름 유닛에 기초하여 실행 경로(execution path)를 식별하는 동작들을 포함한다. 또한 본 방법은, 실행 경로의 선택된 세트를 나타내는, 복수의 데이터 레코드의 서브 세트(subset)를 판정하는 동작들을 포함한다. 이러한 실시예 및 다른 실시예들은 다음의 특징들 중 하나 이상을 선택적으로 포함할 수 있다. 실행 경로를 식별하는 단계에는 데이터 레코드에 추가된 흐름 유닛의 세트를 판정하는 단계가 포함될 수 있다. 또한 본 특징은, 복수의 경로 중 실행 경로에 포함되지 않은 미사용 경로를 식별하는 단계를 포함할 수 있다. 또한 본 특징은, 데이터 흐름 그래프를 이용하여 복수의 데이터 레코드의 서브 세트를 처리하는 단계를 포함할 수 있다. 복수의 데이터 레코드를 처리하는 단계에는 복수의 데이터 레코드 중의 데이터 레코드에 제1 흐름 유닛을 추가하는 단계가 포함될 수 있다. 복수의 데이터 레코드를 처리하는 단계에는 데이터 레코드에 제2 흐름 유닛을 추가하는 단계 및 제2 흐름 유닛에 제1 흐름 유닛을 추가하는 단계가 포함될 수 있다. 실행 경로를 식별하는 단계에는, 수정된 데이터 흐름 그래프를 이용하여 처리된 복수의 데이터 레코드로부터 흐름 유닛을 제거하는 단계 및 각 데이터 레코드에 대한 실행 경로를 판정하기 위해, 제거된 흐름 유닛을 분석하는 단계가 포함될 수 있다. 복수의 데이터 레코드의 서브 세트를 판정하는 단계에는 선택된 하나의 실행 경로를 가지는 데이터 레코드를 식별하는 단계가 포함될 수 있다.
본 명세서에서 설명되는 발명 주제에 대한 특정의 실시예는 이하의 장점들 중 하나 이상을 실현하기 위해 구현될 수 있다. 데이터 흐름 그래프의 디버깅(debugging)이 간략하게 될 수 있다. 데이터 흐름 그래프를 충분히 활용하는, 데이터 레코드의 샘플 세트가 선택될 수 있다. 개개의 기록이 그래프를 통해 흐르기 때문에, 개개의 기록이 추적될 수 있다. 본 명세서에서 설명되는 발명 주제의 하나 이상의 실시예의 상세한 내용은, 첨부된 도면과 이하의 설명으로부터 명확하게 정의된다. 본 발명 주제에 대한 다른 특징들, 태양들, 및 장점들은 상세한 설명, 도면, 및 청구범위를 통해 명확하게 얻어질 것이다.
도 1은 데이터 흐름 그래프를 통한 실행 경로를 도시한다.
도 2는 데이터 레코드의 기록 계통이 판정될 수 있는 예시적인 환경을 도시한다.
도 3은 흐름 유닛을 이용하여 수정된 데이터 흐름 그래프를 통한 기록 추적의 일례를 도시한다.
도 4는 흐름 유닛 흡수의 일례를 도시한다.
도 5는 데이터 흐름 그래프를 통해 경로를 추적하기 위한, 흐름 유닛 이용의 일례를 도시한다.
도 6은 출력 데이터 레코드의 제작을 야기하는 입력 데이터 레코드 식별의 일례를 도시한다.
도 7은 데이터 레코드에 흐름 유닛을 추가하기 위한, 데이터 흐름 그래프의 데이터 소스 콤포넌트 수정의 일례를 도시한다.
도 8은 데이터 레코드에 흐름 유닛을 추가하기 위한, 다수의 출력 포트를 가지는 콤포넌트 수정의 일례를 도시한다.
도 9는 흐름 유닛을 처리하기 위한, 데이터 싱크 수정의 일례를 도시한다.
도 10은 다수의 데이터 흐름 그래프를 통한 흐름 유닛 이용의 일례를 도시한다.
도 11은 흐름 분석을 위한 예시적인 프로세스를 도시한다.
각 도면에서 동일한 참조 번호와 참조 명칭은 동일한 구성을 지시한다.
일반적으로, 흐름 분석은 데이터 레코드의 세트 내에서의 값의 분배, 데이터 레코드 사이의 관계, 및 출력 기록을 생성하도록 데이터 레코드가 처리되는 방법에 대한 더욱 완전한 이해를 가능하게 한다.
도 1은 데이터 흐름 그래프를 통한 실행 경로를 도시한다. 데이터 흐름 그래프(102)는, 데이터 레코드가 입구점(104)(즉, 데이터 소스)으로부터 출구점(106, 112)(즉, 데이터 싱크)까지 처리될 수 있는 다수의 경로, 예컨대 경로(108) 및 경로(110)를 포함한다. 일례에서, 경로(108)는 입구점(104)으로부터 출구점(106)으로 흐르게 된다. 경로(110)는 동일한 입구점(104)에서 시작되나, 출구점(112)으로 갈라진다.
대체적으로, 데이터 흐름 그래프는 콤포넌트(component)와, 콤포넌트 사이에서 데이터 레코드의 흐름을 식별하는 링크(link)로 구성된다. 콤포넌트는 데이터 소스, 데이터 싱크, 그리고 각종 처리를 위한 콤포넌트를 포함한다. 데이터 소스는 데이터 흐름 그래프에 입구점을 제공하고, 그래프에 의해 처리되는 데이터 레코드의 세트를 판독할 수 있다. 예를 들어, 데이터 소스는 관계형 데이터베이스(relational database)의 테이블이나 파일 시스템 상의 파일을 포함할 수 있다. 데이터 소스는 테이블 또는 파일로부터 기록을 판독하고 데이터 레코드를 생성한다. 데이터 싱크는 데이터 흐름 그래프에 출구점을 제공하고, 데이터 흐름 그래프가 완전하게 처리되면, 출력 기록을 저장할 수 있다. 데이터 소스와 데이터 싱크는, 예컨대 관계형 데이터베이스 테이블 또는 파일 시스템 상에 저장된 파일을 포함할 수 있다. 데이터 흐름 그래프는 컴퓨터(112) 또는 다른 유형의 컴퓨터 장치 상에서 실행될 수 있다. 다른 실시예들에서, 데이터 흐름 그래프의 실행이, 다수의 연산 장치 사이에서 분산될 수 있다.
몇몇 실시예에서는, 콤포넌트는 입력 포트와 출력 포트를 포함할 수 있다. 제1 콤포넌트의 출력 포트와 제2 콤포넌트의 입력 포트는 링크로 연결된다. 일부 콤포넌트는 다수의 입력 포트와 출력 포트를 가질 수 있다. 콤포넌트의 시퀀스(sequence)와, 데이터 레코드가 입구점으로부터 출구점까지 통과 가능한 링크는 경로(즉, 경로(108), 경로(110))로서 지칭된다.
흐름 분석은, 하나 이상의 데이터 흐름 그래프를 통해 데이터 레코드의 흐름을 추적하는 프로세스이다. 흐름 분석은, 디버깅 영역, 테스팅(testing) 영역, 및 프로파일링(profiling) 영역에서의 새로운 어플리케이션의 세트를 가능하게 한다. 디버깅에 있어서 흐름 분석은, 그래프에 의해 처리됨으로써, 개개의 데이터 레코드를 추적 가능하게 한다. 사용자는 하나 이상의 기록을 마킹(mark)하거나, 중단점(breakpoint)에서 중지할 수 있으며, 도식화된 개발 환경은, 특정된 기록에 종속하는 모든 기록과 특정된 기록이 종속하는 모든 기록을 식별하는 것을 포함하여, 그래프를 통해 특정된 기록의 경로를 추적한다. 개발자는 바람직하지 않은 결과를 노출시킬 수 있는 출력 데이터 레코드를 식별할 수 있고, 데이터 레코드를 생성하기 위해 이용되는 입력 데이터 레코드를 확인할 수 있으며, 데이터 흐름 그래프가 예상대로 동작하지 않을 수 있는 지점을 판정하기 위해 입력 데이터 레코드를 추적할 수 있다.
테스팅에 있어서 흐름 분석은, 사용자가, 특정 경로를 통해 건너는 기록만을 포함하는 입력 데이터의 서브 세트를 생성하도록 할 수 있다. 데이터 흐름 그래프를 통해 특정 경로에 기초한 입력 데이터를 선택함으로써, 처리된 데이터 레코드의 참조 무결성(referential integrity)을 보존할 수 있다.
프로파일링에 있어서 흐름 분석은, 사용자가, 기록을 그룹으로 분류하는 그래프를 생성하고, 이러한 분류의 기록이 종속하는 입력 데이터 세트로부터 기록의 서브 세트를 생성할 수 있도록 한다. 예를 들어, 그래프는 거주지(주소)에 따라 입력 고객(customer)과 입력 거래 내역(transaction)을 그룹화하여 카테고리를 생성하고, 어떤 연산된 출력 기록이 "부적합한" 싱크 대비 "적합한" 출력 데이터 싱크에 포함되는지에 따라 고객 기록과 거래 정보 기록을 분리할 수 있다.
도 2는 데이터 레코드의 계통이 판정될 수 있는 예시적인 환경을 도시한다. 컴퓨터, 예컨대 도 1의 컴퓨터(112) 상에서 실행되는 예시적인 시스템(200)은 데이터 흐름 그래프 저장소(202)를 포함한다. 도시된 프로세스 화살표(204)에 의해 표현된 것처럼, 데이터 흐름 그래프 계측 엔진(206)(dataflow graph instrumentation engine)은 데이터 흐름 그래프 저장소(202)로부터 데이터 흐름 그래프를 획득한다. 데이터 흐름 그래프 계측 엔진(206)은, 데이터 흐름 그래프가, 수정된 그래프에 의해 처리되는 데이터 레코드의 기록 수준 계통(record level lineage)을 추적할 수 있도록 하기 위해, 이하에서 설명되는 것처럼 데이터 흐름 그래프를 수정한다. 데이터 흐름 그래프 계측 엔진(206)은, 예컨대 컴퓨터 상에서 실행되는 프로세스일 수 있다.
몇몇 실시예에서는, 데이터 흐름 그래프 계측 엔진(206)은, 데이터 흐름 그래프를 통한 데이터 레코드의 흐름이 추적 가능하도록, 데이터 흐름 그래프에 처리 콤포넌트(processing component)를 추가한다. 예를 들면, 추가의 처리 콤포넌트는 각 데이터 레코드에 추가 필드를 추가할 수 있다. 이러한 추가 필드는 흐름 유닛으로 지칭될 수 있다. 몇 가지 실시예에서, 각 흐름 유닛은 데이터 흐름 그래프를 통해 경로의 세그먼트를 식별한다. 흐름 유닛은, 데이터 레코드로부터 제거되고, 이후의 분석을 위해 저장될 수 있다.
몇몇 실시예에서는, 데이터 흐름 그래프 계측 엔진은, 데이터 흐름 그래프를 입력으로서 수용하고 수정된 데이터 흐름 그래프를 생성하는 계측 데이터 흐름 그래프(instrumentation dataflow graph)를 그 자체에 포함할 수 있다.
프로세스 화살표(208)에 의해 표현된 것처럼, 수정된 데이터 흐름 그래프는, 컴퓨터 또는 다수의 컴퓨터 상에서 실행되는 하나 이상의 프로세스가 될 수 있는 데이터 흐름 그래프 런-타임 환경(210)(dataflow graph run-time environment)에 제공될 수 있다. 프로세스 화살표(212)에 의해 표현된 것처럼, 데이터 소스(214)로부터의 데이터 레코드는 데이터 흐름 그래프 런-타임 환경(210)에 제공된다. 데이터 흐름 그래프 런-타임 환경(210)은 수정된 데이터 흐름 그래프를 이용하여 데이터 레코드를 처리한다.
프로세스 화살표(216)에 의해 표현된 것처럼, 수정된 데이터 흐름 그래프는 흐름 유닛 저장소(218)에 흐름 유닛을 저장한다. 흐름 유닛 저장소(218)는, 예컨대 관계형 데이터베이스 또는 파일 시스템 상에 저장된 파일일 수 있다.
프로세스 화살표(220)에 의해 표현된 것처럼, 흐름 유닛 분석 엔진(222)(flow unit analysis engine)은 저장된 흐름 유닛을 분석한다. 데이터 흐름 그래프에 의해 처리되기 때문에, 흐름 유닛 분석 엔진(222)은 저장된 흐름 유닛으로부터 각 데이터 레코드가 이동되는 다양한 경로를 판정할 수 있다. 흐름 유닛 분석 엔진(222)은, 데이터 흐름 그래프를 통해 적어도 하나의 데이터 레코드에 의해 이동되는 모든 상이한 경로를 판정할 수 있다.
또한, 흐름 유닛 분석 엔진(222)은 기록 종속성(record dependency)을 판정할 수 있다. 몇몇 시나리오에서, 출력 기록은 다수의 입력 기록에 종속한다. 예를 들면, 데이터 흐름 그래프는 한 해에 걸친 고객의 주문량의 전체 값을 계산할 수 있다. 각각의 주문은 별개의 입력 기록을 나타내고, 각각의 기록의 총합은 단일의 출력 기록을 생성한다. 흐름 유닛 분석 엔진(222)은, 출력 기록의 생성에서 이용되는 각각의 입력 데이터 레코드와 모든 중개 데이터 레코드를 판정할 수 있다.
프로세스 화살표(224)에 의해 표현된 것처럼, 흐름 유닛 분석 엔진(222)은 수정된 데이터 흐름에 의해 생성된 데이터 레코드를 설명하는 데이터 프로파일(226)을 저장할 수 있다.
프로세스 화살표(228)에 의해 표현된 것처럼, 흐름 유닛 분석 엔진(222)은, 또한 데이터 소스(214)로부터 데이터 레코드를 수용할 수 있다. 흐름 유닛 분석 엔진(222)은, 데이터 레코드의 대표 샘플을 판정하기 위해, 흐름 유닛을 이용할 수 있다. 몇몇 실시예에서는, 대표 샘플이 판정되어, 적어도 하나의 샘플 데이터 레코드와 그 이전의 처리된 기록이 데이터 흐름 그래프에서 각각의 상이한 경로를 따르게 된다. 몇몇 실시예에서는 대표 샘플이 판정되어, 서브 세트 내의 각각의 데이터 레코드가 동일한 경로를 따르게 된다.
흐름 유닛 분석 엔진(222)은 데이터 레코드의 서브 세트를 판정할 수 있고, 데이터 흐름 그래프를 통한 기록의 서브 세트의 흐름 커버리지(flow coverage)는, 데이터 소스(214)로부터의 데이터 레코드의 완전한 세트를 처리하는 경우에 데이터 흐름 그래프에 의해 생성된 흐름 커버리지와 비교할 때, 변함없이 일정하게 유지된다. 예를 들어, 데이터 흐름 그래프는 우편 번호(zip code)에 따라 거래 내역 기록의 값을 총합하는 콤포넌트를 포함할 수 있다. 특정한 우편 번호를 가지는 기록을 선택하는 경우, 흐름 유닛 분석 엔진(222)은 그러한 우편 번호에 대응하는 모든 데이터 레코드를 선택한다. 따라서, 그러한 우편 번호에 대해 총합된 값은, 데이터 레코드의 서브 세트가 처리되는지 또는 데이터 소스(214)의 모든 데이터 레코드가 처리되는지의 여부와 관계없이 일정하게 유지된다. 몇몇 실시예에서는, 흐름 유닛 분석 엔진(222)은, 데이터 흐름 그래프를 통해 흐름 커버리지의 분산을 유지하는 데이터의 서브 세트를 판정할 수 있다. 예를 들어, 데이터 레코드의 완전한 세트를 처리하는 도중에 10 퍼센티지의 고객이 거부된다면, 데이터 레코드의 서브 세트를 처리하는 경우에는, 10 퍼센티지의 고객이 거부될 것이다.
프로세스 화살표(230)에 의해 표현된 것처럼, 흐름 유닛 분석 엔진(222)은 데이터 레코드의 서브 세트를 샘플 데이터 레코드 저장소(232)에 저장할 수 있다.
일 실시예에서는, 계측된 데이터 흐름 그래프의 실행이 중지된다. 중지된 상태에서는, 사용자가 데이터 흐름 그래프의 콤포넌트를 첫 번째로 선택함으로써, 하나의 콤포넌트 내의 데이터 레코드가 선택된다. 시스템(200)은 사용자에게 중지된 상태에서 콤포넌트 내에 머무는 기록의 세트를 보여주며, 사용자는 관찰을 위해 두 번째로 기록을 선택할 수 있다. 선택된 기록과 연관된 흐름 유닛 데이터를 이용하여, 시스템(200)은 모든 선행하는 기록(입력 기록과, 선택된 기록을 포함하는 콤포넌트에 앞서는, 그래프 내에서의 콤포넌트에 의해 생성된 각종 중개 기록의 양자 모두)의 세트를 판정할 수 있다. 입력 기록의 이러한 세트를 이용하여, 시스템(200)은 이러한 선택된 기록만을 포함하는 입력 데이터 서브 세트의 집합을 생성할 수 있게 되고, 이러한 데이터 서브 세트를 가지는 그래프를 다시 보일 수 있다. 그래프는, 선택된 기록의 실행을 통해, 사용자가 먼저 선택했었던 콤포넌트의 실행에 이르기까지의 그래프의 동작을 사용자가 관측할 수 있도록 움직일 수 있다.
도 3은 흐름 유닛을 이용하여 수정된 데이터 흐름 그래프를 통한 기록 추적의 일례를 도시한다. 데이터 소스 "ci"(302)는, 2개의 기록 즉, 제1 데이터 레코드(330)과 제2 데이터 레코드(332)을 포함한다. 데이터 소스 "ci"(302)로부터 데이터 레코드가 데이터 흐름 그래프에 제공되기 때문에, 흐름 유닛이 각각의 데이터 레코드에 부착된다. 흐름 유닛(304)은 데이터 레코드(330)에 부착되고, 흐름 유닛(306)은 데이터 레코드(332)에 부착된다.
몇몇 실시예에서는, 흐름 유닛이, 흐름 유닛과 연관된 콤포넌트 식별자, 콤포넌트와 연관된 그룹, 및 시퀀스 넘버를 포함한다. 그룹은, 예컨대 데이터 레코드가 제공되는 통로인 포트에 대한 지시자일 수 있다. 몇몇 실시예에서는, 흐름 유닛이 콤포넌트 식별자로 포맷된 스트링, 그룹 식별자, 및 시퀀스(즉, "ci.a.1" 및 "r1.a.1")를 포함할 수 있다. 각각의 콤포넌트 식별자는 고유의 방법으로 데이터 흐름 그래프 내의 콤포넌트를 식별할 수 있다. 예를 들어, 흐름 유닛(304)은, 스트링 "ci.a.1"을 포함하는데, 여기서 "ci"는 흐름 유닛이 데이터 소스 "ci"(302)와 연관되어 있음을 나타내고, 그룹 "a"는 데이터 레코드가 문자 "a"(318)와 연관된 포트 상에서 제공되었음을 나타내며, 시퀀스 넘버 "1"은 데이터 레코드가 문자 "a"(318)과 연관된 포트 상의 데이터 소스 "ci"(302)로부터 공급된 제1 데이터 레코드가었음을 나타낸다.
이와 유사하게, 흐름 유닛(306)은 스트링 "ci.a.2"를 포함하는데, 여기서 "ci"는 흐름 유닛이 데이터 소스 "ci"(302)와 연관되어 있음을 나타내고, 그룹 "a"는 데이터 레코드가 문자 "a"(318)와 연관된 포트 상에서 제공되었음을 나타내며, 시퀀스 넘버 "2"는 데이터 레코드가 문자 "a"(318)과 연관된 포트 상의 데이터 소스 "ci"(302)로부터 공급된 제2 데이터 레코드가었음을 나타낸다. 몇몇 실시예에서는, 콤포넌트와 포트가 숫자, 문자, 스트링, 또는 특정 식별자와 연관될 수 있다.
본 예시에서는, 제1 데이터 레코드(330)과 제2 데이터 레코드(332)의 양자 모두가 필터링 콤포넌트(filtering component) "r1"(308)에 의해 처리된다. 필터링 콤포넌트 "r1"(308)은 제1 포트(320) 상에 제1 데이터 레코드(330)을 제공하고, 제2 포트(322) 상에 제2 데이터 레코드(332)을 제공한다. 제1 데이터 레코드(330)은 새로운 흐름 유닛(310)과 함께 제공된다. 새로운 흐름 유닛은 스트링 "r1.a.1"을 포함하는데, 여기서 "r1"은 흐름 유닛이 필터링 콤포넌트 "r1"(308)과 연관되어 있음을 나타내고, "a"는 데이터 레코드가 "a" 포트(320) 상에 제공됨을 나타내며, "1"은 데이터 레코드가 필터링 콤포넌트 "r1"(308)의 "a" 포트(320) 상에 제공된 제1 데이터 레코드임을 나타낸다.
필터링 콤포넌트 "r1"(308)은 제2 데이터 레코드(332)을 "b" 포트(322) 상에 제공한다. 제1 데이터 레코드(330)과 유사하게, 제2 데이터 레코드는 새로운 흐름 유닛(312)과 함께 제공된다. 새로운 흐름 유닛(312)은 스트링 "r1.b.1"을 포함하는데, 여기서 "r1"은 흐름 유닛이 필터링 콤포넌트 "r1"(308)과 연관되어 있음을 나타내고, "b"는 데이터 레코드가 "b" 포트(322) 상에 제공됨을 나타내며, "1"은 데이터 레코드가 필터링 콤포넌트 "r1"(308)의 "b" 포트(322) 상에 제공된 제1 데이터 레코드임을 나타낸다.
모든 콤포넌트가 데이터 레코드에 새로운 흐름 유닛을 제공하는 것은 아니다. 본 예시에서는, 콤포넌트(314), 콤포넌트(316), 및 콤포넌트(334)가 패스 스루 콤포넌트(pass through component)로서 취급된다. 이러한 콤포넌트는 흐름 분석 프로세스에서는 무시된다. 여기서는, 제1 데이터 레코드(330)이 그 흐름 유닛(310)을 유지하고, 제2 데이터 레코드(332)은 그 흐름 유닛(312)을 유지한다. 몇몇 실시예에서는, 데이터 레코드의 경로를 변경하지 않는 콤포넌트는 새로운 흐름 유닛을 제공하지 않는다. 몇몇 실시예에서는, 각각의 콤포넌트가 데이터 레코드에 대해 새로운 흐름 유닛을 제공한다. 흐름 계측 엔진은 그래프 내의 어떤 콤포넌트가 계측되는지에 따라 선택적일 수 있고, 이로써 새로운 흐름 유닛이 형성되고, 특정한 콤포넌트나 특정한 포트를 통해 건넜음을 반영하기 위해 새로운 흐름 유닛은 어둡게 또는 그룹으로 할당될 수 있다.
데이터 레코드가 데이터 싱크(324) 내에 저장되기 이전에, 흐름 유닛이 제거된다. 제거된 흐름 유닛은 흐름 유닛 데이터 저장 장치(326)에 저장된다. 본 예시에서, 데이터 싱크(324)는 제1 데이터 레코드(330) 및 제2 데이터 레코드(332)을 저장한다. 흐름 유닛 데이터 저장 장치(326)는 흐름 유닛(312) 및 흐름 유닛(310)을 저장한다.
도 4는 흐름 유닛 흡수의 일례를 도시한다. 콤포넌트, 포트, 및 시퀀스 넘버의 식별이, 고유적으로 데이터 흐름 그래프를 통해 완전한 경로를 식별하기 위해, 항상 충분한 것은 아니다. 완전한 경로를 식별하기 위해, 흐름 유닛은 조합될 수 있다. 예를 들어, 도 4를 참조하면, 데이터 흐름 그래프는 콤포넌트 "z1"(402), 콤포넌트 "z2"(404), 및 콤포넌트 "r7"(406)을 포함한다. 본 예시에서는, 데이터 레코드(412)은 콤포넌트 "z1"(402)의 "a" 포트에 의해 제공될 제4 데이터 레코드가다. 데이터 레코드(412)은, 스트링 "z1.a.4"를 포함하는 흐름 유닛(410)과 함께 제공된다. 데이터 레코드(412)이 콤포넌트 "r7"(406)에 의해 처리된 후에, 데이터 레코드는 새로운 흐름 유닛(414)과 함께 제공된다. 새로운 흐름 유닛은, 데이터 레코드가 콤포넌트 "r7"(406)("r7.a.6")의 "a" 포트(408) 상에 제공된 제6 데이터 레코드임을 나타낸다. 흐름 유닛(414)은 데이터 레코드(412)이 콤포넌트 "z1"(402) 또는 콤포넌트 "z2"(404)에 의해 제공되었는지의 여부를 나타내지 않는다. 완전한 경로를 유지하기 위해, 흐름 유닛(410)은 흐름 유닛(412)에 병합(또는 흡수)된다. 몇 가지 실시예에서는, 흐름 유닛이, 데이터 레코드 또는 데이터 레코드를 생성하기 위해 처리된 하나 이상의 데이터 레코드와 종전에 연관된 다른 흐름 유닛의 세트를 흡수한다.
다른 실시예에서는, 흐름 유닛은, 데이터 레코드 또는 처리된 데이터 레코드와 종전에 연관된 흐름 유닛에 대한 복사본(copy) 대신, 참조를 유지한다. 각각의 흐름 유닛이 대체되기 때문에, 구(old) 흐름 유닛은 흐름 유닛 저장소(즉, 도 2의 흐름 유닛 저장소(218))에 저장된다. 새롭게 생성된 흐름 유닛은 흐름 유닛 저장소에 저장된, 대체된 흐름 유닛에 대한 참조를 포함한다. 도 5는 데이터 흐름 그래프를 통해 경로를 추적하기 위한 흐름 유닛 이용의 일례를 도시한다. 흐름 유닛은 데이터 흐름 그래프를 통해 복잡한 경로를 추적하기 위해 이용될 수 있다. 이러한 복잡한 흐름은 설명 스트링(descriptive string)을 이용하여 설명될 수 있으며, 데이터 흐름 그래프를 통해 동일한 경로를 따르는 각각의 데이터 레코드와 이에 선행하는 데이터 레코드는 동일한 스트링(identical string)을 가지게 된다. 데이터 흐름 그래프를 통해 실행된 흐름 경로의 세트를 모든 가능한 흐름 경로의 세트와 비교함으로써, 실행된 흐름 경로의 세트를 생성하기 위해 이용되는 데이터 레코드가 데이터 흐름 그래프에서의 모든 경로를 테스트하기에 충분한지의 여부(즉, 실행된 흐름 경로가 모든 가능한 흐름 경로를 커버하는지의 여부)가 판정될 수 있다.
각각의 흐름 유닛은 데이터 레코드와 연관되고, 흐름 유닛이 또한 다른 "흡수된" 흐름 유닛을 참조하기 때문에, 각각의 흐름 유닛을 생성하기 위해 처리되는 기록들의 완전한 세트가 식별 가능하게 된다. 생성된 흐름 유닛의 서브 세트를 선택함으로써, 선택된 흐름 유닛에 대응하는 데이터 레코드의 서브 세트를 선택할 수 있다. 예를 들어, 데이터 흐름 그래프(500)는 고객 통계(customer demographics)를 프로파일하기 위해 이용될 수 있다. 본 예시에서는, 고객 "a"의 세트를 나타내는 데이터 레코드의 흐름이, 콤포넌트 "ac"(502)에 의해 제공된다(줄여서 "a" 고객"). 분할 콤포넌트(partitioningcomponent) "f1"(504)는 데이터 레코드들을, 각각이 상이한 출력 포트 상에 제공되는 2개의 세트로 분할한다. 예를 들어, 분할 콤포넌트 "f1"(504)는 우편 번호에 따라 "a" 고객을 분할할 수 있다.
"a" 고객에 의해 완료된 거래 내역의 세트를 나타내는 흐름 데이터 레코드가 콤포넌트 "at"(510)에 의해 제공된다(줄여서 "a" 거래 내역).
결합 콤포넌트(512)(join component)는 "a" 고객에 대한 조합된 데이터 레코드의 흐름을 생성하기 위해, 고객 데이터 레코드와 고객 거래 내역을 결합한다. 거래 내역 데이터 레코드와 결합할 수 없는 고객 데이터 레코드와, 고객 데이터 레코드와 결합할 수 없는 거래 내역 데이터 레코드는, 출구점(514)으로 이어지는 별개의 출력 포트 상에 제공된다. 대체로, 각각의 고객 거래 내역 데이터 레코드(customer transaction data record)은, 거래를 완료한 고객과 연관된다. 본 예시에서, 고객은, 분할 콤포넌트 "f1"(504)"의 "a" 포트로부터의 고객 데이터 또는 분할 콤포넌트 "f1"(504)의 "b" 포트로부터의 고객 데이터 레코드에 의해 표현될 수 있으나, 양자 모두에 의해 표현될 수는 없다.
"b" 고객의 세트를 나타내는 데이터 레코드의 흐름이, 콤포넌트 "bc"(512)에 의해 제공된다(줄여서 "b" 고객"). 분할 콤포넌트(partitioning component) "f2"(518)는 데이터 레코드들을, 각각이 상이한 출력 포트 상에 제공되는 2개의 세트로 분할한다. 예를 들어, 분할 콤포넌트 "f2"(518)는 우편 번호에 따라 "b" 고객을 분할할 수 있다.
"b" 고객에 의해 완료된 거래 내역의 세트를 나타내는 흐름 데이터 레코드가 콤포넌트 "bt"(524)에 의해 제공된다(줄여서 "a" 거래 내역).
결합 콤포넌트 "j2"(526)는 "b" 고객에 대한 조합된 데이터 레코드의 흐름을 생성하기 위해, "b" 고객 데이터 레코드와 "b" 고객 거래 내역을 결합한다. 거래 내역 데이터 레코드와 결합할 수 없는 고객 데이터 레코드와, 고객 데이터 레코드와 결합할 수 없는 거래 내역 데이터 레코드는, 출구점(530)으로 이어지는 별개의 출력 포트 상에 제공된다. 대체로, 각각의 고객 거래 내역 데이터 레코드는, 거래 내역을 완료한 고객과 연관된다. 본 예시에서, 고객은, 분할 콤포넌트 "f2"(518)"의 "a" 포트로부터의 고객 데이터 또는 분할 콤포넌트 "f2"(518)의 "b" 포트로부터의 고객 데이터 레코드에 의해 표현될 수 있으나, 양자 모두에 의해 표현될 수는 없다.
일반적인 고객 정보를 나타내는 데이터 레코드의 흐름이 콤포넌트 "ci"(532)에 의해 제공된다(줄여서 고객 정보). 콤포넌트 "r1"(534)은 고객 정보를 제공하는 데이터 레코드를 재편(reformat)한다. 재편이 불가한 데이터 레코드는 출구점(536)으로 통하는 포트 상에 제공된다. 재편이 가능한 데이터 레코드는 제2 포트 상에 제공된다.
결합 콤포넌트 "j3"(538)은 재편된 고객 정보 데이터 레코드를, 결합 콤포넌트 "j1"(512)로부터의 데이터 레코드와 결합 콤포넌트 "j2"(526)로부터의 데이터 레코드와 조합한다. 결합 불가한 데이터 레코드는 출구점(540)으로 통하는 출력 포트 상에 제공된다. 결합된 데이터 레코드는 출력 포트 상에 제공되고, 롤업 콤포넌트(roll-up component) "ru"(542)로 흘러간다. 대체로, 콤포넌트 "j3"(538)은 재편된 고객 정보 데이터 레코드를, 분할 콤포넌트 "j1"(512)의 "a" 포트로부터의 데이터 레코드 또는 분할 콤포넌트 "j2"(526)의 "a" 포트로부터의 데이터 레코드와 결합한다.
롤업 콤포넌트(rollup component) "ru"(542)는 몇 가지 기준에 따라, 예컨대 우편 번호에 따라 고객 거래 내역 기록을 총합한다. 총합된 기록은 출구점(544)으로 통하는 포트 상에 제공된다.
데이터 흐름 그래프(500)는 흐름 유닛을 사용하여 데이터 레코드의 흐름을 추적하기 위해 수정된다. 예를 들면, 데이터 흐름 그래프 계측 엔진(즉, 도 2에서의 데이터 흐름 그래프 계측 엔진(206))을 이용한다. 스트링 표현을 이용하여, 흐름 유닛은, 흐름을 설명하기 위해 조합될 수 있는 개개의 데이터 레코드와는 관계없이, 데이터 흐름 그래프를 통한 데이터 레코드의 복잡한 흐름을 설명할 수 있다. 예를 들어, 콤포넌트 "ac"에 의해 제공되는 데이터 레코드는, 콤포넌트 "ac"(502)의 "a" 포트 상에서 시작된 데이터 레코드를 나타내는 흐름 유닛 스트링 "ac.a"에 의해 태깅(tagged)될 수 있다.
데이터 레코드가 필터링 콤포넌트 "f1"(504)에 의해 필터링되면, 데이터 레코드는, 데이터 레코드가 필터링 콤포넌트 "f1"(504)의 "b" 포트 상에 제공되었음을 나타내는 흐름 유닛 스트링 "f1.b"에 의해 태깅될 수 있다. 몇몇 실시예에서, 흐름 유닛은 데이터 레코드에 의해 이동된 경로의 각 부분을 식별하는 이력 스트링(history string)을 포함할 수 있다. 예를 들어, 데이터 레코드는 이력 스트링 "(ac.a)f1.b"로 태깅될 수 있다. 여기서 괄호는, f1.b 흐름 유닛이 ac.a 흐름 유닛을 흡수했다는 것을 나타내기 위해 이용될 수 있다.
유사하게, 콤포넌트 "at"(510)"에 의해 제공된 데이터 레코드는, 데이터 레코드가 콤포넌트 "at"(510)의 포트 상에 제공되었음을 나타내는 이력 스트링 "at.a"를 가지는 흐름 유닛으로 태깅될 수 있다.
결합 콤포넌트 "j1"(512)는 필터링 콤포넌트 "f1"(504)로부터의 하나의 고객 데이터 레코드와 콤포넌트 "at"(510)으로부터의 거래 내역 기록을 조합할 수 있다. 조합된 데이터 레코드는, 새로운 흐름 유닛이 고객 기록("(ac.a)f1.b")으로부터의 흐름 유닛과 거래 내역 기록("at.a")을 조합함으로써 생성되었음을 나타내는 이력 스트링 "((ac.a)f1.b,at.a)j1.a"를 가지는 흐름 유닛으로 태깅될 수 있다. 여기서 콤마(,)는, 함께 조합된 다수의 흐름 유닛을 구별하기 위해 이용될 수 있다.
유사하게, 고객 정보 데이터 레코드는 콤포넌트 "ci"(532)에 의해 제공되고, 이는 이력 스트링 "ci.a"를 가지는 흐름 유닛으로 태깅된다. 고객 정보 데이터 레코드는 콤포넌트 "r1"(534)에 의해 재편된다. 재편된 고객 정보 데이터 레코드는 이력 스트링 "(ci.a)r1.a"를 가지는 흐름 유닛으로 태깅된다.
결합 콤포넌트 "j3"(538)은, 결합 콤포넌트 "j1"(512)로부터의 조합된 데이터 레코드와 콤포넌트 "r1"(534)로부터의 재편된 고객 정보 데이터 레코드를 조합한다. 새로 조합된 기록은 이력 스트링 "(((ac.a)f1.b,at.a)j1.a,(ci.a)r1.a)j3.a"를 가지는 흐름 유닛으로 태깅될 수 있다.
롤업 콤포넌트 "ru"(542)는 결합 콤포넌트 "j3"으로부터 발생된 다수의 기록을 단일 기록으로 조합할 수 있다. 이력 필드에서의 별표(*)는, 동일한 흐름으로부터의 다수의 기록이 함께 조합되었음을 나타내기 위해 이용될 수 있다. 예를 들어, 롤업 기록은 이력 스트링 "(*(((ac.a)f1.b,at.a)j1.a,(ci.a)r1.a)j3.a)ru.a"를 가지는 흐름 유닛으로 태깅될 수 있다. 이러한 표시는, 다수의 "(((ac.a)f1.b,at.a)j1.a,(ci.a)r1.a)j3.a" 흐름 유닛이 ru.a 흐름 유닛의 생성에서 흡수되었음을 나타낸다.
도 6은 출력 데이터 레코드의 생성을 야기하는 입력 데이터 레코드 식별의 일례를 도시한다. 모든 실행 흐름 경로 이력들이 판정되면, 흐름 경로 이력은 모든 또는 일부의 실행 흐름 경로에 대해 완전한 또는 부분적인 커버리지(coverage)를 제공하는 데이터의 서브 세트를 판정하기 위해 이용될 수 있다. 예시적으로 관계형 데이터베이스에 저장된 테이블(602)은, 도 5에서의 데이터 흐름 그래프(500)로부터 생성된 모든 데이터 레코드에 대한 실행 흐름 경로를 포함한다. 테이블(602)의 각 열은 데이터 흐름 그래프에 의해 생성된 출력 데이터 레코드에 대응한다. 테이블의 하나의 행은 출력 기록을 생성하기 위해 이동된 실행 경로를 설명하는 흐름 유닛 이력을 포함한다. 출력 기록으로부터 입력 기록이 판정될 수 있다. 각각의 출력 기록은, 도 4에 관하여 전술한 것처럼, 중첩된(nested) 흐름 유닛을 포함하는 흐름 유닛에 대응한다. 예를 들어, 화살표(606)에 의해 표현된 것처럼, 열(604)은 흐름 유닛(608)의 표현을 포함한다. 흐름 유닛(608)은 흐름 유닛의 생성에서 흡수된 모든 흐름 유닛을 포함한다. 열(604)에 대응하는 출력 데이터 레코드를 생성하기 위해 필요한 입력 데이터 레코드는, 흐름 유닛 트리(flow unit tree)의 "마디"(leaf node)를 검사함으로써 판정될 수 있다. 이는, 흐름 유닛이 그 생성에 있어서 어떠한 다른 흐름 유닛도 흡수하지 않았다는 것이다.
일례로서, 중첩된 흐름 유닛(610)은, 콤포넌트 "ci"의 "a" 포트 상에 제공된 10번째 데이터 레코드가 출력 데이터 레코드의 생성에서 이용되었음을 나타낸다. 콤포넌트 "ci"가 단일 포트만을 포함하기 때문에(도 5의 콤포넌트 "ci"(532) 참조), 입력 데이터 레코드가 고유적으로 식별될 수 있다.
유사하게, 중첩된 흐름 유닛(612, 614, 616, 618, 620)은, 콤포넌트 "at"의 "a" 포트 상에 제공된 8번째 데이터 레코드, 콤포넌트 "ac"의 "a" 포트 상에 제공된 10번째 데이터 레코드, 콤포넌트 "ci"의 "a" 포트 상에 제공된 19번째 흐름 유닛, 콤포넌트 "at"의 "a" 포트 상에 제공된 21번째 데이터 레코드, 및 콤포넌트 "ac"의 "a" 포트 상에 제공된 30번째 데이터 레코드 각각이 출력 데이터 레코드의 생성에서 이용되었음을 나타낸다. 이러한 기록들을 포함하는 데이터의 샘플 세트는 테이블(602)의 열(604)에 대응하는 출력 데이터 레코드를 제작할 것이다.
출력 데이터 레코드의 선택된 서브 세트와 연관된 흐름 유닛 이력을 이용함으로써, 이러한 출력 기록을 생성하는 입력 데이터 레코드의 서브 세트가 선택될 수 있다. 입력 데이터 레코드의 이러한 서브 세트는, 프로그램의 동작을 변경함이 없이 테스팅 또는 분석하기 위해 이용될 수 있다. 예를 들어, 테스팅 세트가 콤포넌트 "at"의 "a" 포트 상에 제공된 21번째 데이터 레코드를 포함하지 않으면, 그래프의 실행은 동일한 출력 기록을 생성하지 않을 것이다.
도 7은 데이터 레코드에 흐름 유닛을 추가하기 위한, 데이터 흐름 그래프의 데이터 소스 콤포넌트 수정의 일례를 도시한다. 대체로, 데이터 레코드에 흐름 유닛을 추가하고, 데이터 흐름 그래프에 실행 경로의 맵을 제공하기 위해 흐름 유닛을 함께 조합하며, 데이터 레코드가 데이터 흐름 그래프를 빠져나가기에 앞서 흐름 유닛을 제거하기 위해, 데이터 흐름 그래프가 계측될 수 있다.
기록 계통을 제공하기 위해 데이터 흐름 그래프(700)를 수정하는 것은, 흐름 유닛을포함하기 위해 각각의 데이터 레코드를 재편하는 각각의 데이터 소스 이후에, 콤포넌트를 추가하는 것을 포함할 수 있다. 몇몇 실시예에서는, 각각의 데이터 소스가 최초의 입력 데이터 설정 콤포넌트(input data set component)의 복사본과 흐름 유닛을 포함하기 위해 각각의 데이터 레코드를 재편하는 콤포넌트를 포함하는 서브 그래프(또는 중첩된 그래프)로 대체된다. 예를 들어, 데이터 흐름 그래프(700)가 수정되어, 데이터 소스(702)가 흐름 유닛 생성기 콤포넌트(704)(flow unit generator component)에 데이터 레코드를 제공한다.
몇몇 실시예에서는, 흐름 유닛 생성기 콤포넌트(704)가, 각각의 데이터 레코드에 전술한 것처럼 흐름 유닛인 추가 필드를 추가한다.
도 8은 데이터 레코드에 흐름 유닛을 추가하기 위한, 다수의 출력 포트를 가지는 콤포넌트 수정의 일례를 도시한다. 데이터 흐름 그래프(700)는 다수의 출력 포트(804, 806)를 가지는 재편 콤포넌트(802)(reformat component)를 포함한다. 본 예시에서는, 별개의 흐름 유닛 생성기 콤포넌트가 각각의 포트에 대해 추가된다. 포트(804)는 흐름 유닛 생성기(808)에 대응하고, 포트(806)는 흐름 유닛 생성기(810)에 대응한다. 몇 가지 실시예에서는, 다수의 출력 포트를 가지는 콤포넌트가 서브 그래프로 대체된다. 예를 들어, 서브 그래프(812)는 최초 콤포넌트의 복사본을 포함하고, 각각의 포트 상에서 흐름 유닛을 가지는 데이터 레코드를 제공한다.
도 9는 흐름 유닛을 처리하기 위한, 데이터 싱크 수정의 일례를 도시한다. 데이터 흐름 그래프(700)는 데이터 싱크(902)를 포함한다. 데이터 흐름 그래프는, 흐름 유닛 제거 콤포넌트(904)(flow unit removal component)를 추가하기 위해 수정된다. 흐름 유닛 제거 콤포넌트(904)는 데이터 레코드로부터 흐름 유닛을 제거하고 흐름 유닛 저장소(906)에 흐름 유닛을 저장한다. 흐름 유닛이 없는 데이터 레코드는 데이터 싱크(902)에 저장된다.
도 10은 다수의 데이터 흐름 그래프를 통한 흐름 유닛 이용의 일례를 도시한다. 예를 들면, 계측된 데이터 흐름 그래프 A(1004)는 데이터 저장 장치(1002)로부터 데이터 레코드를 판독한다. 프로세스 화살표(1006)에 의해 표현된 것처럼, 데이터 흐름 그래프 A(1004)는 기록을 처리하고, 데이터 저장 장치(1008) 내에 출력 데이터 레코드를 생성한다. 프로세스 화살표(1012)에 의해 표현된 것처럼, 데이터 흐름 그래프 A(1004)에 의해 생성된 각각의 출력 데이터 레코드는 흐름 유닛 저장소(1010)에 저장된 흐름 유닛과 연관된다.
프로세스 화살표(1016)에 의해 표현된 것처럼, 계측된 데이터 흐름 그래프 B는 데이터 저장 장치(1008)로부터 데이터 레코드를 판독하고, 기록을 처리하며, 데이터 저장 장치(1020) 내에 그들을 저장한다. 프로세스 화살표(1014)에 의해 표현된 것처럼, 데이터 저장 장치(1008)로부터 판독된 각각의 데이터 레코드에 대한 새로운 흐름 유닛을 생성하는 것 대신에, 계측된 데이터 흐름 그래프 B(1018)는 흐름 유닛 저장소(1010)로부터 데이터 레코드와 연관된 흐름 유닛을 판독한다.
프로세스 화살표(1022)에 의해 표현된 것처럼, 계측된 데이터 흐름 그래프는 흐름 유닛 저장소(1010)에 흐름 유닛을 저장한다. 계측된 데이터 흐름 그래프 B(1018)로부터 생성된 흐름 유닛은, 흡수된 흐름 유닛과, 데이터 흐름 그래프 A(1004)와 데이터 흐름 그래프 B(1018)의 양자 모두를 통해 데이터 레코드의 완전한 실행 경로 및 그의 선행하는 데이터 레코드를 식별하는 이력을 포함한다.
도 11은 흐름 분석을 위한 예시적인 프로세스를 도시한다. 본 프로세스는 하나 이상의 연산 장치, 예컨대 도 1의 컴퓨터(112) 상에서 실현될 수 있다.
프로세스(1100)는 데이터 흐름 그래프를 수정한다(1102). 데이터 흐름 그래프에 의해 처리된 데이터 레코드에 흐름 유닛을 추가하고 데이터 흐름 그래프에 의해 처리된 데이터 레코드로부터 흐름 유닛을 제거하기 위해, 데이터 흐름 그래프가 수정된다. 각각의 흐름 유닛은 데이터 흐름 그래프를 통해 경로의 세그먼트를 식별한다.
프로세스(1100)는 흐름 유닛에 따라 실행 경로를 식별한다(1104). 흐름 유닛은, 데이터 흐름 그래프를 통해 데이터 레코드에 의해 이동되는 경로를 식별하고, 이를 생성하기 위해 이용되는 선행하는 기록을 식별하기 위해 이용된다.
프로세스(1100)는 데이터 레코드의 서브 세트를 판정한다(1106). 데이터 레코드의 서브 세트는 실행 경로에 따라 판정되며, 서브 세트의 적어도 하나의 데이터 레코드는 데이터 흐름 그래프를 통하는 각각의 실행 경로로 이동한다.
본 명세서에서 설명되는 발명 주제와 동작들의 실시예들은, 본 명세서에서 기재되는 구조들 및 이와 구조적으로 동등한 것을 포함하여, 디지털 전자 회로, 또는 컴퓨터 소프트웨어, 펌웨어, 또는 하드웨어, 또는 그들의 하나 이상의 조합으로 구현될 수 있다. 본 명세서에서 설명되는 발명 주제의 실시예들은, 하나 이상의 컴퓨터 프로그램, 예컨대 데이터 처리 장치에 의한 실행을 위해, 또는 동작의 제어를 위해, 컴퓨터 저장 매체 상에 인코딩된 컴퓨터 프로그램 명령어의 하나 이상의 모듈로서 구현될 수 있다. 택일적으로 또는 추가적으로, 프로그램 명령어들은, 인위적으로 생성되어 전파되는 신호, 즉 데이터 처리 장치에 의한 실행을 위해 적합한 수신 장치에 전송하기 위한 정보를 인코딩하기 위해 생성되는 기계가 생성한 전기적, 광학적, 전자기적 신호에 대해 인코딩될 수 있다. 컴퓨터 저장 매체는, 컴퓨터가 판독 가능한 저장 장치, 컴퓨터가 판독 가능한 저장 기판, 랜덤 또는 시리얼 액세스 메모리 어레이 또는 장치, 또는 이들의 하나 이상의 조합이 되거나, 이들에 포함될 수 있다. 나아가, 컴퓨터 저장 매체는 전파되는 신호가 아니지만, 컴퓨터 저장 매체는 인위적으로 생성되어 전파되는 신호로 인코딩되는 컴퓨터 프로그램 명령어들의 소스 또는 목적이 될 수 있다. 컴퓨터 저장 매체는 또한, 하나 이상의 독립된 물리적 콤포넌트들 또는 미디어(즉, 다수의 CD, 디스크, 또는 다른 저장 장치)이거나, 이에 포함될 수 있다.
본 명세서에서 설명되는 동작들은, 하나 이상의 컴퓨터 판독 가능한 저장 장치 상에 저장되거나 다른 소스로부터 수신되는 데이터 상에서, 데이터 처리 장치에 의해 수행되는 동작들로서 실현될 수 있다.
"데이터 처리 장치"라는 용어는, 프로그래밍 가능한 프로세서, 컴퓨터, 칩 상의 시스템, 또는 이 중 다수 또는 이들의 조합을 포함하는, 데이터를 처리하기 위한 모든 종류의 기구, 장치, 및 기계를 아우른다. 본 장치는 전용의 논리 회로, 즉 FPGA(field programmable gate array) 또는 ASIC(applicationintegrated circuit)을 포함할 수 있다. 본 장치는 또한, 하드웨어에 부가하여, 컴퓨터 프로그램을 위한 실행 환경을 조성하는 코드, 즉 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 구동 시스템, 크로스-플랫폼 런타임 환경, 가상 머신, 또는 이들의 하나 이상의 조합을 구성하는 코드를 포함할 수 있다. 본 장치 및 실행 환경은, 웹 서비스, 분산 컴퓨팅, 및 그리드 컴퓨팅 구조와 같은 다양한 상이한 연산 모델 구조를 실현할 수 있다.
컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 어플리케이션, 스크립트, 또는 코드로도 알려진)은, 컴파일된 또는 기계어로 번역된 언어들, 선언형 또는 절차 본위 언어들을 포함하는, 모든 형태의 프로그래밍 언어로 쓰여질 수 있으며, 모든 형태의 스탠드-얼론 프로그램, 또는 모듈, 콤포넌트, 서브루틴, 오브젝트, 또는 컴퓨팅 환경에서 이용하기에 적합한 다른 유닛들로 사용될 수 있다. 컴퓨터 프로그램은, 파일 시스템에서의 파일에 대응할 수 있으나, 이에 한정되지는 않는다. 프로그램은, 다른 프로그램이나 데이터를 확보하는 파일의 일부분(즉, 마크업 언어 도큐먼트에 저장된 하나 이상의 스크립트), 프로그램에 제공되는 단일 파일, 또는 다수의 협력 파일(즉, 하나 이상의 모듈, 서브-프로그램, 또는 코드의 일부를 저장하는 파일들)에 저장될 수 있다. 컴퓨터 프로그램은, 하나의 컴퓨터 또는, 하나의 사이트에 위치되거나 다수의 사이트를 통해 분산되어 통신망을 통해 서로 연결되는 다수의 컴퓨터 상에서 실행되도록 사용될 수 있다.
본 명세서에서 설명되는 프로세스 및 논리 흐름은, 입력 데이터를 구동하고 출력을 생성함으로써 동작들을 수행하기 위해 하나 이상의 컴퓨터 프로그램을 실행하는 하나 이상의 프로그래밍 가능한 프로세서에 의해 수행될 수 있다. 프로세서 및 논리 흐름은 또한, 전용의 논리 회로, 즉 FPGA 또는 ASIC에 의해 수행될 수 있고, 장치는 이에 의해 실현될 수 있다.
컴퓨터 프로그램의 실행에 적합한 프로세서는, 예로써 범용 또는 전용의 마이크로 프로세서 모두와, 모든 종류의 디지털 컴퓨터의 하나 이상의 어떠한 프로세서도 포함할 수 있다. 일반적으로, 프로세서는 리드-온리 메모리 또는 랜덤 액세스 메모리 또는 양자 모두로부터 명령어와 데이터를 수신한다. 컴퓨터의 필수적인 콤포넌트는 명령어에 따라 동작을 수행하는 프로세서와, 명령어와 데이터를 저장하기 위한 하나 이상의 메모리 장치이다. 일반적으로, 컴퓨터는 또한, 데이터를 저장하기 위한 하나 이상의 대량 저장 장치, 즉 자기 디스크, 자기-광학 디스크, 또는 광학 디스크로부터 데이터를 수신하거나, 이들에 데이터를 전송하기 위해, 또는 양자 모두를 위해 구동적으로 연결될 수 있다. 그러나, 이러한 장치를 필수적으로 요구하는 것은 아니다. 나아가, 컴퓨터는 다른 장치, 즉 이동형 전화기, PDA(personal digital assistant), 모바일 오디오 플레이어, 모바일 비디오 플레이어, 게임 콘솔, GPS(Global Positioning System) 수신기, 또는 포터블 저장 장치(즉, USB(universal serial bus) 플래시 드라이브) 등에 내장될 수 있다. 컴퓨터 프로그램 명령어와 데이터를 저장하기에 적합한 장치들은, 예컨대 EPROM, EEPROM, 및 플래시 메모리 장치와 같은 예시적인 반도체 메모리 장치와, 예컨대 내부 하드 디스크 또는 제거 가능한 디스크와 같은 자기 디스크 자기-광학 디스크 및 CD-ROM 및 DVD-ROM 디스크를 포함하는, 비휘발성 메모리, 미디어 장치, 메모리 장치의 모든 형태를 포함한다. 프로세서 및 메모리는, 전용의 논리 회로에 의해 또는 이에 병합되어 보충될 수 있다.
사용자와의 상호 작용을 제공하기 위해, 본 명세서에서 설명되는 발명 주제의 실시예들은 디스플레이 장치, 예컨대 CRT(cathode ray tube) 또는 LCD(liquid crystal display) 모니터와 같은, 사용자에게 정보를 표시하기 위한 디스플레이 장치 및 사용자가 컴퓨터에 입력을 제공할 수 있도록 하는 키보드 및 포인팅 장치, 예컨대 마우스 또는 트랙볼을 포함하는 컴퓨터 상에서 구현될 수 있다. 다른 종류의 장치들도 사용자와의 상호 작용을 제공하기 위해 이용될 수 있다 예컨대, 사용자에게 제공되는 피드백은, 예컨대 시각적 피드백, 청각적 피드백, 또는 촉각적 피드백의 어떠한 형태의 감각적인 피드백도 될 수 있고, 사용자로부터의 입력은, 청취형, 대화형, 촉각형 입력을 포함하는 어떠한 형태로도 수신될 수 있다. 추가로, 컴퓨터는 사용자에 의해 이용되는 장치에 문서를 전송하고 이로부터 문서를 수신함으로써, 예컨대 웹 브라우저로부터 수신된 요청에 응하여 사용자의 클라이언트 장치 상의 웹 브라우저에 웹 페이지를 전송하는 등으로, 사용자와 상호 작용을 할 수 있다.
본 명세서에서 설명되는 발명 주제의 실시예들은, 백-엔드 콤포넌트, 예컨대 데이터 서버, 또는 프론트-엔드 콤포넌트, 예컨대 그래픽 유저 인터페이스(GUI)를 가지는 클라이언트 컴퓨터 또는 본 명세서에서 설명되는 발명 주제의 구현으로 사용자와 상호 작용함에 있어 통하게 되는 웹 브라우저, 또는 하나 이상의 그러한 백-엔드, 미들웨어, 또는 프론트-엔드 콤포넌트의 어떠한 조합들도 모두 포함하는 컴퓨팅 시스템으로 구현될 수 있다. 시스템의 콤포넌트는, 예컨대 통신망과 같이, 디지털 데이터 통신의 어떠한 형태 또는 매체에 의해 서로 연결될 수 있다. 통신망의 예시들로는, 로컬 영역 네트워크(LAN)와 와이드 영역 네트워크(WAN), 인터-네트워크(즉, 인터넷), 및 피어-대-피어 네트워크(즉, 애드혹(adhoc) 피어-대-피어 네트워크)를 포함한다.
컴퓨팅 시스템은 클라이언트와 서버를 포함할 수 있다. 클라이언트와 서버는 일반적으로 서로 원격 연결되며, 전형적으로 통신망을 통해 상호 작용한다. 클라이언트와 서버의 관계는, 각각의 컴퓨터에서 실행되고 클라이언트-서버 상호간의 관계를 가지는 컴퓨터 프로그램에 기인한다. 몇 가지 실시예에서는, 서버가 데이터(예컨대, HTML 페이지)를 클라이언트 장치(즉, 클라이언트 장치와 상호 작용하는 사용자에게 데이터를 보여주고 사용자로부터 입력을 수신하기 위한 목적의 장치)에 전송한다. 클라이언트 장치에서 생성된 데이터(즉, 사용자 상호 작용의 결과)는, 서버가 클라이언트 장치로부터 수신할 수 있다.
본 명세서가 다수의 상세한 실시예의 설명들을 포함하고 있지만, 이는 어떠한 발명 또는 청구될 수 있는 보호범위에 대한 제한으로 해석되어서는 안 될 것이며, 특정 발명에 대한 특정 실시예에 대한 구체적인 특징의 설명으로 해석되어야 할 것이다. 본 명세서에서 독립된 실시예의 문형으로서 설명되는 그러한 특징들은, 또한 단일 실시예에서 조합되어 구현될 수도 있다. 반대로, 단일 실시예의 문형으로 설명되는 다양한 특징들은 또한, 다수의 실시예에서 독립적으로 또는 어떠한 적합한 하위 조합으로 구현될 수도 있다. 나아가, 특징들이 특정 조합으로 구현되는 것으로서 설명될 수 있고 심지어 그렇게 청구되었으나, 청구된 조합으로부터의 하나 이상의 특징들은 몇몇 경우에서 그러한 조합으로부터 제거될 수도 있으므로, 청구된 조합은 하위 조합 또는 하위 조합의 변형과 관계될 수 있다.
유사하게, 동작들이 도면에서 특정 순서로 묘사되었으나, 이는 그러한 동작들이 도시된 특정 순서 또는 연속적인 순서로 수행되어야 한다거나, 바람직한 결과를 얻기 위해 모든 설명된 동작들이 수행되어야 하는 것으로 이해되어서는 안 될 것이다. 특정 환경에서는, 멀티태스킹 및 병렬 처리가 더 유리할 수 있다. 나아가, 전술된 실시예에서의 각각의 댜앙한 시스템 콤포넌트들이 모든 실시예에서 독립적으로 실시되어야 하는 것으로 이해되어서는 안 되며, 이는 설명된 프로그램 콤포넌트 및 시스템이 일반적으로 단일 소프트웨어 제품으로 함께 병합되거나 다수의 소프트웨어 제품으로 패키지 될 수 있는 것으로 이해되어야 할 것이다.
따라서, 본 발명 주제의 특정 실시예들이 설명되었다. 다른 실시예들은 다음의 청구범위의 범위 내에 포함된다. 몇 가지 경우에서는, 청구범위에 인용된 동작들이 상이한 순서로 수행될 수 있으며, 그럼에도 여전히 바람직한 결과를 획득할 수 있다. 또한, 바람직한 결과를 얻기 위해, 첨부된 도면에서 묘사된 프로세스들의 도시된 특정 순서 또는 연속된 순서를 필수적으로 요구하는 것이 아니다. 특정 실시예들에서는, 멀티태스킹 및 병렬 처리가 더 유리할 수 있다.
전술된 흐름 분석 어프로치는 컴퓨터 상에서의 실행을 위한 소프트웨어를 이용하여 구현될 수 있다. 예를 들어, 소프트웨어는 각각이 적어도 하나의 프로세서와, 적어도 하나의 데이터 저장 시스템(휘발성 및 비휘발성 메모리 및/또는 저장 콤포넌트), 적어도 하나의 입력 장치 또는 입력 포트, 및 적어도 하나의 출력 장치 또는 출력 포트를 포함하는 하나 이상의 프로그래밍된 또는 프로그래밍 가능한 컴퓨터 시스템(분산 클라이언트/서버, 또는 그리드와 같은 다양한 아키텍처에 관한 것일 수 있는) 상에서실행되는 하나 이상의 컴퓨터 프로그램으로 프로시저를 형성한다. 본 소프트웨어는 더 큰 프로그램의 하나 이상의 모듈, 예컨대 데이터 흐름 그래프의 설계 및 구성에 관련된 다른 서비스들을 제공하는 모듈을 형성할 수 있다. 위 그래프의 노드와 콤포넌트는, 컴퓨터 판독 가능한 매체에 저장된 데이터 구조 또는 데이터 저장소에 저장된 데이터 모델과 일치하는 다른 구성된 데이터로서 구현될 수 있다.
소프트웨어는 범용 또는 전용의 프로그래밍 가능한 컴퓨터로 판독가능한 CD-ROM과 같은 저장 매체에 제공되거나, 네트워크의 통신 매체를 통하여 이러한 소프트웨어가 실행되는 컴퓨터로 전달(전파 신호로 부호화된 상태로)될 수 있다. 모든 동작은 전용의 컴퓨터상에서 수행될 수도 있고, 또는 코프로세서와 같은 전용의 하드웨어를 사용해서 수행될 수도 있다. 소프트웨어는 해당 소프트웨어에 의해 특정된 연산의 상이한 부분이 상이한 컴퓨터에 의해 수행되는 분산형 방식으로 구현되어도 된다. 이러한 각각의 컴퓨터 프로그램은, 저장 매체 또는 저장 장치가 컴퓨터 시스템에 의해 판독될 때에 컴퓨터로 하여금 본 명세서에서 설명된 프로시저를 수행하도록 구성하고 동작시키기 위한, 범용 또는 전용의 프로그래밍 가능한 컴퓨터에 의해 판독 가능한 저장 매체 또는 저장 장치(예컨대, 솔리드 스테이트 메모리 또는 매체, 또는 자기 또는 광학 매체)에 저장되거나 다운로드되는 것이 바람직하다. 본 발명의 시스템은 컴퓨터 프로그램을 이용하여 구성된 컴퓨터 판독가능 저장 매체로서 구현될 수도 있으며, 이와 같이 구성된 저장 매체는 컴퓨터 시스템을 본 명세서에 설명된 동작의 수행을 위해 특정되고 미리 정해진 방식으로 동작하게 한다.
본 발명에 대하여 많은 실시예를 설명하였다. 그렇지만, 본 발명의 사상 및 범위를 벗어남이 없이 다양한 변형이 가능하다는 점을 이해할 것이다. 예컨대, 전술한 단계들 중 몇몇은 반드시 그 순서대로 수행되지 않아도 되며, 설명된 것과 다른 순서로 수행되어도 된다.
이상의 설명은 본 발명의 범위를 제한하기 위한 것이 아니라 예시하기 위한 것이며, 본 발명의 범위는 첨부된 청구범위에 의해 정해진다는 점을 이해할 것이다. 예컨대, 전술한 많은 동작적 단계들은 전체적인 처리에 실질적인 영향을 미치지 않으면서 다른 순서로 수행되어도 된다. 다른 실시예가 이하의 청구항들의 범위에 포함된다.

Claims (24)

  1. 컴퓨터로 구현되는 방법으로서,
    하나 이상의 입구점과 하나 이상의 출구점을 연결하는 복수의 경로를 포함하는 데이터 흐름 그래프(dataflow graph)를 수정하는 단계;
    수정된 상기 데이터 흐름 그래프를 이용하여 복수의 데이터 레코드를 처리함으로써 획득된 흐름 유닛(flow units)에 기초하여 실행 경로를 식별하는 단계; 및
    상기 복수의 데이터 레코드의 서브 세트(subset)를 판정하는 단계
    를 포함하고,
    상기 수정하는 단계는, 상기 데이터 레코드가 건너온 경로의 세그먼트(segment)를 식별하는 각각의 흐름 유닛을 데이터 레코드에 추가하거나 데이터 레코드로부터 제거하는 콤포넌트를 상기 데이터 흐름 그래프에 추가하는 단계를 포함하며,
    상기 서브 세트는, 실행 경로의 선택된 세트를 나타내는 것인, 방법.
  2. 제1항에 있어서,
    상기 실행 경로를 식별하는 단계는, 데이터 레코드에 추가된 흐름 유닛의 세트를 판정하는 단계를 포함하는, 방법.
  3. 제1항에 있어서,
    상기 복수의 경로 중, 상기 실행 경로에 포함되지 않은 미사용 경로를 식별하는 단계를 더 포함하는, 방법.
  4. 제1항에 있어서,
    상기 데이터 흐름 그래프를 이용하여 상기 복수의 데이터 레코드의 서브 세트를 처리하는 단계를 더 포함하는, 방법.
  5. 제1항에 있어서,
    상기 복수의 데이터 레코드를 처리하는 것은, 상기 복수의 데이터 레코드 중 하나의 데이터 레코드에 제1 흐름 유닛을 추가하는 것을 포함하는, 방법.
  6. 제5항에 있어서,
    상기 복수의 데이터 레코드를 처리하는 것은, 상기 데이터 레코드에 제2 흐름 유닛을 추가하고, 상기 제2 흐름 유닛에 상기 제1 흐름 유닛을 추가하는 것을 포함하는, 방법.
  7. 제1항에 있어서,
    상기 실행 경로를 식별하는 단계는,
    상기 수정된 데이터 흐름 그래프를 이용하여 처리된 상기 복수의 데이터 레코드로부터 흐름 유닛을 제거하는 단계; 및
    제거된 상기 흐름 유닛을 분석하여, 각각의 데이터 레코드에 대한 실행 경로를 판정하는 단계
    를 포함하는, 방법.
  8. 제7항에 있어서,
    상기 복수의 데이터 레코드의 서브 세트를 판정하는 단계는, 하나의 상기 선택된 실행 경로를 가지는 데이터 레코드를 식별하는 단계를 포함하는, 방법.
  9. 하나 이상의 입구점과 하나 이상의 출구점을 연결하는 복수의 경로를 포함하는 데이터 흐름 그래프(dataflow graph)를 수정하는 단계;
    수정된 상기 데이터 흐름 그래프를 이용하여 복수의 데이터 레코드를 처리함으로써 획득된 흐름 유닛(flow units)에 기초하여 실행 경로를 식별하는 단계; 및
    상기 복수의 데이터 레코드의 서브 세트(subset)를 판정하는 단계
    를 포함하는 동작을 수행하도록 프로그래밍 된 하나 이상의 컴퓨터를 포함하고,
    상기 수정하는 단계는, 상기 데이터 레코드가 건너온 경로의 세그먼트(segment)를 식별하는 각각의 흐름 유닛을 데이터 레코드에 추가하거나 데이터 레코드로부터 제거하는 콤포넌트를 상기 데이터 흐름 그래프에 추가하는 단계를 포함하며,
    상기 서브 세트는, 실행 경로의 선택된 세트를 나타내는 것인, 시스템.
  10. 제9항에 있어서,
    상기 실행 경로를 식별하는 단계는, 데이터 레코드에 추가된 흐름 유닛의 세트를 판정하는 단계를 포함하는, 시스템.
  11. 제9항에 있어서,
    상기 복수의 경로 중, 상기 실행 경로에 포함되지 않은 미사용 경로를 식별하는 단계를 더 포함하는, 시스템.
  12. 제9항에 있어서,
    상기 데이터 흐름 그래프를 이용하여 상기 복수의 데이터 레코드의 서브 세트를 처리하는 단계를 더 포함하는, 시스템.
  13. 제9항에 있어서,
    상기 복수의 데이터 레코드를 처리하는 것은, 상기 복수의 데이터 레코드 중 하나의 데이터 레코드에 제1 흐름 유닛을 추가하는 것을 포함하는, 시스템.
  14. 제13항에 있어서,
    상기 복수의 데이터 레코드를 처리하는 것은, 상기 데이터 레코드에 제2 흐름 유닛을 추가하고, 상기 제2 흐름 유닛에 상기 제1 흐름 유닛을 추가하는 것을 포함하는, 시스템.
  15. 제9항에 있어서,
    상기 실행 경로를 식별하는 단계는,
    상기 수정된 데이터 흐름 그래프를 이용하여 처리된 상기 복수의 데이터 레코드로부터 흐름 유닛을 제거하는 단계; 및
    제거된 상기 흐름 유닛을 분석하여, 각각의 데이터 레코드에 대한 실행 경로를 판정하는 단계
    를 포함하는, 시스템.
  16. 제15항에 있어서,
    상기 복수의 데이터 레코드의 서브 세트를 판정하는 단계는, 하나의 상기 선택된 실행 경로를 가지는 데이터 레코드를 식별하는 단계를 포함하는, 시스템.
  17. 컴퓨터 프로그램이 인코딩된(encoded) 컴퓨터 저장 매체로서,
    데이터 처리 장치에 의해 실행되는 경우에, 상기 데이터 처리 장치로 하여금,
    하나 이상의 입구점과 하나 이상의 출구점을 연결하는 복수의 경로를 포함하는 데이터 흐름 그래프(dataflow graph)를 수정하는 단계;
    수정된 상기 데이터 흐름 그래프를 이용하여 복수의 데이터 레코드를 처리함으로써 획득된 흐름 유닛(flow units)에 기초하여 실행 경로를 식별하는 단계; 및
    상기 복수의 데이터 레코드의 서브 세트(subset)를 판정하는 단계
    를 포함하는 동작을 수행하도록 하는 명령어를 포함하고,
    상기 수정하는 단계는, 상기 데이터 레코드가 건너온 경로의 세그먼트(segment)를 식별하는 각각의 흐름 유닛을 데이터 레코드에 추가하거나 데이터 레코드로부터 제거하는 콤포넌트를 상기 데이터 흐름 그래프에 추가하는 단계를 포함하며,
    상기 서브 세트는, 실행 경로의 선택된 세트를 나타내는 것인, 컴퓨터 저장 매체.
  18. 제17항에 있어서,
    상기 실행 경로를 식별하는 단계는, 데이터 레코드에 추가된 흐름 유닛의 세트를 판정하는 단계를 포함하는, 컴퓨터 저장 매체.
  19. 제17항에 있어서,
    상기 복수의 경로 중, 상기 실행 경로에 포함되지 않은 미사용 경로를 식별하는 단계를 더 포함하는, 컴퓨터 저장 매체.
  20. 제17항에 있어서,
    상기 데이터 흐름 그래프를 이용하여 상기 복수의 데이터 레코드의 서브 세트를 처리하는 단계를 더 포함하는, 컴퓨터 저장 매체.
  21. 제17항에 있어서,
    상기 복수의 데이터 레코드를 처리하는 것은, 상기 복수의 데이터 레코드 중 하나의 데이터 레코드에 제1 흐름 유닛을 추가하는 것을 포함하는, 컴퓨터 저장 매체.
  22. 제21항에 있어서,
    상기 복수의 데이터 레코드를 처리하는 것은, 상기 데이터 레코드에 제2 흐름 유닛을 추가하고, 상기 제2 흐름 유닛에 상기 제1 흐름 유닛을 추가하는 것을 포함하는, 컴퓨터 저장 매체.
  23. 제17항에 있어서,
    상기 실행 경로를 식별하는 단계는,
    상기 수정된 데이터 흐름 그래프를 이용하여 처리된 상기 복수의 데이터 레코드로부터 흐름 유닛을 제거하는 단계; 및
    제거된 상기 흐름 유닛을 분석하여, 각각의 데이터 레코드에 대한 실행 경로를 판정하는 단계
    를 포함하는, 컴퓨터 저장 매체.
  24. 제23항에 있어서,
    상기 복수의 데이터 레코드의 서브 세트를 판정하는 단계는, 하나의 상기 선택된 실행 경로를 가지는 데이터 레코드를 식별하는 단계를 포함하는, 컴퓨터 저장 매체.
KR1020137020377A 2011-01-07 2012-01-05 흐름 분석 계측 KR101894925B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201161430625P 2011-01-07 2011-01-07
US61/430,625 2011-01-07
PCT/US2012/020334 WO2012094496A1 (en) 2011-01-07 2012-01-05 Flow analysis instrumentation

Publications (2)

Publication Number Publication Date
KR20140006862A true KR20140006862A (ko) 2014-01-16
KR101894925B1 KR101894925B1 (ko) 2018-09-04

Family

ID=45582019

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137020377A KR101894925B1 (ko) 2011-01-07 2012-01-05 흐름 분석 계측

Country Status (8)

Country Link
US (1) US9563411B2 (ko)
EP (1) EP2661687B1 (ko)
JP (2) JP5886878B2 (ko)
KR (1) KR101894925B1 (ko)
CN (1) CN103403677B (ko)
AU (2) AU2012204292B2 (ko)
CA (1) CA2823691C (ko)
WO (1) WO2012094496A1 (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9280373B1 (en) * 2012-10-16 2016-03-08 IntelliCorp Inc. Data transfer guide
US10789294B2 (en) * 2013-03-02 2020-09-29 Leon Guzenda Method and system for performing searches of graphs as represented within an information technology system
WO2016014615A1 (en) 2014-07-24 2016-01-28 Ab Initio Technology Llc Data lineage summarization
AU2015312010B2 (en) * 2014-09-02 2019-10-03 Ab Initio Technology Llc. Visually specifying subsets of components in graph-based programs through user interactions
US9880818B2 (en) * 2014-11-05 2018-01-30 Ab Initio Technology Llc Application testing
JP6469878B2 (ja) 2015-02-11 2019-02-13 アビニシオ テクノロジー エルエルシー データ系統図のフィルタリング
SG11201706228UA (en) 2015-02-11 2017-08-30 Ab Initio Technology Llc Filtering data lineage diagrams
US10135854B2 (en) * 2015-04-07 2018-11-20 Informatica Llc Method, apparatus, and computer-readable medium for generating a data proliferation graph
US10108321B2 (en) * 2015-08-31 2018-10-23 Microsoft Technology Licensing, Llc Interface for defining user directed partial graph execution
US10936289B2 (en) * 2016-06-03 2021-03-02 Ab Initio Technology Llc Format-specific data processing operations
US10379825B2 (en) 2017-05-22 2019-08-13 Ab Initio Technology Llc Automated dependency analyzer for heterogeneously programmed data processing system
US11126411B2 (en) * 2018-12-13 2021-09-21 Sap Se Dashboard user interface for data driven applications
US10826801B1 (en) 2019-07-31 2020-11-03 Bank Of America Corporation Multi-level data channel and inspection architectures
US11115310B2 (en) 2019-08-06 2021-09-07 Bank Of America Corporation Multi-level data channel and inspection architectures having data pipes in parallel connections
US11470046B2 (en) 2019-08-26 2022-10-11 Bank Of America Corporation Multi-level data channel and inspection architecture including security-level-based filters for diverting network traffic
US20210149734A1 (en) * 2019-11-15 2021-05-20 Nvidia Corporation Techniques for modifying an executable graph to perform a workload associated with a new task graph
WO2022195862A1 (ja) * 2021-03-19 2022-09-22 日本電気株式会社 分析装置、分析システム、分析方法、及び分析プログラム

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050175341A1 (en) * 2003-12-19 2005-08-11 Shlomo Ovadia Method and architecture for optical networking between server and storage area networks
JP2007299406A (ja) * 2006-05-04 2007-11-15 Internatl Business Mach Corp <Ibm> 多経路データ・ストリーム相関をスケーラブルに処理するためのシステムおよび方法
US7406424B2 (en) * 2001-08-29 2008-07-29 Hewlett-Packard Development Company, L.P. Migration of a workflow system to changed process definitions
US20100138388A1 (en) * 2008-12-02 2010-06-03 Ab Initio Software Llc Mapping instances of a dataset within a data management system

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2644777B2 (ja) * 1987-11-11 1997-08-25 株式会社日立製作所 モジュール連携テスト方法
JPH02307129A (ja) * 1989-05-23 1990-12-20 Nec Corp スナップid出力文設定/削除方式
JPH05151371A (ja) * 1991-11-28 1993-06-18 Sanyo Electric Co Ltd データ駆動型計算機
JPH06348549A (ja) * 1993-06-07 1994-12-22 Nikon Corp ソフトウエア処理装置
US6584581B1 (en) * 1999-12-06 2003-06-24 Ab Initio Software Corporation Continuous flow checkpointing data processing
WO2005109773A2 (en) * 2004-04-30 2005-11-17 Nexthop Technologies, Inc. Remote management of communication devices
US20070074175A1 (en) * 2005-09-23 2007-03-29 Telefonaktiebolaget L M Ericsson (Publ) Method and system for dynamic probes for injection and extraction of data for test and monitoring of software
US8069129B2 (en) * 2007-04-10 2011-11-29 Ab Initio Technology Llc Editing and compiling business rules
WO2010002919A1 (en) * 2008-06-30 2010-01-07 Ab Initio Software Llc Data logging in graph-based computations
US20120066698A1 (en) * 2009-05-20 2012-03-15 Nec Corporation Dynamic data flow tracking method, dynamic data flow tracking program, and dynamic data flow tracking apparatus

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7406424B2 (en) * 2001-08-29 2008-07-29 Hewlett-Packard Development Company, L.P. Migration of a workflow system to changed process definitions
US20050175341A1 (en) * 2003-12-19 2005-08-11 Shlomo Ovadia Method and architecture for optical networking between server and storage area networks
JP2007299406A (ja) * 2006-05-04 2007-11-15 Internatl Business Mach Corp <Ibm> 多経路データ・ストリーム相関をスケーラブルに処理するためのシステムおよび方法
US20100138388A1 (en) * 2008-12-02 2010-06-03 Ab Initio Software Llc Mapping instances of a dataset within a data management system

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Wikipedia, ‘Flow-based programming’, 2010.03.14., pp.1-6. *

Also Published As

Publication number Publication date
AU2012204292A1 (en) 2013-05-02
JP6220910B2 (ja) 2017-10-25
AU2016216684A1 (en) 2016-09-08
CN103403677B (zh) 2017-08-11
EP2661687B1 (en) 2021-03-10
JP2016103299A (ja) 2016-06-02
AU2016216684B2 (en) 2017-09-28
AU2012204292B2 (en) 2016-05-19
JP2014506370A (ja) 2014-03-13
JP5886878B2 (ja) 2016-03-16
CA2823691C (en) 2020-03-24
EP2661687A1 (en) 2013-11-13
CA2823691A1 (en) 2012-07-12
CN103403677A (zh) 2013-11-20
KR101894925B1 (ko) 2018-09-04
WO2012094496A1 (en) 2012-07-12
US9563411B2 (en) 2017-02-07
US20120179726A1 (en) 2012-07-12

Similar Documents

Publication Publication Date Title
KR20140006862A (ko) 흐름 분석 계측
Danglot et al. A snowballing literature study on test amplification
Gurbuz et al. Model-based testing for software safety: a systematic mapping study
Jiang et al. Co-evolution of infrastructure and source code-an empirical study
Zhang et al. Non-parametric statistical fault localization
Sarhan et al. A survey of challenges in spectrum-based software fault localization
Xie et al. Checking inside the black box: Regression testing by comparing value spectra
Breugelmans et al. Testq: Exploring structural and maintenance characteristics of unit test suites
Arora et al. A systematic review of approaches for testing concurrent programs
Mirzaaghaei et al. DOM-based test adequacy criteria for web applications
Rabinovich et al. Analyzing the behavior of event processing applications
Walunj et al. Graphevo: Characterizing and understanding software evolution using call graphs
Zirkelbach et al. Combining Kieker with Gephi for performance analysis and interactive trace visualization
Shishmarev et al. Visual search tree profiling
Mirshokraie et al. Atrina: Inferring unit oracles from GUI test cases
Perez et al. Framing program comprehension as fault localization
Silva et al. A mapping study on mutation testing for mobile applications
Nguyen et al. Exploring output-based coverage for testing PHP web applications
Ngo et al. Ranking warnings of static analysis tools using representation learning
Wu et al. Automatically repairing tensor shape faults in deep learning programs
Danglot Automatic unit test amplification for DevOps
Yang Measuring indirect coupling
Chandorkar et al. An exploratory study on the usage of gherkin features in open-source projects
Mohammadian et al. Intelligent evaluation of test suites for developing efficient and reliable software
Kessel et al. Measuring the superfluous functionality in software components

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
GRNT Written decision to grant