Двунаправленные преобразования M2M с использованием Eclipse EMF

Я хотел бы сделать двунаправленные преобразования Model2Model. Обе модели основаны на EMF / eCore. На самом деле я бы предпочел, чтобы одна модель редактировалась другим.

Какие у меня варианты? Какие инструменты и языки преобразования доступны и каковы их ограничения?

4 ответа

Если вы настаиваете на выполнении двунаправленных преобразований M2M (так называемых Bxs), то знайте, что сообщество активных исследователей обновляет эту вики: http://bx-community.wikidot.com/. Если вы посетите его, то обнаружите, что в нем содержится список инструментов, подходящих для преобразований Bx http://bx-community.wikidot.com/relatedtools.

В прошлом я использовал ECHO, который обеспечивает реализацию QVT-R на основе решателя ограничений KodKod.

Это определенно стоит попробовать.

М2М самые тяжелые. Индустриальные силовые инструменты редки, много научных вещей. Если вы абсолютно незнакомы с языком M2M, обратите внимание на ATL, который также должен поддерживать ecore. В противном случае вы можете посмотреть на Xtend, который был создан для модели в текст, но вы можете злоупотреблять им, и он должен быть более удобным, чем обычная Java. Если вы в исследованиях, посмотрите на трансформации на основе Scala здесь

http://metrikforge.informatik.hu-berlin.de/attachments/download/193/george_wider_scheidgen_ICMT_2012.pdf

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

Для преобразования метамодели в метамодель, где модели не очень похожи:

Если метамодели очень похожи, и вам нужно только настроить некоторые вещи, то существуют инструменты, предназначенные для этого типа миграции / обновления:

  • ATL теперь имеет режим уточнения
  • Эпсилон имеет стадо
  • Edapt также выглядит очень интересно, потому что метамодель / модель меняются вместе. Он позволяет вам работать в виде дерева и поставляется с заранее установленным набором правил.
  • Henshin, который позволяет вам работать на диаграмме модели
  • EMF Refactor - это подход на уровне кода, который также может как-то использовать правила Хеншина.

Вы всегда можете напрямую управлять метамоделью и моделью, используя также API-интерфейсы Java EMF.

Я добавлю, что если вы выполняете какую-либо настоящую работу с EMF, вам нужно получить и прочитать EMF: Eclipse Modeling Framework. Это доступно в Safari также. Я настоятельно рекомендую Safari: за 39 долларов в месяц вы получаете практически каждую книгу по разработке, которую когда-либо могли использовать.

Поскольку вы специально просили двунаправленные преобразования моделей, я должен сказать, что у вас нет вариантов. Чтобы сделать это более ясным, добавив к ответу, который вы получили от Ed Willink, ни один из существующих языков преобразования M2M (AFAIK) не поддерживает двунаправленные преобразования моделей. Работа над механизмом исполнения QVTr и QVTc начинает выглядеть многообещающе, если вы все еще заинтересованы в этом: QVTd Project.

Другие вопросы по тегам