В современном мире существуют несколько классов задач, для которых традиционно применяются технологии визуального моделирования. Например, визуальные языки программирования могут применяться как аналог текстовых предметно-ориентированных языков, особенно если конечные пользователи не знакомы с программированием. В качестве примеров таких визуальных языков можно привести языки, применяемые в образовательных целях, например, языки программирования роботов сред TRIK Studio [9] и Lego Robolab [6]. Кроме этого, визуальные языки могут применяться и в сферах профессиональной разработки. Например, языки UML [4] для описания диаграмм достаточно часто [5] используются при разработке архитектуры программных систем.
Разработка среды визуального моделирования представляет собой трудоемкий процесс. Помимо непосредственно языка, среда обычно включает в себя такие компоненты, как редактор, генератор из визуальной модели в другой язык, а также может иметь дополнительные компоненты, специфические для предметной области применения. Для упрощения разработки такого рода систем для разных предметных областей могут применяться платформы предметно-ориентированного моделирования (DSM, domain-specific modeling), которые могут иметь универсальный редактор, генераторы, а также инструменты для описания визуальных языков, благодаря которым компоненты одной и той же DSM-платформы могут быть использованы в разных предметных областях.
Визуальные языки часто описывают с помощью других визуальных языков. Модель описания визуального языка называют метамоделью, а набор методов такого описания называют метамоделированием. Существуют несколько способов метамоделирования, например, классическое двухуровневое метамоделирование, применяемое в UML. При этом существуют исследования, указывающие на недостатки этого под-хода [3]. Другая разновидность — глубокое метамоделирование — было создано как вариант решения этих недостатков. Однако, в силу слабой распространенности глубокого метамоделирования остается открытым вопрос о применимости этого подхода к реальный проектам.
На кафедре системного программирования группой преподавателей и студентов разрабатывается REAL.NET[17] — платформа предметно-ориентированного моделирования, имеющая своей целью, помимо про-чего, реализовать и исследовать различные подходы к метамоделированию, в том числе и к глубокому метамоделированию. На данный момент платформа имеет микросервисную архитектуру, несколько различных редакторов: графовый веб-редактор, редактор для управления умным домом, два редактора в виде настольных приложений — простой крос-сплатформенный и более сложный для ОС Windows.
Система описания визуальных языков в REAL.NETвыстроена таким образом, чтобы обеспечить возможность использования и тестирования разных подходов к метамоделированию. Именно поэтому REAL.NETможет быть использован для исследования глубокого мета-моделирования и его сравнения с другими подходами.
1. Постановка задачи
Целью данной работы является реализация в REAL.NETтехнологии глубокого метамоделирования. Для достижения данной цели были поставлены следующие задачи:
1. Провести исследование и реализовать поддержку логики глубокого метамоделирования с использованием имеющихся технологий метамоделирования в REAL.NET.
2. Разработать графический интерфейс веб-редактора визуального моделирования, обеспечивающего поддержку специфических требований работы с глубоким метамоделированием.
3. Провести апробацию поддержки глубокого метамоделирования с использованием предметно-ориентированных языков визуального моделирования.
В рамках подготовки выпускной квалификационной работы были достигнуты следующие результаты.
1. Изучены подходы к метамоделированию (двухуровневое, глубокое), проведен обзор сред глубокого метамоделирования (Melanee, metaDepth, DPF), разработана модель глубокого метамоделирования на базе REAL.NET.
2. Реализован веб-редактор глубокого метамоделирования:
• реализован API для клиент-серверного взаимодействия репозитория REAL.NETи редактора;
• реализован графический интерфейс редактора, поддерживающий глубокое инстанцирование, редактирование метамоделей нижних уровней; уровня, мощности, атрибутов и слотов элемента.
3. Проведена апробация поддержки глубокого метамоделирования:
• c помощью двухуровневого визуального языка программирования дронов AirSim;
• с помощью языков глубокого метамоделирования: языка для демонстрации глубокого инстанцирования и языка описания подпрограмм управления роботами.
С исходным кодом проекта можно ознакомиться на странице организации REAL.NET[13] и репозиториях [14], [15], [16].