Разработка MDA-приложения с использованием машин состояний
Цель работы– научиться использовать машины состояний при создании MDA-приложений.
Введение
Автоматы
Работа объектов программы описывается с помощью автоматов (или машин состояний). Существует хорошо развитая теория автоматов, в которой изучаются вопросы их построения и анализа работы.
Автомат — это элемент системы, который характеризуется двумя базовыми понятиями: состояние и переход.
Каждый автомат в определенный момент времени может находиться в одном из допустимых состояний. Число этих состояний, возможно, бесконечно. Задан также набор правил, по которому допускается переход из одних множеств состояний в другие.
Схожесть автоматной модели с программированием в том, что переменные (ячейки памяти) в каждый момент работы процессора всегда хранят конкретные значения из допустимых диапазонов значений. Эти значения фактически являются состояниями переменных.
Разрешенные над значениями переменных вычислительные операции приводят к переходу этих переменных в новые состояния (в новые значения). Этот алгоритмический принцип может быть распространен на большое число управленческих задач. В общем случае автоматный подход позволяет описать любую, сколь угодно сложную последовательность операций.
Познакомимся с базовыми правилами работы автоматов в языке UML.
– Автомат в определенный момент времени может находиться только в одном состоянии. Это правило соответствует принципу императивного программирования, согласно которому любая переменная в каждый момент времени (такт процессора, шаг работы программы) хранит только одно из множества допустимых значений.
– Число состояний автомата конечно.
– Из текущего состояния автомат может перейти только в одно следующее состояние. Не исключено, что это состояние выбирается из нескольких доступных вариантов.
– В рамках диаграммы у каждого состояния должен быть предшественник (за исключением начального состояния). Это правило запрещает размещение на диаграмме состояний, никак не связанных друг с другом.
– В определенном состоянии автомат может находиться сколь угодно долго. Переходы между состояниями считаются мгновенными.
– На диаграмме состояний не регистрируется путь (история состояний), приведший автомат в текущее состояние (в отличие от диаграмм последовательности и кооперации). Это правило показывает, что по текущему значению переменной нельзя определить те значения (состояния), в которых она находилась ранее.
Состояния
Конкретное состояние (в общем случае – статический срез системы) формируется инструментом State (Состояние). На диаграмме оно изображается в виде прямоугольника с закругленными углами. Состояние имеет имя, начинающееся с заглавной буквы. Под ним могут записываться условие и действия. Условия проверяются, а действия выполняются, когда автомат находится в соответствующем состоянии.
Отметим принятые правила оформления элементов диаграммы состояний. Элемент State представляет не действие, а описание статического состояния, в котором автомат может находиться неограниченно долго. Автомат может переходить из текущего состояния в другие состояния при выполнении определенных действий пользователя или условий, которые должны быть выполнены. Действия и условия отображаются только на линиях переходов между состояниями.
Подавтоматы
Внутри каждого состояния разрешается формировать собственный автомат (подавтомат) – мини-диаграмму состояний. Благодаря этому возможно проектировать систему постепенно, раскрывая отдельные ее элементы по мере необходимости.
Подавтомат – это автомат, вложенный в другой автомат и описывающий поведение конкретного состояния.
Дата добавления: 2021-12-14; просмотров: 282;