Из всех UML-диаграмм именно диаграмма последовательности (sequence) чаще всего вызывает затруднения. Поэтому сегодня в рамках обучения начинающих системных и бизнес-аналитиков основам UML-моделирования, рассмотрим диаграмму последовательности на практическом примере оплаты товара в интернет-магазине через банковский платежный шлюз с применением промокода на скидку.
Постановка задачи: описание бизнес-процесса
Предположим, пользователь – посетитель сайта хочет купить курс по бизнес-анализу и оплатить его онлайн банковской картой. При этом он может получить скидку, применив промокод. Промокод действует только на определенный курс и ограничен по времени. Данные о промокоде хранятся в СУБД Учебного Центра (УЦ): сам промокод, курс, на который он распространяется, размер скидки, срок действия (дата валидности) и состояние (новый, выдан, использован, истек). Сам процесс оплаты, т.е. непосредственного списания денег с банковской карты выполняется на стороне банковского платежного шлюза. Выполняемую при этом последовательность шагов можно упрощенно представить следующим образом:
- пользователь выбирает курс по бизнес-анализу и нажимает кнопку «Купить»;
- открывается страница оплаты курса на сайте учебного центра с формой договора покупки курса и чек-боксом о наличии промокода;
- пользователь вводит свои данные в форму договора покупки курса;
- пользователь отмечает наличие промокода в чек-боксе;
- открывается поле ввода промокода и кнопка проверки его валидности;
- пользователь вводит промкод;
- пользователь проверяет его валидность, кликнув на кнопку «Проверить»;
- выполняется проверка валидности промокода с учетом данных по нему, которые имеются в СУБД УЦ.
- Если промокод валиден (т.е. привязан к выбранному курсу и дата действия его еще не истекла) и находится в состоянии «выдан», цена курса меняется с учетом скидки по промокоду. Иначе цена курса остается прежней и пользователю показывается сообщение о невозможности применить этот код по одной из следующих причин: уже использован, не применим к выбранному курсу или закончился срок его действия.
- соглашаясь с ценой (пересчитанной или прежней), пользователь нажимает кнопку «Оплатить». При этом в сторону платежного шлюза посылается запрос со всеми параметрами заказа, где сумма списания равна итоговой цене, рассчитанной с учетом скидки по промокоду, если ее удалось применить.
- открывается веб-страница платежного шлюза с формой ввода данных банковской карты пользователя и суммой списания;
- пользователь вводит реквизиты своей банковской карты и нажимает кнопку «Оплатить». При этом на сервер банка в систему «Антифрод» отправляются детали заказа и данные карты, чтобы проверить заказ на мошенничество.
- в платёжный шлюз возвращаются результаты проверки заказа на мошенничество. Если заказ признан мошенническим, оплата отклоняется и платеж считается неуспешным. Иначе платёжный шлюз списывает деньги со счёта клиента.
- Платёжный шлюз возвращает сайту УЦ статус платежа (успешный или неуспешный).
- На странице оплату сайта УЦ отображается статус платежа.
- При успешном платеже в СУБД УЦ меняется состояние промокода на «Использован».
Хотя при проектировании систем не рекомендуется включать в описание бизнес-процессов детали интерфейса, для простоты и наглядности рассматриваемого примера, мы нарушим это правило. Теперь рассмотрим, как данное текстовое описание последовательности шагов показать в виде UML-диаграммы последовательности. Кстати, проверить свои знания UML вы можете прямо на нашем сайте, выполнив бесплатный интерактивный тест. А посмотреть, как строить другие виды UML-диаграмм (классов, состояний и вариантов и использования), можно в этой статье.
UML-диаграмма последовательности
Итак, в UML-диаграмме описанной последовательности будут участвовать объекты:
- Пользователь;
- страница оплаты сайта учебного центра (Сайт УЦ);
- СУБД УЦ;
- Платежный шлюз;
- Антифрод-система.
Взаимодействие между ними на диаграмме будет отображено в виде прямых сигналов (сплошные стрелки) и ответов (пунктирные) в рамках линии жизни объекта, показанной как длинный вертикальный прямоугольник.
Из-за ответных сообщений их общее количество больше, чем в текстовой последовательности шагов, описанной ранее. Для простоты рассматриваемого примера здесь не показан опциональный сценарий применения защищенной технологии 3D-secure.
Таким образом, UML-диаграмма последовательности позволяет достаточно наглядно показать взаимодействие между разными объектами, детализируя какими сигналами прямыми и ответными они обмениваются. Чаще всего это требуется для иллюстрации интерактивного взаимодействия между разными сервисами или объектами одной системы, например, когда при регистрации клиентского обращения запускается задача ответственному сотруднику на его обработку. Более детально разобраться с sequence-диаграммой и другими моделями UML вам поможет специализированный курс «UML для бизнес-аналитика».
В рамках плотного 8-часового курса вы познакомитесь с основными возможностями и примерами практического использования UML, чтобы научиться понимать смысл диаграмм и уметь самостоятельно разрабатывать их. За 1 день изучения этого метода моделирования процессов и проектирования систем начинающий аналитик перестанет бояться UML и сможет применять на практике. После обучения вы будете способны дополнять текстовые схемы представления требований User Story и Use Case схемами UML вариантов использования и детализировать их далее в диаграммы деятельности, последовательности и состояний, чтобы наглядно объяснить разработчикам, что именно должна делать программная система.