Определение. Диаграммы состояний (state diagram) показывают автомат (state machine), включающий в себя состояния, переходы, события и деятельности. Диаграммы состояний описывают динамическое представление объекта. Они особенно важны для моделирования поведения интерфейсов, классов или коопераций и подчеркивают событийно-зависимое поведение объекта.

Базовые понятия. Диаграмма состояний (state diagram) показывает автомат, сосредоточивая внимание на потоке управления от одного состояния к другому. Изображается в виде графа с вершинами и дугами (ребрами).

Автомат (state machine) – это описание последовательности состояний, через которые проходит объект на протяжении жизненного цикла, реагируя на события, а также описание реакции на эти события.

Состояние (state) – ситуация в жизненном цикле объекта, на протяжении которой он удовлетворяет некоторому условию, выполняет некоторую деятельность или ожидает некоторого события.

Событие (event) – спецификация существенного факта, который происходит во времени и пространстве. В контексте автомата событие – это воздействие, которое вызывает переход между состояниями.

Переход (transition) – связь между двумя состояниями, показывающая, что объект, находящийся в первом состоянии, должен выполнить некоторые действия и перейти во второе, как только произойдет определенное событие и будут выполнены определенные условия.

Деятельность (activity) специфицирует работу, происходящую внутри автомата.

Действие (action) – примитивное выполняемое вычисление, приводящее к смене состояния модели или возврату значения.

Содержимое. Диаграммы состояния обычно содержат простые и составные состояния, а также переходы, события и действия. Кроме того, как и все диаграммы, могут включать примечания и ограничения.

Диаграммы состояний применяются для моделирования динамических аспектов поведения системы. Имеется в виду обусловленное порядком возникновения событий поведение объектов любого рода в любом представлении системной архитектуры, включая классы (в том числе активные), интерфейсы, компоненты и узлы.

Диаграммы состояний можно использовать для моделирования некоторого динамического аспекта системы, притом в контексте почти любого элемента модели. Однако чаще их применяют в контексте всей системы, подсистемы либо класса. Также диаграммы состояний можно присоединять к вариантам использования (для моделирования сценариев). При моделировании динамических аспектов системы, класса или варианта использования диаграммы состояний обычно применяются для моделирования реактивных объектов.

Реактивный (reactive), или управляемый событиями, объект – такой, поведение которого лучше всего характеризуется его реакцией на события, принимаемые им извне его контекста. Обычно реактивный объект простаивает в ожидании события. Когда он получает это событие, его реакция обычно зависит от предыдущих событий. Отреагировав определенным образом, объект опять возвращается в состояние простоя, ожидая следующего события. Рассматривая объект подобного рода, вы сосредоточиваете внимание на его стабильных состояниях, событиях, инициирующих переходы от одного состояния к другому, а также действиях, которые выполняются при каждой смене состояния.

В качестве примера на следующем рисунке показана диаграмма состояний, предназначенная для разбора некоего простого контекстно-свободного языка – вроде того, что можно встретить в системах, обрабатывающих входные и выходные потоки сообщений XML.