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