以下の説明は、本明細書の実施形態を示す。これは例示であり限定目的のものではない。本明細書は、コンポーネント階層を管理するアプリケーション一般に対して適用することができる。
本明細書において、「a」「an」を付した要素またはステップは、特に明示しない限り、複数の要素やステップを排除するものと解釈すべきではない。本明細書の「実施例」「1実施形態」は、言及した特徴部分を組み込んだ別実施形態を排除するように解釈されることを意図したものではない。
本明細書において、「データベース」という用語は、データ本体、リレーショナルデータベース管理システム(RDBMS)、またはこれら双方を指す。本明細書において、データベースは任意のデータコレクションを含む。これは、階層データベース、関係データベース、フラットファイルデータベース、オブジェクト関係データベース、オブジェクト指向データベース、その他コンピュータシステムが格納する構造化されたレコードコレクションまたはデータコレクションを含む。上記例は例示目的のみのものであり、データベースの定義および/または意味を限定することを意図したものではない。RDBMSの例としては、Oracle(登録商標)データベース、MySQL、IBM(登録商標)DB2、Microsoft(登録商標)SQL Server、Sybase(登録商標)、PostgreSQLが挙げられるが、これらに限らない。本明細書におけるシステムと方法を実現可能にする任意のデータベースを用いることができる(Oracleは、カリフォルニア州Redwood ShoresのOracle Corporationの登録商標;IBMは、ニューヨーク州ArmonkのInternational Business Machines Corporationの登録商標;Microsoftは、ワシントン州RedmondのMicrosoft Corporationの登録商標;Sybaseは、カリフォルニア州DublinのSybaseの登録商標)。
本明細書において、プロセッサは任意のプログラム可能システムを含む。これは、マイクロコントローラ、reduced instruction set circuits(RISC)、特定用途向け集積回路(ASIC)、論理回路、その他任意の本明細書における機能を実行可能な回路またはプロセッサを用いるシステムを含む。上記例は例示目的のみのものであり、プロセッサの定義および/または意味を限定することを意図したものではない。
本明細書において、「ソフトウェア」「ファームウェア」という用語は交換可能であり、プロセッサが実行するためメモリに格納される任意のコンピュータプログラムを含む。これは、RAMメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、不揮発性RAM(NVRAM)メモリを含む。上記メモリタイプは例示目的のみのものであり、コンピュータプログラムを格納するために用いることができるメモリ種別を限定することを意図したものではない。
1実施形態において、コンピュータプログラムを提供する。このプログラムは、コンピュータ読取可能媒体上に格納される。1実施例において、システムはサーバコンピュータへ接続することを必要としない単一のコンピュータシステム上で実行される。1実施形態において、システムはWindows(登録商標)環境で実行される(Windowsは、ワシントン州RedmondのMicrosoft Corporationの登録商標である)。1実施形態において、システムはメインフレーム環境およびUNIX(登録商標)サーバ環境で実行される(UNIXは、英国Berkshire,ReadingのX/Open Company Limitedの登録商標である)。アプリケーションは柔軟であり、主要機能を損なうことなくさまざまな環境上で実行できるように設計されている。実施形態において、システムは複数のコンピュータデバイス間で分散した複数のコンポーネントを含む。1以上のコンポーネントは、コンピュータ読取可能媒体に格納されたコンピュータ実行可能命令の形態とすることができる。システムとプロセスは、本明細書の特定実施形態に限定されるものではない。また各システムと各プロセスのコンポーネントは、本明細書のその他コンポーネントおよびプロセスから独立し切り離して実施することができる。各コンポーネントとプロセスは、他のパッケージやプロセスと組み合わせて使用することもできる。
複数のコンポーネントを有するハードウェアまたはソフトウェアシステムの開発は、システムの設計をより小さく管理しやすいシステムコンポーネント設計へ分割すると、より効率的になる。コンポーネント階層を補助し、その階層を用いる際に生じる問題を解決するため、1以上のサブコンポーネントを階層全体からフィルタリング(すなわち除外)することができる。
図1は、商品A110の階層構造100である。以下に説明するように、1以上のコンポーネントはフィルタリングまたは除外される。商品A110は、第1コンポーネントA1120、第2コンポーネントA2130を備える。第2コンポーネントA2130は、2つのサブコンポーネントA2,1140とA2,2150を備える。製品A110は、それぞれコンポーネントA1120とコンポーネントA2130との間で、階層参照111と112を有する。同様にコンポーネントA2130は、それぞれサブコンポーネントA2,1140とA2,2150との間で、階層参照131と132を有する。製品A110はさらに、図示しないコンポーネント、さらにその配下のサブコンポーネントを含むこともできる。サブコンポーネントはさらにサブコンポーネントを含むことができ、以下同様である。
図1の階層構造100のような階層構造は、商品A110のコンポーネントやサブコンポーネントとは別に構築することができる(例えば、商品A110の完全な階層構造100のサブセット構造)。また本実施形態において要素A110は商品であるが、要素A110はコンポーネントとみなすこともでき、要素A1120と要素A2130は要素A110のサブコンポーネントとみなすことができる。同様に要素A2,1140と要素A2,2150は、そのサブコンポーネント(図示せず)との間で階層関係にあるコンポーネントとみなすことができる。
商品A110は、モジュールにより設計されたハードウェアまたはソフトウェアシステムである。例えば商品A110は車両であり、コンポーネントA1120は車両フレームであり、コンポーネントA2130は車両エンジンである。エンジンのサブコンポーネントA2,1140とA2,2150は例えば、エンジンのクランクシャフトとシリンダである。他の例としては、商品A110は集積回路(IC)チップであり、コンポーネントA1120はランダムアクセスメモリ(RAM)であり、コンポーネントA2130はICチップの演算処理装置(CPU)である。CPUのサブコンポーネントA2,1140とA2,2150は例えば、CPUの算術論理演算装置(ALU)と制御ユニットである。
開発プロセスにおいて、特定コンポーネントの設計チームは、コンポーネントおよび/または当該コンポーネントのサブコンポーネントの全ての現行設計および従前設計にアクセスする場合がある。設計チームは、階層構造100の各レベルにおけるコンポーネントに対して責任を負う。例えば設計チームは商品A110を開発し、別の設計チームが商品A110の各コンポーネント(例えばコンポーネントA1120とA2130)を開発する。商品A110の設計チームは、商品A110のコンポーネントの設計を用いて、商品A110をシミュレートおよび/またはテストする責任を負う。
商品A110およびそのコンポーネントA1120とA2130、サブコンポーネントA2,1140とA2,2150の設計は、中央データベースまたは分散データベース(図示せず)内に格納されるモジュール内のファイルに含まれる。設計チームはこれらを取得する。モジュールは通常、1以上のファイルを含む。これはソフトウェアコードおよび/または設計データを含む。モジュールは他のモジュールを格納する場合があり、これらはリリースされ、あるいは再利用のためパッケージされる。実施例において、例えばマサチューセッツ州WalthamのDassault Systemes ENOVIA Corp.のビジネスオブジェクトデータベースのような、サーバサイドデータベースを用いる。本明細書のシステムと方法を実現するその他データベースまたはデータベースの組み合わせを用いることもできる。
コンポーネントの開発を促進しトラッキングすることを補助するため、モジュール内に格納されたコンポーネントの各設計は、当該モジュールに関する特定のバージョン番号を有する場合がある。例えば、モジュールおよび/またはコンポーネントのバージョンである。
図2は、特定コンポーネントに対応付けられたモジュールバージョンのブロック図200である。図1に示すコンポーネント階層と同じものを用いている。商品A110は、異なるバージョン番号を有する複数のモジュールと対応付けられる場合がある。例えばモジュールA v1.0 211、v1.1 212、v1.2 213である。
図200は、モジュールブランチ210、220、230、240、250を含む。モジュールブランチは、特定の商品、コンポーネント、またはサブコンポーネントに共通して関連するオブジェクトコレクションの時系列更新を示す。例えばモジュールブランチ210内に含まれまたはこれから参照されるモジュールコレクションA v1.0 211、v1.1 212、v1.2 213は、商品A110の異なるモジュールバージョンである。これらは前モジュールバージョンの更新または変更をそれぞれ示す。本明細書において、共通モジュールブランチを共有するモジュールは、同じモジュールとみなすことができる。これは例えば、共通のモジュールバージョン系列の同一または異なるバージョンであることを示す。同様に要素またはコンポーネントは、共通バージョン系列を共有するのであれば、同一であるとみなすことができる(例えばブランチ210、220、230、240、250)。モジュールブランチ220は、モジュールA1 v1.0 221とA1 v1.1 222のコレクションを示す。これらはコンポーネントA1120に対応付けられた別バージョンのモジュールである。モジュールブランチ230は、モジュールAs v1.0 231、As v1.1 232、As v1.2 233のコレクションを示す。これらはコンポーネントA2130に対応付けられた別バージョンのモジュールである。モジュールブランチ240は、モジュールAs,1 v1.0 241のコレクションを示す。これはサブコンポーネントA2,1140に対応付けられている。モジュールブランチ250は、モジュールAs,2 v1.0 251とAs,2 v1.1 252のコレクションを示す。これらはサブコンポーネントA2,2150に対応付けられた別バージョンのモジュールである。
モジュールバージョン(例えばモジュールA v1.0 211、v1.1 212、v1.2 213)は、コンポーネント設計(例えば商品A110)の継時的更新または変更のなかで特定日時において更新または変更されたモジュールである。設計チームによる1モジュールのコンポーネント設計に対する任意の変更により、新たなモジュールバージョン番号を有する新たなモジュールを生成することになる。例えばコンポーネントA2130の設計チームは、モジュールA2 V1.1 232内に含まれるバージョン1.1の設計を変更し、新たなバージョン番号1.2を有するモジュールA2 V1.2 233を生成して新設計を保存する。特定のコンポーネント(例えばコンポーネントA2130)は、複数の設計バージョンを有する場合がある。これらはそれぞれ異なるバージョン番号(例えばv1.0、v1.1、v1.2)を有する個別のモジュール(例えばAs v1.0 231、As v1.1 232、As v1.2 233)内に格納される。
商品またはコンポーネントの開発をさらに促進するため、特定のサブモジュールを参照するコンポーネントのモジュール内に、1以上の階層参照を格納することができる。図3と図4は、特定の商品設計のモジュールとその商品のコンポーネントに関連するサブモジュールとの間において、時刻t1からt2において存在し変化する、異なるタイプの階層参照の例を示す。図3と図4は、階層構造100の一部を用いる。商品A110は2つのコンポーネントA1120とA2130を含み、コンポーネントA2はサブコンポーネントA2,1140を含む。サブモジュールは、他のモジュールから参照され、当該モジュールに対応付けられたコンポーネントのサブコンポーネントに対応する、任意のモジュールである。例えば図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はコンポーネントA110に対応付けられ、サブモジュールA1 V1.0 321とA2 V1.0 331はそれぞれサブコンポーネントA1120とA2130に対応付けられている。
図3は、商品A110のモジュール(図2に示す)を格納するデータベース(図3には示していない)コンテンツの時刻t1におけるスナップショット300の例である。モジュールA v1.0 311は、商品A110の設計のバージョン1.0を含む。モジュールA1 V1.0 321とA2 V1.0 331はそれぞれ、コンポーネントA1120とA2130(ともに図2に示す)の設計のバージョン1.0を含む。モジュールA2,1 V1.0 341は、サブコンポーネントA2,1140(図2に示す)の設計のバージョン1.0を含む。モジュールブランチ320は、コンポーネントA1120に対応するモジュールの経時変化を示し、時刻t1においてモジュールA1 V1.0 321を含みまたは参照する。モジュールブランチ330は、コンポーネントA2130に対応するモジュールの経時変化を示し、時刻t1においてモジュールA2 V1.0 331を含みまたは参照する。モジュールブランチ340は、サブコンポーネントA2,1140に対応するモジュールの経時変化を示し、時刻t1においてモジュールA2,1 V1.0 341を含みまたは参照する。
時刻t1は例えば、商品A110の設計チームが最初にモジュールA v1.0 311をデータベースに格納する時刻である。モジュールA v1.0 311は、商品A110の最初の設計を含む。これにはバージョン番号1.0が割り当てられる。設計チームは、この時刻においてまたはこの時刻前に、「アルファ」タグ380に対して動的階層参照351を定義し、モジュールA2 V1.0 331に対して固定階層参照353を定義する。
図3の例において、固定階層参照352が生成され、モジュールA1 V1.0 321を指す。これは以下に述べるように、「アルファ」タグ380が時刻t1において参照するモジュールである。したがって最初の時点において、階層参照351と352のグループ350は、異なるオブジェクトを指しているが、同じモジュールを参照する。動的階層参照が生成されるとき固定階層参照を自動的に定義することにより、設計チームは将来において、この固定階層参照を用いて、動的階層参照が後続モジュールバージョンを指している場合であっても、動的階層参照が最初に対応していたものを判定することができる。
同様にモジュールA2 V1.0 331の動的階層参照361は、設計チームがモジュールA2 V1.0 331をデータベースに格納またはコミットしたときまたはその前に、コンポーネントA2の設計チームによって生成される。本例においてコンポーネントA2の設計チームは、「ゴールデン」タグ390を指す動的階層参照361を定義する。ゴールデンタグ390は、最初の時点においてはモジュールA2,1 V1.0 341を指す。固定階層参照362は、動的階層参照361が最初に指すものと同じモジュール(モジュールA2,1 V1.0 341)を指すように自動的に定義される。最初の時点において、階層参照361と362のグループ360は、異なるオブジェクトを指しているが、同じモジュールを参照する。
図3に示す例において、コンポーネントに対応付けられたモジュールに関する階層参照は、そのモジュールがデータベースにコミットされた時点で生成される。モジュール内に格納された階層参照は、モジュールがコミットされた後の任意時点で追加し、削除し、変更することもできる。
図4は、商品A110(図2に示す)のモジュールを格納するデータベース(図4には示していない)の後時刻t2におけるスナップショット400である。時刻t1とt2の間において、コンポーネントA1120、A2130、A2,1140それぞれの設計チームは、新たなモジュールA1 V1.1 421、A2 V1.1 431、A2,1 V1.1 441を発信する。またコンポーネントA2,1140の設計チームは、「ゴールデン」タグ390をモジュールA2,1 V1.0 341からモジュールA2,1 V1.1 441へ移動する。
一般に階層参照は、動的である場合もあるし固定である場合もある。固定階層参照(例えば階層参照352、353、362)は、コンポーネントまたはサブコンポーネントの特定バージョンを含むモジュールを参照する。例えば固定階層参照352はモジュールA1 V1.0 321を参照し、これはコンポーネントA1120の設計のバージョン1.0を含む。一方で動的階層参照(例えば階層参照351と361)は、タグまたはモジュールブランチを参照する場合がある。これらは特定モジュールを参照する。タグとモジュールブランチは変更される場合があり、したがって動的階層参照が最終的に参照するモジュールは、変更され得る。タグはユーザが手動で変更して別のモジュールを参照するようにすることができる。例えばコンポーネントA2,1140の設計チームは、「ゴールデン」タグ390をモジュールA2,1 V1.0 341からモジュールA2,1 V1.1 441へ移動させる。モジュールブランチは、新たなモジュール(例えば新たなモジュールバージョン)を追加することにより変更できる。例えばコンポーネントA1120の設計チームが新モジュールA1 V1.1 421をデータベースへ登録すると、モジュールブランチ320は新モジュールA1 V1.1 421を含みまたは参照するように変更される(例えばモジュールブランチは最新バージョンを指すようになる)。
異なるタイプのタグを定義することもできる。例えば任意のコンポーネントの最新モジュールは、「アルファ」タグと対応付けることができる。これはコンポーネントの「開発中」バージョンを示す。図3に示す例において、ブランチ320を参照する「アルファ」タグ380を定義することにより、「アルファ」タグ380はモジュールブランチ320が参照しまたは含んでいる最新バージョンのモジュールを参照することになる。別実施形態において、動的階層参照351はモジュールブランチ320を直接指すことができ、同様の結果が得られる。他例(図示せず)において、コンポーネントのモジュールはタグ「ベータ」を付すことができ、これはコンポーネントの「テスト中」バージョンを示す。コンポーネントのモジュールはまた、「ゴールデン」タグを付すことができ、これはコンポーネントの最新「安定」バージョンを示す。図3に示す例において、コンポーネントA2,1140の設計チームは、コンポーネントA2,1140のバージョン1.0を「ゴールデン」バージョンとして最初に定義する。「アルファ」「ベータ」「ゴールデン」の各タグは変更され得る(例えば設計グループはタグを変更して別のモジュールバージョンを指すようにする)ので動的なものであり、したがって必ずしも常に同じモジュールを参照するわけではない。
図5は、コンポーネントのフィルタリングを有する例示商品A511の階層構造500である。商品A511(ここでは階層500の「先頭コンポーネント」または「ルート」コンポーネントとも呼ぶ)は、第1コンポーネントA1521と第2コンポーネントA2531を有する。商品A511は、商品A110(図1と図2に示す)または商品A v1.0 311(図3と図4に示す)と類似しており、コンポーネントA1521とA2531は商品A1120とA2130(図1と図2に示す)またはA1v1.0 321とA2 v1.0 331(図3と図4に示す)に類似している。第1コンポーネントA1521は、1つのサブコンポーネントB v1.1 522を含む。第2コンポーネントA2531は1つのサブコンポーネントA1532を含み、サブコンポーネントA1532はサブコンポーネントB v1.2 533を含む。商品A511は、2つの異なるコンポーネントA1、すなわちA1521とA1532を含む。一方は商品A511の直接の子であり、もう一方はA2531の子である。同様に商品A511は、2つのコンポーネントB、すなわちB v1.1 522とB v1.2 533を含む。これらコンポーネントBは、同じコンポーネントの異なるバージョン番号を参照する。
商品A511は、それぞれコンポーネントA1521とA2531に対して階層参照512と513を有する。同様にコンポーネントA1521はサブコンポーネントB v1.1 522に対して階層参照514を有し、コンポーネントA2531はサブコンポーネントA1532に対して階層参照515を有し、サブコンポーネントA1532はサブコンポーネントB v1.2 533に対して階層参照516を有する。階層構造500内の各コンポーネントはバージョン番号などのバージョン識別子を含むことができ、コンポーネントA511、A1521、A2531のバージョン番号は読み易さのため除外されていることを理解されたい。
本明細書において、「下位」「上位」「親」「子」という用語は、論理的にファミリーの関係にあるコンポーネント間の階層関係(例えばコンポーネントのツリー構造)を示す。例えばコンポーネントB v1.1 522は、上位コンポーネントA1521とA511の下位コンポーネントとして参照することができる。コンポーネントA1521は、コンポーネントB v1.1 522の親(すなわち最初に隣接する直近上位)であり、同様にコンポーネントB v1.1 522はコンポーネントA1521の子である。さらにコンポーネントA1521は、コンポーネントA511(すなわち親)の下位コンポーネント(この場合は子)である。このようにこれら用語は、コンポーネント間の論理関係を便宜上定義し説明するために用いることができる。
実施例において、階層構造500はフィルタ550を含む。フィルタ550は、1以上のコンポーネントを識別しフィルタリングするために用いられる。本明細書において、「フィルタコンポーネント」という用語は一般に、フィルタ550などのフィルタがフィルタリングのため識別するコンポーネントを指すために用いられる。「フィルタ」という用語は一般に、階層構造500などの階層からコンポーネント(すなわちフィルタコンポーネント)を除外、削除、その他抹消することを指す。図5に示す階層構造500は、変更されていない(すなわちフィルタリングされていない)コンポーネント階層である。換言すると階層構造500は、フィルタ550を適用する前の完全なコンポーネント設計である。フィルタ550を適用した後、1以上のコンポーネントは削除され、あるいは階層構造500に組み込まれない。
本明細書におけるフィルタ550とコンポーネントのフィルタリングは、1以上の側面から定義し説明される。範囲の観点において、フィルタ550はフィルタ550が適用される範囲または影響階層を規定する。識別対象の観点において、フィルタ550は、フィルタリングするコンポーネントを識別するための1以上の識別条件を規定する。動作中において、フィルタ550のこれら側面のうち1以上により、階層500からフィルタリングするコンポーネントを識別することができる。これら側面の詳細については以下に説明する。
フィルタ550の範囲機能は、フィルタリングを検討するコンポーネントのセットまたはサブセットを識別する。実施例において、フィルタ550は階層関係に基づき動作し、具体的には階層内のアプリケーションレベルに基づく傘として動作する。フィルタ550は、先頭コンポーネントA511へ取り付けられる(540)。これによりフィルタ550の範囲は階層500のツリー構造全体となる。他実施形態において、フィルタ550は例えばA1532などのその他コンポーネントに取り付けることもできる。これによりフィルタの範囲はA1532のサブツリー(すなわちA1532およびそれ以下の構造)のみとなる。フィルタ550などのフィルタが取り付けられた実施形態において、フィルタはこれが適用される最上位レベルを規定するので、取り付けられた箇所およびそれ以下のサブコンポーネントのみがフィルタリング候補となる。他実施形態において、フィルタ550を取り付けないこともできる。取り付けられていないフィルタは、階層500全体に対して適用可能と解釈される。換言すると未取付フィルタは、ルートノードに取り付けて(540)最も広い範囲となるフィルタ550と同様である。本明細書において、「範囲条件」という用語は、フィルタリング範囲またはフィルタが適用されるコンポーネントセットを限定する1以上の条件を指すために用いられる。実施例において、フィルタ550を取り付ける(540)ことは、範囲条件である。
フィルタ550の識別機能は、階層500からフィルタリングし、除外し、または削除するコンポーネントを識別する。本明細書において、「識別条件」という用語は、フィルタリングするコンポーネントを識別する1以上の条件を指すために用いられる。実施例において、フィルタリングするコンポーネントの識別は、上述の範囲条件が規定する範囲によって限定される。他実施形態において、識別条件は範囲条件なしで機能し、単独またはフィルタリングするコンポーネントを識別するその他条件と併せて機能する。
フィルタリングするコンポーネントおよび/またはサブコンポーネントは、階層500の構造に基づき複数の方法で識別することができる。実施形態において、フィルタコンポーネントは階層500内の「絶対階層名」により識別される(すなわち、ルートノードまたはフィルタが取り付けられたノードに対する特定の相対パスまたは位置)。他実施形態において、フィルタコンポーネントはサブコンポーネント構造(「相対階層名」とも呼ぶ)を用いて識別される。他実施形態において、フィルタコンポーネントはその他識別条件を用いて識別される。各フィルタ条件の詳細を以下に説明する。
階層500内の各コンポーネントは、階層内のコンポーネントの位置に基づき一意に識別することができる。本明細書において、「パス」「階層名」という用語は一般に、コンポーネントの階層内におけるルートノード(またはフィルタが取り付けられたノード)から当該コンポーネントへ至る場所定義、または当該コンポーネントからルートノード(またはフィルタが取り付けられたノード)へ至る場所定義を指す。
実施例において、「絶対階層名」フィルタリング条件は、階層500内の特定パスに基づきフィルタコンポーネントを識別するために用いられる。具体的には、「絶対階層名」は例えば先頭コンポーネントA511(実施例においては階層500のルートノードでありフィルタ550が取り付けられたノードでもある)などのルートノード(またはフィルタが取り付けられたノード)からのパスを規定する。例えばB v1.1 522などのコンポーネントは、絶対階層名{A,A1,B}を有するものとして識別することができる。この例は、フィルタコンポーネントがコンポーネントB(リスト内の最後のコンポーネント)であることを示す。コンポーネントBの親はA1であり、A1はルートノードAに取り付けられている。換言すると、ルートノードAからコンポーネントA1へ降り、次に子ノードB(この場合はノードB v1.1 522)を特定することにより、フィルタコンポーネントを識別できる。このようにフィルタ550は、絶対階層名{A,A1,B}を含む識別条件を有することができる。これによりB v1.1 522をフィルタコンポーネントとして識別することができる。
実施形態において、識別条件は先頭コンポーネント(本例においてはA)を含むことができ、あるいは、先頭コンポーネントを除外して最初のノードを先・BR>ェコンポーネントAと推定する(例えばフィルタが取り付けられないシナリオにおいて)か、もしくは最初のノードにフィルタが取り付けられていると推定する(例えばフィルタが取り付けられるシナリオにおいて)ことができる。換言すると、上記例において、コンポーネントB v1.1 522に対する絶対階層名は、絶対階層名{A1,B}によって表すことができる。
フィルタが取り付けられたノード(ルートノードに代えて)からの絶対階層名を表す別例において、推測フィルタ550をコンポーネントA2531へ取り付ける。このように、最初のノードに取り付けられていると推測する表記および実施形態を用いて、フィルタ取付ノードA2531からの絶対階層名{A1,B}などにより、ノードB v1.2 533を識別することができる。したがって、A2531へ取り付けられ識別条件{A1,B}を有するフィルタは、階層からノードB v1.2 533をフィルタリングするように動作する。
説明した表記は、階層内におけるノード間の階層関係(すなわち相対パス)を表記する1つの方法例に過ぎないことを理解されたい。階層内におけるコンポーネントのパス構造を示唆および識別し、本明細書のシステムと方法を実現する、任意の手段を用いることができる。このように階層内の各ノードは、ルートノードに対するまたはフィルタ取付ノードに対する絶対階層名に基づき識別することができる。
実施例において、「相対階層名」フィルタリング条件は、フィルタコンポーネントから上方へ向かうパスによって規定されるサブコンポーネント構造に基づきフィルタコンポーネントを識別するために用いられる。具体的には、「相対階層名」は階層内におけるフィルタコンポーネントに対する相対的なパスを規定する関係パスである。例えば推測フィルタ550は、{A1,B}などの相対階層名タイプ識別条件を有する。相対階層名タイプ識別条件は、フィルタコンポーネントを識別するため合致しなければならないサブ構造を規定するように記述することができる。相対階層名条件は、やはりトップダウン方式で整列されているが(例えばA1はBの親)、そのなかで規定されるノード関係に基づきマッチングされる。換言すると、識別条件{A1,B}の例において、その親がA1である場合、特定のコンポーネントBが合致する(すなわち、フィルタコンポーネントとして識別される)。階層500において、識別条件{A1,B}に合致する2つのサブ構造が存在する。コンポーネントB v1.1 522とコンポーネントB v1.2 533である(いずれもコンポーネントBであり、いずれもA1が親なので)。
このように相対階層名タイプ識別条件は、整列済リストとして記述することができる。最後の要素としてフィルタコンポーネントを含み、さらにオプションとして、フィルタコンポーネントの1以上の上位コンポーネントを含む。実施例において、リスト内でスキップされる上位コンポーネントは存在しない(すなわち、必ずしも全上位コンポーネントではないものの、リストにおいて上位コンポーネントのチェーンは途切れていない)。実施形態において、相対階層名リストのリストエントリは、「ワイルドカード」(すなわち※や?など)をコンポーネントマッチングの一部として含む。例えば上記リスト例は、{※,A1,B}として表記することができる。これはA1の任意の上位コンポーネントが合致することを示す。さらにリストエントリは、1以上のコンポーネントセットを含むことができる。例えばリスト{(A1,A2),B}は、A1またはA2を含む最初のリスト要素を識別する。このようにコンポーネントBは、親がコンポーネントA1またはコンポーネントA2のいずれかである場合、識別条件に合致する。
極端な場合、実施例において、フィルタコンポーネントからルートノードに至るまでの全ての上位コンポーネントを含む階層名タイプ識別条件は、フィルタコンポーネントの絶対階層名と等価であり、これにより特定ノードのみを識別する。別の極端な場合、リストはフィルタコンポーネント自身のみを含み上位コンポーネントを含まず、これにより所与のフィルタコンポーネントに合致する全ノードを識別する。このように相対階層名タイプ識別条件は、複数のフィルタコンポーネントを識別することができる。
さらに実施例において、フィルタ550は相対階層名タイプ識別条件とともに範囲条件を含むことができる。図5は取り付けられたフィルタ(すなわち、フィルタ550はフィルタ取付コンポーネントA511に取り付けられている)を示し、相対階層名タイプ識別条件{A1,B}は上述のようにコンポーネントB v1.1 522とB v1.2 533の双方に合致する。これに代えて、同じ識別条件であるがフィルタがノードA2531に取り付けられている場合を考える。換言すると、フィルタの範囲はA2531以下のサブ階層に限定される(すなわち、A2531がサブ構造のルートノードである)。このようにコンポーネントB v1.2 533のみがフィルタコンポーネントとして識別される。
実施形態において、識別条件はその他のコンポーネント識別情報を含むことができる。これを用いて、コンポーネントを他のコンポーネントから区別することができる。例えばコンポーネント識別子(例えばURL)、バージョン識別子(例えばバージョン番号)、階層名、および/またはhrefである。さらに識別条件は、従来からある論理演算子(AND、OR、NOT、など)を用いて互いに組み合わせ、結合効果を得ることができる。例えば相対階層名リストANDコンポーネントバージョンのマッチングである。
また、フィルタ550などの複数のフィルタを階層500内に提供することができる。各フィルタは異なる範囲および/または異なる識別条件を持つ。
動作中、実施例において、階層管理システム(HMS)720(図7に示す)などのコンピュータシステムまたはコンピュータデバイス810(図8に示す)は、商品A511の階層表記500などのような製品および/またはコンポーネントの階層表記を、コンピュータ補助ドラフトシステム内に読み取り構築する。HMS720は、コンポーネントモジュールをシステムのワーキングメモリ内のデータ構造へ読み出す。さらにユーザは、1以上のフィルタ550とともに範囲条件および/または識別条件(ここではフィルタ定義とも呼ぶ)を定義する。実施例において、階層500をシステムメモリへ読み出す前に、ユーザはフィルタ定義を提供する。他実施形態において、ユーザはフィルタ定義をHMS720に対して提供し、HMS720はフィルタ550を既に読み出した階層500に対して適用する。
実施例において、ユーザはフィルタ550とともに、範囲条件を定義し(すなわちルートノードA511に取り付けられたもの)、さらに相対階層名タイプ識別条件{A2,A1,B}(すなわち、A1が親でありA2がさらにその親である任意のコンポーネントBをフィルタリングする)を定義する。階層500は、幅優先でルートノードから開始して埋めることができる。サブコンポーネントを読み出す前に、HMS720は既存のフィルタ550を評価し、サブコンポーネントがフィルタコンポーネントに合致するか否かを判定する。HMS720は、ルートノードとしてコンポーネントA511を読み出す。既知のシステムにおいて、サブコンポーネントA1521は即座に処理される(すなわち、子コンポーネント521のデータ構造は、親コンポーネントA511の階層参照に基づき、階層に対して即座に読み出される)。ただし実施例において、各サブコンポーネントを読み出す前に、HMS720はサブコンポーネントをフィルタ(例えば550)と比較することにより、サブコンポーネント(例えば最初の子A1521)をフィルタリング候補として検査する。A1521はフィルタ550に合致しない(すなわち、リスト内の最終コンポーネントであるコンポーネントBではない)。このようにHMS720は、A1521を読み出してA1521の子へ降りて検査する。A1521の唯一の子はB v1.1 522であり、HMS720はこれをフィルタ550と比較する。B v1.1 522はノードBであり、したがってリストの最終要素に合致する。さらにB v1.1 522の親はA1521であり、リスト内の2番目の要素に合致する。しかしB v1.1 522の親の親(すなわちA1521の親)はA511であり、リスト内の最初のコンポーネント(すなわちA2)に合致しない。このようにコンポーネントB v1.1 522はフィルタ550に合致せず、したがってHMS720はコンポーネントB v1.1 522を読み出し、A522の次の子に対する処理を継続する。
実施例において、HMS720はA511の2番目の子であるコンポーネントA2531を検査する。この子はコンポーネントBではないので、フィルタコンポーネントに合致しない。したがってHMS720は、コンポーネントA2531を読み出し、唯一の子A1532を検査する。A1532もコンポーネントBではないので、HMS720はA1532を読み出し、唯一の子B v1.2 533を検査する。この子はコンポーネントBであり、したがってフィルタ550のリストの最終要素に合致する。さらにその親はコンポーネントA1であり、さらにその親はコンポーネントA2である。したがってHMS720は、コンポーネントB v1.2 533がフィルタコンポーネントであると認識し、階層500へ読み出さない。
図5の上記例は、新たな構造を読み出す間に実施するものとして説明した(すなわちメモリ内にコンポーネント階層を最初に構築する間)。しかし、フィルタリング階層コンポーネントのその他実装も可能であり本明細書の範囲内であることを理解されたい。例えばコンポーネントフィルタリングは、既に構築された構造(例えばワーキングメモリへ既に読み出された階層)において実施し、これによりフィルタに合致するコンポーネントを削除することができる。さらに他実施形態において、HMS720は幅優先サーチを実施し、または本明細書のシステムおよび方法を実現するその他横断的手法を実施することができる。
図6は、フィルタリング参照を識別し統合する階層読出プロセス600の例を示すフローチャートである。実施例においてプロセス600は、HMS720(図7に示す)やコンピュータデバイス810(図8に示す)などのようなコンピュータシステムを用いて実施される。設計チームは、モジュールバージョン(例えばコンポーネント階層)に対するリクエストを入力する。例えば商品A511(図5に示す)に対するリクエストである。HMS720は、ステップ602において図5に示す階層500の商品A511に対応付けられた階層構造を読み出す。トップレベルモジュールおよび以下参照される各モジュールは、1以上のサブコンポーネントに対する参照を含む場合がある。各サブコンポーネントは、関連モジュールを有する場合がある。関連モジュールはさらに1以上のサブコンポーネントに対する参照を含む場合がある。以下同様である。
実施形態において、HMS720はステップ603で最初にグローバルフィルタ(すなわち、階層500の全範囲に対して適用するフィルタ)を読み出す。実施例において、HMS720はモジュール読出プロセスを開始し、ステップ604において商品A511のモジュールを取得して階層500に対して組み込む。これは要素511によって表される(すなわち、トップレベル商品のデータ構造がメモリ内で生成され、トップモジュールからインポートされたデータを含む)。トップモジュール読出プロセスの一部としてHMS720は、トップモジュールに取り付けられたフィルタを読み出す。本例においてHMS720は、トップモジュールA511に取り付けられた(540)フィルタ550を読み出す。このようにフィルタ550は、階層500全体をカバーする範囲を有し、親がA1である任意のコンポーネントBに合致する(すなわち、図6の例に示した{A1,B}として表記される)。
ステップ610において、HMS720は現在処理中のモジュール(この段階においては商品A511に対応付けられたトップモジュール)が未処理のサブコンポーネント(すなわち、階層500へインポートされていない)を有するか否かを検査する。図5に示すように、トップモジュールはコンポーネントA1521とA2531を参照する。1以上の未レビューサブコンポーネントが残っている場合、HMS720はステップ620において未レビューサブコンポーネントを選択してインポートする。したがってHMS720はステップ620において最初の未レビューサブコンポーネントA1521を選択する。
サブコンポーネントA1521を完全にインポートする前に、HMS720はフィルタリングするサブコンポーネントを解析する(すなわち、現在のサブコンポーネントを階層500から除外または除去すべきか否かを判定する)。HMS720はステップ630において、サブコンポーネントを合致するフィルタと比較する。ステップ640において、現在のサブコンポーネントが1以上のフィルタと合致する場合、そのサブコンポーネントはステップ642において階層500から除外(または除去)される。ステップ640において、現在のサブコンポーネントが1以上のフィルタと合致しない場合、HMS720はステップ644において解析中のサブコンポーネントに対応付けられたモジュールを取得/読み出し、そのモジュールを階層500へインポートする。本例において、サブコンポーネントA1521はフィルタ550に合致せず、したがってHMS720はステップ644においてこのサブコンポーネントを読み出す(すなわち、コンポーネントA1521をA511の子として追加する)。
実施例において、サブコンポーネントモジュールを取得するステップ644の一部として、このサブコンポーネントはレビューしているモジュールとなる。HMS720は、処理をループしてステップ610においてコンポーネントA1 v1.0 521のサブコンポーネントを検討する。本例において、コンポーネントA1 v1.0 521は1つのサブコンポーネントB v1.1 522を有する。HMS720はステップ620において、未レビューサブコンポーネントB v1.1 522を選択し、ステップ630においてこのサブコンポーネントをフィルタ550(すなわち唯一のアクティブフィルタ)と比較する。この段階において、階層500は2つのノード(すなわち2つのコンポーネント)A1521(B v1.1 522の親)とA511(B v1.1 522の親の親)が読み込まれている。HMS720は、サブコンポーネントB v1.1 522がフィルタ550に合致すると判定する。コンポーネントBでありかつその親がコンポーネントA1だからである。このようにHMS720は、ステップ642においてコンポーネントB v1.1 522を階層500から除外(または削除)し、ステップ610へ戻る。換言すると、A511、A1521、B v1.1 522を含むブランチとともに先頭コンポーネントに取り付けられたフィルタ550を考慮した後、HMSはコンポーネントA511とA1521のみを読み出し、フィルタ550に基づきコンポーネントB v1.1 522を階層500から除外(または削除)したことになる。
実施例に戻って、サブコンポーネントB v1.1 522は除外され、これより深い子コンポーネントは検査されない。このようにステップ610において、コンポーネントA1521は未レビューのサブコンポーネントを有さない状態となる。HMS720はステップ650において現在のモジュールを完了する。HMS720は次にステップ660において、トップモジュールが完了したか否かを検査する。完了していない場合、HMS720はステップ670において、現在の(すなわち今完了した)コンポーネントの親へ戻ってさらに解析を実施する。換言すると、あるコンポーネントのサブコンポーネントのレビューが完了すると、HMS720はステップ670においてそのコンポーネントの親へ上り、その親のその他サブコンポーネントを処理する。ステップ660においてトップモジュールを完了すると(すなわち、トップモジュールの全サブコンポーネントをレビューし終えると)、HMS720はステップ680において終了する。
同様にHMS720は、先頭コンポーネントA511の次の未レビューサブコンポーネントを検査する。図5に示すように、これはコンポーネントA2531のラインを含み、A2531はサブコンポーネントA1532の親となっており、さらに子コンポーネントB v1.2 533が含まれる。ステップ610に示すように、プロセス600のループを用いて、HMS720は子B v1.2 533を除外する。これはコンポーネントBであり、その親はA1だからである(すなわちフィルタ550に合致する)。このように、このブランチにおいてコンポーネントA2531とA1532のみが階層500へ読み込まれる。
実施例において、HMS720は階層構造500の検査と構築に対して深さ優先のアプローチを実施する(すなわち、各新規コンポーネントを調査する際において、HMS720はその他サブコンポーネントをレビューする前に、最初のサブコンポーネントをステップダウンして完全検査する)。ただし、本明細書におけるシステムと方法を実施することを可能にする、階層構造500の横断と構築のその他アプローチも用い得ることを理解されたい。例えば幅優先アプローチが考えられる(すなわち、サブコンポーネントに対してステップダウンする前に、あるレベルにおける全コンポーネントをレビューする)。さらにフィルタ550は、範囲条件のみ(すなわち、論理取付点に基づく先頭コンポーネントA511以下)を記述し、フィルタコンポーネントとその親のコンポーネントタイプのみを含む識別条件を記述することもできる。ただしその他範囲条件や識別条件も可能であり本発明の範囲内であることを理解されたい。
図7は、階層管理システム720の例を示すブロック図700である。階層管理システム720は、階層構造500(図5に示す)のようなコンポーネント設計階層内におけるフィルタリング参照を実装するために用いられる。これに代えて、本明細書の階層管理システム720の動作を実現できる任意のコンピュータアーキテクチャを用いることもできる。実施例において階層管理システム720は、メモリデバイス750内でデータ構造のコンポーネント設計階層を構築し、図6のプロセス600で説明したようなフィルタリング参照とコンポーネント除外または削除を実現する。
実施例において階層管理システム720は、メモリデバイス750とプロセッサ752を備える。プロセッサ752は、命令を実行するため動作するようにメモリデバイス750と連結されている。実施形態において、実行可能命令がメモリデバイス750内に格納される。階層管理システム720は、プロセッサ752をプログラムすることにより、本明細書が説明する1以上の動作を実施するように構成することができる。例えばプロセッサ752は、1以上の実行可能命令として動作をコード化し、その実行可能命令をメモリデバイス750に対して提供することにより、プログラムすることができる。プロセッサ752は、1以上のプロセスユニットを備えることができる。例えばマルチコア構成が考えられるが、これに限らない。
実施例においてメモリデバイス750は、実行可能命令および/またはその他データなどの情報を格納し取得することができる1以上のデバイスである。メモリデバイス750は、1以上のコンピュータ読取可能媒体を含む。例えば、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、ソリッドステートディスク、ハードディスク、読取専用メモリ(ROM)、erasable programmable ROM (EPROM)、electrically erasable programmable ROM(EEPROM)、および/または不揮発性RAM(NVRAM)が挙げられるが、これらに限らない。これらメモリタイプは例示に過ぎず、コンピュータプログラムを格納するため用いることができるメモリタイプを限定するものではない。
実施例においてメモリデバイス750は、データ構造、ファイル、その他メモリ領域における様々なコンポーネントやサブコンポーネントに対応付けられた様々なコンポーネントやモジュールデータを格納するように構成することができる。さらにメモリデバイス750は、階層構造500のようなコンポーネント関係データ、フィルタデータ、および階層データ、または図1〜図5に示すようなその他コンポーネント関係データを格納することができる。さらにメモリデバイス750は、図5に示すようなフィルタリング参照データを格納することができる。
実施形態において階層管理システム720は、プロセッサ752に連結された提示インターフェース754を備える。提示インターフェース754は、例えばユーザインターフェースおよび/または警告などの情報を、ユーザ756に対して提示する。例えば提示インターフェース754は、ディスプレイデバイス(図示せず)に連結可能なディスプレイアダプタ(図示せず)備えることができる。ディスプレイデバイスは例えば、ブラウン管(CRT)、液晶ディスプレイ(LCD)、有機LED(OLED)ディスプレイ、および/またはディスプレイを有するハンドヘルドデバイスである。実施形態において提示インターフェース754は、1以上のディスプレイデバイスを備える。これに加えてまたはこれに代えて、提示インターフェース754は、例えばオーディオアダプタおよび/またはスピーカなどの音声出力デバイス(図示せず)を備えることができる。
実施形態において階層管理システム720は、ユーザ入力インターフェース758を備える。実施例においてユーザ入力インターフェース758は、プロセッサ752に連結され、ユーザ756から入力を受け取る。ユーザ入力インターフェース758は例えば、キーボード、ポインティングデバイス、マウス、スタイラス、および/またはタッチパッドやタッチスクリーンなどのタッチ検出パネルを含む。例えばタッチスクリーンなどの単一部材が、提示インターフェース754のディスプレイデバイスおよびユーザ入力インターフェース858として機能する場合もある。
実施例において、通信インターフェース760はプロセッサ752に連結され、例えば他コンピュータシステムや階層管理システム720にアクセスできるその他デバイスなどのような1以上の他デバイスと通信するように構成されている。このデバイスとしては例えば、ラップトップコンピュータ、携帯情報端末(PDA)、スマートフォンなどが挙げられるが、これに限らない。通信インターフェース760は、有線ネットワークアダプタ、無線ネットワークアダプタ、モバイル通信アダプタ、シリアル通信アダプタ、および/またはパラレル通信アダプタを含むが、これに限らない。通信インターフェース760は、1以上のリモートデバイスからデータを受信し、および/または1以上のリモートデバイスに対してデータを送信することができる。階層管理システム720は、リモート通信のためにwebを用いることができる。例えばリモートデスクトップコンピュータ(図示せず)が挙げられる。
実施例において、提示インターフェース754および/または通信インターフェース760は、本明細書が説明する方法とともに用いるのに適した情報を、例えばユーザ756や他デバイスに対して提供することができる。したがって提示インターフェース754および/または通信インターフェース760は、出力デバイスとみなすことができる。同様にユーザ入力インターフェース758および/または通信インターフェース760は、本明細書が説明する方法とともに用いるのに適した情報を受け取ることができ、入力デバイスとみなすことができる。
さらにプロセッサ752および/またはメモリデバイス750は、ストレージデバイス762と連結することができる。ストレージデバイス762は、データを格納しおよび/または受け取るのに適した、任意のコンピュータ動作可能なハードウェアである。ここでいうデータは、例えばデータベース164に関連するデータが挙げられるが、これに限らない。実施例においてストレージデバイス762は、階層管理システム720に統合されている。例えば階層管理システム720は、ストレージデバイス762として1以上のハードディスクドライブを備えることができる。さらに例えばストレージデバイス762は、複数のストレージユニットを備えることができる。例えばredundant array of inexpensive disks(RAID)構成における複数のハードディスクおよび/またはソリッドステートディスクである。ストレージデバイス762は、storage area network (SAN)、network attached storage (NAS)、および/またはクラウドベースストレージを含む。これに代えて、ストレージデバイス762を階層管理システム720の外部に設け、ストレージインターフェース(図示せず)を介してアクセスすることもできる。
さらに実施例においてデータベース764は、コンポーネント、モジュール、フィルタ、階層に対応付けられた様々な静的または動的動作データ、および階層構造を含む。
本明細書が説明する実施形態、および明示はしていないが本明細書の範囲内に含まれる実施形態は、フィルタリング参照を含むコンポーネント階層を管理する手段を構成する。例えば階層管理システム720、およびこれに追加または含まれる同様のコンピュータデバイスは、プロセッサに本明細書が説明するプロセスと技術を実行させるコンピュータ実行可能命令によってプログラムされた十分なコンピュータ読取可能記憶媒体を備える。具体的には、階層管理システム720およびこれに追加または含まれるその他同様のコンピュータデバイスは、コンポーネントフィルタを含むコンポーネント階層を管理する手段を構成する。
図8は、データベース820とコンピュータデバイス810の構成例800を示す。フィルタリング参照を含むコンポーネント階層を管理するため用いることができる、その他関連するコンピュータコンポーネントを併せて示している。実施形態において、コンピュータデバイス810は階層管理システム720(図7に示す)と同様のものである。データベース820は、コンピュータデバイス810内の複数の個別コンポーネントに連結されている。コンピュータデバイス810は、特定タスクを実施する。
実施例においてデータベース820は、コンポーネント&モジュールデータ822、階層データ824、フィルタデータ826を含む。実施形態においてデータベース820は、データベース764(図7に示す)と同様のものである。コンポーネント&モジュールデータ822は、図1〜図6で説明したデザインコンポーネントやモジュールに関連する情報を含む。階層データ824は、階層構造500(図5に示す)に示すような階層コンポーネントデータやコンポーネント間の関係を定義するデータを含む。フィルタ参照データ826は、例えばフィルタリング参照540(図5に示す)とフィルタ550(図5に示す)のようなコンポーネントフィルタリングに関連するデータを含む。
コンピュータデバイス810は、データベース820とともにデータストレージデバイス830を備える。コンピュータデバイス810は、階層管理コンポーネント840を備える。階層管理コンポーネント840は、モジュールをインポートし、階層構造500などの階層構造を構築管理する。コンピュータデバイス810は、階層のコンポーネントに対応付けられたモジュールを処理するモジュール読出コンポーネント850を備える。フィルタコンポーネント860は、プロセス700(図7に示す)で説明したようなフィルタプロセスを処理する。プロセスコンポーネント870は、トークン化システムに関連するコンピュータ実行可能命令の実行を補助する。
図9は、階層500(図5に示す)のような論理コンポーネント階層からコンポーネントをフィルタリングする方法例900である。実施例において、方法900は階層管理システム720(図7に示す)やコンピュータデバイス810(図8に示す)などのコンピュータシステムによって実施される。実施例において、方法900は、論理コンポーネント階層に対応付けられたフィルタをメモリ内で識別するステップ910を有する。実施形態において、フィルタを識別するステップ910はさらに、フィルタを適用する論理コンポーネント階層内のコンポーネントセットを規定する範囲条件を有するフィルタを識別するステップを有する。実施形態において、フィルタを識別するステップ910はさらに、フィルタを識別するステップであって、範囲条件が論理コンポーネント階層内の取付ノードを識別するステップを有する。実施形態において、フィルタを識別するステップ910はさらに、フィルタを識別するステップであって、コンポーネントセットが論理コンポーネント階層内の取付ノード以下のノードを含むように定義されるステップを有する。
実施例において、方法900は、プロセッサにより論理コンポーネント階層内のサブコンポーネントをフィルタと比較するステップ920を有する。実施形態において、フィルタを識別するステップ910はさらに、1以上のコンポーネント特性を定義する識別条件を含むフィルタを識別するステップを有する。またサブコンポーネントを比較するステップ920はさらに、識別条件をサブコンポーネントの特性と比較するステップを有する。実施形態において、識別条件を比較するステップはさらに、コンポーネント名、コンポーネント識別子、コンポーネントタイプ、コンポーネントバージョン識別子のうち1以上をサブコンポーネントの特性と比較するステップを有する。実施形態において、識別条件を比較するステップはさらに、少なくとも部分的に階層内のサブコンポーネントの相対階層名に基づき、フィルタコンポーネントを識別するステップを有する。
実施例において、方法900は、サブコンポーネントをフィルタと比較した結果に基づきフィルタリングするサブコンポーネントを識別するステップ930を有する。方法900は、論理コンポーネント階層からサブコンポーネントをフィルタリングするステップを有する。
以上の説明から分かるように、本明細書の上記実施形態は、コンピュータプログラミングまたはエンジニアリング技術を用いて実装することができる。これは、コンピュータソフトウェア、ファームウェア、ハードウェア、これらの組み合わせまたはサブセットを含む。その結果、コンポーネント階層を管理し、フィルタリングと階層から参照をフィルタリングすることを実装するシステムが得られる。結果として得られるこのようなプログラムは、コンピュータ読取可能コードを有し、1以上のコンピュータ読取可能媒体内に実装または提供することができる。これにより、本明細書の実施形態に基づくコンピュータプログラム製品(すなわち製造製品)を製作することができる。コンピュータ読取可能媒体は例えば、固定(ハード)ドライブ、ディスケット、光学ディスク、磁気テープ、読取専用メモリ(ROM)などの半導体メモリ、および/またはインターネットその他通信ネットワークやリンクなどの送受信媒体などがあるが、これに限られない。コンピュータコードを格納した製造製品は、媒体からコードを直接実行し、媒体から他の媒体へコードをコピーし、あるいはネットワーク上でコードを送信することにより、作成しおよび/または用いることができる。
これらコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、”app”、またはコードとしても知られている)は、プログラマブルプロセッサの機械命令を含み、高レベル手続型および/またはオブジェクト指向プログラム言語および/またはアセンブリ/機械言語によって実装することができる。本明細書において、「機械読取可能媒体」「コンピュータ読取可能媒体」という用語は、機械命令および/またはデータをプログラム可能プロセッサに対して提供するために用いる任意のコンピュータプログラム製品、装置、および/またはデバイス(例えば磁気ディスク、光学ディスク、メモリ、プログラム可能論理デバイス(PLD))を指す。これは、機械命令を機械読取可能信号として受け取る機械読取可能媒体を含む。ただし「機械読取可能媒体」「コンピュータ読取可能媒体」は、一時的信号を含まない。「機械読取可能信号」という用語は、機械命令および/またはデータをプログラム可能プロセッサに対して提供するために用いる任意の信号を指す。
本方法およびシステムは、コンポーネント階層内で定義されたフィルタリング参照を用いてサブコンポーネントを除外する。例えばサブコンポーネントは、1以上の範囲条件と識別条件に基づき上位コンポーネント内の除外すべきコンポーネントを記述するフィルタ参照を定義することにより、階層を読み出す間に除外することができる。階層構築の間に本明細書のシステムおよび方法は、フィルタ参照に合致するサブコンポーネントを除外する。このようにコンポーネントは、コンポーネント階層からフィルタリングされあるいは除外される。
本システムが解決する技術的課題の少なくとも1つは以下を含む:(i)階層内に複数回現れる冗長階層コンポーネント;(ii)階層内にコンポーネントの異なるバージョンが存在することにより生じる競合。本明細書のシステムおよび方法が解決するその他技術的課題は、階層内に現れる不必要なコンポーネントによるコンピュータ処理の増加、すなわちコンピュータを低速にすることである。
本明細書が説明するシステムおよび方法は、コンピュータプログラミングまたはエンジニアリング技術を用いて実装することができる。これは、コンピュータソフトウェア、ファームウェア、ハードウェア、これらの組み合わせまたはサブセットを含む。技術的効果は、以下のステップの少なくとも1つを実施することにより実現できる:(a)前記論理コンポーネント階層に対応付けられたフィルタを前記メモリ内で識別するステップ;(b)前記プロセッサにより前記論理コンポーネント階層のサブコンポーネントを前記フィルタと比較するステップ;(c)前記サブコンポーネントと前記フィルタの比較に基づきフィルタリングする前記サブコンポーネントを識別するステップ;(d)前記論理コンポーネント階層から前記サブコンポーネントをフィルタリングするステップ;(e)前記フィルタを適用する前記論理コンポーネント階層内のコンポーネントセットを定義する範囲条件を含む前記フィルタを識別するステップ;(f)前記フィルタを識別するステップであって、前記範囲条件は前記論理コンポーネント階層内の取付ノードを識別することを含む、ステップ;(g)前記フィルタを識別するステップであって、前記コンポーネントセットは前記論理コンポーネント階層内の前記取付ノード以下のノードを含むように定義される、ステップ;(h)1以上のコンポーネント特性を定義する識別条件を含む前記フィルタを識別するステップ;(i)前記識別条件を前記サブコンポーネントの特性と比較するステップ;(j)コンポーネント名、コンポーネント識別子、コンポーネントタイプ、コンポーネントバージョン識別子のうち1以上を前記サブコンポーネントの特性と比較するステップ;(k)前記階層内における前記サブコンポーネントの相対階層名に少なくとも部分的に基づきフィルタコンポーネントを識別するステップ。
本システムによって実現される技術的効果は、コンポーネント階層を維持するためのコンピュータ要件を減少させることの少なくとも1つである。これは例えば、セグメント再利用および/またはコンポーネントフィルタリングを拡張することによりなされる。したがってシステムにより、フィルタリングされたコンポーネント階層を実現できる。これにより、メモリ内の階層を構築および維持するために必要なコンピュータリソースを減少させ、コンピュータ負荷を減じることができる。
本明細書は、最良の実施形態を含む実施例を用いて説明し、当業者が本開示を実施できるようにしている。これは、デバイスまたはシステムを作成し、用い、組み込んだ方法を実施することを含む。本明細書の請求範囲は特許請求範囲によって定義され、当業者が想到可能なその他実施例を含むことができる。特許請求範囲の文言から逸脱せず、特許請求範囲の文言と実質的な差異がない等価構造要素を含むのであれば、そのような他実施例は特許請求範囲に含まれることが意図されている。