免责声明:我是业务应用程序的开发人员。以下观点肯定是由我在企业 IT 领域的经验所塑造的。我知道,还有其他软件开发领域。特别是在工业和/或嵌入式系统开发中,世界可能看起来不同。
我认为 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
我认为这不能再简化了。此外,任何带有框和线的图形表示都不会简化,也不会提供更多便利(考虑布局、重构、搜索、差异......)。