А диаграмма вариантов использования является фундаментальным инструментом моделирования в инженерии требований используется для визуализации взаимодействий между актерами (пользователями или внешними системами) и системой (или её функциональностью). Он помогает заинтересованным сторонам понять, что система должна делать с функциональной точки зрения, и служит мостом коммуникации между техническими командами и бизнес-пользователями.
Несмотря на свою простоту, диаграмма вариантов использования часто неправильно применяется из-за плохой идентификации актеров, неясных вариантов использования или неверных отношений. Это руководство призвано прояснить ключевые концепции, предоставить пошаговую методологию, и выделить распространённые ошибки для избежания.
| Концепция | Пояснение |
|---|---|
| Актер | Человеческий пользователь, организация или внешняя система, взаимодействующая с системой. Выступает в роли «пользователя» в контексте системы. Примеры: студент, учитель, администратор, платежный шлюз. |
| Вариант использования | Описание конкретной цели или функции, которую система выполняет для актера. Определяет что делает система, а не как. Примеры: «Зарегистрироваться на курс», «Сдать оценки», «Создать отчет». |
| Граница системы | Граница, разделяющая систему с внешними участниками и системами. Всё, что находится внутри границы, является частью системы. |
| Ассоциация | Линия, соединяющая участника с вариантом использования, указывающая, что участник может выполнить этот вариант использования. |
| Обобщение | Связь, при которой один участник наследует поведение от другого (например, «Студент» — это тип «Пользователь»). |
| Зависимость | Связь, указывающая, что один вариант использования зависит от другого (е |
| г., «Создать отчет» зависит от «Получить данные о студенте»). | |
| Включает | Вариант использования, который являетсянеобходимым для выполнения другого (например, «Сдать оценки» включает «Проверить идентификатор студента»). |
| Расширяет | Вариант использования, которыйусловно добавляет функциональность (например, «Отправить уведомление» расширяет «Сдать оценки» при оценках ниже порога). |
⚠️ Важное замечание: Варианты использования не связаны сфункциями — они связаны сфункциональными целями которые удовлетворяют потребности пользователей.
Задайте себе эти основные вопросы, чтобы выявить всех соответствующих участников:
| Вопрос | Почему это важно |
|---|---|
| Кто использует основные варианты использования? | Определяет основных пользователей (например, студенты, преподаватели). |
| Кто нуждается в поддержке в повседневной работе? | Находит роли поддержки (например, сотрудники отдела кадров, служба ИТ-поддержки). |
| Кто отвечает за администрирование системы? | Определяет роли администраторов (например, менеджер системы, администратор базы данных). |
| С какими внешними устройствами/системами программного обеспечения взаимодействует система? | Определяет внешние системы (например, электронная почта, платежный шлюз, ERP). |
| Кто заинтересован в результатах работы системы? | Определяет заинтересованные стороны (например, родители, члены совета). |
📌 Совет: Начните с наиболее критичных пользователей и расширяйтесь наружу. Используйте реальные сценарии или интервью для проверки идентификации участников.
💡 Пример: В системе управления студентами университета, к участникам могут относиться:
Студент
Преподаватель
Академический консультант
Служащий администрации
Платежный шлюз
Система ERP
После определения участников задайте следующие вопросы по каждому из них:
| Вопрос | Цель |
|---|---|
| Какие основные задачи должен выполнять участник? | Определяет функциональные цели (например, зарегистрироваться, записаться, посмотреть оценки). |
| Хочет ли участник запросить или изменить данные в системе? | Указывает операции чтения/записи (например, просмотр записей, редактирование профиля). |
| Хочет ли участник информировать систему о изменениях в других системах? | Предлагает триггеры, основанные на событиях (например, уведомить систему при добавлении курса). |
| Должен ли участник быть проинформирован о неожиданных событиях? | Указывает случаи использования уведомлений (например, «Предупреждение: обнаружено перегрузка курса»). |
📌 Используйте простой, ориентированный на цели язык. Избегайте технических терминов.
✅ Хороший случай использования: «Записаться на курс»
❌ Плохой случай использования: «Подать форму записи с проверкой» → становится слишком техническим.
Случаи использования могут быть смоделированы на разных уровнях:
| Уровень | Описание |
|---|---|
| Случаи использования верхнего уровня | Широкие функциональные цели, отражающие бизнес-цели (например, «Управление записями студентов»). |
| Уточненные случаи использования | Детальные действия, выведенные из целей верхнего уровня. |
🔁 Итеративный подход к разработке:
Начните с высокого уровня бизнес-целей.
Разбейте их на подцели.
Уточняйте каждый случай использования до тех пор, пока он не станет конкретным и выполнимым.
📌 Пример разбивки:
Верхний уровень: «Поддержка администрирования студентов»
Уточнение:
Студент может зарегистрироваться
Студент может записаться на курсы
Система хранит оценки
Система отправляет подтверждение записи
Это гарантирует, что система соответствуетбизнес-целямпри этом оставаясьпрактическими и проверяемыми.
Теперь разместите актеров и варианты использования на диаграмме и соедините их соответствующим образом.
[Актер] --> [Вариант использования]
↑
[Включение] [Расширение]
↓
[Зависимость]
Размещайте актеров за пределами границы системы (обычно слева, справа или сверху).
Размещайте варианты использования внутри границы системы (в центре или снизу).
Используйтесплошные линиидля связей.
Используйтештриховые линиидля зависимостей.
Используйтестрелки включения (→)длявключениясвязей.
Используйтестрелки расширения (→)длярасширять отношения.
Избегайте пересекающихся случаев использования; держите диаграмму чистой и удобной для чтения.
📌 Визуальный пример (текстовый):
+------------------+
| Студент | --> Записаться на курс
+------------------+
|
v
+------------------+
| Система | --> Сохранить записи на курсы
| (Граница) |
+------------------+
^
|
+------------------+
| Платежный шлюз | --> Обработать оплату за курс
+------------------+
🚨 Распространенная ошибка: рисование актеров внутри границы системы — это подразумевает, что они являются частью системы, чего на самом деле не происходит.

Эта диаграмма создана с помощью чат-бота Visual Paradigm AI:

| Ошибки | Почему это неправильно | Как это исправить |
|---|---|---|
| 🚫 Излишняя сложность актеров | Создание слишком большого количества актеров (например, «Джон Доу», «Сара Смит») вместо группировки ролей | Группируйте схожие роли (например, «Студент», «Преподаватель») |
| 🚫 Использование неясных случаев использования | Фразы вроде «управлять данными», «что-то сделать» | Замените на конкретные, направленные на цель фразы (например, «Подать заявку на запись на курс») |
| 🚫 Отсутствие зависимостей | Не показывает, как один случай использования зависит от другого | Добавьте включить или расширять отношения, где это необходимо |
| 🚫 Неправильное использование «расширять» | Использование расширитьдля обычных рабочих процессов |
Используйте включитьдля обязательных шагов; используйте расширитьтолько для необязательных, условных |
| 🚫 Игнорирование внешних систем | Не включая платежные шлюзы, электронную почту и т.д. | Определите все внешние системы и покажите их взаимодействия |
| 🚫 Использование только одного актера | Предполагая, что только один пользователь использует систему | Определите всех заинтересованных сторон и их потребности |
| 🚫 Использование технического жаргона | например, «Обновить базу данных», «вызвать API» | Оставайтесь на уровне функциональных действий — «Подать заявку» лучше |
| Практика | Объяснение |
|---|---|
| ✅ Начните с бизнес-целей | Моделируйте сверху вниз — согласуйте с стратегическими целями. |
| ✅ Вовлекайте заинтересованные стороны на ранних этапах | Проведите интервью с конечными пользователями или экспертами в области, чтобы проверить случаи использования. |
| ✅ Сохраняйте случаи использования независимыми | Каждый случай использования должен представлять одну четкую цель. |
| ✅ Используйте реальные сценарии | Основывайте случаи использования на реальных действиях пользователей (например, студент, записывающийся на курс). |
| ✅ Проверить с командой | Обсудить диаграмму с разработчиками, тестировщиками и бизнес-аналитиками. |
| ✅ Обновлять поэтапно | По мере изменения требований уточнять диаграмму небольшими циклами. |
| ✅ Детально документировать случаи использования | Включить предусловия, постусловия и критерии успеха/неудачи в отдельный документ. |
[30] Инженерия требований – Основополагающий текст по моделированию случаев использования.
[27] Определение случаев использования в требованиях к программному обеспечению – Практические методы получения случаев использования из актеров.
[16, 40] – Комплексная литература по инженерии требований и проектированию систем.
Стандарты IEEE/ISO: ISO/IEC 29148 – Руководство по спецификации случаев использования.
Рекомендуемая литература:
Требования к программному обеспечению: правильное выполнение с первого раза автор Иэн Спраул
Единый процесс разработки программного обеспечения (RUP) – Введение в моделирование случаев использования в UML
Член
Библиотекарь
Администратор
Онлайн-система каталога
Платежный шлюз
Член:
Взять книгу
Вернуть книгу
Поиск книг
Просмотр статуса членства
Библиотекарь:
Выдать книги
Принять возврат книг
Обновить записи о книгах
Создать список просроченных книг
Администратор:
Добавить новые книги
Управление учетными записями пользователей
Создать годовой отчет
Онлайн-каталог системы:
Поиск книг
Уведомить члена о новых поступлениях
Платежный шлюз:
Обработать штрафы
Обработать сборы за продление
Член → Взять → Включить → Вернуть
Библиотекарь → Выдать → Продлить → Отправить напоминание (если просрочено)
Администратор → Добавить книгу → Включить → Обновить каталог
Этот диаграмма ясно показывает, кто делает что, что они могут делать и как взаимодействуют системы.
✅ Я определил всех соответствующих участников?
✅ Использованные случаи описательны и ориентированы на цели?
✅ Все участники связаны хотя бы с одним использованным случаем?
✅ Зависимости (включить/расширить) правильно смоделированы?
✅ Отсутствуют ли какие-либо участники или варианты использования?
✅ Диаграмма легко читается и понимается?
✅ Я проверил его с заинтересованными сторонами?
Создание диаграммы вариантов использования— это больше, чем просто рисование линий и прямоугольников — это стратегический процесскоторый требует глубокого понимания потребностей пользователей, ясности в языке, и внимания к деталям.
Хотя диаграмма кажется простой, неправильное использование участников и вариантов использованияприводит к плохому проектированию системы, упущенным требованиям и разочарованным пользователям. Следуя шагам, описанным в этом руководстве — выявляя участников с помощью вопросов из реальной жизни, выводя варианты использования из потребностей участников и избегая распространенных ошибок — вы можете создавать точные, действенные и соответствующие заинтересованным сторонам диаграммы вариантов использования.
✅ Помните: Хорошая диаграмма вариантов использования рассказывает историю— историю о том, как пользователи взаимодействуют с системой для достижения своих целей.