Table of Contents

Static analysis and testing of executable DSL specification

Qinan Lai, Andy Carpenter

Введение

В статье определены 7 категорий ошибок, возможных в спецификациях предметно-ориентированных языков. Также предложены методы статической проверки и тестирования спецификаций предметно-ориентированных языков для устранения этих ошибок. В качестве примера рассматривается WS-BPEL (Web Services Business Process Execution Language) в модельных спецификациях, построенных по стандартам fUML (foundational UML) и ALF (Action Language for foundational UML).

Актуальность

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

Ошибки и плохие практики в спецификациях предметно-ориентированных языков

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

WS-BPEL — это предметно-ориентированный язык, направленный на построение веб-сервисов. Синтаксис определен XML, а семантика — естественным языком.

Фреймворк использует синтаксис ALF и комментарии OCL. Мета-модель (Ecore из Eclipse BPEL Designer) является ALF программой. Ограничения OCL определены как комментарии. Поведенческая семантика определена как активности и операции. Фреймворк спецификаций разработан с помощью Xtext. Так как спецификация определена при помощи ALF, ошибки могут быть обнаружены с помощью Xtext валидаторов. Также, абстрактный синтаксис, статическая и поведенческая семантика определены в одном модельном пространстве, что способствует легкому обнаружению синтаксических ошибок и ошибок несовместимости (аналогично проверке правильности ALF программы).

Xtext валидатор автоматически обнаруживает ошибки, которые возможно обнаружить при помощи парсера. Отдельные правила валидатора направлены на проверку грамматики. Ошибки в OCL проверяются вызовом OCL валидатора из плагина EMF. Расширенные статические ошибки и платформо-зависимые ошибки обнаруживаются аналогично. Все статические проверки требуют десятки-сотни строчек несложного кода и существенно уменьшают количество ошибок в спецификации.

Большинство логических ошибок и ошибок во время исполнения сложны к обнаружению статическим анализом. Конфликтные ошибки не могут быть исправлены правилами XText валидаторов. Один из путей решения — перевести спецификацию в другую область и обратно. Фреймворк может обнаружить только простейшие ошибки дефицита.

Ссылки

http://www.cs.man.ac.uk/~laiq/modelsward2013draft.pdf