Рубрики
Без рубрики

Диаграммы UML: Обзор диаграммы последовательности

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

Эта статья была первоначально опубликована на Medium.

Диаграмма Последовательности UML Через Взаимодействие Рассказчика “Маленького принца” С Внешним Миром | Джин Зейнисс | Стартап | Февраль 2021 г. | Среда

Джин Зейнисс ・ 20 февраля 2021 года ・ 7 минут чтения.

Наиболее часто используемый мной (и мой любимый) Диаграмма UML – это диаграмма последовательности. Проекты реализации каждой новой функции, над которой я работаю, загружены диаграммами последовательности. Я серьезно, совершенно битком набит.

В общем случае диаграмма последовательности описывает, как и в каком порядке объекты в нашей системе взаимодействуют друг с другом, расположенные во временной последовательности. В этой статье я собираюсь показать вам обозначения этих взаимодействий через взаимодействие рассказчика “Маленького принца” с окружающим миром. Вы читали роман Антуана де Сент-Экзюпери?

Я кратко изложу только ту часть, которая имеет отношение к текущей статье. Это будет связано, я обещаю.

Ладно, вкратце, когда он был ребенком, Рассказчик читал книгу о джунглях и был очарован тем фактом, что удав проглатывает свою добычу целиком, а затем спит в течение нескольких месяцев, переваривая пищу. Он нарисовал удава в таком состоянии. Вот рентген боа, если у вас есть какие-либо сомнения. Когда он показал его взрослым, все они подумали, что это неуклюжая шляпа, и предложили ему перестать валять дурака и вместо этого изучать “важные предметы” в школе. Критика взрослых убила художника. Ребенок вырос, стал пилотом и летал по всему миру (не самое худшее). Став взрослым, он использовал рисунок удава, чтобы решить, на какие темы разговаривать с другими взрослыми. Если взрослый видел бугристую шляпу, Рассказчик говорил о гольфе, бриджах и политике; он никогда не упоминал джунгли, боа-констрикторов или звезды.

Теперь вернемся к Диаграмме Последовательности.

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

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

Давайте начнем с обзора основных символов:

Схема последовательности имеет только два основных символа: объект и фокус управления.

Объект

Объект диаграммы последовательности обозначен рамкой с именем и пунктирной линией , продолженной ниже . Хотя объект может представлять определенный класс (в зависимости от того, какую логику вы описываете), я в основном использую его для определения микросервиса.

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

Фокус контроля

Центром управления является блок , который накладывает временную шкалу объекта . Это время, в течение которого объект фактически используется.

Теперь мы переходим к самой захватывающей части — взаимодействию между объектами!

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

Синхронное сообщение

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

Вернемся к нашему Рассказчику. Помнишь рисунок бао? Он показал рисунок бао взрослым и на самом деле ждал, чтобы услышать, что они видят: Синхронное сообщение обозначается сплошной линией с заполненной и заключенной стрелкой , указывающей от вызывающего абонента (Рассказчика) к вызываемому абоненту (Взрослому). И вы можете видеть, что это начинает новый фокус контроля на вызываемом абоненте.

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

Если вы описываете поток между классами, я имею в виду, что Рассказчик обращается к методу Взрослого, вы можете поместить имя метода в строку. Также можно указать переданные параметры (в зависимости от уровня детализации, который вы ищете). Линия возврата может быть идентифицирована с возвращаемыми значениями, которые возвращаются вызывающему абоненту. Опять же, в зависимости от уровня детализации, который вы выбрали. Часто бывает принято вообще не помечать строку возврата.

” Less is more,” Ludwig Mies van der Rohe

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

“God is in the details” — Людвиг МИС Ван дер Роэ

Еще одним особым видом послания является самомассаж.

Самосообщение

Очевидно, что самосообщение – это вызов, который объект делает самому себе. Когда Рассказчик задает вопрос Взрослому, первый призывает свои когнитивные способности ответить на вопрос. В случае с самосообщением вам не нужна отдача от него.

Асинхронное сообщение

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

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

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

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

Первый структурный контроль, который я хочу вам показать, – это Условный контроль.

Альтернативный (Условный) Контроль

Альтернативой является выбор (который обычно является взаимоисключающим) между последовательностями сообщений. Это моделируется логикой switch или if/else в нашем коде: Рассказчик показал бао рисунок и спросил: “Что это?”. Если взрослый видел шляпу, Рассказчик говорил о гольфе; Если взрослый видел бао, он не стеснялся говорить о боа-констрикторах.

Альтернативный элемент управления представлен помеченной прямоугольной формой с пунктирной линией внутри .

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

Рассказчик, который был пилотом (помните?), терпит крушение в пустыне Сахара. Пока он пытается починить свой двигатель, из ниоткуда появляется маленький мальчик (Маленький принц) и просто просит его нарисовать овцу.

Теперь давайте поговорим о параллельном управлении.

Параллельное Управление

Итак, наш Рассказчик – неординарный человек (мягко говоря). Однако, к его чести, он многозадачен. Он может (хотя и с переменным успехом) ремонтировать двигатель и параллельно общаться с Маленьким принцем. Должен сказать, он гений! Как вы можете видеть, нотация параллельного управления очень похожа на альтернативную. Он представлен помеченным прямоугольником с разделительной пунктирной линией . Однако здесь каждый раздел должен быть обработан, и процессы должны выполняться параллельно.

И последнее, но не менее важное: структурный контроль – это циклический.

Управление Циклом

Когда в рассказе появился Маленький принц, он попросил Рассказчика нарисовать овцу. Подумайте об этом на мгновение. Маленький мальчик в пустыне, один… Он не испытывает жажды или голода. Он хочет овцу. Фея-Моргана? Гениальный Рассказчик останавливает мир и рисует овцу. До сих пор все было так хорошо?

Как оказалось, мальчик был очень привередлив. Он несколько раз просил нарисовать овцу (один раз она была слишком большой, другой – слишком старой). Пока Рассказчик не вытащил коробку и не сказал, что овца находится внутри. Элемент управления циклом показывает, что взаимодействие с сообщениями будет происходить несколько раз. Под перевернутой вкладкой есть защитный текст, объясняющий цикл.

Вот и все! 🐑

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

Оригинал: “https://dev.to/behalf/uml-diagrams-sequence-diagram-overview-31kp”