Декомпозицию управляющего процесса можно выполнить в виде диаграммы переходов состояний (STD), таблицы переходов состояний, матрицы переходов состояний.
С их помощью моделируют последующее функционирование системы на основе ее предыдущего и текущего функционирования. Моделируемая система в любой заданный момент времени находится точно в одном из конечного множества состояний. С течением времени она может изменить свое состояние, при этом переходы между состояниями должны быть точно определены.
Диаграммы, таблицы и матрицы переходов состояний состоят из следующих объектов.
Состояние может рассматриваться как условие устойчивости для системы. Имя состояния должно отражать реальную ситуацию, в которой находится система, например, "Ожидание действия пользователя", "Ожидание какой-либо команды", "Обработка какого-либо запроса", "Отработка какой-либо операции", "Идентификация действия пользователя по редактированию изображения".
Надо как можно более точно конкретизировать состояние системы, если это влияет на дальнейшую ее работу.
Состояния "Ожидание действия пользователя", "Ожидание действия пользователя, файл сохранен" и "Ожидание действия пользователя, файл не сохранен" в определенной ситуации являются разными, так как реакция системы может быть разной при сохраненном файле и несохраненном, например, при инициации закрытия редактора Paint из группы Стандартные ОС Windows.
Аналогично разными являются, например, состояния: "Ожидание действия пользователя с включенной или выключенной функцией автообновления какого-то списка, результата", "Ожидание действия пользователя с включенной функцией автообновления какого-то списка, результата" и "Ожидание действия пользователя с выключенной функцией автообновления какого-то списка, результата". В зависимости от состояния при обработке действия пользователя будет вызвана на выполнение работа по обновлению списка, или не будет, тогда список останется прежним.
Начальное состояние является стартовой точкой для начального системного перехода. Спецификация управления имеет ровно одно начальное состояние, соответствующее состоянию системы после ее инсталляции, но перед началом реальной обработки, например, "Программа запущена на выполнение", "Инициализация программы", "Начало работы программы", "Начало редактирования изображения", "Начало работы по настройке изображения".
Спецификация управления может иметь любое (конечное) число завершающих состояний, например, "Аварийное завершение работы программы" (в случае ошибки) и "Нормальное завершение работы программы" (в случае выхода из нее).
Переход определяет перемещение моделируемой системы из одного состояния в другое. Переход задается условием и действием.
Фактически условие есть некоторое внешнее или внутреннее событие, которое система способна обнаружить и на которое она должна отреагировать определенным образом, изменяя свое состояние.
Примеры переходов:
- при "Запуске программы" (условие) необходимо сразу "Создать новый файл" (действие), как это происходит при запуске редакторов Блокнот, Paint из группы Стандартные ОС Windows;
- "Инициирован выход из программы", например, "Выбран пункт меню "Выход", (условие) и, если файл не был сохранен ранее, то необходимо "Сохранить файл" (действие), как это происходит при закрытии редакторов Блокнот, Paint;
- выбрана одна из возможных операций (условие) и значит должна быть выполнена функция, обрабатывающая эту операцию (действие);
- пользователем "Выбран пункт меню такой-то" (условие) и должно быть обеспечено выполнение соответствующего действия;
- пользователем "Выбрана закладка такая-то" (условие) и должны быть выполнены соответствующие действия;
- в процессе выполнения каких-либо действий был изменен текст в оперативной памяти (условие) и значит, он должен быть обновлен на экране, т.е. должен быть выполнен процесс "Обновление текста" (действие);
- совпало системное время со временем, указанным в Будильнике (условие), тогда необходимо выдать сообщение пользователю о наступлении события (действие);
- пользователь сфокусировал управление на раскрывающемся списке дисков с помощью мышки (установка курсора) или клавиши Tab (переход по элементам формы) (условие), тогда необходимо обеспечить выбор диска, т.е. сохранение во внутреннем накопителе имени диска и формирование списка папок и файлов выбранного диска (действие);
- пользователь сфокусировал управление на списке папок (файлов) в виде Проводника с помощью мышки (установка курсора) или клавиши Tab (переход по элементам формы) (условие), тогда необходимо обеспечить выбор папки (файла), т.е. сохранение во внутреннем накопителе имени папки (файла) и формирование списка файлов выбранной папки (действие);
- пользователь сфокусировал управление на окне ввода какого-либо значения с помощью мышки (установка курсора) или клавиши Tab (переход по элементам формы) (условие), тогда необходимо обеспечить ввод значения и возможно выполнить соответствующее действие.
Следует отметить, что, вообще говоря, не все события (условия) необходимо вызывают переходы из отдельных состояний. С другой стороны, одно и то же событие не всегда вызывает переход в то же самое состояние.
При изменении состояния система обычно выполняет одно или более действий (производит вывод, выдает сообщение на экран, выполняет вычисления). Таким образом, действие представляет собой отклик, посылаемый во внешнее окружение, или вычисление, результаты которого запоминаются в системе (обычно в накопителе данных на DFD), для того, чтобы обеспечить реакцию на некоторые из планируемых в будущем событий.
На DFD, дополненными управляющими компонентами, условие соответствует управляющему потоку, входящему в управляющий процесс, а действие соответствует управляющему потоку, выходящему из управляющего процесса.
Применяются два способа построения спецификаций управления. Первый способ заключается в идентификации всех возможных состояний и дальнейшем исследовании всех небессмысленных связей (переходов) между ними. По второму способу сначала строится начальное состояние, затем следующие за ним и т.д. Результат (оба способа) — предварительная спецификация, для которой затем осуществляется контроль состоятельности, заключающийся в ответе на следующие вопросы:
- все ли состояния определены и имеют уникальное имя?
- все ли состояния достижимы?
- все ли состояния имеют выход?
- (для каждого состояния) реагирует ли система соответствующим образом на все возможные условия (особенно на ненормальные)?
- все ли входные/выходные потоки управляющего процесса отражены в условиях/действиях?
Для проектирования спецификаций управления таблицы и матрицы переходов состояний используют в ситуациях, когда число состояний и/или переходов велико.
В таблице переходов состояний (например, табл. 11.1, 11.2 и 11.3):
- первая колонка таблицы содержит список всех состояний проектируемой системы;
- во второй колонке для каждого состояния приведены все условия, вызывающие переходы в другие состояния;
- в третьей колонке — совершаемые при этих переходах действия;
- четвертая колонка содержит соответствующие имена состояний, в которые осуществляется переход из рассматриваемого состояния при выполнении определенного условия.
Матрица переходов состояний содержит по вертикали перечень состояний системы, а по горизонтали — список условий. Каждый ее элемент содержит список действий, а также имя состояния, в которое осуществляется переход. Используется и другой вариант данной нотации: по вертикали указываются состояния, из которых осуществляется переход, а по горизонтали — состояния, в которые осуществляется переход. При этом каждый элемент матрицы содержит соответствующие условия и действия, обеспечивающие переход из "вертикального" состояния в "горизонтальное".
Если в названии состояния системы или условия/действия перехода участвует входной/выходной управляющий поток управляющего процесса, или управляющий поток между процессами, или название запускаемого процесса, то имя потока и процесса в тексте названия должно быть заключено в кавычки и написано с заглавной буквы.
Для примера модели ПО "Графический редактор (Paint)" спецификации управляющих процессов в виде таблиц переходов состояний приведены в табл. 11.1, 11.2 и 11.3.
Табл. 11.1 содержит состояния: "Начальное состояние", "Конечное состояние", три варианта состояния "Ожидание "Действия пользователя" с сохраненным или несохраненным файлом.
Переход из "Начального состояния" в состояние "Ожидание "Действия пользователя" осуществляется при условии "Запуск программы". При этом запускается процесс А1.1 "Создать новый файл" (см. рис. 11.1).
При условии что пользователем "Выбран пункт "Замостить Рабочий стол Windows" в меню "Файл" и файл ранее не был сохранен, выполняются действия "Сохранить файл" и "Преобразовать изображение в рисунок Рабочего стола" (последовательное включение процессов А1.1 и А6) и затем переход опять в режим "Ожидание "Действия пользователя", но уже с сохраненным файлом.
Таблица 11.1
Спецификация "Главного управляющего процесса"в модели ПО "Графический редактор (Paint)"
Текущее cостояние |
Условие |
Действие |
Следующее состояние |
Начальное состояние — начало работы программы |
Запуск программы |
"Произвести действие с файлом" — вызов А1.1 "Создать новый файл" |
Ожидание "Действия пользователя", файл сохранен |
Ожидание "Действия пользователя", файл сохранен или не сохранен |
Выбран пункт "Атрибуты" в меню "Рисунок" |
"Произвести настройку изображения" — вызов А3 |
Ожидание "Действия пользователя", файл сохранен или не сохранен |
Ожидание "Действия пользователя", файл сохранен или не сохранен |
Выбран пункт "Печать" в меню "Файл" |
"Распечатать текущий файл" – вызов А5 |
Ожидание "Действия пользователя", файл сохранен или не сохранен |
Ожидание "Действия пользователя", файл сохранен |
Выбран пункт "Замостить Рабочий стол Windows" в меню "Файл" |
"Заменить рисунок Рабочего стола текущим изображением" — вызов А6 |
Ожидание "Действия пользователя", файл сохранен |
Ожидание "Действия пользователя", файл не сохранен |
Выбран пункт "Замостить Рабочий стол Windows" в меню "Файл" |
"Произвести действие с файлом" — вызов А1.2 "Сохранить файл". "Заменить рисунок Рабочего стола текущим изображением" — вызов А6 |
Ожидание "Действия пользователя", файл сохранен |
Ожидание "Действия пользователя", файл сохранен или не сохранен |
Действие пользователя по настройке интерфейса программы |
"Произвести настройку интерфейса программы" — вызов А4 |
Ожидание "Действия пользователя", файл сохранен или не сохранен |
Ожидание "Действия пользователя", файл сохранен или не сохранен |
Действие пользователя по работе с файлом |
"Произвести действие с файлом" — вызов А1 |
Ожидание "Действия пользователя", файл сохранен или не сохранен |
Ожидание "Действия пользователя", файл сохранен или не сохранен |
Выбран один из инструментов для редактирования изображения. Нажатие левой кнопки мышки. Перемещение указателя мышки |
Обеспечить редактирование изображения — вызов А2 |
Ожидание "Действия пользователя", файл не сохранен |
Ожидание "Действия пользователя", файл не сохранен |
Инициирован выход из программы |
"Произвести действие с файлом" — вызов А1.2 "Сохранить файл" |
Конечное состояние -завершение работы программы |
Ожидание "Действия пользователя", файл сохранен |
Инициирован выход из программы |
___ |
Конечное состояние -завершение работы программы |
Если же пользователем "Выбран пункт "Замостить Рабочий стол Windows" в меню "Файл" и файл был ранее сохранен, выполняется только действие "Преобразовать изображение в рисунок Рабочего стола" (включение процесса А6) и затем переход опять в режим "Ожидание "Действия пользователя".
При условии выбора одного из инструментов для редактирования изображения, или нажатии левой кнопки мышки и/или перетаскивании указателя мышки действие пользователя передается управляющему процессу нижнего уровня (табл. 11.2), а затем система возвращается в то же самое состояние "Ожидание "Действия пользователя" всегда с несохраненным файлом, так как в результате редактирования он был изменен.
Таблица 11.2
Спецификация управляющего процесса "Управление редактированием изображения" в модели ПО "Графический редактор (Paint)"
Текущее состояние |
Условие |
Действие |
Следующее состояние |
Начальное состояние — начало редактирования изображения |
Активизируется каждый раз, когда необходимо обеспечить редактирование изображения |
___ |
Идентификация "Действия пользователя по редактированию изображения" |
Идентификация "Действия пользователя по редактированию изображения" |
"Выбран один из примитивов" |
Инициализация выбранного примитива |
Конечное состояние — завершение работы по редактированию изображения |
Идентификация "Действия пользователя по редактированию изображения" |
"Выбран инструмент Масштаб" |
Инициализация инструмента Масштаб |
Конечное состояние — завершение работы по редактированию изображения |
Идентификация "Действия пользователя по редактированию изображения" |
"Выбран инструмент Заливка" |
Инициализация инструмента Заливка |
Конечное состояние — завершение работы по редактированию изображения |
Идентификация "Действия пользователя по редактированию изображения" |
"Выбран инструмент Выделение" |
Инициализация инструмента Выделение |
Конечное состояние — завершение работы по редактированию изображения |
Идентификация "Действия пользователя по редактированию изображения" |
"Нажатие левой кнопки мышки" и/или "Перетаскивание указателя мышки" с выбранным одним из примитивов |
"Обеспечить построение примитива" — вызов А2.4. Вызов А2.5 "Перерисовка изображения" |
Конечное состояние — завершение работы по редактированию изображения |
Идентификация "Действия пользователя по редактированию изображения" |
"Нажатие левой кнопки мышки" и "Перемещение указателя мышки" с выбранным инструментом Масштаб |
"Изменить масштаб изображения" — вызов А2.1. Вызов А2.5 "Перерисовка изображения" |
Конечное состояние — завершение работы по редактированию изображения |
Идентификация "Действия пользователя по редактированию изображения" |
"Нажатие левой кнопки мышки" с выбранным инструментом Заливка |
"Произвести закраску области" — вызов А2.2. Вызов А2.5 "Пере-рисовка изображения" |
Конечное состояние — завершение работы по редактированию изображения |
Идентификация "Действия пользователя по редактированию изображения" |
"Нажатие левой кнопки мышки" и "Перетаскивание указателя мышки" с выбранным инструментом Выделение |
"Обеспечить работу с частью изображения" — вызов А2.3. Вызов А2.5 "Перерисовка изображения" |
Конечное состояние — завершение работы по редактированию изображения |
При условии "Выбора пункта "Атрибуты" в меню "Рисунок" для настройки изображения в диалоговом окне вызывается "Подсистема настройки изображения" А3 управляющим потоком "Произвести настройку изображения" (табл. 11.3).
Остальное аналогично.
Таблица 11.3
Спецификация управляющего процесса "Управление настройкой изображения"
в модели ПО "Графический редактор (Paint)"
Текущее состояние |
Условие |
Действие |
Следующее состояние |
Начальное состояние — начало работы по настройке изображения |
Активизируется каждый раз, когда необходимо "Произвести настройку изображения" |
Инициализация режима настройки изображения |
Ожидание "Действия пользователя по настройке изображения" |
Ожидание "Действия пользователя по настройке изображения" |
"Введен размер изображения" |
"Установить размер изображения" — вызов А3.1 |
Ожидание "Действия пользователя по настройке изображения" |
Ожидание "Действия пользователя по настройке изображения" |
"Выбраны единицы измерения" (дюймы, сантиметры, точки) |
"Установить единицы измерения" — вызов А3.2 |
Ожидание "Действия пользователя по настройке изображения" |
Ожидание "Действия пользователя по настройке изображения" |
"Выбран вид палитры" (черно-белая, цветная) |
"Установить палитру" — вызов А3.3 |
Ожидание "Действия пользователя по настройке изображения" |
Ожидание "Действия пользователя по настройке изображения" |
Инициирован выход из режима настройки изображения с принятием заданных настроек |
Сохранить заданные настройки |
Конечное состояние — завершение работы по настройке изображения |
Ожидание "Действия пользователя по настройке изображения" |
Инициирован выход из режима настройки изображения без принятия заданных настроек |
___ |
Конечное состояние — завершение работы по настройке изображения |
Табл. 11.2 содержит три состояния: "Начальное состояние", "Конечное состояние" и "Идентификация "Действия пользователя по редактированию изображения".
Переход из "Начального состояния" в состояние "Идентификация "Действия пользователя по редактированию изображения" осуществляется, когда необходимо обеспечить редактирование изображения. При этом переходе никаких действий не выполняется.
Переход из состояния "Идентификация "Действия пользователя по редактированию изображения" в "Конечное состояние" осуществляется восемью различными способами, в зависимости от того, какое действие пользователя было передано управляющему процессу "Управление редактированием изображения" (см. рис. 11.2).
Таким образом "Главный управляющий процесс" на диаграмме 1-го уровня получает сигнал от пользователя и передает его для отработки, т.е. для обеспечения редактирования изображения, управляющему процессу на диаграмме 2-го уровня.
Табл. 11.3 содержит три состояния: "Начальное состояние", "Конечное состояние" и "Ожидание "Действия пользователя по настройке изображения".
Переход из "Начального состояния" в состояние "Ожидание "Действия пользователя по настройке изображения" осуществляется, когда необходимо произвести настройку изображения. При этом переходе инициализируется режим настройки изображения, т.е. выводится диалоговое окно настройки атрибутов, в диалоговых полях устанавливаются текущие значения из внутреннего накопителя. И далее система ожидает от пользователя ввода новых значений атрибутов. После ввода значений система опять возвращается в состояние "Ожидания "Действия пользователя по настройке изображения". И так до тех пор, пока пользователь не инициирует выход из режима настройки изображения.
Переход из состояния "Ожидания "Действия пользователя по настройке изображения" в "Конечное состояние" осуществляется двумя различными способами: с принятием заданных настроек (тогда выполняется процесс по сохранению настроек) и без принятия заданных настроек. В обоих способах диалоговое окно закрывается.
Таким образом, "Главный управляющий процесс" на диаграмме 1-го уровня получает сигнал от пользователя и вызывает управляющий процесс на диаграмме 2-го уровня для обеспечения настройки изображения. Управляющий процесс "Управление настройкой изображения", в свою очередь, ожидает действий со стороны пользователя для ввода значений атрибутов.