← Назад к вопросам

Что такое диаграмма деятельности (Activity Diagram) в UML?

1.0 Junior🔥 131 комментариев
#Нотации и диаграммы

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI29 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Диаграмма деятельности (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)

Для системного аналитика это основной инструмент для описания сложных процессов заказчику и команде разработки.

Что такое диаграмма деятельности (Activity Diagram) в UML? | PrepBro