В чем разница между Acceleo и Xpand?

У меня есть DSL, основанный на пользовательской метамодели, которая, в свою очередь, основана на EMF/Ecore. Я пытаюсь выяснить, какое решение выбрать, и нигде не могу найти достойных сравнений.

Есть ли у кого-нибудь причины, по которым я должен выбрать один над другим?

На данный момент я знаю, что Acceleo использует стандартизированный язык OMG, но его использование сложнее, чем Xpand.


person anders    schedule 13.09.2011    source источник


Ответы (5)


Прежде всего, мне интересно, почему вы считаете Acceleo более сложным для изучения, чем Xpand, в то время как оба языка имеют различия (например, блоки и разделители), они имеют довольно схожую структуру. Я не буду подробно описывать все элементы в обоих языках, но, например, я не вижу такой разницы между чем-то вроде:

«FOREACH myAttributes AS a»«a.name»«ENDFOREACH»

и

[для (a: Атрибут|моиАтрибуты)][a.name/][/для]

Оба языка основаны на шаблонах и поэтому имеют одинаковую структуру. Основное различие между Acceleo и Xpand заключается в том, что Acceleo основан на стандартах MOFM2T и OCL от OMG и инструментальных средствах.

Я не очень хорошо знаком с инструментами Xpand, но вы можете найти больше информации об этом на их вики. Acceleo, с другой стороны, содержит редактор с подсветкой синтаксиса, завершением кода, обнаружением ошибок, рефакторингом и многим другим. Он также содержит отладчик, профилировщик, поддержку Ant и Maven. Вы также можете легко развернуть свои генераторы как подключаемый модуль Eclipse для других пользователей или использовать их вне Eclipse в обычном приложении Java. Дополнительную информацию об Acceleo можно найти здесь. Вы можете увидеть в видеороликах большинство функций Acceleo в Obeo Network (регистрация обязательный).

Наконец, последняя активность на xPand, которая произошла год назад, а Acceleo активно развивается. Вы даже можете следить за развитием Acceleo на github, если хотите.

Стефан Бегодо

Отказ от ответственности: я являюсь членом команды разработчиков Acceleo.

person sbegaudeau    schedule 13.09.2011
comment
Оцените ответ! Однако из того, что я читаю, кажется, что у них почти одинаковые функции (не уверен насчет отладки/профилирования). Я все равно повнимательнее присмотрюсь к Acceleo, просто чтобы посмотреть, нравится ли он мне больше, чем Xpand :) - person anders; 13.09.2011

Я дилетант, а не специалист.

У меня сложилось впечатление, что если вам нужно немного больше, чем язык шаблонов, то Xpand — это то, что вам нужно. В противном случае выберите Acceleo — но, как вы сказали, кривая обучения очень крутая.

Когда вам нужно больше, чем язык шаблонов? На мой взгляд, у них заканчивается газ, когда структура (не содержание) вывода зависит от нескольких независимых частей ввода. Если вы не хотите вникать в Acceleo, но у вас есть один из этих случаев, подумайте об изобретении автоматически сгенерированного «прокладочного» языка, который проведет вас на полпути от языка ввода к языку вывода, возможно, с большим количеством избыточности, чтобы избежать поиска. во время генерации шаблона.

person Ed Staub    schedule 13.09.2011

Я использовал старый Acceleo 2.x в проекте с полной поддержкой и провел несколько тестов с новым. Язык довольно прост в использовании, но с новой версией немного сложнее привязать некоторый код Java к вашему шаблону, когда языка скрипта недостаточно.

Я был большим поклонником 2.x, но с 3.x я добавляю много проблем, чтобы заставить его работать. Например, вам нужно написать код Java для обработки ресурсов eclipse. Я полностью сдался при обновлении до juno, мои проекты ускорения больше не работали, и мне не удалось это исправить за два дня. Я надеюсь, что они упростят использование из коробки.

person Fericelli    schedule 26.10.2012

По сути, основное отличие состоит в том, что ACCELEO является реализацией языка преобразования моделей MOF в текст, который является стандартом OMG (Группа управления объектами) для определения преобразования моделей в текст. Таким образом, это стандартный язык, разработанный той же группой, что и MOF, UML, SysML и MDA в целом. XPAnd — это язык, который, я думаю, существовал до стандарта, но теперь он отличается от него.

Если вы начинаете с нуля, начните с Acceleo.

person Andrea Sindico    schedule 29.10.2011

В моем случае я использую пользовательскую метамодель (производную от UML2) с пользовательскими стереотипами и свойствами стереотипов). Я пробовал языки шаблонов Acceleo и Xpand. Действительно, они очень похожи по структуре и возможностям.

Тем не менее, я вижу одно большое отличие (которое делает Xpand намного лучше в этом случае): вы можете использовать свои собственные стереотипы в своих шаблонах Xpand. Движок Xpand блестяще выбирает «наиболее подходящий шаблон/правило» для каждого стереотипа (также принимая во внимание наследование между стереотипами). Кроме того, очень легко получить свойства стереотипа. Эти две «особенности» делают шаблоны очень элегантными, компактными и читабельными. Например:

«DEFINE myTemplate FOR MyUmlProfile::MyStereoType»
MyValue: «this.myStereotypeProperty» or simply: «myStereotypeProperty»
«ENDDEFINE»

В Acceleo я нашел то же самое неуклюжим (более длинные операторы, больше кода), и мои шаблоны оказались длинными и сложными. Однако положительным моментом Acceleo было то, что он удобно работал с IBM RSA (применительно непосредственно к моделям RSA (emx)). У него хорошо работает подсветка кода и автозаполнение.

Xpand работал только в том случае, если я экспортировал свои модели RSA в формат «.uml» (~XML). Он не предлагает подсветку кода или автозаполнение (по крайней мере, я не понял, как это сделать).

Учитывая все плюсы и минусы, я все же голосую за Xpand (в моем случае).

person Markov    schedule 17.03.2014
comment
Вы видели это для использования профилей UML с Acceleo? eclipse.org/forums/index.php/t/205038 - person PALEN; 16.11.2014