MDD: Насколько динамичен MDD во время выполнения? - PullRequest
3 голосов
/ 17 декабря 2010

За прошедшие годы я исследовал множество способов использования генераторов кода и MDD.Я всегда чувствовал, что чего-то не хватает: исправления и изменения в модели во время выполнения.

Исправление: если у вас есть генератор кода, все ваши классы должны выглядеть одинаково.Теперь у вас есть единственное исключение.До сих пор все генераторы кода требовали, чтобы я изменил шаблон или механизм шаблонов, чтобы это работало.

Не лучше ли было бы применить патчи к результату шага генерации кода, чтобы исправить исключения

Ответы [ 2 ]

1 голос
/ 28 декабря 2010

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

Создание исключения из правила (модели) более или менее противоречит природе MDD, если только применяемый подход к моделированию не позволяет добавлять исключения в качестве объектов моделирования.

Я думаю, что ABSE - это единственный подход к моделированию, который принимает «пользовательский код» как первоклассную сущность, как текст или целое число. Если вы создадите шаблон, который содержит параметр «CustomCode», вы сможете позже добавить свой код исключения только при необходимости, не нарушая правил модели. Это может быть использовано для добавления или замены кода. Вам просто нужно указать это в своем шаблоне.

AtomWeaver - это бесплатная реализация методологии моделирования ABSE.

0 голосов
/ 28 декабря 2010

MDD не работает, потому что он основан на представлении домена, а не всего домена.Я имею в виду, что обычно MDD принимает XMI в записи, исходящей из диаграммы UML.Проблема в том, что эта диаграмма представляет собой только вид домена, и поэтому у вас есть много альтернатив, а реальный мир немного сложнее, особенно на этапе развертывания.

Единственная компания, которая предоставила мне реальную ценность в моемПроект был Omondo с EclipseUML.EclipseUML не пытается создавать MDD, но создает UML на уровне диаграммы в реальном времени, синхронизированном с кодом.Развертывание осуществляется с использованием стереотипов, которые добавляются в Java-аннотации в коде.Поэтому я могу смоделировать, и если я добавлю стереотипы развертывания, то мое приложение может быть развернуто немедленно / Если я вручную изменю свой код, то моя модель подвергнется рефакторингу, и все мои представления обновятся.Если я хочу добавить документацию, я просто добавляю примечания в метамодель.Эти заметки доступны в реальном времени, когда я нажимаю на каждый элемент.Больше не требуется печатная документация, потому что активная навигация, создание динамических видов и т. Д. *

Моя модель EclipseUML всегда актуальна, и я могу развернуть ее немедленно, поскольку аннотации Java синхронизируются между моделью, метамоделью,диаграммы и код.Действительно круто :-): -)

...