Диссертация (1145120), страница 9
Текст из файла (страница 9)
Это делается с помощью двух основных конструкций: <transitionarea> и <transition string area>. Первая группа обобщает конструкции, которые не допускают следования за ними других конструкций потока управления (последнее возможно, но в рамках более сложных правил, как показано44ниже с конструкцией условного ветвления — <decision area>). Напротив, законструкциями из второй группы могут следовать конструкции из этой жегруппы (см. рекурсию в правиле для <transition string area>), а также конструкции из <transition area>.<transition area> ::= [<transition string area>] is followed by{<state area>|<nextstate area>|<decision area>|<stop symbol>|<merge area>|<out-connector area>|<return area>|<transition option area> }<transition string area> ::= {<task area>|<output area>|<set area>|<reset area>|<export area>|<create request area>|<procedure call area>|<remote procedure call area>}[is followed by <transition string area>]...И далее, например, условное ветвление в упрощённом виде определяетсятак:<decision area> ::= <decision symbol> contains <question>is followed by {{{<graphical answer part>}+ } set }<decision symbol>::=<graphical answer> ::=[<answer>] | ([<answer>])<graphical answer part> ::=<flow line symbol> is associated with <graphical answer>is followed by <transition area>Оператор is connected to является бинарным оператором и обозначает, чтолевый аргумент соединён с правым аргументом (аргументами).
Например,45ниже определена ситуация, когда сигнальный маршрут соединяет два процесса. При этом данный оператор не налагает отношения следования, какоператор is followed by.<signal route symbol> is connected to { <process area> <process area> } setОписание языка в грамматике происходит, так сказать, параллельно — дляSDL/PR и SDL/GR. Например, определение системы (пример системы былприведён на рис. 1.5) на SDL/PR в сокращённом виде выглядит так:<textual system definition> ::={<package reference clause>}*{system <system name> <end>{ <block definition>}+endsystem [<system name>] <end> }А в SDL/GR система описывается так:<system diagram> ::=[<package reference area>]is associated with{<frame symbol> contains{<system heading><block interaction area>}}<frame symbol> ::=Можно заметить почти зеркальное соответствие текстовой и графическойграмматик, более того, они объединяются в тех местах, где текстовая спецификация вставляется в графическую в неизменном виде — например, определение сигналов выглядит одинаково и в SDL/PR, и в SDL/GR.Наличие детального и формального описания обоих вариантов языка является удобным при разработке программных средств: упрощается процедураспецификации требований к этим средствам, касающихся вопросов интеграции текстового и графического редакторов.
Наличие двух способов работыочень удобно на практике, но возникает задача сохранения целостности информации. Кроме того, часто возникает пожелание параллельной работы в46обоих режимах. Простота проектирования и реализации этой функциональности в данном случае объясняется наличием простого и однозначного соответствия между конструкциями SDL/PR и SDL/GR, и при этом текстовый вариант является не форматом хранения (служебный синтаксис), а обычнымязыком программирования. Для DSM-подхода этот опыт очень важен, т. к.
оннаглядно демонстрирует возможность фактически «бесшовной» связи междудиаграммами и кодом на Java, C# и т. д. — эта связь возможна, если удастсятак же строго и однозначно задать соответствие между языком программирования и визуальным языком в рамках создаваемого DSM-решения. Более того, в средах бизнес-моделирования типа ОРГ-Мастер, где наряду с графическими средствами допускается возможность таблично-текстовой работы смоделью, проекции должны быть описаны столь же строго.Качество формального описания языка SDL, во многом, объясняется тем,что он имеет солидный возраст — почти 20 лет отделяют выход версииSDL92 от первой версии языка.
За это время он был, фактически, отшлифован. Разработчики DSM-языков и решений не имеют столько времени, поэтому на практике для спецификации DSM-языков используют более простые средства.Метамоделирование позволяет задать визуальный язык, наглядно, в графическом виде, акцентируясь на абстрактном синтаксисе. Как правило, здесьиспользуют диаграммы классов UML, однако имеются и специальные стандарты — Ecore [87], MOF [364] и др. (подробнее об этом см.[49]).В качестве примера кратко рассмотрим стандарт Ecore, широко используемый в различных модельно-ориентированных средствах. Его упрощённаяметамодель (то есть, метаметамодель) представлена на рис. 1.8. Каждыйэлемент нового языка, для которого строится метамодель с помощью Ecore,является экземпляром класса «EClass». Этот класс характеризуется именем, атакже списком атрибутов (класс «EAttribute»), каждый из которых имеет тип(класс «EDataType»).47Рис.
1.8. Сокращённая Ecore-метамодельКроме того, классы в создаваемой новой метамодели могут содержать ссылки на классы-предки (связь «eSuperTypes»), а также иметь ассоциации друг сдругом. Средством для задания ассоциаций в Ecore является класс«EReference», представляющий конец ассоциации. Конец агрегируется классом (агрегирование «eReference») и имеет следующие атрибуты: имя (name),признак того, является ли этот конец агрегированием (булевский атрибутcontainment), верхнюю и нижнюю границы множественности (атрибуты«lowerBound» и «upperBound»). Конец ассоциации также имеет ссылку«eOpposite» на другой (парный) конец (ассоциация имеет два конца — по одному с каждой стороны соединяемых классов). Эта ссылка не нулевая лишь втом случае, когда у задаваемой ассоциации существует направление от этойроли к парной.
В противном случае (т. е. задаётся однонаправленная ассоциация, и направления от данной роли в ней нет) для доступа к связываемомуассоциацией классу используется только ссылка «eReferenceType» (даже вслучае однонаправленной ассоциации нужно знать, какие классы соединяются ассоциацией). Ecore-метамодели хранятся в XMI-формате [433]18.Метамоделирование является общепринятым способом формальной спецификации языка для генерации по этому описанию соответствующего графического редактора. В некоторых случаях с помощью метамоделей задаётся18Данный формат основан на XML и создан комитетом OMG для того, чтобы разныеUML-модели могли обмениваться UML-моделями. Большинство современных UMLсредств поддерживают экспорт/импорт моделей в этом формате.48также и конкретный синтаксис — см., например, DSM-платформу MicrosoftModeling SDK [213].
Наконец, метамоделирование является общепринятымсредством для формализации визуальных языков в стандартах — в качествепримера можно указать стандарты UML [426] и BPMN [192]. Однако метамодели реальных стандартов, например, UML, оказываются очень сложнымии предназначаются, главным образом, для разработчиков инструментальныхсредств, подобно тому как формальные грамматики языков программирования адресуются разработчикам компиляторов. Обычные пользователи этихязыков используют многочисленные книги и учебные курсы, фокусирующиеся на нотациях и рассматривающие лишь некоторые элементы данных метамоделей.Однако при разработке DSM-решений метамодели активно используются.Во-первых, они оказываются достаточно компактными и удобными для обсуждений. Во-вторых, они служат средством фиксации визуального языка(так называемая официальная спецификация). В-третьих, эти метамоделислужат основой для реализации графических редакторов и других средствпрограммной поддержки языков: многие DSM-платформы позволяют автоматически генерировать код таких средств по данным метамоделям.
Но дажеесли нет генерационных возможностей, такие метамодели служат схемой длярепозитория, где хранятся различные модели, а также основой для соответствующего программного интерфейса к этому репозиторию.Зачем нужно точно специфицировать предметно-ориентированный язык?Для контроля работы пользователя в редакторе, чтобы получалиськорректные спецификации для их дальнейшей машинной обработки.
Приэтом важно проверять корректность и указывать на ошибки не после того,как спецификация создана (как делается при компиляции программ наязыках программирования), а непосредственно в процессе моделирования, непозволяя пользователю делать неправильных шагов: добавлять на диаграммуграфические символы, отсутствующие в нотации (для редакторов на основе49Microsoft Visio это возможно — речь идёт о фигурах, которые можносоздавать из стандартного меню пакета), соединять между собой фигуры,которые не могут быть соединены, и т.д. Поэтому точная метамодель,задающая те и только те варианты сочетаний конструкций, которыедопустимы с точки зрения языка, является основой для созданиясоответствующей программной поддержки — например, часто по такойметамоделиавтоматическигенерируетсяпрограммныйинтерфейс,посредством которого происходит работа с репозиторием модели и контрольдействий пользователя.