Что такое диаграмма деятельности (Activity Diagram) в UML?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Диаграмма деятельности (Activity Diagram) в UML
Activity Diagram — это диаграмма, которая показывает последовательность действий и потоки управления в бизнес-процессе или алгоритме. Она визуализирует, в каком порядке выполняются операции, какие решения принимаются и как происходит параллелизм.
Основные элементы Activity Diagram
1. Начало и конец (Start и End)
Start Node — чёрный кружок End Node — чёрный кружок с обводкой
(●) — начало процесса
↓
[действие]
↓
(⊗) — конец процесса
2. Action (Действие)
Прямоугольник со скруглёнными углами — это одно действие/операция
┌─────────────────┐
│ Проверить email │
└─────────────────┘
3. Control Flow (Стрелки)
Стрелка показывает направление потока
┌──────────────┐
│ Начало │
└──────┬───────┘
↓
┌──────────────┐
│ Войти в код │
└──────┬───────┘
↓
┌──────────────┐
│ Проверка │
└──────┬───────┘
4. Decision (Условие/Ветвление)
Ромб — это условие, которое может быть истинно или ложно
┌─────────┐
│ Вход │
└────┬────┘
↓
◇ Пароль верный?
/ \
Да/ \Нет
/ \
↓ ↓
┌───┐ ┌────┐
│ ✓ │ │Ошибка│
└───┘ └────┘
5. Merge (Слияние путей)
Горизонтальная линия — это слияние нескольких потоков в один
Да ↓ ↓ Нет
┌──────────────┐
│ Действие │
└──────┬───────┘
6. Fork и Join (Параллельные потоки)
Fork — разделение на параллельные операции Join — слияние параллельных операций
┌────────┐
│ Начало │
└────┬───┘
║ Горизонтальная линия = Fork (начало параллели)
┌────┬────┐
│ │ │
↓ ↓ ↓
┌────┐┌──┐┌────┐
│Опер1││O2││Опер3│
└────┘└──┘└────┘
│ │ │
│ │ │
└────┼────┘
║ Горизонтальная линия = Join (конец параллели)
↓
7. Swimlanes (Дорожки ответственности)
Вертикальные колонки — показывают, кто выполняет каждое действие
┌─────────────────┬──────────────────┬────────────────┐
│ Покупатель │ Система │ Служба доставки│
├─────────────────┼──────────────────┼────────────────┤
│ │ │ │
│ (●) Начало │ │ │
│ │ │ │ │
│ ↓ │ │ │
│ Оформить заказ │ │ │
│ │ │ │ │
│ └──────────────→├──────────────────┤ │
│ │ Обработка заказа │ │
│ │ │ │ │
│ │ └───────────────→├─ Подготовить │
│ │ │ упаковку │
│ │←─────────────────┤ │ │
│ Получить │ Отправить │ │ │
│ уведомление │ уведомление │ │ │
│ │ │ │ │ │ │
│ (⊗) Конец │ (⊗) Конец │ (⊗) Конец │
│ │ │ │
└─────────────────┴──────────────────┴────────────────┘
8. Object (Объект данных)
Прямоугольник — показывает, что является входом/выходом действия
┌──────────────┐
│ Товар │ (Object)
└──────┬───────┘
↓
┌──────────────┐
│ Упаковать │
└──────┬───────┘
↓
┌──────────────┐
│ Коробка │ (Object)
└──────────────┘
Примеры Activity Diagram
Пример 1: Простой процесс входа
┌─────────────────────────────────────┐
│ Процесс входа │
└────────────────────┬────────────────┘
↓
◇ Email существует?
/ \
Да/ \Нет
/ \
↓ ↓
┌──────────────────┐ ┌──────────────────┐
│ Проверить пароль │ │ Показать ошибку │
└────────┬─────────┘ └────────┬─────────┘
↓ ↓
◇ Пароль верный? ┌─────────┐
/ \ │ (⊗)Конец│
Да/ \Нет└─────────┘
/ \
↓ ↓
┌──────────────┐ ┌──────────────────┐
│ Вход успешен │ │ Показать ошибку │
└────────┬─────┘ └────────┬─────────┘
│ │
└────────┬───────────┘
↓
┌────────────┐
│ (⊗) Конец │
└────────────┘
Пример 2: Обработка заказа с параллельными действиями
┌─────────────────────────────────────────────────────┐
│ Обработка заказа │
└──────────────────────┬────────────────────────────┘
↓
┌──────────────────┐
│ Получить заказ │
└────────┬─────────┘
↓
════════════════════════════════
║ Параллельное выполнение
┌──┴──┬─────────────┬──────────┐
↓ ↓ ↓ ↓
┌───────┐┌─────────┐┌────────────┐
│Проверка││Зарезерв││Отправить │
│платежа ││ировать ││уведомление │
│ ││товар ││ │
└───┬───┘└────┬────┘└─────┬──────┘
│ │ │
└─────────┼───────────┘
║
════════════════════════════════
↓
┌──────────────────┐
│ Создать пакет │
└────────┬─────────┘
↓
┌──────────────┐
│ (⊗) Конец │
└──────────────┘
Пример 3: Процесс с многоуровневым ветвлением
Процесс: Выбор способа доставки
┌────────────────┐
│ (●) Начало │
└────────┬───────┘
↓
┌────────────────┐
│ Выбрать товар │
└────────┬───────┘
↓
┌────────────────┐
│ Оформить заказ │
└────────┬───────┘
↓
◇ Какая доставка?
/ | | \
Стан/ Авто/ Авиа \Курьер
/ | | \
↓ ↓ ↓ ↓
┌─────┐┌──────┐┌────┐┌──────┐
│1 дн.││2-3 дн│Быстро2-3 часа
│+150 ││+50 ││+200││ │
└─┬───┘└──┬──┘└──┬─┘└──┬───┘
│ │ │ │
└───────┼──────┼─────┘
↓
┌────────────────┐
│ Оплатить │
└────────┬───────┘
↓
┌────────────────┐
│ (⊗) Конец │
└────────────────┘
Сравнение с другими диаграммами
| Диаграмма | Показывает | Когда использовать |
|---|---|---|
| Activity | Последовательность действий, потоки управления | Бизнес-процессы, алгоритмы |
| Sequence | Взаимодействие между объектами во времени | Коммуникация компонентов |
| Flowchart | Блок-схема, более простая | Алгоритмы, процессы |
| Use Case | Функции системы и акторы | Что система должна делать |
| State | Состояния и переходы | Жизненный цикл объекта |
Activity Diagram vs Flowchart
Flowchart (простая блок-схема):
START
↓
Читать x
↓
x > 0?
/ \
Да Нет
↓ ↓
Print Вход отрицателен
↓ ↓
END
Activity Diagram (более мощная):
(●) Начало
↓
[Читать x] Object: число
↓
◇ x > 0?
/ \
Да Нет
↓ ↓
[Вывести] [Ошибка]
↓ ↓
└────┬────┘
↓
(⊗) Конец
+ Может быть в swimlanes
+ Показывает объекты данных
+ Можно показывать параллельные процессы
Когда использовать Activity Diagram
✅ Используй когда:
- Нужно описать сложный бизнес-процесс
- Есть параллельные операции
- Нужно показать, кто что делает (swimlanes)
- Много условных ветвлений
- Нужна детализация Use Case
❌ Не используй когда:
- Нужна простая блок-схема (используй Flowchart)
- Нужно показать взаимодействие объектов (используй Sequence Diagram)
- Нужно показать состояния (используй State Diagram)
Правила рисования Activity Diagram
1. Чёткие начало и конец
✅ (●) → [действия] → (⊗)
❌ [действие1] → [действие2] (нет явного конца)
2. Swimlanes для ответственности
✅
┌──────────────┬──────────────┐
│ Пользователь │ Система │
├──────────────┼──────────────┤
│ [Действие1] │ │
│ └───────────→│ [Действие2] │
└──────────────┴──────────────┘
3. Одно действие = одна операция
✅ [Проверить email] [Проверить пароль]
❌ [Проверить email и пароль]
4. Чёткие условия
✅ ◇ Товар в наличии?
❌ ◇ Проверка
Пример для интервью: Процесс регистрации пользователя
┌────────────────────────────────────────────────────────┐
│ Процесс регистрации │
└───────────────────────┬────────────────────────────────┘
┌──────────────┬──────────────────┬──────────────────┐
│ Пользователь │ Система │ Email сервис │
├──────────────┼──────────────────┼──────────────────┤
│ │ │ │
│ (●) Начало │ │ │
│ │ │ │ │
│ ↓ │ │ │
│[Ввести данные]│ │ │
│ │ │ │ │
│ └───────────→├──────────────────┤ │
│ │[Проверить email] │ │
│ │ │ │ │
│ │ ◇ Email в БД? │ │
│ │ / \ │ │
│ │Да Нет │ │
│ ││ │ │ │
│ │↓ ↓ │ │
│ │[Ошибка] [Создать│ профиль] │
│ ││ │ │ │
│ ││ └──────→├─[Отправить код] │
│ ││ │ верификации │
│ ││ │ │ │
│ ││ ┌───────────┤←──────────┤ │
│ ││ │ │ Email │ │
│ │↓ │ │ отправлен │ │
│[Ошибка] ┌────────┐│ │ │ │
│ │ │Показать│ │ │ │
│←─┤ │ошибку │ │ │ │
│ │ └────────┘ │ │ │
│ │ │ │ │ │
│ │ [Получить код] │ │ │
│ │ └────────────────────────→├─────────→│ │
│ │ │ │ │
│ └───────────→├─[Проверить код] │ │ │
│ │ │ │ │ │
│ │ ◇ Код верный? │ │ │
│ │ / \ │ │ │
│ │Да Нет │ │ │
│ │↓ ↓ │ │ │
│ │[OK] [Ошибка] │ │ │
│ ┌────────────┤ │ │ │ │ │
│ ↓ │ └────────┘ │ │ │
│[Регистрация] │ │ │ │
│ │ │ │ │ │
│ (⊗) Конец │ (⊗) Конец │ (⊗) Конец│ │
│ │ │ │
└──────────────┴──────────────────┴──────────────────┘
Инструменты для рисования
- Draw.io — бесплатная, хорошо
- Lucidchart — платная, мощная
- PlantUML — текстовый формат
- Visio — профессиональная
Заключение
Activity Diagram — это мощный инструмент для визуализации бизнес-процессов и алгоритмов. Она показывает:
- ЧТО нужно делать (действия)
- В КАКОМ ПОРЯДКЕ (потоки управления)
- КТО это делает (swimlanes)
- ПАРАЛЛЕЛЬНО ли (fork/join)
Для системного аналитика это основной инструмент для описания сложных процессов заказчику и команде разработки.