Отказ от ответственности: я разработчик бизнес-приложений. Следующий взгляд, безусловно, сформирован из моего опыта в окопах корпоративных ИТ. Я знаю, что существуют другие области разработки программного обеспечения. Особенно в области разработки промышленных и / или встраиваемых систем мир может выглядеть иначе.
Я думаю, что MDSD все еще слишком привязан к генерации кода.
Генерация кода полезна только тогда, когда ваш код содержит много шума и / или очень повторяется. Другими словами, когда ваш код не может сосредоточиться в основном на существенной сложности, но загрязнен случайной сложностью.
По моему мнению, в современных платформах и фреймворках тенденция состоит именно в том, чтобы устранить случайную сложность и позволить программному коду сосредоточиться на существенной сложности.
Таким образом, эти новые платформы / каркасы сильно удаляют паруса движения MDSD.
DSL (текстовые) являются еще одной тенденцией, которая пытается сосредоточиться исключительно на существенной сложности. Хотя DSL могут использоваться в качестве источника для генерации кода, они не связаны в первую очередь с генерацией кода. DSL (особенно внутренние DSL) в основном позволяют открыть его для интерпретации / выполнения во время выполнения. [Время генерации кода где-то посередине].
Таким образом, даже если DSL часто упоминаются вместе с MDSD, я думаю, что они действительно являются альтернативой MDSD. И учитывая текущую ажиотаж, они также убирают импульс из движения MDSD.
Если вы достигли цели окончательного устранения случайной сложности из своего кода (я знаю, что это вымышленное), то вы пришли к текстовой модели вашей бизнес-проблемы. Это не может быть упрощено!
Хорошие рамки и диаграммы не предлагают другого упрощения или повышения уровня абстракции! Они могут быть хороши для визуализации, но даже это сомнительно. Картинка не всегда является лучшим представлением, чтобы понять сложность!
Более того, текущее состояние инструментария, задействованного в MDSD, добавляет еще один уровень случайной сложности (например, синхронизация, диффузия / слияние, рефакторинг ...), который в основном сводит на нет конечную цель упрощения!
Посмотрите на следующую модель ActiveRecord как иллюстрацию моей теории:
class Firm < ActiveRecord::Base
has_many :clients
has_one :account
belongs_to :conglomorate
end
Я не думаю, что это может быть упрощено. Кроме того, любое графическое представление с прямоугольниками и линиями не будет упрощением и не будет более удобным (подумайте о компоновке, рефакторинге, поиске, дифференцировании ...).