Трансляция описаний автоматов, представленных в формате Microsoft Visio, в исходный код на языке C
The open-source tool for translation ofdiscrete finite automata descriptions from Microsoft Visio format to source code in C languageis developed. There is a number of similar tools but some of them have poor errordiagnostics while translation, others have poor stability and quality of code they generate,and some of them arent open-source. The aim of this project is the development of toolwithout these drawbacks. The tool itself is written on C#language for .NET platform.
Translation of discrete finite automata descriptions from Microsoft Visio format to source code in C language.pdf Существует подход к созданию программ для систем логического управления с использованиемконечных автоматов, названный в [1] автоматным программированием(АП). В последнее время этот подход быстро развивается [1, 2]. С его помощью удобнореализуются различные системы логического и событийного управления [3]. АП основываетсяна использовании конечных автоматов (КА) для описания логики работыпрограмм. КА - это конечное множество состояний, в которых он может находиться,и переходов между этими состояниями. Подход основан на создании графов переходовКА (автоматных схем) [4] с последующей их трансляцией в исходный код программы.Автоматная схема является графическим отражением алгоритма в терминах состоянийи переходов. Поэтому при разработке программ на основе АП автоматная схемадокументирует алгоритм, что чрезвычайно важно для дальнейшего сопровожденияпрограммы. Главная особенность АП состоит в том, что программы, построенные наего основе, в отличие от программ, написанных традиционным путем, могут быть достаточнопросто формально верифицированы на основе метода Model Checking [5].Визуализация логики программы позволяет ускорить ее разработку и отладку, а такжеотделить алгоритмическую (логическую, управляющую) часть от остального кода.В АП, как и в теории автоматов, используются три понятия: входное воздействие,состояние и выходное воздействие. При этом состояния выделяются на этапе проектированияв явном виде. В АП, как и в других подходах к программированию, важнаорганизация взаимодействия средства трансляции с разработчиком автоматной программыи интеграция в системы автоматической сборки (настройка режимов трансляции,способ запуска, сообщения об ошибках трансляции).Граф переходов КА состоит из нескольких основных элементов: состояния, групповыесостояния, описание входных и выходных воздействий, дуги переходов. Состояниеимеет имя, список других автоматов для запуска, а также список выходных воздействийдля этого состояния. Событие - один из видов входных воздействий, которыеобеспечивают вызов автомата. Оно чаще всего используется в условиях переходов. Д у гаперехода соединяет два состояния или группы состояний. Дуга помечается условием,представленным в виде произвольного логического выражения, в котором, в частности,используются входные переменные, а также списком выходных воздействий,которые выполняются при переходе. Входная переменная - это входное воздействие,представленное переменной, значение которой может быть использовано в условииперехода.В настоящее время известны инструментальные средства для поддержки АП, такие,как Visio2Switch [6], MetaAuto [7], UniMod [8]. В этих средствах есть как свои достоинства,так и недостатки - диагностика ошибок в графе переходов недостаточна,надежность и качество сгенерированного кода низки (MetaAuto), интеграция в автоматизированныепроцессы сборки приложений невозможна или чрезвычайно сложна(Visio2Switch).Целью работы являлось созданиеинструментального средства для трансляции описанийграфов переходов автоматов, представленных в формате MS Visio, в исходныйкод на языке C и другие формы представления данных (язык XML). Основная задачаработы - устранение недостатков, перечисленных выше. В качестве языка реализациивыбран язык Microsoft C # для платформы .NET, так как он обеспечивает хорошуюподдержку технологии COM, используемой при взаимодействии с MS Visio. ИнтерфейсыCOM-объекта MS Visio позволяют открывать любые файлы формата MS Visioи получать список всех элементов автоматной схемы, описанной в файле. Эта схемасостоит из описаний свойств автомата, его элементов и графа переходов. Специализированныхшаблонов для описания схемы в стандартной библиотеке MS Visio нет,поэтому одной из задач работы являлась разработка файла с такими шаблонами.В процессе работы транслятора схема, содержащаяся в исходном документе MSVisio, преобразуется в исходный код для дальнейшего использования в автоматномпроекте, а также сохраняется в формате XML. Первым этапом процесса трансляцииявляется чтение данных из исходного документа MS Visio. Для реализации этого этапабыл применен подход, основанный на непосредственном взаимодействии с редакторомMS Visio при помощи COM-технологии. Следующая стадия - генерация выходныхданных (программного кода на языке С). Она происходит с использованием файлов-шаблонов кода из выбираемой пользователем директории. В этих файлах содержатсяспециальные метки, которые в процессе трансляции заменяются на соответствующиеучастки сгенерированного кода. Такой подход позволяет любому пользователю настроитьстиль генерируемых файлов на свой вкус, не прикладывая особых усилий.В работе также было уделено внимание пользовательскому интерфейсу транслятора,так как он является инструментом, который обязан быть удобным. Программаможет быть запущена в двух режимах. В первом из них трансляция производитсянеинтерактивно, и вся информация считывается из командной строки. Этот режимудобен при использовании в средствах автоматической сборки. Во втором режимеинтерфейсом программы является диалоговое окно, в котором пользователь можетзадавать параметры, используя элементы графического интерфейса .NET. Если программазапущена без аргументов командной строки, то она открывается в режимеграфического интерфейса.При разработке проекта также было уделено внимание системе обработки ошибокпроектирования автоматной схемы, обнаруженных транслятором в графе переходов.Ошибкой считается некий найденный дефект, без исправления которого разработчикомнельзя продолжить формальную трансляцию. По остальным дефектам выводятсяпредупреждения, так как они скорее всего являются следствиями высокоуровневыхлогических ошибок в исходной схеме. Во время трансляции все ошибки и предупреждениявыводятся в консоль транслятора.В результате работы создано инструментальное средство для трансляции графовпереходов автоматов, представленных в формате Microsoft Visio, в исходный код наязыке С. Средство обеспечивает сохранение исходных данных в XML-файл, диагностикуошибок в исходных данных, интеграцию в автоматические процессы сборки приложений(например, make-файлы, MS Visual Studio build system).
Ключевые слова
Авторы
Столяров Леонид Владимирович | Лицей «Вторая школа», г. Москва | ученик 8 класса | lnd1212@rambler.ru |
Дединский Илья Рудольфович | Лицей «Вторая школа», г. Москва | преподаватель программирования | ded@concord.ru |
Шалыто Анатолий Абрамович | Санкт-Петербургский государственный университет информационных технологий, механики и оптики | доктор технических наук, профессор | shalyto@mail.ifmo.ru |
Всего: 3
Ссылки
Шалыто А. А. Switch-технология. Алгоритмизация и программирование задач логического управления. СПб.: Наука, 1998. 628 с.
Шалыто А. А. Логическое управление. Методы аппаратной и программной реализации. СПб.: Наука, 2000. 780 с.
Шалыто А. А., Туккель Н. И. Реализация автоматов при программировании событийных систем / / Программист. 2004. №2. С. 74-80.
Поликарпова Н. И., Шалыто А. А. Автоматное программирование. СПб.: Питер, 2009. 176 с.
Гуров В. С., Шалыто А. А., Яминов Б. Р. Технология верификации автоматных программ без их трансформации во входной язык верификатора / / Материалы Междунар. науч.- технич. конф. «Многопроцессорные вычислительные и управляющие системы (МВУС- 2007)». Таганрог: НИИ МВС, 2007. Т. 1. С. 198-203.
http://is.ifmo.ru/progeny/visio2switch - Головешин А. Конвертор Visio2Switch. 2002.
http://is.ifmo.ru/projects/metaauto - Канжелев С. Ю., Шалыто А. А. Преобразование графов переходов, представленных в формате MS Visio, в исходные коды программ для различных языков программирования (инструментальное средство MetaAuto). 2005.
Гуров В. С. Технология проектирования и разработки объектно-ориентированных программ с явным выделением состояний (метод, инструментальное средство, верификация): Дис. ... канд. техн. наук. СПбГУ ИТМО, 2008.