Программная система анализа диаграммных языков

УДК 681.31

ПРОГРАММНАЯ СИСТЕМА АНАЛИЗА ДИАГРАММНЫХ ЯЗЫКОВ

А.Н. Афанасьев, к.т.н.; Р.Ф. Гайнулин

Предложена клиент-серверная архитектура системы для анализа корректности графических потоков работ при проектировании сложных автоматизированных систем. Система представляет собой многослойную структуру. Презентационный слой является инструментальным средством создания диаграмм на визуальном языке (например, UML, IDEF, eEPC), входящем в состав программного комплекса методологии проектирования (RUP, ARIS и др.), или любым из редакторов, который имеет возможность расширяться плагинами. Слой логики предназначен для приема и передачи данных от плагина и наоборот. При передаче отдается XML-описание диаграммы, при приеме -список ошибок в формате XML. Доступ к серверу осуществляется по публичному API-интерфейсу. Слой обработки данных содержит универсальный анализатор диаграммных языков потоков проектных работ, в основу функционирования которого положен аппарат авторских графически автоматных RV-грамматик, обеспечивающих обнаружение и нейтрализацию ошибок за один проход анализа диаграммы. Контролируются синтаксические и семантические ошибки в анализируемых графических спецификациях потоков работ. Преимуществами анализатора являются линейное время анализа, полнота контроля, удобство визуализации ошибок. Разобран пример применения грамматики для анализа UML-диаграмм. Система реализована в среде Python на базе сервера Торнадо. Работа выполнена на кафедре «Вычислительная техника» Ульяновского государственного технического университета.

Ключевые слова: диаграммные языки, автоматная RV-грамматика, UML-диаграммы.

PROGRAM SYSTEM FOR VISUAL LANGUAGES ANALYSIS Afanasev A.N., Ph.D.; Gainulin R.F. (UlanovskState Technical University, a.afanasev@ulstu.ru, r.gainullin@gmail.com);

Sharov O.G., Ph.D.

Аbstract. The article describes client-server architecture for analysis of consistency of graphic works in the design process of complex automated systems. The system is represented by multilayer structure. Presentation layer is a tool fo creation of diagrams in a visual language (UML, IDEF, eEPC etc) included in design technique software package (RUP, ARIS etc), or any other editor, which can be expanded with plug-ins. Logic layer is designed for data exchange with plug-in. Description of diagram is transferred during sending procedure in XML format. When error list is received in XML format. The server is accessed through public API-interface. Data processing layer contains multipurpose visual language analyzer of the project works, this analyzer operates on the basis of graphic finite state, which discover and eliminate errors within one pass of diagram analysis. Syntax and semantic errors are controlled in analyzed graphic specifications of the work flow. Analyzer has advantage in the form of linear analysis time, full control and visual error presentation. The article shows grammar example of UML-diagram analysis. The system is implemented in Python environment at Tornado server. The work was made in Computing Technics Department, Ulyanovsk State Technical University.

Keywords: diagram language, automate RV-grammar, UML-diagram.

В проектировании сложных автоматизированных систем активно используется графическое представление информации на базе диаграммных языков САПР. Существует большое количество коммерческих и свободно распространяемых программных средств, которые позволяют работать с диаграммными языками, такими как UML, IDEF, EPC, SDL, DFD и т.д., однако их большая часть не ориентирована на коллективную разработку, содержит слабые средства по расширению нотаций языка и зачастую не имеет средств анализа.

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

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

Таблица 1

Сравнительный анализ программных продуктов

Показатель BPWin, ERWin Rational Suite ARIS

Контроль синтаксиса Да Нет Да

модели

Визуализация модели Средняя Средняя Хорошая

Стандарты ¡ЭБРО, ГОЕР3, ЭРЭ UML иМЬ, ЕРС, ЕИМ, ЭРЭ -частично

Динамическое Нет Нет Да

моделирование

Оптимизация Нет Нет Да

модели

Функционально- Плохой Средний Хороший

стоимостным анализ

Генерация програм- Да Да Нет

много кода

Стоимость Средняя Средняя Средняя

Распространенность Широкая Слабая Слабая

Доступность Широкая Слабая Слабая

Библиотека Да Нет Да

элементов ОБП

Групповая работа Да Да Да

Таблица построена на основе анализа сайтов Rational Software Architect [1], AllFusion ERwin Data Modeler [2], ARIS Platform [3]. Очевидно, что системы ориентированы на использование 2-3 языков, имеют ограниченные средства контроля и анализа.

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

Общие характеристики системы. Инструментарий позволяет выполнять следующие основные функции для пользователя:

- создание диаграмм графических языков;

- добавление новых нотаций диаграммно-графических языков;

- анализ построенных диаграмм по предварительно загруженным в систему описаниям языка и алгоритмам анализа;

- добавление новых алгоритмов анализа с помощью плагинов;

- добавление синтаксических и семантических правил графических языков;

- создание взаимосвязи между построенными проектировщиками диаграммами; мультидоступ к БД построенных диаграмм.

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

Архитектура системы

На рисунке 1 приведена архитектура системы, содержащая презентационный слой (клиент), слой рендеринга интерфейса (клиент), API для работы с анализатором (сервер), слой бизнес-логики (сервер).

При необходимости пользователь может разместить все элементы системы на одной машине и пользоваться ею как обычным приложением.

Презентационный слой. Уровень презентационной логики реализуется различными системами проектирования, например, Rational Rose или BPWin. Для использования системы анализа диаграммных языков прикладные системы проектирования должны предоставлять

- доступ к построенной диаграмме и ее внутреннему содержанию (для анализа необходима информация о всех элементах диаграммы и связях между ними);

- возможность вывода информации об ошибке в консоль в человеко-читаемом виде либо непосредственно на диаграмму (например, подсвечивая элемент красным цветом).

Большинство современных сред разработки позволяет использовать расширения. При разработке системы с множеством различных front-end-компонентов стоит вопрос о создании протокола взаимодействия между элементами системы. Для решения этой проблемы предлагается написать промежуточный слой между сервером и клиентом

- слой рендеринга интерфейса.

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

- преобразование диаграммы в XML/JSON-представление;

- передача XML/JSON-представления на сервер;

- получение списка ошибок от анализатора и передача его в презентационный слой.

API для работы с анализатором. Анализатор

- сервис, работающий по принципам REST [4]. Одним из преимуществ RESTful-сервиса является предоставление данных в удобном для пользователя формате. Технология REST использует базовые принципы передачи данных по http, это обеспечивает легкость реализации взаимодействия с сервисом и позволяет подключать всевозможные системы проектирования, написанные на различных языках программирования, без больших временных затрат.

Сервер выполняет функции проверки на корректность описания диаграммы; преобразования xml-описания во внутреннее представление, понятное RV-анализатору; запуска анализа входной диаграммы; вывода списка ошибок.

Слой бизнес-логики. Диаграммы анализируются с использованием автоматных RV-грамматик

Клиентская часть Серверная часть

Internet/Lan —N .у API для работы анализатора

Презентационный слой RVA-анализатор

Слой рендеринга интерфейса V Генератор отчетов

Рис. 1

Рис. 2

[5]. Схема работы анализатора представлена на рисунке 2.

На этапе инициализации возможны два варианта загрузки диаграммы. При первом анализатору известно, какую диаграмму он анализирует. Из библиотеки грамматик выбирается нужная, и разбор происходит по ней. При втором анализатор получает только диаграмму и по первым 3-5 элементам выбирает нужную грамматику.

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

Режим восстановления - это особое состояние автомата, в котором разрешается проблема обработки ошибочного входного элемента. Происходит восстановление состояния анализатора по методу продолжателей [6]. Данный режим позволяет обнаружить не только первую ошибку в диаграмме, но и по возможности все ошибки, допущенные разработчиком. Запись об ошибке производится в момент перехода в состояние восстановления. Указываются место возникновения ошибки и диагностическая информация о ней.

На третьем этапе формируется отчет об ошибках, обнаруженных в диаграмме. Если список пуст, возвращается сообщение о завершении анализа без ошибок. В противном случае формируется отчет со списком всех ошибок.

ЯУ-грамматика

ЯУ-грамматикой языка Ь (О) называется упорядоченная пятерка непустых множеств О=(У, Е,

Е, Я, г0), где I - {Г/. /= 1, Ь } - вспомогательный алфавит; Е={а, t= 1,Т } - терминальный алфавит

графического языка; I = { а1. /= 1 ,Т } - квазитерминальный алфавит; Е={гъ /= 0,1 } - схема грамматики О; г0еЯ - аксиома ЯУ-грамматики. Продукция имеет вид

где Wv(yь ... , уи) - и-арное отношение, определяющее вид операции над внутренней памятью в зависимости от уе{0, 1, 2, 3}; ^^ - оператор модификации, определенным образом изменяющий вид операции над памятью, причем де{0, 1, 2}; гтеЯ - имя комплекса продукции-преемника.

Построение RV-грамматики происходит в две фазы: синтез и анализ.

Синтез RV-грамматики включает следующие этапы.

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

2. Строится матрица допустимых паросочета-ний для квазитерминального алфавита.

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

4. По матрице допустимых паросочетаний строится граф RV-грамматики, вершинам которого поставлены в соответствие имена комплексов правил, а дугам - квазитермы и операции над внутренней памятью. RУ-грамматика может быть представлена не только в виде графов, но и в табличной и аналитической формах.

Таблица 2

Терминальный и квазитерминальный алфавиты языка UML, диаграммы активности

Анализ осуществляется в два этапа:

- устраняются недетерминированность и неопределенность;

- производится минимизация RV-грамматики (результат представлен в табл. 3).

Следует отметить, что разработаны грамматики для пяти видов диаграмм: Активность, Последовательность, Варианты использования, Классы и Пакеты.

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

Таблица 3

Табличная форма RV-грамматики для языка диаграммы активности после минимизации

№ Комп- Квази- Комплекс- RV-отношение

лекс терм преемник

1 Го label r3 0

2 r1 label r3 0

3 r2 labelP r3 W2

4 labelw r3 W2

5 labelR r3 W2

6 labelL r3 W

7 r3 A r1 0

8 P r1 W

9 W r2 W

10 W r2 W

11 R r1 W

12 L r2 W

13 L r2 W

14 Ak rk 0

Таким образом, в статье рассмотрена архитектура системы анализа диаграммных языков. Система предусматривает возможность расширения на произвольное множество языков и подключение различных средств проектирования. По данной архитектуре реализован анализатор для среды моделирования и проектирования WIQA [7] (разработка кафедры «Вычислительная техника» УлГТУ).

Литература

1. URL: www-01.ibm.com/software/rational/ products/swar-chitect (дата обращения: 02.08.2011).

2. URL: www.erwin.ru (дата обращения: 02.08.2011).

3. URL: www.softwareag.com/corporate/products/aris_plat-form (дата обращения: 02.08.2011).

4. Fielding R.T. Architectural Styles and the Design of Network-based Software Architectures: dissertation doctor of philosophy, University of California: Irvine, 2000, 162 p.

5. Шаров О.Г., Афанасьев А.Н. Синтаксически-ориентированная реализация графических языков на основе автоматных графических грамматик // Программирование. 2005. № 5. С. 56-66.

6. Шаров О.Г., Афанасьев А.Н. Нейтрализация синтаксических ошибок в графических языках // Программирование, 2008. №> 1. С. 61-67.

7. Соснин П.И. Концептуальное моделирование компьютеризованных систем. Ульяновск: УлГТУ, 2008. 198 с.

References

1. Rational Software Architect, available at: www-01.ibm. com/software/rational/ products/swarchitect (accessed 02.08.2011).

2. AllFusion ERwin Data Modeler, available at: www.er-win.ru (accessed: 02.08.2011).

3. ARIS platform, available at: www.softwareag.com/corpo-rate/products/aris_platform (accessed: 02.08.2011).

4. Fielding R.T., Dissertation Ph.D., University of California, Irvine, 2000, 162 p.

5. Sharov O.G., Afanasev A.N., Programmirovanie, 2005, no. 5, pp. 56-66.

6. Sharov O.G., Afanasev A.N., Programmirovanie, 2008, no. 1, pp. 61-67.

7. Sosnin P.I., Ulyanovsk, Ulyanovsky Gos. Tehnich. Univ., 2008, 198 p.

Алфавит Примечание

термов терминальный квазитермов

( ) Состояние деятельности A

1 Переход label

labelP Связь, исходящая из логического условия

labelW Связь, исходящая из объединения взаимоисключающих ветвей

labelR Связь, исходящая из распараллеливания

labelL Связь, исходящая из слияния

Разделение R

Слияние L

1

• Начало Ac

Конец Ak

О Символ решения P Условное разветвление

Символ соединения W Символ соединения