Основные теоретические сведения



Диаграмма состояний (state chart diagram) – диаграмма, на которой изображается конечный автомат с простыми состояниями, переходами и, возможно, вложенными композитными состояниями. Концепция диаграммы состояний разработана Дэвидом Хэрелом (David Harel).

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

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

Графически автомат описывается графом, в котором вершинами обозначаются состояния, а дугами – возможные переходы. Простейшим примером является техническое устройство, которое может быть в двух состояниях: исправно/неисправно.

Состояние изображается прямоугольником с закруглёнными углами, у него может быть один или несколько необязательных разделов. Обычно состояния имеют уникальные имена, если имени нет, то состояния называются анонимными. Чтобы не было путаницы, на диаграмме не рекомендуется одно и то же состояние изображать дважды.

Считается, что в определённом состоянии объект может находиться конечное время.

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

Из всей совокупности состояний выделяются два особых: начальное состояние и конечное. Каждое состояние должно быть достижимо, т.е. должен существовать ориентированный путь в графе от начального состояния к нему. Автоматы могут вкладываться друг в друга, в связи с этим состояния могут содержать в себе другие состояния. Макросостояния изображаются большим символом, содержащим в себе другие состояния. Дополнительные автоматы называются подавтоматами (submachines). Автомат не помнит ис-

торию своего перемещения из состояния в состояние (без памяти); более детально это можно учесть введением специальных исторических состояний [1].

В каждый момент времени автомат может находиться только в одном из состояний (последовательное поведение). Для моделирования параллельного поведения в одной модели рассматриваются несколько отдельных автоматов.

 
 

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

Условное обозначение состояния приведено ниже.

Имя состояния рекомендуется выражать глаголом в настоящем времени (звонит, печатает) – что делает объект? или причастием (занят, свободен, передано, получено) – результат действия. Все состояния, даже анонимные (без имени), должны быть различными. Дублирование состояний на диаграмме не допускается. Пример диаграммы состояний приведён на рисунке 9. На рисунке цифрами у переходов обозначены переключающие события:

1 – выбор пункта меню (`Заказы`);

2 – выбор пункта меню (`Планируемые поставки`);

3 – выбор пункта меню (`Справочники`);

4 – выбор пункта меню (`Склад`);

5 – выбор пункта меню (`Отчёты/Динамика заказов`);

6 - выбор пункта меню (`Отчёты/Заказы клиентов`);

7 - выбор пункта меню (`Выход`);

8 - выбор пункта меню (`Оплата`).

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

Список внутренних действий или деятельностей отражает те действия, которые выполняются моделируемым объектом в данном состоянии. В UML действия и деятельности различаются.

Действие (action) выполнимое атомарное вычисление, которое приводит

 

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

 

Рисунок 9 - Пример оформления диаграммы состояний системы

 

Запуск действий производится переходами. Различают входное событие перехода (поглощение) – автомат устанавливается в определённое состояние и выходное событие перехода – автомат теряет это состояние. Соответственно различают входное и выходное действия.

Каждое действие описывается отдельной строкой в формате <метка действия ”/” выражение действия>(см. рисунок - состояние "Авторизация пользователя")

Перечень меток в UML ограничен и не может быть использован в качестве имён событий:

1) entry – указывает, что действие выполняется в момент входа в данное состояние (входное действие);

2) exit - указывает, что действие выполняется в момент выхода в данное состояние (выходное действие);

3) do – специфицирует выполняемую деятельность («do activity»);

4) include - указывает, что действие – это обращение к автомату с указанным именем.

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

Для обозначения выражения действия в UML нет строго определённой нотации. Предполагается, что для этого будет использоваться какой-либо язык программирования. Можно использовать формальный язык описания ограничений Object Constraint Language (OCL), который фактически является частью языка UML[ 1 ].

Сторожевые условия (guard condition) являются дополнительным условием срабатывания перехода (кроме переключающего события). Оно не обязательно, но если есть, то записывается в квадратных скобках у стрелки перехода как некоторое логическое выражение после спецификации переключающего события.


Дата добавления: 2016-01-05; просмотров: 15; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!