Шаг 190.
Унифицированный язык моделирования UML.
Диаграммы состояний

    На этом шаге рассмотрим базовые понятия диаграммы состояний.

    Диаграммы состояний – это один из пяти видов диаграмм UML, предназначенных для моделирования динамических аспектов поведения систем. Диаграмма состояний показывает конечный автомат. И диаграммы деятельности, и диаграммы состояний подходят для моделирования жизненного цикла объекта. Однако в то время, как диаграмма деятельности демонстрирует поток управления от одной деятельности к другой через множество объектов, диаграмма состояний отображает поток управления от состояния к состоянию внутри отдельного объекта.

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

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

    При моделировании программных систем вы обнаружите, что наиболее естественный способ визуализировать, специфицировать, конструировать и документировать поведение некоторого рода объектов – сосредоточиться на потоке управления, ведущего от состояния к состоянию, а не от одной деятельности к другой. Второе обычно делается с помощью блок-схем (диаграмм деятельности). Представим на минуту модель встроенной домашней системы сигнализации. Система работает непрерывно, реагируя на такие внешние события, как, например, разбивание окна. Вдобавок система дополняется описанием стабильных состояний (например, Idle – Простой, Armed – Готовность, Active – Активность, Checking – Проверка и т.п.), событий, инициирующих переход из одного состояния в другое, а также действий, выполняемых при каждом таком переходе.

    В UML управляемое событиями поведение объекта моделируется с помощью диаграмм состояний. Как показано на рис. 1, диаграмма состояний – это просто представление автомата, подчеркивающее поток управления от одного состояния к другому.


Рис.1. Диаграмма состояний

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    В отличие от диаграмм состояний, диаграммы действий применяются для моделирования потока работ или моделирования операций. Диаграммы деятельности лучше подходят для моделирования потока деятельности во времени, как это представляется на блок-схемах.

    На следующем шаге рассмотрим моделирование реактивных объектов в UML.




Предыдущий шаг Содержание Следующий шаг