Как построить диаграмму вариантов использования (UML)
Диаграмма вариантов использования (Use Case Diagram) — это визуальная модель, которая показывает, кто взаимодействует с системой (акторы) и что они могут в ней делать (варианты использования). Она отвечает на вопрос «Что делает система?», игнорируя технические детали реализации. Это идеальный инструмент для согласования требований между заказчиком, аналитиком и разработчиком на старте проекта.
В этой статье разберем элементы нотации, правила построения связей и рассмотрим реальные примеры, которые можно адаптировать под ваш продукт.
Главное правило: Диаграмма вариантов использования описывает функциональные требования с точки зрения пользователя, а не внутреннюю архитектуру базы данных или код.
Основные элементы диаграммы
Для построения корректной схемы достаточно знать четыре базовых элемента UML.
1. Актор (Actor)
Актор — это роль, которая взаимодействует с системой. Это не обязательно человек; актором может быть другая информационная система, таймер или внешнее устройство.
- Обозначение: Стикмен (человечек) или прямоугольник с пометкой
<<actor>>. - Примеры:
Покупатель,Администратор,Платежный шлюз.
2. Вариант использования (Use Case)
Это конкретная услуга или функция, которую система предоставляет актору для достижения его цели.
- Обозначение: Овал (эллипс) с названием внутри.
- Правило именования: Используйте глагол + существительное (например,
Оформить заказ,Зарегистрироваться). Избегайте технических терминов вродеВызов API.
3. Граница системы (System Boundary)
Прямоугольник, который ограничивает область видимости вашей системы.
- Зачем нужна: Помогает отделить функционал вашего приложения от внешних сервисов и действий пользователей, происходящих за пределами ПО.
- Расположение: Акторы находятся за пределами рамки, варианты использования — внутри.
4. Связи (Relationships)
Линии, показывающие взаимодействие между элементами.
| Тип связи | Обозначение | Описание |
|---|---|---|
| Ассоциация | Сплошная линия | Прямое взаимодействие актора с вариантом использования. |
| Include | Пунктирная стрелка с <<include>> | Обязательное включение одного кейса в другой. Базовый кейс не может выполниться без включаемого. |
| Extend | Пунктирная стрелка с <<extend>> | Необязательное расширение поведения. Срабатывает только при определенных условиях. |
| Generalization | Сплошная линия со стрелкой | Наследование. Дочерний актор или кейс наследует поведение родительского. |
Разбор связей: Include vs Extend
Это самая частая точка ошибок при моделировании. Понимание разницы критично для чистоты диаграммы.
Include (Включение)
Используется, когда один вариант использования всегда вызывает другой. Это способ вынести повторяющуюся логику в отдельный блок.
- Пример: Кейс
Перевод денегиСнятие наличныхвсегда требуютПроверки баланса. - Направление стрелки: От базового кейса к включаемому (
Базовый --> <<include>> --> Включаемый).
Extend (Расширение)
Используется для описания альтернативных или опциональных сценариев. Расширяющий кейс выполняется только при выполнении определенного условия.
- Пример: Кейс
Оплата заказаможет быть расширен кейсомПрименить промокод(если у пользователя есть код) илиОбработка ошибки платежа(если карта отклонена). - Направление стрелки: От расширяющего кейса к базовому (
Расширяющий --> <<extend>> --> Базовый).
Лайфхак для запоминания:
- Include — это «часть целого». Без этого куска основной процесс неполноценен.
- Extend — это «дополнительная опция». Основной процесс может пройти успешно и без него.
Пошаговый алгоритм составления диаграммы
- Определите границы системы. Решите, что именно вы проектируете (например, мобильное приложение доставки, а не курьерскую службу в целом).
- Выявите акторов. Кто будет пользоваться системой? Не путайте должности с ролями. Один человек может иметь несколько ролей (например, сотрудник может быть и
Менеджером, иПользователем портала). - Сформулируйте варианты использования. Для каждого актора перечислите цели, которые он хочет достичь с помощью системы.
- Установите ассоциации. Соедините акторов с соответствующими кейсами.
- Детализируйте связи. Найдите общие шаги для нескольких кейсов и оформите их через
<<include>>. Выделите редкие или условные сценарии через<<extend>>. - Проверьте полноту. Убедитесь, что у каждого актора есть хотя бы один вариант использования, и нет «висящих» кейсов без назначения.
Практические примеры
Пример 1: Интернет-магазин
В этом примере мы моделируем базовый функционал e-commerce платформы.
Акторы:
Гость(неавторизованный пользователь)Покупатель(авторизованный пользователь)Администратор
Ключевые связи:
Гостьможет выполнятьПросмотр каталогаиПоиск товаров.Покупательнаследует праваГостя(Generalization) и дополнительно можетДобавить товар в корзинуиОформить заказ.- Кейс
Оформить заказвключает<<include>>Авторизация(если пользователь еще не вошел) иПроверка наличия товара. - Кейс
Оформить заказрасширяется<<extend>>кейсомПрименение скидки(опционально). АдминистраторуправляетТоварамииЗаказами.
Пример 2: Сервис онлайн-записи (Салон красоты)
Акторы:
КлиентМастерСистема уведомлений(технический актор)
Сценарии:
КлиентвыбираетУслугуиМастера.- Кейс
Записаться на приемвключает<<include>>Проверку свободного времени. - Если время свободно, система подтверждает запись.
- Кейс
Подтверждение записирасширяется<<extend>>кейсомОтправка SMS-напоминания(выполняется за 24 часа до визита). Здесь актором выступаетСистема уведомлений.
Частая ошибка: Не пытайтесь изобразить на одной диаграмме все возможные состояния интерфейса. Диаграмма вариантов использования — это карта возможностей, а не схема навигации по экранам.
Частые ошибки при моделировании
- Функциональная декомпозиция вместо бизнес-процессов.
- Ошибка: Создание кейсов «Нажать кнопку», «Открыть форму», «Сохранить в БД».
- Как надо: Объедините эти шаги в один бизнес-результат: «Сохранить профиль».
- Игнорирование границ системы.
- Без четкой границы непонятно, где заканчивается ответственность вашего ПО и начинаются действия пользователя или внешних сервисов.
- Слишком много деталей.
- Если на диаграмме более 10–15 вариантов использования, она становится нечитаемой. Разбейте систему на подсистемы (модули) и постройте отдельные диаграммы для каждого модуля.
- Путаница в направлениях стрелок.
- Помните:
includeидет от общего к частному,extend— от частного к общему.
- Помните:
FAQ
Нужна ли диаграмма вариантов использования для маленьких проектов? Да, даже для MVP она помогает отсеять лишние функции и четко определить, что именно нужно сделать в первую очередь. Это экономит время на разработке ненужного функционала.
Чем Use Case отличается от User Story? User Story («Как пользователь, я хочу...») — это текстовое описание требования для бэклога. Use Case Diagram — это визуальная структура, показывающая связи между всеми требованиями системы. Они дополняют друг друга: диаграмма дает общую картину, истории — детали реализации.
Какие инструменты использовать для построения? Подойдут любые редакторы с поддержкой UML: PlantUML (для генерации из кода), Draw.io, Lucidchart, Miro или специализированные IDE вроде Enterprise Architect. Главное — соблюдать стандарт нотации.
Можно ли использовать диаграмму для тестирования?
Да. Каждый вариант использования легко трансформируется в тест-кейс. Связи extend подсказывают, какие граничные случаи нужно проверить в первую очередь.