понедельник, 23 февраля 2015 г.

Создание инструментов моделирования на базе Eclipse Modeling Projects

Я давно смотрел в сторону проектов для создания инструментов моделирования в рамках Eclipse Foundation. Но как-то все было не досуг попробовать. Наконец время пришло и я все таки это сделал. Подтолкнул к этому тот факт, что инструмент Capella основан на технологической платформе для создания визуальных представлений для языков моделирования Eclipse Sirius. Было интересно как можно расширять возможности Capella. Но в результате пришло понимание, что с использованием технологических компонентов Eclipse Modeling Project можно создавать и свои инструменты моделирования, аналогичные Capella.

Eclipse Sirius - позволяет самостоятельно создавать (в режиме конфигурирования, а не программирования) визуальные представления (диаграммы, таблицы, деревья) для любого языка моделирования предметной области. Язык  и инструмент Capella для моделирования систем - это лишь один пример использования Sirius. Есть и другие примеры (см. Галерею ). Среди инструментов, реализованные на базе Sirius есть инструменты моделирования на UML и SysML. Но есть и более диковинные - например язык моделирования для разработки приложений под Arduino.

За последнее время я в первом приближении попробовал Sirius, а с ним и целый ряд инструментов-проектов Eclipse, которые его окружают. В результате удалось на практике проделать все основные шаги по созданию своего языка и тестового инструмента моделирования. Вот основные шаги, которые удалось проделать:
- формально задать свой язык моделирования в формате Ecore;
- сгенерировать плагины для Eclipse для базового редактирования модели в Eclipse с использованием нового языка моделирования;
- определить диаграммы и табличные представления с помощью Sirius для анализа и редактирования модели на новом языке визуальным образом;
- сгенерировать отчет в формате html на основе модели с помощью Acceleo

Для того чтобы все это проделать пришлось освоить следующие технологические компоненты Eclipse Modeling Platform. 

Bнструмент для визуального создания мета-моделей. Позволяет с помощью урезанных диаграмм классов описывать сущности и отношения между элементами языка. На выходе метамодель языка моделирования в формате Ecore. Это аналог редактора XSD для XML. Есть возможность получать модель в формате Ecore на базе XSD.

EMF
Получает на вход описание мета-модели языка моделирования в формате Ecore. Позволяет на ее основе сгенерировать код JAVA библиотеки для работы с формальной моделью на новом языке моделирования через JAVA API, а также код плагинов для Eclipse, позволяющих редактировать модель в Eclipse в виде дерева модели.

Sirius
Позволяет создавать визуальные представлений (диаграммы, таблицы, деревья) для просмотра и редактирования формальных моделей. Это аналог редактора XSL для трансформации XML. На входе - плагины для Eclipse, сгенерированные EMF для базового просмотра модели. Позволяет к базовым возможностям просмотра модели в виде дерева добавить различные типы диаграмм, таблиц и деревьев для отображения и редактирования элементом модели.

Acceleo
Позволяет генерировать на базе 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 можно будет добавить любые дополнительные представления. Это нужно пробовать, но архитектурно пришло понимание, что это вроде как возможно.

Комментариев нет:

Отправить комментарий