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


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

В Visual Studio Ultimate можно создать схему последовательностей, чтобы отобразить взаимодействие. Взаимодействие — это последовательность сообщений между типичными экземплярами классов, компонентов, подсистем или субъектов. Видеодемонстрация доступна на странице Sketching Interactions by using Sequence Diagrams.

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

Существует два вида схем последовательностей.

Этот раздел посвящен UML-схемам последовательностей.

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

В этом разделе

Использование UML-схем последовательностей

Основные этапы создания схем последовательностей

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

Классы и линии жизни

Создание последовательностей взаимодействия с возможностью повторного использования

Сворачивание групп линий жизни

Описание структур управления с помощью фрагментов

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

Использование UML-схем последовательностей

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

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

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

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

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

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

Отношение к другим схемам

UML-схемы последовательностей можно использовать с другими схемами несколькими способами.

Линии жизни и типы

Линии жизни, создаваемые в схеме последовательностей, могут представлять типичные экземпляры компонентов или классов в системе. Можно создавать линии жизни из типов, а типы — из линий жизни, а также отображать типы на UML-схемах классов и UML-схемах компонентов. Дополнительные сведения см. в разделеКлассы и линии жизни.

Типы параметров

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

Подробности варианта использования

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

Исходный код

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

Основные этапы создания схем последовательностей

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

Примечание

Подробные инструкции по созданию схем моделирования приведены в разделе Практическое руководство. Изменение модели и схем UML.

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

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

  2. В разделе Шаблоны щелкните UML-схема последовательностей.

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

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

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

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

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

  1. Перетащите Линии жизни (1) из Панели элементов на схему, чтобы представить экземпляры классов, компонентов, субъектов или устройств.

    Примечание

    Кроме того, линию жизни можно создать, перетащив существующий класс, интерфейс, субъект или компонент из Проводника по моделям UML на схему.Так создается линия жизни, представляющая экземпляр выбранного типа.

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

    Чтобы создать сообщение (3, 4, 6, 7) щелкните инструмент создания сообщений. Затем щелкните отправляющую линию жизни в том месте, где необходимо начать сообщение, и щелкните получающую линию жизни.

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

  3. Чтобы показать сообщение, поступающее из неизвестного источника события (9) или передает данные неизвестным получателям (10), создайте асинхронное сообщение из или в пустое пространство на схеме. Эти сообщения называются найденные сообщения (9) и утерянные сообщения (10).

    Примечание

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

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

Изменение порядка сообщений

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

    - или -

  • Щелкните сообщение и используйте клавиши СТРЕЛКА ВВЕРХ и СТРЕЛКА ВНИЗ, чтобы скорректировать положение сообщений. Используйте сочетания клавиш SHIFT+СТРЕЛКА ВВЕРХ и SHIFT+СТРЕЛКА ВНИЗ, чтобы изменить последовательность сообщений.

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

  1. Щелкните сообщение (3, 4) правой кнопкой мыши и выберите Копировать.

  2. Щелкните правой кнопкой мыши вхождение выполнения (5) или линию жизни, из которой необходимо отправить новое сообщение, и выберите Вставить. При необходимости нового отправителя можно изобразить на другой схеме.

    Копия сообщения и все его дочерние сообщения добавляются в окончание вхождения выполнения или в окончание линии жизни.

    Примечание

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

Оптимизация размещения элементов на схеме последовательностей

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

  • Чтобы отменить операцию, последовательно щелкните Изменить и Отменить.

Изменить пакет, владеющий взаимодействием

  1. В Проводнике по моделям UML найдите взаимодействие, отображаемое на схеме последовательностей.

    Примечание

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

  2. Перетащите взаимодействие в пакет.

    - или -

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

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

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

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

Типы сообщений

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

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

    Стрелка <<return>> отображается в конце вхождения выполнения. Она обозначает, что контроль над взаимодействием возвращается отправителю.

  • Используйте инструмент Асинхронная работа, чтобы описать взаимодействие, в ходе которого отправитель может продолжать выполнять действия немедленно, не дожидаясь получателя (4).

  • Используйте инструмент Создать, чтобы описать взаимодействие, в ходе которого получатель (8) создается отправителем.

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

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

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

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

Предупреждение

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

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

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

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

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

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

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

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

Очень важно четко обозначить, что должно отображаться на схеме.

Инициирующее событие

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

  • Пользователь, инициирующий вариант использования (например, открывающий веб-страницу для покупки еды).

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

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

Уровень детализации

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

Линии жизни могут представлять один из уровней детализации.

  • Объекты в существующем или разрабатываемом программном коде.

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

  • Система и внешние субъекты

Сообщения могут представлять один из уровней детализации.

  • Программные сообщения в программном коде в API или веб-интерфейсе.

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

  • Варианты использования — основные виды взаимодействий между пользователями и системой.

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

Описание вариантов

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

  • Создать отдельные схемы последовательностей для описания этих сценариев.

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

Оценка конструкции

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

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

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

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

Классы и линии жизни

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

Для этого

Используйте этот формат

Анонимный экземпляр типа.

Используйте его, если для каждого типа имеется только одна линия жизни.

typeName

именованный экземпляр типа.

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

objectName:typeName

Создание линий жизни из типов

Из уже определенных классов (например, на схеме классов) можно создавать новые линии жизни.

Примечание

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

Создание линии жизни из существующего типа

  • Перетащите класс, компонент или интерфейс из Проводника по моделям UML на схему последовательностей.

    - или -

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

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

    Отобразится новая линия жизни с именованным экземпляром. Типом этой линии жизни является перемещенный тип.

    Примечание

    Это действие можно повторять неограниченное количество раз.Это позволяет создать линии жизни с разными именами экземпляров.

Изменение типа линии жизни

  1. Щелкните линию жизни правой кнопкой мыши и выберите Свойства.

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

Создание классов из линий жизни

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

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

  1. Щелкните линию жизни правой кнопкой мыши и выберите Создать класс или Создать интерфейс.

    В Проводнике по моделям UML отображается новый класс или интерфейс.

  2. Создайте в классе или интерфейсе операции для каждого получаемого линией жизни сообщения.

    1. Выделите все сообщения, которые необходимо включить.

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

      Новый класс или интерфейс имеет операции для каждого выделенного сообщения.

      Имя операции отображается под стрелкой каждого сообщения и в свойстве сообщения Операция.

      Если сообщение включает параметры в форме "(параметр : тип)", они отобразятся в списке параметров новой операции.

      Примечание

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

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

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

    2. Перетащите новый класс или интерфейс из Проводника по моделям UML на схему классов.

      Класс или интерфейс появится на схеме классов.

      - или -

    3. Перетащите новый интерфейс из Проводника по моделям UML на компонент или порт на схеме компонентов.

      Интерфейс отображается в компоненте в качестве обозначения без описания операций.

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

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

Создание последовательностей взаимодействия с возможностью повторного использования

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

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

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

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

  1. Щелкните Использование взаимодействия на Панели элементов.

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

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

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

    - или -

    Напишите имя в качестве вызова функции, укажите параметры.

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

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

    - или -

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

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

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

    Примечание

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

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

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

    Visual Studio:

    • заменяет выделенное сообщение и любые дочерние сообщения использованием взаимодействия;

    • перемещает замещенные сообщения на новую схему последовательностей;

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

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

  • Дважды щелкните использование взаимодействия.

    - или -

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

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

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

Сворачивание групп линий жизни

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

Сворачивание группы линий жизни

  1. Выберите две или более линий жизни.

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

    Несколько линий жизни заменяются одной.

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

  3. Щелкните имя, чтобы переименовать группу.

    Примечание

    Если развернуть группу, имя группы будет утеряно.

Разворачивание свернутой группы

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

    Примечание

    Имя группы будет утеряно, равно как и любые ссылки группы на комментарии или рабочие элементы.

Описание структур управления с помощью фрагментов

Для определения циклов, ветвей и параллельной обработки на схеме последовательностей можно использовать объединенные фрагменты (13). Эти сведения можно отобразить и на схеме активности. Схема активности позволяет показать сообщения, которыми обмениваются субъекты, менее наглядно, но иногда с помощью схемы активности можно более эффективно представить циклы, ветви и параллелизм.

Полный список типов фрагментов см. в разделе Описание потока управления с использованием фрагментов на схемах последовательностей UML.

Создание объединенного фрагмента

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

    Примечание

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

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

    Отображается новый фрагмент. В нем содержатся выбранные сообщения.

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

  3. Чтобы задать условие для фрагмента, щелкните границу фрагмента правой кнопкой мыши и выберите Свойства. Задайте значение для свойства Условие.

    Условие используется для определения требований к ветви или циклу.

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

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

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

В файле кода Visual C# или Visual Basic можно создать схему последовательностей из определения метода.

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

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

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

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

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

    Примечание

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

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

Переход от созданных линий жизни и сообщений к коду

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

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

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

Копирование созданной схемы последовательностей в модель UML или из нее

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

  2. В меню Правка выберите Копировать.

  3. Создайте или откройте схему последовательностей в проекте моделирования. Сведения о том, как это сделать, см. в разделе Основные этапы создания схем последовательностей.

  4. В меню Правка выберите Вставить.

    Копии выделенных элементов отображаются на схеме.

    Примечание

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

См. также

Ссылки

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

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

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

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

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

Схемы компонентов UML: справочные материалы

Схемы компонентов UML: справочные материалы

Другие ресурсы

Video: Sketching Interactions by using Sequence Diagrams