260 likes | 565 Views
Предметно-ориентированный язык программирования ( domain-specific programming language, DSL ) . DSL.
E N D
Предметно-ориентированный язык программирования(domain-specific programming language, DSL)
DSL • Предметно-ориентированный язык программирования - язык программирования, специально разработанный для решения определённого круга задач, в отличие от языков программирования общего назначения, таких, как Си, или языков моделирования общего назначения наподобие UML и др.
DSL • Языки программирования предметной области, дополненные технологиями метапрограммирования, являются эффективным средством автоматизации разработки программного обеспечения и в настоящий момент находят широкое применение в области информационных технологий.
Примеры DSL • Адаптивные объектные модели — это модели, которые строятся специально для определённой предметной области на объектно-ориентированных языках общего назначения. • Файлы XML, используемые в современных проектах для конфигураций программных каркасов.
Примеры DSL • Электронные документы с формальным описанием логики работы приложения.
Классификация • Предметно-ориентированные языки разделяют на внешние и внутренние. • Внешние — это языки, написанные на языке, отличном от основного языка программирования. Примерами такого типа могут служить конфигурационные XML-файлы. • Внутренние языки, напротив, реализованы на языке программирования общего назначения. В качестве примера можно назвать адаптивные объектные модели.
Процесс создания предметно-ориентированного языка • Определение абстрактного синтаксиса. • Определение конкретного синтаксиса. • Определение правил трансформации.
Абстрактный синтаксис • Абстрактный синтаксис описывает понятия, используемые в языке, в виде, пригодном для машинной обработки. Существует два способа задания абстрактного синтаксиса — в виде метамодели и в виде КС-грамматики.
Конкретный синтаксис • Конкретный синтаксис — это представление понятий абстрактного синтаксиса, которыми может манипулировать пользователь. Представление может быть текстовым, графическим или симбиозом двух первых.
Правила трансформации • Правила трансформаций — это правила, по которым абстрактное представление транслируется в исполнимое. Различают два типа трансформаций — горизонтальные и вертикальные. Примером горизонтальной трансформации может служить автоматический рефакторинг, предоставляемый современными средствами разработки. Примером вертикальной трансформации может служить генерация байт-кода Java из исходного кода программ на Java.
ЯП поддерживающие DSL • Lisp — первый язык программирования общего назначения с встроенными возможностями разработки DSL-ей (макросистемой). • Nemerle — современный мульти-парадигменныйязык со встроенной поддержкой разработки DSL-ей (макросистемой).
Eclipse Modeling Project – новый высокоуровневый проект Eclipse. • Ядро проекта, EMF (Eclipse Modeling Framework) существовало с самого рождения платформы Eclipse. • Eclipse Modeling Project внес вклад в развитие Model Driven Software Development – технологииразработки ПО с помощью моделирования. • Amalgamation Eclipse – начало DSL-ориентированной среды разработки, хотя он разрабатывался долгое время, ему все еще далеко до того уровня, когда «mainstream»-разработчики смогут его использовать, в частности, из-за недостатка документации. • В Eclipse так же разрабатываются средства для работы с моделями, такие как Model Development Tools для поддержки стандартных моделей, инструменты для преобразования модели в модель, генерации моделей, преобразования модели в текст.
Схематическое изображение Eclipse Modeling Project
EMF • Ядром DSL является его абстрактный синтаксис, который используется при разработке почти любого артефакта , модели, трансформации. Обычно первым элементом DSL является его абстрактный синтаксис, в качестве него служит Eclipse • Modeling Framework (EMF). • Основной моделью EMF является EMF Ecore, которая является метамоделью для определения нашего DSL. • На более высоких уровнях можно уточнить семантику и структуру нашего DSL с помощью ObjectConstraintLanguage (OCL), а так же добавить поддержку транзакций, запросов и валидаций.
Базовые возможности EMF • EMF позволяет производить такие операции с моделями: • - Транзакции моделей, которые позволяют нескольким пользователям одновременно смотреть/редактировать модели. • - Проверка моделей, которая используется для поддержания целостности модели с помощью встроенных и пользовательских ограничений (заданных в Java или OCL)
- Запрос данных о модели (с помощью SQL-подобного синтаксиса или OCL) • - Поиск модели, который может проводиться как на основе регулярных выражений, так и на OCL, являетсяграфическиминструментом (стандартный поиск Eclipse) • - Сравнение моделей, используется для слияния моделей при групповой разработке.
Представления синтаксиса • Абстрактный синтаксис DSL может быть представлен в графическом и текстовом виде. Этим занимаются два проекта Eclipse – GMF и TMF • GMF – призван обеспечить разработчика графическими инструментами для описания модели, а так же превращать графическое изображение модели в абстрактный синтаксис DSL и обратно • TMF – позволяет использовать для представления моделей удобные для разработчика текстовые языки представления объектов (XML, SOAP, JSON, итд)
Превращение моделей Eclipse • Eclipse modeling project также позволяет переводить свои модели в текст и другие модели. Такими превращениями занимаются отдельные проекты Eclipse. • Превращение моделей являются неотъемлемой частью инструментария DSL
Model-to-Model Transformation Project • Используя абстрактный синтаксис, можно задать некоторые превращения моделей и использовать их для создания новых моделей. • Для этих целей Eclipse предоставляет QVT-OML – язык отображения операций, соответствующий стандарту Object Management Group
Model-to-Text Transformation (M2T) Project • Для превращениямодели в текст EMF использует Java Emitter Templates (JET), • так же набирает популярность Xpand • Используя эти технологии, можно задать шаблоны, по которым данные модели будут преобразованы в текст.
Model Development Tools Project • Данный проект используется для работы со стандартными, уже существующими моделями, заданных стандартом. Для работы с ними в MDT имеется большое количество компонентов.
XML Schema (XSD) • Является важным компонентом MDT, используется при импорте готовых моделей в EMF, что повышает совместимость с уже существующими решениями. EMF полностью совместим с XML и при сериализации создает правильный XML-документ, который смогут понять и другие средства разработки.
UML2 • Данный компонент является реализацией метамодели UML2 от OMG. • Хотя этот компонент фокусируется на реализации метамодели, он предоставляет расширенную версию EMF-редактора. • Редактирование же UML2 диаграм является частью функциональности UML2 Tools
Object Constraint Language (OCL) • OCL используется для задания моделям специфических ограничений. • OCL может быть использован в пользовательских шаблонах, чтобы управлять поведением времени исполнения, определять модель аудита, метрики и служить в качестве основы преобразования и выражения в языках.