Научная статья на тему 'Язык Cell - инструмент для синтеза программного обеспечения многоуровневого телекоммуникационного протокола по частично формализованным спецификациям'

Язык Cell - инструмент для синтеза программного обеспечения многоуровневого телекоммуникационного протокола по частично формализованным спецификациям Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
298
63
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ЯЗЫК CELL / СИНТЕЗ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ / ТЕЛЕКОММУНИКАЦИОННЫЙ ПРОТОКОЛ / ИЕРАРХИЧЕСКИЙ АВТОМАТ / СЕРИАЛИЗАЦИЯ ВЫЧИСЛЕНИЙ / LANGUAGE CELL / SYNTHESIS OF THE SOFTWARE / THE TELECOMMUNICATION REPORT / THE HIERARCHICAL AUTOMATIC DEVICE / SERIALIZATION OF CALCULATIONS

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Бондаренко Т. В., Волович К. И., Кондрашев В. А.

В статье рассматриваются основные особенности описания алгоритмов телекоммуникационных протоколов, определяется понятие иерархического автомата и предлагается система программирования Cell как инструментальное средство, во-первых, для создания взаимоувязанной спецификации иерархического автомата на основе частично формализованных описаний его подавтоматов, а во-вторых, для синтеза исполняемого кода, ориентированного на последовательное выполнение переходов слабосвязанных подавтоматов иерархического автомата в соответствии с логикой исполнения алгоритма без использования методологии и технологии организации параллельных вычислений

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Language Cell - the tool for synthesis of the software of the multilevel telecommunication report under partially formalized specifications

In article the basic features of the description of algorithms of telecommunication reports are considered, the concept of the hierarchical automatic device is defined and programming system Cell as tool means, first, for creation of the connected specification of the hierarchical automatic device on the basis of partially formalized descriptions of its parts, and, secondly, for synthesis of the executed code focused on consecutive performance of transitions of the hierarchical automatic device according to logic of execution of algorithm without use of methodology and technology of the organization of parallel calculations is offered

Текст научной работы на тему «Язык Cell - инструмент для синтеза программного обеспечения многоуровневого телекоммуникационного протокола по частично формализованным спецификациям»

УДК 004.4’242

ЯЗЫК CELL - ИНСТРУМЕНТ ДЛЯ СИНТЕЗА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ МНОГОУРОВНЕВОГО ТЕЛЕКОММУНИКАЦИОННОГО ПРОТОКОЛА ПО ЧАСТИЧНО

ФОРМАЛИЗОВАННЫМ СПЕЦИФИКАЦИЯМ

Т.В. Бондаренко, К.И. Волович, В.А. Кондрашев

В статье рассматриваются основные особенности описания алгоритмов телекоммуникационных протоколов, определяется понятие иерархического автомата и предлагается система программирования Cell как инструментальное средство, во-первых, для создания взаимоувязанной спецификации иерархического автомата на основе частично формализованных описаний его подавтоматов, а во-вторых, для синтеза исполняемого кода, ориентированного на последовательное выполнение переходов слабосвязанных подавтоматов иерархического автомата в соответствии с логикой исполнения алгоритма без использования методологии и технологии организации параллельных вычислений

Ключевые слова: язык Cell, синтез программного обеспечения, телекоммуникационный протокол, иерархический автомат, сериализация вычислений

Введение. Наблюдаемый в настоящее время высокий спрос на производительные средства электронных коммуникаций стимулирует широкомасштабное развитие телекоммуникационных систем и расширение спектра услуг связи, что является предпосылкой для появления новых телекоммуникационных протоколов (ТКП). Обычно новые ТКП в целевой телекоммуникационной системе реализуются в виде встраиваемого программного обеспечения, синтез которого является ресурсоемкой технической задачей. Автоматизация этой задачи до сих пор не имеет общепризнанного решения.

В [1-2] показано, что основные сложности автоматизации процесса реализации ТКП связаны с традиционным способом неформального (вербального) описания протокола с включением в него явно или неявно связанных фрагментов ТКП, представленных на каком-нибудь формальном графическом или текстовом языке. Как правило, формальные фрагменты ТКП (особенно ТКП нижних уровней эталонной модели взаимодействия открытых систем) основаны на понятии конечного автомата (КА) [3] и изображаются с помощью диаграмм состояний и переходов. В итоге для таких спецификаций ТКП характерно: отсутствие (за редким исключением) полных спецификаций ТКП на формальном языке; наличие слабосвязанных многоуровневых фрагментов ТКП с неявными переходами. Поясним эту ситуацию на примере. Пусть один из фрагментов ТКП производит установление соединения и запускает таймер, в задачу которого входит отслеживание пропадания физического сигнала. В случае появления сигнала от таймера производится переход к повторному установлению соединения. Другой фрагмент ТКП (более высокого уровня) обеспечивает обмен данными, и в нем не предусмотрена обработка сигнала от рассмотренного таймера. Тем не менее, логика функционирования ТКП требует, чтобы при получении сигнала от таймера фрагмент протокола, отвечающий за передачу данных, корректно завершился, и был выполнен фрагмент протокола установления соединения. Таким образом, налицо возникновение неявного перехода, напрямую не описанного в фор-

Бондаренко Тимофей Витальевич - ИПИ РАН, ст. науч. сотрудник, тел. (499) 135-62-60 Волович Константин Иосифович - ИПИ РАН, ст. науч. сотрудник, тел. (499) 135-62-60

Кондрашев Вадим Адольфович - ИПИ РАН, ст. науч. сотрудник, тел. (499) 135-62-60

мальной части спецификации ни одного из фрагментов, однако подразумеваемого в вербальной части описания ТКП.

В результате таких (далее будем говорить частично формализованных) спецификаций ТКП получается описание алгоритма, которое не является описанием КА в строгом его определении. Тем не менее, понятия КА часто и плодотворно применяются к таким алгоритмам, поскольку логика их работы имеет много общего с традиционными КА: описание алгоритма основано на выделении множества состояний, каждому из которых ставится в соответствие набор реакций на возможные внешние сигналы. Далее такие алгоритмы будем называть автоматами.

Наиболее существенными отличиями указанных алгоритмов от КА являются:

1) использование памяти помимо явно описанных состояний автомата; в частности, использование условных и вычисляемых переходов;

2) широкое использование сигналов, передаваемых внутри автомата (и, тем самым, образование системы взаимодействующих автоматов, связанных разделяемой памятью);

3) наличие асинхронно-параллельной обработки сигналов для реагирования на определенные последовательности входных сигналов независимо от текущего состояния.

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

Для программирования ТКП в настоящее время существует несколько подходов. Классический и, вероятно, наиболее известный способ, нашедший широкое применение при создании цифровых схем, основан на приведении описания алгоритма ТКП к КА. С использованием современных методик синтеза и дизайна цифровых систем (например, [4]) специфицированный автомат ТКП сводится к классической модели КА (с теми или иными допущениями), упрощается, после чего на основе полученной таблицы состояний можно использовать классические средства процедурного программирования для реализации автомата. Теоретически любой автоматный алгоритм можно привести к КА. Однако, такая эвристическая модификация весьма трудоемка, порождает дополнительные состояния, приводит к полной потере структуры алгоритма, описанного в спецификациях ТКП, что весьма затрудняет отладку. Поэтому этот способ применяется только для относительно простых ТКП с небольшим числом состояний, позволяющих использовать ту или иную форму таблицы состояний разумного размера.

Следующий способ программирования ТКП оформился в 90-х годах прошлого века. Для описания многоуровневой обработки протокольных блоков данных без существенного преобразования алгоритма сложного ТКП стали использовать специализированные языки, обеспечивающие реализацию алгоритма в виде псевдопараллельного выполнения нескольких процессов, каждый из которых является автоматом определенного уровня иерархии протокола. В специализированных языках, основанных на понятиях КА (состояния, перехода, сигнала), например, в языке SDL [5], для этого есть средства спецификации многоуровневого протокола с параллельным выполнением нескольких автоматов в виде системы независимых процессов (автоматов), взаимодействующих путем обмена сигналами. Однако, концепция совместного функционирования независимых автоматов, будучи успешно применяемой при синтезе аппаратных реализаций, оказалась неудачной для программных реализаций вследствие трудностей синхронизации в целевой системе с ограниченными ресурсами.

На смену конкурентным автоматам-процессам пришло понятие сложного состояния. Наиболее полно этот подход к программированию иерархических автоматов описан в работе [6]. Сложные состояния этого языка подразумевают, что автомат может находиться в нескольких состояниях одновременно. Однако правила описания сложных состояний и переходов между ними на подобных языках, не учитывающих специфику ТКП, оказываются нетривиальны и не соответствуют традиционной практике описания алгоритмов ТКП с помощью блок-схем и диаграмм состояний. В результате для применения этих языков автоматного программирования также необходимо эвристическое конформное преобразование автомата, заданного спецификацией ТКП, в некий промежуточный автомат для его описания на выбранном языке спецификации.

Альтернативой может служить новый язык описания автомата, учитывающий специфику ТКП как многоуровневой совокупности явно или неявно

связанных автоматов, описанных с использованием традиционных диаграмм состояний и переходов. Язык и его система программирования должны обеспечивать создание увязанной формальной спецификации всего автомата по частично формализованному описанию элементов многоуровневой системы с сохранением структуры ТКП, что позволит на этапе компиляции (синтез исполняемого кода) автоматизированным образом создать реализацию протокола без использования технологии параллельных вычислений.

Поставленные задачи решаются в разрабатываемой авторами системе программирования Cell. Далее в статье будут рассмотрены ее ключевые элементы: модель иерархического автомата; элементы языка Cell для описания иерархического автомата; модель исполнения иерархического автомата.

Модель иерархического автомата в системе программирования Cell. Под иерархическим автоматом в системе программирования Cell понимается система конечного числа упорядоченных связанных автоматов (подавтоматов) - ИА = {A0,..., Лг,..., Лп}, где элемент Л1 представляется множествами С, V, D, S1, P1 с определенными на них функциями а1, в, д -Л1={С, V, D, S1, P1, а1, в, д}.

Индекс 1=0,., п элемента Л1 обозначает ранг или уровень иерархии этого элемента в системе. Л0 -корень иерархии или корневой автомат.

С - конечное множество событий (сигналов). Множество С является общим для всех элементов Л1. Сигнал инициирует переход ИА (изменение состояния системы, значений переменных, посылку сигнала).

V - конечное множество переменных

V={va-.., vx,..., v}. Множество Vявляется общим для всех элементов Л1. Значения переменных влияют на поведение ИА во время перехода.

D - конечное множество данных (значений переменных) D={d0, ... dw ... dw}. Каждый элемент множества D, например du, является значениями для переменных множества V- du={duvo, ... duvx, ... djz}.

S- конечное множество состояний S={S°, S1, ... S',..., Sn}. Каждый элемент множества S, например S', является множеством состояний соответствующего автомата Л1 таким, что каждое множество S1={s1_1, s'0, ... s1p, ... s1q} не пересекается с любым другим элементом множества S, а также имеет хотя бы два элемента: s1.] - неактивное состояние и s10 - начальное состояние. У корневого автомата Л0 в множестве состояний только два элемента (неактивное и начальное состояние) - S0={s0.], s00}.

Под текущим состоянием системы ИА будем понимать множество St текущих состояний всех его автоматов - St={s0t, ...s\ ..., snt}, где s1t текущее состояние автомата Л1. Начальным состоянием системы ИА будем считать множество S0={s00, s].]t .s1-], .sn.]}, состоящее из начального состояния корневого автомата и неактивных состояний всех остальных автоматов Л1, 1 Ф 0.

Два автомата Л1 и Л] при 1 < j связаны отношением порождения (или вложения), если при входе автомата Л1 в некоторое состояние кроме неактивного sf, f Ф -] автомат Л] меняет свое состояние на начальное S0. Любое состояние кроме неактивного sf f Ф -] любого автомата Л1 может породить только единственный автомат более высокого уровня иерар-

хии Л, j > 1. Для всех автоматов кроме корневого Л, j Ф 0 существует единственный автомат меньшего уровня иерархии Л1, 1 < j и единственное состояние sf этого автомата, породившее автомат Л]. Состояние s1f и автомат Л1 будем называть родителем автомата Л, а автомат Л - ребенком («сыном», «дочкой») или потомком состояния sf автомата Л1. Также будем считать, что автомат Л] вложен в состояние sf автомата Л1.

В системе ИА автоматы упорядочены так, что справедливы следующие соотношения:

- если автомат Лк порожден автоматом Л1 (вложен в него), а автомат Лт порожден автоматом Л3, причем уровень иерархии автомата Л' меньше уровня иерархии автомата Л, 1 < j, то уровень иерархии автомата Лк меньше уровня иерархии автомата Лт, к < т;

- если у автомата Л1 множество состояний упорядочено S1={s1-], s10, ... s1k, ... s'm ... s1q} так, что к < т, то в случае порождения состоянием s1k автомата Лк, а состоянием s1m - автомата Лт, уровень иерархии автомата Лк будет меньше уровня иерархии автоматаЛт, к < т.

Цепью порождения будем называть упорядоченную последовательность автоматов возрастающего уровня иерархии, при которой каждый следующий автомат этой последовательности порожден предыдущим. Если автоматы Л1 и Л, 1 < j можно связать цепью порождения, то будем считать, что Л1 - предок автомата Л-7, а Л] - потомок автомата Л1. Отметим:

- все автоматы, начиная с корневого, цепи порождения какого-либо автомата являются полным множеством автоматов-предков этого автомата;

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

Р - конечное множество достижимых состояний P={P0, P], ... P1, ...Pn}, определенное для автоматов системы ИА. Каждый элемент этого множества, например P1, является множеством достижимых состояний соответствующего автомата Л1 таким, что каждое множество P1 есть объединение множества S1 с множеством состояний всех предков автомата Л1. Заметим, что P0 = S0, P] = S + S .

а - функция состояний а: S x C x D ^ S. Единая для всех автоматов Л1 системы ИА функция состояний а определяет новое состояние системы ИА при получении какого-либо сигнала case е C с учетом текущего состояния ИА и значения переменных d е D. Выделим в функцию а1 ту часть отображений в функции а, которые связаны с переходами из множества состояний автомата Л1 в множество его достижимых состояний - а1: S1 x C x D ^ P1. Если в текущий момент времени сигнал case об служивается автоматом Л1 в состоянии state е S1, то новое состояние new = а1(state, case, d) принимает следующие значения:

- новое состояние является элементом множества состояний автомата Л1 (new е S1), тогда в новом состоянии системы ИА изменится только состояние автомата Л1 и он перейдет в состояние new;

- новое состояние является элементом множества достижимых состояний автомата Л1, но не является элементом множества S1, т.е. new является

элементом множества состояний автомата Лх - предка автомата Л1 (new е S), тогда в новом состоянии системы ИА изменится состояние автомата Л1 и состояние автомата Лх: автомат Л1 перейдет в неактивное состояние (произойдет деактивация автомата Л1), а автоматЛх перейдет в состояние new.

в - функция сигналов в: S x C x D ^ С. Единая для всех автоматов Л1 системы ИА функция сигналов в определяет порождаемые сигналы в текущем состоянии системы ИА при получении какого-либо сигнала с учетом текущего значения переменных.

д - функция переменных д: S x C x D ^ D. Единая для всех автоматов Л1 системы ИА функция переменных д определяет изменение значений переменных в текущем состоянии системы ИА при получении какого-либо сигнала с учетом текущего значения переменных.

Под процедурой (функцией) перехода или реакцией системы ИА будем понимать выполнение функций а, в, д для текущего состояния системы при получении какого-либо сигнала с учетом текущего значения переменных.

В системе ИА единовременно с любым полученным сигналом может быть сопоставлено не более одного автомата Л1 и не более одного его состояния для обслуживания этого сигнала. Не допускается одновременное обслуживание одного сигнала в нескольких автоматах системы ИА или в нескольких состояниях одного автомата.

В системе ИА для любого автомата Л1 определены следующие переходы: переход в начальное состояние при порождении Л1, переходы в достижимые состояния P1 согласно функции состояния а1. Другие переходы в системе ИА недопустимы.

Продемонстрируем приведенные выше положения на диаграмме (рис. 1), на которой изображен пример иерархического автомата А с четырьмя уровнями иерархии: автоматами А0, А], А2, А3. На диаграмме автомат каждого уровня иерархии помещен в овал, его состояния обозначены кругом (жирный круг обозначает начальное состояние автомата, неактивное состояние автомата не отображается), переходы между состояниями отображены непрерывной стрелкой, а отношения порождения - пунктирной стрелкой. Надпись на одинарной стрелке перехода вида: i/f/o,... - означает, что переход срабатывает при получении сигнала «i», выполняет действие «f» и отправляет сигналы «о,.» (каждый из элементов надписи может отсутствовать).

Рис. 1. Диаграмма состояний и переходов иерархического автомата А

Для автомата А определены две цепочки порождения:

а) А2 порожден от А], А] порожден от А0;

б) А3 порожден от А], А] порожден от А0.

Соответственно, в качестве примеров допустимы следующие межуровневые переходы:

- от состояний автомата А 2 к состояниям автомата А ] с деактивацией автомата А2;

- от состояний автомата А 3 к состояниям автомата А ] с деактивацией автомата А3.

Примером запрещенных межуровневых переходов являются переходы от состояний автомата А3 к состояниям автомата А2, поскольку автомат А3 не является потомком А2.

Можно отметить следующие два главных достоинства приведенной выше модели иерархического автомата как основы для описания поведения многоуровневого ТКП с сохранением традиционной автоматной логики (состояние - событие - реакция - новое состояние):

1) представление уровня иерархического автомата как логически выделенного автомата, поведение которого можно представить в виде традиционных диаграмм состояний и переходов, широко используемых при спецификации ТКП;

2) соответствие правил межуровневых переходов и понятия вложенного состояния иерархического автомата логике функционирования ТКП и неявным правилам связывания фрагментов ТКП.

В итоге предлагаемая в системе Cell модель иерархического автомата обеспечивает логическую организацию и последовательное исполнение процедурных блоков по частично формализованному традиционному описанию многоуровневого ТКП, направленному на преобразование потока протокольных блоков данных.

Основные элементы языка Cell для описания иерархического автомата. На рис. 2 приведен пример описания иерархического автомата на языке СеП. Для примера использовался автомат, представленный на рис. 1.

root {

cell A, B, C, D;

A { on cl jump B; }

B {

cell L, M, N;

on c2 jump C;

L { on c10 @{ f1(); @send(c2);

@jump(M); @} }

M {

on cll jump N;

on c13 jump root.B;

}

N { on c12 jump M; }

}

C {

cell X, Y, Z;

on c3 jump D;

X { on c20 @{ f2(); @send(c3);

@jump(Y); @} }

Y {

on c21 jump Z;

on c23 jump root.B;

}

Z { on c22 jump Y; }

}

D { on c4 jump D; }

}

Рис. 2 . Пример описание иерархического автомата на языке Cell

Ключевым элементом языка Cell является понятие ячейки (Cell). Программа на языке Cell содержит перечень определений ячеек. Ячейка характеризует состояние подавтомата и определяет часть реакций совокупного автомата, заданных переходами из этого состояния в достижимые. Ячейки организуются в иерархическую структуру с целью систематизации переходов и создания неявных правил связывания подавтоматов в соответствии с представленной выше моделью иерархического автомата в системе Cell. Вложенность ячеек не ограничивается. Иерархия вложенных автоматов специфицируется на языке Cell путем перечисления в родительской ячейке ячеек порожденного автомата (оператор cell <список ячеек>). В этой конструкции перечисляются имена всех ячеек вложенного автомата через запятую, при этом первой указывается имя ячейки, описывающей начальное состояние вложенного автомата. Это позволяется описать на языке Cell иерархическую структуру автомата аналогичную иерархической структуре ТКП.

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

Отметим, что предложенное в языке Cell определение состояния как текущего набора реакций на возможные сигналы отличается от традиционного понятия состояния КА, но не противоречит ему и позволяет связать понятия состояния иерархического автомата и КА. Трансформация определения состояния как состояния памяти КА к определению состояния как совокупности реакций автомата позволяет описывать иерархические автоматы как единое целое.

Функции перехода (реакции) на языке Cell задаются при спецификации ячеек. Переход связывает между собой одну исходную ячейку (состояние подавтомата) и одну или более целевых ячеек, определяемых множеством достижимых состояний из исходного. Переход инициируется (открывается) приемом сигнала и представляет собой фрагмент процедурного кода с реакцией на сигнал. Переход может включать в себя условные операции и, соответственно, иметь несколько целевых состояний. Описание переходов на языке Сell синтаксически традиционно. В языковой конструкции перехода (оператор on <сигнал> <реакция>) указывается сигнал, при поступлении которого выполняются процедурные действия, связанные с переходом. Если сигнал не указан, то переход является спонтанным и указанные процедурные действия выполняются сразу без ожидания получения сигнала.

Для связи процедурного кода с логическими переходами языка Cell вводятся именованные объекты: ячейки, сигналы, таймеры, классы видимости данных. Имена указанных объектов употребляются как в тексте языка переходов Cell, так и в процедурных блоках. Процедурные блоки на языке C, заключенные в скобки @{ и @}, используют именованные объекты посредством специальных директив (@send, @3ump и др.). Компилятор Cell производит поиск и

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

Как уже отмечалось, для спецификации процедурных действий в системе программирования Cell используется процедурный язык C с некоторыми дополнениями, которые анализируются и преобразуются компилятором языка Сell. К ним относятся правила идентификации переменных автомата и операций, связанных с отправкой сигналов, сменой состояний и динамическим порождением ячеек при функционировании автомата. В языке Сell предусмотрена альтернатива использованию языка C для спецификации процедурных действий, если тело перехода предусматривает единственную операцию - переход в другое состояние (оператор jump <ячейка>). В любом случае компилятор языка Cell формирует функцию на языке C, которую связывает с указанным переходом. Подробности формирования этой функции будут описаны в следующем разделе.

Модель исполнения иерархического автомата в системе программирования Cell. Основу модели исполнения иерархического автомата в системе программирования Cell составляет концепция автоматизированной замены автоматной логики функционирования реактивных систем («состояние» - «сигнал (событие)» - «переход (реакция)» -«новое состояние») на процедурную логику последовательных вычислений, принятую в традиционных компьютерных системах.

В модели исполнения автомата отсутствует понятие «состояние автомата» в виде переменной, содержащей идентификаторы текущих состояний на каждом уровне иерархии автомата, с помощью которой автоматные конструкции практически без изменений отображаются на процедурную логику вычислителя, что свойственно классическим подходам. Обычно в классических подходах автомат реализуется в виде цикла, условием выхода из которого является достижение завершающего состояния. В теле цикла размещается селектор перехода с переменной состояния (для языка C это чаще всего оператор SWITCH). Примером классического подхода является SWITCH-технология [7]. В языке Cell предлагается другая модель, в которой логика выполнения переходов формируется при синтезе автомата во время компиляции спецификаций. Это является существенным отличием подхода языка Cell от классического, в котором логика выполнения переходов вычисляется во время функционировании автомата.

Модель исполнения автомата в системе Cell основана на признании текущего состояния как актуальной совокупности реакций (функций перехода) на допустимые в системе события (сигналы). На этапе компиляции описания иерархического автомата с языка Cell выстраивается последовательная процедурная логика исполнения автомата так, чтобы специфицированная сигналом реакция в текущем состоянии, содержалась в описании этого сигнала. Для обслуживания очередного сигнала (см. рис. 3) по содержимому его идентификатора определяется связанный с сигналом дескриптор, который в свою очередь указывает на функцию перехода, выполняемую в качестве требуемой реакции. Актуальность реакций на сигнал, указанных в дескрипторах сигналов вектора состояний, поддерживается служебным кодом, внедренным компилятором языка Cell во все функции перехода при разборе логики переходов. Служебный код, выполняемый при завершении любого перехода, модифицирует вектор состояния: сначала отменяет текущие реакции на сигналы актуального состояния, а затем устанавливает необходимые реакции на сигналы, обрабатываемые в новом состоянии.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

while (signal=GetFromQueue()) ( /* выбрать из

очереди идентификатор сигнала */

descriptor = *signal; /* получить

дескриптор сигнала */

transmition = descriptor.t; /* получить текущую реакцию на сигнал */

(*trasmition)(descriptor.c); /* выполнить переход на требуемом контексте */ j

Рис. 3. Упрощенный цикл функционирования автомата на языке C

Покажем отмеченные процедуры на примере. На рис. 4a представлена диаграмма автомата с двумя состояниями {A, B}, тремя сигналами {CI, C2, C3} и

c2/y

extern signal cl, c2, c3; /* дескрипторы сигналов */

/* &c1, &c2, &c3 - идентификаторы сигналов с1, с2, с3 */

AonCltoA { x(); /* действие перехода автомата */

/* пустой служебный код - нет смены состояния */

}

AonC2toB { y(); /* действие перехода автомата */ c1.t=0; c2.t=0; /* отмена реакций состояния А */ c3.t=BonC3toA; /* установка реакций состояния B */

}

BonC3toA { z(); /* действие перехода автомата */ c3=0; /* отмена реакций состояния B */

/* установка реакций состояния A */ c1.t=AonC1toA; c2.t=AonC2toB;

}

Рис. 4. Синтез функций переходов

тремя реакциями {x, y, z}, логика выполнения переходов указана на стрелках диаграммы. В результате компиляции указанного автомата в системе программирования Cell будут синтезированы три функции на языке C, обеспечивающие логику функционирования автомата (рис. 4б). Функция AonC]toA будет соответствовать переходу Л^Л при получении сигнала С]. Функция AonC2toB будет соответствовать переходу A^B при получении сигнала С2. Функция BonC3toA будет соответствовать переходу B^A при получении сигнала С3.

Заключение. В работе представлен альтернативный подход для синтеза программного обеспечения многоуровневого телекоммуникационного протокола на основе понятия иерархического автомата, языковых конструкций его описания и модели исполнения, предлагаемых авторами в разрабатываемой системе программировании, названной Cell. Этот подход заключается в синтезе программного кода ТКП по спецификациям иерархического автомата на языке Сell, подготовленным на основе описания ТКП, изложенного общепринятым частично формализованным способом с использованием понятий КА. Компиляция полученных Cell-спецификаций обеспечивает автоматизированное связывание подавтоматов в единый многоуровневый автомат с сериализацией вычислений в последовательную цепочку обработки. Предлагаемый подход обладает следующими преимуществами:

1) при программировании на языке Cell отсутствуют сложные эвристические конформные преобразования автомата ТКП, описанного исходной спецификацией, с сохранением многоуровневой иерархии протокола, структуры его подавтоматов и неявными правилами их связывания;

2) при компиляции спецификаций с языка Cell в процедурный код происходит сериализация вычислений - приведение набора взаимодействующих подавтоматов к единому автомату (который с определенной степенью допущений можно считать КА), ориентированному на последовательное выполнение переходов подавтоматов согласно логике алгоритма;

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

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

Понятие ячейки и правила построения иерархии, используемые в языке, обеспечивают создание взаимоувязанной формальной спецификации иерархического автомата по частично формализованному описанию элементов многоуровневой системы с неявными связями (например, ТКП).

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

Литература

1. Бондаренко Т.В., Бондаренко О.А., Волович К.И., Денисов С. А., Кондрашев В. А. Иерархические диаграммы состояний и переходов в синтезе телекоммуникационных протокольных автоматов // Системы и средства информатики, Дополнительный выпуск, М., ИПИРАН, 2009, с. 7785.

2. Бондаренко Т.В., Бондаренко О.А., Волович К.И., Гребенщиков В.И., Гринев С.А., Кондрашев В.А., Курако Е.К. Аспекты автоматизации программирования протокольных автоматов для телекоммуникационного программного обеспечения встраиваемых систем // М., ИПИРАН, 2006, 52 с.

3. Шеннон К.Э., Маккарти Дж., Автоматы // Cборник статей под редакцией, М.: ИЛ, 1956, 403 с.

4. Baranov S. LOGIC AND SYSTEM DESIGN of Digital Systems // Tallinn, University of Technology, 2008, 266 p.

5. Рекомендация Z.100. Языки программирования. Язык спецификаций и электросвязи (МСЭ-Т).

6. Paul Jay Lucas An object-oriented language system for implementing concurrent, hierarchical, finite state machines // University of Illinonis at Urbana-Champaing, 1993, http://chsm.sourceforge.net.

7. Шалыто A.A. SWITCH-технология. Алгоритмизация и программирование задач логического управления // СПб, Наука, 1998, 628 с.

Институт проблем информатики Российской академии наук (г. Москва)

LANGUAGE CELL - THE TOOL FOR SYNTHESIS OF THE SOFTWARE OF THE MULTILEVEL TELECOMMUNICATION REPORT UNDER PARTIALLY

FORMALIZED SPECIFICATIONS

T.V. Bondarenko, K.I. Volovich, V.A. Kondrashev

In article the basic features of the description of algorithms of telecommunication reports are considered, the concept of the hierarchical automatic device is defined and programming system Cell as tool means, first, for creation of the connected specification of the hierarchical automatic device on the basis of partially formalized descriptions of its parts, and, secondly, for synthesis of the executed code focused on consecutive performance of transitions of the hierarchical automatic device according to logic of execution of algorithm without use of methodology and technology of the organization of parallel calculations is offered

Key words: language Cell, synthesis of the software, the telecommunication report, the hierarchical automatic device, serialization of calculations

i Надоели баннеры? Вы всегда можете отключить рекламу.