コードからのレイヤー図の作成
ソフトウェア システムの高度な論理アーキテクチャを視覚化するには、Visual Studio Ultimate を使用してレイヤー図を作成します。 コードがこの設計と一致していることを確認するには、Visual Studio Ultimate または Visual Studio Premium でレイヤー図を使用してコードを検証します。 Visual C# .NET と Visual Basic .NET のプロジェクトのレイヤー図を作成できます。
目的に合ったトピックをクリックしてください
レイヤー図について理解を深める
レイヤー図を作成する
成果物からレイヤーを作成する
レイヤーと成果物の間のリンクを管理する
既存の依存関係をリバース エンジニアリングする
レイヤーと依存関係を編集して目的の設計を表示する
図における要素の表示方法を変更する
レイヤー図について理解を深める
レイヤー図を使用すると、Visual Studio のソリューション項目を整理して、レイヤーと呼ばれる論理的、抽象的なグループにまとめることができます。 レイヤーを使用して、これらの成果物が実行する主要タスク、またはシステムの主要コンポーネントを示すことができます。 各レイヤーには、より詳細なタスクを示す別のレイヤーを含めることができます。 また、レイヤー間の、目的の依存関係、または既存の依存関係を表示できます。 矢印で表されるこれらの依存関係は、どのレイヤーが、他のレイヤーが表す機能を使用できるか、または現在使用しているかを示します。 コードのアーキテクチャ コントロールを保持するには、目的の依存関係を図で示し、図と照らし合わせてコードを検証します。
参照トピック
ヒント
レイヤー図を生成する場合は、コードの調査および理解を支援する依存関係グラフの生成を検討することをお勧めします。これらのグラフは、コード内のクラスター、パターン、自然レイヤー、および依存関係を探すときに役立ちます。このため、成果物をレイヤーに簡単に割り当てることができます。アーキテクチャ エクスプローラーでも名前空間やクラスを調べることができます。これらは、通常は既存のレイヤーに対応しています。その後で、レイヤー図を使用してコードを更新できます。
参照トピック
レイヤー図を作成する
レイヤー図を作成する前に、ソリューションにモデリング プロジェクトがあることを確認します。 「UML モデリング プロジェクトおよびダイアグラムを作成する」を参照してください。
重要
モデリング プロジェクトから別のモデリング プロジェクトまたはソリューション内の別の場所への既存のレイヤー図の追加、ドラッグ、コピーは、いずれも実行しないでください。これで、図を変更しても、元の図からの参照が保持されます。また、これによってレイヤー検証が正しく機能しないため、要素が欠落したり、図を開こうとすると他のエラーが発生するなど、別の問題が生じる可能性があります。
代わりに、新しいレイヤー図をモデリング プロジェクトに追加してください。元の図から新しい図へ要素をコピーします。モデリング プロジェクトと新しいレイヤー図の両方を保存します。
新しいレイヤー図をモデリング プロジェクトに追加するには
[アーキテクチャ] メニューの [新しいダイアグラム] をクリックします。
[テンプレート] の [レイヤー図] をクリックします。
図に名前を付けます。
[モデリング プロジェクトへの追加] で、ソリューション内の既存のモデリング プロジェクトを参照して選択します。
または
[新しいモデリング プロジェクトを作成します] をクリックして、新しいモデリング プロジェクトをソリューションに追加します。
注意
レイヤー図はモデリング プロジェクト内に存在している必要があります。ただし、ソリューション内のどの場所にある項目にもリンクできます。
必ず、モデリング プロジェクトとレイヤー図の両方を保存してください。
成果物からレイヤーを作成する
レイヤーは、プロジェクト、コード ファイル、名前空間、クラス、メソッドなど、Visual Studio ソリューションの項目から生成できます。 これにより、レイヤーと項目の間のリンクが自動的に作成され、レイヤー検証プロセスに含まれます。
Word 文書や PowerPoint プレゼンテーションなどの検証をサポートしない項目にレイヤーをリンクすることもできます。こうすると、仕様や計画にレイヤーを関連付けることができます。 複数のアプリが共有するプロジェクトのファイルにレイヤーをリンクすることもできます。ただし、これらのレイヤーは検証プロセスには含まれず、"レイヤー 1"、"レイヤー 2" などの汎用名で表示されます。
リンクされた項目が検証をサポートしているかどうかを確認するには、レイヤー エクスプローラーを開き、項目の "検証をサポート" プロパティを調べます。 「成果物へのリンクの管理」を参照してください。
目的 |
手順 |
---|---|
1 つの成果物を表すレイヤーを生成する |
重要 バイナリ ファイルをレイヤー図にドラッグしても、モデリング プロジェクトへの参照は自動的には追加されません。検証するバイナリ ファイルを手動でモデリング プロジェクトに追加する必要があります。 バイナリ ファイルをモデリング プロジェクトに追加するには
|
選択したすべての成果物を表す 1 つのレイヤーを生成する |
すべての成果物を同時にレイヤー図へドラッグします。 レイヤーが図に表示され、すべての成果物にリンクされます。 |
選択した各成果物を表すレイヤーを生成する |
Shift キーを押しながら、すべての成果物を同時にレイヤー図へドラッグします。 注意 Shift キーを使用して項目の範囲を選択する場合は、成果物を選択した後でキーを離します。成果物を図にドラッグするときは、キーを再び押して、押したままにします。 各成果物を表すレイヤーが図に表示され、各成果物にリンクされます。 |
成果物をレイヤーに追加する |
成果物をレイヤーにドラッグします。 |
リンクされない新しいレイヤーを生成する |
ツールボックスで、[レイヤー図] セクションを展開し、[レイヤー] をレイヤー図にドラッグします。 複数のレイヤーを追加するには、ツールをダブルクリックします。 操作が終わったら、[ポインター] ツールをクリックするか、Esc キーを押します。 または レイヤー図のショートカット メニューを開き、[追加] をクリックし、[レイヤー] をクリックします。 |
入れ子になったレイヤーを生成する |
既存のレイヤーを別のレイヤー上へドラッグします。 または レイヤーのショートカット メニューを開き、[追加] をクリックし、[レイヤー] を選択します。 |
複数の既存レイヤーを含む新しいレイヤーを生成する |
レイヤーを選択し、そのショートカット メニューを開き、[グループ] をクリックします。 |
レイヤーの色を変更する |
レイヤーの "カラー" プロパティを任意の色に設定します。 |
レイヤーに関連付けられている成果物を、指定した名前空間に所属させることができないように指定する |
レイヤーの "禁止された名前空間" プロパティに名前空間を入力します。 名前空間はセミコロン (;) を使用して区切ります。 |
レイヤーに関連付けられている成果物が、指定した名前空間に依存できないように指定する |
レイヤーの "禁止された名前空間の依存関係" プロパティに名前空間を入力します。 名前空間はセミコロン (;) を使用して区切ります。 |
レイヤーに関連付けられている成果物を、指定した名前空間のいずれかに必ず所属させるように指定する |
レイヤーの "必要な名前空間" プロパティに名前空間を入力します。 名前空間はセミコロン (;) を使用して区切ります。 |
レイヤーの数字は、レイヤーにリンクされている成果物の数を示します。 ただし、この数値を読み取るときには、次の点に注意してください。
1 つのレイヤーが他の成果物を含む 1 つの成果物にリンクされているが、他の成果物に直接リンクされていない場合、その数字にはリンクされた成果物のみが含まれます。 ただし、レイヤー検証時の分析にはそれらの他の成果物も含まれます。
たとえば、1 つのレイヤーが 1 つの名前空間にリンクされている場合、その名前空間に複数のクラスが含まれていても、リンクされた成果物の数は 1 です。 レイヤーに名前空間の各クラスへのリンクもある場合、その数字にはリンクされたクラスが含まれます。
1 つのレイヤーに成果物にリンクされた他のレイヤーが含まれている場合は、そのコンテナー レイヤーの数字にそれらの成果物が含まれていなくても、コンテナー レイヤーはそれらの成果物にリンクされます。
レイヤーと成果物の間のリンクを管理する
レイヤー図で、レイヤーのショートカット メニューを開き、[リンクの表示] をクリックします。
レイヤー エクスプローラーに、選択したレイヤーに関する成果物のリンクが表示されます。
これらのリンクを管理するには、次の操作を行います。
目的 |
レイヤー エクスプローラーでの操作 |
---|---|
レイヤーと成果物のリンクを削除する |
成果物のリンクのショートカット メニューを開き、[削除] をクリックします。 |
リンクを別のレイヤーに移動する |
成果物のリンクを図上の既存のレイヤーにドラッグします。 または
|
リンクを別のレイヤーにコピーする |
|
既存の成果物のリンクから新しいレイヤーを生成する |
成果物のリンクを図上の空白領域にドラッグします。 |
リンクされた成果物がレイヤー図に対する検証をサポートしていることを確認する |
成果物のリンクの [検証をサポート] 列を確認します。 |
既存の依存関係をリバース エンジニアリングする
依存関係が存在するのは、あるレイヤーに関連付けられている成果物が、別のレイヤーに関連付けられている成果物を参照している場合です。 たとえば、あるレイヤー内のクラスが、別のレイヤー内のクラスを保持する変数を宣言する場合などです。 図のレイヤーにリンクされている成果物の既存の依存関係はリバース エンジニアリングできます。
注意
成果物の種類によっては、依存関係をリバース エンジニアリングできないものもあります。たとえば、テキスト ファイルにリンクされているレイヤーから、またはそのレイヤーに対して依存関係をリバース エンジニアリングすることはできません。リバース エンジニアリングできる依存関係のある成果物を確認するには、1 つ以上のレイヤーのショートカット メニューを開き、[リンクの表示] をクリックします。レイヤー エクスプローラーで、[検証をサポート] 列を確認します。この列の値が [FALSE] の成果物については、依存関係をリバース エンジニアリングできません。
- 1 つ以上のレイヤーを選択し、選択したレイヤーのショートカット メニューを開き、[依存関係の生成] をクリックします。
通常は、不要な依存関係がいくつか見つかります。 これらの依存関係を編集して、目的の設計に準拠するようアラインできます。
レイヤーと依存関係を編集して目的の設計を表示する
システムに追加予定の変更または目的のアーキテクチャを示すには、レイヤー図を編集します。
目的 |
実行する手順 |
---|---|
依存関係の方向を変更または制限する |
依存関係の Direction プロパティを設定します。 |
新しい依存関係を生成する |
依存関係ツールと双方向の依存関係ツールを使用します。 複数の依存関係を描画するには、ツールをダブルクリックします。 操作が終わったら、[ポインター] ツールをクリックするか、Esc キーを押します。 |
レイヤーに関連付けられている成果物が、指定した名前空間に依存できないように指定する |
レイヤーの "禁止された名前空間の依存関係" プロパティに名前空間を入力します。 名前空間はセミコロン (;) を使用して区切ります。 |
レイヤーに関連付けられている成果物を、指定した名前空間に所属させることができないように指定する |
レイヤーの "禁止された名前空間" プロパティに名前空間を入力します。 名前空間はセミコロン (;) を使用して区切ります。 |
レイヤーに関連付けられている成果物を、指定した名前空間のいずれかに必ず所属させるように指定する |
レイヤーの "必要な名前空間" プロパティに名前空間を入力します。 名前空間はセミコロン (;) を使用して区切ります。 |
図における要素の表示方法を変更する
プロパティを編集して、レイヤーのサイズ、形状、色、位置、または依存関係の色を変更できます。