- •Введение
- •Предмет теории процессов
- •Верификация процессов
- •Спецификация процессов
- •Понятие процесса
- •Представление поведения динамических систем в виде процессов
- •Неформальное понятие процесса и примеры процессов
- •Неформальное понятие процесса
- •Пример процесса
- •Другой пример процесса
- •Действия
- •Определение понятия процесса
- •Понятие трассы
- •Достижимые и недостижимые состояния
- •Замена состояний
- •Операции на процессах
- •Префиксное действие
- •Пустой процесс
- •Альтернативная композиция
- •Параллельная композиция
- •Ограничение
- •Переименование
- •Свойства операций на процессах
- •Эквивалентность процессов
- •Понятие эквивалентности процессов и связанные с ним задачи
- •Трассовая эквивалентность процессов
- •Сильная эквивалентность
- •Критерии сильной эквивалентности
- •Логический критерий сильной эквивалентности
- •Критерий сильной эквивалентности, основанный на понятии бимоделирования
- •Алгебраические свойства сильной эквивалентности
- •Распознавание сильной эквивалентности
- •Полиномиальный алгоритм распознавания сильной эквивалентности
- •Минимизация процессов
- •Минимальные процессы относительно
- •Алгоритм минимизации процессов
- •Наблюдаемая эквивалентность
- •Определение наблюдаемой эквивалентности
- •Логический критерий наблюдаемой эквивалентности
- •Критерий наблюдаемой эквивалентности, основанный на понятии наблюдаемого БМ
- •Алгебраические свойства наблюдаемой эквивалентности
- •Другие критерии эквивалентности процессов
- •Наблюдаемая конгруэнция
- •Мотивировка понятия наблюдаемой конгруэнции
- •Определение понятия наблюдаемой конгруэнции
- •Логический критерий наблюдаемой конгруэнтности
- •Критерий наблюдаемой конгруэнтности, основанный на понятии НБМ
- •Алгебраические свойства наблюдаемой конгруэнции
- •Распознавание наблюдаемой конгруэнтности
- •Минимизация процессов относительно наблюдаемой конгруэнции
- •Рекурсивные определения процессов
- •Процессные выражения
- •Понятие рекурсивного определения процессов
- •Вложение процессов
- •Предел последовательности вложенных процессов
- •Процессы, определяемые процессными выражениями
- •Эквивалентность РО
- •Доказательство эквивалентности процессов при помощи РО
- •Проблемы, связанные с понятием РО
- •Примеры доказательства свойств процессов
- •Потоковые графы
- •Мастерская
- •Неконфликтное использование ресурса
- •Планировщик
- •Семафор
- •Процессы с передачей сообщений
- •Действия с передачей сообщений
- •Вспомогательные понятия
- •Типы, переменные, значения и константы
- •Функциональные символы
- •Выражения
- •Понятие процесса с передачей сообщений
- •Множество переменных процесса
- •Начальное условие
- •Операторы
- •Определение процесса
- •Функционирование процесса
- •Пример процесса с передачей сообщений
- •Понятие буфера
- •Представление поведения буфера в виде процесса
- •Операции на процессах с передачей сообщений
- •Префиксное действие
- •Альтернативная композиция
- •Параллельная композиция
- •Ограничение
- •Переименование
- •Эквивалентность процессов
- •Понятие конкретизации процесса
- •Понятие эквивалентности процессов
- •Процессы с составными операторами
- •Мотивировка понятия процесса с составными операторами
- •Понятие составного оператора
- •Понятие процесса с СО
- •Функционирование процесса с СО
- •Операции на процессах с СО
- •Преобразование процессов с передачей сообщений в процессы с СО
- •Конкатенация СО
- •Редукция процессов с СО
- •Пример редукции
- •Понятие конкретизации процесса с СО
- •Отношения эквивалентности на процессах с СО
- •Метод доказательства наблюдаемой эквивалентности процессов с СО
- •Пример доказательства наблюдаемой эквивалентности процессов с СО
- •Дополнительные замечания
- •Другой пример доказательства наблюдаемой эквивалентности процессов с СО
- •Рекурсивные определения процессов
- •Примеры процессов с передачей сообщений
- •Разделение множеств
- •Задача разделения множеств
- •Распределённый алгоритм решения задачи разделения множеств
- •Процессы Small и Large
- •Анализ алгоритма разделения множеств
- •Вычисление квадрата
- •Сети Петри
- •Протоколы передачи данных в компьютерных сетях
- •Понятие протокола
- •Методы исправления искажений в кадрах
- •Методы обнаружения искажений в кадрах
- •Пример протокола
- •Протокол с чередующимися битами
- •Двунаправленная передача
- •Дуплексный протокол с чередующимися битами
- •Двунаправленная конвейерная передача
- •Протокол скользящего окна с возвратом
- •Протокол скользящего окна с выборочным повтором
- •Криптографические протоколы
- •Понятие криптографического протокола
- •Шифрование сообщений
- •Формальное описание КП
- •Примеры КП
- •Представление структур данных в виде процессов
- •Понятие структуры данных
- •Семантика языка параллельного программирования
- •Описание языка параллельного программирования
- •Конструкции языка L
- •Программы на языке L
- •Семантика языка L
- •Семантика выражений
- •Семантика деклараций
- •Семантика операторов
- •Исторический обзор и современное состояние дел
- •Робин Милнер
- •Исчисление взаимодействующих систем (CCS)
- •Теория взаимодействующих последовательных процессов (CSP)
- •Алгебра взаимодействующих процессов (ACP)
- •Процессные алгебры
- •Мобильные процессы
- •Гибридные системы
- •Другие математические теории и программные средства, связанные с моделированием процессов
- •Бизнес-процессы
Глава 6
Примеры доказательства свойств процессов
6.1Потоковые графы
Если процесс P можно представить в виде алгебраического выражения
P (P1, . . . , Pn) |
(6.1) |
в которое входят процессы P1, . . . , Pn, соединённые символами операций
•параллельной композиции,
•ограничения, и
•переименования
то P называется структурной композицией процессов P1, . . .,
Pn.
Если процесс P является структурной композицией, то ему можно сопоставить некоторый графический объект
G(P )
называемый потоковым графом (ПГ) процесса P . Представление структурной композиции в виде ПГ повышает
наглядность и облегчает понимание взаимосвязи между её компонентами.
141
Для построения ПГ G(P ) для процесса P вида (6.1) строятся ПГ, соответствующие всем подвыражениям выражения (6.1).
Элементарные ПГ:
Для каждого i = 1, . . . , n, и каждого вхождения Pi в выражение (6.1), ПГ G(Pi), соответствующий этому вхождению, имеет вид овала, внутри которого написано знакосочетание
Pi.
На периметре овала рисуется несколько кружочков, называемых портами.
Каждый порт соответствует некоторому действию из множества Act(Pi), причём
•если это действие имеет вид α!, то соответствующий этому действию порт рисуется чёрным цветом, и
•если это действие имеет вид α?, то соответствующий этому действию порт рисуется белым цветом.
Около каждого порта написана его метка, равная тому действию из Act(Pi), которому соответствует этот порт.
Отметим, что если Pi имеет несколько вхождений в выражение (6.1), то для каждого такого вхождения рисуется отдельный элементарный ПГ G(Pi).
Параллельная композиция:
Если выражение (6.1) содержит подвыражение вида P 0 | P 00, то G(P 0 | P 00) получается
•дизъюнктным объединением G(P 0) и G(P 00), и
•соединением стрелочками в этом дизъюнктном объединении портов ПГ G(P 0) и G(P 00) с комплементар-
ными метками: если
–один из этих ПГ содержит порт с меткой α!, и
–другой из этих ПГ содержит порт с меткой α?,
то рисуется стрелочка с меткой α от первого порта к второму.
142
Ограничение:
G(P 0\L) получается из G(P 0) удалением меток портов, имена которых принадлежат L.
Переименование:
G(P 0[f]) получается из G(P 0) соответствующим переименованием меток портов.
В излагаемых ниже примерах процессов приводятся ПГ, соответствующие этим процессам.
6.2Мастерская
Рассмотрим модель мастерской, в которой работают двое рабочих, пользующиеся для работы одним молотком.
Поведение каждого рабочего в мастерской описывается процессом Jobber
Jobber
6
out!
F inish
in? - Start
get_and_work!
put! ?Using
•Действия in? и out! используются для взаимодействия рабочего с заказчиком, и обозначают соответственно
–прием материала, и
–выдачу готового изделия.
•Действия get_and_work! и put! используются для взаимодействия рабочего с молотком, и обозначают соответственно
143
–взятие молотка и выполнение с его помощью некоторых действий, и
–возвращение молотка на место.
Обратим внимание, что действие get_and_work! состоит из нескольких действий, которые мы не детализируем и агрегируем все их в одно действие.
Согласно графовому представлению процесса Jobber, рабочий
•сначала принимает материал,
•затем берет молоток и работает,
•после чего кладет молоток,
•выдает готовое изделие,
•и все повторяется сначала.
Поведение молотка мы представляем при помощи следующего процесса Mallet:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
get_and_work? |
|
|
|
|
|
|
- |
|
|
|||
Mallet |
|
|
Busy |
|
|||
|
|
put? |
|
|
|
Отметим, что объект “молоток” и процесс “молоток” - это разные понятия.
Функционирование мастерской определяется при помощи следующего процесса Job_Shop:
Job_Shop = (Jobber | Jobber | Mallet) \ L
где L = {get_and_work, put}.
144
Потоковый граф процесса Job_Shop имеет следующий вид.
get_and_work get_and_work
'e u |
|
|
|
'@u e $ |
||||
$ 'e |
$ |
|||||||
in |
@ |
|
@ in |
|||||
|
|
|
|
R@ |
|
|
|
|
|
Jobber |
|
|
|
Mallet |
|
|
|
Jobber |
|
|
||
|
& |
|
% |
|
&e |
|
|
% |
|
& |
|
% |
|
|
|
|
|
|
|
||||||||
@ |
|
|
|
|
I@ |
|
|
|
|
||||
|
outu u@ |
|
|
|
@ |
|
|
|
u outu |
||||
|
|
|
put |
|
|
|
|
|
put |
Введем теперь понятие “абстрактного рабочего”, про которого известно, что он циклически
•принимает материал, и
•выдает готовые изделия
но ничего неизвестно о подробностях процесса его работы. Поведение “абстрактного рабочего” мы зададим при помощи
следующего процесса Abs_Jobber:
|
|
|
|
||
|
|
in? |
- |
|
|
|
|
|
|
|
|
Abs |
Jobber |
|
|
|
|
_ |
|
|
|
Doing |
|
|
|
out! |
|
|
Поведение “абстрактной мастерской” мы зададим при помощи следующего процесса Abs_Job_Shop:
Abs_Job_Shop = Abs_Jobber | Abs_Jobber
“Абстрактную мастерскую” мы будем использовать как спецификацию мастерской. Процесс “абстрактная мастерская” представляет поведение мастерской без учета деталей ее реализации.
145
Докажем соответствие мастерской ее спецификации, то есть наличие наблюдаемой конгруэнции
+ |
(6.2) |
Job_Shop ≈ Abs_Job_Shop |
Процесс Abs_Job_Shop является параллельной композицией двух процессов Abs_Jobber. В целях предотвращения коллизии в обозначениях, мы выберем различные идентификаторы для обозначения состояний этих процессов. Пусть, например, эти процессы имеют вид in?
Ai out! - Di
где i = 1, 2.
Параллельная композиция этих процессов имеет вид
in? -A1, A2 out! A1, D2
66
in? out! |
in? out! |
? in? ?D1, A2 out! - D1, D2
Применяя к данному процессу процедуру минимизации относительно наблюдаемой эквивалентности, мы получим процесс
|
|
|
|
|
||||
|
|
in? |
- |
|
|
in? |
- |
|
|
|
|||||||
|
|
|
out! |
(6.3) |
||||
out! |
Процесс Job_Shop имеет 4 · 4 · 2 = 32 состояния, и мы не приводим его здесь ввиду его большой громоздкости. Если минимизировать этот процесс относительно наблюдаемой эквивалентности, то получится процесс, изоморфный процессу (6.3).
146