УДК 004.415.52
А.Н. Ивутин, канд. техн. наук, доц., (4872) 33-24-45, alexey.ivutin@g:mail.com (Россия, Тула, ТулГУ), Е.И. Дараган, асп., (4872) 35-01-24, evgeny.daragan@gmail.com (Россия, Тула, ТулГУ)
АВТОМАТИЗИРОВАННЫЙ АНАЛИЗ ПОСЛЕДОВАТЕЛЬНОГО КОДА ПРОГРАММЫ
Рассмотрен программный комплекс для автоматизированного анализа последовательного кода программы с помощью аппарата сетей Петри-Маркова. Описана структура и состав программного обеспечения, а также изложен алгоритм его функционирования комплекса.
Ключевые слова: параллельные вычисления, программный комплекс, сети Петри-Маркова.
Сети Петри-Маркова представляют собой графическое и математическое средство моделирования, применимое к системам самых различных типов. Они представляют собой перспективный инструмент описания и исследования мультипрограммных, асинхронных, распределенных, параллельных, недетерминированных и/или стохастических систем обработки информации. В качестве графического средства сети Петри-Маркова могут использоваться для наглядного представления моделируемой системы, подобно блок-схемам, структурным схемам и сетевым графикам. Вводимое в этих сетях понятие фишек позволяет моделировать динамику функционирования систем и параллельные процессы. В качестве математического средства аналитическое представление сети позволяет составлять уравнения состояния, алгебраические уравнения и другие математические соотношения, описывающие динамику систем. Сети Петри-Маркова могут с успехом использоваться и теоретиками, и практиками, а, следовательно, становятся эффективным средством их взаимного общения.
Данная математическая модель является адекватным механизмом описания свойств дискретных систем, которые включают асинхронные элементы и распределенные части. Известно, что математический аппарат сетей Петри-Маркова может применяться для описания параллелизма моделируемой системы, планирования распределения ресурса, координации разных целей и т. д. [1].
Разработка программного обеспечения [2], распараллеливание последовательного кода программы [3] и теория сетей Петри-Маркова являются дисциплинами различной природы, хотя инженерия программного обеспечения имеет тесные связи со своей базовой дисциплиной - информатикой. Исследования в области разработки программного обеспечения ориентированы на поиск решений, которые покрывают различные аспекты промышленного производства сложных больших программных систем. В
184
то время как исследования в области сетей Петри основываются на изучении приложений и свойств специальной математической модели. Однако. моделирование и анализ систем с помощью сетей Петри-Маркова может применяться на различных фазах процесса разработки программного обеспечения. Известной областью применения формализма классической теории сетей Петри является формальная спецификация и верификация требований и дизайна программной системы [4, 5, 6].
В данной работе представлено описание и структурная схема программного обеспечения, предназначенного для распараллеливания последовательного программного кода. Напомним, что одним из этапов адаптации алгоритма последовательной программы является построение схемы параллельного исполнения ее структурных единиц. В общем случае под этим понимается детерминированный функциональный блок конкретно взятого языка программирования. Программа описывает некоторое семейство алгоритмов. Выбор конкретного алгоритма при ее реализации определяется тем, как срабатывают условные операторы. Состав и порядок выполнения остальных операторов строго задается самой программой. Если в программе отсутствуют условные операторы, то программа изначально характеризуется, лишь одним вариантом исполнения алгоритма. В свою очередь, срабатывания условных операторов зависит исключительно от входных данных. В любой момент времени в однопроцессорной системе может обрабатываться лишь одна операция. В параллельных системах в каждый момент времени может выполняться целый комплекс операций, не зависящих друг от друга. Одной из существенных характеристик параллельно выполняющихся частей кода является то, что между ними отсутствует зависимость по данным. Это позволяет говорить о том, что существует как минимум несколько вариантов параллельного исполнения программы. Выбор необходимой схемы обуславливает появление в методике неких оценок, являющихся критериями для выбора оптимального варианта распараллеливания вычислений. Получение адекватных оценок времени выполнения программ или их выделенных фрагментов важно для эффективного распараллеливания [7], планирования вычислительных процессов и распределения ресурсов масштабируемых систем, а также для оптимизации программ.
Довольно часто временные характеристики программы исследуются на инструментальной системе, а затем делается прогноз динамики программы на целевой вычислительной платформе. Как правило, инструментальные средства для такого рода анализа представляют собой сложные программные комплексы, позволяющие выявлять узкие места в работе пользовательских программ и добиваться ускорения их выполнения за счет оптимизации, в том числе и путем структурных преобразований программ. В процессе распараллеливания вычислений необходимо достижение максимального использования имеющихся ресурсов. При этом общее время
выполнения исполняемого кода в параллельных обрабатывающих модулях необходимо минимизировать, учитывая возможности аппаратного обеспечения вычислительных ресурсов.
На рисунке представлена структурная схема программного обеспечения, разрабатываемого для решения задачи построениям оптимальной в рамках предъявляемых требований схемы распараллеливания последовательного кода программы.
Структура программного комплекса
Программный комплекс имеет модульную структуру. В число ключевых модулей системы входят:
1. Модуль синтаксического анализа последовательного кода программы;
2. Модуль анализа синтаксического дерева последовательной кода программы;
3. База данных программного комплекса, используемая в целях хранилища промежуточных вычислений, параметров и итоговых характеристик искомого кода;
4. Модуль формирования структуры и вычисления основных параметров искомой сети Петри-Маркова;
5. Модуль анализа структуры сети Петри- Маркова в соответствии с параметрами и целями проведения процесса распараллеливания;
6. Модуль визуализации сети Петри- Маркова.
Таким образом, модульная структура программного комплекса позволит с минимальными временными и материальными затратами вносить
изменения в алгоритм анализа, визуализации и получения статистической информации. Рассмотрим алгоритм функционирования программного комплекса:
1. Последовательный код искомой программы предоставляется в качестве входных данных в виде текстового файла. Предполагается, что код не имеет синтаксических ошибок, т.е. соблюдены все правила языка программирования;
2. Модуль синтаксического разбора производить анализ входных данных, выявляет синтаксические конструкции языка. Результатом проведенного анализа становиться синтаксическое дерево программы, сохраняет его структуру и содержание в БД комплекса. Кроме того, в число функциональных обязанностей модуля входит обеспечение процесса получения и сохранения максимально возможной информации (количество строк кода, исходный текст программы, информацию о типах данных и т.п.) о предоставляемом ему коде последовательной программы;
3. Модуль анализа синтаксического дерева программы на основании данных, сохраненных в БД комплекса, производит анализ искомого кода [8]. Целями анализа является получение необходимой информации о всех зависимостях, как информационных, так и логических между состояниями системы;
4. Модуль формирования структуры и вычисления основных параметров искомой сети Петри-Маркова на основании хранящейся в базе данных комплекса результатов выполнения предшествующих шагов алгоритма генерирует искомую сеть Петри-Маркова и вычисляет ее характеристики. Результаты выполнения сохраняются в БД;
5. Пользователь системы задает основные требования и характеристики ( в том числе количество процессоров, объем оперативной памяти, среднее время выполнения типизированных операций) системы, для которой производится распараллеливание последовательного кода программы;
6. Модуль анализа структуры сети Петри- Маркова в соответствии с требованиями и характеристиками, введенными на прошлом шаге выполнения представленного алгоритма, производить перестроение структуры сети Петри-Маркова, производит расчет характеристик сети, а также производит анализ полученной сети на предмет ее соответствия искомой сети по ключевым параметрам распараллеливания;
7. Модуль визуализации производимых операций, после каждого шага алгоритма функционирования комплекса производит отображение на экране результатов вычислений. Стоит отметить, что данный модуль является лишь средством визуализации сети Петри-Маркова. Главной особенностью его реализации является то, что для функционирования модуль необходима лишь структура сети, характеристики ее узлов переданные модулю в определенном формате, либо заданные пользователям в ручном режиме - режим построения сети Петри- Маркова.
Решение задачи распараллеливания выполнения блоков программы является сложной задачей. При ее разрешении необходимо учитывать как все возможные скрытые зависимости состояний по данным, так и выполнение операций в их логической последовательности. В связи с этим, построение схемы распараллеливания предполагает выполнения большого числа сложных вычислений, обработку существенного объема данных.
Программный комплекс, описываемый в данной работе позволяет получить схемы выполнения параллельных вычислений. Полученные из последовательного алгоритма, в совокупности с требованиями и условиями эксплуатации алгоритма на вычислительной системе, они предоставляют возможность получать близкие к оптимальным, для конкретной системы, временные и ресурсные характеристики рассматриваемого алгоритма.
Список литературы
1. Ларкин Е.В., Сабо Ю.И. Сети Петри-Маркова и отказоустойчивость авионики. Тула: Тул. гос. ун-т., 2004. 208 с.
2. CMMI for Development, Version 1.2 // http://www.sei.cmu.edu/ pub/documents/06.reports/pdf/06tr008.pdf
3. Ивутин А.Н., Дараган Е.И., Построение схемы распараллеливания последовательного алгоритма программы, Известия ТулГУ. Серия: Технические науки. Вып. 5. Тула: Изд. ТулГУ, 2012. С. 101-109.
4. Peterson J.L. Petri Net Theory and the Modelling of Systems // Prentice-Hall, Englewood Cliffs, New Jersey, (April 1981). 290 p.
5. Котов В. Е. Сети Петри // М.:Наука, 1984. 157 с.
6. Murata T. Petri Nets: Properties, Analysis and Applications // In Proc. of the IEEE. 1989. Vol. 77. N 4. P. 541-580.
7. Ивутин А.Н., Дараган Е.И. Применение сетей Петри и метода построения графа информационных зависимостей для решения задач верификации и распараллеливания вычислений. Известия ТулГУ. Серия: Технические науки. В. 5. Ч. 3. Тула: Изд. ТулГУ, 2011. С. 185-192.
8. Ивутин А.Н., Дараган Е.И., Построение схемы распараллеливания последовательного алгоритма программы, Известия ТулГУ. Серия: Технические науки. Вып. 5. Тула: Изд. ТулГУ, 2012. С. 101-109.
A.N. Ivutin, E.I. Daragan
THE AUTOMATED ANALYSIS OF THE CONSECUTIVE CODE OF THE PROGRAM
The program complex for the automated analysis of a serial code of the program by means of the device of networks of Petri-Markova is considered. The structure and software composition is described, and also the algorithm of its functioning of a complex is explained.
Keywords: parallel computings, program complex, Petri-Markova networks.
Получено 28.09.12