模型驱动架构

2004年2月2日

有些人认为模型驱动架构(MDA)将是自从从汇编语言转向第一批高级语言以来软件开发领域的最大变革。另一些人则认为这不过是一场“活生生的案例工具之夜”。我属于后者,但我认为仅仅一个巧妙的说法还不够。

现在人们对MDA的许多说法与80年代CASE工具社区所谈论的内容相同。我认为CASE工具失败的原因有很多,但最根本的原因是它们无法提出一个连贯的编程环境,使人们能够比其他方法更有效地构建通用企业应用程序。当然,CASE工具可以帮助完成某些特定任务,而且往往帮助很大。我宁愿使用图形化模式设计器来绘制数据库模式,而不是在TextPad中输入SQL。但是,在CASE环境中,许多事情要么不可能做到,要么要困难得多。

所以我的问题是MDA是否改变了这一点。UML起源于一些相当合理的符号,这些符号适合用来草拟设计理念。我大量使用UmlAsSketch,但要将UML转变为MDA工作所需的完整解决方案,就需要更高的形式化程度和一致性,这要困难得多。当然,在UML 2中,许多人努力使UML在计算上完整。但这些工作大多是在纸面上完成的,没有明确的例子和经验来证明使用UML的平台在实践中会是什么样子。即使UML在计算上是完整的,它也必须成为比其他方法更有效的软件开发环境。作为一个熟悉UML和替代方法的人,我不得不说我没有看到这一点。

举个例子,考虑行为逻辑。我认为绘制时序图或活动图并不比用现代语言编写代码好,更不用说比它更好了。我发现即使我必须以比图表更高的精度编写代码,情况也是如此,比如我想执行和测试它们。

即使UML形成了一个有效的编程环境,它也需要成为一个流行的编程环境。作为一个前Smalltalker,我太清楚地知道,即使最好的语言也不一定能成为主流。

MDA的其他论点是次要的,而且也不令人信服。

  • 拥有OMG标准栈无疑是80年代CASE工具所缺乏的,但我们将看看人们会坚持使用它多久。我注意到的一件事是,许多MDA的支持者似乎将UML视为不受欢迎的建模语言.
  • MDA的支持者谈论平台独立性,但我已经将其视为平台独立性错误
  • 我听说过MDA将通过允许自动生成模式来简化开发。但我没有看到UML中可以做的事情与使用好的库和框架可以做的事情有什么区别。(以及生成模式实现至少遗漏了模式的一半要点。)
  • UML的许多宣传似乎都基于这样一个说法:图片比文字更好。在某些情况下这是真的,但我没有看到任何普遍的证据——任何比较流程图和伪代码的人都可以得出自己的结论。

在许多方面,我真的很希望在这方面错了。我真的很想看到软件开发提升到一个抽象的层次。(更不用说UML的成功对我个人来说也是一件好事。)但我没有看到UML提供了这种抽象的飞跃——如果没有它,MDA将不会成功。

有趣的是,越来越多的人想要在没有OMG标准的情况下进行MDA。我听到更多关于使用除OMG的MDA栈以外的工具进行模型驱动开发的信息。

以下是关于MDA的一些其他有见地的批评

  • Steve Cook谈论了微软对MDA的看法以及模型驱动开发的更广泛问题。Steve是UML的核心贡献者,也是英国早期OO的领导者之一。
  • "Bedarra" Dave Thomas在2003年OOPSLA的MDA小组讨论会上,以其充满活力的怀疑论表现令人印象深刻。遗憾的是,我没有他表演的视频,但一篇较早的jot专栏捕捉到他论证的一些深度。