Диссертация (Методы и средства разработки графических предметно-ориентированных языков), страница 5
Описание файла
Файл "Диссертация" внутри архива находится в папке "Методы и средства разработки графических предметно-ориентированных языков". PDF-файл из архива "Методы и средства разработки графических предметно-ориентированных языков", который расположен в категории "". Всё это находится в предмете "технические науки" из Аспирантура и докторантура, которые можно найти в файловом архиве СПбГУ. Не смотря на прямую связь этого архива с СПбГУ, его также можно найти и в других разделах. , а ещё этот архив представляет собой кандидатскую диссертацию, поэтому ещё представлен в разделе всех диссертаций на соискание учёной степени кандидата технических наук.
Просмотр PDF-файла онлайн
Текст 5 страницы из PDF
Обычно используется какой-либо текстовый языкна основе XML2 для записи свойств элементов модели. Существует стандартный язык XMI (Xml Metadata Intercharge, [62]3 ), стандартизованный группойOMG [60], который позволяет стандартным (и следовательно, переносимым)способом сериализовать визуальные модели на UML и подобных языках. Этотстандарт позволяет вместе с диаграммой на визуальном языке хранить и описаниеэтого языка, что даёт возможность обмениваться моделями между инструментами, поддерживающими XMI, даже если они не поддерживают тот язык, накотором нарисована диаграмма.
XMI не стандартизует аспекты, связанные сконкретным синтаксисом языка, таким образом, модель может передаватьсямежду инструментами, а диаграммы по этой модели в каждом инструменте,скорее всего, придётся строить заново.23Extensible Markup Language. Стандарт 1.0, URL: http://www.w3.org/TR/REC-xml/ (дата обращения 21.08.2014г.).также XMI стандартизован ISO как стандарт ISO/IEC 19503:200523Следует отметить, что такое разделение синтаксиса на виды применимо и ктекстовым языкам.
Абстрактный синтаксис характеризует структуру программыи определяет абстрактное синтаксическое дерево, которое строит компилятор, безпривязки к конкретным лексемам. Конкретный синтаксис — это запись лексемязыка, например, лексема начала блока операторов в языке может выглядеть как«{», а может как «begin». Абстрактное синтаксическое дерево в том и в другомслучае выглядит одинаково, но вид программы будет разный. Особый служебныйсинтаксис текстовым языкам, как правило, не нужен, программы на них хранятсятак же, как и изображаются, обычным текстом.Семантика языка определяет значение его конструкций, то есть, в случаевизуальных языков программирования, то, как будет интерпретироваться визуальная модель или какой код будет по ней сгенерирован.
Способов задания семантики много, наиболее часто встречаются денотационная семантика (заданиесемантики языковых конструкций через отображение их в некоторые объектыс уже определённой семантикой) и операционная семантика (определение формальных преобразований над конструкциями языка, которые и определяют процесс вычислений). На практике используются разные способы задания семантикивизуальных языков, их рассмотрение выходит за рамки данной работы.Прагматика описывает взаимодействие языка и его пользователя.
Это понятие никак не формализуется, и обычно прагматика языка определяется простоисходя из здравого смысла его автора. Тем не менее, существуют и довольнообширные научные исследования в области удобства использования визуальныхязыков, например, [127].1.3.2. Уровни моделированияАбстрактный синтаксис языка — наиболее важный подвид синтаксиса с точкизрения различных инструментов, поэтому он должен быть описан максимальноформально. Для его описания обычно используется метамоделирование — техника, при которой синтаксис визуального языка описывается с помощью некоторогодругого, как правило, визуального языка, называемого метаязыком.
Модельна метаязыке, специфицирующая синтаксис языка, называется метамодельюэтого языка. Связь между моделями и метамоделями проиллюстрирована нарисунке 1.1.24Рис. 1.1: Метауровни визуальных языков.Предметная область — это то, что мы моделируем, те объекты или явленияреального мира, с которыми будет работать создаваемое программное обеспечение. Предметная область просто существует и сама по себе никак не описывается,любое её описание её упрощает, а значит, будет её моделью. В нашем примеремы хотим создать программу — каталог фильмов, предметная область для такойпрограммы будет включать в себя фильмы и всё, что с ними связано — актёров,режиссёра, кассовые сборы, где и когда фильм снимался и т.д. и т.п.
Большая частьэтой информации для наших целей не нужна.25Модель — это некое упрощение предметной области, нужное для выполнениятам некоторых полезных действий. Предметная область, как правило, обладаетбесконечным многообразием, и работать со всеми её свойствами невозможно.В нашем примере про каталог фильмов нас не интересуют, например, всекинотеатры, где показывали фильм, нам интересен только тот ограниченныйобъём информации, с которым будет работать создаваемая программа.
Длясоздания модели уже используется некий язык. Если это неформальное описаниепредметной области, в качестве языка может выступать естественный язык, еслиэто некая диаграмма, она будет рисоваться на некоем визуальном языке. Длянашего примера был использован некий сильно упрощённый вариант языкадиаграмм классов UML.Метамодель — это описание визуального языка, то есть множества всехсинтаксически корректных диаграмм на этом языке, с помощью некоего другоговизуального языка. Этот язык называется метаязыком и описывает множествовсех элементов моделируемого языка и возможные связи между ними. Каждыйэлемент диаграммы на визуальном языке является экземпляром некоторой сущности, описанной в метамодели на метаязыке.
В нашем примере для моделированияпредметной области был использован очень простой язык с сущностями «класс»и «атрибут», и одной связью, которая может только связывать два класса и большеникакой информации не содержит. Атрибут «Название» на диаграмме классовявляется экземпляром сущности «Атрибут» в метамодели.Метаметамодель — это метамодель метаязыка, то есть визуальная модель,которая задаёт множество допустимых метамоделей. Имея такую формализациюметаязыка, можно создавать инструменты, которые позволяют разрабатыватьметамодели для произвольных визуальных языков.
Интересно, что термин «метаметаязык» как язык, который используется для создания метаметамодели, нетребуется — метаязык сам по себе является визуальным языком и поэтому,если он достаточно выразителен, может быть использован для создания своейсобственной метамодели. Такой подход, в частности, применён в стандартеUML — сначала вводится метаязык в терминах самого себя (при этом авторамстандарта пришлось приложить некоторые усилия, чтобы избежать круговыхзависимостей в определении), затем с его помощью описывается метамодельUML. В нашем примере метаязык очень прост, состоит из сущностей, называемых26в метаметамодели «узлами», и связей. Связи здесь более сложные, чем в языке,потому что мы хотим использовать множественность для задания дополнительных ограничений на модели.
Например, у класса может быть сколько угодноатрибутов, но у атрибута может быть только один класс.Проводя аналогию с текстовыми языками, модель можно сопоставить программе на текстовом языке, метамодель — описанию грамматики языка (например, с помощью формы Бэкуса-Наура), метаметамодель — описанию синтаксиса формализма, используемого для описания грамматики (например, описаниесинтаксиса форм Бэкуса-Наура, которое тоже можно выполнить с помощьюформ Бэкуса-Наура).
Заметим, что метаязыков может быть много, ведь синтаксистекстовых языков может быть описан с помощью различных формальных систем, например, с помощью различных языков описания синтаксиса генераторовсинтаксических анализаторов, используемых для разработки компилятора этогоязыка. С визуальными языками ситуация аналогична.1.4. Предметно-ориентированное моделирование1.4.1. Понятие предметно-ориентированного моделированияФормализмы для задания синтаксиса визуальных языков позволяют эффективно создавать новые визуальные языки.
Это оказывается полезно не толькомеждународным группам, занимающимся стандартизацией широко распространённых языков визуального моделирования, но и небольшим группам разработчиков, создающим визуальные языки для своих проектов. Оказалось, чтоиногда создать специальный язык и решить на нём поставленную задачу можнопроще и эффективнее, чем решать задачу на языке общего назначения. Особенноэто верно в том случае, если имеется набор похожих задач, которые можнорешать с помощью одного и того же языка. Такой подход получил названиепредметно-ориентированное моделирование (Domain-Specific Modeling, DSM).Основной принцип данного подхода состоит в том, что выбирается достаточноузкая предметная область или даже одна задача, конкретно для неё создаётсясвой язык (предметно-ориентированный язык, или Domain-Specific Language,DSL), и дальше задачи решаются уже на нём. Поскольку предметная область узка,то средства инструментальной поддержки созданного языка могут использовать27знания о предметной области, что позволяет, в частности, добиться полнойкодогенерации.
Кроме того, разработчики, использующие язык, работают втерминах, максимально приближенных к предметной области, так что программыполучаются простыми и понятными даже людям, далёким от программирования.Требуются некоторые начальные инвестиции в анализ предметной области иразработку инструментальных средств, но в результате они могут окупитьсязначительным повышением эффективности труда разработчиков, реализующихс помощью этих инструментальных средств прикладные программы.Получаемые благодаря применению этого принципа преимущества по сравнению с использованием языков общего назначения таковы.• Программирование ведётся в терминах предметной области, вся рутиннаяработа выполняется инструментальными средствами, что значительно повышает эффективность труда разработчиков.• Узость выбранной предметной области позволяет обеспечить полную генерацию кода по описаниям на предметно-ориентированном языке.
Генераторобладает знаниями о предметной области и использует их, чтобы преодолеть семантический разрыв — сама программа остаётся простой, генератортоже может быть устроен довольно просто, но всё вместе позволяет сгенерировать любую нужную программу.• Наличие полной кодогенерации позволяет разработчикам вообще не работать с кодом. Основным артефактом, с которым ведётся работа, являются модели на предметно-ориентированном языке, разработчики могутдаже не догадываться о том, что их программы генерируются в код натекстовом языке.
Иногда предметно-ориентированное решение устроенотак, что генерация в текстовый язык и не требуется (например, моделиинтерпретируются). При этом отладка, рефакторинг версионный контрольи прочая подобная деятельность ведётся на уровне моделей.• Полная кодогенерация позволяет избежать ошибок кодирования, единственным источником синтаксических ошибок в сгенерированном коде могутбыть ошибки в генераторе. При этом исправления и улучшения генераторабудут автоматически применимы ко всем программам, его использующим28— это касается как синтаксических ошибок, так и некоторой части семантических ошибок, связанных с неверным пониманием предметной области разработчиками DSM-решения.
Ошибки в результирующий код могутпривнести пользователи DSM-решения, создавая некорректные модели, нопоскольку инструментальные средства «знают» про предметную область,возможно создание верификаторов, проверяющих и семантические ошибкив моделях прямо в процессе моделирования.Естественным образом получается разделение труда между специалистами,создающими инструментальные средства, и специалистами, их использующими.Первая группа должна состоять из весьма квалифицированных специалистов,но весьма небольшого их числа, поскольку создать инструментальные средстватребуется лишь единожды. Вторая группа может состоять из людей, дажевообще не владеющих программированием, и их обычно оказывается гораздобольше, чем разработчиков инструментальных средств. Поскольку предметноориентированный язык работает в терминах, близких к предметной области,программирование на нём могут осуществлять даже конечные пользователи.Всё это, по ряду оценок (см., например, [23, 35, 107]) увеличивает эффективность труда разработчиков от трёх до десяти раз, поэтому предметноориентированное моделирование — интересная область для исследований.Существуютширокораспространённыетекстовыепредметно-ориентированные языки, успех которых подтверждает сделанные в этом разделезаявления.