Project Manager Skills: UML
Диаграмма последовательности для решения интеграционных кейсов
При разработке протоколов интеграции бывает очень и очень много вводных. Например: две 1С, CRM, где и физический и юридические лица, одни с дисконтными картами, другие без е-мейлов… Экспортируй оттуда, импортируй сюда… впору кинуть документы в воздух, подышать и присесть собирать их обратно. Чтобы голова не лопнула и было понятно и клиенту, и вам, и программисту — рисуйте диаграммы последовательности UML.
Что такое диаграмма последовательности UML
UML — это специальный язык для описания разных бизнес-процессов, структур и прочих вещей, для которых необходимо последовательное описание. В запутанных ситуациях с большим количеством сущностей может сильно помочь. UML включает несколько видов диаграмм, рассмотрим диаграмму последовательности.
Возьмем упрощенный сценарий «Заказ в ресторане».
Возьмем упрощенный сценарий «Заказ в ресторане».
Есть главные лица сценария: клиент, официант, повар и кассир. В UML их называют «акторы» — какие-то действующие лица или объекты, с которыми происходят операции.
Далее таймлайн — линия жизни объектов, она расположена вертикально сверху вниз.
Сообщения между акторами бывают нескольких типов. Основные, на которые нужно обратить внимание — это синхронные (сообщение инициирует обработку и отправитель ждет ее завершения) и асинхронные (сообщение инициирует обработку, но отправитель не дожидается ее завершения). В данном случае у нас асинхронные взаимоотношения.
Читаем диаграмму:
Далее таймлайн — линия жизни объектов, она расположена вертикально сверху вниз.
Сообщения между акторами бывают нескольких типов. Основные, на которые нужно обратить внимание — это синхронные (сообщение инициирует обработку и отправитель ждет ее завершения) и асинхронные (сообщение инициирует обработку, но отправитель не дожидается ее завершения). В данном случае у нас асинхронные взаимоотношения.
Читаем диаграмму:
- гость заказывает еду у официанта,
- официант его слушает и далее идет на кухню, чтобы передать заказ повару,
- повар начинает готовить,
- параллельно с этим официант приходит к клиенту и наливает ему винишко,
- пока клиент пьет винишко, повар приносит еду на стойку официанту,
- официант забирает заказ и относит его гостю. Больше клиент с официантом дел не имеет (официант выпадает из системы),
- гость оплачивает свой заказ у кассира и уходит.
Диаграмма последовательности 2.0
В классической UML второй версии диаграмма стала еще более подробной, разбитой на более мелкие элементы и связи. Подходит для детальной проработки структур и систем.
Есть разные типы объектов, которые могут между собой взаимодействовать:
Есть разные типы объектов, которые могут между собой взаимодействовать:
Актор
Участник процесса.
Менеджер заказа
Это какой-то интерфейс. Причем не обязательно экранный интерфейс, он может быть физическим: картридер в банкомате или форма регистрации на сайте.
Менеджер заказа
Или менеджер паролей, или любой другой программный модуль, к которому идет обращение от программной подсистемы. Например, менеджер паролей отвечает за то, чтобы делать авторизацию/регистрацию.
Заказ
Это объект, который создается, либо с которым происходят какие-то операции. Например, счет или пользователь в базе данных.
Синхронный вызов (связь)
Напомним, что пользователь отправил сообщение в систему, и пока ему она не ответит, он ничего не может делать.
Асинхронный вызов (связь)
А тут пользователь отправил сообщение в систему, и может продолжать с ней взаимодействовать, не дожидаясь ответа.
Запрос данных
Объект сам у себя запрашивает данные.
Пример диаграммы
Читаем диаграмму:
Это форма авторизации. Она передает данные в менеджер паролей: логин и пароль. Менеджер паролей проверяет, есть ли такой пользователь в системе. Если нет, то выводит в форме авторизации ошибку. Еще форма авторизации ожидает ответ, пока менеджер пароля проверяет данные, и сообщает форме авторизации, какое сообщение необходимо вывести пользователю.
Это форма авторизации. Она передает данные в менеджер паролей: логин и пароль. Менеджер паролей проверяет, есть ли такой пользователь в системе. Если нет, то выводит в форме авторизации ошибку. Еще форма авторизации ожидает ответ, пока менеджер пароля проверяет данные, и сообщает форме авторизации, какое сообщение необходимо вывести пользователю.
Как это использовать на практике
Рассмотрим кейс и закрепим материал небольшим видео (если читать было некогда или не хотелось, а тут и посмотреть можно).
Все совпадения случайны, ситуация надуманная и высосанная из пальца.
Ситуация:
Идет интеграция сайта с 1С — разрабатывается протокол интеграции. По ходу обсуждения выясняется:
- 1С-ки будет две: Тверская и Московская;
- Основная интеграция — с Тверской;
- Вся товарная база хранится в Тверской 1С;
- Помимо товаров, нужна выгрузка контрагентов;
- Контрагент привязывается при регистрации к Москве или к Твери;
- Контрагенты хранятся частично в Московской, частично — в Тверской базе;
- Не у всех текущих контрагентов заполнены поля емейл и телефон;
- Создание новых контрагентов требует премодерации;
- Кроме того, заказы необходимо передавать в CRM.
Решение: составляем диаграммы последовательности. Одна и та же структура будет описана в двух вариантах UML-диаграмм.
Диаграмма 1: Регистрация юридического лица (Москва)
Читаем диаграмму:
Юридическое лицо заходит на сайт и заполняет форму регистрации, указывая город Москва. Сайт передает данные на е-мейл модератору для премодерации. Модератор вручную заполняет данные контрагента в московскую 1С, создавая нового пользователя. Сайт получает сообщение, что регистрация завершена и отправляет письмо пользователю.
Юридическое лицо заходит на сайт и заполняет форму регистрации, указывая город Москва. Сайт передает данные на е-мейл модератору для премодерации. Модератор вручную заполняет данные контрагента в московскую 1С, создавая нового пользователя. Сайт получает сообщение, что регистрация завершена и отправляет письмо пользователю.
Диаграмма 2: Регистрация физического лица (Тверь)
Читаем диаграмму:
Физическое лицо заходит на сайт и заполняет форму регистрации, указывая город Тверь. Сайт передает данные в тверскую 1С, создавая нового пользователя. Сайт получает сообщение, что регистрация завершена и отправляет письмо пользователю.
Физическое лицо заходит на сайт и заполняет форму регистрации, указывая город Тверь. Сайт передает данные в тверскую 1С, создавая нового пользователя. Сайт получает сообщение, что регистрация завершена и отправляет письмо пользователю.
Диаграмма 3: Оформление заказа (Тверь)
Читаем диаграмму:
Зарегистрированный клиент создает заказ на сайте, выбирая город Тверь. В тверской 1С создается заказ (и менеджер в ручную дублирует заказ в 1С). После создания заказа в 1С у заказа меняется статус, который передается сайту и показывается клиенту.
Зарегистрированный клиент создает заказ на сайте, выбирая город Тверь. В тверской 1С создается заказ (и менеджер в ручную дублирует заказ в 1С). После создания заказа в 1С у заказа меняется статус, который передается сайту и показывается клиенту.
Диаграмма 4: Оформление заказа (Москва)
Читаем диаграмму:
Зарегистрированный клиент создает заказ на сайте, выбирая город Москва. В московской 1С создается заказ (и менеджер в ручную дублирует заказ в 1С). После создания заказа в 1С у заказа меняется статус, который передается сайту и показывается клиенту.
Зарегистрированный клиент создает заказ на сайте, выбирая город Москва. В московской 1С создается заказ (и менеджер в ручную дублирует заказ в 1С). После создания заказа в 1С у заказа меняется статус, который передается сайту и показывается клиенту.
Обзор программ для построения UML-диаграмм
Раньше нужно было интернет до конца досмотреть, чтобы найти хотя бы одну. Сейчас онлайн сервисов для построения UML-диаграмм уйма. Делимся миниобзором на те, которыми пользуемся сами.
Бесплатно.
Интегрирован с Google Drive, G Suite, Dropbox, Confluence, Jira от Atlassian, Trello и другими сервисами. Можно работать как онлайн, так и в настольном приложении для MacOS, Windows и Linux. Схемы в этой статье мы сделали в этой программе.
Интегрирован с Google Drive, G Suite, Dropbox, Confluence, Jira от Atlassian, Trello и другими сервисами. Можно работать как онлайн, так и в настольном приложении для MacOS, Windows и Linux. Схемы в этой статье мы сделали в этой программе.
Платно: от 312,50 или 937,50 руб в месяц.
Очень много инструментов, и пользоваться ими сможет и человек без специальных знаний и навыков, т.к. функции и интерфейс будут знакомы из пакета MS Office. Работает как приложение и в браузере, а данные хранит в OneDrive.
Очень много инструментов, и пользоваться ими сможет и человек без специальных знаний и навыков, т.к. функции и интерфейс будут знакомы из пакета MS Office. Работает как приложение и в браузере, а данные хранит в OneDrive.
Бесплатно 15 дней. Далее от $ 99 в год. Если не купить, то данные, нарисованные за 15 дней, не сохранятся.
Аналог Microsoft Visio. Принцип работы и интерфейсы у обеих программ похожи. Здесь миллиард видов диаграмм, но пользоваться ими интуитивно понятно.
Аналог Microsoft Visio. Принцип работы и интерфейсы у обеих программ похожи. Здесь миллиард видов диаграмм, но пользоваться ими интуитивно понятно.
Бесплатно.
Выбираете диаграмму из шаблонов и наполняете ее своими данными. В результате получается код диаграммы. На любителя :)
Выбираете диаграмму из шаблонов и наполняете ее своими данными. В результате получается код диаграммы. На любителя :)
Бывают диаграммы с альтернативными сценариями, диагональными линиями (процесс идет и занимает какое-то время, например, обработка заказа занимает 30 секунд) и диаграммы с циклами (сколько раз повторяется сценарий). Но это все формализм и сложности. Чем здесь UML может быть плох, так это тем, что можно нарисовать такие детализации, которые кодом потом никогда не реализовать.
Описывайте только один конкретный кейс и одну конкретную ситуацию (как правило, позитивный и самый длинный сценарий), иначе можете запутаться. Один кейс — одна диаграмма.
Что действительно полезно, так это синхронные и асинхронные вызовы, объекты и сообщения между ними.
Описывайте только один конкретный кейс и одну конкретную ситуацию (как правило, позитивный и самый длинный сценарий), иначе можете запутаться. Один кейс — одна диаграмма.
Что действительно полезно, так это синхронные и асинхронные вызовы, объекты и сообщения между ними.