Медиаблог /

Что такое диаграмма состояний UML: элементы, примеры и пошаговое построение

17 сентября 2026

Что такое диаграмма состояний UML: элементы, примеры и пошаговое построение

Диаграмма состояний UML — поведенческая диаграмма, показывающая состояния объекта и переходы между ними в ответ на внешние события. В основе — теория конечных автоматов. Применяют её там, где у объекта есть чётко выраженные стадии жизненного цикла: программные системы, встроенные устройства, бизнес-процессы. В статье — элементы нотации, пять шагов построения, два разобранных примера (светофор и жизненный цикл заказа) и обзор онлайн-инструментов.

Разработчик рисует диаграмму состояний UML на стеклянной доске

Диаграмма состояний в UML: определение и место в стандарте

В унифицированном языке моделирования (UML) существуют две группы диаграмм: структурные и поведенческие. Диаграмма состояний относится ко второй группе — рядом с диаграммой активности и диаграммой последовательности. Её задача — показать, как объект ведёт себя во времени: с момента создания до завершения жизненного цикла объекта.

image

Учитесь бесплатно за счёт государства

Экономия до 100 000 ₽ на любой программе

Выбрать курс

Нотация стандартизирована в спецификации OMG UML 2.x и принята как стандарт ISO/IEC 19501.

Конечный автомат — теоретическая основа

Формальная основа диаграммы — конечный автомат (state machine, FSM). Он описывается пятёркой: конечное множество состояний S, алфавит событий Σ, функция переходов δ, начальное состояние s₀, допускающие состояния F.

Различают два вида: автомат Мура — выход зависит только от текущего состояния; автомат Мили — от состояния и входного сигнала одновременно. UML реализует оба: действия задаются как на переходе между состояниями, так и внутри самого состояния через entry/do/exit.

Основные элементы диаграммы состояний UML

Диаграмма строится из трёх классов элементов: состояния, переходы и псевдосостояния. Вместе они образуют графическое представление динамического поведения объекта — от первого события до завершения.

Навыки UML-проектирования и моделирования состояний входят в программу «Системный аналитик: с нуля до проектирования систем» — 72 часа, обучение в рамках нацпроекта «Кадры». Подробнее — в каталоге программ обучения.

Нотация диаграммы состояний UML: блоки entry, do, exit и стрелка перехода

Виды состояний и внутренние действия

Состояние — устойчивый период, в течение которого объект ожидает события. Нотация: прямоугольник с закруглёнными углами.

Основные виды:

  • Простое — без вложенности; единственный активный период.
  • Составное — содержит подсостояния; отображается как вложенный блок внутри прямоугольника.
  • Параллельное — несколько активных регионов одновременно, разделены пунктиром.
  • Псевдосостояние — начальное (●), конечное (⊙), история (H / H*).

Внутри состояния задают три вида действий. Порядок строгий: entry (однократно при входе) → do (непрерывно, пока состояние активно) → exit (однократно при выходе). Состояние истории H запоминает последнее активное подсостояние прямого уровня; H* — подсостояние любой глубины вложенности.

Переход: структура метки и охранное условие

Переход — стрелка от исходного состояния к целевому. Метка записывается в формате: событие [охранное условие] / действие. Каждый элемент необязателен, но хотя бы один из двух — триггер или охранное условие — должен присутствовать.

Сторожевое условие (охранное условие, guard) — логическое выражение в квадратных скобках: [Оплата подтверждена]. Когда из одного состояния выходят несколько переходов по одному событию, guard выбирает нужную ветку. Условия должны быть взаимоисключающими.

Типы переходов: простой (между двумя состояниями), составной (пересекает границу составного состояния), внутренний (действие выполняется без смены состояния).

Как построить диаграмму состояний UML: пять шагов

Построение диаграммы начинается с определения объекта, а не с рисования стрелок.

Шаг 1 — определить объект. Выбрать конкретный объект или компонент: заказ, пользовательский сеанс, сетевое соединение. Диаграмма состояний описывает жизненный цикл одного объекта — не процесс в целом.

Шаг 2 — выявить устойчивые состояния. Перечислить все равновесные стадии, где объект ожидает события. Каждое состояние именуется осмысленно: «Ожидание оплаты», а не «Состояние3».

Шаг 3 — задать события и охранные условия. Для каждого перехода определить событие-триггер и условие, при котором переход разрешён.

Шаг 4 — добавить переходы. Соединить состояния стрелками с метками событие [guard] / действие. Добавить начальное псевдосостояние (●) и конечное (⊙) при необходимости.

Шаг 5 — верифицировать. Пройтись по диаграмме вместе с разработчиком, бизнес-аналитиком и архитектором: нет ли состояний без выхода, нет ли конфликтующих охранных условий. Прописать entry/do/exit там, где поведение внутри состояния важно для реализации.

Пять шагов построения диаграммы состояний UML — пошаговая схема

Примеры диаграмм состояний UML

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

Светофор — простая циклическая диаграмма

Классический пример — автоматизированный светофор. Три состояния: Красный, Зелёный, Жёлтый. Три перехода по событию «таймер»: Красный → Зелёный → Жёлтый → Красный. Начальное псевдосостояние (●) ведёт в Красный; конечного состояния нет — автомат цикличен.

Охранных условий нет: каждый переход срабатывает однозначно по событию «таймер». Пример показывает минимальный набор элементов: три состояния, одно начальное псевдосостояние и три перехода.

Диаграмма состояний UML светофора: Красный, Зелёный, Жёлтый с переходами

Заказ в интернет-магазине — диаграмма с охранным условием

Основной путь — пять состояний: Черновик → Оформлен → Оплачен → Отгружен → Доставлен. Из любого состояния возможен переход «Отмена» → Отменён.

Хотите сменить профессию или повысить квалификацию?

Федеральный проект «Активные меры содействия занятости» даёт возможность пройти обучение бесплатно за счёт государства

  • Программы от ведущих вузов России — от 2 месяцев
  • Удостоверение или диплом установленного образца
  • Центр карьеры: 7 500+ вакансий, помощь с трудоустройством
Оставить заявку
image

Ключевой момент: переход Оформлен → Оплачен срабатывает только при [Оплата подтверждена]. На переходе указано действие «Отправить уведомление покупателю». Те же данные можно представить таблицей переходов — матрицей «событие × состояние → целевое состояние». Заинтересованные стороны без UML-опыта воспринимают такую таблицу легче; но иерархию составных состояний она не передаёт.

Диаграмма состояний заказа UML с охранным условием оплаты и ветвью отмены

Инструменты для создания диаграмм состояний UML онлайн

PlantUML — текстовый предметно-ориентированный язык описания (DSL). Синтаксис: [*] —> Красный. Диаграммы хранятся как текст — удобно для систем контроля версий. Интегрируется с VS Code, GitLab, Confluence. Бесплатный.

draw.io (diagrams.net) — визуальный редактор с перетаскиванием элементов. Полная поддержка UML 2.x, готовые фигуры для состояний и переходов. Интеграция с Google Drive и GitHub. Бесплатный.

Mermaid — блок stateDiagram-v2 прямо в Markdown. Нативная поддержка GitHub, GitLab и Notion обеспечивает графическое представление диаграмм прямо внутри документации. Бесплатный.

Разработчикам подходят PlantUML и Mermaid — диаграмма лежит рядом с кодом. Аналитикам и менеджерам — draw.io: визуальный редактор не требует знания синтаксиса.

Параметр
PlantUML
draw.io
Mermaid
Синтаксис Текстовый DSL Визуальный Markdown-блок
Интеграция VS Code, GitLab, Confluence Google Drive, GitHub GitHub, GitLab, Notion
Аудитория Разработчики Аналитики, менеджеры Разработчики
Стоимость Бесплатный Бесплатный Бесплатный

Типичные ошибки и лучшие практики

Три распространённые ошибки при построении диаграмм состояний.

Взрыв состояний — слишком много простых состояний при отсутствии иерархии. Решение: объединить связанные состояния в составные. Одна внешняя граница вместо десяти прямоугольников сокращает количество переходов кратно.

Неполная модель — пропущенные состояния или переходы. Обнаружение ошибок в логике поведения — одна из главных ценностей диаграммы. Если объект может оказаться в неучтённой ситуации, модель неполна.

Нарушение нотации — переход без триггера и без охранного условия. Такой переход в UML означает автоматическое срабатывание; если это не замысел — ошибка проектирования, которую лучше выявить на диаграмме, чем в коде.

Лучшие практики: давать состояниям осмысленные имена; верифицировать диаграмму с командой до написания кода; для сложных систем сначала строить диаграмму активности, затем детализировать через диаграммы состояний отдельных объектов.

Сравнение взрыва состояний UML и упрощённой диаграммы с составными состояниями

Часто задаваемые вопросы

Чем диаграмма состояний отличается от диаграммы активности?

Диаграмма состояний показывает жизненный цикл одного объекта и отвечает на вопрос «в каком состоянии объект». Диаграмма активности описывает поток действий в процессе — «что происходит шаг за шагом». Для объектов с чёткими стадиями (заказ, заявка, соединение) выбирают диаграмму состояний; для бизнес-процессов с ветвлениями — диаграмму активности.

Сколько начальных состояний может быть на одной диаграмме?

Ровно одно начальное псевдосостояние на уровне всего автомата. Если диаграмма содержит составные состояния, внутри каждого из них допустимо собственное начальное псевдосостояние — локальное для данного подавтомата. Правило единственности точки входа в автомат в целом при этом не нарушается.

Что такое псевдосостояние в UML?

Псевдосостояние — технический элемент нотации, не являющийся «настоящим» состоянием объекта. Основные виды: начальное (●), конечное (⊙), история (H / H*), разветвление (fork), соединение (join), выбор (choice). Управляет потоком внутри автомата: задаёт точки входа, выхода и параллелизм.

Что такое охранное условие в диаграмме состояний?

Охранное условие — логическое булевое выражение в квадратных скобках рядом с меткой перехода: [Оплата подтверждена]. Переход срабатывает только если условие истинно. При нескольких переходах из одного состояния охранное условие выбирает нужную ветку; для однозначного поведения условия должны быть взаимоисключающими.

Что такое состояние истории и когда оно нужно?

Состояние истории запоминает последнее активное подсостояние составного автомата. При возврате активируется запомненное подсостояние, а не начальное. H — поверхностная история (прямой потомок); H* — глубокая (любой уровень вложенности). Пример: медиаплеер после паузы возвращается к «Воспроизведение», а не к «Начало трека».

Когда удобнее использовать таблицу переходов вместо диаграммы?

Таблица переходов удобна для линейных процессов без вложенных или параллельных состояний: матрица «событие × состояние → целевое состояние» читается без UML-опыта. Диаграмму состояний выбирают, когда нужно отобразить иерархию составных состояний — таблица её не передаёт.

Зачем указывать действия entry, do и exit внутри состояния?

Действия описывают поведение объекта внутри состояния. Entry выполняется при входе — инициализация ресурсов. Do — непрерывно пока объект активен, например «опрос датчика»; прерывается событием. Exit выполняется при выходе — очистка ресурсов. Порядок фиксирован: entry → do → (событие) → exit → переход.

В каких системах применяется диаграмма состояний UML?

Диаграмма состояний применяется для описания поведения таких компонентов системы, как пользовательские интерфейсы, бизнес-объекты (заказ, заявка, договор), протоколы связи (TCP-соединение), встроенные контроллеры (банкомат, светофор) и игровая логика. В системном анализе используется для верификации требований и составления тестовых сценариев.

Подайте заявку —
забронируйте место в группе

45 000 мест на 2026 год. Бесплатное обучение по федеральному проекту «Активные меры содействия занятости»

  • Онлайн
  • От 2 месяцев
  • Бесплатно
  • Диплом
Учиться бесплатно
icon