ソフトウェアファクトリ仕様化及び実行モデル
メタモデルのインスタンスに基づいてソフトウェアファクトリを提供することよってソフトウェア開発を容易にするシステムが開示される。当該メタモデルは1つ以上のビューポイントの定義を支援し、あるビューポイントは1つ以上のワークプロダクトタイプを含み、1つ以上のタスクのためのテンプレートは当該ビューポイント及びワークプロダクトタイプのインスタンスの作成及び修正を支援し、ワークストリームのためのテンプレートは1つ以上のタスクとそれらの間のリレーションシップを含む。当該メタモデルは、ビューポイント間及び/又はビューポイントとワークプロダクトタイプとの間のリレーションシップ、並びに、リレーションシップ(1つ又は複数)に亘って実行され得るオペレーション、の定義を支援する。加えて、特定のタスクに、もしあれば利用可能なアセットが当該メタモデルよって支援されるようにさらに定義され得る。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ソフトウェアファクトリ仕様化及び実行モデルに関する。
【背景技術】
【0002】
ソフトウェア開発チームは、現実世界の問題へのソフトウェアソリーションを開発するのに分野特有の知識を駆使する。この分野特有の知識には、例えば、ビジネスプロセス、機能上又は非機能上の要求仕様、ビジネス及び技術的なアーキテクチャ、検証された技術上の選択及び実施上の決定、再使用可能なパターン及びガイドライン、規制法令の遵守、配備実践等に関する情報を含むはずである。
【0003】
ソフトウェアの開発は、通常、受容可能な品質にて達成される。例えば、受容可能な品質としては、機能的要求仕様に加えて、産業規格、製造上の実践、組織的方針及び/又は政府の規制を含むはずである。確立された方法及びパターンの実施を開発目標がさらに含むことによって、他者が当該開発されたソフトウェアを理解し維持し得るようになる。付加的な開発目標としては、品質属性、例えば、使用容易性、信頼性、性能及び/又は資源消費の受容可能レベルでの拡縮可能性を含むはずである。
【発明の概要】
【発明が解決しようとする課題】
【0004】
従来、開発チームは一般的なツール及びプラットフォームを用いてソフトウェアを開発していた。しかし、これら一般的なツール及びプラットフォームを用いることは、要求機能を提供するソリューションを受容可能な品質で作成するのが困難であったことから、開発チームにとってはフラストレーションを与えるものと検証されている。さらに、当該一般的なツール及びプラットフォームを用いても、開発チームが予算及び予定を確実に予測することはできなかった。例えば、一般的なツール及びプラットフォームの使用は、予算オーバやオンタイムに開発されないソフトウェアを招いていた。その上、当該開発されたソフトウェアは、乏しい品質及び/又は乏しい一貫性を有し、最適な追跡可能性からは程遠く、著しい増加時間を必要とするか及び/又は高い維持費を招いていた。
【課題を解決するための手段】
【0005】
以降は、本明細書において説明される新規な実施形態の基本的理解を提供するために簡略化された概要を提示する。本概要は、広範な概観ではなく、鍵となる/決定的な要素を識別するか又はその範囲を詳細に描写することは意図されない。その唯一の目的は、後述される詳細な説明の前置きとして単純化された形で概念を提示することである。
【0006】
当該開示されたシステム及び方法は、「ファクトリスキーマ」又は単に「スキーマ」と称されるメタモデル(すなわち、モデル)のインスタンスに基づいてソフトウェアファクトリを提供することよって、ソフトウェア開発を容易にする。当該モデルは、1つ以上のビューポイント(viewpoint)すなわち視点(perspective)を定義し、各ビューポイントは特定セットの関与(concern)を隔離する当該ソフトウェアのビューを定義し、典型的にはかかるビューの範囲、もしあれば当該ソフトウェアを表現するのに用いられる表記法、並びにもしあれば当該ソフトウェアを作成及び修正するのに用いられるエディタを定義する。当該モデルは、もしあれば各ビューポイントから作成されるワークプロダクトのタイプ、並びに、もしあればビュー又はワークプロダクトの各タイプを作成(create)又は維持するのに実行されるタスクのためのテンプレートをさらに定義してもよい。当該モデルは、ビューポイント間のリレーションシップのみならず、ビューポイントとワークプロダクトタイプとの間のリレーションシップ、並びにリレーションシップ(1つ又は複数)に亘って実行され得るオペレーションをさらに定義してもよい。加えて、当該モデルは、もしあれば当該タスクテンプレート(1つ又は複数)からインスタンス化される何らかのタスクの実行を支援するのに利用可能なアセットを記述してもよい。
【0007】
1つの実施形態において、コンピュータで実現されるソフトウェアファクトリ仕様化システムが提供される。当該ソフトウェアファクトリ仕様化システムは、例えばファクトリ開発者よって用いられて、ファクトリスキーマを指定し得る。まとめて説明されたファクトリスキーマ及びエディタ、タスクテンプレート及びアセットは、「ソフトウェアファクトリ」又は単に「ファクトリ」を形成し、かかるファクトリは分野特有の知識を取り込むことができ、例えば、ビジネスプロセス、要求仕様、アーキテクチャ、技術的決定、実装、パターン及びガイドライン、規制法令遵守、開発制約等の知識を取り込むことができる。一旦実装されると、ソフトウェアファクトリが用いられて、例えば、汎用的な対話型開発環境(IDE)が仕立てられて、特定の種類のソフトウェアソリューションが開発され得る。
【0008】
前述及び関係する目標を達成するために、例示的な特定の態様が本明細書において引き続く説明及び添付の図面に関連して説明される。しかし、これらの態様は、本明細書で説明される原理が用いられ得る多様な形態のうちの僅かのものを示すに過ぎない。他の優位且つ新規な特徴が、当該図面と結びつけて考慮されるとき、引き続く詳細な説明から明らかになる。
【図面の簡単な説明】
【0009】
【図1】コンピュータで実現されるソフトウェアファクトリ仕様化システムを示すブロック図である。
【図2】例示的なファクトリスキーマを示すブロック図である。
【図3】ファクトリスキーマのための例示的なメタモデルを示すブロック図である。
【図4】コンピュータで実現されるソフトウェアファクトリシステムを示すブロック図である。
【図5】対話型開発環境の例示的なユーザインタフェースを示すブロック図である。
【図6】対話型開発環境の例示的な他のユーザインタフェースを示すブロック図である。
【図7】対話型開発環境の例示的な他のユーザインタフェースを示すブロック図である。
【図8】ソフトウェアファクトリを指定する方法を示すフローチャートである。
【図9】ソフトウェアファクトリを用いる方法を示すフローチャートである。
【図10】当該開示されたアーキテクチャの実行を動作可能とするコンピュータシステムを示すブロック図である。
【図11】例示的なコンピュータ環境を示すブロック図である。
【発明を実施するための形態】
【0010】
当該開示されたシステム及び方法は、「ファクトリスキーマ」又は単に「スキーマ」と称されるメタモデル(すなわちモデル)のインスタンスに基づいてソフトウェアファクトリを提供することよって、ソフトウェア開発を容易にする。当該ファクトリスキーマは、現実世界の問題へのソフトウェアソリューションの構築を容易にするために分野特有の知識を取り込み、かかるソリューションを構築するためにソフトウェア開発チームよって実行され得るタスクを定義し、当該タスクを実行するときに用いられ得るエディタ及びアセットを提供する。
【0011】
当該モデルは、1つ以上のビューポイントすなわち視点を定義し、各ビューポイントは特定セットの関与を隔離する当該ソフトウェアのビューを定義し、典型的にはかかるビューの範囲、もしあれば当該ソフトウェアを表現するのに用いられる表記法、並びにもしあれば当該ソフトウェアを作成及び修正するのに用いられるエディタを定義する。当該モデルは、もしあれば各ビューポイントから作成されるワークプロダクトのタイプ、並びに、もしあればビュー又はワークプロダクトの各タイプを作成又は維持するのに実行されるタスクのためのテンプレートをさらに定義してもよい。当該モデルは、ビューポイント間のリレーションシップのみならず、ビューポイントとワークプロダクトタイプとの間のリレーションシップ、並びにリレーションシップ(1つ又は複数)に亘って実行され得るオペレーションをさらに定義してもよい。加えて、当該モデルは、もしあれば当該タスクテンプレート(1つ又は複数)からインスタンス化される何らかのタスクの実行を支援するのに利用可能なアセットを記述してもよい。
【0012】
かかるモデルは、例えばファクトリ開発者よって定義され得る。1つの実施形態において、当該モデル及び当該エディタ、定義されたテンプレート及びアセットは、開発チームよって対話型開発環境においてまとめて用いられて、特定のタイプのプロダクト(例えば、クライアントアプリケーション、モバイルクライアント、ウェブサービス、その他)を作成することができる。
【0013】
ここで図面を参照すると、全体を通して同様の参照番号は同様の要素を参照するために用いられる。引き続く説明において、幾つかの具体的な詳細は完全な理解を提供するために記載される。しかし、当該新規な実施形態がこれら具体的な詳細無しに実践され得ることは明らかであろう。他の例において、周知の構造及び装置がそれらの説明を容易にするためにブロック図の形で示されている。
【0014】
図を初めに参照すると、図1はコンピュータで実現されるソフトウェアファクトリ仕様化システム100を示している。システム100は、メタモデル110と、ユーザインタフェースコンポーネント120と、ファクトリスキーマ130(すなわち、メタモデル110のインスタンス)とを含む。ユーザインタフェースコンポーネント120を介して、ユーザ(例えば、ファクトリ開発者)は、メタモデル110と対話処理して、特定のソフトウェアファクトリのためのファクトリスキーマ130を定義する。1つの実施形態において、当該ユーザインタフェースコンポーネント120は対話型開発環境を含む。
【0015】
ファクトリスキーマ130は、対話型開発環境において、当該エディタ、記述されたタスクテンプレート及びアセットと一緒に用いられて、プロダクト(例えば、クライアントアプリケーション、モバイルクライアント、ウェブサービス、その他)の仕様化、開発、配備及び保守を支援する。ファクトリスキーマ130と、まとめて説明されたエディタ、タスクテンプレート及びアセットとは、「ソフトウェアファクトリ」すなわち単に「ファクトリ」を形成し、かかる「ファクトリ」は、ソフトウェア資産の組織的な再利用を可能とすることによってソフトウェア開発チームの生産性を改善するのに用いられることができ、当該ソフトウェア資産は、良く定義された変容可能な特性(point)を活用することによって、特定タイプのソフトウェアシステムの広範囲な変容物を作成するのに適用され得る。
【0016】
ソフトウェア資産の再利用を促進するために設計された従来のシステムは僅かに成功しているだけだった。ワークプロダクトが開発されるアーキテクチャ上のコンテキストを定義するファクトリスキーマ130の構造を指定することよって、各ワークプロダクトを開発するのに用いられるプロセス(1つ又は複数)を同一のアーキテクチャ上のコンテキストに置くことよって、並びに、例えば対話型開発環境内で当該プロセス(1つ又は複数)の制定を支援するのに適用され得るアセットを提供することよって、メタモデル110はソフトウェア資産のより効果的な再利用を容易にする。
【0017】
図2に着目すると、メタモデル110は、1セットのビューポイント210のファクトリスキーマ130内への仕様化を支援する。例えば、ビューポイント210は、開発中のソフトウェアの特定の態様と一致することができ、特定の役割(role:ロール)における利害関係人の関与を表すと共に隔離する。
【0018】
当該メタモデル110は、ビューポイント210間及びビューポイント210とワークプロダクトタイプ260との間のリレーションシップ220と、リレーションシップ220に亘って実行され得るオペレーションと、からなるファクトリスキーマ130内への仕様化を支援する。その上、当該メタモデル110は、各ビューポイント210毎のワークストリーム(例えばカスタムプロセス(1つ又は複数))のためのテンプレート270を含むタスクを記述するタスクテンプレート240のセットと、タスクテンプレート240(すなわち各タスク)の各インスタンスの実行を加速するのに利用可能なアセット250のセット(例えば再使用可能なアセット)と、からなるファクトリスキーマ130内への仕様化を支援する。メタモデル110は、各タスクよって消費される及び/又は作成されるべきワークプロダクト260のタイプからなるファクトリスキーマ130内への定義化をさらに支援する。
【0019】
図3にいったん着目すると、例示的なメタモデル110が統一化モデリング言語(UML)を用いて記述されている。メタモデル110は、ファクトリスキーマ130であるところのそのインスタンスの構造を、ファクトリスキーマに現れてもよい要素(例えば、アセット、タスク及びビューポイント)のタイプとそれらの間のリレーションシップとを指定することで記述する。
【0020】
図1、図2及び図3を参照すると、当該メタモデル110は、ビューポイント210を定義するために構造化されたフレームワークをファクトリ開発者に提供する。ビューポイント210は組み込まれるべきソフトウェアの視点である。1つの実施形態においてビューポイント210はしばしばエディタへ写像(map)される。
【0021】
各ビューポイント210毎に、当該ファクトリ開発者は、作成されるべきワークプロダクト260のタイプを指定し、当該指定されたワークプロダクト260を組み立てるための関連するタスク(例えば、カスタムプロセス(1つ又は複数))のセットからなる、タスクについてのテンプレート240とワークストリームについてのテンプレート270とを定義することができる。当該ファクトリ開発者は、タスクテンプレート240よって記述されるタスクの制定を支援するアセット250(例えば、再使用可能なアセット)をさらに指定できる。例えばファクトリ開発者よって指定される、ビューポイント210、リレーションシップ220、オペレーション230、タスクテンプレート240及びアセットはファクトリスキーマ130よって記述され得る。アセット250は、例えば、ドキュメント、コードテンプレート、スクリプト、パターン、その他を含むことができる。
【0022】
ファクトリスキーマ130は、このように、ビューポイント210及びタスクテンプレート240を記述し、当該タスクはタスクテンプレート240よって記述される特定のタスクの性能を支援するのに利用可能なアセット250と一緒に当該特定のビューポイント210から実行される。
【0023】
ファクトリスキーマ130を介して、当該ファクトリ開発者は、ビジネスプロセス、要求仕様、アーキテクチャ、技術的決定、実施、パターン及びガイドライン、規制法令遵守及び同等物に関する分野特有の知識を取り込むことできる。かかるファクトリスキーマ130よって記述されるファクトリを用いることよって、開発チームは、当該ファクトリ開発者よって指定されるアーキテクチャ内の構造化形式でソフトウェアソリューションを作成することができる。一旦当該ファクトリ開発者よって指定されると、ファクトリスキーマ130は、以下にかなり詳細に説明されるようなソフトウェアファクトリとしての例えば対話型開発環境(IDE)において、当該エディタ、記述されたタスクテンプレート及びアセットと一緒に用いられる。
【0024】
メタモデル110を用いてファクトリスキーマ130を指定することよって、ファクトリ開発者はソフトウェアプロダクト開発のためのベースライン(baseline)を提供できる。ファクトリスキーマ130が反復可能なプロセスを定義することから、品質及び一貫性は、より精確に予測され得るし、経験が積まれるにつれて当該ファクトリを洗練化することよって改善され得る。その上、当該ファクトリ環境はソフトウェア要求仕様の追跡可能性を容易にできる。
【0025】
例えば、ファクトリスキーマ130は、完成されるべき必要があるワーク並びに当該ワークが完成され得る最高のやり方を当該ソフトウェア開発チームが迅速に特定するのを可能にする。1つの実施形態において、再使用可能なアセット250は、完成される必要がある当該ワークを当該ソフトウェア開発チームが迅速に実行するのを助けることができる。
【0026】
ファクトリスキーマ130に固有の構造は、当該ソフトウェアファクトリよって作成されるプロダクトの低減された保守費を結果として得ることを可能にする。その上、当該ソフトウェアファクトリよって作成されたプロダクトに対する変更がより容易に理解され得る。さらに、当該ソフトウェア開発チームの新規な構成員がより迅速に作業スピードを上げることができる。
【0027】
図4に着目すると、コンピュータで実現されるソフトウェアファクトリシステム400が示されている。システム400はユーザインタフェースコンポーネント410を含む。ユーザインタフェースコンポーネント410を介して、ユーザは、ファクトリスキーマ130、当該エディタ、記述されたタスクテンプレート及びアセットとの間で対話処理して、プロダクト420を作成する。「プロダクト」とは、ソフトウェアファクトリシステム400の出力に相当し、周知のタイプ(例えば、データアクセス層、被接続システム、その他)のソフトウェアを含むことができる。通常、特定のソフトウェアファクトリシステム400は、同一タイプのソフトウェアの変形物であるプロダクト(例えば、オンライン銀行窓口、スマートクライアント、モバイルクライアント、その他)を作成する。
【0028】
1つの実施形態において、ユーザインタフェースコンポーネント410は対話型開発環境(IDE)である。このように、ソフトウェアファクトリシステム400は、前に説明されるように、例えばファクトリ開発者よってファクトリスキーマ130に取り込まれた分野特有の知識の応用を供給及び支援するIDEの拡張である。ファクトリスキーマ130は、当該知識を要約し開発チームの構成員及び/又はそれらの顧客に利用可能とするコンテキスト化されたマニュアル及び/又は自動化されたガイダンスの作成及びパッケージ化の成果を得るのをさらに可能にする。
【0029】
システム400のユーザは、ユーザインタフェースコンポーネント410を介してファクトリスキーマ130と対話処理することができる。ユーザインタフェースコンポーネント410は、ファクトリスキーマ130と対話処理してプロダクト420の作成を補助するグラフィカルユーザインタフェース(GUI)及び/又はアプリケーションプログラムインタフェース(API)を公開することができる。
【0030】
ファクトリスキーマ130は、ビューポイント210の記述と、特定のビューポイント210に関連付けられたワークプロダクトタイプ260のセットと、特定のビューポイント及びワークプロダクトタイプ260に関連付けられたタスクテンプレート240のセットと、特定のタスクテンプレート240に関連付けられたアセット250と、を含む。すなわち、ファクトリスキーマ130は、特定のビューポイント210又はワークプロダクトタイプ260に関連付けられた特定のタスクテンプレート240に関連付けられたアセット250を記述する。
【0031】
1つの実施形態において、ファクトリスキーマ130は、当該開発チームの構成員がファクトリスキーマ130で定義されたビューポイント210に対応するプロダクト420(例えば、開発中のソフトウェアシステム)の1つ以上のビューにアクセスするのを可能とする。当該チーム構成員は、さらに、ビューポイント210に亘ってリレーションシップ220及びオペレーション230を検索及び使用し、タスクテンプレート240及びワークストリームテンプレート270からタスク及びワークストリーム(すなわち、カスタマイズされたプロセス)を生成し、それらタスクについて関連付けられたアセット250にアクセスして、IDE(例えば、マイクロソフト(登録商標)・ビジュアル・ストュディオ(登録商標)チーム・システム開発環境)に対する拡張として、ワークプロダクトの集合(すなわち、ワークプロダクトタイプ260のインスタンス)として表現される開発中のプロダクト420の状態を評価及び修正することができる。当該ファクトリスキーマ、当該ファクトリスキーマが記述するビューポイントのインスタンス(すなわち、ビュー)及び当該ファクトリスキーマが記述するワークプロダクトタイプのインスタンス(すなわちワークプロダクト)を用いることよって、当該IDEはプロダクト420の構造のユーザ視覚化を容易にできる。当該ファクトリスキーマよって供給されるテンプレートよって記述されるタスク及びワークストリームを用いることよって、当該IDEはさらに当該プロダクト420の部品に関するユーザの進捗追跡を容易にできる。
【0032】
システム400は、ファクトリスキーマ130について説明されたように、特定タイプのプロダクト420を組み立てる形態を支援し得る。ファクトリスキーマ130はプロダクト420を組み立てるためのカスタムプロセスを記述できる。ユーザインタフェースコンポーネント410を介して、ユーザは識別されたタスク及び各タスクを支援するアセットの実行に関して情報を得ることができる。
【0033】
1つの実施形態において、ファクトリスキーマ130は特定の必要性に関連付けられたタスクのコアサブセットを記述する。すなわち、ファクトリスキーマ130は、全てのプロダクト420に亘って共通且つ反復可能な態様を記述する。この形で、再使用可能なアセットの使用を通して品質が高まる一方で、ソフトウェア開発時間が低減され得る。
【0034】
次に、図5を参照すると、ファクトリスキーマを用いて構成された対話型開発環境500(例えば、ソフトウェアファクトリ開発環境)の例示的なユーザインタフェースが示されている。当該ユーザインタフェース500は、1つ以上のファクトリのプロダクトと、ビューポイント210と、特定のプロダクト420に関連付けられたビュー及びワークプロダクトと、を表示するためのプロダクトエクスプローラ領域510(例えば、エディタ領域)を含む。ユーザインタフェース500は、タスクテンプレート240から生成されたタスクと、特定のビューポイント210又はワークプロダクトタイプ260に関連付けられたワークストリームテンプレート270と、を表示するためのタスク領域520を含む。ユーザインタフェース500は、ソリューションエクスプローラ領域530と、プロパティ領域540と、プロジェクト領域550と、を含む。
【0035】
この例では、ユーザインタフェース500は、ソフトウェアファクトリシステム400を用いてソフトウェアを開発するためのプラットフォーム(例えば、GUI及びAPI)を提供する。ユーザインタフェース500は、ソフトウェアファクトリシステム400と対話処理してプロダクト420を作成するのにユーザを補助できる図形表現を提供する。この例では、当該ユーザは、単一の動作単位「デザイン作成」を選ぶことができる。当該「デザイン作成」タスクの選択によって、ソフトウェアファクトリシステム400はファクトリスキーマ130で指定された情報を表示する。
【0036】
図6に着目すると、対話型開発環境600の例示的なユーザインタフェースが示されている。この例では、当該ユーザは図5における「デザイン作成」を選択したとし、ファクトリスキーマ130に基づいて、「ビューポイント1」がアプリケーションエクスプローラ領域510に表示され、「タスク1」及び「タスクN」がタスク領域520に表示される。当該ファクトリ開発者によってファクトリスキーマ130で定義されたように、当該ユーザには、情報(例えば、ビューポイント210、タスクテンプレート240及び/又はアセット250から生成されるタスク)が与えられる。さらに、ソフトウェアファクトリシステム400の1つ以上のフローはファクトリスキーマ130によって記述される。
【0037】
当該ユーザは、ビューポイント210に関連付けられたビューを作成することができる。「ビュー」とは、開発中の特定のプロダクト420の特定のビューポイント210からの特定の記述である。ビューは、しばしば、特定のエディタに開かれた特定のドキュメントに写像される。ビューは、ソフトウェアファクトリシステム400が組み立てている特定のプロダクト420に関連付けられる。ビューは、また、特定のビューポイント210のコンテキストでファクトリスキーマ130に指定されたワークプロダクトタイプ260(すなわち、ワークプロダクト)の1つ以上のインスタンスを含んでもよい。
【0038】
図7を一時的に参照すると、対話型開発700の例示的なユーザインタフェースが示されている。図5及び6の実施形態に引き続いて、当該ユーザの現在の焦点は「ビュー1」(例えば、「ビューポイント1」のインスタンス)であり、当該ユーザは「タスク1」を選択したとし、アセット領域560に「アセット1」が表示される。アセット領域560は、もしあればタスクテンプレート240から生成された選択されたタスクに利用可能なアセット250を記述する。特定のビューポイント210のコンテキストにおいて当該ソフトウェア開発チーム構成員に利用可能な特定のアセット250と、当該ビューポイントに合致する特定のビューと、当該開発の一部として実行される必要がある特定のタスクと、作成及び保守されるべき特定のタイプ260のワークプロダクトと、を作ることは、当該開発プロセスをより整合的、追跡可能且つ予測可能にすることによってソフトウェア品質を改善し、未経験のソフトウェア開発者の訓練コストを低減するのに重要である。
【0039】
1つの実施形態において、ソフトウェアファクトリシステム400は、予算化及び予定化を助け得る情報、すなわちソフトウェア開発経験に関係付けられた情報を取り込むことができる。例えば、システム400は、特定のタスクを完了するのに要した時間量、特定のタスクに従事したユーザの数及びスキル、その他を取り込むことができる。
【0040】
図8は、ソフトウェアファクトリを指定する方法を示している。説明の単純化のために、本明細書で示される1つ以上の方法が、例えば、フローチャートすなわち工程系統図の形で一連の動作として示され且つ説明されると共に、当該方法は動作の順序において制限されず、何らかの動作がそれ自体に従って、本明細書で示された説明とは異なった順序及び/又は並行して発生してもよいことが理解され且つ認識されるべきである。例えば、方法が状態線図の如く一連の相互に関係する状態又はイベントとして代わりに表現され得ることを当業者は理解及び認識するであろう。さらに、方法で示された全ての動作は新規性のある実施形態にとって必須のものではない。
【0041】
ステップ800において、ビューポイントがファクトリスキーマ130、例えばメタモデル110のインスタンスにおいて作成される。例えば、ファクトリ開発者は、ソフトウェアファクトリシステム400の一部として対話型開発環境で用いられるべきファクトリスキーマを作成することができる。作成されたビューポイントは、特定の役割(ロール)において利害関係者の関与を表現及び隔離する、ソフトウェアアーキテクチャの特定の態様に対応し得る。
【0042】
ステップ802において、エディタが準備され、エディタ(1つ又は複数)を要求するビューポイントに割り当てられる。当該ビューポイントの幾つか又は全てはエディタを必要とするか、又は何れも必要としない。
【0043】
ステップ804において、タスクテンプレートが各ビューポイント毎に作成される。当該タスクテンプレートはワークストリームテンプレート270にグループ化することができ、ワークストリームテンプレート270は、当該特定のビューポイントのインスタンス(すなわち、ビュー(1つ又は複数))においてワークプロダクトタイプ260のインスタンスを組み立てるためのカスタムプロセス(1つ又は複数)を表現するワークストリームを記述している。ワークプロダクトタイプ260もこのステップで作成される。
【0044】
ステップ806において、アセットが準備され、各タスクに割り当てられる。当該アセットは、再使用可能なソフトウェア資産、例えば、ドキュメント、製法及び同等物であり得る。ステップ808において、リレーションシップがビューポイント210間及び/又はビューポイント210とワークプロダクトタイプ260との間に作成される。
【0045】
ステップ810において、オペレーションが定義され、リレーションシップ(1つ又は複数)に割り当てられる。ステップ812において、ファクトリスキーマ130とそれが記述する全ての項目とが記憶される。ファクトリスキーマ130とファクトリスキーマ130よって記述された項目とは、まとめて記憶され得る(例えば、ソフトウェアファクトリとして対話型開発環境で後に用いるために)。
【0046】
図9はソフトウェアファクトリを用いる方法を示している。ステップ900において、プロジェクトが、当該メタモデル(すなわち、ファクトリスキーマ130)のインスタンスに少なくとも部分的に基づいて作成される。ステップ902において、ビューポイントと、当該特定のビューポイントに対応するビューと、当該特定のビューに含まれるワークプロダクトとが表示される。当該ビューポイントは、当該プロジェクトに関連付けられた特定の役割(ロール)で働くファクトリユーザの関与に対応し得る。特定のビューポイントの下で、1つ以上のビューが(例えば、当該特定のプロジェクトのコンテキストで作成されたビューポイントのインスタンスとして)示され得る。特定のビューの下で、1つ以上のワークプロダクトが(すなわち、当該特定のビューのビューポイントに関連付けられたワークプロダクトタイプのインスタンスとして)示され得る。
【0047】
ステップ904において、選択されたビュー又はワークプロダクトに関連付けられたタスクがテンプレートから生成され、必要に応じて次いで表示される。例えば、当該タスクは、カスタムプロセス(1つ又は複数)を実施するワークストリームの一部であり得る。通常、タスクは、所与のコンテキストについて(すなわち、所与のビュー又はワークプロダクトについて)一度生成され、次いで、当該コンテキストが選択される度に表示される。1つの実施形態において、当該テンプレートにおけるパラメータの値は当該コンテキストよって提供され得る。例えば、タスクの名前は、当該タスクが関連付けられたワークプロダクトの名前から取られ得る。
【0048】
ステップ906において、選択されたタスクに関連付けられたアセットが表示される。ステップ908において、選択されたタスクが当該関連付けられたアセット(1つ又は複数)を用いて実行される。ステップ910において、当該ソフトウェアファクトリを用いて作成された特定のプロダクトが記憶される。当該プロダクトは当該選択されたタスク(1つ又は複数)を実行した結果であり得る。
【0049】
情報をユーザに表示する特定の方法がユーザインタフェースとして特定の図に関して説明された一方で、当業者は様々な他の選択肢が用いられ得ると認識するであろう。用語「スクリーン」、「スクリーンショット」、「ウェブページ」、「ドキュメント」及び「ページ」が本明細書では互いに交替可能に通常使われている。当該ページ又はスクリーンは、ディスプレイ表示として、グラフィカルユーザインタフェースとして、又はスクリーン上の情報描写の他の方法よって、(例えば、パーソナルコンピュータ、PDA、携帯電話、又は他の適切な装置に関わらず)記憶及び/又は送信され、この場合、当該ページに表示されるべきレイアウト及び情報又は内容はメモリ、データベース又は他の記憶装置に記憶される。
【0050】
本明細書で用いられるように、用語「コンポーネント」及び「システム」は、コンピュータ関連の実在物、ハードウェア、ハードウェア及びソフトウェアの組み合せ、ソフトウェア又は実行状態のソフトウェアの何れかを意味することが意図される。例えば、コンポーネントは、制限されるものではないが、プロセッサ上で走るプロセス、プロセッサ、ハードディスク装置、(光学的及び/又は磁気的な記憶媒体からなる)複数の記憶ドライブ、オブジェクト、実行可能なもの、実行スレッド、プログラム、及び/又はコンピュータであり得る。実例として、サーバ上で走るアプリケーションと当該サーバの双方がコンポーネントであり得る。1つ以上のコンポーネントは実行プロセス及び/又はスレッド内で常駐することができ、コンポーネントは、1つのコンピュータに局在化される及び/又は2台以上のコンピュータ間に分散配置され得る。
【0051】
図10をここで参照すると、当該開示されたソフトウェアファクトリシステムを実行する動作が可能なコンピュータシステム1000のブロック図が示されている。本発明の様々な態様についての追加的なコンテキストを提供するために、図10及び引き続く説明は、当該様々な態様が実施され得る適切なコンピュータシステム1000の簡潔且つ概括的な説明を提供することが意図されている。上記説明が1つ以上のコンピュータにおいて実行可能なコンピュータ実行可能命令の概括なコンテキストである一方、当業者は、新規な実施形態がまた他のプログラムモジュールの組み合せ及び/又はハードウェア及びソフトウェアの組み合せとして実施され得ることを認識するであろう。
【0052】
通常、プログラムモジュールは、特定のタスクを実行するか又は特定の抽象データ型を実装する、ルーチン、プログラム、コンポーネント、データ構造、その他を含む。さらに、当業者は、本発明の方法が他のコンピュータシステム構成によって、例えば、シングルプロセッサ又はマルチプロセッサコンピュータシステム、ミニコンピュータ、メインフレームコンピュータのみならず、パソコン、ハンドヘルドコンピュータ装置、マイクロプロセッサベース又はプログラム可能な消費者エレクトロニクス、及び同等品を含む構成によって、それらの各々が1つ以上の関連する装置に動作可能に接続され得る構成によって実施し得ることを認識するであろう。
【0053】
当該例示された態様は、通信ネットワークを介して連結されるリモートプロセッシング装置よって特定のタスクが実行される分散配置されたコンピューティング環境において実施されてもよい。分散配置されたコンピューティング環境において、プログラムモジュールは、ローカル及びリモートメモリ記憶装置双方に置かれてもよい。
【0054】
コンピュータは、典型的には、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、当該コンピュータよってアクセスでき、揮発性及び不揮発性媒体、着脱可能及び着脱不能な媒体を含む何らかの利用可能な媒体を含む。例えば、限定ではなく、コンピュータ可読媒体は、コンピュータ記憶媒体又はコンピュータ通信媒体であり得る。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール又は他のデータの如き情報の記憶のため何らかの方法又は技術で実現される、揮発性及び不揮発性媒体、着脱可能及び着脱不能な媒体を含む。コンピュータ記憶媒体は、限定されるものではないが、RAM、ROM、EEPROM、フラッシュメモリ又はその他のメモリ技術、CD―ROM、デジタルビデオディスク(DVD)若しくは他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスクストレージ若しくは他の磁気記憶装置、又は所望の情報を記憶すると共に当該コンピュータよってアクセスされ得る他の何らかの他の媒体を含む。
【0055】
再び図10を参照すると、様々な態様を実行する例示的なコンピュータシステム1000はコンピュータ1002を含み、コンピュータ1002はプロセッシングユニット1004とシステムメモリ1006とシステムバス1008とを含む。システムバス1008は、限定するものではないが、システムメモリ1006からプロセッシングユニット1004に至るインタフェースを含む、システムコンポーネントのためのインタフェースを提供する。プロセッシングユニット1004は、様々な市販のプロセッサの何れでもあり得る。デュアルマイクロプロセッサ及び他のマルチプロセッサアーキテクチャがプロセッシングユニット1004として用いられてもよい。
【0056】
当該システムバス1008は、バス構造の幾つかのタイプの何れでもよく、メモリバス(メモリコントローラの有無にかかわらず)、周辺機器バス、及び様々な市販のバスアーキテクチャの何れかを用いたローカルバスにさらに相互接続してもよい。システムメモリ1006は、リードオンリーメモリ(ROM)1010及びランダムアクセスメモリ(RAM)1012を含む。基本入出力システム(BIOS)は、ROM、EPROM、EEPROMの如き不揮発性メモリ1010に記憶され、起動時の如き間にコンピュータ1002内の要素間で情報を転送するのを助ける基本的ルーチンを含む。当該RAM1012は、また、キャッシングデータのためのスタティックRAMの如き高速度RAMを含み得る。
【0057】
コンピュータ1002は、外部使用のために適切なシャーシ(図示せず)内に構成されてもよい内蔵ハードディスクドライブ(HDD)1014(例えば、EIDE、SATA)と、(例えば、着脱可能なディスケット1018に対してリード又はライトをなす)磁気フロッピーディスクドライブ(FDD)1016と、(例えば、CD―ROMディスク1022を読み込むか又はDVDの如き他の高容量光学媒体からリード若しくはライトをなす)光学的ディスクドライブ1020と、をさらに含む。ハードディスクドライブ1014、磁気ディスクドライブ1016及び光ディスクドライブ1020は、ハードディスク装置インタフェース1024、磁気ディスクドライブインタフェース1026及び光学的駆動インタフェース1028のそれぞれによってシステムバス1008に接続され得る。外部ドライブのためのインタフェース1024は、少なくともユニバーサルシリアルバス(USB)技術及びIEEE1394インタフェース技術の一方又は双方を含む。
【0058】
当該ドライブ及びそれらにあてがわれたコンピュータ可読媒体は、データ、データ構造、コンピュータ実行命令、その他の不揮発性記憶手段を提供する。コンピュータ1002の場合、当該ドライブ及び媒体は適切なデジタルフォーマットのどのデータの記憶にも適応している。上記のコンピュータ可読媒体の説明は、HDD、着脱可能な磁気ディスケット、CD又はDVDの如き着脱可能な光学媒体に関連してなされたが、Zipドライブ、磁気カセット、フラッシュメモリカード、カートリッジ、又は同等品の如きコンピュータよって読込可能な媒体の他のタイプもまた当該例示的な動作環境で用いられてもよいし、さらに、何らかのタイプの媒体が当該開示されたアーキテクチャの新規な方法を実行するためのコンピュータ実行命令を含んでもよいことが当業者よって認識されるべきである。
【0059】
幾つかのプログラムモジュールは、当該ドライブ及びRAM1012に記憶されることができ、オペレーティングシステム1030、1つ以上のアプリケーションプログラム1032、他のプログラムモジュール1034及びプログラムデータ1036を含む。ソフトウェアファクトリシステム400はアプリケーションプログラム1032であり得る。当該オペレーティングシステムの全て又は一部は、アプリケーション、モジュール、及び/又はデータもまたRAM1012に一時的に記憶されてもよい。当該開示されたアーキテクチャが様々な市販のオペレーティングシステム又はオペレーティングシステムの組合せによって実行され得ることは言うまでもない。
【0060】
ユーザは、例えば、キーボード1038及びマウス1040の如きポインティングデバイスの如き、1つ以上の有線/無線入力装置を介してコンピュータ1002にコマンド命令及び情報を入力することができる。他の入力装置(図示せず)は、マイクロホン、IRリモートコントロール、ジョイスティック、ゲームパッド、スタイラスペン、タッチスクリーン、又は同様品を含んでもよい。これら及び他の入力装置は、しばしば、システムバス1008に結合された入力装置インタフェース1042を介してプロセッシングユニット1004に接続されるが、パラレルポート、IEEE1394シリアルポート、ゲームポート、USBポート、IRインタフェース、その他の如き他のインタフェースを介しても接続され得る。
【0061】
ディスプレイモニタ1044又は他のタイプの装置もまた、ビデオアダプタ1046の如きインタフェースを介してシステムバス1008に接続される。モニタ1044に加えて、コンピュータは、通常、スピーカ、プリンタ、その他の如き他の周辺出力装置(図示せず)を含む。
【0062】
コンピュータ1002は、リモートコンピュータ1048の如き1つ以上のリモートコンピュータへの有線及び/又は無線通信を介した論理的接続を用いたネットワーク化環境で動作してもよい。リモートコンピュータ1048は、ワークステーション、サーバコンピュータ、ルータ、パソコン、ポータブルコンピュータ、マイクロプロセッサベースの娯楽装置、ピア装置又は他の一般のネットワークノードであることができ、簡潔さのためにメモリ/ストレージ装置1050みが示されているが、コンピュータ1002に関連して記載された要素の多く又は全てを典型的には含んでもよい。描写された論理的接続は、ローカルエリアネットワーク(LAN)1052及び/又はワイドエリアネットワーク(WAN)1054の如きより大きいネットワークへの有線/無線接続態様を含む。かかるLAN及びWANネットワーク化環境は、事務所や企業においてありふれたものであり、イントラネットの如き企業ワイドネットワークを容易にし、それらの全てがインターネットの如き地球規模通信ネットワークに接続されてもよい。
【0063】
LANネットワーキング環境で用いられるとき、コンピュータ1002は、有線及び/又は無線の通信ネットワークインタフェース又はアダプタ1056を介してローカルネットワーク1052に接続される。アダプタ1056がLAN1052への有線又は無線の通信を容易にしてもよく、ワイヤレスアダプタ1056と通信するために配置された無線アクセスポイントを含んでもよい。
【0064】
WANネットワーキング環境で用いられるときに、コンピュータ1002はモデム1058を含むか、又はWAN1054上の通信サーバに接続されるか、又はインターネットの如きWAN1054上の通信を確立する他の手段を有する。内蔵又は外付け且つ有線又は無線装置であり得るモデム1058は、シリアルポートインタフェース1042を介してシステムバス1008に接続されている。ネットワーク化された環境において、コンピュータ1002に関連して表されたプログラムモジュール又はその1部は、リモートメモリ/ストレージ装置1050に記憶され得る。当該示されたネットワーク接続は例示的なものであり、当該コンピュータ間の通信リンクを確立する他の手段が用いられ得ることは言うまでもない。
【0065】
図11をここで参照すると、ソフトウェアファクトリシステム400を用いたソフトウェア開発を容易にする例示的なコンピューティング環境1100の概略ブロック図が示されている。システム1100は1つ以上のクライアント1102を含む。クライアント1102は、ハードウェア及び/又はソフトウェア(例えば、スレッド、プロセス、コンピュータ)であり得る。クライアント1102は、例えば、クッキー及び/又は関連付けられたコンテキスト上の情報を格納し得る。
【0066】
システム1100もまた1つ以上のサーバ1104を含む。サーバ1104もまた、ハードウェア及び/又はソフトウェア(例えば、スレッド、プロセス、コンピュータ)であり得る。サーバ1104は、例えば、当該アーキテクチャを用いた変換を実行するためのスレッドを格納し得る。クライアント1102とサーバ1104との間の1つの可能な通信は2つ以上のコンピュータプロセス間の送信に適したデータパケットの形式であり得る。当該データパケットは、例えば、クッキー及び/又は関連付けられたコンテキスト状の情報を含む。システム1100は、クライアント1102とサーバ1104との間の通信を容易にするのに用いられ得る通信フレームワーク1106(例えば、インターネットの如き地球規模通信ネットワーク)を含む。
【0067】
通信が有線(光ファイバを含む)及び/又は無線技術を介して実現され得る。クライアント1102は1つ以上のクライアントデータ記憶部1108に動作可能に接続され、クライアントデータ記憶部1108はクライアント1102に局所的な情報(例えば、クッキー及び/又は関連付けられたコンテキスト状の情報)を記憶できる。同様に、サーバ1104は、サーバ1104に局所的な情報を記憶するのに用いられ得る1つ以上のサーバデータ記憶部1110に動作可能に接続されている。
【0068】
上記された内容は当該開示されたアーキテクチャの実施形態を含む。もちろん、コンポーネント及び/又は方法の考えられる全ての組み合せを説明することは不可能であるが、当業者は多くのさらなる組み合せや並べ方が可能であることを認識してもよい。従って、当該新規なアーキテクチャは、添付の請求の範囲の思想及び範囲内にある全てのかかる変形、改変及び変容を包含することが意図される。さらに、用語「含む」は、発明の詳細な説明又は特許請求の範囲において用いられる限り、請求項において「含む」が移行句として用いられた場合の「含む」と同様に包含を意味することが意図されている。
【技術分野】
【0001】
本発明は、ソフトウェアファクトリ仕様化及び実行モデルに関する。
【背景技術】
【0002】
ソフトウェア開発チームは、現実世界の問題へのソフトウェアソリーションを開発するのに分野特有の知識を駆使する。この分野特有の知識には、例えば、ビジネスプロセス、機能上又は非機能上の要求仕様、ビジネス及び技術的なアーキテクチャ、検証された技術上の選択及び実施上の決定、再使用可能なパターン及びガイドライン、規制法令の遵守、配備実践等に関する情報を含むはずである。
【0003】
ソフトウェアの開発は、通常、受容可能な品質にて達成される。例えば、受容可能な品質としては、機能的要求仕様に加えて、産業規格、製造上の実践、組織的方針及び/又は政府の規制を含むはずである。確立された方法及びパターンの実施を開発目標がさらに含むことによって、他者が当該開発されたソフトウェアを理解し維持し得るようになる。付加的な開発目標としては、品質属性、例えば、使用容易性、信頼性、性能及び/又は資源消費の受容可能レベルでの拡縮可能性を含むはずである。
【発明の概要】
【発明が解決しようとする課題】
【0004】
従来、開発チームは一般的なツール及びプラットフォームを用いてソフトウェアを開発していた。しかし、これら一般的なツール及びプラットフォームを用いることは、要求機能を提供するソリューションを受容可能な品質で作成するのが困難であったことから、開発チームにとってはフラストレーションを与えるものと検証されている。さらに、当該一般的なツール及びプラットフォームを用いても、開発チームが予算及び予定を確実に予測することはできなかった。例えば、一般的なツール及びプラットフォームの使用は、予算オーバやオンタイムに開発されないソフトウェアを招いていた。その上、当該開発されたソフトウェアは、乏しい品質及び/又は乏しい一貫性を有し、最適な追跡可能性からは程遠く、著しい増加時間を必要とするか及び/又は高い維持費を招いていた。
【課題を解決するための手段】
【0005】
以降は、本明細書において説明される新規な実施形態の基本的理解を提供するために簡略化された概要を提示する。本概要は、広範な概観ではなく、鍵となる/決定的な要素を識別するか又はその範囲を詳細に描写することは意図されない。その唯一の目的は、後述される詳細な説明の前置きとして単純化された形で概念を提示することである。
【0006】
当該開示されたシステム及び方法は、「ファクトリスキーマ」又は単に「スキーマ」と称されるメタモデル(すなわち、モデル)のインスタンスに基づいてソフトウェアファクトリを提供することよって、ソフトウェア開発を容易にする。当該モデルは、1つ以上のビューポイント(viewpoint)すなわち視点(perspective)を定義し、各ビューポイントは特定セットの関与(concern)を隔離する当該ソフトウェアのビューを定義し、典型的にはかかるビューの範囲、もしあれば当該ソフトウェアを表現するのに用いられる表記法、並びにもしあれば当該ソフトウェアを作成及び修正するのに用いられるエディタを定義する。当該モデルは、もしあれば各ビューポイントから作成されるワークプロダクトのタイプ、並びに、もしあればビュー又はワークプロダクトの各タイプを作成(create)又は維持するのに実行されるタスクのためのテンプレートをさらに定義してもよい。当該モデルは、ビューポイント間のリレーションシップのみならず、ビューポイントとワークプロダクトタイプとの間のリレーションシップ、並びにリレーションシップ(1つ又は複数)に亘って実行され得るオペレーションをさらに定義してもよい。加えて、当該モデルは、もしあれば当該タスクテンプレート(1つ又は複数)からインスタンス化される何らかのタスクの実行を支援するのに利用可能なアセットを記述してもよい。
【0007】
1つの実施形態において、コンピュータで実現されるソフトウェアファクトリ仕様化システムが提供される。当該ソフトウェアファクトリ仕様化システムは、例えばファクトリ開発者よって用いられて、ファクトリスキーマを指定し得る。まとめて説明されたファクトリスキーマ及びエディタ、タスクテンプレート及びアセットは、「ソフトウェアファクトリ」又は単に「ファクトリ」を形成し、かかるファクトリは分野特有の知識を取り込むことができ、例えば、ビジネスプロセス、要求仕様、アーキテクチャ、技術的決定、実装、パターン及びガイドライン、規制法令遵守、開発制約等の知識を取り込むことができる。一旦実装されると、ソフトウェアファクトリが用いられて、例えば、汎用的な対話型開発環境(IDE)が仕立てられて、特定の種類のソフトウェアソリューションが開発され得る。
【0008】
前述及び関係する目標を達成するために、例示的な特定の態様が本明細書において引き続く説明及び添付の図面に関連して説明される。しかし、これらの態様は、本明細書で説明される原理が用いられ得る多様な形態のうちの僅かのものを示すに過ぎない。他の優位且つ新規な特徴が、当該図面と結びつけて考慮されるとき、引き続く詳細な説明から明らかになる。
【図面の簡単な説明】
【0009】
【図1】コンピュータで実現されるソフトウェアファクトリ仕様化システムを示すブロック図である。
【図2】例示的なファクトリスキーマを示すブロック図である。
【図3】ファクトリスキーマのための例示的なメタモデルを示すブロック図である。
【図4】コンピュータで実現されるソフトウェアファクトリシステムを示すブロック図である。
【図5】対話型開発環境の例示的なユーザインタフェースを示すブロック図である。
【図6】対話型開発環境の例示的な他のユーザインタフェースを示すブロック図である。
【図7】対話型開発環境の例示的な他のユーザインタフェースを示すブロック図である。
【図8】ソフトウェアファクトリを指定する方法を示すフローチャートである。
【図9】ソフトウェアファクトリを用いる方法を示すフローチャートである。
【図10】当該開示されたアーキテクチャの実行を動作可能とするコンピュータシステムを示すブロック図である。
【図11】例示的なコンピュータ環境を示すブロック図である。
【発明を実施するための形態】
【0010】
当該開示されたシステム及び方法は、「ファクトリスキーマ」又は単に「スキーマ」と称されるメタモデル(すなわちモデル)のインスタンスに基づいてソフトウェアファクトリを提供することよって、ソフトウェア開発を容易にする。当該ファクトリスキーマは、現実世界の問題へのソフトウェアソリューションの構築を容易にするために分野特有の知識を取り込み、かかるソリューションを構築するためにソフトウェア開発チームよって実行され得るタスクを定義し、当該タスクを実行するときに用いられ得るエディタ及びアセットを提供する。
【0011】
当該モデルは、1つ以上のビューポイントすなわち視点を定義し、各ビューポイントは特定セットの関与を隔離する当該ソフトウェアのビューを定義し、典型的にはかかるビューの範囲、もしあれば当該ソフトウェアを表現するのに用いられる表記法、並びにもしあれば当該ソフトウェアを作成及び修正するのに用いられるエディタを定義する。当該モデルは、もしあれば各ビューポイントから作成されるワークプロダクトのタイプ、並びに、もしあればビュー又はワークプロダクトの各タイプを作成又は維持するのに実行されるタスクのためのテンプレートをさらに定義してもよい。当該モデルは、ビューポイント間のリレーションシップのみならず、ビューポイントとワークプロダクトタイプとの間のリレーションシップ、並びにリレーションシップ(1つ又は複数)に亘って実行され得るオペレーションをさらに定義してもよい。加えて、当該モデルは、もしあれば当該タスクテンプレート(1つ又は複数)からインスタンス化される何らかのタスクの実行を支援するのに利用可能なアセットを記述してもよい。
【0012】
かかるモデルは、例えばファクトリ開発者よって定義され得る。1つの実施形態において、当該モデル及び当該エディタ、定義されたテンプレート及びアセットは、開発チームよって対話型開発環境においてまとめて用いられて、特定のタイプのプロダクト(例えば、クライアントアプリケーション、モバイルクライアント、ウェブサービス、その他)を作成することができる。
【0013】
ここで図面を参照すると、全体を通して同様の参照番号は同様の要素を参照するために用いられる。引き続く説明において、幾つかの具体的な詳細は完全な理解を提供するために記載される。しかし、当該新規な実施形態がこれら具体的な詳細無しに実践され得ることは明らかであろう。他の例において、周知の構造及び装置がそれらの説明を容易にするためにブロック図の形で示されている。
【0014】
図を初めに参照すると、図1はコンピュータで実現されるソフトウェアファクトリ仕様化システム100を示している。システム100は、メタモデル110と、ユーザインタフェースコンポーネント120と、ファクトリスキーマ130(すなわち、メタモデル110のインスタンス)とを含む。ユーザインタフェースコンポーネント120を介して、ユーザ(例えば、ファクトリ開発者)は、メタモデル110と対話処理して、特定のソフトウェアファクトリのためのファクトリスキーマ130を定義する。1つの実施形態において、当該ユーザインタフェースコンポーネント120は対話型開発環境を含む。
【0015】
ファクトリスキーマ130は、対話型開発環境において、当該エディタ、記述されたタスクテンプレート及びアセットと一緒に用いられて、プロダクト(例えば、クライアントアプリケーション、モバイルクライアント、ウェブサービス、その他)の仕様化、開発、配備及び保守を支援する。ファクトリスキーマ130と、まとめて説明されたエディタ、タスクテンプレート及びアセットとは、「ソフトウェアファクトリ」すなわち単に「ファクトリ」を形成し、かかる「ファクトリ」は、ソフトウェア資産の組織的な再利用を可能とすることによってソフトウェア開発チームの生産性を改善するのに用いられることができ、当該ソフトウェア資産は、良く定義された変容可能な特性(point)を活用することによって、特定タイプのソフトウェアシステムの広範囲な変容物を作成するのに適用され得る。
【0016】
ソフトウェア資産の再利用を促進するために設計された従来のシステムは僅かに成功しているだけだった。ワークプロダクトが開発されるアーキテクチャ上のコンテキストを定義するファクトリスキーマ130の構造を指定することよって、各ワークプロダクトを開発するのに用いられるプロセス(1つ又は複数)を同一のアーキテクチャ上のコンテキストに置くことよって、並びに、例えば対話型開発環境内で当該プロセス(1つ又は複数)の制定を支援するのに適用され得るアセットを提供することよって、メタモデル110はソフトウェア資産のより効果的な再利用を容易にする。
【0017】
図2に着目すると、メタモデル110は、1セットのビューポイント210のファクトリスキーマ130内への仕様化を支援する。例えば、ビューポイント210は、開発中のソフトウェアの特定の態様と一致することができ、特定の役割(role:ロール)における利害関係人の関与を表すと共に隔離する。
【0018】
当該メタモデル110は、ビューポイント210間及びビューポイント210とワークプロダクトタイプ260との間のリレーションシップ220と、リレーションシップ220に亘って実行され得るオペレーションと、からなるファクトリスキーマ130内への仕様化を支援する。その上、当該メタモデル110は、各ビューポイント210毎のワークストリーム(例えばカスタムプロセス(1つ又は複数))のためのテンプレート270を含むタスクを記述するタスクテンプレート240のセットと、タスクテンプレート240(すなわち各タスク)の各インスタンスの実行を加速するのに利用可能なアセット250のセット(例えば再使用可能なアセット)と、からなるファクトリスキーマ130内への仕様化を支援する。メタモデル110は、各タスクよって消費される及び/又は作成されるべきワークプロダクト260のタイプからなるファクトリスキーマ130内への定義化をさらに支援する。
【0019】
図3にいったん着目すると、例示的なメタモデル110が統一化モデリング言語(UML)を用いて記述されている。メタモデル110は、ファクトリスキーマ130であるところのそのインスタンスの構造を、ファクトリスキーマに現れてもよい要素(例えば、アセット、タスク及びビューポイント)のタイプとそれらの間のリレーションシップとを指定することで記述する。
【0020】
図1、図2及び図3を参照すると、当該メタモデル110は、ビューポイント210を定義するために構造化されたフレームワークをファクトリ開発者に提供する。ビューポイント210は組み込まれるべきソフトウェアの視点である。1つの実施形態においてビューポイント210はしばしばエディタへ写像(map)される。
【0021】
各ビューポイント210毎に、当該ファクトリ開発者は、作成されるべきワークプロダクト260のタイプを指定し、当該指定されたワークプロダクト260を組み立てるための関連するタスク(例えば、カスタムプロセス(1つ又は複数))のセットからなる、タスクについてのテンプレート240とワークストリームについてのテンプレート270とを定義することができる。当該ファクトリ開発者は、タスクテンプレート240よって記述されるタスクの制定を支援するアセット250(例えば、再使用可能なアセット)をさらに指定できる。例えばファクトリ開発者よって指定される、ビューポイント210、リレーションシップ220、オペレーション230、タスクテンプレート240及びアセットはファクトリスキーマ130よって記述され得る。アセット250は、例えば、ドキュメント、コードテンプレート、スクリプト、パターン、その他を含むことができる。
【0022】
ファクトリスキーマ130は、このように、ビューポイント210及びタスクテンプレート240を記述し、当該タスクはタスクテンプレート240よって記述される特定のタスクの性能を支援するのに利用可能なアセット250と一緒に当該特定のビューポイント210から実行される。
【0023】
ファクトリスキーマ130を介して、当該ファクトリ開発者は、ビジネスプロセス、要求仕様、アーキテクチャ、技術的決定、実施、パターン及びガイドライン、規制法令遵守及び同等物に関する分野特有の知識を取り込むことできる。かかるファクトリスキーマ130よって記述されるファクトリを用いることよって、開発チームは、当該ファクトリ開発者よって指定されるアーキテクチャ内の構造化形式でソフトウェアソリューションを作成することができる。一旦当該ファクトリ開発者よって指定されると、ファクトリスキーマ130は、以下にかなり詳細に説明されるようなソフトウェアファクトリとしての例えば対話型開発環境(IDE)において、当該エディタ、記述されたタスクテンプレート及びアセットと一緒に用いられる。
【0024】
メタモデル110を用いてファクトリスキーマ130を指定することよって、ファクトリ開発者はソフトウェアプロダクト開発のためのベースライン(baseline)を提供できる。ファクトリスキーマ130が反復可能なプロセスを定義することから、品質及び一貫性は、より精確に予測され得るし、経験が積まれるにつれて当該ファクトリを洗練化することよって改善され得る。その上、当該ファクトリ環境はソフトウェア要求仕様の追跡可能性を容易にできる。
【0025】
例えば、ファクトリスキーマ130は、完成されるべき必要があるワーク並びに当該ワークが完成され得る最高のやり方を当該ソフトウェア開発チームが迅速に特定するのを可能にする。1つの実施形態において、再使用可能なアセット250は、完成される必要がある当該ワークを当該ソフトウェア開発チームが迅速に実行するのを助けることができる。
【0026】
ファクトリスキーマ130に固有の構造は、当該ソフトウェアファクトリよって作成されるプロダクトの低減された保守費を結果として得ることを可能にする。その上、当該ソフトウェアファクトリよって作成されたプロダクトに対する変更がより容易に理解され得る。さらに、当該ソフトウェア開発チームの新規な構成員がより迅速に作業スピードを上げることができる。
【0027】
図4に着目すると、コンピュータで実現されるソフトウェアファクトリシステム400が示されている。システム400はユーザインタフェースコンポーネント410を含む。ユーザインタフェースコンポーネント410を介して、ユーザは、ファクトリスキーマ130、当該エディタ、記述されたタスクテンプレート及びアセットとの間で対話処理して、プロダクト420を作成する。「プロダクト」とは、ソフトウェアファクトリシステム400の出力に相当し、周知のタイプ(例えば、データアクセス層、被接続システム、その他)のソフトウェアを含むことができる。通常、特定のソフトウェアファクトリシステム400は、同一タイプのソフトウェアの変形物であるプロダクト(例えば、オンライン銀行窓口、スマートクライアント、モバイルクライアント、その他)を作成する。
【0028】
1つの実施形態において、ユーザインタフェースコンポーネント410は対話型開発環境(IDE)である。このように、ソフトウェアファクトリシステム400は、前に説明されるように、例えばファクトリ開発者よってファクトリスキーマ130に取り込まれた分野特有の知識の応用を供給及び支援するIDEの拡張である。ファクトリスキーマ130は、当該知識を要約し開発チームの構成員及び/又はそれらの顧客に利用可能とするコンテキスト化されたマニュアル及び/又は自動化されたガイダンスの作成及びパッケージ化の成果を得るのをさらに可能にする。
【0029】
システム400のユーザは、ユーザインタフェースコンポーネント410を介してファクトリスキーマ130と対話処理することができる。ユーザインタフェースコンポーネント410は、ファクトリスキーマ130と対話処理してプロダクト420の作成を補助するグラフィカルユーザインタフェース(GUI)及び/又はアプリケーションプログラムインタフェース(API)を公開することができる。
【0030】
ファクトリスキーマ130は、ビューポイント210の記述と、特定のビューポイント210に関連付けられたワークプロダクトタイプ260のセットと、特定のビューポイント及びワークプロダクトタイプ260に関連付けられたタスクテンプレート240のセットと、特定のタスクテンプレート240に関連付けられたアセット250と、を含む。すなわち、ファクトリスキーマ130は、特定のビューポイント210又はワークプロダクトタイプ260に関連付けられた特定のタスクテンプレート240に関連付けられたアセット250を記述する。
【0031】
1つの実施形態において、ファクトリスキーマ130は、当該開発チームの構成員がファクトリスキーマ130で定義されたビューポイント210に対応するプロダクト420(例えば、開発中のソフトウェアシステム)の1つ以上のビューにアクセスするのを可能とする。当該チーム構成員は、さらに、ビューポイント210に亘ってリレーションシップ220及びオペレーション230を検索及び使用し、タスクテンプレート240及びワークストリームテンプレート270からタスク及びワークストリーム(すなわち、カスタマイズされたプロセス)を生成し、それらタスクについて関連付けられたアセット250にアクセスして、IDE(例えば、マイクロソフト(登録商標)・ビジュアル・ストュディオ(登録商標)チーム・システム開発環境)に対する拡張として、ワークプロダクトの集合(すなわち、ワークプロダクトタイプ260のインスタンス)として表現される開発中のプロダクト420の状態を評価及び修正することができる。当該ファクトリスキーマ、当該ファクトリスキーマが記述するビューポイントのインスタンス(すなわち、ビュー)及び当該ファクトリスキーマが記述するワークプロダクトタイプのインスタンス(すなわちワークプロダクト)を用いることよって、当該IDEはプロダクト420の構造のユーザ視覚化を容易にできる。当該ファクトリスキーマよって供給されるテンプレートよって記述されるタスク及びワークストリームを用いることよって、当該IDEはさらに当該プロダクト420の部品に関するユーザの進捗追跡を容易にできる。
【0032】
システム400は、ファクトリスキーマ130について説明されたように、特定タイプのプロダクト420を組み立てる形態を支援し得る。ファクトリスキーマ130はプロダクト420を組み立てるためのカスタムプロセスを記述できる。ユーザインタフェースコンポーネント410を介して、ユーザは識別されたタスク及び各タスクを支援するアセットの実行に関して情報を得ることができる。
【0033】
1つの実施形態において、ファクトリスキーマ130は特定の必要性に関連付けられたタスクのコアサブセットを記述する。すなわち、ファクトリスキーマ130は、全てのプロダクト420に亘って共通且つ反復可能な態様を記述する。この形で、再使用可能なアセットの使用を通して品質が高まる一方で、ソフトウェア開発時間が低減され得る。
【0034】
次に、図5を参照すると、ファクトリスキーマを用いて構成された対話型開発環境500(例えば、ソフトウェアファクトリ開発環境)の例示的なユーザインタフェースが示されている。当該ユーザインタフェース500は、1つ以上のファクトリのプロダクトと、ビューポイント210と、特定のプロダクト420に関連付けられたビュー及びワークプロダクトと、を表示するためのプロダクトエクスプローラ領域510(例えば、エディタ領域)を含む。ユーザインタフェース500は、タスクテンプレート240から生成されたタスクと、特定のビューポイント210又はワークプロダクトタイプ260に関連付けられたワークストリームテンプレート270と、を表示するためのタスク領域520を含む。ユーザインタフェース500は、ソリューションエクスプローラ領域530と、プロパティ領域540と、プロジェクト領域550と、を含む。
【0035】
この例では、ユーザインタフェース500は、ソフトウェアファクトリシステム400を用いてソフトウェアを開発するためのプラットフォーム(例えば、GUI及びAPI)を提供する。ユーザインタフェース500は、ソフトウェアファクトリシステム400と対話処理してプロダクト420を作成するのにユーザを補助できる図形表現を提供する。この例では、当該ユーザは、単一の動作単位「デザイン作成」を選ぶことができる。当該「デザイン作成」タスクの選択によって、ソフトウェアファクトリシステム400はファクトリスキーマ130で指定された情報を表示する。
【0036】
図6に着目すると、対話型開発環境600の例示的なユーザインタフェースが示されている。この例では、当該ユーザは図5における「デザイン作成」を選択したとし、ファクトリスキーマ130に基づいて、「ビューポイント1」がアプリケーションエクスプローラ領域510に表示され、「タスク1」及び「タスクN」がタスク領域520に表示される。当該ファクトリ開発者によってファクトリスキーマ130で定義されたように、当該ユーザには、情報(例えば、ビューポイント210、タスクテンプレート240及び/又はアセット250から生成されるタスク)が与えられる。さらに、ソフトウェアファクトリシステム400の1つ以上のフローはファクトリスキーマ130によって記述される。
【0037】
当該ユーザは、ビューポイント210に関連付けられたビューを作成することができる。「ビュー」とは、開発中の特定のプロダクト420の特定のビューポイント210からの特定の記述である。ビューは、しばしば、特定のエディタに開かれた特定のドキュメントに写像される。ビューは、ソフトウェアファクトリシステム400が組み立てている特定のプロダクト420に関連付けられる。ビューは、また、特定のビューポイント210のコンテキストでファクトリスキーマ130に指定されたワークプロダクトタイプ260(すなわち、ワークプロダクト)の1つ以上のインスタンスを含んでもよい。
【0038】
図7を一時的に参照すると、対話型開発700の例示的なユーザインタフェースが示されている。図5及び6の実施形態に引き続いて、当該ユーザの現在の焦点は「ビュー1」(例えば、「ビューポイント1」のインスタンス)であり、当該ユーザは「タスク1」を選択したとし、アセット領域560に「アセット1」が表示される。アセット領域560は、もしあればタスクテンプレート240から生成された選択されたタスクに利用可能なアセット250を記述する。特定のビューポイント210のコンテキストにおいて当該ソフトウェア開発チーム構成員に利用可能な特定のアセット250と、当該ビューポイントに合致する特定のビューと、当該開発の一部として実行される必要がある特定のタスクと、作成及び保守されるべき特定のタイプ260のワークプロダクトと、を作ることは、当該開発プロセスをより整合的、追跡可能且つ予測可能にすることによってソフトウェア品質を改善し、未経験のソフトウェア開発者の訓練コストを低減するのに重要である。
【0039】
1つの実施形態において、ソフトウェアファクトリシステム400は、予算化及び予定化を助け得る情報、すなわちソフトウェア開発経験に関係付けられた情報を取り込むことができる。例えば、システム400は、特定のタスクを完了するのに要した時間量、特定のタスクに従事したユーザの数及びスキル、その他を取り込むことができる。
【0040】
図8は、ソフトウェアファクトリを指定する方法を示している。説明の単純化のために、本明細書で示される1つ以上の方法が、例えば、フローチャートすなわち工程系統図の形で一連の動作として示され且つ説明されると共に、当該方法は動作の順序において制限されず、何らかの動作がそれ自体に従って、本明細書で示された説明とは異なった順序及び/又は並行して発生してもよいことが理解され且つ認識されるべきである。例えば、方法が状態線図の如く一連の相互に関係する状態又はイベントとして代わりに表現され得ることを当業者は理解及び認識するであろう。さらに、方法で示された全ての動作は新規性のある実施形態にとって必須のものではない。
【0041】
ステップ800において、ビューポイントがファクトリスキーマ130、例えばメタモデル110のインスタンスにおいて作成される。例えば、ファクトリ開発者は、ソフトウェアファクトリシステム400の一部として対話型開発環境で用いられるべきファクトリスキーマを作成することができる。作成されたビューポイントは、特定の役割(ロール)において利害関係者の関与を表現及び隔離する、ソフトウェアアーキテクチャの特定の態様に対応し得る。
【0042】
ステップ802において、エディタが準備され、エディタ(1つ又は複数)を要求するビューポイントに割り当てられる。当該ビューポイントの幾つか又は全てはエディタを必要とするか、又は何れも必要としない。
【0043】
ステップ804において、タスクテンプレートが各ビューポイント毎に作成される。当該タスクテンプレートはワークストリームテンプレート270にグループ化することができ、ワークストリームテンプレート270は、当該特定のビューポイントのインスタンス(すなわち、ビュー(1つ又は複数))においてワークプロダクトタイプ260のインスタンスを組み立てるためのカスタムプロセス(1つ又は複数)を表現するワークストリームを記述している。ワークプロダクトタイプ260もこのステップで作成される。
【0044】
ステップ806において、アセットが準備され、各タスクに割り当てられる。当該アセットは、再使用可能なソフトウェア資産、例えば、ドキュメント、製法及び同等物であり得る。ステップ808において、リレーションシップがビューポイント210間及び/又はビューポイント210とワークプロダクトタイプ260との間に作成される。
【0045】
ステップ810において、オペレーションが定義され、リレーションシップ(1つ又は複数)に割り当てられる。ステップ812において、ファクトリスキーマ130とそれが記述する全ての項目とが記憶される。ファクトリスキーマ130とファクトリスキーマ130よって記述された項目とは、まとめて記憶され得る(例えば、ソフトウェアファクトリとして対話型開発環境で後に用いるために)。
【0046】
図9はソフトウェアファクトリを用いる方法を示している。ステップ900において、プロジェクトが、当該メタモデル(すなわち、ファクトリスキーマ130)のインスタンスに少なくとも部分的に基づいて作成される。ステップ902において、ビューポイントと、当該特定のビューポイントに対応するビューと、当該特定のビューに含まれるワークプロダクトとが表示される。当該ビューポイントは、当該プロジェクトに関連付けられた特定の役割(ロール)で働くファクトリユーザの関与に対応し得る。特定のビューポイントの下で、1つ以上のビューが(例えば、当該特定のプロジェクトのコンテキストで作成されたビューポイントのインスタンスとして)示され得る。特定のビューの下で、1つ以上のワークプロダクトが(すなわち、当該特定のビューのビューポイントに関連付けられたワークプロダクトタイプのインスタンスとして)示され得る。
【0047】
ステップ904において、選択されたビュー又はワークプロダクトに関連付けられたタスクがテンプレートから生成され、必要に応じて次いで表示される。例えば、当該タスクは、カスタムプロセス(1つ又は複数)を実施するワークストリームの一部であり得る。通常、タスクは、所与のコンテキストについて(すなわち、所与のビュー又はワークプロダクトについて)一度生成され、次いで、当該コンテキストが選択される度に表示される。1つの実施形態において、当該テンプレートにおけるパラメータの値は当該コンテキストよって提供され得る。例えば、タスクの名前は、当該タスクが関連付けられたワークプロダクトの名前から取られ得る。
【0048】
ステップ906において、選択されたタスクに関連付けられたアセットが表示される。ステップ908において、選択されたタスクが当該関連付けられたアセット(1つ又は複数)を用いて実行される。ステップ910において、当該ソフトウェアファクトリを用いて作成された特定のプロダクトが記憶される。当該プロダクトは当該選択されたタスク(1つ又は複数)を実行した結果であり得る。
【0049】
情報をユーザに表示する特定の方法がユーザインタフェースとして特定の図に関して説明された一方で、当業者は様々な他の選択肢が用いられ得ると認識するであろう。用語「スクリーン」、「スクリーンショット」、「ウェブページ」、「ドキュメント」及び「ページ」が本明細書では互いに交替可能に通常使われている。当該ページ又はスクリーンは、ディスプレイ表示として、グラフィカルユーザインタフェースとして、又はスクリーン上の情報描写の他の方法よって、(例えば、パーソナルコンピュータ、PDA、携帯電話、又は他の適切な装置に関わらず)記憶及び/又は送信され、この場合、当該ページに表示されるべきレイアウト及び情報又は内容はメモリ、データベース又は他の記憶装置に記憶される。
【0050】
本明細書で用いられるように、用語「コンポーネント」及び「システム」は、コンピュータ関連の実在物、ハードウェア、ハードウェア及びソフトウェアの組み合せ、ソフトウェア又は実行状態のソフトウェアの何れかを意味することが意図される。例えば、コンポーネントは、制限されるものではないが、プロセッサ上で走るプロセス、プロセッサ、ハードディスク装置、(光学的及び/又は磁気的な記憶媒体からなる)複数の記憶ドライブ、オブジェクト、実行可能なもの、実行スレッド、プログラム、及び/又はコンピュータであり得る。実例として、サーバ上で走るアプリケーションと当該サーバの双方がコンポーネントであり得る。1つ以上のコンポーネントは実行プロセス及び/又はスレッド内で常駐することができ、コンポーネントは、1つのコンピュータに局在化される及び/又は2台以上のコンピュータ間に分散配置され得る。
【0051】
図10をここで参照すると、当該開示されたソフトウェアファクトリシステムを実行する動作が可能なコンピュータシステム1000のブロック図が示されている。本発明の様々な態様についての追加的なコンテキストを提供するために、図10及び引き続く説明は、当該様々な態様が実施され得る適切なコンピュータシステム1000の簡潔且つ概括的な説明を提供することが意図されている。上記説明が1つ以上のコンピュータにおいて実行可能なコンピュータ実行可能命令の概括なコンテキストである一方、当業者は、新規な実施形態がまた他のプログラムモジュールの組み合せ及び/又はハードウェア及びソフトウェアの組み合せとして実施され得ることを認識するであろう。
【0052】
通常、プログラムモジュールは、特定のタスクを実行するか又は特定の抽象データ型を実装する、ルーチン、プログラム、コンポーネント、データ構造、その他を含む。さらに、当業者は、本発明の方法が他のコンピュータシステム構成によって、例えば、シングルプロセッサ又はマルチプロセッサコンピュータシステム、ミニコンピュータ、メインフレームコンピュータのみならず、パソコン、ハンドヘルドコンピュータ装置、マイクロプロセッサベース又はプログラム可能な消費者エレクトロニクス、及び同等品を含む構成によって、それらの各々が1つ以上の関連する装置に動作可能に接続され得る構成によって実施し得ることを認識するであろう。
【0053】
当該例示された態様は、通信ネットワークを介して連結されるリモートプロセッシング装置よって特定のタスクが実行される分散配置されたコンピューティング環境において実施されてもよい。分散配置されたコンピューティング環境において、プログラムモジュールは、ローカル及びリモートメモリ記憶装置双方に置かれてもよい。
【0054】
コンピュータは、典型的には、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、当該コンピュータよってアクセスでき、揮発性及び不揮発性媒体、着脱可能及び着脱不能な媒体を含む何らかの利用可能な媒体を含む。例えば、限定ではなく、コンピュータ可読媒体は、コンピュータ記憶媒体又はコンピュータ通信媒体であり得る。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール又は他のデータの如き情報の記憶のため何らかの方法又は技術で実現される、揮発性及び不揮発性媒体、着脱可能及び着脱不能な媒体を含む。コンピュータ記憶媒体は、限定されるものではないが、RAM、ROM、EEPROM、フラッシュメモリ又はその他のメモリ技術、CD―ROM、デジタルビデオディスク(DVD)若しくは他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスクストレージ若しくは他の磁気記憶装置、又は所望の情報を記憶すると共に当該コンピュータよってアクセスされ得る他の何らかの他の媒体を含む。
【0055】
再び図10を参照すると、様々な態様を実行する例示的なコンピュータシステム1000はコンピュータ1002を含み、コンピュータ1002はプロセッシングユニット1004とシステムメモリ1006とシステムバス1008とを含む。システムバス1008は、限定するものではないが、システムメモリ1006からプロセッシングユニット1004に至るインタフェースを含む、システムコンポーネントのためのインタフェースを提供する。プロセッシングユニット1004は、様々な市販のプロセッサの何れでもあり得る。デュアルマイクロプロセッサ及び他のマルチプロセッサアーキテクチャがプロセッシングユニット1004として用いられてもよい。
【0056】
当該システムバス1008は、バス構造の幾つかのタイプの何れでもよく、メモリバス(メモリコントローラの有無にかかわらず)、周辺機器バス、及び様々な市販のバスアーキテクチャの何れかを用いたローカルバスにさらに相互接続してもよい。システムメモリ1006は、リードオンリーメモリ(ROM)1010及びランダムアクセスメモリ(RAM)1012を含む。基本入出力システム(BIOS)は、ROM、EPROM、EEPROMの如き不揮発性メモリ1010に記憶され、起動時の如き間にコンピュータ1002内の要素間で情報を転送するのを助ける基本的ルーチンを含む。当該RAM1012は、また、キャッシングデータのためのスタティックRAMの如き高速度RAMを含み得る。
【0057】
コンピュータ1002は、外部使用のために適切なシャーシ(図示せず)内に構成されてもよい内蔵ハードディスクドライブ(HDD)1014(例えば、EIDE、SATA)と、(例えば、着脱可能なディスケット1018に対してリード又はライトをなす)磁気フロッピーディスクドライブ(FDD)1016と、(例えば、CD―ROMディスク1022を読み込むか又はDVDの如き他の高容量光学媒体からリード若しくはライトをなす)光学的ディスクドライブ1020と、をさらに含む。ハードディスクドライブ1014、磁気ディスクドライブ1016及び光ディスクドライブ1020は、ハードディスク装置インタフェース1024、磁気ディスクドライブインタフェース1026及び光学的駆動インタフェース1028のそれぞれによってシステムバス1008に接続され得る。外部ドライブのためのインタフェース1024は、少なくともユニバーサルシリアルバス(USB)技術及びIEEE1394インタフェース技術の一方又は双方を含む。
【0058】
当該ドライブ及びそれらにあてがわれたコンピュータ可読媒体は、データ、データ構造、コンピュータ実行命令、その他の不揮発性記憶手段を提供する。コンピュータ1002の場合、当該ドライブ及び媒体は適切なデジタルフォーマットのどのデータの記憶にも適応している。上記のコンピュータ可読媒体の説明は、HDD、着脱可能な磁気ディスケット、CD又はDVDの如き着脱可能な光学媒体に関連してなされたが、Zipドライブ、磁気カセット、フラッシュメモリカード、カートリッジ、又は同等品の如きコンピュータよって読込可能な媒体の他のタイプもまた当該例示的な動作環境で用いられてもよいし、さらに、何らかのタイプの媒体が当該開示されたアーキテクチャの新規な方法を実行するためのコンピュータ実行命令を含んでもよいことが当業者よって認識されるべきである。
【0059】
幾つかのプログラムモジュールは、当該ドライブ及びRAM1012に記憶されることができ、オペレーティングシステム1030、1つ以上のアプリケーションプログラム1032、他のプログラムモジュール1034及びプログラムデータ1036を含む。ソフトウェアファクトリシステム400はアプリケーションプログラム1032であり得る。当該オペレーティングシステムの全て又は一部は、アプリケーション、モジュール、及び/又はデータもまたRAM1012に一時的に記憶されてもよい。当該開示されたアーキテクチャが様々な市販のオペレーティングシステム又はオペレーティングシステムの組合せによって実行され得ることは言うまでもない。
【0060】
ユーザは、例えば、キーボード1038及びマウス1040の如きポインティングデバイスの如き、1つ以上の有線/無線入力装置を介してコンピュータ1002にコマンド命令及び情報を入力することができる。他の入力装置(図示せず)は、マイクロホン、IRリモートコントロール、ジョイスティック、ゲームパッド、スタイラスペン、タッチスクリーン、又は同様品を含んでもよい。これら及び他の入力装置は、しばしば、システムバス1008に結合された入力装置インタフェース1042を介してプロセッシングユニット1004に接続されるが、パラレルポート、IEEE1394シリアルポート、ゲームポート、USBポート、IRインタフェース、その他の如き他のインタフェースを介しても接続され得る。
【0061】
ディスプレイモニタ1044又は他のタイプの装置もまた、ビデオアダプタ1046の如きインタフェースを介してシステムバス1008に接続される。モニタ1044に加えて、コンピュータは、通常、スピーカ、プリンタ、その他の如き他の周辺出力装置(図示せず)を含む。
【0062】
コンピュータ1002は、リモートコンピュータ1048の如き1つ以上のリモートコンピュータへの有線及び/又は無線通信を介した論理的接続を用いたネットワーク化環境で動作してもよい。リモートコンピュータ1048は、ワークステーション、サーバコンピュータ、ルータ、パソコン、ポータブルコンピュータ、マイクロプロセッサベースの娯楽装置、ピア装置又は他の一般のネットワークノードであることができ、簡潔さのためにメモリ/ストレージ装置1050みが示されているが、コンピュータ1002に関連して記載された要素の多く又は全てを典型的には含んでもよい。描写された論理的接続は、ローカルエリアネットワーク(LAN)1052及び/又はワイドエリアネットワーク(WAN)1054の如きより大きいネットワークへの有線/無線接続態様を含む。かかるLAN及びWANネットワーク化環境は、事務所や企業においてありふれたものであり、イントラネットの如き企業ワイドネットワークを容易にし、それらの全てがインターネットの如き地球規模通信ネットワークに接続されてもよい。
【0063】
LANネットワーキング環境で用いられるとき、コンピュータ1002は、有線及び/又は無線の通信ネットワークインタフェース又はアダプタ1056を介してローカルネットワーク1052に接続される。アダプタ1056がLAN1052への有線又は無線の通信を容易にしてもよく、ワイヤレスアダプタ1056と通信するために配置された無線アクセスポイントを含んでもよい。
【0064】
WANネットワーキング環境で用いられるときに、コンピュータ1002はモデム1058を含むか、又はWAN1054上の通信サーバに接続されるか、又はインターネットの如きWAN1054上の通信を確立する他の手段を有する。内蔵又は外付け且つ有線又は無線装置であり得るモデム1058は、シリアルポートインタフェース1042を介してシステムバス1008に接続されている。ネットワーク化された環境において、コンピュータ1002に関連して表されたプログラムモジュール又はその1部は、リモートメモリ/ストレージ装置1050に記憶され得る。当該示されたネットワーク接続は例示的なものであり、当該コンピュータ間の通信リンクを確立する他の手段が用いられ得ることは言うまでもない。
【0065】
図11をここで参照すると、ソフトウェアファクトリシステム400を用いたソフトウェア開発を容易にする例示的なコンピューティング環境1100の概略ブロック図が示されている。システム1100は1つ以上のクライアント1102を含む。クライアント1102は、ハードウェア及び/又はソフトウェア(例えば、スレッド、プロセス、コンピュータ)であり得る。クライアント1102は、例えば、クッキー及び/又は関連付けられたコンテキスト上の情報を格納し得る。
【0066】
システム1100もまた1つ以上のサーバ1104を含む。サーバ1104もまた、ハードウェア及び/又はソフトウェア(例えば、スレッド、プロセス、コンピュータ)であり得る。サーバ1104は、例えば、当該アーキテクチャを用いた変換を実行するためのスレッドを格納し得る。クライアント1102とサーバ1104との間の1つの可能な通信は2つ以上のコンピュータプロセス間の送信に適したデータパケットの形式であり得る。当該データパケットは、例えば、クッキー及び/又は関連付けられたコンテキスト状の情報を含む。システム1100は、クライアント1102とサーバ1104との間の通信を容易にするのに用いられ得る通信フレームワーク1106(例えば、インターネットの如き地球規模通信ネットワーク)を含む。
【0067】
通信が有線(光ファイバを含む)及び/又は無線技術を介して実現され得る。クライアント1102は1つ以上のクライアントデータ記憶部1108に動作可能に接続され、クライアントデータ記憶部1108はクライアント1102に局所的な情報(例えば、クッキー及び/又は関連付けられたコンテキスト状の情報)を記憶できる。同様に、サーバ1104は、サーバ1104に局所的な情報を記憶するのに用いられ得る1つ以上のサーバデータ記憶部1110に動作可能に接続されている。
【0068】
上記された内容は当該開示されたアーキテクチャの実施形態を含む。もちろん、コンポーネント及び/又は方法の考えられる全ての組み合せを説明することは不可能であるが、当業者は多くのさらなる組み合せや並べ方が可能であることを認識してもよい。従って、当該新規なアーキテクチャは、添付の請求の範囲の思想及び範囲内にある全てのかかる変形、改変及び変容を包含することが意図される。さらに、用語「含む」は、発明の詳細な説明又は特許請求の範囲において用いられる限り、請求項において「含む」が移行句として用いられた場合の「含む」と同様に包含を意味することが意図されている。
【特許請求の範囲】
【請求項1】
コンピュータで実現されるソフトウェアファクトリ仕様化システム(100)であって、
ファクトリスキーマ(130)を記述しているメタモデル(110)であり、前記ファクトリスキーマは複数のビューポイントを含み、1つのビューポイントは1つ以上のワークプロダクトタイプを含み、各ビューポイント又は各ワークプロダクトタイプは1つ以上の関連付けられたワークストリームテンプレートを有し、1つのワークストリームテンプレートはタスクテンプレートとタスクテンプレート間のリレーションシップとを含み、各タスクテンプレートは前記ビューポイント及びワークプロダクトタイプのインスタンスの作成及び修正を支援するタスクを記述し、前記ファクトリスキーマは、ビューポイント間のリレーションシップ及び特定のビューポイントと特定のワークプロダクトタイプとの間のリレーションシップ、ビューポイント間のリレーションシップに亘って実行され得るオペレーション、並びに、各タスクテンプレートに利用可能な零個、1つ又はそれ以上のアセットをさらに含む、メタモデル(110)と、
前記メタモデルと対話処理して前記ファクトリスキーマを指定するユーザインタフェースコンポーネント(120)と、
を含むことを特徴とするシステム。
【請求項2】
前記ユーザインタフェースコンポーネントは、対話型開発環境を含むことを特徴とする請求項1に記載のシステム。
【請求項3】
前記アセットの少なくとも1つは、再使用可能なソフトウェア資産であることを特徴とする請求項1に記載のシステム。
【請求項4】
前記ファクトリスキーマは、特定のタスクよって消費されるワークプロダクトのタイプの定義をさらに含むことを特徴とする請求項1に記載のシステム。
【請求項5】
前記ファクトリスキーマは、特定のタスクよって作成されるべきワークプロダクトのタイプの定義をさらに含むことを特徴とする請求項1に記載のシステム。
【請求項6】
前記ファクトリスキーマは、設計者に写像する特定のビューポイントを含むことを特徴とする請求項1に記載のシステム。
【請求項7】
前記ファクトリスキーマは、ソフトウェアファクトリシステムのためのスキーマであることを特徴とする請求項1に記載のシステム。
【請求項8】
各タスクテンプレートは、カスタムプロセスを含むワークストリームを記述しているワークストリームテンプレートの部分であることを特徴とする請求項1に記載のシステム。
【請求項9】
前記ファクトリスキーマは、各タスクテンプレートに利用可能なアセットの記述を含むことを特徴とする請求項1に記載のシステム。
【請求項10】
コンピュータで実現されるソフトウェアファクトリ仕様化システム(400)であって、
複数のビューポイントを含むファクトリスキーマ(130)であり、1つのビューポイントは1つ以上のワークプロダクトタイプを含み、各ビューポイント又は各ワークプロダクトタイプは1つ以上の関連付けられたワークストリームテンプレートを有し、1つのワークストリームテンプレートはタスクテンプレートとタスクテンプレート間のリレーションシップとを含み、各タスクテンプレートは前記ビューポイント及びワークプロダクトタイプのインスタンスの作成及び修正を支援するタスクを記述し、前記ファクトリスキーマは、ビューポイント間及び特定のビューポイントと特定のワークプロダクトタイプとのリレーションシップ、ビューポイント間のリレーションシップに亘って実行され得るオペレーション、並びに、各タスクテンプレートに利用可能な零個、1つ又はそれ以上のアセットをさらに定義している、ファクトリスキーマ(130)と、
前記ファクトリスキーマと対話処理してプロダクト(420)を作成するユーザインタフェースコンポーネント(410)と、
を含むことを特徴とするシステム。
【請求項11】
前記スキーマと対話処理することは、少なくとも2つの特定のビューポイント間の特定のリレーションシップを検索及び使用することであることを特徴とする請求項10に記載のシステム。
【請求項12】
前記スキーマと対話処理することは、ビューポイント間の特定のリレーションシップに関連付けられたオペレーションを検索及び使用することであることを特徴とする請求項10に記載のシステム。
【請求項13】
前記スキーマと対話処理することは、選択されたビューポイント又はワークプロダクトインスタンスに関連付けられたタスク及び/又はワークストリームテンプレートから生成された1つ以上のタスクにアクセスすることと、選択されたタスクに関連付けられたアセットにアクセスすることと、のうちの少なくとも1つを含むことを特徴とする請求項10に記載のシステム。
【請求項14】
前記ユーザインタフェースコンポーネントは、対話型開発環境を含むことを特徴とする請求項10に記載のシステム。
【請求項15】
前記ユーザインタフェースコンポーネントは、ビューポイントと、ビューと、ワークプロダクトと、選択されたビュー又はワークプロダクトに関連付けられたワークストリーム又はタスクと、のうちの少なくとも1つを表示するユーザインタフェースを含むことを特徴とする請求項10に記載のシステム。
【請求項16】
前記ユーザインタフェースは、選択されたタスクに関連付けられた零個、1つ又はそれ以上のアセットをさらに表示することを特徴とする請求項15に記載のシステム。
【請求項17】
コンピュータが実行する、コンピュータソフトウェアファクトリを用いる方法であって、
ファクトリスキーマに少なくとも部分的に基づいてプロジェクトを作成するステップ(900)であり、前記ファクトリスキーマは複数のビューポイントを含み、1つのビューポイントは1つ以上のワークプロダクトタイプを含み、各ビューポイント又は各ワークプロダクトタイプは1つ以上の関連付けられたワークストリームテンプレートを有し、1つのワークストリームテンプレートはタスクテンプレートとタスクテンプレート間のリレーションシップとを含み、各タスクテンプレートは前記ビューポイント及びワークプロダクトタイプのインスタンスの作成及び修正を支援するタスクを記述し、前記ファクトリスキーマは、ビューポイント間及び特定のビューポイントと特定のワークプロダクトタイプとの間のリレーションシップ、ビューポイント間のリレーションシップに亘って実行され得るオペレーション、並びに、各タスクテンプレートに利用可能な零個、1つ又はそれ以上のアセットをさらに定義する、ステップ(900)と、
複数のビューポイント、前記複数のビューポイントのインスタンス、並びに、前記複数のビューポイントのインスタンスによって内蔵されているワークプロダクトを表示するステップ(902)と、
選択されたビュー又はワークプロダクトに関連付けられた少なくとも1つのタスクを表示するステップ(904)と、
を含むことを特徴とする方法。
【請求項18】
選択されたタスクに関連付けられた少なくとも1つのアセットを表示するステップをさらに含むことを特徴とする請求項17に記載の方法。
【請求項19】
当該選択されたアセットを用いて、選択されたタスクを実行するステップをさらに含むことを特徴とする請求項18に記載の方法。
【請求項20】
当該選択されたタスクのうちの1つ以上を実行した結果であるプロダクトを記憶するステップをさらに含むことを特徴とする請求項19に記載の方法。
【請求項1】
コンピュータで実現されるソフトウェアファクトリ仕様化システム(100)であって、
ファクトリスキーマ(130)を記述しているメタモデル(110)であり、前記ファクトリスキーマは複数のビューポイントを含み、1つのビューポイントは1つ以上のワークプロダクトタイプを含み、各ビューポイント又は各ワークプロダクトタイプは1つ以上の関連付けられたワークストリームテンプレートを有し、1つのワークストリームテンプレートはタスクテンプレートとタスクテンプレート間のリレーションシップとを含み、各タスクテンプレートは前記ビューポイント及びワークプロダクトタイプのインスタンスの作成及び修正を支援するタスクを記述し、前記ファクトリスキーマは、ビューポイント間のリレーションシップ及び特定のビューポイントと特定のワークプロダクトタイプとの間のリレーションシップ、ビューポイント間のリレーションシップに亘って実行され得るオペレーション、並びに、各タスクテンプレートに利用可能な零個、1つ又はそれ以上のアセットをさらに含む、メタモデル(110)と、
前記メタモデルと対話処理して前記ファクトリスキーマを指定するユーザインタフェースコンポーネント(120)と、
を含むことを特徴とするシステム。
【請求項2】
前記ユーザインタフェースコンポーネントは、対話型開発環境を含むことを特徴とする請求項1に記載のシステム。
【請求項3】
前記アセットの少なくとも1つは、再使用可能なソフトウェア資産であることを特徴とする請求項1に記載のシステム。
【請求項4】
前記ファクトリスキーマは、特定のタスクよって消費されるワークプロダクトのタイプの定義をさらに含むことを特徴とする請求項1に記載のシステム。
【請求項5】
前記ファクトリスキーマは、特定のタスクよって作成されるべきワークプロダクトのタイプの定義をさらに含むことを特徴とする請求項1に記載のシステム。
【請求項6】
前記ファクトリスキーマは、設計者に写像する特定のビューポイントを含むことを特徴とする請求項1に記載のシステム。
【請求項7】
前記ファクトリスキーマは、ソフトウェアファクトリシステムのためのスキーマであることを特徴とする請求項1に記載のシステム。
【請求項8】
各タスクテンプレートは、カスタムプロセスを含むワークストリームを記述しているワークストリームテンプレートの部分であることを特徴とする請求項1に記載のシステム。
【請求項9】
前記ファクトリスキーマは、各タスクテンプレートに利用可能なアセットの記述を含むことを特徴とする請求項1に記載のシステム。
【請求項10】
コンピュータで実現されるソフトウェアファクトリ仕様化システム(400)であって、
複数のビューポイントを含むファクトリスキーマ(130)であり、1つのビューポイントは1つ以上のワークプロダクトタイプを含み、各ビューポイント又は各ワークプロダクトタイプは1つ以上の関連付けられたワークストリームテンプレートを有し、1つのワークストリームテンプレートはタスクテンプレートとタスクテンプレート間のリレーションシップとを含み、各タスクテンプレートは前記ビューポイント及びワークプロダクトタイプのインスタンスの作成及び修正を支援するタスクを記述し、前記ファクトリスキーマは、ビューポイント間及び特定のビューポイントと特定のワークプロダクトタイプとのリレーションシップ、ビューポイント間のリレーションシップに亘って実行され得るオペレーション、並びに、各タスクテンプレートに利用可能な零個、1つ又はそれ以上のアセットをさらに定義している、ファクトリスキーマ(130)と、
前記ファクトリスキーマと対話処理してプロダクト(420)を作成するユーザインタフェースコンポーネント(410)と、
を含むことを特徴とするシステム。
【請求項11】
前記スキーマと対話処理することは、少なくとも2つの特定のビューポイント間の特定のリレーションシップを検索及び使用することであることを特徴とする請求項10に記載のシステム。
【請求項12】
前記スキーマと対話処理することは、ビューポイント間の特定のリレーションシップに関連付けられたオペレーションを検索及び使用することであることを特徴とする請求項10に記載のシステム。
【請求項13】
前記スキーマと対話処理することは、選択されたビューポイント又はワークプロダクトインスタンスに関連付けられたタスク及び/又はワークストリームテンプレートから生成された1つ以上のタスクにアクセスすることと、選択されたタスクに関連付けられたアセットにアクセスすることと、のうちの少なくとも1つを含むことを特徴とする請求項10に記載のシステム。
【請求項14】
前記ユーザインタフェースコンポーネントは、対話型開発環境を含むことを特徴とする請求項10に記載のシステム。
【請求項15】
前記ユーザインタフェースコンポーネントは、ビューポイントと、ビューと、ワークプロダクトと、選択されたビュー又はワークプロダクトに関連付けられたワークストリーム又はタスクと、のうちの少なくとも1つを表示するユーザインタフェースを含むことを特徴とする請求項10に記載のシステム。
【請求項16】
前記ユーザインタフェースは、選択されたタスクに関連付けられた零個、1つ又はそれ以上のアセットをさらに表示することを特徴とする請求項15に記載のシステム。
【請求項17】
コンピュータが実行する、コンピュータソフトウェアファクトリを用いる方法であって、
ファクトリスキーマに少なくとも部分的に基づいてプロジェクトを作成するステップ(900)であり、前記ファクトリスキーマは複数のビューポイントを含み、1つのビューポイントは1つ以上のワークプロダクトタイプを含み、各ビューポイント又は各ワークプロダクトタイプは1つ以上の関連付けられたワークストリームテンプレートを有し、1つのワークストリームテンプレートはタスクテンプレートとタスクテンプレート間のリレーションシップとを含み、各タスクテンプレートは前記ビューポイント及びワークプロダクトタイプのインスタンスの作成及び修正を支援するタスクを記述し、前記ファクトリスキーマは、ビューポイント間及び特定のビューポイントと特定のワークプロダクトタイプとの間のリレーションシップ、ビューポイント間のリレーションシップに亘って実行され得るオペレーション、並びに、各タスクテンプレートに利用可能な零個、1つ又はそれ以上のアセットをさらに定義する、ステップ(900)と、
複数のビューポイント、前記複数のビューポイントのインスタンス、並びに、前記複数のビューポイントのインスタンスによって内蔵されているワークプロダクトを表示するステップ(902)と、
選択されたビュー又はワークプロダクトに関連付けられた少なくとも1つのタスクを表示するステップ(904)と、
を含むことを特徴とする方法。
【請求項18】
選択されたタスクに関連付けられた少なくとも1つのアセットを表示するステップをさらに含むことを特徴とする請求項17に記載の方法。
【請求項19】
当該選択されたアセットを用いて、選択されたタスクを実行するステップをさらに含むことを特徴とする請求項18に記載の方法。
【請求項20】
当該選択されたタスクのうちの1つ以上を実行した結果であるプロダクトを記憶するステップをさらに含むことを特徴とする請求項19に記載の方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公表番号】特表2011−501297(P2011−501297A)
【公表日】平成23年1月6日(2011.1.6)
【国際特許分類】
【出願番号】特願2010−530037(P2010−530037)
【出願日】平成20年10月10日(2008.10.10)
【国際出願番号】PCT/US2008/079557
【国際公開番号】WO2009/052026
【国際公開日】平成21年4月23日(2009.4.23)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.フロッピー
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】
【公表日】平成23年1月6日(2011.1.6)
【国際特許分類】
【出願日】平成20年10月10日(2008.10.10)
【国際出願番号】PCT/US2008/079557
【国際公開番号】WO2009/052026
【国際公開日】平成21年4月23日(2009.4.23)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.フロッピー
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】
[ Back to top ]