KR20150099456A - 계층적으로 참조된 데이터 내의 컴포넌트를 필터링하는 방법 및 시스템 - Google Patents

계층적으로 참조된 데이터 내의 컴포넌트를 필터링하는 방법 및 시스템 Download PDF

Info

Publication number
KR20150099456A
KR20150099456A KR1020150024223A KR20150024223A KR20150099456A KR 20150099456 A KR20150099456 A KR 20150099456A KR 1020150024223 A KR1020150024223 A KR 1020150024223A KR 20150024223 A KR20150024223 A KR 20150024223A KR 20150099456 A KR20150099456 A KR 20150099456A
Authority
KR
South Korea
Prior art keywords
component
filter
subcomponent
hierarchy
filtering
Prior art date
Application number
KR1020150024223A
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 다쏘 시스템즈 아메리카스 코포레이션
Publication of KR20150099456A publication Critical patent/KR20150099456A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Stored Programmes (AREA)
  • Architecture (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

논리적 컴포넌트 계층구조로부터 컴포넌트를 필터링하는 컴퓨터 실행 방법이 제공된다. 이 방법은 프로세서 및 메모리를 갖는 컴퓨팅 장치를 이용한다. 이 방법은, 메모리 내에서, 논리적 컴포넌트 계층구조와 관련된 필터를 식별하는 단계를 포함한다. 이 방법은, 프로세서에 의해, 논리적 컴포넌트 계층구조의 서브컴포넌트와 필터를 비교하는 단계 또한 포함한다. 이 방법은, 서브컴포넌트와 필터의 비교에 기초하여 필터링을 위한 서브컴포넌트를 식별하는 단계를 더 포함한다. 이 방법은, 논리적 컴포넌트 계층구조로부터 서브컴포넌트를 필터링하는 단계 또한 포함한다.

Description

계층적으로 참조된 데이터 내의 컴포넌트를 필터링하는 방법 및 시스템{METHODS AND SYSTEMS FOR FILTERING COMPONENTS IN HIERARCHICALLY-REFERENCED DATA}
관련 출원에 대한 상호 참조
본 출원은, 2014년 2월 21일에 출원된 미국 가특허 출원 제61/942,915호의 이익을 주장하며, 상기 미국 가특허 출원은 그 전체가 본 명세서에서 참조로서 인용된다.
본 개시내용은 전반적으로 제품 설계 환경에서의 컴포넌트의 계층구조를 관리하는 것에 관한 것이며, 보다 구체적으로는, 컴포넌트 계층구조로부터 컴포넌트를 필터링하는 것에 관한 것이다.
대형의 통합 시스템, 특히 회로를 설계하고 개발할 때, 통상적으로 하나의 엔지니어 팀이 시스템의 전체 설계를 담당하지는 않는다. 대신에, 종종, 엔지니어 팀들이 시스템의 컴포넌트들의 설계들을 담당하며, 전체 설계는 각각의 엔지니어 팀에 의해 제공되는 컴포넌트의 설계의 총합이다. 시스템이 더 복잡해짐에 따라, 시스템의 점점 더 많은 측면이 서브컴포넌트들로 분할된다. 부모 컴포넌트는 복수의 서브컴포넌트들로 분할될 수 있다. 이러한 컴포넌트들 및 서브컴포넌트들의 배열은 전체 시스템을 표현하는 계층구조 내에서 관련될 수 있다.
어떤 상황에서는, 컴포넌트 설계자들 또는 설계 팀들은 소정의 컴포넌트들을 전체 계층구조로부터 제외하기를 원할 수 있다. 예컨대, 일부 개발자들과 설계자들은 컴포넌트 계층구조의 설계 및 구현 시간의 축소를 가능하게 하는 재사용가능한 컴포넌트를 구축할 수 있지만, 컴포넌트의 재사용은 다루어져야 할 컴포넌트 계층구조 내의 상이한 버전의 컴포넌트들 간의 충돌을 야기할 수 있다. 다른 예에서, 일부 개발자들은, 그들이 컴포넌트 계층구조의 특정 서브세트에 초점을 맞출 수 있도록, 소정의 서브컴포넌트들을 제거하기를 원할 수 있다.
일 측면에서, 논리적 컴포넌트 계층구조로부터 컴포넌트를 필터링하기 위한 컴퓨터 구현 방법이 제공된다. 그 방법은, 프로세서와 메모리를 갖는 컴퓨팅 장치를 사용한다. 그 방법은, 메모리에서, 논리적 컴포넌트 계층구조와 관련된 필터를 식별하는 단계를 포함한다. 그 방법은, 프로세서에 의해, 논리적 컴포넌트 계층구조의 서브컴포넌트와 필터를 비교하는 단계 또한 포함한다. 그 방법은, 서브컴포넌트와 필터의 비교에 기초하여, 필터링을 위한 서브컴포넌트를 식별하는 단계를 더 포함한다. 그 방법은, 논리적 컴포넌트 계층구조로부터 서브컴포넌트를 필터링하는 단계 또한 포함한다.
다른 측면에서, 논리적 컴포넌트 계층구조로부터 컴포넌트를 필터링하기 위한 컴퓨팅 장치가 제공된다. 컴퓨터 장치는 메모리에 통신가능하게 결합된 프로세서를 포함한다. 메모리는 논리적 컴포넌트 계층구조를 포함한다. 컴퓨팅 장치는, 메모리에서, 논리적 컴포넌트 계층구조와 관련된 필터를 식별하도록 프로그래밍된다. 또한, 컴퓨팅 장치는 논리적 컴포넌트 계층구조의 서브컴포넌트와 필터를 비교하도록 프로그래밍된다. 컴퓨팅 장치는 서브컴포넌트와 필터의 비교에 기초하여 필터링을 위한 서브컴포넌트를 식별하도록 더 프로그래밍된다. 또한, 컴퓨팅 장치는 논리적 컴포넌트 계층구조로부터 서브컴포넌트를 필터링하도록 프로그래밍된다.
또 다른 측면에서, 컴퓨터 실행가능 명령어를 구현시킨 적어도 하나의 비일시적 컴퓨터 판독가능 저장 매체가 제공된다. 적어도 하나의 프로세서에 의해 실행될 때, 컴퓨터 실행가능 명령어는 프로세서가 논리적 컴포넌트 계층구조와 관련된 필터를 식별하게 한다. 또한, 컴퓨터 실행가능 명령어는, 프로세서가 논리적 컴포넌트 계층구조의 서브컴포넌트와 필터를 비교하게 한다. 또한, 컴퓨터 실행가능 명령어는, 프로세서가 서브컴포넌트와 필터의 비교에 기초하여 필터링을 위한 서브컴포넌트를 식별하게 한다. 또한, 컴퓨터 실행가능 명령어는, 프로세서가 논리적 컴포넌트 계층구조로부터 서브컴포넌트를 필터링하게 한다.
도 1 내지 도 9는 본 명세서에서 기술된 방법과 시스템의 예시적인 실시예를 도시하는 도면.
도 1은 예시적인 컴포넌트의 계층구조의 블록도.
도 2는 도 1에 도시된 컴포넌트의 계층구조와 관련된 버전 모듈(versioned module)의 블록도.
도 3은 도 2에 도시된 버전 모듈의 최초 스냅샷.
도 4는 도 2에 도시된 버전 모듈의 컨텐츠의 두 번째 스냅샷.
도 5는 필터를 포함하는 컴포넌트의 예시적 계층구조의 블록도.
도 6은 필터링 기준을 식별하고 통합하는 예시적인 계층구조 로딩 프로세스를 나타내는 흐름도.
도 7은 도 5에 도시된 컴포넌트의 계층구조 내의 필터링 기준을 구현하도록 구성된 예시적 계층구조 관리 시스템의 블록도.
도 8은 도 5에 도시된 컴포넌트의 계층구조를 관리하는 데 사용될 수 있는 컴퓨팅 장치 내의 데이터베이스를 다른 관련된 컴퓨팅 컴포넌트들과 함께 도시하는 블록도.
도 9는 도 5에 도시된 계층구조로부터 컴포넌트를 필터링하기 위한 예시적인 방법의 일례를 도시하는 도면.
아래의 상세한 설명은 본 개시내용의 실시예를 한정적이 아니라 예시적으로 설명한다. 본 개시내용은 컴포넌트의 계층구조의 관리에 일반적으로 적용되는 것으로 고려된다.
본 명세서에서 사용되는 단수로 기재되된 요소 또는 단계는, 복수의 요소 또는 단계의 배제가 명확히 기재되지 않는 한, 복수의 요소 또는 단계를 배제하지 않는 것으로 이해해야 한다. 또한, 본 명세서의 "예시적인 실시예" 또는 "일 실시예"라는 언급은 기재된 특징들을 더 포함하는 추가적인 실시예의 존재를 배제하는 것으로 해석되는 것을 의도하지 않는다.
본 명세서에서 사용되는 용어 "데이터베이스"는 데이터의 보디, 관계형 데이터베이스 관리 시스템(RDBMS) 또는 이들 쌍방을 지칭할 수 있다. 본 명세서에서 사용된 데이터베이스는 계층적 데이터베이스, 관계형 데이터베이스, 플랫 파일 데이터베이스, 객체 관계형 데이터베이스, 객체 지향 데이터베이스, 및 컴퓨터 시스템에 저장되는 레코드 또는 데이터의 임의의 다른 구조화된 집합을 포함하는 임의의 데이터 집합을 포함할 수 있다. 상기 예는 예일 뿐이며, 따라서 용어 데이터베이스의 정의 및/또는 의미를 한정하는 것을 결코 의도하지 않는다. RDBMS의 예는, Oracle® 데이터베이스, MySQL, IBM® DB2, Microsoft® SQL 서버, Sybase® 및 PostgreSQL을 포함하지만 이에 한정되지 않는다. 그러나, 본 명세서에서 기술된 시스템과 방법을 가능하게 하는 임의의 데이터베이스가 이용될 수 있다. (Oracle은 캘리포니아주 레드우드 쇼어스 소재의 오라클사의 등록 상표이고, IBM은 뉴욕주 아몬크 소재의 인터내셔널 비즈니스 머신즈 코퍼레이션의 등록 상표이고, Microsoft는 워싱턴주 레드먼드 소재의 마이크로소프트사의 등록 상표이고, Sybase는 캘리포니아주 더블린의 시베이스 소재의 등록 상표이다.)
본 명세서에서 사용되는 프로세서는 마이크로컨트롤러, 축소 명령어 세트 회로(RISC), 주문형 집적 회로(ASIC), 논리 회로, 및 본 명세서에서 기술된 기능을 실행할 수 있는 임의의 다른 회로 또는 프로세서를 사용하는 시스템을 포함하는 임의의 프로그래밍가능 시스템을 포함할 수 있다. 상기 예는 예일 뿐이며, 따라서 용어 "프로세서"의 정의 및/또는 의미를 한정하는 것을 결코 의도하지 않는다.
본 명세서에서 사용되는 용어 "소프트웨어" 및 "펌웨어"는 교환가능하며, RAM 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리 및 비휘발성 RAM(NVRAM) 메모리를 포함하는, 프로세서에 의한 실행을 위해 메모리 내에 저장된 임의의 컴퓨터 프로그램을 포함한다. 상기 메모리 유형은 예일 뿐이며, 따라서 컴퓨터 프로그램의 저장을 위해 사용할 수 있는 메모리의 유형을 한정하지 않는다.
일 실시예에서, 컴퓨터 프로그램이 제공되며, 그 프로그램은 컴퓨터 판독가능 매체 상에 구현된다. 예시적인 실시예에서, 시스템은 서버 컴퓨터에 대한 접속을 필요로 하지 않고서 단일 컴퓨터 시스템 상에서 실행된다. 추가적인 실시예에서, 시스템은 Windows® 환경에서 실행되고 있다(Windows는 워싱턴주 레드몬드 소재의 마이크로소프트 코포레이션의 등록된 상표임). 또 다른 실시예에서, 시스템은 메인프레임 환경 및 UNIX® 서버 환경에서 실행된다(UNIX는 영국 버크셔 리딩에 위치하는 X/Open 컴퍼니 리미티드의 등록상표이다). 애플리케이션은 융통성이 있고 임의의 주요 기능을 절충하지 않고도 다양한 상이한 환경에서 실행되도록 설계된다. 일부 실시예에서, 시스템은 복수의 컴퓨팅 장치 중에 분산된 복수의 컴포넌트를 포함한다. 하나 이상의 컴포넌트는 컴퓨터 판독가능 매체 내에 구현되는 컴퓨터 실행가능 명령어의 형태일 수 있다. 시스템 및 프로세스는 본 명세서에서 기술된 특정 실시예에 한정되지 않는다. 또한, 각각의 시스템 및 각각의 프로세스의 컴포넌트는 본 명세서에 기술된 다른 컴포넌트 및 프로세스로부터 독립적이면서 개별적으로 실행될 수 있다. 또한, 각각의 컴포넌트 및 프로세스는 다른 조립 패키지 및 프로세스와 함께 사용될 수 있다.
복수의 컴포넌트를 포함하는 하드웨어 또는 소프트웨어 시스템의 개발은, 시스템의 설계가, 더 작고 더 관리하기 쉬운 시스템의 컴포넌트의 설계로 분할될 때에 더 효율화될 수 있다. 컴포넌트 계층구조를 지원하고, 계층구조의 사용 중에 발생할 수 있는 문제들의 일부를 다루기 위해, 하나 이상의 서브컴포넌트가 전체 계층구조로부터 필터링(즉, 제외)될 수 있다.
도 1은 하나 이상의 컴포넌트가 본 명세서에서 기술된 바와 같이 필터링되거나 제외된 예시적인 제품 A(110)의 계층적 표현(100)이다. 제품 A(110)는 제1 컴포넌트 A1(120) 및 제2 컴포넌트 A2(130)를 포함한다. 제2 컴포넌트 A2(130)는 2개의 서브컴포넌트 A2,1(140) 및 A2,2(150)를 포함한다. 제품 A(110)는 컴포넌트 A1(120) 및 A2(130) 각각과 계층적 연관성(111, 112)을 갖는다. 마찬가지로, 컴포넌트 A2(130)는 서브컴포넌트 A2,1(140) 및 A2,2(150) 각각과 계층적 연관성(131, 132)을 갖는다. 제품 A(110)는 추가적인 컴포넌트(도시되지 않음)를 포함할 수 있으며, 이들 추가적인 컴포넌트는, 차례로 추가적인 서브컴포넌트를 포함할 수 있다. 또한, 서브컴포넌트는 추가적인 서브컴포넌트를 더 포함할 수 있고, 기타 등등이다.
100과 같은 계층적 표현은 제품 A(110)의 컴포넌트 또는 서브컴포넌트에 대해 별개로 형성될 수 있다(예컨대, 제품 A(110)의 완전한 계층적 표현(100)의 서브세트인 표현). 또한, 이 실시예에서 요소 A(110)가 제품인 반면, 요소 A(110)는 컴포넌트로 간주될 수도 있으며, 요소 A1(120) 및 요소 A2(130)는 요소 A(110)의 서브컴포넌트로 간주될 수 있다. 마찬가지로, 요소 A2,1(140)과 요소 A2,2(150)는 그들의 서브컴포넌트(도시 생략)에 대하여 계층 관계를 가지는 컴포넌트로 간주될 수 있다.
제품 A(110)는 모듈 방식으로 설계될 수 있는 임의의 하드웨어 또는 소프트웨어 시스템을 나타낼 수 있다. 예컨대, 제품 A(110)는 자동차일 수 있으며, 여기서, 컴포넌트 A1(120)은 프레임일 수 있으며, 컴포넌트 A2(130)는 자동차의 엔진일 수 있다. 엔진의 서브컴포넌트 A2,1(140) 및 A2,2(150)는 각각, 예컨대 엔진의 크랭크 축 및 실린더일 수 있다. 다른 예에서, 제품 A(110)는 집적 회로(IC) 칩일 수 있으며, 여기서 컴포넌트 A1(120)은 랜덤 액세스 메모리(RAM)일 수 있으며, 컴포넌트 A2(130)는 IC 칩의 컴퓨터 처리 유닛(CPU)일 수 있다. CPU의 서브 컴포넌트 A2,1(140) 및 A2,2(150)는 각각, 예컨대 CPU의 산술 논리 유닛(ALU) 및 제어 유닛일 수 있다.
개발 프로세스 동안, 특정 컴포넌트에 대한 설계 팀은 컴포넌트 및/또는 컴포넌트의 서브컴포넌트의 모든 현재 및 이전 설계들을 액세스할 수 있다. 설계 팀은 계층적 표현(100) 상의 임의의 레벨에서의 컴포넌트를 담당할 수 있다. 예컨대, 제품 A(110)의 개발을 위해 설계 팀이 존재할 수 있는 것은 물론, 제품 A(110)의 컴포넌트(예컨대, 컴포넌트 A1(120) 및 A2(130)) 각각을 위해 별개의 설계 팀이 존재할 수 있다. 제품 A(110)에 대한 설계 팀은 제품 A(110)의 컴포넌트의 특정 설계를 이용하여 제품 A(110)를 시뮬레이션 및/또는 테스트하는 것을 담당할 수 있다.
제품 A(110)와, 그것의 모든 컴포넌트 A1(120) 및 A2(130)와, 서브컴포넌트 A2,1(140) 및 A2,2(150)에 대한 설계는, 임의의 설계 팀에 의한 검색을 위하여 중앙 데이터베이스 또는 분산 데이터베이스(도 1에 도시되지 않음)에 저장된 모듈 내에 파일로서 포함될 수 있다. 모듈은 통상적으로 소프트웨어 코드 및/또는 설계 데이터를 포함하는 하나 이상의 파일을 포함한다. 모듈은 다른 모듈을 포함할 수 있으며, 이들은 릴리스될 수 있고, 재사용을 위하여 패키징될 수도 있다. 일부 구현에서는, 예컨대 메사추세츠주 월섬 소재의 Dassault Systemes ENOVIA 사로부터의 비즈니스 오브젝트 데이터베이스와 같은 서버측 데이터베이스가 사용된다. 그러나, 본 명세서에서 기술된 시스템과 방법의 동작을 가능하게 하는 임의의 다른 데이터베이스 또는 데이터베이스의 조합이 이용될 수 있다.
컴포넌트의 개발의 촉진 및 추적을 돕기 위해, 모듈 내에 저장되는 컴포넌트의 각각의 설계는 그 모듈과 관련된 특정 버전 번호, 예컨대 모듈 및/또는 컴포넌트 버전을 가질 수 있다.
도 2는 도 1에 도시된 것과 동일한 컴포넌트의 계층구조를 이용하여, 특정 컴포넌트와 관련된 버전 모듈의 블록도(200)를 나타낸다. 제품 A(110)는 상이한 모듈 버전 번호를 갖는 복수의 모듈, 예컨대 모듈 A v1.0(211), A v1.1(212) 및 A v1.2(213)와 관련될 수 있다.
도면 200은 모듈 분기(210, 220, 230, 240, 250)를 포함한다. 모듈 분기는 특정 제품, 컴포넌트 또는 서브컴포넌트와 공통 관계를 갖는 객체의 집합에 대한 갱신의 연대순 진행을 나타낸다. 예컨대, 모듈 분기(210)에 의해 포함되거나 참조되는 모듈 A v1.0(211), A v1.1(212) 및 A v1.2(213)의 집합은 조상 버전 모듈에 대한 후속 갱신 또는 변경을 각각 나타내는 제품 A(110)의 상이한 버전 모듈이다. 본 명세서에서 사용되는 공통 모듈 분기를 공유하는 모듈은 "동일 모듈"로서 지칭될 수 있으며, 예컨대 그들이 공통적인 기본 모듈 버전 계통(lineage)의 동일하거나 상이한 버전 중 하나임을 나타낸다. 유사하게, 요소 또는 컴포넌트 또한, 그들이 분기(210, 220, 230, 240, 250)와 같이 공통 기본 버전 계통을 공유하는 경우에 "동일한" 것으로 지칭될 수 있다. 모듈 분기(220)는 컴포넌트 A1(120)과 관련된 상이한 버전 모듈인 모듈 A1 v1.0(221) 및 A1 v1.1(222)의 집합을 지칭한다. 모듈 분기(230)는 컴포넌트 A2(130)와 관련된 상이한 버전 모듈인 모듈 A2 v1.0(231), A2 v1.1(232) 및 A2 v1.2(233)의 집합을 지칭한다. 모듈 분기(240)는 서브컴포넌트 A2,1(140)과 관련된 모듈 A2,1 v1.0(241)의 집합을 지칭한다. 모듈 분기(250)는 서브컴포넌트 A2,2(150)와 관련된 상이한 버전 모듈인 모듈 A2,2 v1.0(251) 및 A2,2 v1.1(252)의 집합을 지칭한다.
버전 모듈(예컨대, 모듈 A v1.0(211), A v1.1(212) 및 A v1.2(213))은 컴포넌트(예컨대, 제품 A(110))의 설계에 대한 갱신 또는 변경의 연대순 진행의 특정 시점에 모듈이 갱신 또는 변경되었다는 것을 전한다. 설계 팀 중 한 팀에 의한 하나의 모듈로부터의 컴포넌트 설계에 대한 임의의 변경은 새로운 모듈 버전 번호를 갖는 새로운 모듈의 생성을 유발할 수 있다. 예컨대, 컴포넌트 A2(130)에 대한 설계 팀은 모듈 A2 v1.1(232)에 포함된 버전 1.1의 설계에 변화를 주고, 새로운 버전 번호 1.2를 가지는 모듈 A2 v1.2(233)를 생성해서 새로운 설계를 저장한다. 특정 컴포넌트(예컨대, 컴포넌트 A2(130))는 복수의 설계 버전을 가질 수 있고, 이들 각각은 상이한 버전 번호(예컨대, v1.0, v1.1 및 v1.2)를 가지는 별도의 모듈(예컨대, 모듈 A2 v1.0(231), A2 v1.1(232) 및 A2 v1.2(233))에 저장된다.
제품 또는 컴포넌트의 개발을 더 촉진하기 위해, 하나 이상의 계층적 참조가 특정 서브모듈을 참조하는 컴포넌트의 모듈에 저장될 수 있다. 도 3 및 4는 시간 t1에서 t2까지 제품의 특정 설계의 모듈과 그 제품의 컴포넌트와 관련된 서브모듈 사이에서 존재하고 변할 수 있는 계층적 참조의 상이한 유형의 예를 도시한다. 도 3 및 4는 계층적 표현(100)의 일부를 사용하며, 여기서 제품 A(100)는 2개의 컴포넌트 A1(120) 및 A2(130)를 포함하고, 컴포넌트 A2는 하나의 서브컴포넌트 A2,1(140)을 포함한다. 서브모듈은 다른 모듈에 의해서 참조된 임의의 모듈일 수 있으며, 모듈에 관련된 컴포넌트의 서브컴포넌트와 관련된다. 예컨대, 도 3에서, 모듈 A1 v1.0(321) 및 A2 v1.0(331)은 모듈 A v1.0(311)의 서브모듈이며, 모듈 A2,1 v1.0(341)은 모듈 A2 v1.0(331)의 서브모듈이다. 모듈 A v1.0(311)은 컴포넌트 A(110)와 관련되고, 서브모듈 A1 v1.0(321) 및 A2 v1.0(331)은 서브컴포넌트 A1(120) 및 A2(130)에 각각 관련된다.
도 3은 제품 A(110)에 대한 모듈(도 2에 도시됨)을 저장하는 데이터베이스(도 3에 도시되지 않음)의 컨텐츠의 시간 t1에서의 예시적인 스냅샷(300)이다. 모듈 A v1.0(311)은 제품 A(110)의 설계의 버전 1.0을 포함한다. 모듈 A1 v1.0(321) 및 A2 v1.0(331)은 각각 컴포넌트 A1(120) 및 A2(130)(양자 모두 도 2에 도시됨)의 설계의 버전 1.0을 포함한다. 모듈 A2,1 v1.0(341)은 서브컴포넌트 A2,1(140)(도 2에 도시됨)의 설계의 버전 1.0을 포함한다. 모듈 분기(320)는 컴포넌트 A1(120)과 관련된 모듈의 연대순 진행을 지칭하고, 시간 t1에서 모듈 A1 v1.0(321)을 포함하거나 참조한다. 모듈 분기(330)는 컴포넌트 A2(130)에 대한 모듈의 연대순 진행을 지칭하며, 시간 t1에서 모듈 A2 v1.0(331)을 포함하거나 참조한다. 모듈 분기(340)는 서브컴포넌트 A2,1(140)에 대한 모듈의 연대순 진행을 지칭하며, 시간 t1에서, 모듈 A2,1 v1.0(341)을 포함하거나 참조한다.
시간 t1은, 예컨대 제품 A(110)에 대한 설계 팀이 모듈 A v1.0(311)을 데이터베이스로 처음 전송하는 시간일 수 있다. 모듈 A v1.0(311)은 버전 번호 1.0이 할당된 제품 A(110)의 최초 설계를 포함한다. 설계 팀은 이 시간에 또는 그 전에 "알파" 태그(380)에 대한 동적 계층적 참조(351) 및 모듈 A2 v1.0(331)에 대한 정적 계층적 참조(353)를 정의한다.
도 3의 예에서, 정적 계층적 참조(352)가 생성되며, 이는 아래에서 기술하는 것과 같이, 시간 t1에서 “알파” 태그(380)가 참조하는 모듈인 모듈 A1 v1.0(321)을 가리킨다. 따라서, 처음에는, 350으로 그룹화된 계층적 참조(351, 352) 양자는 상이한 객체를 가리키지만 동일한 모듈을 참조한다. 동적 계층적 참조가 생성되는 시간에 정적 계층적 참조를 자동으로 정의함으로써, 미래의 설계 팀은, 동적 계층적 참조가 후속 버전 모듈을 가리키는 경우에도, 동적 계층적 참조의 초기 관계를 결정하기 위해 이러한 정적 계층적 참조를 이롭게 이용할 수 있다.
유사한 방식으로, 모듈 A2 v1.0(331)에 대한 동적 계층적 참조(361)가 컴포넌트 A2에 대한 설계 팀에 의해, 이 팀이 모듈 A2 v1.0(331)을 데이터베이스에 전송하거나 커미트(commit)할 때, 혹은 그 전에 생성된다. 이 예에서, 컴포넌트 A2에 대한 설계 팀은 "골든(golden)" 태그(390)를 가리키기 위해 동적 계층적 참조(361)를 정의한다. 골든 태그(390)는 처음에는 모듈 A2,1 v1.0(341)을 가리킨다. 정적 계층적 참조(362)는 동적 계층적 참조(361)가 처음에 가리키는 것과 동일한 모듈, 즉 모듈 A2,1 v1.0(341)을 가리키도록 자동으로 정의된다. 처음에, 360으로 그룹화되는 계층적 참조(361, 362) 양자는 상이한 객체를 가리키지만 동일 모듈을 참조한다.
도 3에 도시된 예에서, 컴포넌트와 관련된 모듈에 대한 계층적 참조는 모듈이 데이터베이스로 커미트될 때 생성된다. 그러나, 모듈에 저장된 계층적 참조는 모듈이 커미트된 후의 임의 시간에 추가, 삭제 또는 변경될 수 있다.
도 4는 이후의 시간 t2에서의, 제품 A(110)(도 2에 도시됨)에 대한 모듈을 저장하는 데이터베이스(도 4에 도시되지 않음)의 컨텐츠의 스냅샷(400)이다. t1과 t2 사이의 시간에서, 컴포넌트 A1(120), A2(130) 및 A2,1(140) 각각에 대한 설계 팀은 새로운 모듈 A1 v1.1(421), A2 v1.1(431) 및 A2,1 v1.1(441)을 전송한다. 또한, 컴포넌트 A2,1(140)에 대한 설계 팀은 “골든” 태그(390)를 모듈 A2,1 v1.0(341)로부터 모듈 A2,1 v1.1(441)로 이동시킨다.
일반적으로, 계층적 참조는 동적이거나 정적일 수 있다. 정적 계층적 참조(예컨대, 계층적 참조(352, 353, 362))는 컴포넌트 또는 서브컴포넌트의 특정 버전을 포함하는 모듈을 참조한다. 예컨대, 정적 계층적 참조(352)는 컴포넌트 A1(120)의 설계의 버전 1.0을 포함하는 모듈 A1 v1.0(321)을 참조한다. 한편, 동적 계측적 참조(예컨대, 계층적 참조(351, 361))는 태그 또는 모듈 분기를 참조할 수 있으며, 이것은 그 후에 특정한 모듈을 참조한다. 태그 및 모듈 분기는 변할 수 있으며, 따라서 동적 계층적 참조가 궁극적으로 참조하는 모듈은 변할 수 있다. 태그는 상이한 모듈을 참조하도록 사용자에 의해 수동으로 변경될 수 있다. 예컨대, 컴포넌트 A2,1(140)에 대한 설계 팀은 "골든" 태그(390)를 모듈 A2,1 v1.0(341)로부터 모듈 A2,1 v1.1(441)로 이동시킨다. 모듈 분기는, 모듈 분기에 새로운 모듈(예컨대, 새로운 모듈 버전)을 추가함으로써 변경될 수 있다. 예컨대, 컴포넌트 A1(120)에 대한 설계 팀이 새로운 모듈 A1 v1.1(421)을 데이터베이스에 전송하는 때에, 모듈 분기(320)는, 새로운 모듈 A1 v1.1(421)(예컨대, 모듈 분기는 최신의 버전을 가리킴)을 추가적으로 포함하거나 참조하도록 변경된다.
상이한 유형의 태그가 정의될 수 있다. 예컨대, 임의의 컴포넌트의 최신 모듈은 컴포넌트의 "형성 중인(in-process)" 버전을 나타낼 수 있는 "알파" 태그와 관련될 수 있다. 도 3에 도시된 예에서, 분기(320)를 참조하도록 "알파" 태그(380)를 정의함으로써, "알파" 태그(380)는 모듈 분기(320)가 참조하거나 포함하는 최신 버전을 갖는 모듈을 참조한다. 다른 실시예에서, 동적 계층적 참조(351)가 모듈 분기(320)를 직접 가리킬 수 있으며, 동일 결과가 적용될 것이다. 다른 예(도시되지 않음)에서, 컴포넌트의 모듈은 컴포넌트의 "테스트 중(testing)" 버전을 나타낼 수 있는 "베타"로 태깅될 수 있다. 컴포넌트의 모듈은 컴포넌트의 최신의 "안정적인(stable)" 버전을 나타낼 수 있는 "골든"으로 태깅될 수도 있다. 도 3에 도시된 예에서, 컴포넌트 A2,1(140)에 대한 설계 팀은 처음에 컴포넌트 A2,1(140)의 버전 1.0을 "골든" 버전으로 정의한다. "알파", "베타" 및 "골든" 태그 각각은 변경가능하므로(예컨대, 설계 그룹은 상이한 버전 모듈을 가리키도록 태그를 변경할 수 있으므로) 동적이며, 따라서 시간이 경과함에 따라 항상 동일한 모듈을 참조하지는 않는다.
도 5는 컴포넌트의 필터링을 포함하는 예시적인 제품 A(511)의 계층적 표현("계층구조")(500)이다. 제품 A(511)(본 명세서에서는 계층구조(500)의 "헤드 컴포넌트" 또는 "루트" 컴포넌트라고도 한다)는 제1 컴포넌트 A1(521) 및 제2 컴포넌트 A2(531)를 포함한다. 제품 A(511)는 제품 A(110)(도 1 및 도 2에 도시됨) 또는 제품 A v1.0(311)(도 3 및 도 4에 도시됨)과 유사할 수 있으며, 컴포넌트 A1(521) 및 A2(531)은 제품 A1(120) 및 A2(130)(도 1 및 도 2에 도시됨) 또는 A1 v1.0(321) 및 A2 v1.0(331)(도 3 및 도 4에 도시됨)과 유사할 수 있다. 제1 컴포넌트 A1(521)은 하나의 서브컴포넌트 B v1.1(522)을 포함한다. 제2 컴포넌트 A2(531)는 하나의 서브컴포넌트 A1(532)를 포함하며, 그 자체는 서브컴포넌트 B v1.2(533)를 포함한다. 제품 A(511)가 2개의 별도의 A1 컴포넌트, A1(521) 및 A1(532)을 포함하며, 하나는 제품 A(511) 자신의 직계 자식이며, 다른 것은 A2(531)의 자식임에 유의한다. 마찬가지로, 제품 A(511)는 2개의 별도의 B 컴포넌트, B v1.1(522) 및 B v1.2(533)를 포함하며, 이들 2개의 B 컴포넌트는 동일한 컴포넌트의 상이한 버전 번호를 참조한다.
제품 A(511)는 컴포넌트 A1(521) 및 A2(531)와 각각 계층적인 연관성(512, 513)을 갖는다. 마찬가지로, 컴포넌트 A1(521)은 서브 컴포넌트 B v1.1(522)과 계층적인 연관성(514)을 갖고, 컴포넌트 A2(531)는 서브컴포넌트 A1(532)과 계층적인 연관성(515)을 갖고, 서브컴포넌트 A1(532)은 서브컴포넌트 B v1.2(533)와 계층적인 연관성(516)을 갖는다. 계층구조(500) 내의 각각의 컴포넌트가 버전 번호와 같은 버전 식별자를 포함할 수 있지만, A(511), A1(521) 및 A2(531)을 위한 버전 번호는 집중과 가독성을 위해 제외되었음을 이해하여야 한다.
본 명세서에서 사용된 용어 "후손", "조상", "부모" 및 "자식"은, 컴포넌트 간의 논리적으로 가계에 관한, 계층 관계(예컨대, 컴포넌트의 트리 구조)를 지칭한다. 예컨대, 컴포넌트 B v1.1(522)은 그 조상 A1(521) 및 A(511)의 후손으로 지칭될 수 있다. 컴포넌트 A1(521)은 컴포넌트 B v1.1(522)의 부모(즉, 처음에 인접하는 직전의 조상)이며, 마찬가지로, 컴포넌트 B v1.1(522)은 컴포넌트 A1(521)의 자식이다. 또한, 컴포넌트 A1(521) 자체는 컴포넌트 A(511)(즉, 그의 부모)의 후손(이 경우에는 자식)이다. 이에 의해, 이들 용어는 컴포넌트 간의 이러한 논리적 관계들을 정의하고 설명하는 데에 편리하게 사용될 수 있다.
예시적인 실시예에서, 계층구조(500)는 하나 이상 컴포넌트를 식별하고 필터링하는 데에 사용된 필터(550)를 포함한다. 본 명세서에서 사용된 용어 "필터링 컴포넌트"는, 통상적으로 필터(550)와 같은 필터가 필터링을 위해 식별하는 컴포넌트를 지칭하는 데에 사용된다. 용어 "필터링"은 일반적으로 계층구조(500)와 같은 계층구조로부터 컴포넌트(즉, 필터링 컴포넌트)의 제외, 제거 또는 기타 소거를 지칭한다. 도 5에 도시된 바와 같이, 계층구조(500)는 컴포넌트 구조의 변경되지 않은(즉, 필터링되지 않은) 표현이다. 즉, 계층구조(500)는 필터(550)의 적용 전의 컴포넌트 설계의 전체 모습을 나타낸다. 필터(550)의 적용 후에, 하나 이상의 컴포넌트가 제거되거나, 혹은 계층구조(500)에 통합되지 않을 수 있다.
본 명세서에서 기술된 필터(550) 및 컴포넌트의 필터링은 하나 이상의 측면에서 정의되고 기술된다. 범위 측면에서, 필터(550)는 필터(550)가 적용될 효과의 범위 또는 층을 정의한다. 식별정보 측면에서, 필터(550)는 어느 컴포넌트 또는 컴포넌트들을 필터링할 것인지를 식별하도록 동작하는 하나 이상의 식별 기준을 정의한다. 동작 동안, 필터(550)의 이러한 측면 중 하나 이상은 계층구조(500)로부터 필터링을 위한 컴포넌트를 식별하는 역할을 한다. 이러한 측면 각각은 아래에서 보다 상세하게 기술된다.
필터(550)의 범위 측면은 필터링을 위해 고려될 수 있는 컴포넌트의 세트 또는 서브세트를 식별한다. 예시적인 실시예에서, 필터(550)는 계층구조 관계에 기초하여 동작하고, 보다 구체적으로, 계층구조 내의 적용 레벨에 기초하여 우산으로서 동작한다. 필터(550)는 헤드 컴포넌트 A(511)에 부착된다(540). 이에 따라, 필터(550)의 범위는 계층구조(500)의 전체 트리 구조이다. 다른 실시예에서, 필터(550)는, 예컨대, A1(532)과 같은 다른 컴포넌트에 부착될 수도 있다. 그러면, 이에 따라, 필터의 범위는 A1(532)의 서브트리만일 것이다(즉, A1(532) 이하의 구조). 필터(550)와 같이 부착된 필터의 실시예에서, 필터는 필터가 적용되는 최상위 레벨을 정의하기 때문에, 부착의 레벨 이하의 서브컴포넌트만이 필터링의 후보가 될 수 있다. 또 다른 실시예에서, 필터(550)는 부착되지 않을 수도 있다. 그와 같은 부착되지 않은 필터는 전체 계층구조(500)에 적용가능한 것으로 해석된다. 즉, 부착되지 않은 필터는, 루트 노드에 부착될 때(540) 가장 광범위한 범위를 부여하는 필터(550)와 유사하다. 본 명세서에서 사용된 용어 "범위 기준"은 필터링의 범위를 제한하는 역할을 하는 하나 이상의 기준, 또는 필터가 고려될 컴포넌트의 세트를 지칭하는 데에 사용된다. 예시적인 실시예에서, 필터(550)의 부착(540)은 범위 기준의 역할을 한다.
필터(550)의 식별정보 측면은 계층구조(500)로부터 어느 컴포넌트를 필터링, 제외 또는 제거할지를 식별한다. 본 명세서에서 사용된 용어 "식별 기준"은 필터링을 위한 컴포넌트를 식별하는 역할을 하는 하나 이상의 기준을 지칭하는 데에 사용된다. 예시적인 실시예에서, 필터링 컴포넌트의 식별정보는 전술한 바와 같은 범위 기준에 의해 정의된 범위에 의해 제한된다. 다른 실시예들에서, 식별 기준은 범위 기준없이 작동할 수 있고, 단독으로, 또는 다른 기준과 함께 필터링 컴포넌트를 식별하도록 작동할 수 있다.
컴포넌트 및/또는 서브컴포넌트는 계층구조(500)의 구조에 기초하여 몇몇 방식으로 필터링을 위해 식별될 수 있다. 일부 실시예에서, 필터링 컴포넌트는 계층구조(500) 내의 "절대 계층적 명칭"(즉, 필터가 부착된 루트 노드 또는 노드에 대한 특정 관계 경로 또는 위치)에 의해 식별된다. 다른 실시예에서, 필터링 컴포넌트는 서브컴포넌트 구조(본 명세서에서는 "관계 계층적 명칭"으로도 지칭된다)를 이용하여 식별된다. 또 다른 실시예에서, 필터링 컴포넌트는 다른 식별 기준을 이용하여 식별된다. 이들 필터링 기준 각각은 아래에서 더욱 상세하게 기술된다.
계층구조(500) 내의 각각 컴포넌트는 계층구조 내에 컴포넌트의 위치에 근거하여 특유하게 식별될 수 있다. 본 명세서에서 사용된 용어 "경로" 및 "계층적 명칭"은 일반적으로 루트 노드(또는 필터 부착 노드)로부터 컴포넌트를 향하여 아래로, 또는 컴포넌트로부터 루트 노드(또는 필터 부착 노드)를 향하여 위로 탐색되는 계층구조 내의 컴포넌트에 대한 위치 정의를 지칭한다.
예시적인 실시예에서, "절대 계층적 명칭" 필터링 기준은 계층구조(500) 내의 특정 경로에 기초하여 필터링 컴포넌트를 식별하는 데에 사용된다. 보다 구체적으로, "절대 계층적 명칭"은 헤드 컴포넌트 A(511)(예시적인 실시예에서 필터(550)의 부착 노드뿐만 아니라 계층구조(500)의 루트 노드 양자)와 같은, 루트 노드(또는 필터 부착 노드)로부터 아래의 경로를 정의한다. 예컨대, B v1.1(522)와 같은 컴포넌트는 {A, A1, B}의 절대 계층적 명칭을 가지는 것으로 식별될 수 있다. 상기의 예시적인 표기는 필터링 컴포넌트를 루트 노드 A에 부착된 부모 A1을 가지는 컴포넌트 B(리스트 내의 최후 컴포넌트)로 나타낸다. 즉, 루트 노드 A로부터 탐색할 때, 필터링 컴포넌트는 컴포넌트 A1로 내려가서, 그 후에 자식 노드 B(이 경우에는 노드 B v1.1(522))를 위치결정함으로써 식별될 수 있다. 이에 따라, 필터(550)는 필터링 컴포넌트로서 B v1.1(522)을 식별하는 역할을 하는 {A, A1, B}의 절대 계층적 명칭을 포함하는 식별 기준을 포함할 수 있다.
일부 실시예에서, 식별 기준은 헤드 컴포넌트, 이 예에서는 A를 포함하거나, (예컨대, 부착되지 않은 필터 시나리오에서) 헤드 컴포넌트를 제외하고 제1 노드가 헤드 컴포넌트 A인 것으로 추론하거나, (예컨대, 부착된 필터 시나리오에서) 제1 노드가 필터 부착 노드 A인 것으로 추론할 수 있다. 즉, 상기 예에서, 컴포넌트 B v1.1(522)에 대한 절대 계층적 명칭은 절대 계층적 명칭 {A1, B}에 의해 표시될 수 있다.
(루트 노드 대신에) 필터 부착 노드로부터 절대 계층적 명칭을 나타내는 다른 예에서, 필터(550)가 컴포넌트 A2(531)에 부착된 것으로 가정한다. 이에 의해, 부착 노드로서 제1 노드를 추론하는 표기 및 실시예를 사용하여, A2(531)의 필터 부착 노드로부터의 {A1, B}와 같은 절대 계층적 명칭은 노드 B v1.2(533)를 식별하는 역할을 한다. 따라서, {A1, B}의 식별 기준을 포함하는 A2(531)에 부착된 필터는 계층구조로부터 노드 B v1.2(533)를 필터링하는 역할을 할 것이다.
제공된 표기법이 계층구조 내의 노드들 간의 계층구조 관계(즉, 관계 경로)를 표기하고 표현하기 위한 단지 하나의 예시적인 방법임을 이해해야 한다. 본 명세서에서 기술된 시스템과 방법을 가능하게 하는 계층구조 내의 컴포넌트의 경로 구조를 나타내거나 식별하는 어떠한 수단도 이용될 수 있다. 이에 따라, 계층구조 내의 각각의 노드는 루트 노드, 또는 필터 부착 노드에 대한 절대 계층적 명칭에 기초하여 식별될 수 있다.
예시적인 실시예에서, "관계 계층적 명칭" 필터링 기준은 필터링 컴포넌트로부터 위로 향한 경로에 의해 정의된 서브컴포넌트 구조에 기초하여 필터링 컴포넌트를 식별하는데 사용된다. 보다 구체적으로, "관계 계층적 명칭"은 필터링 컴포넌트에 대한 계층구조 내에 경로를 정의하는 관계 경로이다. 예컨대, 필터(550)가 {A1, B}를 포함하는 관계 계층적 명칭 유형 식별 기준을 포함하는 것으로 가정한다. 관계 계층적 명칭 유형 식별 기준은 필터링 컴포넌트를 식별하기 위해 반드시 정합해야 할 서브구조를 정의하는 것으로 기술될 수 있다. 관계 계층적 명칭 기준은 여전히 톱다운 방식(예컨대, A1은 B의 부모이다)으로 정리되지만, 이들은 정의된 노드 관계에 기초하여 정합하게 된다. 즉, 예시적인 식별 기준 {A1, B}에서, 특정 컴포넌트 B는 부모가 컴포넌트 A1이면 정합할 것이다(즉, 필터링 컴포넌트로 식별될 것이다). 계층구조(500)에서는, 식별 기준 {A1, B}와 정합하는 2개의 서브구조-컴포넌트 B v1.1(522) 및 컴포넌트 B v1.2(533) 양자가 존재한다(양자는 B 컴포넌트이며, 양자는 부모로서 A1 컴포넌트를 가지기 때문이다).
이에 의해, 관계 계층적 명칭 유형 식별 기준은, 마지막 요소로서 필터링 컴포넌트와, 선택적으로 그 필터링 컴포넌트의 하나 이상의 조상을 더한 것을 포함하는 순서 리스트로 기술될 수 있다. 예시적인 실시예에서, 리스트 내의 어떠한 조상도 건너 뛰어지지 않는다(즉, 리스트는 반드시 모든 조상은 아닐지라도, 조상의 끊어지지 않는 체인을 포함한다). 일부 실시예에서, 관계 계층적 명칭 리스트의 리스트 엔트리는 "와일드카드"(즉, '*', '?' 등)를 컴포넌트 정합의 일부로서 포함할 수 있다. 예컨대, 상기 예시적인 리스트는 {*, A1, B}로서 표현될 수 있는데, 이는 A1의 임의의 추가적인 조상이 정합할 것임을 나타낸다. 또한, 리스트 엔트리는 하나 이상의 컴포넌트의 세트를 포함할 수 있다. 예컨대, 리스트 {(A1, A2), B}는 A1 또는 A2를 포함하는 제1 리스트 요소를 식별한다. 이에 의해, B 컴포넌트는 그 부모가 A1 컴포넌트 또는 A2 컴포넌트 중 하나이면, 식별 기준에 정합한다.
하나 극단에서, 예시적인 실시예에서, 루트 노드까지의 필터링 컴포넌트의 모든 조상을 포함하는 계층적 명칭 유형 식별 기준은 필터링 컴포넌트의 절대 계층적 명칭과 동등하며, 그에 의해, 그 특정 노드를 단독으로 식별한다. 다른 극단에서, 리스트는 어떠한 조상도 없이 단지 필터링 컴포넌트 자체만을 포함하며, 그에 의해, 그 주어진 필터링 컴포넌트와 정합하는 모든 노드를 식별한다. 이에 의해, 관계 계층적 명칭 유형 식별 기준은 복수의 필터링 컴포넌트를 확인할 수 있다.
또한, 예시적인 실시예에서, 필터(550)는 관계 계층적 명칭 유형 식별 기준과 함께 범위 기준을 포함할 수 있다. 도 5는 부착된 필터(즉, 필터 부착 컴포넌트 A(511)에 부착된(540) 필터(550))를 도시하며, 이에 의해, {A1, B}의 예시적인 관계 계층적 명칭 유형 식별 기준은 전술한 바와 같이 컴포넌트 B v1.1(522) 및 B v1.2(533) 양자와 정합할 것이다. 또는, 동일한 식별 기준이지만, 노드 A2(531)에 부착된 필터에서 고려한다. 즉, 필터의 범위는 A2(531) 아래에 정의된 서브계층구조만으로(즉, 서브구조의 "루트" 노드로서 A2(531)을 가짐) 제한된다. 이에 의해, 컴포넌트 B v1.2(533) 만이 필터링 컴포넌트로서 식별될 것이다.
일부 실시예에서, 식별 기준은, 예컨대 컴포넌트 식별자(예컨대, URL), 버전 식별자(예컨대, 버전 번호), 계층적 명칭 및/또는 href와 같이, 어떤 컴포넌트를 다른 컴포넌트로부터 구별하는 데에 사용될 수 있는 다른 컴포넌트 식별 정보를 포함할 수 있다. 또한, 식별 기준은, 예컨대 관계 계층적 명칭 리스트 AND 컴포넌트 버전의 정합과 같이, 결합된 효과를 위하여 전통적인 논리적 연산자(AND, OR, NOT 등)를 사용하여 함께 결합될 수도 있다.
또한, 필터(550)와 같은 다중 필터가 계층구조(500) 내에 제공될 수도 있다. 필터는 상이한 범위 및/또는 상이한 식별 기준을 가질 수 있다.
동작 중에, 예시적인 실시예에서, (도 7에 도시된) 계층구조 관리 시스템(HMS)(720)과 같은 컴퓨팅 시스템, 또는 (도 8에 도시된) 컴퓨팅 장치(810)는 컴퓨터를 활용한 제도 시스템 내의 제품 A(511)의 계층적 표현(500)과 같은 제품 및/또는 컴포넌트의 계층적 표현의 판독 및 구축을 담당한다. HMS(720)는 시스템의 작업 메모리 내의 데이터 구조에 컴포넌트 모듈들을 로딩한다. 또한, 사용자는 임의의 범위 기준 및/또는 식별 기준과 함께 하나 이상의 필터(550)를 정의한다(본 명세서에서 필터 정의로도 지칭된다). 예시적인 실시예에서, 사용자는 계층구조(500)를 시스템 메모리에 로딩하기 전에 필터 정의를 제공한다. 다른 실시예에서, 사용자는 필터 정의를 HMS(720)에 제공하고, HMS(720)는 필터(550)를 이미 로딩된 계층구조(500)에 적용한다.
예시적인 실시예에서, 사용자가 도시된 바와 같은 범위 기준을 가지고(즉, 따라서, 루트 노드 A(511)에 부착되고), {A2, A1, B}의 관계 계층적 명칭 유형 식별 기준(즉, 부모로서 A1을 가지고, 조부모로서 A2를 가지는 임의의 B 컴포넌트를 필터링)을 가지는 필터(550)를 정의하는 것으로 가정한다. 계층구조(500)는 깊이 우선 방식(depth-first fashion)의 루트 노드로부터 시작하여 배치된다. 서브컴포넌트를 로딩하기 전에, HMS(720)는 서브컴포넌트가 필터링 컴포넌트로서 정합하는지를 결정하기 위해 기존 필터(550)를 평가한다. HMS(720)는 루트 노드로서 컴포넌트 A(511)를 로딩한다. 일부 알려진 시스템에서, 서브컴포넌트 A1(512)은 즉시 처리될 것이다(즉, 자식 컴포넌트(521)의 데이터 구조는 부모 컴포넌트 A(511)의 계층적 참조에 기초하여 계층구조 내에 즉시 로딩될 것이다). 그러나, 예시적인 실시예에서는, 각각의 서브컴포넌트를 로딩하기 전에, HMS(720)는 서브컴포넌트(예를 들면, 제1 자식 A1(521))를 필터(예컨대, 550)와 비교함으로써 필터링 후보로서의 서브컴포넌트를 검사한다. A1(521)은 필터(550)와 정합하지 않는다(즉, 리스트 내의 최종 컴포넌트인 B 컴포넌트가 아니다). 이에 의해, HMS(720)는 A1(521)을 로딩하고, A1(521)의 자식을 검사하기 위해 내려간다. A1(521)의 유일한 자식은 B v1.1(522)이며, HMS(720)는 이것을 필터(550)와 비교한다. B v1.1(522)은 B 노드이고, 따라서, 리스트의 최종 요소와 정합한다. 또한, B v1.1(522)의 부모는 A1(521)이며, 이것은 A1이며, 리스트의 제2 요소와 정합한다. 그러나, B v1.1(522)의 조부모(즉, A1(521)의 부모)는 A(511)이며, 이것은 리스트의 제1 컴포넌트(즉, A2)와 정합하지 않는다. 이에 의해, 컴포넌트 B v1.1(522)은 필터(550)와 정합하지 않고, 따라서 HMS(720)는 컴포넌트 B v1.1(522)를 로딩하고, A(511)의 다음 자식의 처리를 계속한다.
예시적인 실시예에서, HMS(720)는 A(511)의 제2 자식인 컴포넌트 A2(531)를 검사한다. 이 자식은 B 컴포넌트가 아니므로, 필터링 컴포넌트로서 정합하지 않는다. 따라서, HMS(720)는 컴포넌트 A2(531)을 로딩하고, 유일한 자식 A1(532)의 조사를 진행한다. A1(532) 또한 B 컴포넌트가 아니므로, HMS(720)는 A1(532)을 로딩하고, 유일한 자식 B v1.2(533)의 검사를 진행한다. 이 자식은 B 컴포넌트이므로, 필터(550)의 리스트의 최종 요소와 정합한다. 또한, 그 부모는 A1 컴포넌트이고, 그 조부모는 A2 컴포넌트이다 따라서, HMS(720)는 필터링 컴포넌트로서 컴포넌트 B v1.2(533)를 식별하고, 그 컴포넌트를 계층구조(500)에 로딩하지 않는다.
도 5에 대한 상기 예는 새로운 구조 로딩 중에(즉, 메모리 내의 컴포넌트의 계층구조의 초기 구축 중에) 행해지는 것으로 기술되었다. 그러나, 본 개시내용의 범위 내에서 다른 필터링 계층구조 컴포넌트의 구현도 가능함을 이해하여야 한다. 예컨대, 컴포넌트 필터링은 이미 구축된 구조(예컨대, 작업 메모리에 이미 로딩된 계층구조)를 이용하여 실행될 수 있으며, 그에 의해 필터와 정합하는 임의의 컴포넌트를 삭제한다. 또한, 다른 실시예에서, HMS(720)는 본 명세서에서 기술된 시스템과 방법을 가능하게 하는 폭 우선 탐색(breadth-first search) 또는 임의의 다른 탐색 방법을 수행할 수 있다.
도 6은 필터링 기준을 식별하고 통합하는 예시적인 계층구조 로딩 프로세스(600)를 도시하는 흐름도이다. 예시적인 실시예에서, 프로세스(600)는 (도 7에 도시된) HMS(720)와 같은 컴퓨팅 시스템, 또는 (도 8에 도시된) 컴퓨팅 장치(810)를 이용해서 행해진다. 설계 팀은 (도 5에 도시된) 제품 A(511)과 같은 자신의 모듈(예컨대, 컴포넌트 계층구조)의 버전에 대한 요청을 입력한다. 예시적인 실시예에서, HMS(720)는 도 5에 도시된 바와 같은 계층구조(500)의 제품 A(511)과 관련된 계층구조를 로딩한다(602). 최상위 레벨 모듈 및 순차적으로 참조되는 각각의 모듈은 하나 이상의 서브컴포넌트에 대한 참조를 포함할 수 있다. 각각의 서브컴포넌트 또한 관련된 모듈을 가질 수 있으며, 이 관련된 모듈 또한 하나 이상의 서브컴포넌트에 대한 참조를 포함할 수 있고, 기타 등등이다.
일부 실시예에서, HMS(720)는 먼저 글로벌 필터(즉, 계층구조(500)의 전체 범위에 적용되는 필터)를 로딩한다(603). 그런 다음, 예시적인 실시예에서, HMS(720)는 요소(511)에 의해 나타난 것과 같이, 제품 A(511)에 대한 모듈을 검색하고(604), 이것을 계층구조(500)에 통합시킴으로써 모듈 로딩 프로세스를 개시한다(즉, 최상위 레벨 제품에 대한 데이터 구조가 최상위 모듈로부터 유입된 데이터를 포함하여 메모리에서 생성된다). 최상위 모듈 모딩 프로세스의 일부로서, HMS(720)는 최상위 모듈에 부착된 임의의 필터 또한 로딩한다. 본 예에서, HMS(720)는 최상위 모듈 A(511)에 부착된(540) 필터(550)를 로딩한다. 이에 의해, 필터(550)는 전체 계층구조(500)를 커버하는 범위를 갖고, A1의 부모를 가지는 임의의 B 컴포넌트와 정합할 것이다(즉, 도 6에서 "{A1, B}"로 나타남).
단계 610에서, HMS(720)는 처리되는 현재 모듈(이 단계에서는, 제품 A(511)와 관련된 최상위 모듈)이 아직 처리되지 않은(즉, 계층구조(500)에 아직 유입되지 않은) 임의의 서브컴포넌트를 가지는지 여부를 검사한다. 도 5에 도시된 바와 같이, 최상위 모듈은 컴포넌트 A1(521) 및 A2(531)를 참조한다. 하나 이상의 검토되지 않은 서브컴포넌트가 남아 있는 경우에는, HMS(720)는 검토되지 않은 서브컴포넌트를 유입하기 위해 선택한다(620). 따라서, HMS(720)는 검토되지 않은 첫 번째 서브컴포넌트 A1(521)을 선택한다.
서브컴포넌트 A1(521)를 완전히 유입하기 전에, HMS(720)는 필터링을 위한 서브컴포넌트를 분석한다(즉, 현재 서브컴포넌트가 계층구조(500)로부터 제외되거나 제거되어야 할지를 결정한다). HMS(720)는 임의의 정합하는 필터에 대하여 서브컴포넌트를 비교한다(630). 640에서 현재의 서브컴포넌트가 하나 이상의 필터와 정합하면, 그 서브컴포넌트는 계층구조(500)로부터 제외(또는 제거)된다(642). 640에서 현재의 서브컴포넌트가 하나 이상의 필터와 정합하지 않으면, HMS(720)는 분석되는 서브컴포넌트와 관련된 모듈을 검색/로딩(644)하고, 그 모듈을 계층구조(500) 내에 유입한다. 본 예에서는, 서브컴포넌트 A1(521)는 필터(550)와 정합하지 않고, 따라서, HMS(720)는 이 서브컴포넌트를 로딩한다(644)(즉, 컴포넌트 A1(521)이 A(511)의 자식으로서 추가된다).
예시적인 실시예에서, 서브컴포넌트 모듈의 검색(644)의 일부로서, 이 서브컴포넌트는 검토 중인 현재 모듈이 된다. HMS(720)는 단계 610에서 컴포넌트 A1(521)의 서브컴포넌트를 고려하기 위해 루프 업(loop up)한다. 본 예에서, 컴포넌트 A1(521)은 하나의 서브컴포넌트 B v1.1(522)을 갖는다. HMS(720)는 검토되지 않은 서브컴포넌트 B v1.1(522)을 선택하고(620), 이 서브컴포넌트를 필터(550)(즉, 유일한 액티브 필터)와 비교한다(630). 이 단계에서, 계층구조(500)는 2개의 로딩된 노드(즉, 2개의 컴포넌트) A1(521)(B v1.1(522)의 부모) 및 A(511)(B v1.1(522)의 조부모)를 포함한다. HMS(720)는 서브컴포넌트 B v1.1(522)가 그 부모가 A1 컴포넌트인 B 컴포넌트이기 때문에 필터(550)와 정합한다는 것을 결정한다. 이에 의해, HMS(720)는 계층구조(500)로부터 컴포넌트 B v1.1(522)을 제외(또는 제거)하고(642), 단계 610으로 되돌아간다. 즉, A(511), A1(521) 및 B v1.1(522)을 포함하는 분기를 고려한 후, 헤드 컴포넌트에 부착된 필터와 함께, HMS는 컴포넌트 A(511) 및 A1(521)만을 로딩하였지만, 필터(550)에 기초하여 계층구조(500)으로부터 컴포넌트 B v1.1(522)을 제외(또는 제거)하였다.
상기 예를 계속하여, 서브컴포넌트 B v1.1(522)가 제외되어, 그 컴포넌트의 더 깊은 자식은 조사되지 않을 것이다. 이에 의해, 단계 610에서, 컴포넌트 A1(521)은 더 이상 어떠한 검토되지 않은 서브컴포넌트도 가지지 않는다. 이에 의해, 그 후에 HMS(720)는 현재의 모듈을 완성한다(650). 이어서, HMS(720)는 최상위 모듈이 완료되었는지를 검사한다(660). 그렇지 않다면, HMS(720)는 추가적인 분석을 위해 현재의(즉, 지금 막 완료된) 컴포넌트의 부모에게 되돌아간다(670). 즉, 컴포넌트의 서브컴포넌트 각각이 완전히 검토되면, HMS(720)는 단계 670에서 그 컴포넌트의 부모로 거슬러 올라가서 그 부모의 다른 서브컴포넌트의 처리를 계속한다. HMS(720)는, 단계 660에서 최상위 모듈이 완전하게 검토된 때에(즉, 최상위 모듈의 서브컴포넌트 모두가 검토된 후에) 종료한다(680).
비슷한 방식으로, 그 후에 HMS(720)는, 도 5에 도시된 바와 같이, 자식 B v1.2(533)를 포함하는 서브컴포넌트 A1(532)의 아버지가 되는 컴포넌트 A2(531)의 라인을 포함하는 헤드 컴포넌트 A(511)의 다음의 검토되지 않은 서브컴포넌트를 조사한다. 단계 610으로부터 전술한 바와 같이 프로세스(600)의 루핑을 이용하여, HMS(720)는 자식 B v1.2(533)이 A1 부모를 가진 B 컴포넌트(즉, 정합하는 필터(550))이기 때문에 그것 또한 정합하고, 제외한다. 이에 의해, 이러한 분기의 컴포넌트 A2(531) 및 A1(532)만이 계층구조(500) 내에 로딩될 것이다.
예시적인 실시예에서, HMS(720)는 계층구조(500)의 검사 및 구성에 대하여 깊이 우선 접근을 기술한다(즉, 각각의 새로운 컴포넌트의 조사에서, HMS(720)는 다른 서브컴포넌트를 검토하기 전에, 제1 서브컴포넌트로 내려가서 전부 검사한다). 그러나, 예컨대, 폭 우선 접근방식(즉, 임의의 서브컴포넌트로 내려가기 전에 소정의 레벨에서의 모든 컴포넌트를 검토하는 것)과 같이 본 명세서에 기술된 시스템 및 방법의 동작을 가능하게 하는 계층구조(500)의 탐색 및 구축에 대한 임의의 다른 접근방식이 이용될 수도 있음을 이해해야 한다. 또한, 필터(550)는 범위 기준(즉, 논리적 부착 지점에 기초하여 헤드 컴포넌트 A(511) 이하) 및 필터링 컴포넌트 및 그 부모의 컴포넌트 유형만을 포함하는 식별 기준만을 기술한다. 그러나, 본 개시내용의 범위 내에서 범위 및 식별에 대한 다른 기준 또한 가능함을 이해해야 한다.
도 7은 (도 5에 도시된) 계층구조(500)와 같은 컴포넌트 설계 계층구조 내의 필터링 기준을 구현하는 데에 사용되는 예시적 계층구조 관리 시스템(720)의 블록도(700)이다. 또는, 본 명세서에서 기술된 바와 같은 계층구조 관리 시스템(720)의 동작을 가능하게 하는 임의의 컴퓨터 아키텍처가 사용될 수 있다. 예시적인 실시예에서, 계층구조 관리 시스템(720)은 메모리 장치(750) 내의 데이터 구조 내의 컴포넌트 설계 계층구조를 구성하는 것을 용이하게 하며, 도 6을 참조하여 프로세스(600)에 의해 기술된 바와 같은 필터링 기준 및 컴포넌트 제외 또는 제거를 가능하게 한다.
예시적인 실시예에서, 계층구조 관리 시스템(720)은 메모리 장치(750) 및 명령어의 실행을 위해 메모리 장치(750)에 기능적으로 결합된 프로세서(752)를 포함한다. 일부 실시예에서, 실행가능 명령어는 메모리 장치(750)에 저장된다. 계층구조 관리 시스템(720)은 프로그래밍 프로세서(752)에 의해 본 명세서에서 기술되는 하나 이상의 동작을 수행하도록 구성될 수 있다. 예컨대, 프로세서(752)는 하나 이상의 실행가능 명령어로서 동작을 인코딩하고, 그 실행가능 명령어를 메모리 장치(750) 내에 제공함으로써 프로그래밍될 수 있다. 프로세서(752)는, 예컨대 멀티코어 구성의 하나 이상의 처리 유닛을 포함할 수 있으며, 이에 한정되지 않는다.
예시적인 실시예에서, 메모리 장치(750)는 실행가능 명령어 및/또는 기타 데이터와 같은 정보의 저장 및 검색을 가능하게 하는 하나 이상의 장치이다. 메모리 장치(750)는 랜덤 액세스 메모리(RAM), 동적 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM), 반도체 디스크, 하드 디스크, 판독 전용 메모리(ROM), 소거 및 프로그래밍 가능 ROM(EPROM), 전기적 소거 및 프로그래밍 가능 ROM(EEPROM) 및/또는 비휘발성 RAM(NVRAM) 메모리와 같은, 하나 이상의 유형의, 비일시적 컴퓨터 판독가능 매체를 포함할 수 있으며, 이에 한정되지 않는다. 상기 메모리 유형들은 예시적일 뿐이며, 따라서 컴퓨터 프로그램의 저장에 사용가능한 메모리의 유형들을 한정하지 않는다.
예시적인 실시예에서, 메모리 장치(750)는 다양한 컴포넌트 및 서브컴포넌트들과 관련된 다양한 컴포넌트 및 모듈 데이터를 데이터 구조, 파일 또는 기타 메모리 영역 내에 저장하도록 구성될 수 있다. 또한, 메모리 장치(750)는 컴포넌트 관계 데이터, 필터 데이터 및 계층구조(500)와 같은 계층 데이터, 또는 도 1 내지 도 5에 도시된 것과 같은 기타 컴포넌트 관련 데이터를 저장할 수 있다. 또한, 메모리 장치(750)는 도 5에 도시된 것과 같은 필터링 기준 데이터를 저장할 수도 있다.
일부 실시예에서, 계층구조 관리 시스템(720)은 프로세서(752)에 결합된 프레젠테이션 인터페이스(754)를 포함한다. 프레젠테이션 인터페이스(754)는 사용자 인터페이스 및/또는 알람과 같은 정보를 사용자(756)에게 제공한다. 예컨대, 프레젠테이션 인터페이스(754)는 음극선관(CRT), 액정 디스플레이(LCD), 유기 LED(OLED) 디스플레이 및/또는 디스플레이를 구비한 핸드헬드 장치와 같은 디스플레이 장치(도시되지 않음)에 결합될 수 있는 디스플레이 어댑터(도시되지 않음)를 포함할 수 있다. 일부 실시예에서, 프레젠테이션 인터페이스(754)는 하나 이상의 디스플레이 장치를 포함한다. 추가로 또는 대안으로서, 프레젠테이션 인터페이스(754)는 오디오 출력 장치(도시되지 않음), 예컨대 오디오 어댑터 및/또는 스피커를 포함할 수 있다.
일부 실시예에서, 계층구조 관리 시스템(720)은 사용자 입력 인터페이스(758)를 포함한다. 예시적인 실시예에서, 사용자 입력 인터페이스(758)는 프로세서(752)에 결합되고, 사용자(756)로부터 입력을 수신한다. 사용자 입력 인터페이스(758)는, 예컨대 키보드, 포인팅 장치, 마우스, 스타일러스 및/또는 터치 감지 패널, 예컨대 터치 패드 또는 터치 스크린을 포함할 수 있다. 터치 스크린과 같은 단일 컴포넌트가 프레젠테이션 인터페이스(754) 및 사용자 입력 인터페이스(758) 양자의 디스플레이 장치로서 기능할 수 있다.
예시적인 실시예에서, 통신 인터페이스(760)는 프로세서(752)에 결합되며, 휴대용 랩탑 컴퓨터, 개인용 휴대 단말기(PDA) 및 스마트폰을 포함하며, 이에 한정되지 않는 계층구조 관리 시스템(720)에 액세스할 수 있는 다른 컴퓨팅 시스템 또는 임의의 장치와 같은 하나 이상의 다른 장치와 통신하도록 결합되도록 구성된다. 통신 인터페이스(760)는 유선 네트워크 어댑터, 무선 네트워크 어댑터, 모바일 통신 어댑터, 직렬 통신 어댑터 및/또는 병렬 통신 어댑터를 포함할 수 있으며, 이에 한정되지 않는다. 통신 인터페이스(760)는 하나 이상의 원격 장치에 대하여 데이터를 송수신할 수 있다. 계층구조 관리 시스템(720)은, 예컨대 원격 데스크탑 컴퓨터(도시되지 않음)와 웹을 통해 원격 통신할 수 있다.
예시적인 실시예에서, 프레젠테이션 인터페이스(754) 및/또는 통신 인터페이스(760)는 본 명세서에서 기술되는 방법들과 함께 사용하기에 적합한 정보를, 예컨대 사용자(756) 또는 다른 장치에 제공할 수 있다. 따라서, 프레젠테이션 인터페이스(754) 및/또는 통신 인터페이스(760)는 출력 장치로서 지칭될 수 있다. 유사하게, 사용자 입력 인터페이스(758) 및/또는 통신 인터페이스(760)는 본 명세서에서 기술되는 방법과 함께 사용하기에 적합한 정보를 수신할 수 있으며, 입력 장치로서 지칭될 수 있다.
또한, 프로세서(752) 및/또는 메모리 장치(750)는 저장 장치(762)에 기능적으로 결합될 수 있다. 저장 장치(762)는 데이터베이스(164)와 관련된 데이터와 같은, 그러나 이에 한정되지 않는 데이터를 저장 및/또는 검색하기에 적합한 임의의 컴퓨터 동작 하드웨어이다. 예시적인 실시예에서, 저장 장치(762)는 계층구조 관리 시스템(720)에 통합된다. 예컨대, 계층구조 관리 시스템(720)은 하나 이상의 하드 디스크 드라이브를 저장 장치(762)로서 포함할 수 있다. 더욱이, 예컨대, 저장 장치(762)는 RAID(redundant array of inexpensive disks) 구성에서 하드 디스크 및/또는 반도체 디스크와 같은 복수의 저장 유닛을 포함할 수 있다. 저장 장치(762)는 저장 영역 네트워크(SAN), 네트워크 접속 저장(NAS) 시스템 및/또는 클라우드 기반 저장소를 포함할 수 있다. 또는, 저장 장치(762)는 계층구조 관리 시스템(720) 외부에 위치할 수 있으며, 저장 인터페이스(도시되지 않음)에 의해 액세스될 수 있다.
더욱이, 예시적인 실시예에서, 데이터베이스(764)는 컴포넌트, 모듈, 필터 및 계층구조와 관련된 다양한 정적 및 동적 동작 데이터를 포함한다.
본 명세서에서 도시되고 기술된 실시예는 물론, 본 명세서에서 구체적으로 기술되지 않지만 본 개시내용의 측면의 범위 내에 있는 실시예들은 필터링 기준을 포함하는 컴포넌트 계층구조를 관리하기 위한 예시적인 수단을 구성한다. 예컨대, 계층구조 관리 시스템(720) 및 그에 추가되거나 그 안에 포함된 임의의 다른 유사한 컴퓨터 장치는, 함께 통합될 때, 본 명세서에서 기술되는 바와 같은 프로세서를 이용하여 프로세스 및 기술을 실행하기 위해 충분한 컴퓨터 실행가능 명령어로 프로그래밍되는 충분한 컴퓨터 판독가능 저장 매체를 포함한다. 구체적으로, 계층구조 관리 시스템(720) 및 그에 추가되거나 그 안에 포함된 임의의 다른 유사한 컴퓨터 장치는, 함께 통합될 때, 컴포넌트 필터를 포함하는 컴포넌트 계층구조를 관리하기 위한 예시적인 수단을 구성한다.
도 8은 필터링 기준을 포함하는 컴포넌트 계층구조를 관리하는 데 사용될 수 있는 컴퓨팅 장치(810) 내의 데이터베이스(820)의 예시적인 구성(800)을 관련된 다른 컴퓨팅 컴포넌트들과 함께 도시한다. 일부 실시예에서, 컴퓨팅 장치(810)는 (도 7에 도시된) 계층구조 관리 시스템(720)과 유사하다. 데이터베이스(820)는 특정 작업을 수행하는 컴퓨팅 장치(810) 내의 여러 개의 별도의 컴포넌트에 결합된다.
예시적인 실시예에서, 데이터베이스(820)는 컴포넌트 및 모듈 데이터(822), 계층구조 데이터(824) 및 필터링 데이터(826)를 포함한다. 일부 실시예에서, 데이터베이스(820)는 (도 7에 도시된) 데이터베이스(764)와 유사하다. 컴포넌트 및 모듈 데이터(822)는 도 1 내지 6을 참조하여 전술한 바와 같은 설계 컴포넌트 및 모듈과 관련된 정보를 포함한다. 계층구조 데이터(824)는 (도 5에 도시된) 계층구조(500)에 나타난 것과 같이, 계층구조 컴포넌트 데이터 및 컴포넌트 간의 관계를 정의하는 데이터를 포함한다. 필터링 데이터(826)는 (도 5에 도시된) 필터링 기준(540) 및 (도 5에 도시된) 필터(550)와 같은 컴포넌트 필터링과 관련된 데이터를 포함한다.
컴퓨팅 장치(810)는 데이터베이스(820)는 물론, 데이터 저장 장치(830)도 포함한다. 컴퓨팅 장치(810)는 모듈을 유입하고, 계층구조(500)와 같은 관리 계층구조를 구축하기 위한 계층구조 관리 컴포넌트(840)를 포함한다. 컴퓨팅 장치는(810)는 계층구조의 컴포넌트와 관련된 처리 모듈을 위한 모듈 로드 컴포넌트(850) 또한 포함한다. 필터링 컴포넌트(860) 또한 (도 6에 도시된) 프로세스(700)를 참조하여 기술된 바와 같은 필터링 처리의 측면을 처리하기 위해 포함된다. 처리 컴포넌트(870)는 토큰화 시스템과 관련된 컴퓨터 실행가능 명령어의 실행을 돕는다.
도 9는 (도 5에 도시된) 계층구조(500)와 같은 논리적 컴포넌트 계층구조로부터 컴포넌트를 필터링하기 위한 예시적 방법(900)의 일례이다. 예시적인 실시예에서, 방법(900)은 (도 7에 도시된) 계층구조 관리 시스템(720)과 같은 컴퓨팅 시스템 또는 (도 8에 도시된) 컴퓨팅 장치(810)에 의해 실행된다. 예시적인 실시예에서, 방법(900)은, 메모리 내에서, 논리적 컴포넌트 계층구조와 관련된 필터를 식별하는 것(910)을 포함한다. 일부 실시예에서, 필터를 식별하는 것(910)은, 필터가 적용되는 논리적 컴포넌트 계층구조 내의 컴포넌트의 세트를 정의하는 범위 기준을 포함하는 필터를 식별하는 것을 더 포함한다. 일부 실시예에서, 필터를 식별하는 것(910)은, 범위 기준이 논리적 컴포넌트 계층구조 내의 부착 노드의 식별정보를 포함하는 필터를 식별하는 것을 더 포함한다. 일부 실시예에서, 필터를 식별하는 것(910)은, 컴포넌트의 세트가 논리적 컴포넌트 계층구조 내의 부착 노드 이하의 노드를 포함하도록 정의된 필터를 식별하는 것을 더 포함한다.
예시적인 실시예에서, 방법(900)은, 프로세서에 의해, 논리적 컴포넌트 계층구조의 서브컴포넌트와 필터를 비교하는 것(920) 또한 포함한다. 일부 실시예에서, 필터를 식별하는 것(910)은 하나 이상의 컴포넌트 특징을 정의하는 식별 기준을 포함하는 필터를 식별하는 것을 더 포함하고, 서브컴포넌트를 비교하는 것(920)은 식별 기준과 서브컴포넌트의 특징을 비교하는 것을 더 포함한다. 일부 실시예에서, 식별 기준을 비교하는 것은, 서브컴포넌트 명칭, 컴포넌트 식별자, 컴포넌트 유형 및 컴포넌트 버전 식별자 중 하나 이상과 서브컴포넌트의 특징을 비교하는 것을 더 포함한다. 일부 실시예에서, 식별 기준을 비교하는 것은, 계층구조 내의 서브컴포넌트의 관계 계층적 명칭(relational hierarchical name)에 적어도 부분적으로 기초하여 필터링 컴포넌트를 식별하는 것을 더 포함한다.
예시적인 실시예에서, 방법(900)은 서브컴포넌트와 필터의 비교에 기초하여 필터링을 위한 서브컴포넌트를 식별하는 것(930) 또한 포함한다. 방법(900)은 논리적 컴포넌트 계층구조로부터 서브컴포넌트를 필터링하는 것(940) 또한 포함한다.
위의 명세서에 기초하여 인식되는 바와 같이, 전술한 본 개시내용의 실시예는 컴퓨터 소프트웨어, 펌웨어, 하드웨어 또는 이들의 임의 조합 또는 서브세트를 포함하는 컴퓨터 프로그래밍 또는 엔지니어링 기술을 이용하여 구현될 수 있으며, 그 기술적 효과는 컴포넌트 계층구조를 관리하고, 계층구조로부터 필터링 및 필터링 기준을 구현하는 시스템이다. 그러한, 컴퓨터 판독가능 코드 수단을 가지는 임의의 프로그램이 하나 이상의 컴퓨터 판독가능 매체 내에 구현되거나 제공될 수 있으며, 이에 의해, 본 개시내용의 상술된 실시예에 따른 컴퓨터 프로그램 제품, 즉 제조물을 제조한다. 컴퓨터 판독가능 매체는, 예컨대 고정(하드) 드라이브, 디스켓, 광 디스크, 자기 테이프, 판독 전용 메모리(ROM)와 같은 반도체 메모리, 및/또는 인터넷 또는 기타 통신 네트워크 또는 링크와 같은 임의의 송수신 매체일 수 있으며, 이에 한정되지 않는다. 컴퓨터 코드를 포함하는 제조물은, 하나의 매체로부터 직접 코드를 실행하거나, 하나의 매체로부터 다른 매체로 코드를 복사하거나, 네트워크를 통해 코드를 전송함으로써 형성 및/또는 사용될 수 있다.
(프로그램, 소프트웨어, 소프트웨어 애플리케이션, "앱" 또는 코드로도 알려진) 이러한 컴퓨터 프로그램은 프로그래밍가능 프로세서에 대한 기계 명령어를 포함하며, 하이 레벨 절차 및/또는 객체 지향 프로그래밍 언어, 및/또는 어셈블리/기계 언어로 구현될 수 있다. 본 명세서에서 사용되는 용어 "기계 판독가능 매체", "컴퓨터 판독가능 매체"는 기계 판독가능 신호로서 기계 명령어를 수신하는 기계 판독가능 매체를 포함하는, 프로그램가능 프로세서에 기계 명령어 및/또는 데이터를 제공하기 위해 사용되는 임의의 컴퓨터 프로그램 제품, 장치 및/또는 디바이스(예컨대, 자기 디스크, 광학 디스크, 메모리, 프로그램가능 논리 장치(PLD))를 지칭한다. 그러나, "기계 판독가능 매체" 및 "컴퓨터 판독가능 매체"는 일시적 신호를 포함하지는 않는다. 용어 "기계 판독가능 신호"는 프로그램가능 프로세서에 기계 명령어 및/또는 데이터를 제공하기 위해 사용되는 임의의 신호를 지칭한다.
예시적인 방법 및 시스템은 컴포넌트 계층구조 내에 정의된 필터링 기준을 이용하여 서브컴포넌트를 제외하는 것을 용이하게 한다. 예컨대, 서브컴포넌트는 범위 기준 및 식별 기준의 하나 이상에 기초하여 제외될 컴포넌트(들)를 기술하는 조상 컴포넌트 내의 필터링 기준을 정의함으로써 계층구조 로딩 동안에 제외될 수 있다. 계층구조 구축 동안에, 본 명세서에서 기술된 시스템 및 방법은 필터링 기준과 정합하는 서브컴포넌트를 제외한다. 이에 의해, 컴포넌트는 필터링되거나 혹은 컴포넌트 계층구조로부터 제외된다.
이러한 시스템에 의해 다루어지는 기술적 문제 중 적어도 하나는, (i) 계층구조 내에서 잉여 계층구조 컴포넌트가 복수 회 나타나는 것과, (ii) 계층구조 내에서 상이한 버전의 컴포넌트의 존재로 인해 야기되는 충돌을 포함한다. 본 명세서에서 기술된 시스템 및 방법에 의해 다루어지는 다른 기술적 문제는, 계층구조 내에 나타나는 불필요한 컴포넌트에 의한 증가된 컴퓨터 처리, 그로 인한 컴퓨터의 속도 저하를 포함할 수 있다.
본 명세서에서 기술된 방법 및 시스템은 컴퓨터 소프트웨어, 펌웨어, 하드웨어 또는 그 조합 또는 서브세트를 포함하는 컴퓨터 프로그래밍 또는 엔지니어링 기법을 이용하여 구현될 수 있으며, 그 기술적 효과는 아래의 단계, 즉, (a) 메모리 내에서, 논리적 컴포넌트 계층구조와 관련된 필터를 식별하는 단계, (b) 프로세서에 의해, 논리적 컴포넌트 계층구조의 서브컴포넌트와 필터를 비교하는 단계, (c) 서브컴포넌트와 필터의 비교에 기초하여 필터링을 위한 서브컴포넌트를 식별하는 단계, (d) 논리적 컴포넌트 계층구조로부터 서브컴포넌트를 필터링하는 단계, (e) 필터가 적용된 논리적 컴포넌트 계층구조 내의 컴포넌트의 세트를 정의하는 범위 기준을 포함하는 필터를 식별하는 단계, (f) 범위 기준이 논리적 컴포넌트 계층구조 내의 부착 노드의 식별정보를 포함하는 필터를 식별하는 단계, (g) 컴포넌트의 세트가 논리적 컴포넌트 계층구조 내의 부착 노드 이하의 노드를 포함하도록 정의된 필터를 식별하는 단계, (h) 하나 이상의 컴포넌트 특징을 정의하는 식별 기준을 포함하는 필터를 식별하는 단계, (i) 식별 기준과 서브컴포넌트의 특징을 비교하는 단계, (j) 컴포넌트 명칭, 컴포넌트 식별자, 컴포넌트 유형 및 컴포넌트 버전 식별자 중 하나 이상과 서브컴포넌트의 특징을 비교하는 단계, 및 (k) 계층구조 내의 서브컴포넌트의 관계 계층적 명칭에 적어도 부분적으로 기초하여 필터링 컴포넌트를 식별하는 단계 중 적어도 하나를 수행함으로써 달성할 수 있다.
이 시스템에 의해 달성된 결과로 생기는 기술적 효과는, 예컨대 세그멘트 재사용 및/또는 컴포넌트 필터링의 개선에 의해 컴포넌트 계층구조를 유지하기 위한 계산 요구를 감소시키는 것 중 적어도 하나이다. 따라서, 본 시스템은 필터링된 컴포넌트 계층구조를 가능하게 하고, 이것은 메모리 내에서 작동하는 계층구조를 구축하고 유지하는 데에 요구되는 계산 자원의 양을 감소시키고, 그에 의해 컴퓨터의 부담을 감소시킨다.
이러한 기재된 설명은 최상의 모드를 포함하는 예들을 이용하여 본 개시내용을 개시하고, 또한 이 분야의 통상의 기술자가 임의의 장치 또는 시스템을 제작 및 사용하고, 임의의 통합된 방법을 수행하는 것을 포함하여 본 개시내용을 실시하는 것을 가능하게 한다. 본 개시내용의 특허 가능 범위는 청구범위에 의해 정의되며, 이 분야의 통상의 기술자가 생각할 수 있는 다른 예를 포함할 수 있다. 이러한 다른 예는, 청구범위의 문자와 상이하지 않은 구조적 요소를 가지는 경우, 또는, 청구범위의 문자와 실질적인 차이가 없는 등가의 구조적 요소를 포함하는 경우에는, 본 개시내용의 청구범위의 범주에 포함되는 것으로 의도된다.

Claims (20)

  1. 논리적 컴포넌트 계층구조로부터 컴포넌트를 필터링하는 컴퓨터 실행 방법으로서,
    상기 방법은 프로세서 및 메모리를 가지는 컴퓨팅 장치를 사용하고,
    상기 방법은,
    상기 메모리 내에서, 상기 논리적 컴포넌트 계층구조와 관련된 필터를 식별하는 단계와,
    상기 프로세서에 의해, 상기 논리적 컴포넌트 계층구조의 서브컴포넌트와 상기 필터를 비교하는 단계와,
    상기 서브컴포넌트와 상기 필터의 비교에 기초하여, 필터링을 위한 상기 서브컴포넌트를 식별하는 단계와,
    상기 논리적 컴포넌트 계층구조로부터 상기 서브컴포넌트를 필터링하는 단계를 포함하는 컴퓨터 실행 방법.
  2. 제1항에 있어서, 상기 필터를 식별하는 단계는, 상기 필터가 적용되는 상기 논리적 컴포넌트 계층구조 내의 컴포넌트의 세트를 정의하는 범위 기준을 포함하는 상기 필터를 식별하는 단계를 더 포함하는 컴퓨터 실행 방법.
  3. 제2항에 있어서, 상기 필터를 식별하는 단계는, 상기 범위 기준이 상기 논리적 컴포넌트 계층구조 내의 부착 노드의 식별정보를 포함하는 상기 필터를 식별하는 단계를 더 포함하는 컴퓨터 실행 방법.
  4. 제3항에 있어서, 상기 필터를 식별하는 단계는, 상기 컴포넌트의 세트가 상기 논리적 컴포넌트 계층구조 내의 상기 부착 노드 이하의 노드를 포함하도록 정의된 상기 필터를 식별하는 단계를 더 포함하는 컴퓨터 실행 방법.
  5. 제1항에 있어서, 상기 필터를 식별하는 단계는, 하나 이상의 컴포넌트 특징을 정의하는 식별 기준을 포함하는 상기 필터를 식별하는 단계를 더 포함하고, 상기 서브컴포넌트와 상기 필터를 비교하는 단계는, 상기 식별 기준과 상기 서브컴포넌트의 특징을 비교하는 단계를 더 포함하는 컴퓨터 실행 방법.
  6. 제5항에 있어서, 상기 식별 기준과 상기 서브컴포넌트의 특징을 비교하는 단계는, 컴포넌트 명칭, 컴포넌트 식별자, 컴포넌트 유형 및 컴포넌트 버전 식별자 중 하나 이상과, 상기 서브컴포넌트의 특징을 비교하는 단계를 더 포함하는 컴퓨터 실행 방법.
  7. 제5항에 있어서, 상기 식별 기준과 상기 서브컴포넌트의 특징을 비교하는 단계는, 상기 계층구조 내의 상기 서브컴포넌트의 관계 계층적 명칭(relational hierarchical name)에 적어도 부분적으로 기초하여 필터링 컴포넌트를 식별하는 단계를 더 포함하는 컴퓨터 실행 방법.
  8. 논리적 컴포넌트 계층구조로부터 컴포넌트를 필터링하기 위한 컴퓨팅 장치로서,
    상기 컴퓨팅 장치는 메모리에 통신가능하게 결합된 프로세서를 포함하고,
    상기 메모리는 상기 논리적 컴포넌트 계층구조를 포함하고,
    상기 컴퓨팅 장치는,
    상기 메모리 내에서, 상기 논리적 컴포넌트 계층구조와 관련된 필터를 식별하고,
    상기 논리적 컴포넌트 계층구조의 서브컴포넌트와 상기 필터를 비교하고,
    상기 서브컴포넌트와 상기 필터의 비교에 기초하여, 필터링을 위한 상기 서브컴포넌트를 식별하고,
    상기 논리적 컴포넌트 계층구조로부터 상기 서브컴포넌트를 필터링하도록 프로그래밍되는 컴퓨팅 장치.
  9. 제8항에 있어서, 상기 필터는, 상기 필터가 적용되는 상기 논리적 컴포넌트 계층구조 내의 컴포넌트의 세트를 정의하는 범위 기준을 포함하는 컴퓨팅 장치.
  10. 제9항에 있어서, 상기 범위 기준은 상기 논리적 컴포넌트 계층구조 내의 부착 노드의 식별정보를 포함하는 컴퓨팅 장치.
  11. 제10항에 있어서, 상기 컴포넌트의 세트는 상기 논리적 컴포넌트 계층구조 내의 상기 부착 노드 이하의 노드를 포함하도록 정의되는 컴퓨팅 장치.
  12. 제8항에 있어서, 상기 필터는 하나 이상의 컴포넌트 특징을 정의하는 식별 기준을 포함하고, 상기 서브컴포넌트와 상기 필터를 비교하는 것은, 상기 식별 기준과 상기 서브컴포넌트의 특징을 비교하는 것을 더 포함하는 컴퓨팅 장치.
  13. 제12항에 있어서, 상기 식별 기준과 상기 서브컴포넌트의 특징을 비교하는 것은, 컴포넌트 명칭, 컴포넌트 식별자, 컴포넌트 유형 및 컴포넌트 버전 식별자 중 하나 이상과, 상기 서브컴포넌트의 특징을 비교하는 것을 더 포함하는 컴퓨팅 장치.
  14. 제12항에 있어서, 상기 식별 기준과 상기 서브컴포넌트의 특징을 비교하는 것은, 상기 계층구조 내의 상기 서브컴포넌트의 관계 계층적 명칭에 적어도 부분적으로 기초하여, 필터링 컴포넌트를 식별하는 것을 더 포함하는 컴퓨팅 장치.
  15. 컴퓨터 실행가능 명령어가 구현된 적어도 하나의 비일시적 컴퓨터 판독가능 저장 매체로서,
    적어도 하나의 프로세서에 의해 실행될 때에, 상기 컴퓨터 실행가능 명령어는 상기 프로세서가,
    논리적 컴포넌트 계층구조와 관련된 필터를 식별하고,
    상기 논리적 컴포넌트 계층구조의 서브컴포넌트와 상기 필터를 비교하고,
    상기 서브컴포넌트와 상기 필터의 비교에 기초하여, 필터링을 위한 상기 서브컴포넌트를 식별하고,
    상기 논리적 컴포넌트 계층구조로부터 상기 서브컴포넌트를 필터링하게 하는 컴퓨터 판독가능 저장 매체.
  16. 제15항에 있어서, 상기 필터는, 상기 필터가 적용되는 논리적 컴포넌트 계층구조 내의 컴포넌트의 세트를 정의하는 범위 기준을 더 포함하는 컴퓨터 판독가능 저장 매체.
  17. 제16항에 있어서, 상기 범위 기준은, 상기 논리적 컴포넌트 계층구조 내의 부착 노드의 식별정보를 더 포함하며, 상기 컴포넌트의 세트는, 상기 논리적 컴포넌트 계층구조 내의 상기 부착 노드 이하의 노드를 포함하도록 정의되는 컴퓨터 판독가능 저장 매체.
  18. 제15항에 있어서, 상기 필터는 하나 이상의 컴포넌트 특징을 정의하는 식별 기준을 포함하며, 상기 서브컴포넌트와 상기 필터를 비교하는 것은, 상기 식별 기준과 상기 서브컴포넌트의 특징을 비교하는 것을 더 포함하는 컴퓨터 판독가능 저장 매체.
  19. 제18항에 있어서, 상기 식별 기준과 상기 서브컴포넌트를 비교하는 것은, 컴포넌트 명칭, 컴포넌트 식별자, 컴포넌트 유형 및 컴포넌트 버전 식별자 중 하나 이상과, 상기 서브컴포넌트의 특징을 비교하는 것을 더 포함하는 컴퓨터 판독가능 저장 매체.
  20. 제18항에 있어서, 상기 식별 기준과 상기 서브컴포넌트를 비교하는 것은, 상기 계층구조 내의 상기 서브컴포넌트의 관계 계층적 명칭에 적어도 부분적으로 기초하여, 필터링 컴포넌트를 식별하는 것을 더 포함하는 컴퓨터 판독가능 저장 매체.
KR1020150024223A 2014-02-21 2015-02-17 계층적으로 참조된 데이터 내의 컴포넌트를 필터링하는 방법 및 시스템 KR20150099456A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201461942915P 2014-02-21 2014-02-21
US61/942,915 2014-02-21
US14/572,367 US9626471B2 (en) 2014-02-21 2014-12-16 Methods and systems for filtering components in hierarchically-referenced data
US14/572,367 2014-12-16

Publications (1)

Publication Number Publication Date
KR20150099456A true KR20150099456A (ko) 2015-08-31

Family

ID=52544251

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150024223A KR20150099456A (ko) 2014-02-21 2015-02-17 계층적으로 참조된 데이터 내의 컴포넌트를 필터링하는 방법 및 시스템

Country Status (6)

Country Link
US (1) US9626471B2 (ko)
EP (1) EP2911073A1 (ko)
JP (1) JP6605812B2 (ko)
KR (1) KR20150099456A (ko)
CN (1) CN104866300B (ko)
CA (1) CA2880948A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10565338B2 (en) * 2017-12-13 2020-02-18 International Business Machines Corporation Equivalency verification for hierarchical references

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH064273A (ja) * 1992-06-24 1994-01-14 Toshiba Corp データ処理装置
US6192506B1 (en) * 1998-03-31 2001-02-20 Westinghouse Process Control, Inc. Controller for solving logic
US6480857B1 (en) 2001-06-07 2002-11-12 David Chandler Method of organizing hierarchical data in a relational database
US7213018B2 (en) * 2002-01-16 2007-05-01 Aol Llc Directory server views
JP2006163854A (ja) * 2004-12-08 2006-06-22 Yaskawa Electric Corp コンパイル方法、コンパイル処理装置、プログラムおよび記録媒体
US7650349B2 (en) * 2005-01-05 2010-01-19 Microsoft Corporation Prescribed navigation using topology metadata and navigation path
US7363599B1 (en) 2005-10-04 2008-04-22 Xilinx, Inc. Method and system for matching a hierarchical identifier
US8521736B2 (en) * 2005-10-26 2013-08-27 Dassault Systemes Enovia Corp. Managing hierarchies of components
TWI334091B (en) * 2007-03-03 2010-12-01 Ind Tech Res Inst Data file management and search method and system based on file attributes
US8001503B2 (en) 2007-12-13 2011-08-16 International Business Machines Corporation Method and system for automatically accessing internal signals or ports in a design hierarchy
JP2009176049A (ja) 2008-01-24 2009-08-06 Fujitsu Ltd 解析支援装置、解析支援方法および解析支援プログラム
US8510685B1 (en) 2009-12-30 2013-08-13 Cadence Design Systems, Inc. Methods, systems, and articles of manufacture for creating a hierarchical output for an operation in an electronic design
US9235633B2 (en) * 2011-12-06 2016-01-12 International Business Machines Corporation Processing data in a data warehouse
US10885235B2 (en) 2012-08-13 2021-01-05 The Boeing Company Multi-user virtual product development environment
EP2759964A1 (de) 2013-01-29 2014-07-30 dSPACE digital signal processing and control engineering GmbH Computerimplementiertes Verfahren zur Datenverwaltung von Produktvarianten in der Steuergeräteentwicklung

Also Published As

Publication number Publication date
CN104866300B (zh) 2019-12-31
JP2015158911A (ja) 2015-09-03
EP2911073A1 (en) 2015-08-26
CN104866300A (zh) 2015-08-26
JP6605812B2 (ja) 2019-11-13
US9626471B2 (en) 2017-04-18
CA2880948A1 (en) 2015-08-21
US20150242556A1 (en) 2015-08-27

Similar Documents

Publication Publication Date Title
EP3072070B1 (en) Callpath finder
US7523128B1 (en) Method and system for discovering relationships
US9600273B2 (en) Efficient annotation system for distributed version control systems
CN110300963A (zh) 大规模数据储存库中的数据管理系统
EP2889763B1 (en) Methods and systems for resolving conflicts in hierarchically-referenced data
US9135591B1 (en) Analysis and assessment of software library projects
US9740713B1 (en) Dynamic modeling of data in relational databases
AU2020298056B2 (en) Autolayout of visualizations based on graph data
US9158599B2 (en) Programming framework for applications
JP2016509281A (ja) アクティブデータベースクエリのメンテナンス
CN115552390A (zh) 无服务器数据湖索引子系统及应用编程接口
US20230418680A1 (en) Selective landscape element grouping facilitating landscape element consolidation or content installation
US11080332B1 (en) Flexible indexing for graph databases
CN117193802A (zh) 提供对应用程序内容多个实例的访问的合并空间
US20230418803A1 (en) Techniques for integrating data for multple instances of a data artifact
KR20150099456A (ko) 계층적으로 참조된 데이터 내의 컴포넌트를 필터링하는 방법 및 시스템
US9201909B1 (en) Data volume attributes for entity-relationship modeling of databases
EP4258126A1 (en) Propagation of extensions of data artifacts
Buenrostro et al. Single-Setup Privacy Enforcement for Heterogeneous Data Ecosystems