次の方法で共有


モデリング ソリューションの構築

開発プロジェクトでモデルを効果的に使用するため、チーム メンバーは、プロジェクトのさまざまな部分のモデルを同時に作業する必要があります。 このトピックでは、アプリケーションを、レイヤー図全体の各レイヤーに対応する複数の部分に分割するスキームを提案します。

プロジェクトやサブプロジェクトを迅速に開始するため、選択したプロジェクト構造に準拠したプロジェクト テンプレートを用意すると便利です。 ここでは、このようなテンプレートを作成して使用する方法について説明します。

このトピックでは、複数のチーム メンバーと、複数のチームを必要とするほどの大規模なプロジェクトでの作業を想定しています。 プロジェクトのコードとモデルは、Team Foundation Server などのソース管理システムに格納されます。 少なくとも数人のチーム メンバーが Visual Studio を使用してモデルを開発しているときに、他のチーム メンバーは他のバージョンの Visual Studio を使って、モデルを表示できます。

どのバージョンの Visual Studio が各ツールとモデリング機能をサポートしているかについては、「アーキテクチャ ツールとモデリング ツールのバージョン サポート」を参照してください。

ソリューションの構造

中規模または大規模プロジェクトでは、チームの構造はアプリケーションの構造に基づいています。 各チームが、Visual Studio ソリューションを使用します。

1 つのアプリケーションを複数のレイヤーに分割するには

  1. Web アプリケーション、サービス アプリケーション、デスクトップ アプリケーションなど、アプリケーションの構造に基づいて、ソリューションの構造を決定します。 さまざまな一般的なアーキテクチャについては、「Microsoft アプリケーション アーキテクチャ ガイド」の「アプリケーション アーキタイプ」に記載されています。

  2. Visual Studio ソリューションを作成します。このソリューションをアーキテクチャ ソリューションと呼びます。 このソリューションは、システムの全体設計の作成に使われます。 このソリューションにはモデルは含まれますが、コードは含まれません。

    このソリューションに依存関係図を追加します。 依存関係図で、作成するアプリケーション用に選択した構造を描画します。 たとえば、この図には、プレゼンテーション、ロジック、データの各レイヤーと、そのレイヤー間の依存関係が示されることがあります。

  3. アーキテクチャ依存関係図で、レイヤーごとに個別の Visual Studio ソリューションを作成します。

    これらのソリューションを使って、レイヤーのコードを開発します。

  4. レイヤーのデザインと、すべてのレイヤーに共通する概念を表すモデルを作成します。 すべてのモデルがアーキテクチャ ソリューションから確認できるように、また関連モデルが各レイヤーから確認できるように、モデルを配置します。

    これは、次の手順のいずれかを使用して実現できます。 最初の方法は、レイヤーごとに個別のモデリング プロジェクトを作成する方法、2 つ目の方法は、レイヤー間で共有されるモデリング プロジェクトを 1 つ作成する方法です。

レイヤーごとに個別のモデリング プロジェクトを使用する

  1. 各レイヤー ソリューションでモデリング プロジェクトを作成します。

    このモデルには、要件とそのレイヤーのデザインを記述する図が含まれます。 また、入れ子になったレイヤーを表す依存関係図が含まれることもあります。

    これで、レイヤーごとのモデルと、アプリケーション アーキテクチャ用のモデルが準備できました。 各モデルは、独自のソリューションに含まれます。 これにより、チーム メンバーが同時に、複数のレイヤー上で作業できます。

  2. アーキテクチャ ソリューションに、各レイヤー ソリューションのモデリング プロジェクトを追加します。 そのためには、アーキテクチャ ソリューションを開きます。 ソリューション エクスプローラーでソリューション ノードを右クリックし、[追加] をポイントして、[既存のプロジェクト] をクリックします。 1 つのレイヤー ソリューションのモデリング プロジェクト (.modelproj) に移動します。

    各モデルは 2 つのソリューション ("ホーム" ソリューションとアーキテクチャ ソリューション) に表示されるようになりました。

  3. 各レイヤーのモデリング プロジェクトに、依存関係図を追加します。 アーキテクチャ依存関係図のコピーを使って作業を開始します。 依存関係図の依存関係がない部分は削除できます。

    このレイヤーの詳細な構造を表す依存関係図を追加することもできます。

    これらの図は、このレイヤーで開発されたコードの検証に使用されます。

  4. アーキテクチャ ソリューションでは、Visual Studio を使って、すべてのレイヤーの要件と設計モデルを編集します。

    各レイヤー ソリューションでは、モデルを参照しながら、そのレイヤーのコードを開発します。 開発が終了し、同じコンピューターを使ってモデルを更新する必要がなくなったら、モデルの作成を実行できないバージョンの Visual Studio を使って、モデルの読み取りとコードの開発を実行できます。 また、これらのバージョンで、モデルからコードを生成することもできます。

    この方法を使用すると、同時にレイヤー モデルを編集する複数の開発者によって、干渉が発生することはありません。

    ただし、モデルは個別に作成されるため、共通の概念を参照することは難しくなります。 各モデルには、他のレイヤーやアーキテクチャと依存関係にある要素の独自コピーが存在する必要があります。 各レイヤーの依存関係図は、アーキテクチャ依存関係図と同期を維持する必要があります。 これを実現するツールを開発することはできますが、これらの要素の変更時に同期を維持するのは困難です。

レイヤーごとに個別のパッケージを使用する

  1. 各レイヤーのソリューションで、アーキテクチャ モデリング プロジェクトを追加します。 ソリューション エクスプローラーでソリューション ノードを右クリックし、[追加] をポイントして、[既存のプロジェクト] をクリックします。 これで 1 つのモデリング プロジェクトに、すべてのソリューション (アーキテクチャ プロジェクトと各レイヤーの開発プロジェクト) からアクセスできるようになりました。

  2. 共有モデルで、各レイヤーのパッケージを作成します。ソリューション エクスプローラーで、モデリング プロジェクトを選択します。 UML モデル エクスプローラーで、モデル ルート ノードを右クリックし、[追加] をポイントして、[パッケージ] をクリックします。

    各モデルには、要件と、対応するレイヤーのデザインを記述する図が入ります。

  3. 必要に応じて、各レイヤーの内部構造を表すローカル依存関係図を追加します。

    この方法を使用すると、各レイヤーの設計要素から、レイヤーの設定要素と、そのレイヤーが依存している共通アーキテクチャを直接参照することができます。

    複数のパッケージに対する同時作業では競合が発生することがありますが、パッケージは個別ファイルに保存されるため、競合を非常に簡単に管理できます。

アーキテクチャ テンプレートを作成する

実際は、すべての Visual Studio ソリューションを同時に作成することはありませんが、プロジェクトが進行するにつれて、ソリューションが追加されます。 将来のプロジェクトで、同じソリューションの構造が使われる可能性もあります。 新しいソリューションを短時間で作成しやすくするため、ソリューションまたはプロジェクトのテンプレートを作成できます。 簡単に他のコンピューターに配布してインストールできるようにするため、Visual Studio Integration Extension (VSIX) でテンプレートをキャプチャすることができます。

たとえば、プレゼンテーション、ビジネス、およびデータの各レイヤーが存在するソリューションを頻繁に使用する場合、その構造を持つ新しいソリューションを作成するテンプレートを構成できます。

ソリューション テンプレートを作成するには

  1. テンプレートのエクスポート ウィザードをダウンロードしてインストールします

  2. 将来のプロジェクトの開始点として使用するソリューション構造を作成します。

  3. [ファイル] メニューの [VSIX としてテンプレートをエクスポート]をクリックします。

    VSIX としてテンプレートをエクスポート ウィザードが開きます。

  4. ウィザードの指示に従って、テンプレートに含めるプロジェクトを追加し、テンプレートの名前と説明を入力して、出力する場所を指定します。