А.Л. Стуров СПОСОБ РЕАЛИЗАЦИИ СРЕДЫ ДЛЯ СОЗДАНИЯ ПРИЛОЖЕНИЙ, РАБОТАЮЩИХ НА ОСНОВЕ СЕТЕЙ ПЕТРИ г. Пенза, Российский государственный университет инновационных технологий и предпринимательства (Пензенский филиал) Введение Сети Петри являются инструментом моделирования и проектирования дискретных систем и параллельных процессов. Области и применение сетей Петри разнообразны: параллельное программирование, системное программирование, технология тестирования, экономика и управление, игровая индустрия (ведение диалогов, анимирование персонажей, «структура способностей» персонажа и искусственного интеллекта). Возможно несколько путей практического применения сетей Петри при проектировании и анализе систем. В одном из подходов сети Петри рассматриваются как вспомогательный инструмент анализа. Здесь для построения системы используются общепринятые методы проектирования, затем построенная система моделируется сетью Петри и построенная модель анализируется. В другом подходе весь процесс проектирования и определения характеристик проводится в терминах сетей Петри. В этом случае задача заключается в преобразовании представления сети Петри в реальную информационную систему. Основным недостатком существующих программных средств, представления сетей Пети является отсутствие возможности построения графа достижимости. Как правило, сети Петри используются для моделирования и анализа процессов, в данной работе исследованы возможности создания приложения предназначенного для проектирования процессов и систем, работа которых может быть описана с помощью аппарата сетей Петри. Цели данного проекта: создание приложения для наглядного представления и анализа сетей Петри; анализ возможностей разработки среды для создания при- ложений, работающих на основе сетей Петри. В соответствии с поставленной целью решаются следующие задачи: 1. Разработка приложения – эмулятора сети Петри - для создания и исследования сетей Петри с возможностью построения матрицы достижимости. 2. Разработка архитектуры среды для проектирования приложе- ний, использующих для реализации своей функциональности аппарат сетей Петри. 3. Разработка системы тестирования знаний с применением пред- ложенной среды проектирования. 4. Внедрение разработанных программных средств в учебный процесс. Таким образом, объектом исследования являются информационные системы, функционирование которых может быть описано в терминах сетей Петри, а предметом разработки - программное обеспечение, предназначенное для проектирования таких систем и приложений. Данная работа относится к прикладным исследованиям. Эмулятор сети Петри Первый шаг к построению модели дискретной системы – абстрагирование от конкретных физических и функциональных особенностей ее компонентов. Компоненты системы и их действия представляются абстрактными событиями. Событие может произойти (реализоваться) один раз, повториться многократно, порождая конкретные действия (реализация события), или не произойти ни разу. Совокупность действий, возникающих как реализация событий при функционировании дискретной системы, образует процесс, порождаемый этой системой. Основными свойствами сети Петри являются: ограниченность — число меток в любой позиции сети не может превысить некоторого значения K; безопасность — частный случай ограниченности, K=1; достижимость — возможность перехода сети из одного заданного состояния (характеризуемого распределением меток) в другое; В основе исследования перечисленных свойств лежит анализ достижимости. Основным преимуществом использования сетей Петри является их безопасность и мощный инструмент моделирования процессов. Безопасность сетей заключается в том, что мы только осуществляем выполнение необходимых нам переходов, а распределение маркировок осуществляется автоматически, защищая сеть от ошибок программиста при работе с моделью. Для создания и анализа сетей Петри было разработано приложение Graph_Petri. Данное приложение позволяет визуально построить сеть Петри и проанализировать работу полученной сети. Для создания сети используется интерактивное построение графического изображения сети с помощью инструментов: позиция, переход, входящий переход, выходящий переход. Сцепление позиций и переходов осу- ществляется автоматически при выборе начальной и конечной позиции, а также типа перехода. Для анализа построенной сети используется либо пошаговое выполнение переходов, либо построение графа достижимости, в котором представляются все возможные варианты развития сети. Это позволяет произвести полный и тщательный анализ поведения и безопасности системы. Безопасной считается сеть, всегда имеющая конечное состояние. Маркировка Переход Входящая дуга Выходящая дуга Рис. 1 Рабочее окно приложения Graph_Petri меню Инструменты Граф достижимости Позиция Основные пункты меню Файл: Новая сеть – очищает рабочее окно эмулятора; Сохранить проект – cохраняет проект с именем, указанным в текстовом поле; Открыть проект – открывает проект с именем, указанным в текстовом поле; Convert to Lua – преобразовывает созданную сеть в Lua-скрипт с необходимым набором функций для сети; Выход – закрывает приложение. Для построения сети Петри используются Инструменты: Позиция – установка элемента позиция в текущую позицию курсора. Начальное значение фишки позиции равно 0. Вертикальный переход – установка перехода в виде вертикального блока. Горизонтальный переход – установка перехода в виде горизонтального блока. Входящая линия – соединение позиции и перехода. Выходящая линия – соединение перехода и позиции. Маркировка – увеличение маркировки выбранной позиции на 1. Кнопка Граф достижимости служит для вызова окна с графом до- стижимости построенной сети. При необходимости проследить переходы до той или иной маркировки, достаточно выбрать маркировку и в левом верхнем угле появятся необходимые переходы. Для экспорта полученной сети используется конвертирование построенной на экране сети в Lua-скрипт. Этот язык был выбран после анализа всех возможных вариантов реализации сценария, поставленного в соответствие сети. Lua является интерпретируемым языком программирования, который предоставляет широкие возможности для объектно- ориентированной и функциональной разработки. Lua создавался как мощ- ный и простой язык, обладающий всеми необходимыми выразительными средствами. Библиотека функций языка Lua написана на языке С. В настоящее время используется в различных проектах, где требуется встроить достаточно быстрый и нетрудный в освоении скриптовый язык программирования — например, в разработке игр, где Lua часто используется между игровым «движком» и данными для написания сценариев поведе- ния/взаимодействия объектов. На сегодняшний день Lua – один из наиболее простых и апробированных подобных языков, его функциональности вполне хватает для реализации поставленной задачи. Таким образом, Lua-скрипт представляет собой исполняемую программу, которая может быть выполнена приложениями, основанными на возможности реализации сценариев, представленных в виде Lua-скрипта. Подготовленный Lua-скрипт может быть вызван из приложения, для которого была спроектирована сеть и далее в нём производятся операции, связанные с поведением сети. Т.к. Lua является интерпретируемым языком, то мы можем вносить изменений в концепцию работы сети Петри проецируемой нами системы под свои нужды, что расширяет возможности модификации и добавления функциональности в созданную сеть без нарушения её целостности. Эмулятор разработан в среде Borland C Builder и предназначен для обучения основным принципам построения и анализа сетей Петри в учебном процессе. Среда для разработки систем на основе сети Петри Среда для разработки приложений должна удовлетворять следующим требованиям: 1. обеспечить минимальную стоимость разработки за счёт использования библиотек с открытым исходным кодом; 2. обеспечить наивысшую работоспособность и минимальное время разработки; 3. должно включать в себя современные средства разработки приложений для обеспечения приятного внешнего вида, гибкости и расширяемости приложения. Для проектирования систем, работа которых может быть описана с помощью аппарата сетей Петри, предложена среда, которая позволяет: 1. описать поведение проектируемой системы в среде Редактора поведения; 2. преобразовать описание в Проект, состоящий из сценария и данных. Сценарий представляет собой сеть Петри, представленную в виде Lua-скрипта, и набор необходимых для работы сети функций; 3. исполнить полученный сценарий с помощью Визуализатора. Редактор Транслятор описания поведения проектируемой системы Сценарий Lua Визуализаторисполнитель Данные Проект Рис. 2. Структура среды Редактор – создаёт предметную область проектируемой системы, объявляет благоприятные исходы и варианты завершения системы. Работа в среде редактора заключается в создании текстовых описаний ситуаций. Это могут быть, например, команды для исполнителя в игре - “идти”, “повернуть направо” и т. д. или содержание тестовых вопросов и правильных и неправильных ответов, рекомендации по продолжению теста в обучающей или тестирующей программе. Транслятор – переводит созданную нами предметную область в защищенный текстовый формат (используя простой алгоритм хеширования данных), а также созданный сценарий в Lua-скрипт. Хеширование созданного в Редакторе теста позволяет скрыть данные, описывающие предметную область и тем самым защитить их от изменения несанкционированного доступа (что важно, например, при проведении тестирования). Исполнитель – загружает данные и скрипт, дехеширует полученные данные, а затем выполняет работу системы в соответствии со сценарием, содержащимся в в Lua-скрипте. Исполнитель может быть написан с использованием специально предназначенных для работы со скриптами библиотек. Такие библиотеки содержат классы и функции для работы с ними. Например, библиотека Lua 5.1.4 для С++. Предложенная архитектура позволит создавать приложение и производить его отладку в терминах предметной области. Например, преподавателю, создающему тест, нет необходимости знать принцип создания и анализа соответствующей сети Петри, разработчик игры должен только правильно описать сценарий. В соответствии с описанной структурой было реализовано приложение, представляющее собой обучающе-тестирующую систему. Адаптивная обучающая система на основе сети Петри Система состоит из двух приложений: 1. Smart Test Editor – редактор для создания теста или последовательно- сти излагаемого материала на основе сценария, 2. Play Test – исполнитель для реализации тестовой последовательности или изложения обучающего курса и оценки результатов. Структура системы: Сценарий в виде сети Петри на языке Lua Smart Test Editor Play Test Модуль управления Данные (порции изучаемого материала, вопросы ответы, баллы, комментарии) Ogre MyGUI Основные этапы создания и исполнения теста представлены ниже. Т.к. приложение позволяем помимо создания и прохождения теста, также строить и анализировать сети Петри, то употребление терминов позиции сетей Петри – это вопросы, а исходы – это ответы. Окно приложения Smart_Test (создание и редактирование вопросов и ответов): Варианты выбора Номер благоприятного исхода Количество баллов, начисляемых при правильном ответе Окно приложения Smart_Test (создание сценария прохождения теста): Окно приложения Smart_Test (создание результатов работы теста): Диапазон значений Варианты результата работы теста Окно приложения Play_Test (рабочий вариант кадра): Кадр теста Варианты выбора Приложения Smart_Test и Play_Test написаны при помощи библиотеки Qt. Qt - это кросс-платформенный инструментарий разработки ПО (на языке программирования C++), который позволяет запускать написанное с его помощью ПО в большинстве современных операционных систем путём простой компиляции программы для каждой ОС без изменения исходного кода. В приложении Smart_Test используется технология Drag&Drop, которая обеспечивает простоту в создании и редактировании сценария для выбранной предметной области, а также все тесты и проекты сохраняются в СУБД. Заключение Результатом проделанной работы являются: 1. Программный продукт – эмулятор сетей Петри, который позволяет построить графическую модель сети Петри, продемонстрировать работу сети и выполнить ее анализ с построением графа достижимости. 2. Предложена архитектура программного средства для разработки информационных систем. Функционирующих на основе аппарата сетей Петри. 3. На основе предложенной архитектуры создан прототип системы автоматизированной генерации тестов и их исполнения. Разработанные предложения используются в учебном процессе при изучении дисциплины “Основы вычислительных процессов и построения алгоритмов”. Список литературы. 1. Синтез цифровых автоматов: Учебное пособие / Н.Г. Захаров, В.Н. Рогов. 2. http://www.gamedev.ru/articles/?id=70112 3. http://doc.crossplatform.ru/qt/4.3.2/index.html