所在位置:UML新闻 - 内容 论坛精华    
Martin Fowler关于MDA的见解

[2004/2/2]

以下摘自Martin Fowler的Blog:

一些人认为MDA将是软件开发上最大的变革:从对象装配到最高级的语言。其它人认为它不过是现在这些CASE工具的暮年而已。我站在后者的阵营中,但我还想多说几句。

现在MDA所说的很多东西CASE工具社区在80年代就讨论过了。我认为CASE工具失败的原因有很多,但最根本的是它们没有能够提供一个一致的编程环境,允许人们以比其它方法更有效的方式构建通用的企业应用。

当然,在某些工作上CASE工具是很有帮助的。例如,我更愿意使用图形化的工具来设计数据库而不是在记事本上敲SQL命令。但是,很多工作根本就没有可能或者说很难在CASE环境上实现。

因此,我所怀疑的就是, MDA是否改变了这一点。UML最早是很合理的,目的就是要帮助人们表达设计的思路,我偏向于这么使用UML,UmlAsSketch(http://martinfowler.com/bliki/UmlAsSketch.html)。但MDA需要从UML得到最终的产品,它对UML的形式化和一致性的要求要高得多。当然UML2是很多人在这方面的努力,试图保证其计算完整性(computationally complete)。但很多工作只是停留在纸面上,并没有清晰的例子或者将UML应用于哪个平台上的实际经验。即使UML具有计算完整性,也需要有效的环境来应用它,以取代其它的开发方法。作为一个同时了解双方的人,我不得不说,这样一个环境,我还没有看到。

举例说吧,以行为逻辑(behavioral logic)为例,我看不出使用序列图或者活动图比使用现代语言直接写代码有什么长处。我发现,即使我必须要以更细节的方式来写代码,我也愿意,而不是选择画这些图,因为我可以执行代码并且测试它们。

即使UML提供了一个高效的编程环境,也有一个推广的过程。作为一个过去的smalltalker,我明白一点:即使是最好的语言,也不一定能够成为主流。

支持MDA的观点还有一些,但也都难以令人信服。

1)拥有一系列OMG标准的支持,固然这是80年代的CASE工具所缺乏的,但这得看人们是不是都遵循这些标准。我很想知道到底有多少MDA的fans把UML当做了不想要的语言UnwantedModelingLanguage。
2)MDA的支持者说到平台无关性,我在PlatformIndependentMalapropism.中已经谈到这个问题,(译者注:Martin在那篇文章中认为这是一个可笑的说法)。
3)我听说MDA将如何通过模式的自动生成来简化开发。但我并没有看到用UML来实现这一点和借助好的库(library)和框架来实现这一点有什么区别。
4)大部分UML的支持者都有一个基本的论断:图要好过文字。有时候这是成立的,但我没有发现有证据证明它总是成立的-比较过流程图和伪代码的人可以得到自己的结论。

不管怎么说,如果我发现我的判断错了,我会非常高兴。我真的愿意看到软件开发的抽象层次再提高一层(更不要说UML的成功对我个人而言绝对是利好啊)。但我就是没有看见UML如何提高了抽象层次,而这,正是MDA成功的必要条件。

有趣地是现在有一种现象:越来越多的人希望不遵循OMG的标准来实现MDA。我听的更多是借助工具实现模型驱动开发,而不是借助OMG的MDA标准族。

这里还有一些其它关于MDA的富有思想的批评声音:

*Steve Cook关于Microsoft's views on MDA和更多的关于MDA的谈话。Steve是UML的主要贡献者之一,也是英国OO早期的领袖之一。
*在OOPSLA 2003会议上,"Bedarra" Dave Thomas对MDA的方方面面提出了怀疑。遗憾的是我没有当时他演讲的视频,但jot column上摘录了他的一些观点。

(自 http://martinfowler.com/bliki/ModelDrivenArchitecture.html,袁峰 摘译,不得转载用于商业用途)