MDD: Насколько динамичен MDD во время выполнения?
За прошедшие годы я исследовал множество способов использования генераторов кода и MDD. Я всегда чувствовал, что чего-то не хватает: исправления и изменения в модели во время выполнения.
Исправление: если у вас есть генератор кода, все ваши классы должны выглядеть одинаково. Теперь у вас есть единственное исключение. До сих пор все генераторы кода требовали, чтобы я изменил шаблон или механизм шаблонов, чтобы это работало.
Не лучше ли было бы применить патчи к результату шага генерации кода, чтобы исправить исключения?
2 ответа
Ну, это зависит от того, как вы строите свою модель. На самом деле, это зависит от того, какой генератор кода вы используете, его подход и что он позволяет вам делать.
Создание исключения из правила (модели) более или менее противоречит природе MDD, если только применяемый подход к моделированию не позволяет добавлять исключения в качестве объектов моделирования.
Я думаю, что ABSE - это единственный подход к моделированию, который принимает "пользовательский код" как первоклассную сущность, как текст или целое число. Если вы создаете шаблон, который содержит параметр "CustomCode", вы можете позже добавить код исключения только при необходимости, не нарушая правил модели. Это может быть использовано для добавления или замены кода. Вам просто нужно указать это в своем шаблоне.
AtomWeaver - это бесплатная реализация методологии моделирования ABSE.
MDD не работает, потому что он основан на представлении домена, а не всего домена. Я имею в виду, что обычно MDD принимает XMI в записи, исходящей из диаграммы UML. Проблема заключается в том, что эта диаграмма представляет собой только вид домена, и поэтому у вас есть много альтернатив, а реальный мир особенно сложен, особенно на этапе развертывания.
Единственная компания, которая обеспечила мне реальную ценность в моем проекте, была Omondo с EclipseUML. EclipseUML не пытается создавать MDD, но создает UML на уровне диаграммы в реальном времени, синхронизированном с кодом. Развертывание осуществляется с использованием стереотипов, которые добавляются в Java-аннотации в коде. Поэтому я могу моделировать, и если я добавлю стереотипы развертывания, то мое приложение может быть развернуто немедленно / если я вручную изменю свой код, то моя модель подвергнется рефакторингу, и все мои представления обновятся. Если я хочу добавить документацию, я просто добавляю примечания в метамодель. Эти заметки доступны в реальном времени, когда я нажимаю на каждый элемент. Больше не нужно печатать документацию, потому что живая навигация, создание динамических видов и т. Д.
Моя модель EclipseUML всегда актуальна, и я могу развернуть ее немедленно, поскольку аннотации Java синхронизируются между моделью, метамоделью, диаграммами и кодом. Очень круто:-):-)