Поделиться через


Создание схем зависимостей на основе кода

Чтобы визуализировать высокоуровневую архитектуру системы программного обеспечения, создайте схему зависимостей в Visual Studio. Чтобы убедиться, что код остается в соответствии с этим проектом, проверьте код с помощью схемы зависимостей. Вы можете создавать схемы зависимостей для проектов Visual C# и Visual Basic. Чтобы узнать, какие выпуски Visual Studio поддерживают эту функцию, см. раздел Поддержка инструментов моделирования и архитектуры в различных выпусках.

Создание схемы зависимостей

Схема зависимостей позволяет упорядочивать элементы решения Visual Studio в логические абстрактные группы, называемые слоями. Слои можно использовать для описания основных задач, выполняемых этими артефактами, или основных компонентов системы.

Каждый слой может содержать другие слои, описывающие более подробные задачи. Можно также указать предполагаемые или существующие зависимости между слоями . Эти зависимости, представленные как стрелки, показывают слои, которые используют или могут использовать функциональные возможности, представленные другими слоями. Для поддержки архитектурного контроля кода добавьте предполагаемые зависимости в схему, а затем проверьте код по схеме.

Видео: проверка зависимостей архитектуры в режиме реального времени

Создание схемы зависимостей

Перед созданием схемы зависимостей убедитесь, что решение имеет проект моделирования.

Внимание

Не добавляйте, перетаскивайте или копируйте существующую схему зависимостей из одного проекта моделирования в другой проект моделирования или в другое место в решении. Это позволит сохранить ссылки из исходной схемы при изменении схемы. Кроме того, это может привести к тому, что проверка схемы будет работать неправильно, и к другим потенциальным проблемам, таким как отсутствующие элементы или другие ошибки при попытке открыть схему.

Вместо этого добавьте новую схему зависимостей в проект моделирования. Скопируйте элементы из исходной схемы в новую схему. Сохраните оба проекта моделирования и новую схему зависимостей.

Добавление новой схемы зависимостей в проект моделирования

Примечание.

Схемы зависимостей для проектов .NET Core поддерживаются начиная с Visual Studio 2019 версии 16.2.

  1. В меню "Архитектура" выберите "Создать схему зависимостей".

  2. В разделе "Шаблоны" выберите схему зависимостей.

  3. Назовите схему.

  4. В разделе "Добавление в проект моделирования" перейдите и выберите существующий проект моделирования в решении.

    –или–

    Нажмите кнопку "Создать проект моделирования ", чтобы добавить новый проект моделирования в решение.

    Примечание.

    Схема зависимостей должна существовать внутри проекта моделирования. Однако ее можно связать с элементами в любом месте решения.

  5. Обязательно сохраните оба проекта моделирования и схему зависимостей.

Перетаскивание или копирование и вставка из карты кода

  1. Создайте карту кода для решения с помощью меню "Архитектура ".

  2. Рекомендуется применить фильтр карты кода для удаления папок решения и "Тестовые ресурсы", если требуется применить зависимости только в коде продукта.

  3. На созданной карте кода удалите узел "Внешний" или разверните его для отображения внешних сборок в зависимости от того, следует ли применять зависимости пространства имен. Удалите ненужные сборки из карты кода.

  4. Создайте новую схему зависимостей для решения с помощью меню "Архитектура ".

  5. Выберите все узлы на карте кода (используйте клавиши CTRL + A или используйте выбор резинки, нажав клавишу SHIFT перед щелчком, перетаскиванием и освобождением).

  6. Перетащите и скопируйте или скопируйте и вставьте выбранные элементы в новую схему проверки зависимостей.

  7. В этом примере показана текущая архитектура приложения. Определите, какую архитектуру следует использовать, и измените схему зависимостей соответствующим образом.

Схема зависимостей, созданная на карте кода

Создание слоев из артефактов

Слои можно создать из элементов решения Visual Studio, таких как проекты, файлы кода, пространства имен, классы и методы. При этом автоматически создаются связи между слоями и элементами, которые включаются в процесс проверки слоев.

Вы можете связать слои с элементами, которые не поддерживают проверку, например документы Word или презентации PowerPoint. Это позволяет связать слой с спецификациями или планами. Кроме того, слои можно связать с файлами в проектах, которые являются общими для нескольких приложений, но в процесс проверки не войдут слои, которые отображаются с универсальными именами, например "Уровень 1" и "Уровень 2".

Чтобы узнать, поддерживает ли связанный элемент проверку, откройте слой Обозреватель и проверьте свойство "Поддержка проверки" элемента. См. статью "Управление ссылками на артефакты".

Кому Выполните эти действия
Создать слой для одного артефакта
  1. Перетащите элемент на схему зависимостей из следующих источников:
    Слой отображается на схеме и связан с артефактом.
  2. Переименуйте слой, чтобы отразить обязанности связанного кода или артефактов.

Важно: перетаскивание двоичных файлов на схему зависимостей не добавляет их ссылки на проект моделирования. Вручную добавьте двоичные файлы, которые необходимо проверить в проект моделирования. Добавление двоичных файлов в проект моделирования
  1. В Обозреватель решений откройте контекстное меню проекта моделирования и нажмите кнопку "Добавить существующий элемент".
  2. В диалоговом окне "Добавить существующий элемент" перейдите к двоичным файлам, выберите их и нажмите кнопку "ОК". Двоичные файлы отображаются в проекте моделирования.
  3. В Обозреватель решений выберите добавленный двоичный файл, а затем нажмите клавишу F4, чтобы открыть окно свойств.
  4. В каждом двоичном файле задайте для свойства "Действие сборки" значение Validate.
Создание единственного слоя для всех выбранных артефактов Перетащите все артефакты в схему зависимостей одновременно.

Слой отображается в схеме и связан со всеми артефактами.
Создание слоя для каждого выбранного артефакта Нажимайте и удерживайте клавишу SHIFT , перетаскивая все артефакты в схему зависимостей одновременно.
Примечание. Если вы используете клавишу SHIFT для выбора диапазона элементов, отпустите ключ после выбора артефактов. Нажмите и удерживайте ее снова при перетаскивании артефактов в схему.

Слой для каждого артефакта отображается в схеме и связан с каждым артефактом.
Добавление артефакта в слой Перетащите артефакт в слой.
Создание нового несвязанного слоя На панели элементов разверните раздел диаграммы зависимостей и перетащите слой на схему зависимостей.

Чтобы добавить несколько слоев, дважды щелкните средство. Когда вы закончите, выберите средство указателя или нажмите клавишу ESC .

- или -

Откройте контекстное меню для схемы зависимостей, нажмите кнопку "Добавить" и выберите "Слой".
Создание вложенных слоев Перетащите существующий слой в другой слой.

- или -

Откройте контекстное меню слоя, нажмите кнопку "Добавить" и выберите "Слой".
Создание нового слоя, который содержит два или более существующих слоев Выберите слои, откройте контекстное меню для выбора, а затем выберите группу.
Изменение цвета слоя Задайте для свойства Color нужный цвет.
Укажите, что артефакты, связанные с слоем, не должны принадлежать указанным пространствам имен. Введите пространства имен в свойстве запрещенных пространств имен слоя. Используйте точку с запятой (;), чтобы разделить пространства имен.
Укажите, что артефакты, связанные с слоем, не могут зависеть от указанных пространств имен. Введите пространства имен в свойстве зависимостей запрещенного пространства имен слоя. Используйте точку с запятой (;), чтобы разделить пространства имен.
Указание, что артефакт, связанный со слоем, должен принадлежать одному из указанных пространств имен Введите пространство имен в свойстве обязательных пространств имен слоя. Используйте точку с запятой (;), чтобы разделить пространства имен.

Число на слое обозначает количество артефактов, связанных со слоем. Однако при чтении этого числа помните:

  • Если слой связывается с артефактом, содержащим другие артефакты, но слой не связывается непосредственно с другими артефактами, число включает только связанный артефакт. Однако для анализа в ходе проверки слоя включаются другие артефакты.

    Например, если слой связан с одним пространством имен, то число связанных артефактов равно 1, даже если пространство имен содержит классы. Если слой также связан с каждым классом в пространстве имен, то число будет включать эти связанные классы.

  • Если слой содержит другие слои, связанные с артефактами, слой контейнера также связан с этими артефактами, даже если число на уровне контейнера не включает эти артефакты.

Управление связями между слоями и артефактами

  1. На схеме зависимостей откройте контекстное меню слоя и выберите пункт "Просмотреть ссылки".

    На уровне Обозреватель показаны ссылки артефакта для выбранного слоя.

  2. Для управления этими ссылками можно использовать следующие задачи:

Кому На уровне Обозреватель
Удалить ссылку между слоем и артефактом Откройте контекстное меню для ссылки артефакта и нажмите кнопку "Удалить".
Переместить ссылку из одного слоя в другой Перетащите ссылку артефакта в существующий слой на схеме.

- или -

1. Откройте контекстное меню для ссылки артефакта и нажмите кнопку "Вырезать".
2. На схеме зависимостей откройте контекстное меню слоя и нажмите кнопку "Вставить".
Скопировать ссылку из одного слоя в другой 1. Откройте контекстное меню для ссылки артефакта и нажмите кнопку "Копировать".
2. На схеме зависимостей откройте контекстное меню слоя и нажмите кнопку "Вставить".
Создать новый слой из существующей ссылки артефакта Перетащите ссылку артефакта в пустую область на схеме.
Убедитесь, что связанный артефакт поддерживает проверку на схеме зависимостей. Просмотрите столбец "Поддержка проверки " для ссылки артефакта.

Реверсивная инженерия существующих зависимостей

Зависимости существуют там, где артефакт, связанный с одним слоем, ссылается на артефакт, связанный с другим слоем. Например, класс в одном слое объявляет переменную, которая имеет класс в другом слое. Реконструировать существующие зависимости можно для артефактов, связанных со слоями в схеме.

Примечание.

Зависимости не могут быть перепроектированы для определенных видов артефактов. Например, зависимости не могут быть реконструированы из или в слой, связанный с текстовым файлом. Чтобы узнать, какие артефакты имеют зависимости, которые можно перепроектировать, откройте контекстное меню для одного или нескольких слоев, а затем выберите "Просмотреть ссылки". В Обозреватель уровня проверьте столбец "Поддержка проверки". Зависимости не будут перепроектированы для артефактов, для которых в этом столбце отображается значение False.

  • Выберите один или несколько слоев, откройте контекстное меню для выбранного слоя и выберите команду "Создать зависимости".

    Если вы видите некоторые зависимости, которые не должны существовать, можно изменить эти зависимости, чтобы выровнять их с предполагаемой структурой.

Изменение слоев и зависимостей для отображения предполагаемой структуры

Чтобы описать изменения, которые планируется внести в систему или предназначенную архитектуру, измените схему зависимостей:

Кому Выполните следующие действия.
Изменить или ограничить направление зависимости Задайте свойство Direction .
Создать новые зависимости Используйте средства зависимостей и двунаправленных зависимостей.

Чтобы нарисовать несколько зависимостей, дважды щелкните средство. Когда вы закончите, выберите средство указателя или нажмите клавишу ESC .
Укажите, что артефакты, связанные с слоем, не могут зависеть от указанных пространств имен. Введите пространства имен в свойстве зависимостей запрещенного пространства имен слоя. Используйте точку с запятой (;), чтобы разделить пространства имен.
Указание, что артефакт, связанный со слоем, не должен более принадлежать указанному пространству имен Введите пространства имен в свойстве запрещенных пространств имен слоя. Используйте точку с запятой (;), чтобы разделить пространства имен.
Указание, что артефакт, связанный со слоем, должен принадлежать одному из указанных пространств имен Введите пространство имен в свойстве обязательных пространств имен слоя. Используйте точку с запятой (;), чтобы разделить пространства имен.

Изменение способа отображения элементов на схеме

Можно изменить размер, фигуру, цвет, положение слоев или цвет зависимостей, изменив их свойства.

Обнаружение шаблонов и зависимостей на карте кода

При создании схем зависимостей можно также создавать карты кода. Они помогают обнаружить закономерности и зависимости при анализе кода. Воспользуйтесь обозревателем решений, представлением классов или обозревателем объектов, чтобы изучить сборки, пространства имен и классы, которые часто находятся в точном соответствии с существующими слоями. Подробнее о картах кода читайте в следующих разделах: