УДК 519.717
В. Н. Дубинин, В. В. Вяткин
РЕФАКТОРИНГ ДИАГРАММ УПРАВЛЕНИЯ ВЫПОЛНЕНИЕМ СТАНДАРТА IEC 61499
В работе рассматривается рефакторинг диаграмм управления выполнением (диаграмм ЕСС) в рамках графо-трансформационного подхода к проектированию распределенных компонентно-базированных систем управления промышленными процессами на основе нового международного стандарта IEC 61499. Основной целью рефакторинга является избавление диаграммы ЕСС от условных дуг без событий и потенциально-тупиковых (по условиям) состояний. Приводятся правила преобразования графов для совершения рефакторинга диаграмм ЕСС. Прототип системы рефакторинга реализован в системе трансформации графов AGG.
Введение
Международный стандарт IEC 61499 определяет архитектуру и языковые средства для построения распределенных компонентно-базированных систем управления промышленными процессами нового поколения [1]. Основой построения систем управления в соответствии с этим стандартом являются функциональные блоки (ФБ). Разработка систем на основе ФБ имеет много общего с разработкой обычного программного обеспечения (ПО) и многие идеи и концепции могут быть заимствованы оттуда.
Одной из передовых современных технологий разработки ПО является технология, основанная на потоке моделей (Model Driven Engineering - MDE), использующая модели и их трансформации как первичные артефакты. Трансформация моделей является «душой и сердцем» этой технологии [2]. Перспективным подходом к трансформации моделей является подход, основанный на трансформации графов [3], который бурно развивается и уже нашел применение в MDE [4]. Существуют хорошие предпосылки для использования MDE и графовых преобразований в проектировании распределенных компонентно-базированных систем управления промышленными процессами на основе нового международного стандарта IEC 61499, поскольку модели ФБ могут быть естественно представлены в виде графов [5]. Это относится как к составным ФБ, приложениям и субприложениям, так и к базисным ФБ, основой которых является диаграмма ЕСС.
Важным направлением в области трансформации моделей является рефакторинг моделей. В широком смысле под рефакторингом ПО понимается изменение его внутренней структуры без изменения внешнего поведения с целью повышения качества ПО [6]. Рефакторинг определяется на различных уровнях представления ПО - от представления в виде кода и до представления в виде моделей. Рефакторинг является одним из элементов поддержки эволюции программных систем.
В данной работе решается задача рефакторинга диаграмм ЕСС базисных ФБ. Основной целью рефакторинга является избавление диаграммы ЕСС от условных дуг без событий и потенциально-тупиковых (по условию) состояний. Рефакторинг в данном случае во многом основывается на понятии достижимости последовательностей ЕС-акций. Приводятся правила преобразования графов для совершения рефакторинга диаграмм ЕСС. Прототип системы рефакторинга реализован в системе трансформации графов AGG [7].
1 Модель диаграммы управления выполнением ЕСС
Диаграмма ЕСС определяет порядок выполнения операций в базисном ФБ и представляет собой диаграмму состояний особого вида [1]. Для решения задач рефакторинга будем использовать упрощенную модель ЕСС, отличную от [8].
Определим диаграмму ЕСС как кортеж:
ЕСС = (8, Я, Е, С, А,/е,/с, /а,/Р),
где 8 = {^1, s2,..., •?„} - множество вершин, представляющих ЕС-состояния; Я с 8 х 8 - множество дуг, представляющих ЕС-переходы; Е = {е1, е2,..., ет} -множество событийных входов; С = {с1, с2,..., ск} - множество сторожевых условий, определенных на множествах входных, выходных и внутренних переменных базисного ФБ; А = {а1, а2,..., ар} - множество последовательностей ЕС-акций.
Множество дуг Я разбивается на классы: ЯЕ - событийных, ЯС - условных и ЯТ - безусловных дуг, Я = ЯЕ и ЯС и Ят; ЯЕ П ЯС ПЯТ = 0.
Событийная дуга (Е-дуга) представляет ЕС-переход с событием, условная дуга (С-дуга) - ЕС-переход без события, имеющий сторожевое условие, отличное от тождественно истинного, а безусловная дуга (Е-дуга) аналогично дуге второго типа, но сторожевое условие этой дуги тождественно истинно. В дальнейшем будем обозначать Е- и Е-дуги сплошной линией, а С-дуги -пунктирной. Над Е-дугой будем ставить символ «¿», над Е-дугой - символ «е» (если это необходимо).
/е: Яе ^ Е - функция, назначающая Е-дугам событийные входы.
/с: Яе и ЯС ^ С - функция, назначающая Е- и С-дугам сторожевые условия. /а: 8 ^ А - функция, назначающая состояниям последовательности ЕС-акций. /р:Я ^ Е - функция, назначающая дугам значения приоритетов, Е = {^1, ё2, ...} - счетное линейно-упорядоченное множество значений приоритетов. Пусть даны две дуги г1, г2еЯ. Если/р(г1) = ф и/р(г2) = ф и / < j, то считается, что приоритет дуги г1 выше приоритета дуги г2. В диаграмме ЕСС стандарта 1ЕС 61499 приоритет ЕС-перехода явно не указывается. Для его задания используется позиционный принцип описания ЕС-переходов в ХМ£-документе.
2 Модели выполнения ЕСС
В соответствии со стандартом 1ЕС 61499 управление выполнением ЕСС осуществляет специальный интерпретатор, диаграмма состояний которого представлена на рис. 1. Как было отмечено в [9, 10] определение интерпретации ЕСС в стандарте является неполным. Оно, например, допускает два различных подхода к оценке ЕС-переходов без событий.
Состояние Операции
(¡о!/ 50
Р 51 Оценить переходы
52 Выполнить акции
Переход Условие Операции
/1 Запустить ЕСС Съем входных данных
г г3 /2 Нет разрешенных переходов
/3 Переход разрешен
02) /4 Акции завершены
Рис. 1 Диаграмма состояний интерпретатора ЕСС [1]
В соответствии с первым подходом, ЕС-переход без событий разрешен, если он связан с обработкой какого-то конкретного сигнала, который имел место в ближайшем прошлом, и сторожевое условие этого перехода истинно. Второй подход не связывает ЕС-переход с каким-либо конкретным событием. В этом случае разрешенность ЕС-перехода связана только с истинностью соответствующего сторожевого условия. Назовем сторожевое условие перехода без события в первом случае пассивным, а во втором случае - активным. В литературе отражены оба подхода. Первый подход представлен в [9]. Второй подход представлен в работе, вводящей модель последовательного выполнения ФБ [10]. В дальнейшем будем рассматривать только первую модель выполнения ЕСС, в которой существует прямая необходимость в рефакторинге диаграмм ЕСС.
Определение 1. Потенциально-тупиковым (по условиям) состоянием (ПТУ-состоянием) в модели выполнения ЕСС с пассивными сторожевыми
условиями назовем ЕС-состояние Si такое, что V]' е 1, п [(5г-, sj)еЯ ^ ^¡, 5])ёЯс]. Иными словами, si является ПМУ-состоянием, если все выходящие из него дуги являются условными.
Утверждение. Если интерпретатор ЕСС совершил переход t2 (рис. 1) в то время как диаграмма ЕСС находилась в ПТУ-состоянии, то это состояние становится тупиковым. В дальнейшем никакие входные сигналы ФБ не смогут его изменить.
Определение 2. Две ЕСС называются функционально эквивалентными (в рамках определенной модели выполнения ЕСС), если при любых последовательностях входных событий и сопутствующих им наборов значений входных переменных обе ЕСС выполняют одни и те же последовательности ЕС-акций.
3 Общий подход к рефакторингу диаграмм ЕСС
Рефакторинг диаграмм ЕСС используется:
1) для избавления от С-дуг;
2) для избавления от ПТУ-состояний.
В соответствии с этим будем различать рефакторинги первого и второго типов (рефакторинги 1 и 2). Результаты рефакторинга 2 базируются на результатах рефакторинга 1. Прямую практическую значимость имеет рефакторинг 2. В то же время использование рефакторинга 1 может предоставить разработчику несколько иную точку зрения на разработанную ЕСС, что в ряде случаев (на основе визуального анализа) может помочь ему переосмыслить и перепроектировать диаграмму ЕСС.
Назовем СЕ-сетью диаграммы ЕСС подграф, содержащий дуги только из ЯС и ЯТ; но не из ЯЕ. В общем случае данный граф будет несвязным. Соответственно, Е-сетью ЕСС будем называть подграф, содержащий дуги из ЯТ.
Введем Е8 = {(^, s' )еЯЕ | 3(s', sv) е ЯС и Ят} - множество Е-дуг, образующих путь длиной 2 с одной из С- или Е-дуг СТ-сети. Назовем эти дуги источниками. Предполагается, что исходная СЕ-сеть ациклична. Наличие циклов свидетельствует о некорректности ЕСС.
Ниже представлена общая идея избавления ЕСС от событийных дуг. Она основывается на понятии достижимости последовательностей ЕС-акций при интерпретации ЕСС. Пусть (50, з^) - событийная дуга, за которой следует
путь s2, — , $к в СТ-сети. Каждому ЕС-состоянию si (г = 1,к ) соответствует
последовательность ЕС-акций а,. В примере на рис. 2 путь составлен только из С-дуг, что не меняет сути дела.
¿0 5*1 S2 ¿к-1 ¿к
--о?-о
а1
й2 ак-1 ак
Рис. 2 Путь, состоящий из дуги-источника и С-дуг
Этот путь можно заменить одной Е-дугой (50, $к), сторожевое условие которой составляется из сторожевых условий дуг (■, г = 1, к), входящих в путь, и так называемого условия сохранения целевого состояния q (рис. 3). Последовательность ЕС-акций, выполняемых в целевой вершине sk, определяется как конкатенация (сцепление) последовательностей ЕС-акций вершин, входящих в путь.
s0 8к
^~^e1&c1&c2&...&ck&q
о———о
а1+а2+...+а£
Рис. 3 Е-дуга, представляющая путь из рис. 2
Условие сохранения некоторого состояния sk определяется как конъюнкция отрицаний сторожевых условий исходящих С-дуг:
П ?С (sk,s]), здесь операция конъюнкция обозначена символом П.
(sk ,•*/ )еКС
Например, для состояния sk на рис. 4 условие сохранения состояния равно
сk+1 & ck+2 & ...& ck+п .
¿к
4 ^„ ck+n
""’‘О
Рис. 4 Пример для иллюстрации вычисления условия сохранения состояния
Если из состояния sk исходит Г-дуга, то это состояние является транзитным и переход в него невозможен, поскольку интерпретатор ЕСС все время будет «проскакивать» через это состояние.
Если в целевое состояние sk пути входят какие-то другие дуги, то путь 51, s2, ., sk, начинающийся из дуги (50, 51), следует заменять двумя дугами (50,
.--О
>--+2--о
я^) и (я^, $/;), первая из которых в целом идентична Е-дуге из рис. 3, а вторая дуга является Т-дугой. Необходимость второй дуги определяется тем, что входящие в целевое состояние ^ дуги определяют альтернативные пути, которым соответствует суммарная последовательность ЕС-акций, в общем случае отличная от последовательности ЕС-акций, определяемых рассматриваемым путем. Поэтому приписывание целевому состоянию ^ последовательности ЕС-акций какого-то одного из путей было бы неверным. Выход из этого положения - приписать ЕС-акции пути (за исключением ЕС-акций целевой вершины) промежуточной вершине 5^ и соединить ее безусловной дугой с целевой вершиной (рис. 5). Назовем вершину 5^ представителем вершины поскольку большинство ЕС-акций, которые выполнялись бы в состоянии выполняются именно в этой промежуточной вершине.
о
I
0^0
Sk
al+a2+...+ak-l
Рис. 5 Е- и Г-дуги, представляющие путь из рис. 2
Назовем связыванием дуги ггЕЕБ с вершиной СТ-сети операцию на-
хождения всех путей в СТ-сети, ведущих из конца дуги г■ в вершину и генерации на их основе Е-дуг или пар дуг типа (Е, Т) в соответствии с изложенным выше методом. В общем случае результатом такой операции является структура, представляющая гамак. Каждой Е-дуге при этом назначен один и тот же событийный вход. Следует отметить, что связывание дуги г,еЕБ с вершиной sk СТ-сети не всегда возможно.
Назовем связыванием дуги г^еЕБ с СТ-сетью операцию связывания этой дуги со всеми вершинами СТ-сети. Для полного избавления ЕСС от С-дуг необходимо связать все дуги из множества ЕБ с соответствующей СТ-сетью и далее все С-дуги удалить. Можно утверждать, что любую ациклическую СТ-сеть можно преобразовать к виду, свободному от С-дуг. Полученную в результате таких преобразований Т-сеть в совокупности с соответствующими Е-дугами можно назвать графом достижимости наборов ЕС-акций в исходной СТ-сети. Очевидно, что преобразованная в соответствии с предложенным методом ЕСС будет эквивалентна исходной.
При проведении рефакторинга важно не только получить новую структуру ЕСС, вычислить сторожевые условия и наборы выполняемых ЕС-акций, но и определить приоритеты дуг в обновленной ЕСС. Предлагается использовать составные приоритеты (в виде кортежа) с заданным на них лексикографическим порядком -<. Составной приоритет формируется как конкатенация приоритетов дуг пути от начальной вершины до целевой. Чем ближе к началу пути находится дуга, тем большее влияние оказывает она на «суммарный» приоритет. Преимуществом составных приоритетов является легкость их вычислений. На рис. 6 приведен пример ЕСС в виде бинарного дерева с одной Е-дугой в качестве «движущей силы». В исходной ЕСС используются нормализованные приоритеты. На рис. 7 представлена преобразованная ЕСС. Вычисленные составные приоритеты записаны под соответствующими дугами.
Как видно из рис. 6, дуга (50, - самая приоритетная, поскольку Урге {(1, 2),
(1, 3), (2, 1), (2, 2)}[(1, 1) ^ рг].
50 1
о^;
1 ^ лО
Сі С4
1 '-*0
С2
'*0
1-СО
2
'*0
51
52
53
Э4
50
о-
Є1&С1&С3
(1, 1) е1&С1&С4
о
51
(1, 2) е1&с2&с5
(2,1)
е1&С2&С6
(2, 2)
О
о
о
Эз
54
Рис. 6 Диаграмма ЕСС в виде бинарного дерева
Рис. 7 Преобразованная диаграмма ЕСС (из рис. 6) с составными приоритетами дуг
2
Существует два типа рефакторинга в зависимости от того, из каких состояний производится «трассировка сигнала». В первом случае активной дугой является Е-дуга, выходящая из любого состояния, во втором случае - только та Е-дуга, которая выходит из состояния, достижимого из начального. Второй вариант назовем рефакторингом с учетом достижимости из начального состояния.
4 Рефакторинг на основе графотрансформационного подхода
Ниже предлагается подход к решению задачи рефакторинга на основе локальных эквивалентных преобразований ЕСС с использованием системы перезаписи типизированных атрибутных графов. Одно эквивалентное преобразование может выражаться в общем случае применением не одного, а нескольких правил. Процесс локальных эквивалентных преобразований графовой модели ЕСС проходит в рамках вычислений, описанных в разделе 3.
Основные правила трансформации связаны с обработкой пары смежных дуг 5 5;) и ^, 5к) и формированием на их основе новой прямой дуги, ведущей в состояние 5к или в его представителя. Смыслом большинства правил является построение множества достижимых (некоторым сигналом) наборов ЕС-акций путями длиной 2. Дуги, входящие и выходящие из вершин 5г-, и 5к, представляют контекст применения правила.
Все правила можно разделить на следующие группы:
1) правила предварительной обработки (корректировки);
2) правила наращивания графа;
3) правила очистки графа.
Правила первой группы приводят исходную ЕСС к некоторой нормализованной форме. Примерами правил данного типа являются правило слияния параллельных С-дуг, правило удаления мертвых Е-дуг, правило удаления мертвой неприоритетной Т-дуги
Правила наращивания графа по выполняемой функции делятся на несколько групп. Внутри группы правила различаются только контекстом. На рис. 8-11 схематично представлены основные группы правил данного типа в виде некоторых шаблонов. Контекстные состояния представлены маленькими кружками. Тип контекстных дуг не уточняется. Крест на контекстной дуге в левой части правила означает, что дуга запрещена. Таким путем кратко представляются ЛАС-условия. Черточка на дуге в правой части правила озна-
чает, что дуга является использованной и в последующем будет удалена. Для Е-дуги вычисляется два условия: условие достижения целевого состояния (включающее также имя событийного входа) и условие распространения сигнала за целевое состояние. Первое условие пишется над дугой, а второе - под дугой. Полное текущее условие для Е-дуги определяется как конъюнкция первого условия и отрицания второго условия.
ві&Єі
|=:>
а2 5з аз 51 У\&—С\ а2 53 а2+аз
Рис. 8 Правило распространения сигнала (на линейном участке)(К1)
О
51 52 , , 53
0^0-0 ■=>
а2
V1&—|С1
Рис. 9 Правило вхождения в соединитель (Я2)
Рис. 10 Правило обхода соединителя (Я3)
С1
6-
Є1
аі
О52
а2
Й2
Рис. 11 Правило избавления от обратной С-дуги (К4)
Как правило, вновь создаваемая (дочерняя) дуга имеет двух родителей -пары следующих друг за другом смежных дуг. При этом приоритет дочерней дуги полагается равным конкатенации приоритетов родительских дуг, причем первым идет приоритет дуги, стоящей в этой паре первой.
При расщеплении узла (например, при обходе соединителя) Е-дугам не выделяется отдельная вершина, они используют имеющуюся вершину-соединитель.
В правиле избавления от обратной С-дуги (рис. 11) в правой части правила, в отличие от большинства правил, имеются две дочерние дуги (51, 53) и (51, s2), они имеют одинаковый приоритет, равный приоритету х родительской дуги. Это не имеет значения, т.к. они являются взаимоисключающими по условию С1.
В отличие от правил первой и второй групп, правила очистки графа являются специфическими для каждого из типов проводимого рефакторинга. В качестве примера правил данной группы можно назвать правило удаления Е-дуги и правило удаления изолированной вершины.
Для иллюстрации процесса рефакторинга рассмотрим простую диаграмму ЕСС (рис. 12) и ее преобразование. Упрощенно процесс рефакторинга 1 определяется цепочкой правил Л1, Л1. Упрощение (для облегчения понимания сути) заключается в том, что использованные С-дуги уничтожаются непосредственно в правиле Л1. После первого применения правила Л1 получается промежуточная ЕСС, представленная на рис. 13. Как можно заметить, она эквивалента исходной ЕСС. После второго применения правила Л1 получается результирующая для рефакторинга 1 ЕСС (рис. 14). Она также эквивалентна исходной ЕСС. В результирующей ЕСС ПТУ-состояния представлены в виде тупиковых вершин 51 и s2.
Процесс рефакторинга 2 описывается цепочкой правил Л1, Л1, Л5, Лб. Результирующая ЕСС для этого случая представлена на рис. 15. Эта ЕСС не эквивалентна исходной ЕСС, поскольку в ней отсутствуют ПТУ-состояния 51 и
52. Это приводит к тому, что, например, при входном сигнале е истинности условия с1 и ложности условия с2 (кратко е/&с&^с2) в результирующей ЕСС не выполняется ни одна ЕС-акция, в то время как в исходной ЕСС выполняются последовательности ЕС-акций а2 и а3. Несмотря на то, что исходная и результирующая диаграммы ЕСС не эквивалентны, результирующая диаграмма ЕСС на рис. 15, скорее всего, соответствует замыслам разработчика, учитывая то, что он хорошо осведомлен об особенностях модели выполнения и не допускает возможности того, что ЕСС останется в «замороженном» состоянии. Следует отметить, что в примерах на рис. 12-15 приоритеты дуг не имеют никакого значения вследствие взаимоисключающих сторожевых условий.
•50 5}
* 0-^-0 а.
Є2
С1
53
52
о-п-<Ь
аз ] \°2
Рис. 12 Диаграмма ЕСС
50 5.
£>л Яг-.Г'л
Є1&С.&С2
Рис. 14 Результат рефакторинга 1 диаграммы ЕСС, представленной на рис. 12
Рис. 13 Промежуточная диаграмма ЕСС 50
Рис. 15 Результат рефакторинга 2 диаграммы ЕСС, представленной на рис. 12
Более сложный пример диаграммы ЕСС и результат ее рефакторинга второго типа представлен на рис. 16. Нормализованные приоритеты дуг в виде чисел поставлены рядом с дугами. Для краткости для результирующей ЕСС опущены приоритеты тех дуг, которые являются единственными выходящими из вершины.
Рис. 16 Диаграмма ЕСС (слева) и результат ее рефакторинга 2 (справа)
Прототип системы рефакторинга ЕСС был разработан с помощью системы трансформации графов AGG. Система AGG представляет основанную на правилах среду визуального программирования, использующую алгебраический подход к трансформации графов [7]. Правила перезаписи графов могут содержать NAC- и контекстные условия. Разработана метамодель диаграммы ЕСС, используемая в прототипе системы рефакторинга, в виде типизированного графа, сформированного в AGG. Система рефакторинга содержит около 35 правил.
Подробные сведения из теории трансформации графов можно найти в [3].
Заключение
В данной работе представлен графо-трансформационный подход к рефакторингу диаграмм ЕСС. В рамках данного подхода разработана графовая модель ЕСС, проанализированы модели выполнения ЕСС и сформулированы цели рефакторинга, представлен общий подход для проведения рефакторинга в терминах графов и, наконец, приведены основные правила перезаписи графов системы рефакторинга. Прототип системы рефакторинга реализован в системе трансформации графов AGG.
Список литературы
1. Function blocks for industrial-process measurement and control systems. - Part 1: Architecture, International Electrotechnical Commission. - Geneva, 2005.
2. Sendall, S. Model transformation: The heart and soul of model-driven software development / S. Sendall, W. Kozaczynski // IEEE Software. Special Issue on Model-Driven Software Development. - 2003. - № 20(5). - P. 42-45.
3. Ehrig, H. Handbook of Graph Grammars and Computing by Graph Transformations / H. Ehrig, G. Engels, H.-J. Kreowski, G. Rozenberg. - World Scientific, 1999. - Vol. 1.
4. Grunske, L. Graph Transformation for Practical Model Driven Software Engineering / L. Grunske, L. Geiger, A. Zundorf, N. V. Eetvelde, P. V. Gorp, D. Varro // Model-driven Software Development. - 2005. - Springer. - P. 91-118.
5. Дубинин, В. Н. Построение поисково-трансформационных систем для поддержки проектирования компонентно-базированных систем промышленной автоматики / В. Н. Дубинин, В. В. Вяткин // AIS’05 и CAD-2005 : труды Международных научно-технических конференций. - Дивноморское ; М. : Физматлит, 2005. - Т. 2. - С. 30-35.
6. Mens, T. On the Use of Graph Transformations for Model Refactoring / T.Mens // Lecture Notes in Computer Science. Generative and Transformational Techniques in Software Engineering. - 2006. - Vol. 4143. - P. 219-257.
7. Taenzer, G. AGG: A Tool Environment for Algebraic Graph Transformation / G. Taenzer // Lecture Notes in Computer Science. - 2000. - Springer. - Vol. 1779. -P. 481-490.
8. Dubinin, V. Towards a Formal Semantics of IEC 61499 Function Blocks / V. Dubinin, V. Vyatkin // 4th IEEE International Conference on Industrial Informatics (INDIN’2006). - Singapore, 2006. - P. 6-11.
9. Sünder, C. Usability and Interoperability of IEC 61499 based distributed automation systems / C. Sünder, A. Zoitl, J. H. Christensen, V. Vyatkin, R. Brennan, A. Valentini, L. Ferrarini, K. Thramboulidis, T. Strasser, J. L. Martinez-Lastra, F. Auinger: // 4th IEEE Conference on Industrial Informatics (INDIN 2006). - Singapore, 2006. -P. 31-37
10. Vyatkin, V. Sequential Axiomatic Model for Execution of Basic Function Blocks in IEC61499 / V. Vyatkin, V. Dubinin // 5th IEEE Int Conf. on Industrial Informatics (INDIN’2007). - Vienna, 2007. - P. 1183-1188.