Диссертация (Методы и средства разработки графических предметно-ориентированных языков), страница 11
Описание файла
Файл "Диссертация" внутри архива находится в папке "Методы и средства разработки графических предметно-ориентированных языков". PDF-файл из архива "Методы и средства разработки графических предметно-ориентированных языков", который расположен в категории "". Всё это находится в предмете "технические науки" из Аспирантура и докторантура, которые можно найти в файловом архиве СПбГУ. Не смотря на прямую связь этого архива с СПбГУ, его также можно найти и в других разделах. , а ещё этот архив представляет собой кандидатскую диссертацию, поэтому ещё представлен в разделе всех диссертаций на соискание учёной степени кандидата технических наук.
Просмотр PDF-файла онлайн
Текст 11 страницы из PDF
Особенно это важно в случае больших языков или семейств языков сосложной метамоделью, таких как UML, и поэтому первый пример, которыйнеобходимо рассмотреть в этом разделе — языковая инфраструктура языка UML,пожалуй, самого известного на данный момент визуального языка программирования.Стандарт UML версии 2.4.1 разбит на две части: UML Infrastructure [92] иUML Superstructure [93]. Язык задаётся посредством метамодели, метамодельорганизована в соответствии с принципами модульности, расширяемости и переиспользуемости. За счёт этого на базе метамодели UML оказалось возможнымопределить ещё несколько стандартов, например, язык проектирования крупныхсистем SysML [61] (не только программных или аппаратных), язык моделирования метаданных для различных видов хранилищ данных CWM [58].
Метаязык,на котором описывается метамодель UML, описан в терминах самого метаязыкаи является частью стандарта UML (авторам стандарта пришлось приложитьнекоторые усилия, чтобы избежать циклических ссылок). Используется четырёхуровневая иерархия метаописаний, где на нулевом уровне находятся данныевремени выполнения, на первом уровне — модель, созданная пользователем,на втором уровне — метамодель UML, на третьем уровне — метаметамодельметаязыка, на котором задан UML (MOF [59]). Пример уровней метаописанийприведён на рисунке 2.1, взятом из [92].Интересно то, что некоторые сущности языка UML существуют одновременнона нескольких уровнях метаописаний, например, классификаторы (абстракцияспособа классификации экземпляров) являются, с одной стороны, базой дляопределения понятия «класс» диаграммы классов (на уровне метамодели UML),с другой стороны, они же служат базой для определения классов и отношенийв самом метаязыке (в пакете Core::Constructs).
Кроме того, в стандарте UMLопределена только та часть метаязыка MOF, которая нужна для описания метамодели UML, сам MOF определяется отдельным стандартом, так что формальноневерно то, что UML определён с помощью MOF. Всё это делает метамодель UMLвесьма запутанной, сложной для изучения и для переиспользования при созданиипредметно-ориентированных языков.53Рис.
2.1: Иерархия метаописаний UML, из [92].Поэтому язык UML включает в свой стандарт механизм легковесного расширения, называемый профилями. Профили позволяют расширить существующиеметаклассы из метамодели UML, чтобы адаптировать язык под нужды конкретнойпредметной области. Достигается это путём определения стереотипов — «ограниченных» метаклассов, которые могут быть применены к уже существующимметаклассам для того, чтобы дополнить их новыми свойствами или поменять ихизображение. Например, метакласс «класс» может быть расширен стереотипом«часы», имеющим свойства «количество кнопок», «тип прошивки» и специальную иконку для отображения.
Генераторы, умеющие работать с определённымпрофилем, могут, во-первых, различать метаклассы с разными стереотипами, вовторых, использовать их дополнительные атрибуты. Благодаря этому можно довольно простым и стандартным образом описывать предметно-ориентированныеязыки на базе UML. Однако же, профили позволяют только расширить язык UML,и сложность языка при использовании профилей всё равно сохранится. Вместе стем, профили не позволяют определять новые сущности в метамодели. Профили,тем не менее, активно используются для генерации полного исходного кода, в томчисле, в рамках подхода MDA [66].В работе Аткинсона и Кюне [4] приводится критика подхода, применённогов разработке UML, основанная на том, что четырёхуровневая архитектура ме-54тауровней не делает разницы между отношениями «является лингвистическимэкземпляром» и «является онтологическим экземпляром».
Например, объектявляется экземпляром класса онтологически (то есть по смыслу), но формальнодиаграммы объектов и диаграммы классов не связаны. UML использует однои то же отношение instanceOf как для обозначения того, что некоторая модельявляется экземпляром метамодели (лингвистическая связь), так и сугубо науровне модели, для обозначения того, что объект является экземпляром класса.Авторы предлагают явно разделить эти два варианта отношения instanceOf,и ввести кроме лингвистической понятие онтологической метамодели.
Такимобразом, фактически, получится обобщение механизма профилей, позволяющееболее адекватно выражать отношения предметной области. В качестве примераавторы приводят зоологическую классификацию животного мира: класс «Колли»является наследником класса «Собака», при этом онтологическим экземпляромкласса «Порода». Класс «Собака» является онтологическим экземпляром класса«Вид». И «Порода», и «Вид» — онтологические экземпляры класса «Биологический ранг».Идеи Кюне и Аткинсона были реализованы в системе MetaDepth [103, 104].Платформа позволяет описывать только текстовые предметно-ориентированныеязыки, что не позволяет нам рассматривать её в обзоре вместе с другими DSMплатформами, но упоминания здесь она всё же заслуживает.
Система позиционируется как платформа для «глубокого метамоделирования» и предназначенапрежде всего для создания метамоделей предметно-ориентированных языков сиспользованием как лингвистического, так и онтологического инстанциирования.Описываемый язык может иметь произвольное количество метауровней (непросто «метаязык-метамодель-модель», как в UML, а серия моделей, каждая изкоторых может быть моделью, описанной на языке более высокого метауровня,и одновременно метамоделью для более низкого метауровня). Такой подходпозволяет естественно выражать отношения «тип-экземпляр», возникающие,например, между диаграммами классов и диаграммами объектов в UML. Метамодель задаётся в текстовой форме, имеются средства для описания конкретногосинтаксиса языков, ограничений и трансформаций моделей, все они учитываютто, что иерархия метамоделей «глубокая».
Авторы приводят примеры нескольких55предметно-ориентированных языков, построенных по такому принципу, имеетсяработающий прототип системы в свободном доступе.2.3. Создание визуальных языков в существующихDSM-платформахОбзор существующих аналогов построен по следующему принципу: длякаждой DSM-платформы приводится её краткое описание, затем описываются еёвозможности по созданию визуальных языков и инструментальных средств дляних в соответствии со следующими критериями:• Тип метаязыка (свой, сущность-связь, какой-либо из стандартных);• Наличие метаредактора, его тип (текстовый или визуальный);• Наличие и тип средств задания конкретного синтаксиса;• Наличие средств задания ограничений на модели;• Наличие средств задания правил генерации;• Наличие средств задания рефакторингов и трансформаций моделей;• Наличие средств задания семантики интерпретации визуального языка;• Наличие средств обеспечения совместной эволюции модели и метамодели.Также для каждой платформы приводится описание предполагаемой этойплатформой методики создания визуального языка.2.3.1.
Платформа MetaEdit+Наиболее зрелой и известной на данный момент DSM-платформой, на нашвзгляд, является среда MetaEdit+, разрабатываемая финской компанией MetaCase,на базе научного проекта University of Jyvaskyla. Среда MetaEdit, из которойразвилась среда MetaEdit+, создавалась с 1988 года, впоследствии была существенно переработана, и сейчас она (точнее, MetaEdit+) — успешный коммерческий проект, имеющий десятки внедрений и активно публикующийся по своим56результатам [36, 42, 89, 90].
Впрочем, исходный код системы закрыт, а лицензиядовольно дорогая, что делает затруднительным переиспользование результатовпроекта для дальнейших исследований другими научными группами.Система состоит из двух компонент: MetaEdit+ Workbench и MetaEdit+Modeler. Первая предназначена для создания предметно-ориентированных визуальных языков, вторая — для их использования. В качестве метаязыка системаиспользует собственный язык GOPPRR.
Его название образовано первыми буквами основных понятий, в нём используемых: граф (graph), объект (object), свойство(property), порт (port), отношение (relation), роль (role). Граф служит для представления модели (или диаграммы), в графе могут содержаться объекты, отношенияи роли. Объект — это сущность предметной области (вершина графа), отношениесвязывает два или несколько объектов, при этом отношения соединяются собъектами с помощью ролей. Например, отношение наследования может иметьроли «предок» и «потомок», роль «предок» рисуется в виде линии с треугольником на конце, роль «потомок» в виде простой линии, а само отношение (этоможет показаться неинтуитивным) не визуализируется.
Роли могут соединятьсяс самими объектами, а могут соединяться с портами — специальными областямивнутри объектов, которые различаются генераторами и нужны, если одна и та жероль может иметь разные значения в зависимости от того, к какой части объектаподключена. Так, например, удобно моделировать различные приборы: объект«Усилитель» может иметь аналоговый вход, цифровой вход и аналоговый выход.Свойства — это некоторые характеристики (вида «имя»-»значение»), которымимогут обладать все остальные понятия. Кроме этого, в метаязыке присутствуютпонятия Binding (связывает отношения, роли и объекты), Object set (множествообъектов, играющее одну роль, например, в Binding-е), Inheritance (отношениенаследования между метатипами), Decomposition (возможность задать раскрытиекакого-либо объекта в подграф, например, класс, раскрывающийся в диаграммуавтоматов) и Explosion (возможность связывать объекты, отношения или роли сдругими графами).Предлагаемая этой DSM-платформой методика создания языка такова: сначала определяются основные концепции языка (сущности и связи), затем задаютсяограничения, определяются графические символы для концепций, затем определяются правила генерации.