1 of 23

Инструментальные средства DSM

2 of 23

Подходы к созданию DSM-тула

  • написать свой тул с нуля
  • написать свой тул, основанный на существующих фреймворках
  • создать метамодель, сгенерировать по ней скелет тула над каким-то фреймворком, дописать код
  • создать метамодель, сгенерировать по ней весь тул целиком над неким фреймворком
  • создать метамодель, сконфигурировать ею имеющиеся тулы
  • интегрированное окружение для метамоделирования и моделирования

3 of 23

Краткая история metaCASE-тулов

  • 1970е-1980е: PDL, PSL/PSA, SEM, SREM
    • Текстовые тулы, разрешавшие модифицировать язык моделирования
  • 1990е: Virtual Software Factory, GraphTalk, DOME, MetaEdit, TBK/ToolBuilder
    • Генерация редактора либо интерпретация метамодели

4 of 23

Требования (для метамоделирования)

  • декларативное определение сущностей и связей между ними, их свойств
  • определение основных правил соединения объектов и связей
  • определение изображений элементов разных типов (графически, декларативно или в коде)
  • способность генератора получить доступ к модели
  • возможность по этим спецификациям получить тул для моделирования

5 of 23

Требования (для моделирования)

  • сохранять и загружать модель с диска
  • создавать новые экземпляры в моделях, выбирая их тип и заполняя свойства
  • соединять объекты связями
  • располагать объекты и связи между ними на диаграммах
  • править свойства существующих элементов
  • удалять элементы

6 of 23

Требования на метаязык

  • Явное понятие графа
  • Объекты как значения свойств
  • Ограничения на значение свойств
  • Явное понятие роли для связей
  • N-арные связи
  • Переиспользование объектов в модели
  • Подграфы
  • Явное понятие порта
  • Язык для задания ограничений

7 of 23

Требования на нотацию

  • Различные формы представления

8 of 23

Требования на нотацию (2)

  • Графический редактор символов
  • Символы для ролей, текст

  • Автопрокладывание линков
  • Генерируемый по свойствам текст
  • Элементы, зависящие от свойств

9 of 23

Требования на генераторы

  • Высокий уровень абстракции
  • Эффективная навигация по моделям
  • Отношение "многие ко многим" между графами, генераторами и файлами
  • Фильтрация вывода
  • Синтаксическая подсветка
  • Интеграция с метамоделью
  • Трассировка от сгенерированого кода к модели
  • Отладчик генератора

10 of 23

Требования на поддержку метамоделирования

  • Стабильность и совместимость с предыдущими версиями
  • Документация и поддержка
  • Готовые переиспользуемые примеры
  • Браузеры метамоделей
  • Обновление метамоделей "на лету"
  • Автогенерация палитры, иконок, меню
  • Автогенерация средств работы со свойствами
  • Возможность задавать документацию к языку

11 of 23

Требования на поддержку моделирования

  • Базовая функциональность
  • Работа с несколькими моделями
  • Работа с несколькими языками
  • Многопользовательский режим работы
  • Браузеры моделей
  • Генерация документации
  • Документация на тул и поддержка

12 of 23

Требования на интеграцию

  • Интеграция с IDE
  • Вызов внешних тулов
  • Возможность быть вызванным внешними тулами
  • Наличие открытого API
  • Обмен моделями и метамоделями

13 of 23

Существующие тулы

  • Eclipse Graphical Modeling Project
  • MetaEdit+
  • Microsoft DSL Tools

14 of 23

MetaLanguage

15 of 23

Пример языка (MetaEdit+)

DSM-решение для мобильных приложений

  • Генерация в python, возможность генерации в C++ под S60
  • Задание пользовательского интерфейса и сложной бизнес-логики

16 of 23

Пример диаграммы

17 of 23

Элементы языка

  • UI:
    • заметка
    • запрос
    • мультизапрос
    • список
    • всплывающее окошко
  • Сервисы телефона
    • посылка СМС
    • открытие локальных файлов или файлов в интернете
    • запуск внешних процессов

18 of 23

Ограничения

  • Только одно событие может быть запущено из стартового состояния
  • Должно быть только одно стартовое состояние на диаграмме
  • Большинство элементов могут передавать управление только одному элементу
  • Проверка моделей:
    • Проверка на целостность потока управления
    • Наличие повторяющихся выходов у элементов выбора
    • и т.д.

19 of 23

Метамодель

20 of 23

Поиск ресторана

21 of 23

Пример языка (QReal:Robots)

22 of 23

Метамодель

23 of 23

Интерпретация