(57)【要約】      （修正有）【課題】論理コンポーネント階層からコンポーネントをフィルタリングする方法およびシステムを提供する。【解決手段】論理コンポーネント階層に対応付けられたフィルタ５５０をメモリ内で識別する。論理コンポーネント階層のサブコンポーネントをフィルタと比較する。サブコンポーネントとフィルタの比較に基づきフィルタリングするサブコンポーネントを識別する。論理コンポーネント階層からサブコンポーネントをフィルタリングする。【選択図】図５
2015158911.tif 000002
【特許請求の範囲】
【請求項１】
論理コンポーネント階層からコンポーネントをフィルタリングするコンピュータ実装された方法であって、前記方法はプロセッサとメモリを有するコンピュータデバイスを用い、前記方法は、
前記論理コンポーネント階層に対応付けられたフィルタを前記メモリ内で識別するステップ、
前記プロセッサにより前記論理コンポーネント階層のサブコンポーネントを前記フィルタと比較するステップ、
前記サブコンポーネントと前記フィルタの比較に基づきフィルタリングする前記サブコンポーネントを識別するステップ、
前記論理コンポーネント階層から前記サブコンポーネントをフィルタリングするステップ、
を有することを特徴とする方法。
【請求項２】
前記フィルタを識別するステップはさらに、前記フィルタを適用する前記論理コンポーネント階層内のコンポーネントセットを定義する範囲条件を含む前記フィルタを識別するステップを有する
ことを特徴とする請求項１記載の方法。
【請求項３】
前記フィルタを識別するステップはさらに、前記フィルタを識別するステップであって、前記範囲条件は前記論理コンポーネント階層内の取付ノードを識別することを含む、ステップを有する
ことを特徴とする請求項２記載の方法。
【請求項４】
前記フィルタを識別するステップはさらに、前記フィルタを識別するステップであって、前記コンポーネントセットは前記論理コンポーネント階層内の前記取付ノード以下のノードを含むように定義される、ステップを有する
ことを特徴とする請求項３記載の方法。
【請求項５】
前記フィルタを識別するステップはさらに、１以上のコンポーネント特性を定義する識別条件を含む前記フィルタを識別するステップを有し、
前記サブコンポーネントを比較するステップはさらに、前記識別条件を前記サブコンポーネントの特性と比較するステップを有する
ことを特徴とする請求項１記載の方法。
【請求項６】
前記識別条件を比較するステップはさらに、コンポーネント名、コンポーネント識別子、コンポーネントタイプ、コンポーネントバージョン識別子のうち１以上を前記サブコンポーネントの特性と比較するステップを有する
ことを特徴とする請求項５記載の方法。
【請求項７】
前記識別条件を比較するステップはさらに、前記階層内における前記サブコンポーネントの相対階層名に少なくとも部分的に基づきフィルタコンポーネントを識別するステップを有する
ことを特徴とする請求項５記載の方法。
【請求項８】
論理コンポーネント階層からコンポーネントをフィルタリングするコンピュータデバイスであって、前記コンピュータデバイスはメモリと通信可能に連結されたプロセッサを備え、前記メモリは前記論理コンポーネント階層を格納し、前記コンピュータデバイスは、
前記論理コンポーネント階層に対応付けられたフィルタを前記メモリ内で識別するステップ、
前記プロセッサにより前記論理コンポーネント階層のサブコンポーネントを前記フィルタと比較するステップ、
前記サブコンポーネントと前記フィルタの比較に基づきフィルタリングする前記サブコンポーネントを識別するステップ、
前記論理コンポーネント階層から前記サブコンポーネントをフィルタリングするステップ、
を実行するようにプログラムされていることを特徴とするコンピュータ装置。
【請求項９】
前記フィルタは、前記フィルタを適用する前記論理コンポーネント階層内のコンポーネントセットを定義する範囲条件を含む
ことを特徴とする請求項８記載のコンピュータ装置。
【請求項１０】
前記範囲条件は、前記論理コンポーネント階層内の取付ノードを識別することを含む
ことを特徴とする請求項９記載のコンピュータ装置。
【請求項１１】
前記コンポーネントセットは、前記論理コンポーネント階層内の前記取付ノード以下のノードを含むように定義される
ことを特徴とする請求項１０記載のコンピュータ装置。
【請求項１２】
前記フィルタは、１以上のコンポーネント特性を定義する識別条件を含み、
前記サブコンポーネントを比較するステップはさらに、前記識別条件を前記サブコンポーネントの特性と比較するステップを有する
ことを特徴とする請求項８記載のコンピュータ装置。
【請求項１３】
前記識別条件を比較するステップはさらに、コンポーネント名、コンポーネント識別子、コンポーネントタイプ、コンポーネントバージョン識別子のうち１以上を前記サブコンポーネントの特性と比較するステップを有する
ことを特徴とする請求項１２記載のコンピュータ装置。
【請求項１４】
前記識別条件を比較するステップはさらに、前記階層内における前記サブコンポーネントの相対階層名に少なくとも部分的に基づきフィルタコンポーネントを識別するステップを有する
ことを特徴とする請求項１２記載のコンピュータ装置。
【請求項１５】
コンピュータ実行可能命令を格納した少なくとも１つのコンピュータ読取可能記憶媒体であって、少なくとも１つのプロセッサが実行することにより、前記コンピュータ実行可能命令は前記プロセッサに、
論理コンポーネント階層に対応付けられたフィルタを識別するステップ、
前記論理コンポーネント階層のサブコンポーネントを前記フィルタと比較するステップ、
前記サブコンポーネントと前記フィルタの比較に基づきフィルタリングする前記サブコンポーネントを識別するステップ、
前記論理コンポーネント階層から前記サブコンポーネントをフィルタリングするステップ、
を実行させることを特徴とするコンピュータ読取可能記憶媒体。
【請求項１６】
前記フィルタは、前記フィルタを適用する前記論理コンポーネント階層内のコンポーネントセットを定義する範囲条件を含む
ことを特徴とする請求項１５記載のコンピュータ読取可能記憶媒体。
【請求項１７】
前記範囲条件は、前記論理コンポーネント階層内の取付ノードを識別することを含み、
前記コンポーネントセットは、前記論理コンポーネント階層内の前記取付ノード以下のノードを含むように定義される
ことを特徴とする請求項１６記載のコンピュータ読取可能記憶媒体。
【請求項１８】
前記フィルタは、１以上のコンポーネント特性を定義する識別条件を含み、
前記サブコンポーネントを比較するステップはさらに、前記識別条件を前記サブコンポーネントの特性と比較するステップを有する
ことを特徴とする請求項１５記載のコンピュータ読取可能記憶媒体。
【請求項１９】
前記識別条件を比較するステップはさらに、コンポーネント名、コンポーネント識別子、コンポーネントタイプ、コンポーネントバージョン識別子のうち１以上を前記サブコンポーネントの特性と比較するステップを有する
ことを特徴とする請求項１８記載のコンピュータ読取可能記憶媒体。
【請求項２０】
前記識別条件を比較するステップはさらに、前記階層内における前記サブコンポーネントの相対階層名に少なくとも部分的に基づきフィルタコンポーネントを識別するステップを有する
ことを特徴とする請求項１８記載のコンピュータ読取可能記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、２０１４年２月２１日に出願された米国仮特許出願第６１／９４２，９１５号の利益を主張する。同文献の全体は参照により本願に組み込まれる。
【０００２】
本願は、製品設計環境におけるコンポーネントの階層を管理することに関する。具体的には、コンポーネント階層内のコンポーネントをフィルタリングすることに関する。
【背景技術】
【０００３】
大規模統合システム（特に回路）を設計し開発するとき、１つのエンジニアチームがシステムの全体設計に対して責任を負うことは通常ない。エンジニアチームはむしろ、システムのコンポーネントの設計に対して責任を負い、全体設計は各エンジニアチームが提供するコンポーネントの設計の総和となる。システムがより複雑になると、システムのより多くの部分がサブコンポーネントへ分割されることになる。親コンポーネントは複数のサブコンポーネントへ分割される。このコンポーネントとサブコンポーネントの関係は、全体システムを表す階層に関するものである。
【０００４】
コンポーネント設計者または設計チームは、全体階層から特定のコンポーネントを除外したい場合がある。例えば開発者と設計者がコンポーネント階層の設計実装時間を削減できる再利用可能コンポーネントを構築したが、コンポーネントを再利用するとコンポーネント階層内におけるコンポーネントの異なるバージョン間でコンフリクトが生じる場合がある。これは解消しなければならない。他例として、開発者は特定のサブコンポーネントを削除し、コンポーネント階層の特定のサブセットに注力できるようにしたい場合がある。
【発明の概要】
【課題を解決するための手段】
【０００５】
１実施形態において、論理コンポーネント階層からコンポーネントをフィルタリングするコンピュータ実装した方法を提供する。前記方法は、プロセッサとメモリを有するコンピュータデバイスを用いる。前記方法は、前記論理コンポーネント階層に対応付けられたフィルタを前記メモリ内において認識するステップを有する。前記方法はさらに、前記プロセッサにより、前記論理コンポーネント階層のサブコンポーネントを前記フィルタと比較するステップを有する。前記方法はさらに、前記サブコンポーネントと前記フィルタの比較に基づきフィルタリングする前記サブコンポーネントを識別するステップを有する。前記方法はさらに、前記論理コンポーネント階層から前記サブコンポーネントをフィルタリングするステップを有する。
【０００６】
１実施形態において、論理コンポーネント階層からコンポーネントをフィルタリングするコンピュータデバイスを提供する。前記コンピュータデバイスは、メモリと通信可能に連結されたプロセッサを備える。前記メモリは前記論理コンポーネント階層を格納する。前記コンピュータデバイスは、前記論理コンポーネント階層に対応付けられたフィルタを前記メモリ内において認識するステップを実行するようにプログラムされている。前記コンピュータデバイスはさらに、前記論理コンポーネント階層のサブコンポーネントを前記フィルタと比較するステップを実行するようにプログラムされている。前記コンピュータデバイスはさらに、前記サブコンポーネントと前記フィルタの比較に基づきフィルタリングする前記サブコンポーネントを識別するステップを実行するようにプログラムされている。前記コンピュータデバイスはさらに、前記論理コンポーネント階層から前記サブコンポーネントをフィルタリングするステップを実行するようにプログラムされている。
【０００７】
１実施形態において、コンピュータ実行可能命令を格納した少なくとも１つのコンピュータ読取可能記憶媒体を提供する。少なくとも１つのプロセッサが実行することにより、前記コンピュータ実行可能命令は前記プロセッサに、前記論理コンポーネント階層に対応付けられたフィルタを認識するステップを前記プロセッサに実行させる。前記コンピュータ実行可能命令はさらに、前記論理コンポーネント階層のサブコンポーネントを前記フィルタと比較するステップを前記プロセッサに実行させる。前記コンピュータ実行可能命令はさらに、前記サブコンポーネントと前記フィルタの比較に基づきフィルタリングする前記サブコンポーネントを識別するステップを前記プロセッサに実行させる。前記コンピュータ実行可能命令はさらに、前記論理コンポーネント階層から前記サブコンポーネントをフィルタリングするステップを前記プロセッサに実行させる。
【０００８】
図１〜図９は、本明細書の方法およびシステムの実施形態を示す。
【図面の簡単な説明】
【０００９】
【図１】コンポーネント階層の例を示すブロック図である。
【００１０】
【図２】図１に示すコンポーネント階層に関連するモジュールバージョンのブロック図である。
【００１１】
【図３】図２に示すモジュールバージョンの最初の時点におけるスナップショットである。
【００１２】
【図４】図２に示すモジュールバージョンの次の時点におけるスナップショットである。
【００１３】
【図５】フィルタを有するコンポーネント階層の例を示すブロック図である。
【００１４】
【図６】フィルタリング参照を識別し統合する階層読込プロセスの例を示すフローチャートである。
【００１５】
【図７】図５に示すコンポーネント階層内におけるフィルタリング参照を実装するように構成された階層管理システムの例を示すブロック図である。
【００１６】
【図８】図５に示すコンポーネント階層を管理するため用いることができるコンピュータデバイス内のデータベースおよび関連するコンピュータコンポーネントのブロック図である。
【００１７】
【図９】図５に示す階層からコンポーネントをフィルタリングする方法の例である。
【発明を実施するための形態】
【００１８】
以下の説明は、本明細書の実施形態を示す。これは例示であり限定目的のものではない。本明細書は、コンポーネント階層を管理するアプリケーション一般に対して適用することができる。
【００１９】
本明細書において、「ａ」「ａｎ」を付した要素またはステップは、特に明示しない限り、複数の要素やステップを排除するものと解釈すべきではない。本明細書の「実施例」「１実施形態」は、言及した特徴部分を組み込んだ別実施形態を排除するように解釈されることを意図したものではない。
【００２０】
本明細書において、「データベース」という用語は、データ本体、リレーショナルデータベース管理システム（ＲＤＢＭＳ）、またはこれら双方を指す。本明細書において、データベースは任意のデータコレクションを含む。これは、階層データベース、関係データベース、フラットファイルデータベース、オブジェクト関係データベース、オブジェクト指向データベース、その他コンピュータシステムが格納する構造化されたレコードコレクションまたはデータコレクションを含む。上記例は例示目的のみのものであり、データベースの定義および／または意味を限定することを意図したものではない。ＲＤＢＭＳの例としては、Ｏｒａｃｌｅ（登録商標）データベース、ＭｙＳＱＬ、ＩＢＭ（登録商標）ＤＢ２、Ｍｉｃｒｏｓｏｆｔ（登録商標）ＳＱＬ  Ｓｅｒｖｅｒ、Ｓｙｂａｓｅ（登録商標）、ＰｏｓｔｇｒｅＳＱＬが挙げられるが、これらに限らない。本明細書におけるシステムと方法を実現可能にする任意のデータベースを用いることができる（Ｏｒａｃｌｅは、カリフォルニア州Ｒｅｄｗｏｏｄ  ＳｈｏｒｅｓのＯｒａｃｌｅ  Ｃｏｒｐｏｒａｔｉｏｎの登録商標；ＩＢＭは、ニューヨーク州ＡｒｍｏｎｋのＩｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎの登録商標；Ｍｉｃｒｏｓｏｆｔは、ワシントン州ＲｅｄｍｏｎｄのＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎの登録商標；Ｓｙｂａｓｅは、カリフォルニア州ＤｕｂｌｉｎのＳｙｂａｓｅの登録商標）。
【００２１】
本明細書において、プロセッサは任意のプログラム可能システムを含む。これは、マイクロコントローラ、ｒｅｄｕｃｅｄ  ｉｎｓｔｒｕｃｔｉｏｎ  ｓｅｔ  ｃｉｒｃｕｉｔｓ（ＲＩＳＣ）、特定用途向け集積回路（ＡＳＩＣ）、論理回路、その他任意の本明細書における機能を実行可能な回路またはプロセッサを用いるシステムを含む。上記例は例示目的のみのものであり、プロセッサの定義および／または意味を限定することを意図したものではない。
【００２２】
本明細書において、「ソフトウェア」「ファームウェア」という用語は交換可能であり、プロセッサが実行するためメモリに格納される任意のコンピュータプログラムを含む。これは、ＲＡＭメモリ、ＲＯＭメモリ、ＥＰＲＯＭメモリ、ＥＥＰＲＯＭメモリ、不揮発性ＲＡＭ（ＮＶＲＡＭ）メモリを含む。上記メモリタイプは例示目的のみのものであり、コンピュータプログラムを格納するために用いることができるメモリ種別を限定することを意図したものではない。
【００２３】
１実施形態において、コンピュータプログラムを提供する。このプログラムは、コンピュータ読取可能媒体上に格納される。１実施例において、システムはサーバコンピュータへ接続することを必要としない単一のコンピュータシステム上で実行される。１実施形態において、システムはＷｉｎｄｏｗｓ（登録商標）環境で実行される（Ｗｉｎｄｏｗｓは、ワシントン州ＲｅｄｍｏｎｄのＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎの登録商標である）。１実施形態において、システムはメインフレーム環境およびＵＮＩＸ（登録商標）サーバ環境で実行される（ＵＮＩＸは、英国Ｂｅｒｋｓｈｉｒｅ，ＲｅａｄｉｎｇのＸ／Ｏｐｅｎ  Ｃｏｍｐａｎｙ  Ｌｉｍｉｔｅｄの登録商標である）。アプリケーションは柔軟であり、主要機能を損なうことなくさまざまな環境上で実行できるように設計されている。実施形態において、システムは複数のコンピュータデバイス間で分散した複数のコンポーネントを含む。１以上のコンポーネントは、コンピュータ読取可能媒体に格納されたコンピュータ実行可能命令の形態とすることができる。システムとプロセスは、本明細書の特定実施形態に限定されるものではない。また各システムと各プロセスのコンポーネントは、本明細書のその他コンポーネントおよびプロセスから独立し切り離して実施することができる。各コンポーネントとプロセスは、他のパッケージやプロセスと組み合わせて使用することもできる。
【００２４】
複数のコンポーネントを有するハードウェアまたはソフトウェアシステムの開発は、システムの設計をより小さく管理しやすいシステムコンポーネント設計へ分割すると、より効率的になる。コンポーネント階層を補助し、その階層を用いる際に生じる問題を解決するため、１以上のサブコンポーネントを階層全体からフィルタリング（すなわち除外）することができる。
【００２５】
図１は、商品Ａ１１０の階層構造１００である。以下に説明するように、１以上のコンポーネントはフィルタリングまたは除外される。商品Ａ１１０は、第１コンポーネントＡ１１２０、第２コンポーネントＡ２１３０を備える。第２コンポーネントＡ２１３０は、２つのサブコンポーネントＡ２，１１４０とＡ２，２１５０を備える。製品Ａ１１０は、それぞれコンポーネントＡ１１２０とコンポーネントＡ２１３０との間で、階層参照１１１と１１２を有する。同様にコンポーネントＡ２１３０は、それぞれサブコンポーネントＡ２，１１４０とＡ２，２１５０との間で、階層参照１３１と１３２を有する。製品Ａ１１０はさらに、図示しないコンポーネント、さらにその配下のサブコンポーネントを含むこともできる。サブコンポーネントはさらにサブコンポーネントを含むことができ、以下同様である。
【００２６】
図１の階層構造１００のような階層構造は、商品Ａ１１０のコンポーネントやサブコンポーネントとは別に構築することができる（例えば、商品Ａ１１０の完全な階層構造１００のサブセット構造）。また本実施形態において要素Ａ１１０は商品であるが、要素Ａ１１０はコンポーネントとみなすこともでき、要素Ａ１１２０と要素Ａ２１３０は要素Ａ１１０のサブコンポーネントとみなすことができる。同様に要素Ａ２，１１４０と要素Ａ２，２１５０は、そのサブコンポーネント（図示せず）との間で階層関係にあるコンポーネントとみなすことができる。
【００２７】
商品Ａ１１０は、モジュールにより設計されたハードウェアまたはソフトウェアシステムである。例えば商品Ａ１１０は車両であり、コンポーネントＡ１１２０は車両フレームであり、コンポーネントＡ２１３０は車両エンジンである。エンジンのサブコンポーネントＡ２，１１４０とＡ２，２１５０は例えば、エンジンのクランクシャフトとシリンダである。他の例としては、商品Ａ１１０は集積回路（ＩＣ）チップであり、コンポーネントＡ１１２０はランダムアクセスメモリ（ＲＡＭ）であり、コンポーネントＡ２１３０はＩＣチップの演算処理装置（ＣＰＵ）である。ＣＰＵのサブコンポーネントＡ２，１１４０とＡ２，２１５０は例えば、ＣＰＵの算術論理演算装置（ＡＬＵ）と制御ユニットである。
【００２８】
開発プロセスにおいて、特定コンポーネントの設計チームは、コンポーネントおよび／または当該コンポーネントのサブコンポーネントの全ての現行設計および従前設計にアクセスする場合がある。設計チームは、階層構造１００の各レベルにおけるコンポーネントに対して責任を負う。例えば設計チームは商品Ａ１１０を開発し、別の設計チームが商品Ａ１１０の各コンポーネント（例えばコンポーネントＡ１１２０とＡ２１３０）を開発する。商品Ａ１１０の設計チームは、商品Ａ１１０のコンポーネントの設計を用いて、商品Ａ１１０をシミュレートおよび／またはテストする責任を負う。
【００２９】
商品Ａ１１０およびそのコンポーネントＡ１１２０とＡ２１３０、サブコンポーネントＡ２，１１４０とＡ２，２１５０の設計は、中央データベースまたは分散データベース（図示せず）内に格納されるモジュール内のファイルに含まれる。設計チームはこれらを取得する。モジュールは通常、１以上のファイルを含む。これはソフトウェアコードおよび／または設計データを含む。モジュールは他のモジュールを格納する場合があり、これらはリリースされ、あるいは再利用のためパッケージされる。実施例において、例えばマサチューセッツ州ＷａｌｔｈａｍのＤａｓｓａｕｌｔ  Ｓｙｓｔｅｍｅｓ  ＥＮＯＶＩＡ  Ｃｏｒｐ．のビジネスオブジェクトデータベースのような、サーバサイドデータベースを用いる。本明細書のシステムと方法を実現するその他データベースまたはデータベースの組み合わせを用いることもできる。
【００３０】
コンポーネントの開発を促進しトラッキングすることを補助するため、モジュール内に格納されたコンポーネントの各設計は、当該モジュールに関する特定のバージョン番号を有する場合がある。例えば、モジュールおよび／またはコンポーネントのバージョンである。
【００３１】
図２は、特定コンポーネントに対応付けられたモジュールバージョンのブロック図２００である。図１に示すコンポーネント階層と同じものを用いている。商品Ａ１１０は、異なるバージョン番号を有する複数のモジュールと対応付けられる場合がある。例えばモジュールＡ  ｖ１．０  ２１１、ｖ１．１  ２１２、ｖ１．２  ２１３である。
【００３２】
図２００は、モジュールブランチ２１０、２２０、２３０、２４０、２５０を含む。モジュールブランチは、特定の商品、コンポーネント、またはサブコンポーネントに共通して関連するオブジェクトコレクションの時系列更新を示す。例えばモジュールブランチ２１０内に含まれまたはこれから参照されるモジュールコレクションＡ  ｖ１．０  ２１１、ｖ１．１  ２１２、ｖ１．２  ２１３は、商品Ａ１１０の異なるモジュールバージョンである。これらは前モジュールバージョンの更新または変更をそれぞれ示す。本明細書において、共通モジュールブランチを共有するモジュールは、同じモジュールとみなすことができる。これは例えば、共通のモジュールバージョン系列の同一または異なるバージョンであることを示す。同様に要素またはコンポーネントは、共通バージョン系列を共有するのであれば、同一であるとみなすことができる（例えばブランチ２１０、２２０、２３０、２４０、２５０）。モジュールブランチ２２０は、モジュールＡ１  ｖ１．０  ２２１とＡ１  ｖ１．１  ２２２のコレクションを示す。これらはコンポーネントＡ１１２０に対応付けられた別バージョンのモジュールである。モジュールブランチ２３０は、モジュールＡｓ  ｖ１．０  ２３１、Ａｓ  ｖ１．１  ２３２、Ａｓ  ｖ１．２  ２３３のコレクションを示す。これらはコンポーネントＡ２１３０に対応付けられた別バージョンのモジュールである。モジュールブランチ２４０は、モジュールＡｓ，１  ｖ１．０  ２４１のコレクションを示す。これはサブコンポーネントＡ２，１１４０に対応付けられている。モジュールブランチ２５０は、モジュールＡｓ，２  ｖ１．０  ２５１とＡｓ，２  ｖ１．１  ２５２のコレクションを示す。これらはサブコンポーネントＡ２，２１５０に対応付けられた別バージョンのモジュールである。
【００３３】
モジュールバージョン（例えばモジュールＡ  ｖ１．０  ２１１、ｖ１．１  ２１２、ｖ１．２  ２１３）は、コンポーネント設計（例えば商品Ａ１１０）の継時的更新または変更のなかで特定日時において更新または変更されたモジュールである。設計チームによる１モジュールのコンポーネント設計に対する任意の変更により、新たなモジュールバージョン番号を有する新たなモジュールを生成することになる。例えばコンポーネントＡ２１３０の設計チームは、モジュールＡ２  Ｖ１．１  ２３２内に含まれるバージョン１．１の設計を変更し、新たなバージョン番号１．２を有するモジュールＡ２  Ｖ１．２  ２３３を生成して新設計を保存する。特定のコンポーネント（例えばコンポーネントＡ２１３０）は、複数の設計バージョンを有する場合がある。これらはそれぞれ異なるバージョン番号（例えばｖ１．０、ｖ１．１、ｖ１．２）を有する個別のモジュール（例えばＡｓ  ｖ１．０  ２３１、Ａｓ  ｖ１．１  ２３２、Ａｓ  ｖ１．２  ２３３）内に格納される。
【００３４】
商品またはコンポーネントの開発をさらに促進するため、特定のサブモジュールを参照するコンポーネントのモジュール内に、１以上の階層参照を格納することができる。図３と図４は、特定の商品設計のモジュールとその商品のコンポーネントに関連するサブモジュールとの間において、時刻ｔ１からｔ２において存在し変化する、異なるタイプの階層参照の例を示す。図３と図４は、階層構造１００の一部を用いる。商品Ａ１１０は２つのコンポーネントＡ１１２０とＡ２１３０を含み、コンポーネントＡ２はサブコンポーネントＡ２，１１４０を含む。サブモジュールは、他のモジュールから参照され、当該モジュールに対応付けられたコンポーネントのサブコンポーネントに対応する、任意のモジュールである。例えば図３において、モジュールＡ１  Ｖ１．０  ３２１とＡ２  Ｖ１．０  ３３１はモジュールＡ  ｖ１．０  ３１１のサブモジュールであり、モジュールＡ２，１  Ｖ１．０  ３４１はモジュールＡ２  ｖ１．０  ３３１のサブモジュールである。モジュールＡ  ｖ１．０  ３１１はコンポーネントＡ１１０に対応付けられ、サブモジュールＡ１  Ｖ１．０  ３２１とＡ２  Ｖ１．０  ３３１はそれぞれサブコンポーネントＡ１１２０とＡ２１３０に対応付けられている。
【００３５】
図３は、商品Ａ１１０のモジュール（図２に示す）を格納するデータベース（図３には示していない）コンテンツの時刻ｔ１におけるスナップショット３００の例である。モジュールＡ  ｖ１．０  ３１１は、商品Ａ１１０の設計のバージョン１．０を含む。モジュールＡ１  Ｖ１．０  ３２１とＡ２  Ｖ１．０  ３３１はそれぞれ、コンポーネントＡ１１２０とＡ２１３０（ともに図２に示す）の設計のバージョン１．０を含む。モジュールＡ２，１  Ｖ１．０  ３４１は、サブコンポーネントＡ２，１１４０（図２に示す）の設計のバージョン１．０を含む。モジュールブランチ３２０は、コンポーネントＡ１１２０に対応するモジュールの経時変化を示し、時刻ｔ１においてモジュールＡ１  Ｖ１．０  ３２１を含みまたは参照する。モジュールブランチ３３０は、コンポーネントＡ２１３０に対応するモジュールの経時変化を示し、時刻ｔ１においてモジュールＡ２  Ｖ１．０  ３３１を含みまたは参照する。モジュールブランチ３４０は、サブコンポーネントＡ２，１１４０に対応するモジュールの経時変化を示し、時刻ｔ１においてモジュールＡ２，１  Ｖ１．０  ３４１を含みまたは参照する。
【００３６】
時刻ｔ１は例えば、商品Ａ１１０の設計チームが最初にモジュールＡ  ｖ１．０  ３１１をデータベースに格納する時刻である。モジュールＡ  ｖ１．０  ３１１は、商品Ａ１１０の最初の設計を含む。これにはバージョン番号１．０が割り当てられる。設計チームは、この時刻においてまたはこの時刻前に、「アルファ」タグ３８０に対して動的階層参照３５１を定義し、モジュールＡ２  Ｖ１．０  ３３１に対して固定階層参照３５３を定義する。
【００３７】
図３の例において、固定階層参照３５２が生成され、モジュールＡ１  Ｖ１．０  ３２１を指す。これは以下に述べるように、「アルファ」タグ３８０が時刻ｔ１において参照するモジュールである。したがって最初の時点において、階層参照３５１と３５２のグループ３５０は、異なるオブジェクトを指しているが、同じモジュールを参照する。動的階層参照が生成されるとき固定階層参照を自動的に定義することにより、設計チームは将来において、この固定階層参照を用いて、動的階層参照が後続モジュールバージョンを指している場合であっても、動的階層参照が最初に対応していたものを判定することができる。
【００３８】
同様にモジュールＡ２  Ｖ１．０  ３３１の動的階層参照３６１は、設計チームがモジュールＡ２  Ｖ１．０  ３３１をデータベースに格納またはコミットしたときまたはその前に、コンポーネントＡ２の設計チームによって生成される。本例においてコンポーネントＡ２の設計チームは、「ゴールデン」タグ３９０を指す動的階層参照３６１を定義する。ゴールデンタグ３９０は、最初の時点においてはモジュールＡ２，１  Ｖ１．０  ３４１を指す。固定階層参照３６２は、動的階層参照３６１が最初に指すものと同じモジュール（モジュールＡ２，１  Ｖ１．０  ３４１）を指すように自動的に定義される。最初の時点において、階層参照３６１と３６２のグループ３６０は、異なるオブジェクトを指しているが、同じモジュールを参照する。
【００３９】
図３に示す例において、コンポーネントに対応付けられたモジュールに関する階層参照は、そのモジュールがデータベースにコミットされた時点で生成される。モジュール内に格納された階層参照は、モジュールがコミットされた後の任意時点で追加し、削除し、変更することもできる。
【００４０】
図４は、商品Ａ１１０（図２に示す）のモジュールを格納するデータベース（図４には示していない）の後時刻ｔ２におけるスナップショット４００である。時刻ｔ１とｔ２の間において、コンポーネントＡ１１２０、Ａ２１３０、Ａ２，１１４０それぞれの設計チームは、新たなモジュールＡ１  Ｖ１．１  ４２１、Ａ２  Ｖ１．１  ４３１、Ａ２，１  Ｖ１．１  ４４１を発信する。またコンポーネントＡ２，１１４０の設計チームは、「ゴールデン」タグ３９０をモジュールＡ２，１  Ｖ１．０  ３４１からモジュールＡ２，１  Ｖ１．１  ４４１へ移動する。
【００４１】
一般に階層参照は、動的である場合もあるし固定である場合もある。固定階層参照（例えば階層参照３５２、３５３、３６２）は、コンポーネントまたはサブコンポーネントの特定バージョンを含むモジュールを参照する。例えば固定階層参照３５２はモジュールＡ１  Ｖ１．０  ３２１を参照し、これはコンポーネントＡ１１２０の設計のバージョン１．０を含む。一方で動的階層参照（例えば階層参照３５１と３６１）は、タグまたはモジュールブランチを参照する場合がある。これらは特定モジュールを参照する。タグとモジュールブランチは変更される場合があり、したがって動的階層参照が最終的に参照するモジュールは、変更され得る。タグはユーザが手動で変更して別のモジュールを参照するようにすることができる。例えばコンポーネントＡ２，１１４０の設計チームは、「ゴールデン」タグ３９０をモジュールＡ２，１  Ｖ１．０  ３４１からモジュールＡ２，１  Ｖ１．１  ４４１へ移動させる。モジュールブランチは、新たなモジュール（例えば新たなモジュールバージョン）を追加することにより変更できる。例えばコンポーネントＡ１１２０の設計チームが新モジュールＡ１  Ｖ１．１  ４２１をデータベースへ登録すると、モジュールブランチ３２０は新モジュールＡ１  Ｖ１．１  ４２１を含みまたは参照するように変更される（例えばモジュールブランチは最新バージョンを指すようになる）。
【００４２】
異なるタイプのタグを定義することもできる。例えば任意のコンポーネントの最新モジュールは、「アルファ」タグと対応付けることができる。これはコンポーネントの「開発中」バージョンを示す。図３に示す例において、ブランチ３２０を参照する「アルファ」タグ３８０を定義することにより、「アルファ」タグ３８０はモジュールブランチ３２０が参照しまたは含んでいる最新バージョンのモジュールを参照することになる。別実施形態において、動的階層参照３５１はモジュールブランチ３２０を直接指すことができ、同様の結果が得られる。他例（図示せず）において、コンポーネントのモジュールはタグ「ベータ」を付すことができ、これはコンポーネントの「テスト中」バージョンを示す。コンポーネントのモジュールはまた、「ゴールデン」タグを付すことができ、これはコンポーネントの最新「安定」バージョンを示す。図３に示す例において、コンポーネントＡ２，１１４０の設計チームは、コンポーネントＡ２，１１４０のバージョン１．０を「ゴールデン」バージョンとして最初に定義する。「アルファ」「ベータ」「ゴールデン」の各タグは変更され得る（例えば設計グループはタグを変更して別のモジュールバージョンを指すようにする）ので動的なものであり、したがって必ずしも常に同じモジュールを参照するわけではない。
【００４３】
図５は、コンポーネントのフィルタリングを有する例示商品Ａ５１１の階層構造５００である。商品Ａ５１１（ここでは階層５００の「先頭コンポーネント」または「ルート」コンポーネントとも呼ぶ）は、第１コンポーネントＡ１５２１と第２コンポーネントＡ２５３１を有する。商品Ａ５１１は、商品Ａ１１０（図１と図２に示す）または商品Ａ  ｖ１．０  ３１１（図３と図４に示す）と類似しており、コンポーネントＡ１５２１とＡ２５３１は商品Ａ１１２０とＡ２１３０（図１と図２に示す）またはＡ１ｖ１．０  ３２１とＡ２  ｖ１．０  ３３１（図３と図４に示す）に類似している。第１コンポーネントＡ１５２１は、１つのサブコンポーネントＢ  ｖ１．１  ５２２を含む。第２コンポーネントＡ２５３１は１つのサブコンポーネントＡ１５３２を含み、サブコンポーネントＡ１５３２はサブコンポーネントＢ  ｖ１．２  ５３３を含む。商品Ａ５１１は、２つの異なるコンポーネントＡ１、すなわちＡ１５２１とＡ１５３２を含む。一方は商品Ａ５１１の直接の子であり、もう一方はＡ２５３１の子である。同様に商品Ａ５１１は、２つのコンポーネントＢ、すなわちＢ  ｖ１．１  ５２２とＢ  ｖ１．２  ５３３を含む。これらコンポーネントＢは、同じコンポーネントの異なるバージョン番号を参照する。
【００４４】
商品Ａ５１１は、それぞれコンポーネントＡ１５２１とＡ２５３１に対して階層参照５１２と５１３を有する。同様にコンポーネントＡ１５２１はサブコンポーネントＢ  ｖ１．１  ５２２に対して階層参照５１４を有し、コンポーネントＡ２５３１はサブコンポーネントＡ１５３２に対して階層参照５１５を有し、サブコンポーネントＡ１５３２はサブコンポーネントＢ  ｖ１．２  ５３３に対して階層参照５１６を有する。階層構造５００内の各コンポーネントはバージョン番号などのバージョン識別子を含むことができ、コンポーネントＡ５１１、Ａ１５２１、Ａ２５３１のバージョン番号は読み易さのため除外されていることを理解されたい。
【００４５】
本明細書において、「下位」「上位」「親」「子」という用語は、論理的にファミリーの関係にあるコンポーネント間の階層関係（例えばコンポーネントのツリー構造）を示す。例えばコンポーネントＢ  ｖ１．１  ５２２は、上位コンポーネントＡ１５２１とＡ５１１の下位コンポーネントとして参照することができる。コンポーネントＡ１５２１は、コンポーネントＢ  ｖ１．１  ５２２の親（すなわち最初に隣接する直近上位）であり、同様にコンポーネントＢ  ｖ１．１  ５２２はコンポーネントＡ１５２１の子である。さらにコンポーネントＡ１５２１は、コンポーネントＡ５１１（すなわち親）の下位コンポーネント（この場合は子）である。このようにこれら用語は、コンポーネント間の論理関係を便宜上定義し説明するために用いることができる。
【００４６】
実施例において、階層構造５００はフィルタ５５０を含む。フィルタ５５０は、１以上のコンポーネントを識別しフィルタリングするために用いられる。本明細書において、「フィルタコンポーネント」という用語は一般に、フィルタ５５０などのフィルタがフィルタリングのため識別するコンポーネントを指すために用いられる。「フィルタ」という用語は一般に、階層構造５００などの階層からコンポーネント（すなわちフィルタコンポーネント）を除外、削除、その他抹消することを指す。図５に示す階層構造５００は、変更されていない（すなわちフィルタリングされていない）コンポーネント階層である。換言すると階層構造５００は、フィルタ５５０を適用する前の完全なコンポーネント設計である。フィルタ５５０を適用した後、１以上のコンポーネントは削除され、あるいは階層構造５００に組み込まれない。
【００４７】
本明細書におけるフィルタ５５０とコンポーネントのフィルタリングは、１以上の側面から定義し説明される。範囲の観点において、フィルタ５５０はフィルタ５５０が適用される範囲または影響階層を規定する。識別対象の観点において、フィルタ５５０は、フィルタリングするコンポーネントを識別するための１以上の識別条件を規定する。動作中において、フィルタ５５０のこれら側面のうち１以上により、階層５００からフィルタリングするコンポーネントを識別することができる。これら側面の詳細については以下に説明する。
【００４８】
フィルタ５５０の範囲機能は、フィルタリングを検討するコンポーネントのセットまたはサブセットを識別する。実施例において、フィルタ５５０は階層関係に基づき動作し、具体的には階層内のアプリケーションレベルに基づく傘として動作する。フィルタ５５０は、先頭コンポーネントＡ５１１へ取り付けられる（５４０）。これによりフィルタ５５０の範囲は階層５００のツリー構造全体となる。他実施形態において、フィルタ５５０は例えばＡ１５３２などのその他コンポーネントに取り付けることもできる。これによりフィルタの範囲はＡ１５３２のサブツリー（すなわちＡ１５３２およびそれ以下の構造）のみとなる。フィルタ５５０などのフィルタが取り付けられた実施形態において、フィルタはこれが適用される最上位レベルを規定するので、取り付けられた箇所およびそれ以下のサブコンポーネントのみがフィルタリング候補となる。他実施形態において、フィルタ５５０を取り付けないこともできる。取り付けられていないフィルタは、階層５００全体に対して適用可能と解釈される。換言すると未取付フィルタは、ルートノードに取り付けて（５４０）最も広い範囲となるフィルタ５５０と同様である。本明細書において、「範囲条件」という用語は、フィルタリング範囲またはフィルタが適用されるコンポーネントセットを限定する１以上の条件を指すために用いられる。実施例において、フィルタ５５０を取り付ける（５４０）ことは、範囲条件である。
【００４９】
フィルタ５５０の識別機能は、階層５００からフィルタリングし、除外し、または削除するコンポーネントを識別する。本明細書において、「識別条件」という用語は、フィルタリングするコンポーネントを識別する１以上の条件を指すために用いられる。実施例において、フィルタリングするコンポーネントの識別は、上述の範囲条件が規定する範囲によって限定される。他実施形態において、識別条件は範囲条件なしで機能し、単独またはフィルタリングするコンポーネントを識別するその他条件と併せて機能する。
【００５０】
フィルタリングするコンポーネントおよび／またはサブコンポーネントは、階層５００の構造に基づき複数の方法で識別することができる。実施形態において、フィルタコンポーネントは階層５００内の「絶対階層名」により識別される（すなわち、ルートノードまたはフィルタが取り付けられたノードに対する特定の相対パスまたは位置）。他実施形態において、フィルタコンポーネントはサブコンポーネント構造（「相対階層名」とも呼ぶ）を用いて識別される。他実施形態において、フィルタコンポーネントはその他識別条件を用いて識別される。各フィルタ条件の詳細を以下に説明する。
【００５１】
階層５００内の各コンポーネントは、階層内のコンポーネントの位置に基づき一意に識別することができる。本明細書において、「パス」「階層名」という用語は一般に、コンポーネントの階層内におけるルートノード（またはフィルタが取り付けられたノード）から当該コンポーネントへ至る場所定義、または当該コンポーネントからルートノード（またはフィルタが取り付けられたノード）へ至る場所定義を指す。
【００５２】
実施例において、「絶対階層名」フィルタリング条件は、階層５００内の特定パスに基づきフィルタコンポーネントを識別するために用いられる。具体的には、「絶対階層名」は例えば先頭コンポーネントＡ５１１（実施例においては階層５００のルートノードでありフィルタ５５０が取り付けられたノードでもある）などのルートノード（またはフィルタが取り付けられたノード）からのパスを規定する。例えばＢ  ｖ１．１  ５２２などのコンポーネントは、絶対階層名｛Ａ，Ａ１，Ｂ｝を有するものとして識別することができる。この例は、フィルタコンポーネントがコンポーネントＢ（リスト内の最後のコンポーネント）であることを示す。コンポーネントＢの親はＡ１であり、Ａ１はルートノードＡに取り付けられている。換言すると、ルートノードＡからコンポーネントＡ１へ降り、次に子ノードＢ（この場合はノードＢ  ｖ１．１  ５２２）を特定することにより、フィルタコンポーネントを識別できる。このようにフィルタ５５０は、絶対階層名｛Ａ，Ａ１，Ｂ｝を含む識別条件を有することができる。これによりＢ  ｖ１．１  ５２２をフィルタコンポーネントとして識別することができる。
【００５３】
実施形態において、識別条件は先頭コンポーネント（本例においてはＡ）を含むことができ、あるいは、先頭コンポーネントを除外して最初のノードを先・BR>ェコンポーネントＡと推定する（例えばフィルタが取り付けられないシナリオにおいて）か、もしくは最初のノードにフィルタが取り付けられていると推定する（例えばフィルタが取り付けられるシナリオにおいて）ことができる。換言すると、上記例において、コンポーネントＢ  ｖ１．１  ５２２に対する絶対階層名は、絶対階層名｛Ａ１，Ｂ｝によって表すことができる。
【００５４】
フィルタが取り付けられたノード（ルートノードに代えて）からの絶対階層名を表す別例において、推測フィルタ５５０をコンポーネントＡ２５３１へ取り付ける。このように、最初のノードに取り付けられていると推測する表記および実施形態を用いて、フィルタ取付ノードＡ２５３１からの絶対階層名｛Ａ１，Ｂ｝などにより、ノードＢ  ｖ１．２  ５３３を識別することができる。したがって、Ａ２５３１へ取り付けられ識別条件｛Ａ１，Ｂ｝を有するフィルタは、階層からノードＢ  ｖ１．２  ５３３をフィルタリングするように動作する。
【００５５】
説明した表記は、階層内におけるノード間の階層関係（すなわち相対パス）を表記する１つの方法例に過ぎないことを理解されたい。階層内におけるコンポーネントのパス構造を示唆および識別し、本明細書のシステムと方法を実現する、任意の手段を用いることができる。このように階層内の各ノードは、ルートノードに対するまたはフィルタ取付ノードに対する絶対階層名に基づき識別することができる。
【００５６】
実施例において、「相対階層名」フィルタリング条件は、フィルタコンポーネントから上方へ向かうパスによって規定されるサブコンポーネント構造に基づきフィルタコンポーネントを識別するために用いられる。具体的には、「相対階層名」は階層内におけるフィルタコンポーネントに対する相対的なパスを規定する関係パスである。例えば推測フィルタ５５０は、｛Ａ１，Ｂ｝などの相対階層名タイプ識別条件を有する。相対階層名タイプ識別条件は、フィルタコンポーネントを識別するため合致しなければならないサブ構造を規定するように記述することができる。相対階層名条件は、やはりトップダウン方式で整列されているが（例えばＡ１はＢの親）、そのなかで規定されるノード関係に基づきマッチングされる。換言すると、識別条件｛Ａ１，Ｂ｝の例において、その親がＡ１である場合、特定のコンポーネントＢが合致する（すなわち、フィルタコンポーネントとして識別される）。階層５００において、識別条件｛Ａ１，Ｂ｝に合致する２つのサブ構造が存在する。コンポーネントＢ  ｖ１．１  ５２２とコンポーネントＢ  ｖ１．２  ５３３である（いずれもコンポーネントＢであり、いずれもＡ１が親なので）。
【００５７】
このように相対階層名タイプ識別条件は、整列済リストとして記述することができる。最後の要素としてフィルタコンポーネントを含み、さらにオプションとして、フィルタコンポーネントの１以上の上位コンポーネントを含む。実施例において、リスト内でスキップされる上位コンポーネントは存在しない（すなわち、必ずしも全上位コンポーネントではないものの、リストにおいて上位コンポーネントのチェーンは途切れていない）。実施形態において、相対階層名リストのリストエントリは、「ワイルドカード」（すなわち※や？など）をコンポーネントマッチングの一部として含む。例えば上記リスト例は、｛※，Ａ１，Ｂ｝として表記することができる。これはＡ１の任意の上位コンポーネントが合致することを示す。さらにリストエントリは、１以上のコンポーネントセットを含むことができる。例えばリスト｛（Ａ１，Ａ２），Ｂ｝は、Ａ１またはＡ２を含む最初のリスト要素を識別する。このようにコンポーネントＢは、親がコンポーネントＡ１またはコンポーネントＡ２のいずれかである場合、識別条件に合致する。
【００５８】
極端な場合、実施例において、フィルタコンポーネントからルートノードに至るまでの全ての上位コンポーネントを含む階層名タイプ識別条件は、フィルタコンポーネントの絶対階層名と等価であり、これにより特定ノードのみを識別する。別の極端な場合、リストはフィルタコンポーネント自身のみを含み上位コンポーネントを含まず、これにより所与のフィルタコンポーネントに合致する全ノードを識別する。このように相対階層名タイプ識別条件は、複数のフィルタコンポーネントを識別することができる。
【００５９】
さらに実施例において、フィルタ５５０は相対階層名タイプ識別条件とともに範囲条件を含むことができる。図５は取り付けられたフィルタ（すなわち、フィルタ５５０はフィルタ取付コンポーネントＡ５１１に取り付けられている）を示し、相対階層名タイプ識別条件｛Ａ１，Ｂ｝は上述のようにコンポーネントＢ  ｖ１．１  ５２２とＢ  ｖ１．２  ５３３の双方に合致する。これに代えて、同じ識別条件であるがフィルタがノードＡ２５３１に取り付けられている場合を考える。換言すると、フィルタの範囲はＡ２５３１以下のサブ階層に限定される（すなわち、Ａ２５３１がサブ構造のルートノードである）。このようにコンポーネントＢ  ｖ１．２  ５３３のみがフィルタコンポーネントとして識別される。
【００６０】
実施形態において、識別条件はその他のコンポーネント識別情報を含むことができる。これを用いて、コンポーネントを他のコンポーネントから区別することができる。例えばコンポーネント識別子（例えばＵＲＬ）、バージョン識別子（例えばバージョン番号）、階層名、および／またはｈｒｅｆである。さらに識別条件は、従来からある論理演算子（ＡＮＤ、ＯＲ、ＮＯＴ、など）を用いて互いに組み合わせ、結合効果を得ることができる。例えば相対階層名リストＡＮＤコンポーネントバージョンのマッチングである。
【００６１】
また、フィルタ５５０などの複数のフィルタを階層５００内に提供することができる。各フィルタは異なる範囲および／または異なる識別条件を持つ。
【００６２】
動作中、実施例において、階層管理システム（ＨＭＳ）７２０（図７に示す）などのコンピュータシステムまたはコンピュータデバイス８１０（図８に示す）は、商品Ａ５１１の階層表記５００などのような製品および／またはコンポーネントの階層表記を、コンピュータ補助ドラフトシステム内に読み取り構築する。ＨＭＳ７２０は、コンポーネントモジュールをシステムのワーキングメモリ内のデータ構造へ読み出す。さらにユーザは、１以上のフィルタ５５０とともに範囲条件および／または識別条件（ここではフィルタ定義とも呼ぶ）を定義する。実施例において、階層５００をシステムメモリへ読み出す前に、ユーザはフィルタ定義を提供する。他実施形態において、ユーザはフィルタ定義をＨＭＳ７２０に対して提供し、ＨＭＳ７２０はフィルタ５５０を既に読み出した階層５００に対して適用する。
【００６３】
実施例において、ユーザはフィルタ５５０とともに、範囲条件を定義し（すなわちルートノードＡ５１１に取り付けられたもの）、さらに相対階層名タイプ識別条件｛Ａ２，Ａ１，Ｂ｝（すなわち、Ａ１が親でありＡ２がさらにその親である任意のコンポーネントＢをフィルタリングする）を定義する。階層５００は、幅優先でルートノードから開始して埋めることができる。サブコンポーネントを読み出す前に、ＨＭＳ７２０は既存のフィルタ５５０を評価し、サブコンポーネントがフィルタコンポーネントに合致するか否かを判定する。ＨＭＳ７２０は、ルートノードとしてコンポーネントＡ５１１を読み出す。既知のシステムにおいて、サブコンポーネントＡ１５２１は即座に処理される（すなわち、子コンポーネント５２１のデータ構造は、親コンポーネントＡ５１１の階層参照に基づき、階層に対して即座に読み出される）。ただし実施例において、各サブコンポーネントを読み出す前に、ＨＭＳ７２０はサブコンポーネントをフィルタ（例えば５５０）と比較することにより、サブコンポーネント（例えば最初の子Ａ１５２１）をフィルタリング候補として検査する。Ａ１５２１はフィルタ５５０に合致しない（すなわち、リスト内の最終コンポーネントであるコンポーネントＢではない）。このようにＨＭＳ７２０は、Ａ１５２１を読み出してＡ１５２１の子へ降りて検査する。Ａ１５２１の唯一の子はＢ  ｖ１．１  ５２２であり、ＨＭＳ７２０はこれをフィルタ５５０と比較する。Ｂ  ｖ１．１  ５２２はノードＢであり、したがってリストの最終要素に合致する。さらにＢ  ｖ１．１  ５２２の親はＡ１５２１であり、リスト内の２番目の要素に合致する。しかしＢ  ｖ１．１  ５２２の親の親（すなわちＡ１５２１の親）はＡ５１１であり、リスト内の最初のコンポーネント（すなわちＡ２）に合致しない。このようにコンポーネントＢ  ｖ１．１  ５２２はフィルタ５５０に合致せず、したがってＨＭＳ７２０はコンポーネントＢ  ｖ１．１  ５２２を読み出し、Ａ５２２の次の子に対する処理を継続する。
【００６４】
実施例において、ＨＭＳ７２０はＡ５１１の２番目の子であるコンポーネントＡ２５３１を検査する。この子はコンポーネントＢではないので、フィルタコンポーネントに合致しない。したがってＨＭＳ７２０は、コンポーネントＡ２５３１を読み出し、唯一の子Ａ１５３２を検査する。Ａ１５３２もコンポーネントＢではないので、ＨＭＳ７２０はＡ１５３２を読み出し、唯一の子Ｂ  ｖ１．２  ５３３を検査する。この子はコンポーネントＢであり、したがってフィルタ５５０のリストの最終要素に合致する。さらにその親はコンポーネントＡ１であり、さらにその親はコンポーネントＡ２である。したがってＨＭＳ７２０は、コンポーネントＢ  ｖ１．２  ５３３がフィルタコンポーネントであると認識し、階層５００へ読み出さない。
【００６５】
図５の上記例は、新たな構造を読み出す間に実施するものとして説明した（すなわちメモリ内にコンポーネント階層を最初に構築する間）。しかし、フィルタリング階層コンポーネントのその他実装も可能であり本明細書の範囲内であることを理解されたい。例えばコンポーネントフィルタリングは、既に構築された構造（例えばワーキングメモリへ既に読み出された階層）において実施し、これによりフィルタに合致するコンポーネントを削除することができる。さらに他実施形態において、ＨＭＳ７２０は幅優先サーチを実施し、または本明細書のシステムおよび方法を実現するその他横断的手法を実施することができる。
【００６６】
図６は、フィルタリング参照を識別し統合する階層読出プロセス６００の例を示すフローチャートである。実施例においてプロセス６００は、ＨＭＳ７２０（図７に示す）やコンピュータデバイス８１０（図８に示す）などのようなコンピュータシステムを用いて実施される。設計チームは、モジュールバージョン（例えばコンポーネント階層）に対するリクエストを入力する。例えば商品Ａ５１１（図５に示す）に対するリクエストである。ＨＭＳ７２０は、ステップ６０２において図５に示す階層５００の商品Ａ５１１に対応付けられた階層構造を読み出す。トップレベルモジュールおよび以下参照される各モジュールは、１以上のサブコンポーネントに対する参照を含む場合がある。各サブコンポーネントは、関連モジュールを有する場合がある。関連モジュールはさらに１以上のサブコンポーネントに対する参照を含む場合がある。以下同様である。
【００６７】
実施形態において、ＨＭＳ７２０はステップ６０３で最初にグローバルフィルタ（すなわち、階層５００の全範囲に対して適用するフィルタ）を読み出す。実施例において、ＨＭＳ７２０はモジュール読出プロセスを開始し、ステップ６０４において商品Ａ５１１のモジュールを取得して階層５００に対して組み込む。これは要素５１１によって表される（すなわち、トップレベル商品のデータ構造がメモリ内で生成され、トップモジュールからインポートされたデータを含む）。トップモジュール読出プロセスの一部としてＨＭＳ７２０は、トップモジュールに取り付けられたフィルタを読み出す。本例においてＨＭＳ７２０は、トップモジュールＡ５１１に取り付けられた（５４０）フィルタ５５０を読み出す。このようにフィルタ５５０は、階層５００全体をカバーする範囲を有し、親がＡ１である任意のコンポーネントＢに合致する（すなわち、図６の例に示した｛Ａ１，Ｂ｝として表記される）。
【００６８】
ステップ６１０において、ＨＭＳ７２０は現在処理中のモジュール（この段階においては商品Ａ５１１に対応付けられたトップモジュール）が未処理のサブコンポーネント（すなわち、階層５００へインポートされていない）を有するか否かを検査する。図５に示すように、トップモジュールはコンポーネントＡ１５２１とＡ２５３１を参照する。１以上の未レビューサブコンポーネントが残っている場合、ＨＭＳ７２０はステップ６２０において未レビューサブコンポーネントを選択してインポートする。したがってＨＭＳ７２０はステップ６２０において最初の未レビューサブコンポーネントＡ１５２１を選択する。
【００６９】
サブコンポーネントＡ１５２１を完全にインポートする前に、ＨＭＳ７２０はフィルタリングするサブコンポーネントを解析する（すなわち、現在のサブコンポーネントを階層５００から除外または除去すべきか否かを判定する）。ＨＭＳ７２０はステップ６３０において、サブコンポーネントを合致するフィルタと比較する。ステップ６４０において、現在のサブコンポーネントが１以上のフィルタと合致する場合、そのサブコンポーネントはステップ６４２において階層５００から除外（または除去）される。ステップ６４０において、現在のサブコンポーネントが１以上のフィルタと合致しない場合、ＨＭＳ７２０はステップ６４４において解析中のサブコンポーネントに対応付けられたモジュールを取得／読み出し、そのモジュールを階層５００へインポートする。本例において、サブコンポーネントＡ１５２１はフィルタ５５０に合致せず、したがってＨＭＳ７２０はステップ６４４においてこのサブコンポーネントを読み出す（すなわち、コンポーネントＡ１５２１をＡ５１１の子として追加する）。
【００７０】
実施例において、サブコンポーネントモジュールを取得するステップ６４４の一部として、このサブコンポーネントはレビューしているモジュールとなる。ＨＭＳ７２０は、処理をループしてステップ６１０においてコンポーネントＡ１  ｖ１．０  ５２１のサブコンポーネントを検討する。本例において、コンポーネントＡ１  ｖ１．０  ５２１は１つのサブコンポーネントＢ  ｖ１．１  ５２２を有する。ＨＭＳ７２０はステップ６２０において、未レビューサブコンポーネントＢ  ｖ１．１  ５２２を選択し、ステップ６３０においてこのサブコンポーネントをフィルタ５５０（すなわち唯一のアクティブフィルタ）と比較する。この段階において、階層５００は２つのノード（すなわち２つのコンポーネント）Ａ１５２１（Ｂ  ｖ１．１  ５２２の親）とＡ５１１（Ｂ  ｖ１．１  ５２２の親の親）が読み込まれている。ＨＭＳ７２０は、サブコンポーネントＢ  ｖ１．１  ５２２がフィルタ５５０に合致すると判定する。コンポーネントＢでありかつその親がコンポーネントＡ１だからである。このようにＨＭＳ７２０は、ステップ６４２においてコンポーネントＢ  ｖ１．１  ５２２を階層５００から除外（または削除）し、ステップ６１０へ戻る。換言すると、Ａ５１１、Ａ１５２１、Ｂ  ｖ１．１  ５２２を含むブランチとともに先頭コンポーネントに取り付けられたフィルタ５５０を考慮した後、ＨＭＳはコンポーネントＡ５１１とＡ１５２１のみを読み出し、フィルタ５５０に基づきコンポーネントＢ  ｖ１．１  ５２２を階層５００から除外（または削除）したことになる。
【００７１】
実施例に戻って、サブコンポーネントＢ  ｖ１．１  ５２２は除外され、これより深い子コンポーネントは検査されない。このようにステップ６１０において、コンポーネントＡ１５２１は未レビューのサブコンポーネントを有さない状態となる。ＨＭＳ７２０はステップ６５０において現在のモジュールを完了する。ＨＭＳ７２０は次にステップ６６０において、トップモジュールが完了したか否かを検査する。完了していない場合、ＨＭＳ７２０はステップ６７０において、現在の（すなわち今完了した）コンポーネントの親へ戻ってさらに解析を実施する。換言すると、あるコンポーネントのサブコンポーネントのレビューが完了すると、ＨＭＳ７２０はステップ６７０においてそのコンポーネントの親へ上り、その親のその他サブコンポーネントを処理する。ステップ６６０においてトップモジュールを完了すると（すなわち、トップモジュールの全サブコンポーネントをレビューし終えると）、ＨＭＳ７２０はステップ６８０において終了する。
【００７２】
同様にＨＭＳ７２０は、先頭コンポーネントＡ５１１の次の未レビューサブコンポーネントを検査する。図５に示すように、これはコンポーネントＡ２５３１のラインを含み、Ａ２５３１はサブコンポーネントＡ１５３２の親となっており、さらに子コンポーネントＢ  ｖ１．２  ５３３が含まれる。ステップ６１０に示すように、プロセス６００のループを用いて、ＨＭＳ７２０は子Ｂ  ｖ１．２  ５３３を除外する。これはコンポーネントＢであり、その親はＡ１だからである（すなわちフィルタ５５０に合致する）。このように、このブランチにおいてコンポーネントＡ２５３１とＡ１５３２のみが階層５００へ読み込まれる。
【００７３】
実施例において、ＨＭＳ７２０は階層構造５００の検査と構築に対して深さ優先のアプローチを実施する（すなわち、各新規コンポーネントを調査する際において、ＨＭＳ７２０はその他サブコンポーネントをレビューする前に、最初のサブコンポーネントをステップダウンして完全検査する）。ただし、本明細書におけるシステムと方法を実施することを可能にする、階層構造５００の横断と構築のその他アプローチも用い得ることを理解されたい。例えば幅優先アプローチが考えられる（すなわち、サブコンポーネントに対してステップダウンする前に、あるレベルにおける全コンポーネントをレビューする）。さらにフィルタ５５０は、範囲条件のみ（すなわち、論理取付点に基づく先頭コンポーネントＡ５１１以下）を記述し、フィルタコンポーネントとその親のコンポーネントタイプのみを含む識別条件を記述することもできる。ただしその他範囲条件や識別条件も可能であり本発明の範囲内であることを理解されたい。
【００７４】
図７は、階層管理システム７２０の例を示すブロック図７００である。階層管理システム７２０は、階層構造５００（図５に示す）のようなコンポーネント設計階層内におけるフィルタリング参照を実装するために用いられる。これに代えて、本明細書の階層管理システム７２０の動作を実現できる任意のコンピュータアーキテクチャを用いることもできる。実施例において階層管理システム７２０は、メモリデバイス７５０内でデータ構造のコンポーネント設計階層を構築し、図６のプロセス６００で説明したようなフィルタリング参照とコンポーネント除外または削除を実現する。
【００７５】
実施例において階層管理システム７２０は、メモリデバイス７５０とプロセッサ７５２を備える。プロセッサ７５２は、命令を実行するため動作するようにメモリデバイス７５０と連結されている。実施形態において、実行可能命令がメモリデバイス７５０内に格納される。階層管理システム７２０は、プロセッサ７５２をプログラムすることにより、本明細書が説明する１以上の動作を実施するように構成することができる。例えばプロセッサ７５２は、１以上の実行可能命令として動作をコード化し、その実行可能命令をメモリデバイス７５０に対して提供することにより、プログラムすることができる。プロセッサ７５２は、１以上のプロセスユニットを備えることができる。例えばマルチコア構成が考えられるが、これに限らない。
【００７６】
実施例においてメモリデバイス７５０は、実行可能命令および／またはその他データなどの情報を格納し取得することができる１以上のデバイスである。メモリデバイス７５０は、１以上のコンピュータ読取可能媒体を含む。例えば、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ソリッドステートディスク、ハードディスク、読取専用メモリ（ＲＯＭ）、ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ （ＥＰＲＯＭ）、ｅｌｅｃｔｒｉｃａｌｌｙ  ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ（ＥＥＰＲＯＭ）、および／または不揮発性ＲＡＭ（ＮＶＲＡＭ）が挙げられるが、これらに限らない。これらメモリタイプは例示に過ぎず、コンピュータプログラムを格納するため用いることができるメモリタイプを限定するものではない。
【００７７】
実施例においてメモリデバイス７５０は、データ構造、ファイル、その他メモリ領域における様々なコンポーネントやサブコンポーネントに対応付けられた様々なコンポーネントやモジュールデータを格納するように構成することができる。さらにメモリデバイス７５０は、階層構造５００のようなコンポーネント関係データ、フィルタデータ、および階層データ、または図１〜図５に示すようなその他コンポーネント関係データを格納することができる。さらにメモリデバイス７５０は、図５に示すようなフィルタリング参照データを格納することができる。
【００７８】
実施形態において階層管理システム７２０は、プロセッサ７５２に連結された提示インターフェース７５４を備える。提示インターフェース７５４は、例えばユーザインターフェースおよび／または警告などの情報を、ユーザ７５６に対して提示する。例えば提示インターフェース７５４は、ディスプレイデバイス（図示せず）に連結可能なディスプレイアダプタ（図示せず）備えることができる。ディスプレイデバイスは例えば、ブラウン管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）、有機ＬＥＤ（ＯＬＥＤ）ディスプレイ、および／またはディスプレイを有するハンドヘルドデバイスである。実施形態において提示インターフェース７５４は、１以上のディスプレイデバイスを備える。これに加えてまたはこれに代えて、提示インターフェース７５４は、例えばオーディオアダプタおよび／またはスピーカなどの音声出力デバイス（図示せず）を備えることができる。
【００７９】
実施形態において階層管理システム７２０は、ユーザ入力インターフェース７５８を備える。実施例においてユーザ入力インターフェース７５８は、プロセッサ７５２に連結され、ユーザ７５６から入力を受け取る。ユーザ入力インターフェース７５８は例えば、キーボード、ポインティングデバイス、マウス、スタイラス、および／またはタッチパッドやタッチスクリーンなどのタッチ検出パネルを含む。例えばタッチスクリーンなどの単一部材が、提示インターフェース７５４のディスプレイデバイスおよびユーザ入力インターフェース８５８として機能する場合もある。
【００８０】
実施例において、通信インターフェース７６０はプロセッサ７５２に連結され、例えば他コンピュータシステムや階層管理システム７２０にアクセスできるその他デバイスなどのような１以上の他デバイスと通信するように構成されている。このデバイスとしては例えば、ラップトップコンピュータ、携帯情報端末（ＰＤＡ）、スマートフォンなどが挙げられるが、これに限らない。通信インターフェース７６０は、有線ネットワークアダプタ、無線ネットワークアダプタ、モバイル通信アダプタ、シリアル通信アダプタ、および／またはパラレル通信アダプタを含むが、これに限らない。通信インターフェース７６０は、１以上のリモートデバイスからデータを受信し、および／または１以上のリモートデバイスに対してデータを送信することができる。階層管理システム７２０は、リモート通信のためにｗｅｂを用いることができる。例えばリモートデスクトップコンピュータ（図示せず）が挙げられる。
【００８１】
実施例において、提示インターフェース７５４および／または通信インターフェース７６０は、本明細書が説明する方法とともに用いるのに適した情報を、例えばユーザ７５６や他デバイスに対して提供することができる。したがって提示インターフェース７５４および／または通信インターフェース７６０は、出力デバイスとみなすことができる。同様にユーザ入力インターフェース７５８および／または通信インターフェース７６０は、本明細書が説明する方法とともに用いるのに適した情報を受け取ることができ、入力デバイスとみなすことができる。
【００８２】
さらにプロセッサ７５２および／またはメモリデバイス７５０は、ストレージデバイス７６２と連結することができる。ストレージデバイス７６２は、データを格納しおよび／または受け取るのに適した、任意のコンピュータ動作可能なハードウェアである。ここでいうデータは、例えばデータベース１６４に関連するデータが挙げられるが、これに限らない。実施例においてストレージデバイス７６２は、階層管理システム７２０に統合されている。例えば階層管理システム７２０は、ストレージデバイス７６２として１以上のハードディスクドライブを備えることができる。さらに例えばストレージデバイス７６２は、複数のストレージユニットを備えることができる。例えばｒｅｄｕｎｄａｎｔ  ａｒｒａｙ  ｏｆ  ｉｎｅｘｐｅｎｓｉｖｅ  ｄｉｓｋｓ（ＲＡＩＤ）構成における複数のハードディスクおよび／またはソリッドステートディスクである。ストレージデバイス７６２は、ｓｔｏｒａｇｅ  ａｒｅａ  ｎｅｔｗｏｒｋ （ＳＡＮ）、ｎｅｔｗｏｒｋ  ａｔｔａｃｈｅｄ  ｓｔｏｒａｇｅ （ＮＡＳ）、および／またはクラウドベースストレージを含む。これに代えて、ストレージデバイス７６２を階層管理システム７２０の外部に設け、ストレージインターフェース（図示せず）を介してアクセスすることもできる。
【００８３】
さらに実施例においてデータベース７６４は、コンポーネント、モジュール、フィルタ、階層に対応付けられた様々な静的または動的動作データ、および階層構造を含む。
【００８４】
本明細書が説明する実施形態、および明示はしていないが本明細書の範囲内に含まれる実施形態は、フィルタリング参照を含むコンポーネント階層を管理する手段を構成する。例えば階層管理システム７２０、およびこれに追加または含まれる同様のコンピュータデバイスは、プロセッサに本明細書が説明するプロセスと技術を実行させるコンピュータ実行可能命令によってプログラムされた十分なコンピュータ読取可能記憶媒体を備える。具体的には、階層管理システム７２０およびこれに追加または含まれるその他同様のコンピュータデバイスは、コンポーネントフィルタを含むコンポーネント階層を管理する手段を構成する。
【００８５】
図８は、データベース８２０とコンピュータデバイス８１０の構成例８００を示す。フィルタリング参照を含むコンポーネント階層を管理するため用いることができる、その他関連するコンピュータコンポーネントを併せて示している。実施形態において、コンピュータデバイス８１０は階層管理システム７２０（図７に示す）と同様のものである。データベース８２０は、コンピュータデバイス８１０内の複数の個別コンポーネントに連結されている。コンピュータデバイス８１０は、特定タスクを実施する。
【００８６】
実施例においてデータベース８２０は、コンポーネント＆モジュールデータ８２２、階層データ８２４、フィルタデータ８２６を含む。実施形態においてデータベース８２０は、データベース７６４（図７に示す）と同様のものである。コンポーネント＆モジュールデータ８２２は、図１〜図６で説明したデザインコンポーネントやモジュールに関連する情報を含む。階層データ８２４は、階層構造５００（図５に示す）に示すような階層コンポーネントデータやコンポーネント間の関係を定義するデータを含む。フィルタ参照データ８２６は、例えばフィルタリング参照５４０（図５に示す）とフィルタ５５０（図５に示す）のようなコンポーネントフィルタリングに関連するデータを含む。
【００８７】
コンピュータデバイス８１０は、データベース８２０とともにデータストレージデバイス８３０を備える。コンピュータデバイス８１０は、階層管理コンポーネント８４０を備える。階層管理コンポーネント８４０は、モジュールをインポートし、階層構造５００などの階層構造を構築管理する。コンピュータデバイス８１０は、階層のコンポーネントに対応付けられたモジュールを処理するモジュール読出コンポーネント８５０を備える。フィルタコンポーネント８６０は、プロセス７００（図７に示す）で説明したようなフィルタプロセスを処理する。プロセスコンポーネント８７０は、トークン化システムに関連するコンピュータ実行可能命令の実行を補助する。
【００８８】
図９は、階層５００（図５に示す）のような論理コンポーネント階層からコンポーネントをフィルタリングする方法例９００である。実施例において、方法９００は階層管理システム７２０（図７に示す）やコンピュータデバイス８１０（図８に示す）などのコンピュータシステムによって実施される。実施例において、方法９００は、論理コンポーネント階層に対応付けられたフィルタをメモリ内で識別するステップ９１０を有する。実施形態において、フィルタを識別するステップ９１０はさらに、フィルタを適用する論理コンポーネント階層内のコンポーネントセットを規定する範囲条件を有するフィルタを識別するステップを有する。実施形態において、フィルタを識別するステップ９１０はさらに、フィルタを識別するステップであって、範囲条件が論理コンポーネント階層内の取付ノードを識別するステップを有する。実施形態において、フィルタを識別するステップ９１０はさらに、フィルタを識別するステップであって、コンポーネントセットが論理コンポーネント階層内の取付ノード以下のノードを含むように定義されるステップを有する。
【００８９】
実施例において、方法９００は、プロセッサにより論理コンポーネント階層内のサブコンポーネントをフィルタと比較するステップ９２０を有する。実施形態において、フィルタを識別するステップ９１０はさらに、１以上のコンポーネント特性を定義する識別条件を含むフィルタを識別するステップを有する。またサブコンポーネントを比較するステップ９２０はさらに、識別条件をサブコンポーネントの特性と比較するステップを有する。実施形態において、識別条件を比較するステップはさらに、コンポーネント名、コンポーネント識別子、コンポーネントタイプ、コンポーネントバージョン識別子のうち１以上をサブコンポーネントの特性と比較するステップを有する。実施形態において、識別条件を比較するステップはさらに、少なくとも部分的に階層内のサブコンポーネントの相対階層名に基づき、フィルタコンポーネントを識別するステップを有する。
【００９０】
実施例において、方法９００は、サブコンポーネントをフィルタと比較した結果に基づきフィルタリングするサブコンポーネントを識別するステップ９３０を有する。方法９００は、論理コンポーネント階層からサブコンポーネントをフィルタリングするステップを有する。
【００９１】
以上の説明から分かるように、本明細書の上記実施形態は、コンピュータプログラミングまたはエンジニアリング技術を用いて実装することができる。これは、コンピュータソフトウェア、ファームウェア、ハードウェア、これらの組み合わせまたはサブセットを含む。その結果、コンポーネント階層を管理し、フィルタリングと階層から参照をフィルタリングすることを実装するシステムが得られる。結果として得られるこのようなプログラムは、コンピュータ読取可能コードを有し、１以上のコンピュータ読取可能媒体内に実装または提供することができる。これにより、本明細書の実施形態に基づくコンピュータプログラム製品（すなわち製造製品）を製作することができる。コンピュータ読取可能媒体は例えば、固定（ハード）ドライブ、ディスケット、光学ディスク、磁気テープ、読取専用メモリ（ＲＯＭ）などの半導体メモリ、および／またはインターネットその他通信ネットワークやリンクなどの送受信媒体などがあるが、これに限られない。コンピュータコードを格納した製造製品は、媒体からコードを直接実行し、媒体から他の媒体へコードをコピーし、あるいはネットワーク上でコードを送信することにより、作成しおよび／または用いることができる。
【００９２】
これらコンピュータプログラム（プログラム、ソフトウェア、ソフトウェアアプリケーション、”ａｐｐ”、またはコードとしても知られている）は、プログラマブルプロセッサの機械命令を含み、高レベル手続型および／またはオブジェクト指向プログラム言語および／またはアセンブリ／機械言語によって実装することができる。本明細書において、「機械読取可能媒体」「コンピュータ読取可能媒体」という用語は、機械命令および／またはデータをプログラム可能プロセッサに対して提供するために用いる任意のコンピュータプログラム製品、装置、および／またはデバイス（例えば磁気ディスク、光学ディスク、メモリ、プログラム可能論理デバイス（ＰＬＤ））を指す。これは、機械命令を機械読取可能信号として受け取る機械読取可能媒体を含む。ただし「機械読取可能媒体」「コンピュータ読取可能媒体」は、一時的信号を含まない。「機械読取可能信号」という用語は、機械命令および／またはデータをプログラム可能プロセッサに対して提供するために用いる任意の信号を指す。
【００９３】
本方法およびシステムは、コンポーネント階層内で定義されたフィルタリング参照を用いてサブコンポーネントを除外する。例えばサブコンポーネントは、１以上の範囲条件と識別条件に基づき上位コンポーネント内の除外すべきコンポーネントを記述するフィルタ参照を定義することにより、階層を読み出す間に除外することができる。階層構築の間に本明細書のシステムおよび方法は、フィルタ参照に合致するサブコンポーネントを除外する。このようにコンポーネントは、コンポーネント階層からフィルタリングされあるいは除外される。
【００９４】
本システムが解決する技術的課題の少なくとも１つは以下を含む：（ｉ）階層内に複数回現れる冗長階層コンポーネント；（ｉｉ）階層内にコンポーネントの異なるバージョンが存在することにより生じる競合。本明細書のシステムおよび方法が解決するその他技術的課題は、階層内に現れる不必要なコンポーネントによるコンピュータ処理の増加、すなわちコンピュータを低速にすることである。
【００９５】
本明細書が説明するシステムおよび方法は、コンピュータプログラミングまたはエンジニアリング技術を用いて実装することができる。これは、コンピュータソフトウェア、ファームウェア、ハードウェア、これらの組み合わせまたはサブセットを含む。技術的効果は、以下のステップの少なくとも１つを実施することにより実現できる：（ａ）前記論理コンポーネント階層に対応付けられたフィルタを前記メモリ内で識別するステップ；（ｂ）前記プロセッサにより前記論理コンポーネント階層のサブコンポーネントを前記フィルタと比較するステップ；（ｃ）前記サブコンポーネントと前記フィルタの比較に基づきフィルタリングする前記サブコンポーネントを識別するステップ；（ｄ）前記論理コンポーネント階層から前記サブコンポーネントをフィルタリングするステップ；（ｅ）前記フィルタを適用する前記論理コンポーネント階層内のコンポーネントセットを定義する範囲条件を含む前記フィルタを識別するステップ；（ｆ）前記フィルタを識別するステップであって、前記範囲条件は前記論理コンポーネント階層内の取付ノードを識別することを含む、ステップ；（ｇ）前記フィルタを識別するステップであって、前記コンポーネントセットは前記論理コンポーネント階層内の前記取付ノード以下のノードを含むように定義される、ステップ；（ｈ）１以上のコンポーネント特性を定義する識別条件を含む前記フィルタを識別するステップ；（ｉ）前記識別条件を前記サブコンポーネントの特性と比較するステップ；（ｊ）コンポーネント名、コンポーネント識別子、コンポーネントタイプ、コンポーネントバージョン識別子のうち１以上を前記サブコンポーネントの特性と比較するステップ；（ｋ）前記階層内における前記サブコンポーネントの相対階層名に少なくとも部分的に基づきフィルタコンポーネントを識別するステップ。
【００９６】
本システムによって実現される技術的効果は、コンポーネント階層を維持するためのコンピュータ要件を減少させることの少なくとも１つである。これは例えば、セグメント再利用および／またはコンポーネントフィルタリングを拡張することによりなされる。したがってシステムにより、フィルタリングされたコンポーネント階層を実現できる。これにより、メモリ内の階層を構築および維持するために必要なコンピュータリソースを減少させ、コンピュータ負荷を減じることができる。
【００９７】
本明細書は、最良の実施形態を含む実施例を用いて説明し、当業者が本開示を実施できるようにしている。これは、デバイスまたはシステムを作成し、用い、組み込んだ方法を実施することを含む。本明細書の請求範囲は特許請求範囲によって定義され、当業者が想到可能なその他実施例を含むことができる。特許請求範囲の文言から逸脱せず、特許請求範囲の文言と実質的な差異がない等価構造要素を含むのであれば、そのような他実施例は特許請求範囲に含まれることが意図されている。
【図１】
2015158911.tif 000003
【図２】
2015158911.tif 000004
【図３】
2015158911.tif 000005
【図４】
2015158911.tif 000006
【図５】
2015158911.tif 000007
【図６】
2015158911.tif 000008
【図７】
2015158911.tif 000009
【図８】
2015158911.tif 000010
【図９】
2015158911.tif 000011
【外国語明細書】
2015158911000001.pdf