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


Практическое руководство. Изучение кода с помощью схем последовательностей

В Visual Studio Ultimate можно создать схему последовательностей, чтобы визуализировать и понять то, как код реализует конкретный метод. Схема последовательностей описывает взаимодействие между объектами в виде рядов линий жизни и сообщений. Линии жизни представляют экземпляры объектов, а сообщения представляют вызовы методов между этими объектами. Можно создать схемы последовательностей из кода Visual C# .NET или Visual Basic .NET. Чтобы создавать схемы последовательностей из проектов веб-сайтов ASP.NET, установите Visual Studio 2010 Пакет функций визуализации и моделирования Microsoft Visual Studio 2010.

Примечание

Созданная схема последовательностей показывает элементы, сходные с элементами UML-схем последовательностей.Схема последовательностей, созданная из программного кода, существует независимо от UML-модели и может быть добавлена к любому проекту .NET.Напротив, UML-схема последовательностей, изображенная вручную, всегда является частью модели, в которой она создана.Дополнительные сведения см. в разделе UML-схемы последовательностей: справочные материалы.

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

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

Содержание раздела

  • Создание схемы последовательностей из исходного кода

  • Изучение кода на схемах последовательностей

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

  • Переходы из схемы

  • Связывание элементов взаимодействия с рабочими элементами

  • Связь с другими схемами

  • Устранение неполадок в схемах последовательностей

Создание схемы последовательностей из исходного кода

Создание схемы последовательностей из кода

  1. В Visual Studio откройте файл кода, содержащий определение метода.

  2. Щелкните правой кнопкой мыши в любом месте определения метода и выберите Сформировать схему последовательностей.

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

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

    Примечание

    После создания схемы можно развернуть определенные утерянные сообщения.

  4. В разделе Включить входящие вызовы выберите область из следующей таблицы.

    Для просмотра

    Щелкните

    Вызовов к элементам в текущем проекте

    Текущий проект

    Вызовов к элементам в решении

    Текущее решение (по умолчанию)

    Вызовов к элементам внутри и вне решения

    Решение и внешние ссылки

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

  5. В разделе Исключить исходящие вызовы можно еще больше упростить схему, опустив вызовы к следующим элементам.

    Чтобы опустить вызовы к

    Выберите

    Свойства и события

    Свойства и события (по умолчанию)

    Пространству имен System

    Системное пространство имен (по умолчанию).

    Определенным пространствам имен

    Другие пространства имен, затем введите пространства имен в поле, разделяя их запятой (,). Не используйте подстановочные знаки (*), они не поддерживаются.

    Чтобы включить вызовы к этим элементам, снимите соответствующие флажки.

  6. По завершении нажмите ОК.

    Visual Studio создает схему последовательностей и добавляет ее в соответствующий проект. Сведения об устранении неполадок пои создании схем последовательностей см. в разделе Устранение неполадок в схемах последовательностей.

    Примечание

    Объявления массивов не отображаются на созданных схемах последовательностей.

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

Изучение кода на схемах последовательностей

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

В схему последовательностей можно внести следующие изменения.

Чтобы получить следующий результат

Выполните следующие действия

Показать следующий уровень вызова

Щелкните правой кнопкой мыши сообщение, не имеющее целевой линии жизни и выберите команду Развернуть исходящие.

Развернуть сообщение на новой схеме

Щелкните правой кнопкой мыши сообщение и выберите команду Сформировать схему последовательностей.

Новая схема добавляется в текущий проект.

Свернуть группу сообщений в одну линию жизни

Выберите линии жизни, которые нужно сгруппировать, щелкните выбранное правой кнопкой мыши и нажмите кнопку Свернуть.

Группу можно переименовать, но при развертывании имя будет потеряно.

Чтобы развернуть группу, щелкните ее правой кнопкой мыши и выберите команду Развернуть.

Удалить элементы

Щелкните форму правой кнопкой мыши и выберите команду Удалить.

Улучшить разметку

Щелкните правой кнопкой мыши пустую область схемы и выберите Изменить разметку.

Можно также отменить эту команду.

Выделить выбранные элементы

Щелкните правой кнопкой мыши элемент и выберите пункт Свойства. В окне Свойства задайте значение для поля Цвет.

Добавить к схеме примечания

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

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

Редактируя схему путем добавления и удаления элементов, можно планировать изменения кода. Также можно копировать части схемы на UML-схему последовательностей, созданную в UML-проекте моделирования. Это позволяет связать линии жизни с типами, компонентами и субъектами UML-модели.

В следующей таблице перечислены изменения, полезные для описания предложений по разработке. Дополнительные сведения см. в разделе UML-схемы последовательностей: правила работы.

Чтобы получить следующий результат

Выполните следующие действия

Выделить линии жизни, сообщения и другие элементы

Измените свойство Цвет элемента.

– или –

Следующим образом свяжите с элементом Комментарий.

  1. В меню Панель элементов выберите пункт Комментарий и щелкните схему рядом с элементом.

  2. В меню Панель элементов выберите пункт Добавить комментарий для связи, щелкните комментарий, а затем щелкните элемент.

Переместить линии жизни

Перетащите линию жизни в другую область схемы.

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

  • Нарисуйте прямоугольник вокруг этих линий жизни.

    – или –

    Нажмите и удерживайте клавишу CTRL и последовательно щелкните каждую линию жизни.

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

Перемещение и перегруппировка сообщений

Перетащите сообщение по схеме вверх или вниз.

  1. Выберите сообщение и выполните следующие действия.

  2. Для изменения положения сообщения используйте клавиши СТРЕЛКА ВВЕРХ и СТРЕЛКА ВНИЗ.

  3. Для изменения последовательности сообщений используйте комбинации клавиш CTRL+СТРЕЛКА ВВЕРХ и CTRL+СТРЕЛКА ВНИЗ.

Добавить линию жизни

Щелкните Линия жизни на Панели элементов, затем щелкните схему.

Добавить сообщение

  1. В Панели элементов выберите Синхронное или Асинхронное сообщение.

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

  2. Щелкните на схеме исходную линию жизни.

  3. Щелкните целевую линию жизни.

    - или -

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

  4. Введите имя нового сообщения.

Скопировать линии жизни и сообщения на или из других схем

Скопируйте и вставьте линии жизни.

Сообщения между ними будут скопированы автоматически.

ПримечаниеПримечание
При копировании линий жизни из UML-схемы последовательностей в проект моделирования на созданную схему последовательностей могут появляться только заголовки линий жизни, а также может быть нужно настроить их цвета.Чтобы устранить эту проблему, выберите вставленные линии жизни и установите их свойство Цвет.

Заключить сообщения в объединенный фрагмент

  1. Выберите одно или несколько сообщений.

  2. Щелкните правой кнопкой мыши выбранные сообщения, щелкните пункт Разместить во фрагменте и выберите тип объединенного фрагмента.

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

Переместить сообщение на новую схему

Щелкните правой кнопкой мыши сообщение и выберите команду Переместить на схему.

Создается новая схема, содержащая сообщение и его дочерние сообщения. На исходной схеме сообщение заменяется на Использование взаимодействия.

Скопировать схему

Скопируйте схему в обозревателе решений или ее файлы в проводнике. С каждой схемой связано два файла.

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

Не выделять некоторые ручные изменения, например дополнения и изменения имен

  1. Щелкните правой кнопкой мыши поверхность схемы последовательностей и выберите пункт Свойства.

  2. Задайте свойству Показывать ручные изменения значение False.

Переходы из схемы

Чтобы получить следующий результат

Выполните следующие действия

Перейти с линии жизни или сообщения к определению класса или метода, соответственно

Щелкните линию жизни или сообщение правой кнопкой мыши и выберите команду Перейти к определению.

Найти класс или метод в обозревателе архитектуры

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

Дополнительные сведения см. в разделе Практическое руководство. Создание графов зависимостей для кода .NET.

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

Для планирования работы по реализации изменений можно связывать элементы любого типа на схеме последовательностей с рабочими элементами в Team Foundation Server. Дополнительные сведения см. в разделе Практическое руководство. Связывание элементов модели с рабочими элементами.

Чтобы получить следующий результат

Выполните следующие действия

Связать линии жизни, сообщения или другие элементы с рабочими элементами

  1. Щелкните правой кнопкой мыши один или несколько элементов и выберите команду Связать с рабочим элементом.

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

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

Просмотреть связанные рабочие элементы

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

Удалить связи с рабочими элементами

  1. Щелкните правой кнопкой мыши элемент и выберите пункт Удаление рабочих элементов.

  2. В диалоговом окне Удалить ссылки на рабочие элементы можно выбрать ссылки на рабочие элементы, которые нужно удалить.

Связи между элементом модели и выбранными рабочими элементами будут удалены. Рабочие элементы и элементы модели не удаляются.

Рекомендации по использованию созданных схем последовательностей

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

Изучение кода

Создавайте схемы зависимостей, чтобы получить общую картину основных группировок и зависимостей в больших частях кода. Затем создавайте схемы последовательностей, чтобы подробнее рассмотреть отдельные части проекта. Дополнительные сведения см. в разделе Практическое руководство. Создание графов зависимостей для кода .NET.

Интерпретация схем

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

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

  • Тип линии жизни — тип, объявленный в коде программы, даже если код всегда использует подтип.

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

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

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

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

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

Обновление плана разработки

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

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

  • Создав схему, описывающую конкретные аспекты разработки, сделайте ее копии и редактируйте их, чтобы предлагать различные варианты изменений.

  • Можно копировать элементы созданных схем последовательностей в UML-схему последовательностей. Сначала необходимо создать UML-схему последовательностей внутри UML-проекта моделирования. После этого можно моделировать различные представления обновленного проекта и связывать линии жизни с компонентами или классами в модели. Также можно расширить взаимодействие и включить внешние субъекты.

Устранение неполадок в схемах последовательностей

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

Проблема

Решение

Невозможно создать схему последовательностей.

Схема последовательностей может не создаваться, если исключено пространство имен System, а также если код содержит вызов метода COM, принимающего параметры ref или out и передающего параметр с помощью ключевого слова new. Во избежание этой проблемы измените код или включите пространство имен System при создании схемы.

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

"В экземпляре объекта не задана ссылка на объект."

Эта неполадка возникает, когда схема последовательностей создается из явной реализации метода интерфейса, при этом схема не добавляется в исходный проект автоматически. В явной реализации имени метода предшествует имя интерфейса и точка (.).

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

void ILinkedWorkItemExtension.OnWorkItemCreated( ) {}

Если возможно, не указывайте имя интерфейса и точку (.).

– или –

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

Создание схемы последовательностей занимает очень много времени.

— или —

Схема последовательностей вызывает сбой при повторном открытии.

В зависимости от конфигурации компьютера, схема последовательностей может быть слишком велика для быстрого создания или может вызывать нехватку памяти в Visual Studio и сбой при закрытии и последующем открытии этой схемы. Например, для схемы последовательностей, содержащей 390 линий жизни и 19000 сообщений, создаваемый файл схемы имеет объем более 85 МБ.

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

См. также

Задачи

Практическое руководство. Создание схем слоев из артефактов

Ссылки

UML-схемы последовательностей: справочные материалы

Основные понятия

Визуализация существующего кода.

Практическое руководство. Создание графов зависимостей для кода .NET

Журнал изменений

Дата

Журнал

Причина

Август 2010

Чтобы создавать схемы последовательностей для проектов веб-сайтов ASP.NET, необходимо установить Пакет функций визуализации и моделирования Microsoft Visual Studio 2010.

Обратная связь от клиента.

Апрель 2011

В поле Другие пространства имен подстановочные знаки (*) не поддерживаются.

Обратная связь от клиента.