(57)【要約】  メタモデルのインスタンスに基づいてソフトウェアファクトリを提供することよってソフトウェア開発を容易にするシステムが開示される。当該メタモデルは１つ以上のビューポイントの定義を支援し、あるビューポイントは１つ以上のワークプロダクトタイプを含み、１つ以上のタスクのためのテンプレートは当該ビューポイント及びワークプロダクトタイプのインスタンスの作成及び修正を支援し、ワークストリームのためのテンプレートは１つ以上のタスクとそれらの間のリレーションシップを含む。当該メタモデルは、ビューポイント間及び／又はビューポイントとワークプロダクトタイプとの間のリレーションシップ、並びに、リレーションシップ（１つ又は複数）に亘って実行され得るオペレーション、の定義を支援する。加えて、特定のタスクに、もしあれば利用可能なアセットが当該メタモデルよって支援されるようにさらに定義され得る。
2011501297.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータで実現されるソフトウェアファクトリ仕様化システム（１００）であって、
ファクトリスキーマ（１３０）を記述しているメタモデル（１１０）であり、前記ファクトリスキーマは複数のビューポイントを含み、１つのビューポイントは１つ以上のワークプロダクトタイプを含み、各ビューポイント又は各ワークプロダクトタイプは１つ以上の関連付けられたワークストリームテンプレートを有し、１つのワークストリームテンプレートはタスクテンプレートとタスクテンプレート間のリレーションシップとを含み、各タスクテンプレートは前記ビューポイント及びワークプロダクトタイプのインスタンスの作成及び修正を支援するタスクを記述し、前記ファクトリスキーマは、ビューポイント間のリレーションシップ及び特定のビューポイントと特定のワークプロダクトタイプとの間のリレーションシップ、ビューポイント間のリレーションシップに亘って実行され得るオペレーション、並びに、各タスクテンプレートに利用可能な零個、１つ又はそれ以上のアセットをさらに含む、メタモデル（１１０）と、
前記メタモデルと対話処理して前記ファクトリスキーマを指定するユーザインタフェースコンポーネント（１２０）と、
を含むことを特徴とするシステム。
【請求項２】
前記ユーザインタフェースコンポーネントは、対話型開発環境を含むことを特徴とする請求項１に記載のシステム。
【請求項３】
前記アセットの少なくとも１つは、再使用可能なソフトウェア資産であることを特徴とする請求項１に記載のシステム。
【請求項４】
前記ファクトリスキーマは、特定のタスクよって消費されるワークプロダクトのタイプの定義をさらに含むことを特徴とする請求項１に記載のシステム。
【請求項５】
前記ファクトリスキーマは、特定のタスクよって作成されるべきワークプロダクトのタイプの定義をさらに含むことを特徴とする請求項１に記載のシステム。
【請求項６】
前記ファクトリスキーマは、設計者に写像する特定のビューポイントを含むことを特徴とする請求項１に記載のシステム。
【請求項７】
前記ファクトリスキーマは、ソフトウェアファクトリシステムのためのスキーマであることを特徴とする請求項１に記載のシステム。
【請求項８】
各タスクテンプレートは、カスタムプロセスを含むワークストリームを記述しているワークストリームテンプレートの部分であることを特徴とする請求項１に記載のシステム。
【請求項９】
前記ファクトリスキーマは、各タスクテンプレートに利用可能なアセットの記述を含むことを特徴とする請求項１に記載のシステム。
【請求項１０】
コンピュータで実現されるソフトウェアファクトリ仕様化システム（４００）であって、
複数のビューポイントを含むファクトリスキーマ（１３０）であり、１つのビューポイントは１つ以上のワークプロダクトタイプを含み、各ビューポイント又は各ワークプロダクトタイプは１つ以上の関連付けられたワークストリームテンプレートを有し、１つのワークストリームテンプレートはタスクテンプレートとタスクテンプレート間のリレーションシップとを含み、各タスクテンプレートは前記ビューポイント及びワークプロダクトタイプのインスタンスの作成及び修正を支援するタスクを記述し、前記ファクトリスキーマは、ビューポイント間及び特定のビューポイントと特定のワークプロダクトタイプとのリレーションシップ、ビューポイント間のリレーションシップに亘って実行され得るオペレーション、並びに、各タスクテンプレートに利用可能な零個、１つ又はそれ以上のアセットをさらに定義している、ファクトリスキーマ（１３０）と、
前記ファクトリスキーマと対話処理してプロダクト（４２０）を作成するユーザインタフェースコンポーネント（４１０）と、
を含むことを特徴とするシステム。
【請求項１１】
前記スキーマと対話処理することは、少なくとも２つの特定のビューポイント間の特定のリレーションシップを検索及び使用することであることを特徴とする請求項１０に記載のシステム。
【請求項１２】
前記スキーマと対話処理することは、ビューポイント間の特定のリレーションシップに関連付けられたオペレーションを検索及び使用することであることを特徴とする請求項１０に記載のシステム。
【請求項１３】
前記スキーマと対話処理することは、選択されたビューポイント又はワークプロダクトインスタンスに関連付けられたタスク及び／又はワークストリームテンプレートから生成された１つ以上のタスクにアクセスすることと、選択されたタスクに関連付けられたアセットにアクセスすることと、のうちの少なくとも１つを含むことを特徴とする請求項１０に記載のシステム。
【請求項１４】
前記ユーザインタフェースコンポーネントは、対話型開発環境を含むことを特徴とする請求項１０に記載のシステム。
【請求項１５】
前記ユーザインタフェースコンポーネントは、ビューポイントと、ビューと、ワークプロダクトと、選択されたビュー又はワークプロダクトに関連付けられたワークストリーム又はタスクと、のうちの少なくとも１つを表示するユーザインタフェースを含むことを特徴とする請求項１０に記載のシステム。
【請求項１６】
前記ユーザインタフェースは、選択されたタスクに関連付けられた零個、１つ又はそれ以上のアセットをさらに表示することを特徴とする請求項１５に記載のシステム。
【請求項１７】
コンピュータが実行する、コンピュータソフトウェアファクトリを用いる方法であって、
ファクトリスキーマに少なくとも部分的に基づいてプロジェクトを作成するステップ（９００）であり、前記ファクトリスキーマは複数のビューポイントを含み、１つのビューポイントは１つ以上のワークプロダクトタイプを含み、各ビューポイント又は各ワークプロダクトタイプは１つ以上の関連付けられたワークストリームテンプレートを有し、１つのワークストリームテンプレートはタスクテンプレートとタスクテンプレート間のリレーションシップとを含み、各タスクテンプレートは前記ビューポイント及びワークプロダクトタイプのインスタンスの作成及び修正を支援するタスクを記述し、前記ファクトリスキーマは、ビューポイント間及び特定のビューポイントと特定のワークプロダクトタイプとの間のリレーションシップ、ビューポイント間のリレーションシップに亘って実行され得るオペレーション、並びに、各タスクテンプレートに利用可能な零個、１つ又はそれ以上のアセットをさらに定義する、ステップ（９００）と、
複数のビューポイント、前記複数のビューポイントのインスタンス、並びに、前記複数のビューポイントのインスタンスによって内蔵されているワークプロダクトを表示するステップ（９０２）と、
選択されたビュー又はワークプロダクトに関連付けられた少なくとも１つのタスクを表示するステップ（９０４）と、
を含むことを特徴とする方法。
【請求項１８】
選択されたタスクに関連付けられた少なくとも１つのアセットを表示するステップをさらに含むことを特徴とする請求項１７に記載の方法。
【請求項１９】
当該選択されたアセットを用いて、選択されたタスクを実行するステップをさらに含むことを特徴とする請求項１８に記載の方法。
【請求項２０】
当該選択されたタスクのうちの１つ以上を実行した結果であるプロダクトを記憶するステップをさらに含むことを特徴とする請求項１９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアファクトリ仕様化及び実行モデルに関する。
【背景技術】
【０００２】
ソフトウェア開発チームは、現実世界の問題へのソフトウェアソリーションを開発するのに分野特有の知識を駆使する。この分野特有の知識には、例えば、ビジネスプロセス、機能上又は非機能上の要求仕様、ビジネス及び技術的なアーキテクチャ、検証された技術上の選択及び実施上の決定、再使用可能なパターン及びガイドライン、規制法令の遵守、配備実践等に関する情報を含むはずである。
【０００３】
ソフトウェアの開発は、通常、受容可能な品質にて達成される。例えば、受容可能な品質としては、機能的要求仕様に加えて、産業規格、製造上の実践、組織的方針及び／又は政府の規制を含むはずである。確立された方法及びパターンの実施を開発目標がさらに含むことによって、他者が当該開発されたソフトウェアを理解し維持し得るようになる。付加的な開発目標としては、品質属性、例えば、使用容易性、信頼性、性能及び／又は資源消費の受容可能レベルでの拡縮可能性を含むはずである。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来、開発チームは一般的なツール及びプラットフォームを用いてソフトウェアを開発していた。しかし、これら一般的なツール及びプラットフォームを用いることは、要求機能を提供するソリューションを受容可能な品質で作成するのが困難であったことから、開発チームにとってはフラストレーションを与えるものと検証されている。さらに、当該一般的なツール及びプラットフォームを用いても、開発チームが予算及び予定を確実に予測することはできなかった。例えば、一般的なツール及びプラットフォームの使用は、予算オーバやオンタイムに開発されないソフトウェアを招いていた。その上、当該開発されたソフトウェアは、乏しい品質及び／又は乏しい一貫性を有し、最適な追跡可能性からは程遠く、著しい増加時間を必要とするか及び／又は高い維持費を招いていた。
【課題を解決するための手段】
【０００５】
以降は、本明細書において説明される新規な実施形態の基本的理解を提供するために簡略化された概要を提示する。本概要は、広範な概観ではなく、鍵となる／決定的な要素を識別するか又はその範囲を詳細に描写することは意図されない。その唯一の目的は、後述される詳細な説明の前置きとして単純化された形で概念を提示することである。
【０００６】
当該開示されたシステム及び方法は、「ファクトリスキーマ」又は単に「スキーマ」と称されるメタモデル（すなわち、モデル）のインスタンスに基づいてソフトウェアファクトリを提供することよって、ソフトウェア開発を容易にする。当該モデルは、１つ以上のビューポイント(viewpoint)すなわち視点（perspective）を定義し、各ビューポイントは特定セットの関与（concern）を隔離する当該ソフトウェアのビューを定義し、典型的にはかかるビューの範囲、もしあれば当該ソフトウェアを表現するのに用いられる表記法、並びにもしあれば当該ソフトウェアを作成及び修正するのに用いられるエディタを定義する。当該モデルは、もしあれば各ビューポイントから作成されるワークプロダクトのタイプ、並びに、もしあればビュー又はワークプロダクトの各タイプを作成(create)又は維持するのに実行されるタスクのためのテンプレートをさらに定義してもよい。当該モデルは、ビューポイント間のリレーションシップのみならず、ビューポイントとワークプロダクトタイプとの間のリレーションシップ、並びにリレーションシップ（１つ又は複数）に亘って実行され得るオペレーションをさらに定義してもよい。加えて、当該モデルは、もしあれば当該タスクテンプレート（１つ又は複数）からインスタンス化される何らかのタスクの実行を支援するのに利用可能なアセットを記述してもよい。
【０００７】
１つの実施形態において、コンピュータで実現されるソフトウェアファクトリ仕様化システムが提供される。当該ソフトウェアファクトリ仕様化システムは、例えばファクトリ開発者よって用いられて、ファクトリスキーマを指定し得る。まとめて説明されたファクトリスキーマ及びエディタ、タスクテンプレート及びアセットは、「ソフトウェアファクトリ」又は単に「ファクトリ」を形成し、かかるファクトリは分野特有の知識を取り込むことができ、例えば、ビジネスプロセス、要求仕様、アーキテクチャ、技術的決定、実装、パターン及びガイドライン、規制法令遵守、開発制約等の知識を取り込むことができる。一旦実装されると、ソフトウェアファクトリが用いられて、例えば、汎用的な対話型開発環境（ＩＤＥ）が仕立てられて、特定の種類のソフトウェアソリューションが開発され得る。
【０００８】
前述及び関係する目標を達成するために、例示的な特定の態様が本明細書において引き続く説明及び添付の図面に関連して説明される。しかし、これらの態様は、本明細書で説明される原理が用いられ得る多様な形態のうちの僅かのものを示すに過ぎない。他の優位且つ新規な特徴が、当該図面と結びつけて考慮されるとき、引き続く詳細な説明から明らかになる。
【図面の簡単な説明】
【０００９】
【図１】コンピュータで実現されるソフトウェアファクトリ仕様化システムを示すブロック図である。
【図２】例示的なファクトリスキーマを示すブロック図である。
【図３】ファクトリスキーマのための例示的なメタモデルを示すブロック図である。
【図４】コンピュータで実現されるソフトウェアファクトリシステムを示すブロック図である。
【図５】対話型開発環境の例示的なユーザインタフェースを示すブロック図である。
【図６】対話型開発環境の例示的な他のユーザインタフェースを示すブロック図である。
【図７】対話型開発環境の例示的な他のユーザインタフェースを示すブロック図である。
【図８】ソフトウェアファクトリを指定する方法を示すフローチャートである。
【図９】ソフトウェアファクトリを用いる方法を示すフローチャートである。
【図１０】当該開示されたアーキテクチャの実行を動作可能とするコンピュータシステムを示すブロック図である。
【図１１】例示的なコンピュータ環境を示すブロック図である。
【発明を実施するための形態】
【００１０】
当該開示されたシステム及び方法は、「ファクトリスキーマ」又は単に「スキーマ」と称されるメタモデル（すなわちモデル）のインスタンスに基づいてソフトウェアファクトリを提供することよって、ソフトウェア開発を容易にする。当該ファクトリスキーマは、現実世界の問題へのソフトウェアソリューションの構築を容易にするために分野特有の知識を取り込み、かかるソリューションを構築するためにソフトウェア開発チームよって実行され得るタスクを定義し、当該タスクを実行するときに用いられ得るエディタ及びアセットを提供する。
【００１１】
当該モデルは、１つ以上のビューポイントすなわち視点を定義し、各ビューポイントは特定セットの関与を隔離する当該ソフトウェアのビューを定義し、典型的にはかかるビューの範囲、もしあれば当該ソフトウェアを表現するのに用いられる表記法、並びにもしあれば当該ソフトウェアを作成及び修正するのに用いられるエディタを定義する。当該モデルは、もしあれば各ビューポイントから作成されるワークプロダクトのタイプ、並びに、もしあればビュー又はワークプロダクトの各タイプを作成又は維持するのに実行されるタスクのためのテンプレートをさらに定義してもよい。当該モデルは、ビューポイント間のリレーションシップのみならず、ビューポイントとワークプロダクトタイプとの間のリレーションシップ、並びにリレーションシップ（１つ又は複数）に亘って実行され得るオペレーションをさらに定義してもよい。加えて、当該モデルは、もしあれば当該タスクテンプレート（１つ又は複数）からインスタンス化される何らかのタスクの実行を支援するのに利用可能なアセットを記述してもよい。
【００１２】
かかるモデルは、例えばファクトリ開発者よって定義され得る。１つの実施形態において、当該モデル及び当該エディタ、定義されたテンプレート及びアセットは、開発チームよって対話型開発環境においてまとめて用いられて、特定のタイプのプロダクト（例えば、クライアントアプリケーション、モバイルクライアント、ウェブサービス、その他）を作成することができる。
【００１３】
ここで図面を参照すると、全体を通して同様の参照番号は同様の要素を参照するために用いられる。引き続く説明において、幾つかの具体的な詳細は完全な理解を提供するために記載される。しかし、当該新規な実施形態がこれら具体的な詳細無しに実践され得ることは明らかであろう。他の例において、周知の構造及び装置がそれらの説明を容易にするためにブロック図の形で示されている。
【００１４】
図を初めに参照すると、図１はコンピュータで実現されるソフトウェアファクトリ仕様化システム１００を示している。システム１００は、メタモデル１１０と、ユーザインタフェースコンポーネント１２０と、ファクトリスキーマ１３０（すなわち、メタモデル１１０のインスタンス）とを含む。ユーザインタフェースコンポーネント１２０を介して、ユーザ（例えば、ファクトリ開発者）は、メタモデル１１０と対話処理して、特定のソフトウェアファクトリのためのファクトリスキーマ１３０を定義する。１つの実施形態において、当該ユーザインタフェースコンポーネント１２０は対話型開発環境を含む。
【００１５】
ファクトリスキーマ１３０は、対話型開発環境において、当該エディタ、記述されたタスクテンプレート及びアセットと一緒に用いられて、プロダクト（例えば、クライアントアプリケーション、モバイルクライアント、ウェブサービス、その他）の仕様化、開発、配備及び保守を支援する。ファクトリスキーマ１３０と、まとめて説明されたエディタ、タスクテンプレート及びアセットとは、「ソフトウェアファクトリ」すなわち単に「ファクトリ」を形成し、かかる「ファクトリ」は、ソフトウェア資産の組織的な再利用を可能とすることによってソフトウェア開発チームの生産性を改善するのに用いられることができ、当該ソフトウェア資産は、良く定義された変容可能な特性(point)を活用することによって、特定タイプのソフトウェアシステムの広範囲な変容物を作成するのに適用され得る。
【００１６】
ソフトウェア資産の再利用を促進するために設計された従来のシステムは僅かに成功しているだけだった。ワークプロダクトが開発されるアーキテクチャ上のコンテキストを定義するファクトリスキーマ１３０の構造を指定することよって、各ワークプロダクトを開発するのに用いられるプロセス（１つ又は複数）を同一のアーキテクチャ上のコンテキストに置くことよって、並びに、例えば対話型開発環境内で当該プロセス（１つ又は複数）の制定を支援するのに適用され得るアセットを提供することよって、メタモデル１１０はソフトウェア資産のより効果的な再利用を容易にする。
【００１７】
図２に着目すると、メタモデル１１０は、１セットのビューポイント２１０のファクトリスキーマ１３０内への仕様化を支援する。例えば、ビューポイント２１０は、開発中のソフトウェアの特定の態様と一致することができ、特定の役割（role:ロール）における利害関係人の関与を表すと共に隔離する。
【００１８】
当該メタモデル１１０は、ビューポイント２１０間及びビューポイント２１０とワークプロダクトタイプ２６０との間のリレーションシップ２２０と、リレーションシップ２２０に亘って実行され得るオペレーションと、からなるファクトリスキーマ１３０内への仕様化を支援する。その上、当該メタモデル１１０は、各ビューポイント２１０毎のワークストリーム（例えばカスタムプロセス（１つ又は複数））のためのテンプレート２７０を含むタスクを記述するタスクテンプレート２４０のセットと、タスクテンプレート２４０（すなわち各タスク）の各インスタンスの実行を加速するのに利用可能なアセット２５０のセット（例えば再使用可能なアセット）と、からなるファクトリスキーマ１３０内への仕様化を支援する。メタモデル１１０は、各タスクよって消費される及び／又は作成されるべきワークプロダクト２６０のタイプからなるファクトリスキーマ１３０内への定義化をさらに支援する。
【００１９】
図３にいったん着目すると、例示的なメタモデル１１０が統一化モデリング言語（ＵＭＬ）を用いて記述されている。メタモデル１１０は、ファクトリスキーマ１３０であるところのそのインスタンスの構造を、ファクトリスキーマに現れてもよい要素（例えば、アセット、タスク及びビューポイント）のタイプとそれらの間のリレーションシップとを指定することで記述する。
【００２０】
図１、図２及び図３を参照すると、当該メタモデル１１０は、ビューポイント２１０を定義するために構造化されたフレームワークをファクトリ開発者に提供する。ビューポイント２１０は組み込まれるべきソフトウェアの視点である。１つの実施形態においてビューポイント２１０はしばしばエディタへ写像（map）される。
【００２１】
各ビューポイント２１０毎に、当該ファクトリ開発者は、作成されるべきワークプロダクト２６０のタイプを指定し、当該指定されたワークプロダクト２６０を組み立てるための関連するタスク（例えば、カスタムプロセス（１つ又は複数））のセットからなる、タスクについてのテンプレート２４０とワークストリームについてのテンプレート２７０とを定義することができる。当該ファクトリ開発者は、タスクテンプレート２４０よって記述されるタスクの制定を支援するアセット２５０（例えば、再使用可能なアセット）をさらに指定できる。例えばファクトリ開発者よって指定される、ビューポイント２１０、リレーションシップ２２０、オペレーション２３０、タスクテンプレート２４０及びアセットはファクトリスキーマ１３０よって記述され得る。アセット２５０は、例えば、ドキュメント、コードテンプレート、スクリプト、パターン、その他を含むことができる。
【００２２】
ファクトリスキーマ１３０は、このように、ビューポイント２１０及びタスクテンプレート２４０を記述し、当該タスクはタスクテンプレート２４０よって記述される特定のタスクの性能を支援するのに利用可能なアセット２５０と一緒に当該特定のビューポイント２１０から実行される。
【００２３】
ファクトリスキーマ１３０を介して、当該ファクトリ開発者は、ビジネスプロセス、要求仕様、アーキテクチャ、技術的決定、実施、パターン及びガイドライン、規制法令遵守及び同等物に関する分野特有の知識を取り込むことできる。かかるファクトリスキーマ１３０よって記述されるファクトリを用いることよって、開発チームは、当該ファクトリ開発者よって指定されるアーキテクチャ内の構造化形式でソフトウェアソリューションを作成することができる。一旦当該ファクトリ開発者よって指定されると、ファクトリスキーマ１３０は、以下にかなり詳細に説明されるようなソフトウェアファクトリとしての例えば対話型開発環境（ＩＤＥ）において、当該エディタ、記述されたタスクテンプレート及びアセットと一緒に用いられる。
【００２４】
メタモデル１１０を用いてファクトリスキーマ１３０を指定することよって、ファクトリ開発者はソフトウェアプロダクト開発のためのベースライン(baseline)を提供できる。ファクトリスキーマ１３０が反復可能なプロセスを定義することから、品質及び一貫性は、より精確に予測され得るし、経験が積まれるにつれて当該ファクトリを洗練化することよって改善され得る。その上、当該ファクトリ環境はソフトウェア要求仕様の追跡可能性を容易にできる。
【００２５】
例えば、ファクトリスキーマ１３０は、完成されるべき必要があるワーク並びに当該ワークが完成され得る最高のやり方を当該ソフトウェア開発チームが迅速に特定するのを可能にする。１つの実施形態において、再使用可能なアセット２５０は、完成される必要がある当該ワークを当該ソフトウェア開発チームが迅速に実行するのを助けることができる。
【００２６】
ファクトリスキーマ１３０に固有の構造は、当該ソフトウェアファクトリよって作成されるプロダクトの低減された保守費を結果として得ることを可能にする。その上、当該ソフトウェアファクトリよって作成されたプロダクトに対する変更がより容易に理解され得る。さらに、当該ソフトウェア開発チームの新規な構成員がより迅速に作業スピードを上げることができる。
【００２７】
図４に着目すると、コンピュータで実現されるソフトウェアファクトリシステム４００が示されている。システム４００はユーザインタフェースコンポーネント４１０を含む。ユーザインタフェースコンポーネント４１０を介して、ユーザは、ファクトリスキーマ１３０、当該エディタ、記述されたタスクテンプレート及びアセットとの間で対話処理して、プロダクト４２０を作成する。「プロダクト」とは、ソフトウェアファクトリシステム４００の出力に相当し、周知のタイプ（例えば、データアクセス層、被接続システム、その他）のソフトウェアを含むことができる。通常、特定のソフトウェアファクトリシステム４００は、同一タイプのソフトウェアの変形物であるプロダクト（例えば、オンライン銀行窓口、スマートクライアント、モバイルクライアント、その他）を作成する。
【００２８】
１つの実施形態において、ユーザインタフェースコンポーネント４１０は対話型開発環境（ＩＤＥ）である。このように、ソフトウェアファクトリシステム４００は、前に説明されるように、例えばファクトリ開発者よってファクトリスキーマ１３０に取り込まれた分野特有の知識の応用を供給及び支援するＩＤＥの拡張である。ファクトリスキーマ１３０は、当該知識を要約し開発チームの構成員及び／又はそれらの顧客に利用可能とするコンテキスト化されたマニュアル及び／又は自動化されたガイダンスの作成及びパッケージ化の成果を得るのをさらに可能にする。
【００２９】
システム４００のユーザは、ユーザインタフェースコンポーネント４１０を介してファクトリスキーマ１３０と対話処理することができる。ユーザインタフェースコンポーネント４１０は、ファクトリスキーマ１３０と対話処理してプロダクト４２０の作成を補助するグラフィカルユーザインタフェース（ＧＵＩ）及び／又はアプリケーションプログラムインタフェース（ＡＰＩ）を公開することができる。
【００３０】
ファクトリスキーマ１３０は、ビューポイント２１０の記述と、特定のビューポイント２１０に関連付けられたワークプロダクトタイプ２６０のセットと、特定のビューポイント及びワークプロダクトタイプ２６０に関連付けられたタスクテンプレート２４０のセットと、特定のタスクテンプレート２４０に関連付けられたアセット２５０と、を含む。すなわち、ファクトリスキーマ１３０は、特定のビューポイント２１０又はワークプロダクトタイプ２６０に関連付けられた特定のタスクテンプレート２４０に関連付けられたアセット２５０を記述する。
【００３１】
１つの実施形態において、ファクトリスキーマ１３０は、当該開発チームの構成員がファクトリスキーマ１３０で定義されたビューポイント２１０に対応するプロダクト４２０（例えば、開発中のソフトウェアシステム）の１つ以上のビューにアクセスするのを可能とする。当該チーム構成員は、さらに、ビューポイント２１０に亘ってリレーションシップ２２０及びオペレーション２３０を検索及び使用し、タスクテンプレート２４０及びワークストリームテンプレート２７０からタスク及びワークストリーム（すなわち、カスタマイズされたプロセス）を生成し、それらタスクについて関連付けられたアセット２５０にアクセスして、ＩＤＥ（例えば、マイクロソフト（登録商標）・ビジュアル・ストュディオ（登録商標）チーム・システム開発環境）に対する拡張として、ワークプロダクトの集合（すなわち、ワークプロダクトタイプ２６０のインスタンス）として表現される開発中のプロダクト４２０の状態を評価及び修正することができる。当該ファクトリスキーマ、当該ファクトリスキーマが記述するビューポイントのインスタンス（すなわち、ビュー）及び当該ファクトリスキーマが記述するワークプロダクトタイプのインスタンス（すなわちワークプロダクト）を用いることよって、当該ＩＤＥはプロダクト４２０の構造のユーザ視覚化を容易にできる。当該ファクトリスキーマよって供給されるテンプレートよって記述されるタスク及びワークストリームを用いることよって、当該ＩＤＥはさらに当該プロダクト４２０の部品に関するユーザの進捗追跡を容易にできる。
【００３２】
システム４００は、ファクトリスキーマ１３０について説明されたように、特定タイプのプロダクト４２０を組み立てる形態を支援し得る。ファクトリスキーマ１３０はプロダクト４２０を組み立てるためのカスタムプロセスを記述できる。ユーザインタフェースコンポーネント４１０を介して、ユーザは識別されたタスク及び各タスクを支援するアセットの実行に関して情報を得ることができる。
【００３３】
１つの実施形態において、ファクトリスキーマ１３０は特定の必要性に関連付けられたタスクのコアサブセットを記述する。すなわち、ファクトリスキーマ１３０は、全てのプロダクト４２０に亘って共通且つ反復可能な態様を記述する。この形で、再使用可能なアセットの使用を通して品質が高まる一方で、ソフトウェア開発時間が低減され得る。
【００３４】
次に、図５を参照すると、ファクトリスキーマを用いて構成された対話型開発環境５００（例えば、ソフトウェアファクトリ開発環境）の例示的なユーザインタフェースが示されている。当該ユーザインタフェース５００は、１つ以上のファクトリのプロダクトと、ビューポイント２１０と、特定のプロダクト４２０に関連付けられたビュー及びワークプロダクトと、を表示するためのプロダクトエクスプローラ領域５１０（例えば、エディタ領域）を含む。ユーザインタフェース５００は、タスクテンプレート２４０から生成されたタスクと、特定のビューポイント２１０又はワークプロダクトタイプ２６０に関連付けられたワークストリームテンプレート２７０と、を表示するためのタスク領域５２０を含む。ユーザインタフェース５００は、ソリューションエクスプローラ領域５３０と、プロパティ領域５４０と、プロジェクト領域５５０と、を含む。
【００３５】
この例では、ユーザインタフェース５００は、ソフトウェアファクトリシステム４００を用いてソフトウェアを開発するためのプラットフォーム（例えば、ＧＵＩ及びＡＰＩ）を提供する。ユーザインタフェース５００は、ソフトウェアファクトリシステム４００と対話処理してプロダクト４２０を作成するのにユーザを補助できる図形表現を提供する。この例では、当該ユーザは、単一の動作単位「デザイン作成」を選ぶことができる。当該「デザイン作成」タスクの選択によって、ソフトウェアファクトリシステム４００はファクトリスキーマ１３０で指定された情報を表示する。
【００３６】
図６に着目すると、対話型開発環境６００の例示的なユーザインタフェースが示されている。この例では、当該ユーザは図５における「デザイン作成」を選択したとし、ファクトリスキーマ１３０に基づいて、「ビューポイント1」がアプリケーションエクスプローラ領域５１０に表示され、「タスク1」及び「タスクN」がタスク領域５２０に表示される。当該ファクトリ開発者によってファクトリスキーマ１３０で定義されたように、当該ユーザには、情報（例えば、ビューポイント２１０、タスクテンプレート２４０及び／又はアセット２５０から生成されるタスク）が与えられる。さらに、ソフトウェアファクトリシステム４００の１つ以上のフローはファクトリスキーマ１３０によって記述される。
【００３７】
当該ユーザは、ビューポイント２１０に関連付けられたビューを作成することができる。「ビュー」とは、開発中の特定のプロダクト４２０の特定のビューポイント２１０からの特定の記述である。ビューは、しばしば、特定のエディタに開かれた特定のドキュメントに写像される。ビューは、ソフトウェアファクトリシステム４００が組み立てている特定のプロダクト４２０に関連付けられる。ビューは、また、特定のビューポイント２１０のコンテキストでファクトリスキーマ１３０に指定されたワークプロダクトタイプ２６０（すなわち、ワークプロダクト）の１つ以上のインスタンスを含んでもよい。
【００３８】
図７を一時的に参照すると、対話型開発７００の例示的なユーザインタフェースが示されている。図５及び６の実施形態に引き続いて、当該ユーザの現在の焦点は「ビュー1」（例えば、「ビューポイント1」のインスタンス）であり、当該ユーザは「タスク1」を選択したとし、アセット領域５６０に「アセット1」が表示される。アセット領域５６０は、もしあればタスクテンプレート２４０から生成された選択されたタスクに利用可能なアセット２５０を記述する。特定のビューポイント２１０のコンテキストにおいて当該ソフトウェア開発チーム構成員に利用可能な特定のアセット２５０と、当該ビューポイントに合致する特定のビューと、当該開発の一部として実行される必要がある特定のタスクと、作成及び保守されるべき特定のタイプ２６０のワークプロダクトと、を作ることは、当該開発プロセスをより整合的、追跡可能且つ予測可能にすることによってソフトウェア品質を改善し、未経験のソフトウェア開発者の訓練コストを低減するのに重要である。
【００３９】
１つの実施形態において、ソフトウェアファクトリシステム４００は、予算化及び予定化を助け得る情報、すなわちソフトウェア開発経験に関係付けられた情報を取り込むことができる。例えば、システム４００は、特定のタスクを完了するのに要した時間量、特定のタスクに従事したユーザの数及びスキル、その他を取り込むことができる。
【００４０】
図８は、ソフトウェアファクトリを指定する方法を示している。説明の単純化のために、本明細書で示される１つ以上の方法が、例えば、フローチャートすなわち工程系統図の形で一連の動作として示され且つ説明されると共に、当該方法は動作の順序において制限されず、何らかの動作がそれ自体に従って、本明細書で示された説明とは異なった順序及び／又は並行して発生してもよいことが理解され且つ認識されるべきである。例えば、方法が状態線図の如く一連の相互に関係する状態又はイベントとして代わりに表現され得ることを当業者は理解及び認識するであろう。さらに、方法で示された全ての動作は新規性のある実施形態にとって必須のものではない。
【００４１】
ステップ８００において、ビューポイントがファクトリスキーマ１３０、例えばメタモデル１１０のインスタンスにおいて作成される。例えば、ファクトリ開発者は、ソフトウェアファクトリシステム４００の一部として対話型開発環境で用いられるべきファクトリスキーマを作成することができる。作成されたビューポイントは、特定の役割（ロール）において利害関係者の関与を表現及び隔離する、ソフトウェアアーキテクチャの特定の態様に対応し得る。
【００４２】
ステップ８０２において、エディタが準備され、エディタ（１つ又は複数）を要求するビューポイントに割り当てられる。当該ビューポイントの幾つか又は全てはエディタを必要とするか、又は何れも必要としない。
【００４３】
ステップ８０４において、タスクテンプレートが各ビューポイント毎に作成される。当該タスクテンプレートはワークストリームテンプレート２７０にグループ化することができ、ワークストリームテンプレート２７０は、当該特定のビューポイントのインスタンス（すなわち、ビュー（１つ又は複数））においてワークプロダクトタイプ２６０のインスタンスを組み立てるためのカスタムプロセス（１つ又は複数）を表現するワークストリームを記述している。ワークプロダクトタイプ２６０もこのステップで作成される。
【００４４】
ステップ８０６において、アセットが準備され、各タスクに割り当てられる。当該アセットは、再使用可能なソフトウェア資産、例えば、ドキュメント、製法及び同等物であり得る。ステップ８０８において、リレーションシップがビューポイント２１０間及び／又はビューポイント２１０とワークプロダクトタイプ２６０との間に作成される。
【００４５】
ステップ８１０において、オペレーションが定義され、リレーションシップ（１つ又は複数）に割り当てられる。ステップ８１２において、ファクトリスキーマ１３０とそれが記述する全ての項目とが記憶される。ファクトリスキーマ１３０とファクトリスキーマ１３０よって記述された項目とは、まとめて記憶され得る（例えば、ソフトウェアファクトリとして対話型開発環境で後に用いるために）。
【００４６】
図９はソフトウェアファクトリを用いる方法を示している。ステップ９００において、プロジェクトが、当該メタモデル（すなわち、ファクトリスキーマ１３０）のインスタンスに少なくとも部分的に基づいて作成される。ステップ９０２において、ビューポイントと、当該特定のビューポイントに対応するビューと、当該特定のビューに含まれるワークプロダクトとが表示される。当該ビューポイントは、当該プロジェクトに関連付けられた特定の役割（ロール）で働くファクトリユーザの関与に対応し得る。特定のビューポイントの下で、１つ以上のビューが（例えば、当該特定のプロジェクトのコンテキストで作成されたビューポイントのインスタンスとして）示され得る。特定のビューの下で、１つ以上のワークプロダクトが（すなわち、当該特定のビューのビューポイントに関連付けられたワークプロダクトタイプのインスタンスとして）示され得る。
【００４７】
ステップ９０４において、選択されたビュー又はワークプロダクトに関連付けられたタスクがテンプレートから生成され、必要に応じて次いで表示される。例えば、当該タスクは、カスタムプロセス（１つ又は複数）を実施するワークストリームの一部であり得る。通常、タスクは、所与のコンテキストについて（すなわち、所与のビュー又はワークプロダクトについて）一度生成され、次いで、当該コンテキストが選択される度に表示される。１つの実施形態において、当該テンプレートにおけるパラメータの値は当該コンテキストよって提供され得る。例えば、タスクの名前は、当該タスクが関連付けられたワークプロダクトの名前から取られ得る。
【００４８】
ステップ９０６において、選択されたタスクに関連付けられたアセットが表示される。ステップ９０８において、選択されたタスクが当該関連付けられたアセット（１つ又は複数）を用いて実行される。ステップ９１０において、当該ソフトウェアファクトリを用いて作成された特定のプロダクトが記憶される。当該プロダクトは当該選択されたタスク（１つ又は複数）を実行した結果であり得る。
【００４９】
情報をユーザに表示する特定の方法がユーザインタフェースとして特定の図に関して説明された一方で、当業者は様々な他の選択肢が用いられ得ると認識するであろう。用語「スクリーン」、「スクリーンショット」、「ウェブページ」、「ドキュメント」及び「ページ」が本明細書では互いに交替可能に通常使われている。当該ページ又はスクリーンは、ディスプレイ表示として、グラフィカルユーザインタフェースとして、又はスクリーン上の情報描写の他の方法よって、（例えば、パーソナルコンピュータ、ＰＤＡ、携帯電話、又は他の適切な装置に関わらず）記憶及び／又は送信され、この場合、当該ページに表示されるべきレイアウト及び情報又は内容はメモリ、データベース又は他の記憶装置に記憶される。
【００５０】
本明細書で用いられるように、用語「コンポーネント」及び「システム」は、コンピュータ関連の実在物、ハードウェア、ハードウェア及びソフトウェアの組み合せ、ソフトウェア又は実行状態のソフトウェアの何れかを意味することが意図される。例えば、コンポーネントは、制限されるものではないが、プロセッサ上で走るプロセス、プロセッサ、ハードディスク装置、（光学的及び／又は磁気的な記憶媒体からなる）複数の記憶ドライブ、オブジェクト、実行可能なもの、実行スレッド、プログラム、及び／又はコンピュータであり得る。実例として、サーバ上で走るアプリケーションと当該サーバの双方がコンポーネントであり得る。１つ以上のコンポーネントは実行プロセス及び／又はスレッド内で常駐することができ、コンポーネントは、１つのコンピュータに局在化される及び／又は２台以上のコンピュータ間に分散配置され得る。
【００５１】
図１０をここで参照すると、当該開示されたソフトウェアファクトリシステムを実行する動作が可能なコンピュータシステム１０００のブロック図が示されている。本発明の様々な態様についての追加的なコンテキストを提供するために、図１０及び引き続く説明は、当該様々な態様が実施され得る適切なコンピュータシステム１０００の簡潔且つ概括的な説明を提供することが意図されている。上記説明が１つ以上のコンピュータにおいて実行可能なコンピュータ実行可能命令の概括なコンテキストである一方、当業者は、新規な実施形態がまた他のプログラムモジュールの組み合せ及び／又はハードウェア及びソフトウェアの組み合せとして実施され得ることを認識するであろう。
【００５２】
通常、プログラムモジュールは、特定のタスクを実行するか又は特定の抽象データ型を実装する、ルーチン、プログラム、コンポーネント、データ構造、その他を含む。さらに、当業者は、本発明の方法が他のコンピュータシステム構成によって、例えば、シングルプロセッサ又はマルチプロセッサコンピュータシステム、ミニコンピュータ、メインフレームコンピュータのみならず、パソコン、ハンドヘルドコンピュータ装置、マイクロプロセッサベース又はプログラム可能な消費者エレクトロニクス、及び同等品を含む構成によって、それらの各々が１つ以上の関連する装置に動作可能に接続され得る構成によって実施し得ることを認識するであろう。
【００５３】
当該例示された態様は、通信ネットワークを介して連結されるリモートプロセッシング装置よって特定のタスクが実行される分散配置されたコンピューティング環境において実施されてもよい。分散配置されたコンピューティング環境において、プログラムモジュールは、ローカル及びリモートメモリ記憶装置双方に置かれてもよい。
【００５４】
コンピュータは、典型的には、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、当該コンピュータよってアクセスでき、揮発性及び不揮発性媒体、着脱可能及び着脱不能な媒体を含む何らかの利用可能な媒体を含む。例えば、限定ではなく、コンピュータ可読媒体は、コンピュータ記憶媒体又はコンピュータ通信媒体であり得る。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール又は他のデータの如き情報の記憶のため何らかの方法又は技術で実現される、揮発性及び不揮発性媒体、着脱可能及び着脱不能な媒体を含む。コンピュータ記憶媒体は、限定されるものではないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ又はその他のメモリ技術、ＣＤ―ＲＯＭ、デジタルビデオディスク（ＤＶＤ）若しくは他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスクストレージ若しくは他の磁気記憶装置、又は所望の情報を記憶すると共に当該コンピュータよってアクセスされ得る他の何らかの他の媒体を含む。
【００５５】
再び図１０を参照すると、様々な態様を実行する例示的なコンピュータシステム１０００はコンピュータ１００２を含み、コンピュータ１００２はプロセッシングユニット１００４とシステムメモリ１００６とシステムバス１００８とを含む。システムバス１００８は、限定するものではないが、システムメモリ１００６からプロセッシングユニット１００４に至るインタフェースを含む、システムコンポーネントのためのインタフェースを提供する。プロセッシングユニット１００４は、様々な市販のプロセッサの何れでもあり得る。デュアルマイクロプロセッサ及び他のマルチプロセッサアーキテクチャがプロセッシングユニット１００４として用いられてもよい。
【００５６】
当該システムバス１００８は、バス構造の幾つかのタイプの何れでもよく、メモリバス（メモリコントローラの有無にかかわらず）、周辺機器バス、及び様々な市販のバスアーキテクチャの何れかを用いたローカルバスにさらに相互接続してもよい。システムメモリ１００６は、リードオンリーメモリ（ＲＯＭ）１０１０及びランダムアクセスメモリ（ＲＡＭ）１０１２を含む。基本入出力システム（ＢＩＯＳ）は、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭの如き不揮発性メモリ１０１０に記憶され、起動時の如き間にコンピュータ１００２内の要素間で情報を転送するのを助ける基本的ルーチンを含む。当該ＲＡＭ１０１２は、また、キャッシングデータのためのスタティックＲＡＭの如き高速度ＲＡＭを含み得る。
【００５７】
コンピュータ１００２は、外部使用のために適切なシャーシ（図示せず）内に構成されてもよい内蔵ハードディスクドライブ（ＨＤＤ）１０１４（例えば、ＥＩＤＥ、ＳＡＴＡ）と、（例えば、着脱可能なディスケット１０１８に対してリード又はライトをなす）磁気フロッピーディスクドライブ（ＦＤＤ）１０１６と、（例えば、ＣＤ―ＲＯＭディスク１０２２を読み込むか又はＤＶＤの如き他の高容量光学媒体からリード若しくはライトをなす）光学的ディスクドライブ１０２０と、をさらに含む。ハードディスクドライブ１０１４、磁気ディスクドライブ１０１６及び光ディスクドライブ１０２０は、ハードディスク装置インタフェース１０２４、磁気ディスクドライブインタフェース１０２６及び光学的駆動インタフェース１０２８のそれぞれによってシステムバス１００８に接続され得る。外部ドライブのためのインタフェース１０２４は、少なくともユニバーサルシリアルバス（ＵＳＢ）技術及びＩＥＥＥ１３９４インタフェース技術の一方又は双方を含む。
【００５８】
当該ドライブ及びそれらにあてがわれたコンピュータ可読媒体は、データ、データ構造、コンピュータ実行命令、その他の不揮発性記憶手段を提供する。コンピュータ１００２の場合、当該ドライブ及び媒体は適切なデジタルフォーマットのどのデータの記憶にも適応している。上記のコンピュータ可読媒体の説明は、ＨＤＤ、着脱可能な磁気ディスケット、ＣＤ又はＤＶＤの如き着脱可能な光学媒体に関連してなされたが、Ｚｉｐドライブ、磁気カセット、フラッシュメモリカード、カートリッジ、又は同等品の如きコンピュータよって読込可能な媒体の他のタイプもまた当該例示的な動作環境で用いられてもよいし、さらに、何らかのタイプの媒体が当該開示されたアーキテクチャの新規な方法を実行するためのコンピュータ実行命令を含んでもよいことが当業者よって認識されるべきである。
【００５９】
幾つかのプログラムモジュールは、当該ドライブ及びＲＡＭ１０１２に記憶されることができ、オペレーティングシステム１０３０、１つ以上のアプリケーションプログラム１０３２、他のプログラムモジュール１０３４及びプログラムデータ１０３６を含む。ソフトウェアファクトリシステム４００はアプリケーションプログラム１０３２であり得る。当該オペレーティングシステムの全て又は一部は、アプリケーション、モジュール、及び／又はデータもまたＲＡＭ１０１２に一時的に記憶されてもよい。当該開示されたアーキテクチャが様々な市販のオペレーティングシステム又はオペレーティングシステムの組合せによって実行され得ることは言うまでもない。
【００６０】
ユーザは、例えば、キーボード１０３８及びマウス１０４０の如きポインティングデバイスの如き、１つ以上の有線／無線入力装置を介してコンピュータ１００２にコマンド命令及び情報を入力することができる。他の入力装置（図示せず）は、マイクロホン、ＩＲリモートコントロール、ジョイスティック、ゲームパッド、スタイラスペン、タッチスクリーン、又は同様品を含んでもよい。これら及び他の入力装置は、しばしば、システムバス１００８に結合された入力装置インタフェース１０４２を介してプロセッシングユニット１００４に接続されるが、パラレルポート、ＩＥＥＥ１３９４シリアルポート、ゲームポート、ＵＳＢポート、ＩＲインタフェース、その他の如き他のインタフェースを介しても接続され得る。
【００６１】
ディスプレイモニタ１０４４又は他のタイプの装置もまた、ビデオアダプタ１０４６の如きインタフェースを介してシステムバス１００８に接続される。モニタ１０４４に加えて、コンピュータは、通常、スピーカ、プリンタ、その他の如き他の周辺出力装置（図示せず）を含む。
【００６２】
コンピュータ１００２は、リモートコンピュータ１０４８の如き１つ以上のリモートコンピュータへの有線及び／又は無線通信を介した論理的接続を用いたネットワーク化環境で動作してもよい。リモートコンピュータ１０４８は、ワークステーション、サーバコンピュータ、ルータ、パソコン、ポータブルコンピュータ、マイクロプロセッサベースの娯楽装置、ピア装置又は他の一般のネットワークノードであることができ、簡潔さのためにメモリ／ストレージ装置１０５０みが示されているが、コンピュータ１００２に関連して記載された要素の多く又は全てを典型的には含んでもよい。描写された論理的接続は、ローカルエリアネットワーク（ＬＡＮ）１０５２及び／又はワイドエリアネットワーク（ＷＡＮ）１０５４の如きより大きいネットワークへの有線／無線接続態様を含む。かかるＬＡＮ及びＷＡＮネットワーク化環境は、事務所や企業においてありふれたものであり、イントラネットの如き企業ワイドネットワークを容易にし、それらの全てがインターネットの如き地球規模通信ネットワークに接続されてもよい。
【００６３】
ＬＡＮネットワーキング環境で用いられるとき、コンピュータ１００２は、有線及び／又は無線の通信ネットワークインタフェース又はアダプタ１０５６を介してローカルネットワーク１０５２に接続される。アダプタ１０５６がＬＡＮ１０５２への有線又は無線の通信を容易にしてもよく、ワイヤレスアダプタ１０５６と通信するために配置された無線アクセスポイントを含んでもよい。
【００６４】
ＷＡＮネットワーキング環境で用いられるときに、コンピュータ１００２はモデム１０５８を含むか、又はＷＡＮ１０５４上の通信サーバに接続されるか、又はインターネットの如きＷＡＮ１０５４上の通信を確立する他の手段を有する。内蔵又は外付け且つ有線又は無線装置であり得るモデム１０５８は、シリアルポートインタフェース１０４２を介してシステムバス１００８に接続されている。ネットワーク化された環境において、コンピュータ１００２に関連して表されたプログラムモジュール又はその１部は、リモートメモリ／ストレージ装置１０５０に記憶され得る。当該示されたネットワーク接続は例示的なものであり、当該コンピュータ間の通信リンクを確立する他の手段が用いられ得ることは言うまでもない。
【００６５】
図１１をここで参照すると、ソフトウェアファクトリシステム４００を用いたソフトウェア開発を容易にする例示的なコンピューティング環境１１００の概略ブロック図が示されている。システム１１００は１つ以上のクライアント１１０２を含む。クライアント１１０２は、ハードウェア及び／又はソフトウェア（例えば、スレッド、プロセス、コンピュータ）であり得る。クライアント１１０２は、例えば、クッキー及び／又は関連付けられたコンテキスト上の情報を格納し得る。
【００６６】
システム１１００もまた１つ以上のサーバ１１０４を含む。サーバ１１０４もまた、ハードウェア及び／又はソフトウェア（例えば、スレッド、プロセス、コンピュータ）であり得る。サーバ１１０４は、例えば、当該アーキテクチャを用いた変換を実行するためのスレッドを格納し得る。クライアント１１０２とサーバ１１０４との間の１つの可能な通信は２つ以上のコンピュータプロセス間の送信に適したデータパケットの形式であり得る。当該データパケットは、例えば、クッキー及び／又は関連付けられたコンテキスト状の情報を含む。システム１１００は、クライアント１１０２とサーバ１１０４との間の通信を容易にするのに用いられ得る通信フレームワーク１１０６（例えば、インターネットの如き地球規模通信ネットワーク）を含む。
【００６７】
通信が有線（光ファイバを含む）及び／又は無線技術を介して実現され得る。クライアント１１０２は１つ以上のクライアントデータ記憶部１１０８に動作可能に接続され、クライアントデータ記憶部１１０８はクライアント１１０２に局所的な情報（例えば、クッキー及び／又は関連付けられたコンテキスト状の情報）を記憶できる。同様に、サーバ１１０４は、サーバ１１０４に局所的な情報を記憶するのに用いられ得る１つ以上のサーバデータ記憶部１１１０に動作可能に接続されている。
【００６８】
上記された内容は当該開示されたアーキテクチャの実施形態を含む。もちろん、コンポーネント及び／又は方法の考えられる全ての組み合せを説明することは不可能であるが、当業者は多くのさらなる組み合せや並べ方が可能であることを認識してもよい。従って、当該新規なアーキテクチャは、添付の請求の範囲の思想及び範囲内にある全てのかかる変形、改変及び変容を包含することが意図される。さらに、用語「含む」は、発明の詳細な説明又は特許請求の範囲において用いられる限り、請求項において「含む」が移行句として用いられた場合の「含む」と同様に包含を意味することが意図されている。
【図１】
2011501297.tif 000003
【図２】
2011501297.tif 000004
【図３】
2011501297.tif 000005
【図４】
2011501297.tif 000006
【図５】
2011501297.tif 000007
【図６】
2011501297.tif 000008
【図７】
2011501297.tif 000009
【図８】
2011501297.tif 000010
【図９】
2011501297.tif 000011
【図１０】
2011501297.tif 000012
【図１１】
2011501297.tif 000013
【国際調査報告】
2011501297.tif 000014
2011501297.tif 000015