モデリング ソリューションの構築
開発プロジェクトでモデルを効果的に使用するには、チーム メンバーがプロジェクトのさまざまな部分のモデルを同時に作業できなければなりません。 このトピックは、レイヤー図全体で各レイヤーに対応するアプリケーションをさまざまな部分に分割するスキームを提案しています。
プロジェクトまたはサブプロジェクトをすばやく開始するには、選択したプロジェクト構造に従うプロジェクト テンプレートがあると便利です。 ここでは、このようなテンプレートを作成および使用する方法について説明します。
ここでは、複数のチーム メンバー (または複数のチーム) を必要とする大きなプロジェクトで作業していると想定しています。 プロジェクトのコードとモデルは、Team Foundation Server などのソース コントロール システムに保存されます。 少なくとも一部のチーム メンバーは、モデルを開発するときに、Visual Studio Ultimate を使用して他のチーム メンバーは Visual Studio の他のバージョンを使用してモデルを表示できます。
ソリューションの構造
中規模または大規模なプロジェクトでは、チームの構造はアプリケーションの構造に基づきます。 各チームは、Visual Studio ソリューションを使用します。
アプリケーションを複数のレイヤーに分割するには
アプリケーション (Web アプリケーション、サービス アプリケーション、デスクトップ アプリケーションなど) の構造に基づいて、ソリューションの構造を作成します。 各種の一般的なアーキテクチャについては、「Application Archetypes in the Microsoft Application Architecture Guide (Microsoft アプリケーション アーキテクチャのアプリケーションの原型に関するガイド)」を参照してください。
Visual Studio ソリューション (今後、アーキテクチャ ソリューションと呼びます) を作成します。 このソリューションを使用して、システムの全体的な設計を行います。 このソリューションでは、モデルは使用しますが、コードは使用しません。
このソリューションにレイヤー図を追加します。 レイヤー図で、アプリケーション用に選択したアーキテクチャを描きます。 レイヤー図には、たとえば、各レイヤーと、それらの間の依存関係 (プレゼンテーション、ビジネス ロジック、およびデータ) を描画することができます。
[アーキテクチャ] メニューの [新しい図] を使用すると、レイヤー図と新しい Visual Studio ソリューションを同時に生成することができます。
重要なビジネス概念を表す UML 図と、すべてのレイヤーの設計で参照するユース ケースをアーキテクチャ モデルに追加します。
アーキテクチャのレイヤー図で、レイヤーごとに個別の Visual Studio ソリューションを作成します。
これらのソリューションを使用して、レイヤーのコードを開発します。
レイヤーの設計およびすべてのレイヤーに共通の概念を表す UML モデルを作成します。 すべてのモデルをアーキテクチャ ソリューションから参照できるように、また、関連モデルを各レイヤーから参照できるように、モデルを配置します。
このためには、次のどちらかの手順を使用します。 1 つ目の代替案は各レイヤーに個別のモデリング プロジェクトを作成することで、2 つ目はレイヤー間で共有するモデリング プロジェクトを 1 つ作成することです。
各レイヤーで個別のモデリング プロジェクトを使用するには
各レイヤー ソリューションにモデリング プロジェクトを作成します。
このモデルには、該当レイヤーの要件と設計を記述する UML 図が含まれます。 また、入れ子になったレイヤーを表示するレイヤー図を含めることもできます。
これで、各レイヤーのモデルと、アプリケーション アーキテクチャのモデルが完成しました。 各モデルは、自身のソリューションに含まれます。 これによって、チーム メンバーは複数のレイヤーに対して同時に作業できます。
アーキテクチャ ソリューションに対して、各レイヤー ソリューションのモデリング プロジェクトを追加します。 これを行うには、アーキテクチャ ソリューションを開きます。 ソリューション エクスプローラーでソリューション ノードを右クリックし、[追加] をポイントして [既存のプロジェクト] をクリックします。 あるレイヤー ソリューションのモデリング プロジェクト (.modelproj) を表示します。
これで各モデルが、"ホーム" ソリューションとアーキテクチャ ソリューションという 2 つのソリューションに表示されます。
各レイヤーのモデリング プロジェクトに対してレイヤー図を追加します。 アーキテクチャ レイヤー図のコピーから開始します。 レイヤー図の依存関係でない部分は削除することができます。
このレイヤーの詳細な構造を表すレイヤー図を追加することもできます。
これらの図を使用して、このレイヤーで開発したコードを検証します。
アーキテクチャ ソリューションで、Visual Studio Ultimate を使用してすべてのレイヤーの要件と設計モデルを編集します。
各レイヤー ソリューションで、モデルを参照する、そのレイヤーのコードを開発します。 モデルを更新するために同じコンピューターを使用しないで開発を行っても問題がない場合は、Visual Studio Premium を使用してモデルを読み取りコードを開発できます。 Visual Studio Premium でモデルからコードを生成することもできます。
この方法では、レイヤー モデルを同時に編集している開発者による干渉が発生しません。
ただし、モデルが別々なので、共通のコンセプトを参照することが難しくなります。 各モデルは、他のレイヤーおよびアーキテクチャから依存している要素のコピーを持つ必要があります。 各レイヤーのレイヤー図は、アーキテクチャ レイヤー図と常に同期を取る必要があります。 これらの要素が変更されたときに同期を維持することは困難です。ただし、同期を維持するためのツールを開発することは可能です。
各レイヤーで個別のパッケージを使用するには
各レイヤーのソリューションで、アーキテクチャ モデリング プロジェクトを追加します。 ソリューション エクスプローラーでソリューション ノードを右クリックし、[追加] をポイントして [既存のプロジェクト] をクリックします。 これで 1 つのモデリング プロジェクトに、アーキテクチャ プロジェクトや、各レイヤーの開発プロジェクトなど、すべてのソリューションからアクセスできます。
共有 UML モデルで、各レイヤーのパッケージを作成します。ソリューション エクスプローラーでモデリング プロジェクトを選択します。 UML モデル エクスプローラーで、モデル ルート ノードを右クリックし、[追加] をポイントして [パッケージ] をクリックします。
各パッケージには、対応するレイヤーの要件と設計を記述する UML 図が含まれます。
必要な場合は、各レイヤーの内部構造のローカル レイヤー図を追加します。
この方法を使用すると、各レイヤーの設計要素から、依存するレイヤーおよび共通アーキテクチャの要素を直接参照できます。
異なるパッケージに対する並行作業によって競合を発生する可能性がありますが、各パッケージが個別のファイルに保存されているので非常に簡単に管理できます。 最も問題となるのは、依存関係パッケージから参照されている要素が削除された場合です。 詳細については、「モデルおよびグラフのバージョン管理」を参照してください。
アーキテクチャ テンプレートの作成
実際には、すべての Visual Studio ソリューションを同時に作成せず、プロジェクトが進むにつれ追加していきます。 また、将来のプロジェクトでも同じソリューション構造を使用する場合があります。 新しいソリューションをすばやく作成できるようにするには、ソリューションまたはプロジェクト テンプレートを作成します。 他のコンピューターへの配布やインストールが簡単にできるように、Visual Studio Integration Extension (VSIX) でテンプレートをキャプチャすることができます。
たとえば、プレゼンテーション、ビジネス、およびデータというレイヤーを持つソリューションを頻繁に使用する場合は、そのような構造を持つ新しいソリューションを作成するテンプレートを作成できます。
ソリューション テンプレートを作成するには
Export Template Wizard (テンプレート エクスポート ウィザード) をダウンロードしてインストールします (まだこの操作を実行していない場合)。
将来のプロジェクトの開始点として使用するソリューション構造を作成します。
[ファイル] メニューの [Export Template as VSIX] (VSIX 形式でテンプレートをエクスポート) をクリックします。 Export Template as VSIX Wizard (VSIX 形式でテンプレートをエクスポート ウィザード) が開きます。
ウィザードの指示に従い、テンプレートに組み込むプロジェクトを選択し、テンプレートの名前と説明を設定して、出力場所を指定します。
注意
このトピックの資料は、Most Valued Professionals (MVP)、Microsoft Services、および Visual Studio 製品チーム/ライターが協同し、Visual Studio ALM Rangers が作成した Visual Studio 2010 Architecture Tooling Guidance (アーキテクチャ ツーリング ガイダンス) を抜粋、引用したものです。完全なガイダンスのパッケージをダウンロードするには、ここをクリックしてください。
関連資料
Organizing and Managing Your Models (モデルの構成および管理) - Clint Edmondson 氏作成のビデオ
Visual Studio アーキテクチャ ツーリング ガイダンス – チーム内でのモデルの管理に関する詳細な説明