(57)【要約】一般的に、企業内のソフトウェア資産の再利用を容易にする技術が説明される。本明細書で使用される「ソフトウェア資産」は、後続の開発環境においてソフトウェア資産を繰り返し使用するために作成されすなわち獲得された１つまたは複数の関連した人工物のセットを意味する。例えば、人工物を記憶するためのリポジトリ（４Ａ）と、その人工物に基づいてソフトウェア資産を生成するための資産ソース（１２Ａ）とを含むシステムが説明される。このシステムは、さらに、資産ソース（１２Ａ）からソフトウェア資産を受け取るための、および、資産ライブラリ（３６）内にそのソフトウェア資産を記憶するための資産管理システム（６）を含む。このシステムは、さらに、１つまたは複数の要素を有するモデル（３７）と、その要素の１つまたは複数を識別するユーザからの入力に基づいて資産ライブラリ（３６）からソフトウェア資産のサブセットを選択的に検索するための資産検索モジュール（４２）とを含んでもよい。
2004535021.tif 000002
【特許請求の範囲】
【請求項１】
データタイプとリソース関数とをドメインモデルに対してマッピングする収集モジュールと、
前記マッピングを表すデータを記憶するデータベースと、
を備えるシステム。
【請求項２】
前記ドメインモデルは、
プロセスとユースケースとを含むプロセスモデルと、
参照コンポーネントと参照インタフェースと参照関数とを含む構造モデルと、
を含む、請求項１に記載のシステム。
【請求項３】
前記プロセスモデルの一部分は前記構造モデルの参照コンポーネント、参照インタフェース、または、参照関数にリンクさせられている、請求項２に記載のシステム。
【請求項４】
前記ドメインモデルは複数のプロセスモデルを含み、前記プロセスモデル各々の一部分が前記構造モデルの参照コンポーネント、参照インタフェース、または、参照関数にリンクさせられている、請求項２に記載のシステム。
【請求項５】
前記収集モジュールは、前記ユーザがデータタイプを前記構造モデルに対してマッピングすることを可能にする、請求項２に記載のシステム。
【請求項６】
前記収集モジュールは、前記ユーザが関数を前記構造モデルに対してマッピングすることを可能にする、請求項２に記載のシステム。
【請求項７】
前記収集モジュールは、マッピング候補を提案するためにシノニムを使用する、請求項１に記載のシステム。
【請求項８】
前記データベースから前記モデルの要素を選択的に検索するための探索エンジンをさらに備える、請求項１に記載のシステム。
【請求項９】
関数とデータタイプとを含むリソースを分類する方法であって、
モデル関数とモデルデータタイプとを含むドメインモデルを受け取ることと、
データタイプマップを生成するためにリソースデータタイプをモデルデータタイプに対してマッピングすることと、
関数マップを生成するためにリソース関数をモデル関数に対してマッピングすることと、
探索可能なデータベースの中に前記データタイプマップおよび関数マップを記憶することと、
を含む方法。
【請求項１０】
前記ドメインモデルは、
プロセスとユースケースとを含むプロセスモデルと、
参照コンポーネントと参照インタフェースと参照関数とを含む構造モデルと、
を備える、請求項９に記載の方法。
【請求項１１】
前記プロセスモデルの一部分は、前記構造モデルの参照コンポーネント、参照インタフェース、または、参照関数にリンクさせられる、請求項１０に記載の方法。
【請求項１２】
人工物を記憶するためのリポジトリと、
前記人工物に基づいてソフトウェア資産を生成するための資産ソースと、
前記資産ソースから前記ソフトウェア資産を受け取るための、および、資産ライブラリ内に前記ソフトウェア資産を記憶するための資産管理システムと、
を備えるシステム。
【請求項１３】
前記資産ソースは、前記リポジトリ内の前記人工物に対する参照を含むように前記ソフトウェア資産を生成する、請求項１２に記載のシステム。
【請求項１４】
前記資産ソースは、前記リポジトリ内の新たなまたは更新された人工物を検出するときに前記ソフトウェア資産を生成する、請求項１２に記載のシステム。
【請求項１５】
前記資産ソースは、データ記述言語に準拠する形式で前記ソフトウェア資産を生成する、請求項１２に記載のシステム。
【請求項１６】
前記データ記述言語は拡張マークアップ言語（ＸＭＬ）を備える、請求項１５に記載のシステム。
【請求項１７】
前記資産ソースは、前記資産管理システムによる前記資産ライブラリ内の記憶の前に前記ソフトウェア資産を記憶するためのステージングエリアを備える、請求項１２に記載のシステム。
【請求項１８】
さらに、前記資産ソースは、資産テンプレートにしたがって正規化された形式で前記ソフトウェア資産を生成する、請求項１２に記載のシステム。
【請求項１９】
前記資産テンプレートは、データ記述言語にしたがって前記ソフトウェア資産に関するスキーマを定義する、請求項１８に記載のシステム。
【請求項２０】
前記資産ソースは前記ソフトウェア資産を編集するための書込み可能なインタフェースを含む、請求項１２に記載のシステム。
【請求項２１】
前記資産ソースは前記リポジトリから抽出された人工物をキャッシングするための人工物記憶装置を備える、請求項１２に記載のシステム。
【請求項２２】
追加の人工物に基づいて前記ソフトウェア資産を更新するための資産収集ツールをさらに備える、請求項１２に記載のシステム。
【請求項２３】
前記資産収集ツールは、前記追加の人工物をユーザから受け取るためのユーザインタフェースを含む、請求項２２に記載のシステム。
【請求項２４】
前記資産収集ツールは前記追加の人工物を生成するためのスクリプトを含む、請求項２２に記載のシステム。
【請求項２５】
データ記述言語にしたがってソフトウェア資産に関するスキーマを定義する資産テンプレートと、
前記資産テンプレートにしたがって前記ソフトウェア資産を更新する資産収集ツールであって、前記資産テンプレートに基づいて前記ソフトウェア資産から欠落している人工物を識別する資産収集ツールと、
をさらに備える、請求項１２に記載のシステム。
【請求項２６】
前記ソフトウェア資産を１つまたは複数のモデルの要素に対してマッピングするメタデータを生成するための規則エンジンをさらに備える、請求項１２に記載のシステム。
【請求項２７】
前記メタデータに基づいて前記資産ライブラリから前記ソフトウェア資産を選択的に検索するための資産検索モジュールをさらに備える、請求項２６に記載のシステム。
【請求項２８】
前記モデルは、プロセスモデル、構造モデル、リソースモデル、および、実装モデルの中の少なくとも１つを含む、請求項２６に記載のシステム。
【請求項２９】
モデルの要素を選択するユーザから入力を受け取るための、および、前記入力に基づいて前記資産ライブラリから前記ソフトウェア資産を選択的に検索するための資産検索モジュールをさらに備える、請求項１２に記載のシステム。
【請求項３０】
前記資産検索モジュールは、前記ユーザ入力に基づいて探索仕様書を生成する、請求項２９に記載のシステム。
【請求項３１】
前記資産ライブラリ内の前記ソフトウェア資産を前記探索仕様書に対比してスコアリングするためのスコアリングエンジンをさらに備える、請求項３０に記載のシステム。
【請求項３２】
前記人工物はソースコード、バイナリコード、要件仕様書、設計書、モデル、ユースケース、および、コラボレーション図の中の１つを含む、請求項１２に記載のシステム。
【請求項３３】
１つまたは複数の要素を持つモデルと、
再利用可能なソフトウェア資産を記憶するためのデータベースと、
前記モデルの要素を選択するユーザから入力を受け取るための、および、前記入力に基づいて前記データベースから前記ソフトウェア資産のサブセットを選択的に検索するための資産検索モジュールと、
を備えるシステム。
【請求項３４】
前記要素前記モデルに対して前記ソフトウェア資産をマッピングするメタデータを生成するための規則エンジンをさらに備える、請求項３３に記載のシステム。
【請求項３５】
前記モデルは、プロセスモデル、構造モデル、リソースモデル、および、実装モデルの中の１つを含む、請求項３３に記載のシステム。
【請求項３６】
前記資産検索モジュールは前記ユーザの入力に基づいて探索仕様書を生成する、請求項３３に記載のシステム。
【請求項３７】
データベース内の前記ソフトウェア資産を前記探索仕様書に対比してスコアリングするためのスコアリングエンジンをさらに備える、請求項３６に記載のシステム。
【請求項３８】
モデルの１つまたは複数の要素を選択するユーザからの入力を受け取ることと、
前記選択された要素に基づいて資産ライブラリからソフトウェア資産を検索することと、
を含む方法。
【請求項３９】
コンピュータ可読媒体であって、プロセッサに、
モデルの１つまたは複数の要素を選択するユーザからの入力を受け取らせ、および、
前記選択された要素に基づいて資産ライブラリからソフトウェア資産を検索させる、
命令を備えるコンピュータ可読媒体。
【請求項４０】
コンピュータ可読媒体であって、
要素を有するソフトウェアモデルと、
ソフトウェア資産を前記ソフトウェアモデルの前記要素に対してマッピングするメタデータを有するソフトウェア資産と、
を記憶するデータ構造を備えるコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータソフトウェアに関し、さらに特に、再利用可能なソフトウェア資産の管理に関する。
【背景技術】
【０００２】
ここ過去数年にわたって、企業内におけるソフトウェア開発の努力が著しく増大し、その結果として大量のソフトウェアコードと文書とモデルと他の関連の人工物（artifact）とを生じさせている。例えば、大企業は、少数のプログラマしか要しない小規模のプロジェクトから数百名のプログラムを要する大規模な努力までの様々なサイズの、多数の進行中のソフトウェア開発プロジェクトを何時でも同時に有する可能性がある。
【０００３】
ここ過去数年においては、ソフトウェアエンジニアリング、特に開発プロジェクトを横断的にまたいだソフトウェアの再利用の領域において、極めて多量の作業が行われている。ソフトウェアを再利用することは、例えば、ソフトウェアプロジェクトのためのリソースと費用と開発時間とを減少させるという点で、大きな利点を有することが可能である。しかし、特定の企業の様々なリポジトリ（repository）から再利用のために人工物を識別することが、複雑なタスクである可能性がある。潜在的に多数の人工物を識別することに関連した問題に加えて、こうした人工物は、典型的には、企業全体にわたって分散したリポジトリの中に貯蔵されており、および、専門化された開発環境または運用環境によって維持されている。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
一般に、本発明は、企業内でのソフトウェア資産の再利用を容易にする技術に関する。本明細書で使用される「ソフトウェア資産」は、後続の開発環境においてソフトウェア資産を繰り返し使用するために作成されすなわち獲得される１つまたは複数の関連した人工物のセットを意味する。ソースコードとバイナリコードがソフトウェア資産に関する人工物の例である。人工物の他の例が、要件仕様書、設計書、操作マニュアル等のような関連文書である。人工物の別の例が、ユースケース（use case）、オブジェクトモデル、コラボレーション図（collaboration diagram）、デプロイメントモデル（deployment model）等を含んでよい、プロセスモデル、構造モデル、リソースモデル、実装モデル（implementation model）等のようなモデルを含む。
【課題を解決するための手段】
【０００５】
一実施態様では、システムが、人工物を記憶するためのリポジトリと、その人工物に基づいてソフトウェア資産を生成する資産ソース（asset source）とを含む。このシステムは、さらに、資産ソースからソフトウェア資産を受け取るための、および、このソフトウェア資産を資産ライブラリ内に記憶するための資産管理システムを含む。
【０００６】
別の実施態様では、システムが、人工物を記憶するための複数のリポジトリと、データ記述言語にしたがって再利用可能なソフトウェア資産のためのスキーマを定義する資産テンプレートとを含む。このシステムは、さらに、リポジトリをモニタして資産テンプレートのスキーマにしたがって人工物を参照するメタデータを有するソフトウェア資産を生成するための複数の資産ソースと、資産ソースからソフトウェア資産を受け取るための、および、資産ライブラリ内にソフトウェア資産を記憶するための資産管理システムとを含む。
【０００７】
別の実施態様では、システムが、人工物を記憶するための複数のリポジトリと、人工物を参照するメタデータを有するソフトウェア資産を生成するための資産ソースの多重レベル階層とを含む。この階層のより高いレベルの資産ソースは、この階層の低レベルの資産ソースからソフトウェア資産を受け取って、集約ソフトウェア資産（aggregate software asset）を形成する。このシステムは、さらに、資産ソースの階層から集約ソフトウェア資産を受け取って資産ライブラリ内にその集約ソフトウェア資産を記憶する資産管理システムを含む。
【０００８】
別の実施態様では、システムが、１つまたは複数の要素を持つモデルと、再利用可能なソフトウェア資産を記憶するためのデータベースとを含む。このシステムは、さらに、モデルの要素を選択するユーザからの入力を受け取るための、および、その入力に基づいてデータベースからソフトウェア資産のサブセットを選択的に検索するための検索モジュールを含む。
【０００９】
別の実施態様では、方法が、リポジトリから人工物を検索することと、データ記述言語に適合する形式で人工物に基づいてソフトウェア資産を生成することとを含む。この方法は、さらに、資産ライブラリ内の記憶のためにソフトウェア資産を公開することを含む。
【００１０】
別の実施態様では、方法が、モデルの１つまたは複数の要素を選択するユーザからの入力を受け取ることと、その選択された要素に基づいて資産ライブラリからソフトウェア資産を検索することとを含む。
【００１１】
別の実施態様では、コンピュータ可読媒体が、モデルの１つまたは複数の要素を選択するユーザからの入力をプロセッサが受け取ることと、そのプロセッサがその選択された要素に基づいて資産ライブラリからソフトウェア資産を検索することとを引き起こす。
【００１２】
別の実施態様では、コンピュータ可読媒体が、要素を持つソフトウェアモデルを記憶するデータ構造と、ソフトウェア資産をソフトウェアモデルの要素に対してマッピングするメタデータを持つソフトウェア資産とを含む。
【００１３】
本明細書で説明される技術が１つまたは複数の利点を提供するだろう。例えば、企業が、多様なリポジトリに対する汎用のインタフェースを提供するために、および、データ記述言語に準拠する正規化された形式でソフトウェア資産を生成するために、分散した資産ソースを使用することができる。ソフトウェア資産は、例えば、そのソフトウェア資産のためのスキーマを定義する１つまたは複数の資産テンプレートにしたがって、生成されることが可能である。ライブラリ管理者のようなユーザが、再利用可能なソフトウェア資産の内容と構造を容易に制御するために、資産テンプレートを容易に変更することができる。このレベルの抽象が、リポジトリからの人工物の収集プロセスを自動化または半自動化するように活用されることが可能である。このようにして、資産管理システムは、多数の多様なリポジトリの全体にわたって維持されている人工物の永続的な正規化されたビュー（view）を与える、集中化された資産ライブラリをユーザに提供する。さらに、企業は、資産の一括エントリのためにそのシステムを使用することが可能であり、それによってその企業内の旧来のソフトウェア資産を収集するシステムを単純化し加速することができる。
【００１４】
この資産管理システムは、完全に自動化された資産収集から、収集プロセス中において少なくとも幾らかの手動の介入を必要とする半自動または手動のアプローチまでを範囲に含む、全範囲の資産収集アクティビティを提供するように構成されることが可能である。したがって、この資産管理システムは、リポジトリから資産を自動的に収集して正規化された資産を生じさせるように、または、リポジトリ内に存在しない人工物による資産の増補（augmentation）を自動的に要求するように構成されることが可能である。
【００１５】
多くの他の実現可能な利点の中では、この資産管理システムは、プロセスモデル、構造モデル、リソースモデル、実装モデル等のようなソフトウェアモデルの要素を持つ多様なリポジトリから収集されたソフトウェアの連関を提供する。したがって、ユーザは、例えば、ソフトウェアプロジェクトに関する仕様書を開発することができ、および、そのプロジェクトのために活用できる資産ライブラリ内の再利用可能なソフトウェア資産を容易に識別することができる。
【００１６】
本発明は、ソフトウェアリソースをドメインモデルに対してマッピングする、目標である資産収集システムと、資産情報を検索し資産取得を制御するための探索および管理ツールとを含む。このドメインモデルは、モデルタスク、関数、および、データタイプのプロセス中心型組織化（process-centered organization）および／または構造組織化とを含むことができる。収集は、モデル関数とデータタイプに対するマッピングを含み、さらに、資産とマッピング品質とに関する他の情報を収集することを含むことが好ましい。ドメインモデルは、機能的（および／または、非機能的）要件の一部または全部に合致する利用可能な資産を探索するための探索仕様書を構築するために使用されることも可能である。この探索仕様書は、さらに、開発仕様書として部分的または全体的に公開されてもよい。
【００１７】
本発明は、その一側面において、資産収集ソフトウェアユーティリティを含む。このユーティリティは、ソフトウェアリソース情報をカタログ化するためのデータベースと、予め決められたドメインモデルに対して関数とデータタイプとをマッピングするための手段とを含む。ドメインモデルは、互いにリンクさせられることが可能なプロセスモデルと構造モデルとを含む２つの部分からなるモデルであってもよい。単一の構造モデルに関して多数のプロセスモデルが存在してもよい。このユーティリティは、ドメインモデルに対するマッピングを提案するためにシノニムを使用できる。マッピング手段は、マッピングの特徴または品質に関するコメントまたは特定の関数またはデータタイプの使用または目的に関するコメントのようなユーザコメントを追加するための手段を含んでもよい。
【００１８】
本発明は、別の側面において、リソース情報のデータベースを含み、このリソース情報は、予め決められたドメインモデルに対してマッピングされた機能性情報を含む。このデータベースは、探索エンジン、例えば、リソースがどれだけ適切に機能的要件または非機能的要件に合致するかにしたがってそのリソースをスコアリングすることが可能なエンジンを含んでもよい。探索エンジンは、複数のユーザによって使用されることが可能な永続的な探索仕様書を作成するための手段を含んでもよい。個別のリソースが、検討のために探索仕様書に付加されてもよい。探索仕様書は、ソフトウェア開発に関する要件仕様書として、全体的にまたは部分的に公開可能であってもよい。探索エンジンは、永続的な探索仕様書に合致するデータベースに対する追加に関して１人または複数のユーザに通知することができる。関数性情報が複数のドメインモデルの全体にわたってマッピングされることが可能である。データベースは、探索を指定するためにドメインモデルを（例えばグラフィカルに）閲覧するための手段を含んでもよい。この手段は、ドメインモデルのプロセス面と構造面との間を移動する手段を含んでもよい。このデータベースは、さらにリソース使用情報を含んでもよく、このリソース使用情報はプロジェクトにリンクさせられてもよく、および、ライセンス供与データ、リソース取得ツール、および、使用報告ツールのような情報を含んでもよい。
【００１９】
本発明は、さらに別の側面において、リソースデータタイプをモデルデータタイプに対してマッピングすることと、リソース関数をモデル関数に対してマッピングすることと、その結果を探索可能なデータベース内に記憶することとによって、ドメインモデルに対比してリソースを分類する方法を含む。ドメインモデルは、互いにリンクさせられてもよいプロセスモデルと構造モデルとを含むことができる。複数のプロセスモデルは、さらに、単一の構造モデルにリンクさせられることも可能である。この方法は、モデル関数とデータタイプ記述と探索するためにシノニムを使用することを含んでもよい。例えばマッピングの品質についてのコメント、または、個別の関数もしくはデータタイプの使用もしくは目的についてのコメントのようなコメントが、そのデータベースに加えられることも可能である。この方法は、さらに、資産取得要求を取得者に転送することと、ライセンスキーのような取得情報を記憶することと、を含んでもよい。この方法は、さらに、使用報告または取得要求報告を生成することを含んでもよい。
【００２０】
本発明は、さらに別の側面において、場所情報と機能性情報とを含むリソース情報の探索可能なデータベースを維持することによって企業内リソースを管理する方法を含み、この機能性情報はドメインモデルに対してマッピングされる。この方法は、例えば永続的な探索仕様書を生成することによって、機能的要件または非機能的要件に合致するリソースを求めてデータベースを探索することを含んでもよい。永続的な探索仕様書がユーザ間で共有されてもよく、および／または、要件文書（requirement document）として公開されてもよい。資産は、永続的な探索仕様書に付加されてもよく、および、この方法は、付加された資産が適合しない仕様の一部分を公開することを含んでもよい。１人または複数のユーザが、永続的な探索仕様書に適合するリソースがデータベースに対して追加される時に通知されてもよい。この方法は、さらに、取得者に対してリソース取得のための要求を転送することと、ライセンスキーのような取得情報を記憶することとを含んでもよい。この方法は、さらに、取得要求および／またはリソース使用に関する報告を生成することを含んでもよい。
【００２１】
本発明は、さらに別の側面において、ソフトウェアリソースをドメイン参照モデルに対してマッピングする方法を含み、この方法は、マッピングされるべき関数とデータタイプとを決定することと、その関数とデータタイプを最も単純なものから最も複雑なものに至る順序にソートすることと、その関数とデータタイプをマッピングのための決められた順序でユーザに提示することとを含む。ユーザが個別の関数とデータタイプとを提示されるので、以前に生成されたマッピングが、さらに別のマッピングの提案を精緻化するために使用される。この決められた順序は、例えば、関数を閲覧する前にデータタイプのすべてを閲覧することを含んでもよい。ユーザは、異なる順序で関数とデータタイプとをマッピングすることを選んでもよい。
【００２２】
本発明の１つまたは複数の実施態様の詳細を付加図面と以下の説明において説明する。本発明の他の特徴と目的と利点とが説明と図面と特許請求項とから明らかになるだろう。
【発明を実施するための最良の形態】
【００２３】
図１は、企業内のソフトウェア資産の再利用を容易にする具体例としてのシステム２を概略的に示すブロック図である。一般的には、本明細書で使用される「再利用可能なソフトウェア資産」は、後続の開発環境においてその資産を反復的に利用する目的で生成または獲得されている１組の関連付けられた人工物を表す。ソフトウェア資産に関する人工物の例が、ソフトウェア資産に関するソースコードまたはバイナリコードを含む。他の例が、要件仕様書、設計書等のような文書を含む。人工物のさらに別の例が、ユースケース、オブジェクトモデル、コラボレーション図、デプロイメントモデル等を含む。さらに別の例が、アプリケーションサーバ内に配備されているコンポーネントインスタンス（component instance）のような、企業の運用環境内に配備されている運用人工物（operational artifact）を含む。
【００２４】
リポジトリ４Ａ−４Ｎ（ここではリポジトリ４）が、再利用可能な資産の管理に関係した情報（ここでは人工物）を記憶する企業内の任意のデータソースを表現する。リポジトリ４Ａは、例えば再利用可能なソフトウェアコンポーネントを記憶してもよい。これらのコンポーネントは、典型的には、エンタープライズジャバビーンズ（Enterprise JavaBeans（ＥＪＢ））とコンポーネントオブジェクトモデル（Component Object Model（ＣＯＭ））とのような標準化されたコンポーネントモデルに準拠する場合が多い、個別に配備可能なコードエレメントである。こうしたコンポーネントは、典型的には、カプセル化されたサービスまたは機能に対するアクセスを可能にする適切に定義されたインタフェースを有する。このタイプのリポジトリの一例が、バージョンコントロールを提供しおよび共同開発を容易にする、リポジトリ内にソースコードと実行可能コードとを記憶することが多いソースコード開発環境を含む。
【００２５】
別の例として、リポジトリ４Ｂが、ＨＴＴＰ、ＨＴＴＰＳ、ＦＴＰ、ＳＯＡＰ、ＸＭＬメッセージング等のようなネットワーキングプロトコルを介したクライアントソフトウェアによるリモートアクセスのために、ウェブサービス（web svcs）に対する機能的インタフェースを与えるコードエレメントを記憶してもよい。企業は、ウェブベースのアプリケーションを迅速にアセンブルするためにこれらの資産を使用できる。このタイプのソフトウェア資産の一例が、ウェブベースの金融取引を提供するためのサーバサイドのコードエレメントを含む。
【００２６】
別の例として、リポジトリ４Ｃが、企業内でのデータ転送のためにメタデータをアセンブルするために使用されることが可能な、ＸＭＬのようなデータ記述言語に準拠するスキーマを記憶できる。リポジトリ４Ｄが、様々なソフトウェアコンポーネントの形式的表現を提供するモデリング情報（モデル）を記憶できる。このモデリング情報は、ユースケース、オブジェクトモデル、コラボレーション図、デプロイメントモデル等を含んでよい。モデリング情報は、例えば統一モデリング言語（ＵＭＬ）に準拠することが可能である。リポジトリ４Ｎが、要件仕様書、設計書等を含むソフトウェアコンポーネントに関連した文書を記憶することができる。
【００２７】
さらに、リポジトリ４によって記憶された人工物は、ソフトウェアコンポーネントの開発中に生成される人工物に限定されず、ソフトウェアコンポーネントの特定のインスタンスのような資産の配備に関係した人工物を含むことが可能である。したがって、システム２は、資産の様々なインスタンスの配備によって資産の開発中に生成される人工物と、運用環境内でのその資産の進行中のトラッキングによって生成される人工物とを含む、その資産のライフサイクル全体を通して生成される人工物を集約するために使用されることが可能である。企業の運用環境内に配備される運用人工物の例が、アプリケーションサーバ内に配備されるコンポーネントインスタンスを含む。
【００２８】
リポジトリ４は、さらに、任意の形式における資産に関係したデータを管理しおよび消費可能な形式にデータをアセンブルするその「ビュー（view）」を示す、「アクティブ」リポジトリを含むこともできる。例えば、欠陥のあるトラッキングシステムが、特定の資産に関係したビュー、例えば、開発途上の資産の特定のバージョンに該当する欠陥だけを示すビューの形に組織化されることが可能な任意の数の欠陥を管理することができる。
【００２９】
一般的に、これらの人工物は、カスタマイズされた開発ツールを使用してリポジトリ４内において開発および維持される可能性が高い。したがって、リポジトリ４は、非常に多様なインタフェースを有する様々な記憶機構を含むことができる。システム２は、基礎となるリポジトリ４に対する一般化された抽象的なインタフェースを提供する１つまたは複数の資産ソース１２Ａ−１２Ｎ（ここでは資産ソース１２）を使用する。資産ソース１２は、人工物を抽出するためにリポジトリ４と相互作用し、および、再利用可能なソフトウェア資産の複合的な正規化されたビューを提供するために、関連の人工物をアセンブルする。特に、資産ソース１２は、正規化された形式で各資産に関する関連の人工物を記述する資産説明書（asset description）を生成する。
【００３０】
資産ソース１２は、データ記述言語に準拠する正規化された形式でソフトウェア資産を出力する。言い換えると、ソフトウェア資産は、リポジトリ４Ａからの人工物データと、データ記述言語に準拠するメタデータとを含むかまたは参照する。データ記述言語は資産の形式と組織化と構造とを記述する。したがって、資産ソース１２によって生じさせられた正規化された資産は、データ記述言語に準拠するメタデータを含む、電子文書、ファイル、スクリプト、データストリーム、ソフトウェアオブジェクト等の形式をとることができる。他の言語の例が、拡張スタイル言語（Extensible Linking Language（ＸＳＬ））、拡張リンク記述言語（ＸＬＬ）、標準化マルチメディアオーサリング言語（Standardized Multimedia Authoring Language（ＳＭＩＬ））、および、標準汎用マークアップ言語（Standard Generalized Markup Language（ＳＧＭＬ））の変種を含む。
【００３１】
詳細に後述するように、ユーザ８Ａは、リポジトリ４の中の対応する１つのリポジトリの特定の要件に資産ソース１２の各々を容易に適合させることが可能である。詳細に後述するように、ユーザ８は、資産ソース１２によって生じさせられた正規化資産を一般的に記述するために、資産定義テンプレートを使用できる。
【００３２】
資産管理システム６は、資産ソース１２から資産説明書を収集するための、および、その資産説明書を企業内のユーザ８Ａ−８Ｐ（ここではユーザ８）が使用することを可能にするようにその資産説明書を公開するための、集中化されたリソースを提供する。さらに明確に述べると、資産管理システム６は、様々なリポジトリ４の中に記憶されているソフトウェア資産および関連の人工物の総合的な探索可能なビューを提供する。資産管理システム６と対話することによって、ユーザ８は資産を識別して使用することが可能である。
【００３３】
システム２は、再利用可能なソフトウェア資産の収集と管理のために１つまたは複数の有利な特徴を提供することができる。多様なリポジトリ４に対する一般化されたインタフェースを提供するために資産ソース１２を使用することが、リポジトリ４からの人工物情報を収集するプロセスを自動化または半自動化するために利用されることが可能である。したがって、企業は、資産の一括エントリのためにシステム２を使用することが可能であり、それによって企業内の旧来のソフトウェア資産を収集するプロセスを単純化および加速することが可能である。さらに、資産管理６と資産ソース１２は、多数の多様なリポジトリ４の全体にわたって維持されている人工物の一貫性のある正規化されたビューをユーザ８に提供する。さらに、資産管理システム６と資産ソース１２は、リポジトリ４が時間経過に応じて変化する可能性があるにも関わらず、リポジトリ４の現在ビューを提供するように相互作用することができる。
【００３４】
さらに、資産管理システム６と資産ソース１２は、全自動化された資産収集から、収集プロセス中にユーザ８の少なくとも幾らかの手動の介入を必要とする半自動または手動のアプローチまでを含む、全範囲の資産収集アクティビティを提供するように構成されることが可能である。したがって、資産管理システム６と資産ソース１２は、リポジトリ４から自動的に生成された資産をユーザ８が使用することを自動的に可能にする。さらに、資産管理システム６と資産ソース１２は、収集プロセス中にリポジトリ１２内に存在しない人工物でユーザ８が資産を増補することを可能にするように構成されることが可能である。
【００３５】
図２は、図１の資産管理システム６の一例としての実施形態を示すブロック図である。資産管理システム６は、再利用可能なソフトウェア資産の管理を容易化する幾つかの協調的モジュールを含む。
【００３６】
例えば、資産管理システム６は、図２に例示のために示されているように、資産ソース１２Ａとリポジトリ４Ａとのような、リポジトリ４（図１）からの人工物を集めて集約するために資産ソース１２と相互作用する公開モジュール（publishing module）２４と資産収集モジュール２６とを含むことが可能である。一般的に、資産ソース１２Ａは、リポジトリ４Ａから資産を集めて正規化する。さらに、資産ソース１２Ａは、公開モジュール２４および資産収集モジュール２６との相互作用のための抽象インタフェースを提供し、それによって、これらのモジュールからリポジトリ４Ａの固有の要件を隠蔽する。
【００３７】
一般的に、資産収集モジュール２６は、リポジトリ４から抽出された情報を増補し、および、その抽出された情報と、資産ソース１２Ａによるその資産の公開のために必要とされる情報との間のコンフリクトの解決を実現することが可能である。資産収集モジュール２６は、新たな資産または更新された資産の使用可能性を示す通知２８を資産ソース１２Ａから受け取ると、その資産を検索するために資産ソース１２Ａに対して１つまたは複数のメッセージ３０を送出する。メッセージ３０は、例えば、シンプルオブジェクトアクセスプロトコル（Simple Object Access Protocol（ＳＯＡＰ））メッセージ、リモートメソッドインボケーション（Remote Method Invocation（ＲＭＩ））コール、または、モジュール間通信のための他の機構を含んでよい。さらに、資産収集モジュール２６は、資産ソース１２Ａによって生じさせられる資産の現在インスタンスを検索するために、資産ライブラリ３６にアクセスしてもよい。資産収集モジュール２６は、資産の現在インスタンスと資産１２Ａによって生じさせられる資産とを、ユーザ３９に対してリコンシリエイション（reconciliation）のために提示することが可能である。
【００３８】
資産ソース１２Ａと資産収集モジュール２６は、資産情報を妥当性検査するために資産テンプレート４７を使用する。一実施形態では、資産ソース１２Ａ、または、スキーマ生成モジュールは、資産テンプレート４７を資産のためのベーススキーマ（base schema）に適用することによって仮想スキーマを生成する。資産テンプレートは、拡張マークアップ言語（ＸＭＬ）のようなデータ記述言語に準拠し、および、定義テンプレートと制約条件テンプレート（constraint template）とを含んでよい。ベーススキーマはスキーマ定義テンプレートに準拠し、および、データ記述言語に準拠する要素のクラスを定義する。こうすることによって、ベーススキーマは静的なままであってよく、および、資産の新たなクラスをサポートするために変更される必要はない。
【００３９】
許容可能な資産のクラスを定義するために、ユーザ８の１人またはライブラリ管理者４９のようなユーザは、定義テンプレート、制約条件テンプレート、または、この両方を作成することが可能である。さらに明確に述べると、そのユーザは、ベーススキーマによって定義される要素に関するサブクラスを定義する１つまたは複数の定義テンプレートを作成できる。このようにして、そのユーザは、ベーススキーマを変更することなしに、ベーススキーマの要素定義を拡張することができる。
【００４０】
さらに、ユーザは、要素のインスタンスに関する要件を定義する１つまたは複数の制約条件テンプレートを作成できる。制約条件テンプレートは、ベーススキーマによって定義されるクラスに属する要素のインスタンスに関する要件、定義テンプレートによって定義されるサブクラスに属する要素のインスタンスに関する要件、または、これらの両方に関する要件を定義することができる。例えば、制約条件テンプレートは、要素のインスタンスに関する必要とされる濃度（cardinality）、インスタンスの必要最小数もしくは必要最大数、要素のインスタンスの必要数の範囲、インスタンスに関する必要属性、要素のインスタンスに関する必要パラメータ値、要素の特定の必要なインスタンス等を定義することができる。
【００４１】
資産ソース１２Ａは、ベーススキーマによって定義される要素のクラスを表すデータ構造を最初に作成することによって、仮想スキーマのスキーマ情報を生成する。その次に、資産ソース１２Ａは、定義テンプレート内で定義されている要素のサブクラスを含むようにスキーマ情報を拡張するために、ベーススキーマに定義テンプレートを適用する。最後に、資産ソース１２Ａは、制約条件テンプレートによって定義される制約条件を含むようにスキーマ情報を更新するために、制約条件テンプレートを適用する。
【００４２】
定義テンプレートと制約条件テンプレートは、例えばＸＭＬのような、ベーススキーマの要素が準拠するデータ記述言語に準拠する。したがって、ユーザは定義テンプレートと制約条件テンプレートとを容易に作成および変更することが可能であり、および、要素の新たなクラスをサポートするためにはベーススキーマを変更するだけで済む。
【００４３】
資産ソース１２Ａと資産収集モジュール２６は、資産収集プロセスを進行させるために資産テンプレート４７を使用してよい。資産テンプレート４７から動的に生成されることが可能な資産スキーマによって記述される内容と構造とに基づいて、資産ソース１２Ａと資産収集モジュール２６は、手動でまた自動的に、収集資産に追加される必要があるあらゆる不完全な人工物データを識別する。このようにして、資産ソース１２Ａは、スキーマ情報に適合する正規化された形式で資産を生成することが可能である。資産は、その資産がＸＭＬのようなデータ記述言語で記述されているという意味で正規化されており、および、要素と属性が実質的に類似している。
【００４４】
次の擬似コードが、再利用可能なソフトウェア資産に関連した情報を収集するために使用可能なベーススキーマと定義テンプレートと制約条件テンプレートとの例を示す。特に、次のベーススキーマの一例は、ＡＳＳＥＴと名付けられている要素の親クラスと、ＫＥＹＷＯＲＤおよびＲＥＬＡＴＩＯＮと名付けられている要素の２つの子クラスとを定義する。
【００４５】
2004535021.tif 000003
【００４６】
次の定義テンプレートの一例が、要素クラスＫＥＹＷＯＲＤおよび要素クラスＲＥＬＡＴＩＯＮに関するサブクラスの定義を示し、それによって、上述のベーススキーマの例によって与えられる定義を拡張する。
【００４７】
2004535021.tif 000004
【００４８】
上記の定義テンプレートの例は、具体例としてのベーススキーマによって定義されるこれらの別々の要素クラスに関する特定のサブクラスを定義するために、要素ＤＥＦＩＮＥ−ＫＥＹＷＯＲＤおよび要素ＤＥＦＩＮＥ−ＲＥＬＡＴＩＯＮを使用する。さらに明確に述べると、クラスＫＥＹＷＯＲＤに関して、具体例としての定義テンプレートは、２つの使用可能な値であるＦＩＮＡＮＣＥとＢＡＮＫＩＮＧとを有するサブクラスＣＡＴＥＧＯＲＹを定義する。この例示されている定義テンプレートは、ＰＲＩＣＥとＡＬＩＡＳを含むクラスＫＥＹＷＯＲＤに関する２つの追加のサブクラスを定義する。クラスＲＥＬＡＴＩＯＮに関しては、定義テンプレートは、ＵＳＥＳとＰＲＥＤＥＣＥＳＳＯＲという２つのサブクラスを定義する。
【００４９】
次の制約条件テンプレートの一例が、要素のインスタンスの使用に関する要件と、要素のインスタンスに関する制約条件とを示す。
【００５０】
2004535021.tif 000005
【００５１】
上記の具体例としての制約条件テンプレートは、定義テンプレートによって定義される要素のサブクラスに関するインスタンスの特定の要件を定義するために、要素ＵＳＥ−ＫＥＹＷＯＲＤと要素ＵＳＥ−ＲＥＬＡＴＩＯＮとを使用する。さらに明確に述べると、この具体例としての制約条件テンプレート１０は、サブクラスＣＡＴＥＧＯＲＹに属する要素の少なくとも１つのインスタンスを許可する。この具体例としての制約条件テンプレートは、さらに、サブクラスＰＲＩＣＥに属する要素の多くとも１つのインスタンスを許可する。同様に、具体例としての制約条件テンプレートは、サブクラスＰＲＥＤＥＣＥＳＳＯＲに属する要素の少なくとも１つのインスタンスを許可し、および、サブクラスＵＳＥＳに属する要素の少なくとも１つのインスタンスを必要とする。
【００５２】
次の擬似コードが、再利用可能なソフトウェア資産を記述する文書の具体例を示し、この文書は、上述のベーススキーマと定義テンプレートと制約条件テンプレートとの具体例に準拠する。
【００５３】
2004535021.tif 000006
【００５４】
資産収集モジュール２６の形式は、資産管理システム６が手動、半自動、または、自動の資産収集のために構成されているかどうかに応じて様々であることが可能である。資産収集モジュール２６は、例えば、リポジトリ４Ａから収集された情報を完成させるかまたは増補するためにユーザ３９がそれを使って情報を手動で供給することが可能な編集ツールを含んでもよい。さらに、そのユーザは、抽出された資産情報と要求されている情報との間のあらゆるコンフリクトを解決するために、その編集ツールと対話できる。半自動の環境または自動の環境の場合には、資産収集モジュール２６は、資産ソース２０によって抽出された資産情報による情報の増補を自動化するための１つまたは複数のスクリプトを呼び出してもよい。資産収集モジュール２６は、例示されているように資産管理システム６内に組み込まれてもよく、または、資産管理システム６に遠隔的に接続されてもよい。
【００５５】
全自動環境の幾つかにおいては、資産ソース１２Ａは、通知２８を保留することによって資産収集モジュールをバイパスしてもよく、および、その資産が資産ライブラリ３６への公開の準備が整っているということを示す通知３２を公開モジュール２４に送出することもできる。全自動環境においては、資産ソース１２Ａは、資産定義テンプレート４７を使用して資産情報を妥当性検査する。
【００５６】
公開モジュール２４は、通知３２を受け取ると、資産ソース１２Ａからの正規化された資産を検索するためにメッセージ３４を資産ソース１２Ａに送出する。公開モジュール２４は、その正規化された資産を検索すると、資産ライブラリ３６内にその資産を記憶する。
【００５７】
資産管理システム６は、さらに、企業にとって関心の対象である機能性を表すモデル３７をユーザ８が開発することを可能にするモデリングモジュール３８を含んでもよい。例えば、ユーザ８は、ソフトウェア開発プロジェクトのためのプロセスモデル、構造モデル、リソースモデル、実装モデル等を含んでもよいモデル３７を開発するために、モデリングモジュール３８と対話することができる。モデリングモジュール３８は、統合プロプリエタリモデリングツール（integrated proprietary modeling tool）、または、the Rational Software Corporation（Cupertino, California）からのRational RoseTMのような、モデリング情報を生成することが可能な任意の従来のモデリングツール、または、こうしたツールの両方の組合せを含んでよい。
【００５８】
資産検索モジュール４２が、ユーザ８が資産ライブラリ３６内の資産データにアクセスして管理することを可能にする。特に、資産検索モジュール４２は、モデルドリブン探索仕様書（model-driven search specification）（search specs）４８を１人または複数のユーザ８が開発することを可能にする。言い換えると、資産検索モジュール４２は、探索仕様書４８を構築するためにユーザ８が１つまたは複数のモデル３７からの要素を選択することを可能にする。スコアリングエンジン（scoring engine）４４が、資産ライブラリ３６内の最も適切な資産データを識別することを補助するために、探索仕様書４８に対比して、公開モジュール２４によって公開された各資産をスコアリングする。このようにして、ユーザ８は、探索プロセスをガイドするためにモデル３７からのモデリングデータを使用して、資産ライブラリ３６から資産を選択的に検索することが可能である。資産ライブラリ３６は、リレーショナルデータベース管理システム（ＲＤＢＭＳ）、オブジェクト指向データベース、フラットファイル（flat file）等のような任意のデータソースとして実装されることが可能である。
【００５９】
ライブラリ管理（admin）モジュール４６が、ライブラリ管理者４９が資産ライブラリ３６を管理するために使用することが可能なインタフェースを提供する。例えば、ライブラリ管理者４９は、探索仕様書の開発を調整する規則を定義してもよい。さらに、ライブラリ管理者４９は、新たな資産タイプを定義するために、または、既存の資産タイプに関するスキーマを更新するために、資産テンプレート４７を編集することもできる。
【００６０】
図３は、資産ソース１２Ａの具体例としての実施形態を示すブロック図である。抽出および妥当性検査（ＥＶ）モジュール５６が資産ソース１２Ａのコアロジック（core logic）を提供し、および、１つまたは複数のソフトウェアコンポーネントを含んでもよい。ＥＶモジュール５６は、あらゆる新たな人工物または更新された人工物を識別するために、周期的にリポジトリ４Ａにアクセスし、または、リポジトリ４Ａから通知を受け取る。ＥＶモジュール５６は、こうした人工物のいずれかを識別すると、その新たな人工物または更新された人工物を含むか参照する可能性があるメタデータとデータとを有する資産を生成する。ＥＶモジュール５６は、ステージングエリア（staging area）５８内の資産のインスタンスをキャッシングする。ＥＶモジュール５６は、資産の公開の準備が整っているかどうかを識別するために資産テンプレート４７を使用してその資産を妥当性検査し、または、おそらくはリコンシリエイションもしくは別の人工物データを必要する。
【００６１】
さらに明確に述べると、ＥＶモジュール５６は、データ記述言語に準拠している形式で資産を生成し、および、メタデータと実際の人工物データとを含んでもよく、または、リポジトリ４Ａもしくは人工物記憶装置６０の中に記憶されている人工物に対する参照を含んでもよい。資産ソース１２Ａは、必要に応じてリポジトリ４Ａから検索された人工物データを記憶するために人工物記憶装置６０を管理し、および、外部アクセスのための人工物インタフェース５３を提供する。したがって、その記憶された資産は、資産ライブラリ３６（図２）に対する公開の際に、メタデータ、人工物データ、１つもしくは複数の資産ソース１２の人工物記憶装置６０内の人工物データもしくは中央人工物記憶装置内の人工物データに対する参照、または、これらの任意の組合せを含んでよい。
【００６２】
資産ソース１２Ａは、データ記述言語に準拠している正規化された形式で資産を抽出するように公開モジュール２４（図２）によって使用するための読取り専用インタフェース５４を含む。言い換えると、公開モジュール２４は、ステージングエリア５８から１つまたは複数の資産を抽出するようにＥＶモジュール５６に指示するために読取り専用インタフェース５４を呼び出す。公開モジュール２４は、その読取り専用インタフェース５４を経由してステージングエリア５８から資産を受け取ると、その資産を資産ライブラリ３６内に記憶する。
【００６３】
さらに、資産ソース１２Ａは、基礎をなすリポジトリ４Ａまたは人工物記憶装置６０の人工物情報を資産収集モジュール２６が増補することを可能にする書込み可能インタフェース５２を含んでもよい。資産収集モジュール２６は、ステージングエリア５８から１つまたは複数の資産を抽出するようにＥＶモジュール５６に指示するために読取り専用インタフェース５４を呼び出す。資産収集モジュール２６は、書込み可能インタフェース５２を経由してステージングエリア５８から資産を受け取ると、本明細書で述べられているように手動、半自動、または、自動の技術を使用して、書込み可能インタフェース５２を介して人工物データを増補する。
【００６４】
次のコードが、資産ソース５０によって提供されることが可能なインタフェース５２、５３、５４に関する具体例としての実施形態を示す。
【００６５】
/***** 人工物リポジトリインタフェース *****/
interface ArtifactRepository {
/* このArtifactRepositoryのインストレーション固有ＩＤを得る */
public abstract String getId();
/* 指定された人工物をリポジトリから検索する */
ArtifactStream getArtifact(String assetId, String artifactId);
}
/***** 人工物リポジトリに関する書込み可能インタフェース *****/
interface WriteableArtifactRepository extends ArtifactRepository {
/* 特定の人工物をリポジトリ内に記憶する */
void storeArtifact(String assetId, String artifactId);
/** 指定された人工物をリポジトリから取り除く */
void removeArtifact(String assetId, String artifactId);
}
/***** 資産ソースに関する読取り専用インタフェース *****/
interface AssetSource extends AssetRepository {
/* このAssetSourceのインストレーション固有ＩＤを得る */
public abstract String getId();
/* 指定された資産のＸＭＬ表現を得る */
public abstract String getAsset(String assetId);
/* このAssetSourceから入手可能なすべての公開準備が整った資産を得る。資産のＸＭＬ表現であるストリングの集まりを返す */
public abstract Collection getAssets();
/* この方法は、公開モジュールのようなこのAssetSourceの「消費者」が資産を現在使用中であるということと、AssetSourceが資産のビズブル（visble）な人工物に対する変更を許可してはならないということとを示すために、AssetSourceの「消費者」からのコールバックとして使用される。 */
public abstract void publishAsset(String assetId);
/* この方法は、特定の基準に合致するAssetSourceの基礎となるソースからの資産だけを露出させるためにAssetSourceによって使用される分類子基準のリストから成るＸＭＬ構造をAssetSourceに与えるために使用されてもよい。 */
public abstract void setFilter(String classificationCriteria)
/* 新たな資産の通知または既存の資産に対する変更の通知のために、資産収集モジュールまたは公開モジュールのような特定の消費者を登録する。 */
public abstract void registerConsumer(AssetSourceConsumer
consumer);
}
/***** 資産ソースに関する書込み可能インタフェース *****/
interface WriteableAssetSource extends AssetSource,
WriteableArtifactRepository {
/* スクラッチから、または、既存のＸＭＬ資産文書から新たな資産を作成するために資産収集モジュールによって使用される）資産ソースの中に新たな資産を生成する。 */
public abstract void createAsset(String assetXMLDoc);
/** リポジトリ内の既存の資産を更新する */
public abstract void updateAsset(String assetXMLDoc);
/* リポジトリから資産を取り除く */
public abstract void removeAsset(String assetId);
}
【００６６】
図４は、企業内での資産の再利用を容易にするための、一例としての資産管理システム６（図１）と資産ソース１２との間の相互作用をさらに詳細に示す流れ図である。最初に、資産管理システム６の公開モジュール２４（図２）と資産収集モジュール２６とが、潜在的な資産「消費者」として資産ソース１２の各々に登録する（６８）。この登録中に、公開モジュール２４と資産収集モジュール２６の各々は、資産ソース１２がこれらのモジュールとの通信のために使用する、ポート番号、ソケットハンドル（socket handle）、コールバックポインタ（callback pointer）等のような固有の通信ハンドル（communication handle）を通信できる。特に、資産ソース１２は、公開モジュール２４と資産収集モジュール２６とに新たなまたは更新された資産を通知するためにその通信ハンドルを使用できる。
【００６７】
資産ソース１２がリポジトリ４内の新たなまたは更新された人工物を検出すると（７０）、資産ソース１２はリポジトリ４から情報を抽出する（７２）。例えば、資産ソース１２Ａは、リポジトリ４Ａ内に記憶されている新たなまたは更新された人工物情報を抽出できる。例示のために、図４の残りの部分が、資産ソース１２Ａとリポジトリ４Ａとに関して説明される。
【００６８】
人工物情報が抽出された後に、資産ソース１２Ａは、ＸＭＬのようなデータ記述言語に準拠する形式で、抽出された人工物情報に基づいて資産を生成し、その資産をステージングエリア５８内に記憶する（７４）。資産ソース１２Ａは、その生成を制御するための資産スキーマを提供する１つまたは複数の資産テンプレート４７を選択する。このプロセス中に、資産ソース１２Ａは、人工物情報を増補またはリコンサイルするために何らかの追加情報が必要であるかどうかを判定するために、その生成された資産を妥当性検査する（７６）。
【００６９】
この妥当性検査に基づいて、人工物情報を増補またはリコンサイルするために追加の情報が必要とされる場合には、資産ソース１２Ａは、おそらくはコンフィギュレーション情報または資産テンプレート４７によって提供される資産スキーマに基づいて、その資産が編集可能な資産であるかどうかを判定する（７８）。そうである場合には、資産ソース１２Ａは、その資産のステータスを「編集可能」に設定し（８０）、および、編集可能な資産がステージングエリア５８内で入手可能であることを示すために資産収集モジュール２６に通知２８を送る（８２）。
【００７０】
これに応答して、資産収集モジュール２６は、おそらくは手動、半自動、または、完全自動の形で、その要求された情報を提供する（８４）。さらに、資産収集モジュール２６は、ステージングエリア５８内に記憶されている資産のインスタンスを、資産ライブラリ３６内に記憶されている可能性がある資産の現在バージョンとリコンサイルすることにおいて、ユーザ８を補助することができる。資産収集モジュール２６による編集プロセスが完了すると、資産ソース１２Ａは、ステージングエリア５８内の資産のステータスを「編集可能」から「公開可能」に変更する（８６）。同様に、資産が編集不可能であった場合、または、追加の情報が必要でなかった場合（ステップ７８でのＮＯ分岐）には、資産ソース１２Ａは資産収集モジュール２６をバイパスし、その資産を「公開可能」として設定する（８６）。
【００７１】
その次に、資産ソース１２Ａは、ステージングエリア５８内の資産の公開の準備が整っているという通知３２を公開モジュール２４に送出する（８８）。最後に、公開モジュール２４は資産ソース１２Ａから資産を検索し（９０）、および、おそらくは手動、半自動、または、完全自動の形でその資産を資産ライブラリ３６に対して公開し、それによって資産検索モジュール４２を経由してその資産をユーザ８に対して利用可能にする。資産ソース１２Ａは、ステージングエリア５８内の資産のステータスを「公開済み」として設定し（９０）、および、後続の新たなまたは更新された資産人工物に関してそのプロセスを反復する。
【００７２】
上述の更新および公開プロセスは、リポジトリ内の新たなまたは更新された人工物の情報の検出によってトリガされることは必ずしも必要ではない。例えば、ユーザ８は、資産ライブラリ３６内の資産を選択することと、（点線９４で示されているように）更新プロセスを開始させることとによって、そのプロセスをトリガすることができる。特に、資産収集モジュール２６は、資産モジュール１２Ａによって生成された資産のインスタンスを、資産ライブラリ３６内に記憶されている資産の現在バージョンとリコンサイルすることができる。ユーザ８は、さらに、１つまたは複数のテンプレートを選択することによってこのプロセスを通して新たな資産の生成を開始させることができ、および、そのテンプレートにしたがってその新たに生成された資産を編集することに進むことができる。
【００７３】
図５は、資産ソース１０２Ａ−１０２Ｅ（ここでは資産ソース１０２）がリポジトリ１０４Ａ−Ｄに結合されている資産ソース階層１００を例示するブロック図である。図示されているように、資産ソース１０２は、必ずしもリポジトリ１０４との１対１の関係を持つ必要はなく、および、資産が収集されて公開される際に複数の抽象レベルを与えるように階層の形に構成されてもよい。階層１００は例示のために示されている。したがって、資産ソース１０２は、様々な環境から資産を収集するために必要に応じて階層的に構成されることが可能である。
【００７４】
例えば、資産ソース１０２Ａ−１０２Ｃはリポジトリ１０４に結合され、および、資産ソース階層１００の第１のレイヤを形成する。さらに明確に述べると、資産ソース１０２Ａは、リポジトリ１０４Ａ内に記憶されている人工物に基づいて資産を生成するように構成されている。同様に、資産ソース１０２Ｂは、リポジトリ１０４Ｂ内に記憶されている人工物に基づいて資産を生成するように構成されている。資産ソース１０２Ｃは、リポジトリ１０４Ｃとリポジトリ１０４Ｄとの中に記憶されている人工物に基づいて資産を生成するように構成されている。言い換えると、資産ソース１０２Ｃはリポジトリ１０４Ｃとリポジトリ１０４Ｄの両方をモニタし、および、新たなまたは更新された人工物に基づいて資産を生成する。
【００７５】
図示されている具体例としての階層１００では、資産ソース１０２Ａ−１０２Ｃは、読取り専用の資産ソースを含み、および、収集ツールを呼び出すことなしに資産ソース階層１００の上位レベルに対して資産を公開する。したがって、資産ソース１０２Ａ−１０２Ｃは、必ずしも書込み可能インタフェースをサポートする必要はない。
【００７６】
資産ソース１０２Ｄは資産ソース１０２Ａ、１０２Ｂから資産を受け取って集約する。特に、資産ソース１０２Ｄは資産ソース１０２Ａ、１０２Ｂから不完全な資産を受け取ってもよく、および、集約資産を形成するために、その受け取られた資産の人工物またはその資産に対する参照を組み合わせてもよい。資産ソース１０２Ｄは、その集約資産を増補するかまたはリコンサイルするために資産収集ツール１０６Ａを呼び出すことができる。
【００７７】
同様に、資産ソース１０２Ｅは資産ソース１０２Ｃ、１０２Ｄから資産を受け取って集約し、および、その集約資産を増補するかまたはリコンサイルするために資産収集ツール１０６Ｂを呼び出すことができる。したがって、資産ソース１０２Ｅによって生じさせられる集約資産は完全であるはずであり、および、資産ライブラリ３６に対して公開できる状態にあるはずである。あるいは、資産ソース１０２Ｄ、１０２Ｅは、例えば、資産ライブラリ３６に対する公開のための互いに無関係な資産として、ソース１０２Ａ、１０２Ｂ、１０２Ｃの各々からの資産を処理することができる。
【００７８】
図６が、資産管理システム６の資産収集モジュール２６の一実施形態をさらに詳細に示すブロック図である。資産の手動生成または半自動生成の場合には、ユーザ８は、追加の資産情報を提供するためにユーザインタフェース１１０と対話するか、または、リポジトリ４Ａからの資産ソース１２Ａによって収集された現在の人工物をリコンサイルする。収集ロジック（capture logic）１１２が、資産テンプレート４７によって定義された資産スキーマにしたがってユーザ８と対話するようにユーザインタフェース１１０を動作させる。このようにして、資産収集モジュール２６は、資産テンプレート４７を変更することによって、資産収集ワークフローと、収集された資産の構造および内容とを変化させる柔軟性を、ユーザ８とライブラリ管理者４８（図２）とに提供する。
【００７９】
そのプロセス中に、収集ロジック１１２は、資産ソース１２Ａによって生じさせられた資産の人工物をモデル３７の探索可能な要素に対してマッピングする。特に、収集ロジック１１２は、生成された資産のメタデータと人工物データをモデル３７の要素に対してマッピングするために、規則エンジン１２０を使用する。資産生成プロセス中に、収集ロジック１１２は、ユーザ８またはライブラリ管理者４８（図２）がマッピングプロセスをカスタマイズするためにマッピング規則１１８を動的に定義および変更することを可能にする。一実施形態では、規則エンジン１２０は、ILOG Incorporated（Paris, France）からのＪＲｕｌｅｓTMのようなＪａｖａベースの規則エンジンを含んでもよい。他の実施形態が、例えばハードコード化された手続きロジックのような他の技術によってそのマッピングプロセスを実装してもよい。
【００８０】
図７は、資産収集モジュール２６の動作モードの一例をさらに示す流れ図である。最初に、収集ロジック１１２が、ステージングエリア５８内の資産が生成され終わっておりおよび編集のための準備が整っているということを示す、資産ソース１２Ａからの通知２８を受け取る（１２２）。これに応答して、収集ロジック１１２は資産ソース１２Ａから現在資産を検索し（１２４）、および、現在資産の人工物を増補またはリコンサイルする（１２６）。上述のように、資産テンプレート４７に基づいて、収集ロジック１１２は、ユーザ８からの要求された情報を収集するようにユーザインタフェース１１０を動作させることができる。あるいは、収集ロジック１１２は、そのプロセスを自動化するために１つまたは複数のスクリプトまたは他のコンポーネントを呼び出してもよい。
【００８１】
その次に、収集ロジック１１２はその資産をモデル３７の１つまたは複数のモデル要素に対してマッピングする（１２８）。例えば、収集ロジック１１２は、マッピング規則１１８に基づいてそのマッピングを行うために規則エンジン１２０を呼び出してもよい。さらに、収集ロジック１１２は、ユーザ８からの入力に基づいてモデル要素に対してその資産をマッピングするように、ユーザインタフェース１１０を動作させてもよい。このようにして、収集ロジック１１２は、生成された資産とモデル３７の要素との間の関連を構築する。資産は、例えば、インタフェース、コンポーネント、関数、ケースステップ、および、モデル３７内に記述されることが可能な他の要素に関連付けられてもよい。
【００８２】
その次に、収集ロジック１１２は、その生じさせられたマッピングに基づいた追加のメタデータと、ユーザ８または自動化されたスクリプトによって提供されている可能性があるあらゆる追加の人工物およびメタデータとを含むように、資産を更新する（１３０）。最後に、収集ロジック１１２は、ステージングエリア５８内への記憶のために、更新された資産を資産ソース１２Ａに送る（１３２）。
【００８３】
図８は、資産管理システム６から再利用可能な資産を検索する動作の一例を示す流れ図である。ユーザ８の１人からの入力に応答して、資産検索モジュール４２はモデル３７の１つまたは複数の要素を選択し（１４０）、および、モデルベースの探索仕様書４８を構築する（１４２）。例えば、そのユーザは１つまたは複数のモデル３７をグラフィックスの形で閲覧し、および、探索仕様書内に含むためのインタフェース、コンポーネント、関数、ケースステップ等のような要素を識別することができる。さらに、資産検索モジュール４２は、キーワードと、オペレーティングシステム、ラインセンスタイプ、または、言語を含む他の分類子とのような、探索仕様書４８内に含むための追加の探索基準を受け取ることもできる（１４４）。
【００８４】
その次に、資産検索モジュール４２は、探索仕様書４８にしたがって資産ライブラリ３６を探索するようにスコアリングエンジン（scoring engine）４４に指示する（１４６）。探索仕様書に基づいて、スコアリングエンジン４４は、例えば各々の資産が探索仕様書４８の基準をどれだけ適切に満たすかを判定する、スコアリングアルゴリズムを使用して、資産ライブラリ３６内の資産をランク付けする（１４８）。
【００８５】
資産検索モジュール４２は、スコアリングエンジン４４によって資産ライブラリ３６内で発見されたランク付けされた資産をユーザに表示し（１５０）、ユーザ入力に応答してその資産の１つまたは複数を選択する（１５２）。ユーザの要求に基づいて、資産検索モジュール４２は、その選択された資産を探索仕様書４８に付加する（１５４）。このようにして、ユーザは、ソフトウェアプロジェクトのために資産を選択的に保持することが可能である。一実施形態では、スコアリングエンジンが、ユーザによって付加された資産に基づいて探索仕様書４８を適応的に更新し、それによってスコアリングアルゴリズムを動的に精緻化する（１５６）。
【００８６】
ドメイン参照モデル
本発明の資産収集および識別ツールは、リソースがドメイン参照モデル（ＤＲＭ）に対してマッピングされることを可能にする。ＤＲＭは、Rational Software（Lexington, Massachusetts）から入手可能な Rational Rose のような製品として市販されているスタンドアロンのソフトウェアの形で構築されてもよく、または、スタンドアロンのツールの一部分として直接的に統合されてもよい。
【００８７】
ＤＲＭは、原子レベル（atomic level）のタスクまたはプロセス要素と、より高いのレベルのタスクまたはプロセス要素との両方を識別する。これらの要素が２つの異なるモデルの形で組織化されることが好ましい。第１のモデルは構造モデルであり、この構造モデルはコードコンポーネントのライブラリに組織化において類似している。構造モデル中の各々の参照コンポーネント（reference component）は、ドメインに対して適用可能な１つまたは複数の関数を含む。これらの関数は、予測された使用パターンまたは他の基準にしたがって関数を関連付けるインタフェースと呼ばれる中間グループ分けの形に組織化されてよい。しかし、構造モデルにおいて定義されるコンポーネントは実際には実行可能なコードとしては実装されず、単にそのドメイン内の採用可能な関数の参照モデルとしての役割を果たすにすぎない。
【００８８】
第２のモデルは一般的にビジネスプロセスモデルであり、このビジネスプロセスモデルは、そのドメイン内のより高いレベルの領域を識別して、この領域をプロセスとサブプロセスとに分割する。原子レベルでは、プロセスが「ユースケース」に分割され、これらのユースケースが特定のタスクの必要な諸ステップを詳述する。これらのステップは、構造モデル中のコンポーネントとインタフェースと関数とに関連付けられており、および、その個々のユースケースにおいて異なる組合せの形で反復されてよい。このモデルは必ずしもビジネス構造に関して組織化される必要はないが、任意の適切な局所的な組織化（例えば、ソフトウェアコンポーネントの実装および配備のための技術参照アーキテクチャ（technical reference architecture））を含んでもよい。
【００８９】
保険産業に関するＤＲＭのビジネスプロセスの側面が、図９−図１２に示されている。図９は、保険契約引き受け（underwriting）、説明（illustration）、請求／集金、当事者の変更（party change）、保険証券の変更（policy change）、保険金支払い、支払い請求、レメディエーション（remediation）、徴税、および、精算（accounting）のカテゴリに組織化された、生命保険プロセスの最上位レベルのカテゴリ分類を示す。この図に示されているように、レメディエーションが選択されており、顧客問合せの取り扱い、保険コミッショナー問合せの取り扱い、クレームのスコアリング、保険金支払いタイプの決定、および、保険金支払い処理を含む、レメディエーションプロセスのサブカテゴリが右に示されている。図１０に示されているように、保険金支払い処理が選択される場合には、追加のサブトピックである、保険金支払額なし、保険解約料なしの現金保険解約、支払い済み保険掛け金の返却、保険コストより少ない支払い済み保険掛け金の返却、および、保険証券取消し／当初の保険証券の復元。アイコン２１０によって示されているように、保険解約料なしの現金保険解約は、最下位のレベルのプロセスであり、これは関連したユースケースのセットを有する。クロスブランチング（cross-branching）が許可されてもよく、この場合には特定のサブプロセスが２つ以上のプロセスに現れる。
【００９０】
このユースケースのセットは、関連したサブプロセスを実行するためのアルゴリズムを構成する一連のステップを表す。保険解約料なしの現金保険解約に関して、ユースケースの関連したセットの一部分が図１１に図表の形で示されている。このユースケース図は、担当社員（保険金支払い担当者２１２）と個別のユースケース（アルゴリズムステップ）とを示すだろう。
【００９１】
図１２は、ユースケース「連邦用源泉徴収金額を決定する」に関連付けられている関数の構造形式の一部分を示す。参照コンポーネント「連邦用源泉徴収金額を決定する」２１４が、連邦用源泉徴収の決定に関係して（例えばサブルーチンによって）行われることが可能な１つのインタフェースの形にグループ化された５つの関数、すなわち、ComparePolicyRegTINtoSettlementTIN()、DetermineResidenceAddressCountry()、DetermineRequiredFWAmount()、CalculatePolicyOwnerWHAmount()、および、CompareElectedWHAmounttoRequiredWHAmount()を含む。さらに、同様に単一のインタフェースの形にグループ化された３つの Policy Record Function、すなわち、GetTIN()、GetResidenceAddress()、および、GetNRAStatus()が、このユースケースに関して必要とされる。これらの関数の幾つかはそのユースケースに固有であり、そのケースにおいてだけ現れるだろうが（例えば、DetermineRequiredFWAmount()）、一方、他の関数は汎用であり、幾つかのケースに現れる（例えば、GetResidenceAddress()）。さらに、予測された変数タイプ（例えば、１０進法金額およびストリング通貨識別子（string currency identifier）の両方を含む CurrencyValue タイプ）も、そのモデルにおいて指定されることが可能である。
【００９２】
資産収集ツール
以下では資産収集ツールと呼ばれる図２に示されている資産収集モジュール２６は、資産ライブラリの中に入れる（資産を「公開する」）ためのメタデータ文書を構築することによってリソースをカタログ化するために使用される。資産からの個々のデータタイプと関数とがドメイン参照モデル（または、複数のモデル）に対してマッピングされ、および、このマッピングが、新たなプロジェクトのために利用可能な資産を識別するために後で探索を行うためのメタデータとして保存される。本発明の好ましい実施形態では、マッピング品質に関するコメント、言語およびライセンス供与協定のような資産特徴の詳細、または、資産の構造図のような追加の情報が含まれてもよい。
【００９３】
本発明の一実施形態による資産収集プロセスが図１３−図２５に示されている。メニュー２４０がワークフロープロセスのステップを示す。ログ２４２が資産取得の連続記録を生成する。ログウィンドウが資産収集プロセス全体にわたって残ることが好ましいが、スペースを維持するために後続の図では省略されている。
【００９４】
最初に、ユーザは資産収集ツールを設定し、ログ中に保存されるべき詳細のレベルと、マッピングプロセスで使用されるべきＤＲＭのグループと、情報を記憶するためのスキーマとターゲットリポジトリとのような、その資産取得に関するオプションを設定する。
【００９５】
その次にユーザは定義段階に進む。ライブラリに追加されるべき資産が発見され、この資産に関する包括的な情報がオーバービューセクションに入力される。図１３は分類ステップを示す。データ入力ボックス２４４を使用して、ユーザは、資産に関する記述子についての値を全体として指定する。図示されている実施形態では、必要とされる記述子はアステリスクによって示されており、これらの記述子に関する値は、ユーザが資産の公開の手続きをとることが可能である前に入力されなければならない。図１３に示されている記述子は、資産に関して記憶されることが可能な情報のタイプの非限定的な例を表す。記述子の標準セットが、コンフィギュレーションステップにおけるスキーマセットの一部として提供されることが好ましく、この標準セットは、資産自体の記述とライセンス供与オプションのような関連情報の記述とを含む、資産を使用するかどうかを決定する人間に関連したあらゆる情報を含むことができる。さらに、ユーザは、この段階において１つまたは複数の追加の記述子を追加してもよい。これらの記述子は、他の資産に関するスキーマに追加されず、むしろ、データベースに追加される資産に関連したメタデータ内に含まれることだろう。
【００９６】
分類ステップが完了すると、ユーザは、資産をカタログ化するために使用されることになる資産モデルおよびコンポーネント図を指定する。資産モデルおよび／またはコンポーネント図がまだ存在しない場合には、図１４に示されているように、資産収集ツールがそれらを生成するオプションをユーザに与えることが好ましいだろう。
【００９７】
資産収集プロセスの一部として、（コンポーネントインタフェース図がすでに存在しない場合には）コンポーネントインタフェース図が資産に関して生成されることになる。図１５に示されているように、資産収集ツールが自動または手動でコンポーネント図を生成または更新することが可能であることと、資産収集ツールがこのどちらかの手続きのユーザの選択を可能にすることとが好ましいだろう。しかし、コンポーネント図を構築するための手動の手段だけまたは自動の手段だけを提供するシステムも、本発明の範囲に含まれる。以下の説明は、主として、コンポーネント図を生成する自動方法に関する。しかし、資産収集ツールに適合する（好ましくは統一モデリング言語規格に準拠する）コンポーネントインタフェース図を生成するいずれかの「手動の」方法が、本発明の範囲内に含まれていると見なされる。
【００９８】
コンポーネントインタフェース図を自動的に生成するために、図１６に示されているように、資産収集ツールは最初に資産の中の関数を識別し、および、好ましくは、どの関数が外部的であるかをユーザが指定することを可能にする。図示されている資産は、異なる通貨の管理のために使用される関数（例えば、交換レートを決定する関数）の集まりを含む。チェックボックス２４６が、例えば資産に関するＡＰＩの一部分である関数およびデータタイプのような、リソースを使用する開発者にとってアクセス可能であることが意図されている関数を識別するために使用される。ユーザが、例えば「詳細を表示する」ボタン２４８によって、関数に関する資産文書を閲覧することが可能であることが好ましい。
【００９９】
図１７に示されているように、その次に、資産収集ツールは、資産の外部関数によって使用されるあらゆるカスタムデータタイプを識別し、および、資産に関するＡＰＩの一部であるあらゆる追加のデータタイプをユーザが選択することを可能にする。（整数およびブール変数のような標準的な「基本」データタイプが資産収集プロセスのもっと後のステップで計算に入れられるが、この基本データタイプは、この段階では与えられないことが好ましい。）この場合も同様に、データタイプに関する詳細が閲覧されてもよく、および、構造モデルがボタン２５０によって調整されることが可能である。例えば、複合タイプ（compound type）を構成する基本データタイプの集まり（例えば、１０進法金額または通貨識別ストリングの両方を含む CurrencyValue タイプ）が閲覧されてもよい。
【０１００】
外部関数とデータタイプとに関するデータは、典型的には Rational Rose のような外部ツールを使用して、インタフェース図を生成するために使用される。通貨管理資産のための生成されたインタフェース図が図１８に示されている。この図は、CurrencyManagement コンポーネントによって与えられる選択された外部インタフェース２５２を示す。この関数に関する追加の情報が、図示されているグラフィカルユーザインタフェース（ＧＵＩ）を通してアクセスされてよい。ユーザは、この図を検討した後に、その図を「公開する」ためのオプションを与えられることが好ましい。本発明の一実施形態では、この図はＨＴＭＬ文書として保存され、このＨＴＭＬ文書は資産に関するメタデータに追加される。このＨＴＭＬ文書は、そのデータベース内で資産を発見する後続のユーザにとって使用可能であり、したがって、この後続のユーザは、自分の機械にインストールされている Rational Rose または類似の外部ツールを持たない場合にさえ、そのユーザが直面しているタスクに関するその資産の適合性をより適切に評価することができる。
【０１０１】
資産定義段階の最終ステップでは、図１９に示されているように、資産のアーキテクチャ上の仮定条件、具体例、保証、および、レビューのようなその資産の他の記述的要素（本明細書では資産の「人工物」と呼ばれている）が指定されてもよい。これらの人工物が、値によって指定されるか（この場合には、その人工物のコピーが、資産ライブラリの中にその資産の一部として後で公開するために作られる）、参照によって指定されるか（この場合には、ファイル参照のＵＲＬまたは他の形式が資産の一部として文書化される）、または、記述によって指定される（この場合には、テキストフィールドが人工物の（典型的には物理的な）場所を文書化する）ことが可能である。人工物は資産の機能的特徴と非機能的特徴の両方を含んでよい。非機能的特徴は、ＤＲＭに対してマッピングされている機能的特徴とは全く異なっている。好ましい実施形態では、機能的特徴と非機能的特徴の両方が探索可能である。
【０１０２】
資産定義段階が完了した後に、図２０に示されているように、資産に関するシノニムが定義されてよい。このシノニムは、資産関数と記述とに使用される語を該当の可能性が高い同義の探索語に対して関連付けることによって、探索の品質を改善するように設計されている。例えば、資産が保険料金の集まりを表すために内部的に「スケジュール」を慣例的に使用する場合には、保険料金を取り扱う関数の探索の最中に適切な関数が表示される確率を改善するために、「スケジュール」を「料金」に関連付けることが望ましいだろう。探索に関連してより詳細に後述されるように、本発明による１つのシステムが、探索品質を改善するためにシノニムのサブストリング置換を使用する。定義されたシノニムを考慮したより複雑な意味解析も、本発明の範囲内で使用されてよく、および、本発明の範囲内に含まれてよい。
【０１０３】
資産固有のシノニムの定義の後に、ユーザは、コンフィギュレーションステップ中に選択されたモデルのグループの中に含まれている１つまたは複数のＤＲＭに対してその資産をマッピングする。図２１に示されているように、参照モデルが選択される。図示されている実施形態では、１つの参照モデルだけが選択されるだろうが、しかし、そのモデルの複数の部分が同時に実行されてよい。他の実施形態では、複数のＤＲＭが同時にまたは逐次的に実行するように選択されてもよい。図２１では、通貨管理モデルが管理関数と交換関数の両方を含む。管理関数だけがその資産によって実行されるということをユーザが知っている場合には、そのユーザはマッピングのためにそのモデルのその部分だけを選択するだろう。管理関数と交換関数の両方が実行される場合、または、ユーザが、実行される関数の全範囲について確かでない場合には、そのモデルのすべての部分が使用されてもよい。
【０１０４】
図２２に示されているように、ユーザは、ＤＲＭに関して定義されているシノニム、または、企業全体として定義されているシノニムを閲覧することができる。図示されている実施形態では、ユーザはＤＲＭまたはライブラリ全体に対してシノニムを追加することができないが、特定のシノニムを使用可能または使用不能にするオプションを有する。この特徴は、複数の意味を持つ可能性がある語に関して特に有効である。例えば、「お金」が「通貨」のシノニムとして使用可能にされる。しかし、ユーザが、保険料金の集まりを意味するものとして資産が術語「スケジュール」を使用するということを知っている場合には、そのユーザは「スケジュール」に関して「時間」というシノニムを使用不能にすることを望むだろう。
【０１０５】
参照モデルとシノニムとが選択され終わると、資産はＤＲＭに対してマッピングされることが可能である。好ましい実施形態では、このマッピングはデータタイプで開始し、最も複雑でないものから最も複雑なものへと進みながら、関数を経て進む。より以前のマッピングからの情報を使用することによって、マッピングに関する自動提案（automatic suggestion）の品質が改善されることが可能である。
【０１０６】
図２３がデータタイプのマッピングにおける最初のステップを示す。左パネル２５４に示されているように、カスタムデータタイプ CurrencyValue が資産の中に存在する。CurrencyValue が選択されると、参照モデルが、既知のシノニムに関するサブストリング置換を使用して探索され、および、１つまたは複数の提案されたモデルデータタイプが右パネル２５６に表示される。最良の一致を選択するために、資産データタイプまたはモデルデータタイプが「詳細」ボタン２５８によってアクセスされることが可能である。
【０１０７】
図２４が、提案されたデータタイプが選択され終わった後のシステムを示す。４つの記述子が、マッピングの品質を記述するためにすでに与えられている。ブール型（Boolean type）の追加データと部分データとが、資産データタイプがモデルデータタイプよりも多い情報を含むかまたは少ない情報を含むかをユーザが指定することを可能にする。さらに、このマッチングの品質はアフィニティフィールド（affinity field）内に記憶されることが可能であり、および、注記フィールド（notes field）が、ユーザがマッピングのあらゆる特殊な特徴を記述することを可能にする。ユーザがこれらの記述子に関する値を入力し終わって「マップ」ボタン２６０をクリックすると、図２５に示されているように、CurrencyValue に関するマッピングが資産に関するメタデータに加えられる。その次に、このマッピングは、より後の（一般的には、より複雑な）データタイプに関する提案されたマッピングの品質と、関数に関する提案されたマッピングの品質とを向上させるために使用される。
【０１０８】
関数に関するマッピングプロセスは、カスタムデータタイプに関するマッピングプロセスと同じ仕方で進行する。ユーザは、データタイプをマッピングするために使用可能だった使用可能な外部関数の間のマッピングの品質を記述するための使用可能な同じ記述子セットを有する。最初にデータタイプをマッピングすることによって、資産収集ツールは、関数等価物（functional equivalencies）に関する該当の可能性が高い候補を選択するために、データタイプ等価物（datatype equivalencies）を使用することが可能である。例えば、CurrencyValue を引数として使用する Convert() と呼ばれる関数は、通貨交換パッケージにおいて、GregorianDate を使用するものよりも可能性が高い一致であり得る。関数はデータタイプと同様に多対多（many-to-many）の関係においてマッピングされ、および、追加データと部分データとコメントフィールドとが、１つまたは複数のマッピングの品質と特徴とにコメントを付けるために使用されることが可能である。
【０１０９】
コンポーネント図を作成するためにすべての関数とデータタイプとがＤＲＭに対してマッピングされ終わると、資産に関する累積されたメタデータが探索のためにデータベースにアップロードされることが可能である。幾つかの標準ファイル形式のどれもがデータベース項目のために使用されてよい。
【０１１０】
モデルベースの探索仕様書
資産がライブラリデータベース内で分類され終われると、探索エンジンが、資産がアクセスされることを可能にするために提供されなければならない。標準的な探索エンジンが上述のデータベース上で使用されてよいが、ライブラリ内に記憶されている特有のデータを最大限に利用するように設計された専用エンジンを使用することが好ましい。
【０１１１】
本発明の一実施形態では、探索エンジンは、上述の通りのドメイン参照モデルのプロセスベースの側面または構造的側面を使用する探索仕様書の構築を可能にするように設計されている。図９−図１２と図２６−図３０は、探索仕様書の構築と、探索の実行と、結果の解釈とのプロセスを示す。
【０１１２】
ソフトウェア開発に精通していないユーザが、それにもかかわらず、図９−図１２に示されているドメイン参照モデルのビジネスプロセスベースの側面をナビゲートすることによって、特定の必要性を解決するためのツールを生成するために有用な資産を識別することが可能である。上述のように図９と図１０とを経由して進行することによって、そのユーザは、自分がユースケース図に到達するまでＤＲＭ内からの関数を選択する。図１１に示されているように、ユースケース図を構成しているユースケースが閲覧されることが可能である。図１２に示されているように、この図の中のいずれのユースケースに関しても、ユーザはＤＲＭの構造部分からの関連の関数を閲覧することができる。その次に、ユーザは、探索仕様書に追加するためにそのリストから所望の関数を選択する。ユーザが、ユースケースに関連付けられている関数のすべて、または、個々のユースケースのステップに関連付けられている関数の選択されたブロックを自動的に選択するためのオプションを与えられることが可能であることが好ましい。ユーザが従来の技術仕様書の開発プロセスに精通していない場合でさえ、グラフィカルユーザインタフェースと、ＤＲＭのプロセス側面全体を通しての掘り下げ（drill-down）とが、必要とされる機能性のすべてをそのユーザが識別することを容易にする。本発明の好ましい実施形態では、ライブラリデータベースも、ユーザが問合せの結果に基づいて任意の時点でＤＲＭを選択的に入力することを可能にするＤＲＭ探索機構（例えば、術語に関連付けられたＤＲＭ要素に関するキーワード探索）を提供する。
【０１１３】
このようにして構築された探索仕様書が図２６に示されている。２つの関数２８０、すなわち、PolicyRecordManagement 関数からの GetNRAStatus と、CurrencyManagement 関数からの addExchangeRate とが、図１２に示されている候補の中から識別されている。さらに、ユーザは、どれだけ近い一致が必要とされているかに関して汎用パラメータ２８２と関数固有パラメータ２８４とを指定することが可能である。
【０１１４】
図２７に示されているように、キーワード探索も探索エンジンによって利用可能である。この探索では特に、探索エンジンが、初期ライブラリコンフィギュレーション中と資産収集中とに定義された資産に固有のシノニムと、ＤＲＭに固有のシノニムと、企業全体のシノニムとを使用することが好ましい。したがって、ユーザが「通貨」を探索するときには、そのシステムは、「通貨」を含む関数およびデータタイプを伴う資産と、「お金」を含む関数およびデータタイプを伴う資産との両方を返す。
【０１１５】
どちらのタイプの探索においても、ユーザが、オペレーティングシステム、ライセンスタイプ、または、言語のような非機能的要件を指定できることが好ましい。これらの要件は、個々の関数が重み付けられることが可能な仕方と同じ仕方で特定の重みが与えられることが可能であることが好ましい。
【０１１６】
図２６に示されている探索仕様書の結果が図２８に示されている。３つの潜在的に有用な資産が識別されている。これらの資産は、その資産が探索基準にどれだけ近く適合するかにしたがってランク付けされている。ユーザは、さらに別の調査のために返された資産の一部または全部をチェックボックス２８５によって選択することができる。その次に、選択された資産は、図２９に示されているように、探索仕様書に付加される。探索エンジンが、より後の探索のためのそのスコアリングアルゴリズムを精緻化するために、どの資産が付加されるかを観察することによって学習することが好ましい。探索仕様書に付加されたリソースは、後続の類似の探索において優先的に返されることになる。
【０１１７】
図３０に示されているように、資産が探索仕様書に付加される前または付加され終わった後に、ユーザはその資産をより詳細に調査することが可能である。「資産の詳細」ウィンドウが、資産のレビューおよびサポート事項のような資産収集プロセス中に入力されたあらゆる記述子をユーザが閲覧することを可能にする。ユーザは、自分が入手することを望む資産を選択するために、その詳細化されたデータを使用することが可能である。
【０１１８】
本発明の特徴の１つが、ビジネスプロセスには精通しているが正規の技術仕様書には精通していないユーザがａを構築することが可能であるということである。
【０１１９】
本発明の特徴の１つが、ビジネスプロセスには精通しているが正規の技術仕様書には精通していないユーザが、探索仕様書を構築し、および、この探索仕様書に有用な資産を付加することが可能であるということである。その探索仕様書は、容易に組み合わせて使用されることが可能な資産を識別するために、ビジネスプロセスにはそれほど精通していないがソフトウェア開発には精通している他の人間によって使用されることが可能である。こうしたコラボレーションを可能にすることによって、本発明は、企業内のソフトウェア資産のより効果的な活用を可能にする。
【０１２０】
探索仕様書が潜在的に有用な資産の発見を結果的にもたらさない場合には、ユーザが新たな資産の開発のための初期要件書としてその仕様書が公開されることを指定することが可能であることが好ましい。部分的な一致が発見される場合には、そのユーザはその探索仕様書の不一致部分を要件書として同様に公開できることが好ましい。ユーザは、さらに、後でライブラリ内へ公開される資産のどれもがその仕様書に十分に適合する場合にそのユーザが知らされるように、探索仕様書にマークを付けることを選択することもできる。
【０１２１】
資産管理
本発明の好ましい実施形態では、このシステムは、さらに、ソフトウェア資産取得プロセスを容易化する。取得ワークフローが図３１に示されている。探索仕様書を使用して１つまたは複数の適切な資産が識別され終わると、ユーザは取得要求を送信することができる３０２。取得要求は個々の開発プロジェクトに関連付けられる。
【０１２２】
このシステムは、最初に、資産がプロジェクト３０４に関連付けられているかどうかを判定する。そうである場合には、システムは、その資産が登録されているかどうかを調べるために検査を行う３０６。その資産がそのプロジェクトに関連付けられておりかつ登録されている場合には、その資産が開発における使用にすでに利用可能であり、および、その資産のステータスがユーザに対して表示される３０８。その資産がプロジェクトに関連付けられているが登録はされていない場合には、その資産はすでにプロジェクト管理者の考慮対象になっているか、または、すでに以前に拒否されていることなるだろう。そのシステムがその資産が拒否されてはいないと判定する場合には３１０、そのシステムはその資産の「待ち状態」ステータスをユーザに表示する３０８。その資産が以前に拒否されている場合には、拒否の再考を要求するための理由を与えること３１２、または、その要求を取り消すことがユーザに対して要求される。
【０１２３】
その資産がプロジェクトにまだ関連付けられていない場合、または、ユーザが拒否の再考を要求している場合には、資産ステータスが「プロジェクト管理者の承認の待機」に設定され３１４、プロジェクト管理者はその新たな取得要求を通知される３１６。
【０１２４】
本発明の一実施形態による資産取得要求の概要が図３２に示されている。個々のシステムの必要に応じて、このビューは、プロジェクト管理者と他の指定されたユーザとにだけ使用可能であってもよく、特定のプロジェクトに関する全ユーザに使用可能であってもよく、または、そのシステム内の全ユーザに使用可能であってもよい。
【０１２５】
各々の待ち状態の要求が、要求者３１８と、プロジェクト３２０と、名称３２２とによってリストされることが好ましい。バージョン番号３２４と、説明３２６と、注記３２８のような追加の情報も含まれてよい。リンク３３０を選択することによって、管理者があらゆる要求の詳細を閲覧できる。
【０１２６】
図３３は、資産をすでに要求したプロジェクトに関する少なくともプロジェクト管理者によって閲覧可能な、資産に関する典型的な要求詳細画面を示す。その資産に関するすべての要求が、要求者によってリストされた要求に関する理由と共に、単一の画面上に示されることが好ましい。その要求画面を閲覧するユーザがソフトウェアを取得する権限を与えられている場合には、そのユーザは、図３４に示されているように、資産取得画面を介してライセンスデータと購入データとを入力できる。（ソフトウェアを取得する権限が与えられているユーザは、探索結果から資産取得画面に直接アクセスすることが可能であるか、または、取得されるべき資産を手動で識別することによって、資産取得画面に直接アクセスすることが可能である。）
【０１２７】
本発明の幾つかの実施形態では、その取得画面は、ユーザが購入注文または内部開発資産の要求を送ること、または、ユーザが別の方法で資産を正式に取得することを可能にするだろう。あるいは、その取得画面は、図３４に示されている画面の場合のように、他のチャンネルによるリソースの取得を単純に記念することができる。その画面では、要求者が任意のソフトウェアライセンスキーを記録し、ハードウェアキーの場所を記述し、および、ソフトウェア購入の条件に関するあらゆる必要な注記を行ってもよい。ライセンスが特定の数のインスタンシエーション（instantiation）またはワークステーションのためのものである場合には、ライセンスの条件に違反することを避けるためにインスタンシエーションまたはワークステーションをプロジェクトに割り当てるためのメカニズムが提供されてもよい。内部で開発された資産または取得された資産に関しては、資産の使用のための部門別のクロスチャージ（cross-charge）があってもよい。このクロスチャージは、本発明の好ましい実施形態において追跡されてもよい。
【０１２８】
さらに、このシステムは、異なるプロジェクトによる個々の資産の利用を追跡するための手段を含むことが好ましい。好ましい実施形態では、この情報は、プリビルトレポート（prebuilt report）の形式でライブラリによって直接閲覧されてもよく、または、さらに別の処理のためにエクスポートされてもよい。プリビルトレポートの一例として、図３５が、特定のユーザまたは部門によって作成された公開または未公開の資産の概要を示す。公開された資産の場合には、リンク３３４が、資産を使用するために現在登録されているプロジェクトを公開者（publisher）または別のユーザが審査することを可能にする。適切なパーミッションを持つユーザの場合には、部門別クロスチャージとその類似物とが変更されてもよい。
【０１２９】
本発明の様々な実施形態が説明されてきた。これらの実施形態と他の実施形態とが次の特許請求項の範囲内に含まれている。
【図面の簡単な説明】
【０１３０】
【図１】企業内での資産の再利用を容易化するシステムの一例を概略的に示すブロック図である。
【図２】資産管理システムの一例としての実施形態を示すブロック図である。
【図３】資産ソースの一例としての実施形態を示すブロック図である。
【図４】企業内での資産の再利用を容易化するための資産管理システムと資産ソースとの間の相互作用をさらに詳細に示す流れ図である。
【図５】資産ソース階層を示すブロック図である。
【図６】資産管理システムの資産収集モジュールの一実施形態をさらに詳細に示すブロック図である。
【図７】資産収集モジュールの動作モードの一例をさらに示す流れ図である。
【図８】資産管理システムからの再利用可能な資産の検索の一例を示す流れ図である。
【図９】保険ドメイン参照モデル（ＤＲＭ）の最上位レベル図である。
【図１０】図９のＤＲＭのレメディエーションカテゴリの拡張である。
【図１１】保険ＤＲＭからのユースケース図の一部分を示す。
【図１２】図１１のユースケースのステップの一部分として識別される関数を示す。
【図１３】本発明の一実施形態による分類を示すウィンドウである。
【図１４】モデル収集を示すウィンドウである。
【図１５】図オプション選択を示すウィンドウである。
【図１６】資産収集インタフェースを示すウィンドウである。
【図１７】外部データタイプの識別を示すウィンドウである。
【図１８】通貨管理資産のためのインタフェース図を示すウィンドウである。
【図１９】資産に関する人工物の入力を示すウィンドウである。
【図２０】資産シノニムの入力を示すウィンドウである。
【図２１】参照モデルの選択を示すウィンドウである。
【図２２】ＤＲＭとライブラリに関するシノニムを示すウィンドウである。
【図２３】データタイプマッピングを示すウィンドウである。
【図２４】マッピング品質の記述子の入力を示すウィンドウである。
【図２５】完了したデータタイプマッピングを示すウィンドウである。
【図２６】ＤＲＭ関数を使用する構築された探索仕様書を示すウィンドウである。
【図２７】キーワードを使用する構築された探索仕様書を示すウィンドウである。
【図２８】探索結果を示すウィンドウである。
【図２９】探索仕様書に対するリソースの付加を示すウィンドウである。
【図３０】付加された資産の詳細ビューを示すウィンドウである。
【図３１】取得のために資産を送信するプロセスを示す流れ図である。
【図３２】待ち状態の取得要求を示すウィンドウである。
【図３３】待ち状態の資産に関する要求の詳細を示すウィンドウである。
【図３４】資産取得画面である。
【図３５】資産使用サマリを示すウィンドウである。
【図１】
2004535021.tif 000007
【図２】
2004535021.tif 000008
【図３】
2004535021.tif 000009
【図４】
2004535021.tif 000010
【図５】
2004535021.tif 000011
【図６】
2004535021.tif 000012
【図７】
2004535021.tif 000013
【図８】
2004535021.tif 000014
【図３１】
2004535021.tif 000015
【国際公開パンフレット】
2004535021.tif 000016
2004535021.tif 000017
2004535021.tif 000018
2004535021.tif 000019
2004535021.tif 000020
2004535021.tif 000021
2004535021.tif 000022
2004535021.tif 000023
2004535021.tif 000024
2004535021.tif 000025
2004535021.tif 000026
2004535021.tif 000027
2004535021.tif 000028
2004535021.tif 000029
2004535021.tif 000030
2004535021.tif 000031
2004535021.tif 000032
2004535021.tif 000033
2004535021.tif 000034
2004535021.tif 000035
2004535021.tif 000036
2004535021.tif 000037
2004535021.tif 000038
2004535021.tif 000039
2004535021.tif 000040
2004535021.tif 000041
2004535021.tif 000042
2004535021.tif 000043
2004535021.tif 000044
2004535021.tif 000045
2004535021.tif 000046
2004535021.tif 000047
2004535021.tif 000048
2004535021.tif 000049
2004535021.tif 000050
2004535021.tif 000051
2004535021.tif 000052
2004535021.tif 000053
2004535021.tif 000054
2004535021.tif 000055
2004535021.tif 000056
2004535021.tif 000057
2004535021.tif 000058
2004535021.tif 000059
2004535021.tif 000060
2004535021.tif 000061
2004535021.tif 000062
2004535021.tif 000063
2004535021.tif 000064
2004535021.tif 000065
2004535021.tif 000066
2004535021.tif 000067
2004535021.tif 000068
2004535021.tif 000069
2004535021.tif 000070
2004535021.tif 000071
2004535021.tif 000072
2004535021.tif 000073
2004535021.tif 000074
2004535021.tif 000075
2004535021.tif 000076
2004535021.tif 000077
2004535021.tif 000078
2004535021.tif 000079
2004535021.tif 000080
2004535021.tif 000081
2004535021.tif 000082
2004535021.tif 000083
2004535021.tif 000084
2004535021.tif 000085
2004535021.tif 000086
2004535021.tif 000087
2004535021.tif 000088
2004535021.tif 000089
2004535021.tif 000090
2004535021.tif 000091
2004535021.tif 000092
2004535021.tif 000093
【国際調査報告】
2004535021.tif 000094
2004535021.tif 000095
2004535021.tif 000096