Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Проектирование_МПС_лек11

.pdf
Скачиваний:
14
Добавлен:
15.02.2015
Размер:
337.59 Кб
Скачать

1

11 КОНЕЧНЫЕ АВТОМАТЫ (лекция 2)

11.1 События и условия

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

условие представляет значение булевой переменной. На рис. 11.1 показано отношение между событиями и условиями.

Рисунок 11.1 Отношения между событиями и условиями Первоначально условие принимает значение «Торможения нет». Когда

происходит событие «Нажат тормоз», означающее, что водитель поставил ногу на педаль тормоза, условие изменяется на «Торможение есть». При возникновении события «Тормоз отпущен» условие вновь принимает значение

«Торможения нет». Событие занимает пренебрежительно малое время, а

условие сохраняет значение в течение конечного промежутка времени.

События и условия разрешается применять совместно для определения перехода состояния. Для этого используется нотация «событие [условие]»,

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

2

Пример применения условий приведен на рис. 11.2. Он относится к ситуации, когда банкомат нужно закрыть на обслуживание.

Рисунок 11.2 – Пример событий и условий Если в момент поступления события «Остановить» банкомат простаивал,

он сразу переходит в состояние «Остановлен». Если он находится в любом другом состоянии, то событие «Остановить» не вызывает немедленной реакции, а устанавливает значение ИСТИНА для условия «Запрошен останов».

Это условие проверяется после завершения начатой клиентом транзакции. Оно используется совместно с событием таймера «after (промежуток времени)».

Когда возникает событие таймера, а банкомат находится в состоянии

«Завершение», проверяется условие «Запрошен останов». Если оно истинно,

банкомат переходит в состояние «Остановлен». В противном случае банкомат возвращается в состояние «Простаивает» и готов к выполнению следующей транзакции.

11.2Действия

Спереходом состояний может быть ассоциировано действие. Действие

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

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

концептуально его продолжительность равна нулю.

3

На диаграмме состояний действие изображается путем пометки перехода в виде «событие [условие] / действие». Например, когда банкомат переходит из состояния «Ожидание ПИН-кода» в состояние «Проверка ПИН-кода» в

результате события «ПИН-код введен», выполняется действие «Проверить ПИН-код» (рис. 11.3).

Рисунок 11.3 – Пример действий

11.3 Деятельности

Кроме действий в результате перехода состояния могут выполняться деятельности. Деятельность (activities) – это некоторое вычисление,

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

Один из способов показать деятельность на диаграмме состояний – пометить переход в состояние, где она протекает: событие / enable

деятельность, а также переход из этого состояния: событие / disable

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

4

виде do / деятельность (do – зарезервированное слово). Это значит, что деятельность начинается при входе в состояние и завершается при выходе из него.

В качестве примера деятельности рассмотрим переход из состояния

«Начало» в состояние «Разгон» на диаграмме состояний объекта «Круиз-

контроль», показанной на рис. 11.4

Разгон

Рисунок 11.4 – Детальная диаграмма состояний системы круиз-контроля с действиями и условиями

Деятельность «Увеличить скорость» начинается при входе в состояние

«Разгон». Она выполняется, пока диаграмма находится в этом состоянии, и

завершается при выходе из него.

Событие «Круиз» вызывает переход из состояния «Разгон» в состояние

«Крейсерский режим». Сначала прекращается деятельность «Увеличить скорость», затем начинается деятельность «Поддерживать скорость», которая продолжается все время, пока диаграмма находится в состоянии «Крейсерский режим». Кроме того, выполняется действие «Установить значение требуемой

5

скорости». Семантика этого перехода состояний описывается в виде

последовательности:

1.Деятельность «Увеличить скорость» прекращается при выходе из состояния «Разгон».

2.Действие «Установить значение требуемой скорости» выполняется при переходе из состояния «Разгон» в состояние «Крейсерский режим».

3.Деятельность «Поддерживать скорость» начинается при входе в состояние «Крейсерский режим».

11.4 Иерархические диаграммы состояний

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

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

При иерархической декомпозиции состояний надсостояние раскладывается на одно или несколько взаимосвязанных подсостояний. Иногда такую операцию называют декомпозицией ИЛИ, т.к. пребывание в некотором надсостоянии означает, что диаграмма находится в одном и только одном из его подсостояний. Нотация позволяет показать надсостояние и подсостояния на одной или нескольких диаграммах в зависимости от уровня сложности. Пример иерархической декомпозиции состояний приведен на рис. 11.5.

6

Рисунок 11.5 – Пример иерархической диаграммы состояний

7

На рис. 11.5 надсостояние «Обработка ввода клиента» состоит из подсостояний «Ожидание ПИН-кода», «Проверка ПИН-кода» и «Ожидание выбора клиента». В иерархической диаграмме надсостояние изображается в виде внешнего прямоугольника с закругленными углами, в левом верхнем углу которого записывается имя надсостояния. Подсостояния изображаются внутренними прямоугольниками с закругленными краями. Когда система оказывается в надсостоянии «Обработка ввода клиента», она находится в одном и только одном из подсостояний «Ожидание ПИН-кода», «Проверка ПИН-

кода» или «Ожидание выбора клиента». Отсюда и термин «декомпозиция ИЛИ».

Каждый переход в надсостояние «Обработка ввода клиента» - это переход в одно и только одно подсостояние диаграммы нижнего уровня. Любой выход из надсостояния – это выход из какого-то его подсостояния. Так, входное событие «Карточка вставлена» вызывает переход в подсостояние «Ожидание ПИН-кода», внутреннего для надсостояния «Обработка ввода клиента».

11.5 Параллельные диаграммы состояний

Изучить Х. Гома «UML. Проектирование систем реального времени,

параллельных и распределенных приложений», стр. 203–205.