Eclipse Sirius - позволяет самостоятельно создавать (в режиме конфигурирования, а не программирования) визуальные представления (диаграммы, таблицы, деревья) для любого языка моделирования предметной области. Язык и инструмент Capella для моделирования систем - это лишь один пример использования Sirius. Есть и другие примеры (см. Галерею ). Среди инструментов, реализованные на базе Sirius есть инструменты моделирования на UML и SysML. Но есть и более диковинные - например язык моделирования для разработки приложений под Arduino.
За последнее время я в первом приближении попробовал Sirius, а с ним и целый ряд инструментов-проектов Eclipse, которые его окружают. В результате удалось на практике проделать все основные шаги по созданию своего языка и тестового инструмента моделирования. Вот основные шаги, которые удалось проделать:
- формально задать свой язык моделирования в формате Ecore;
- сгенерировать плагины для Eclipse для базового редактирования модели в Eclipse с использованием нового языка моделирования;
- определить диаграммы и табличные представления с помощью Sirius для анализа и редактирования модели на новом языке визуальным образом;
- сгенерировать отчет в формате html на основе модели с помощью Acceleo
Для того чтобы все это проделать пришлось освоить следующие технологические компоненты Eclipse Modeling Platform.
EMF
Получает на вход описание мета-модели языка моделирования в формате Ecore. Позволяет на ее основе сгенерировать код JAVA библиотеки для работы с формальной моделью на новом языке моделирования через JAVA API, а также код плагинов для Eclipse, позволяющих редактировать модель в Eclipse в виде дерева модели.
Sirius
Позволяет создавать визуальные представлений (диаграммы, таблицы, деревья) для просмотра и редактирования формальных моделей. Это аналог редактора XSL для трансформации XML. На входе - плагины для Eclipse, сгенерированные EMF для базового просмотра модели. Позволяет к базовым возможностям просмотра модели в виде дерева добавить различные типы диаграмм, таблиц и деревьев для отображения и редактирования элементом модели.
Позволяет генерировать на базе EMF модели документацию и код. Шаблоны для генерации определяются с использованием языка OMG M2T, специально предназначенного для разработки шаблонов генерации на основе моделей (см. описание языка шаблонов)
OCL
OMG OCL - язык для задания ограничений для элементов моделей. Используется в Acceleo для задания query к модели.
Краем глаза посмотрел, но пока не пробовал другие связанные с этими технологические компоненты.
EMF Client Platform - для автоматической генерации клиентских приложений для редактирования EMF моделей. Позволяет создавать более продвинутый браузер для просмотра модели, а также продвинутые окна для редактирования свойств отдельных элементов модели.
EMF Store - позволяет организовать совместную работу с моделями, разместив их в общем хранилище. Позволяет управлять версиями, изменениями, делать commit/update и работать с моделями в offline.
Кроме создания своего языка и инструмента моделирования, попробовал расширить возможности Capella. В результате удалось создать и добавить к Capella новые viepoints и представления (диаграммы и таблицы). Результат кастомизации оформляет в виде плагинов Eclipse, которые доставляются в Capella. После этого в Capella появляется возможность создавать новые представления для элементов модели.
Пока остался вопрос можно ли (вроде можно, но как) расширять язык моделирования Capella, добавляя в него новые сущности и отношения. Также остался вопрос по использованию Acceleo для генерации документов на основе модели в Capella (для этого необходима метамодель языка Capella в формате Ecore). Например, в Capella удалось сделать представления таблиц трассировки, которые отображают для элементом модели связанные с ними требования.
Пока не попробовал, но есть подозрение, что с помощью Sirius можно расширять возможности инструмента моделирования Eclipse Papyrus (UML, SysML). К стандартным диаграммам языков UML / SysML можно будет добавить любые дополнительные представления. Это нужно пробовать, но архитектурно пришло понимание, что это вроде как возможно.
Комментариев нет:
Отправить комментарий