воскресенье, 16 октября 2016 г.

Автоматическое построение диаграмм на основе моделей

Как не пародоксально, но одной из трудоемких операций при создании формальных моделей является создание визуальных диаграмм. Особенно это имеет место, когда модель получена из каких либо других источников (например путем Reverse Engineering из программного кода или импорта данных из какой-либо ИТ системы). На создание, редактирование и форматирование диаграмм уходит кучу времени. Данную работу нужно автоматизировать путем автоматического построения диаграмм на основе моделей. 

Этому вопросу и посвящен этот достаточно длинный пост. В нем я приведу начальную информацию о проекте Eclipse ELK/KIELER, предоставляющего технологию, которую можно интегрировать в другие инструменты моделирования для реализации автоматического построения диаграмм на основе моделей.

KIELER – проект университета ….

В данный момент проект переносится под зонтик Eclipse.

И хотя сам проект KIELER стабильный, в новом виде под зонтиком Eclipse он еще пока молодой. Сейчас идет активное переименование API, какие-то переработки по ходу и т.п.  На странице проекта на сайте явным текстом сказано, что если вам нужно использовать автоматический layout сейчас, то нужно использовать исходный проект KIELER


Благо, что исходный проект тоже интегрирован с Eclipse, а именно с диаграммами на базе технологии GMF (Graphical Modeling Framework), на которых основаны и Sirius и Papyrus.

Мне удалось установить и попробовать автоматическое построение диаграмм на базе моделей, реализованные в проекте KIELER.  Результаты впечатляют. А возможности использования KIELER в собственных инструсментах моделирования может позволить реализовать качественное автоматическое построение хорошо отформатированных и читабельных диаграмм.

Ни виде по ссылке показано как работает автоматическое построение диаграмм для моделей

Автоматическое построение диаграмм

Ниже пример, описанный в getting started, по описанию конечного автомата в текстовом редакторе (dsl на базе xtext). Диаграмма справа строится полностью автоматически на базе текстового описания конечного автомата. При добавлении элемента в текстовом представлении, он тут же появляется в графическом представлении.  При выборе любого графического элемента, он тут же автоматически подсвечивается в текстовом описании.



Вид графического представления можно настраивать с помощью (скрыавемой) панели справа. Например, с помощью параметром алгоритма можно отключить отображение labels на переходах или расположить элементы не слева направо, а сверху вниз.

А можно выбрать для построения диаграммы любой другой алгоритм из списка


Проект KIELER реализует как собственные алгоритмы для автоматического layout диаграмм, так и интегрирует с EMF моделями алгоритмы, реализуемые в Graphviz и OGDF (http://www.ogdf.net/doku.php)

KIELER позволяет настраивать каждый отдельный элемент диаграммы на применение одного из доступных алгоритмов и параметров. Это можно делать через API. Эти параметры можно просматривать и редактировать из Eclipse View с названием Layout.


Построение диаграмм аля блок-схем

А вот пример построения автоматической блок схемы на основе модели EMF (иерархический редактор модели слева на рисунке). У меня пока не было сложной модели, поэтому привожу диаграмму для простой модели



Ниже пример диаграммы аля блок-схема с отображением неких зависимостей (их можно отключать).

Генерация тестовых графов


В KIELER реализована возможность построения рандомизированных графов, вид которых можно гибко настраивать.  Это очень удобно для тестирования различных алгоритмов автоматического построения диаграмм.

Создание нового графа реализовано в виде создания нового файла модели типа Random KGraph


Описание графов генерируется в текстовом представлении в виде XMI или DSL (на базе xtext). Ниже пример иерархического графа, сгенерированного в формате текстового DSL и построенной для него иерархической диаграммы.



Генерируемые графы могут содержать блоки, различные связи, порты. Для каждого из этих элементов можно настраивать параметры генерации. Ниже пример построения диаграммы структуры с портами


А вот так выглядит автоматическая диаграмма из 100 блоков разного размера и с большим количеством связей.
Это фрагмент

А это вся диаграмма

Использование KIELER в инструментах моделирования

Как воспользоваться KIELER в собственных инструментах моделирования уже понятно, но для реального подключения необходимо будет поработать.

Все диаграммы в этом документе – это диаграммы на базе GMF из Eclipse.

Но KIELER не ограничен использованием в ECLIPSE. Архитектура решения трех-уровневая, что позволяет использовать KIELER и просто из Java. Но и Java-ой не ограничено применение. Есть возможность использовать всех этих алгоритмов через веб сервисы.

Интеграция KIELER с диаграммами по смыслу очень простая. Коннетору между диаграммой и алгоритмом нужно уметь перегнать элементы диаграммы в структуру KIELER и после выполнения алгоритма применить параметры размеров/размещения  элементов из структур KIELER к элементам диаграммы. Как я писал, вроде как для GMF это уже сделано.

Остается только подключить коннектор KIELER к своим диаграммам на уровне пользовательского интерфейса  и к механизму Arrange All (который есть на диаграммах GMF). Это делается с помощью точек расширения Eclipse. Как сделать примерно понятно, но нужно еще будет повозиться и попробовать. 

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

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