mdd:dsl_specific

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
mdd:dsl_specific [2014/06/01 17:38] – [Ссылки] jshemiakinamdd:dsl_specific [2026/08/29 07:59] (current) – external edit 127.0.0.1
Line 1: Line 1:
 +====== 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).
 +
 +===== Актуальность =====
 +
 +Подход к разработке, основанный на модельных технологиях, проще и быстрее традиционных подходов. Модельное описание понятно и людям и машинам и позволяет генерировать безошибочную реализацию напрямую из спецификации. Однако, пока что невозможно рассмотреть все аспекты спецификации предметно-ориентированного языка и определить их несовместимость или ошибки во вложенных спецификациях.
 +
 +===== Ошибки и плохие практики в спецификациях предметно-ориентированных языков =====
 +
 +  * **Синтаксические ошибки** - неправильный синтаксис, несоответствие типов. Легки для проверки, но большинство инструментов не покрывают все типы.
 +  * **Ошибки несовместимости** - ccылки на недопустимые понятия, вызванные неполным изменения модели
 +  * **Конфликты** между инвариантами мета-модели, между пре- и пост-условиями операций и статической семантикой
 +  * **Ошибки дефицита** - нехватка определенных свойств, неиспользуемые понятия, заглушки на неопределенные операции
 +  * **Расширенные статические ошибки** - могут быть обнаружены при статическом анализе, но не относятся к синтаксическим
 +  * **Платформо-зависимые ошибки** - использование особенностей платформ в платформо-независимой модели
 +  * **Логические ошибки и ошибки во время исполнения** - определяются тестированием, не статическими проверками
 +
 +===== Статический анализ и тестирование исполняемых спецификаций предметно-ориентированных языков =====
 +
 +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|http://www.cs.man.ac.uk/~laiq/modelsward2013draft.pdf]]