李维的法螺

昨天BORLAND在上海锦沧文华开了个研讨会,李维做了一个关于Borland的MDA产品演示。想想有一年多没看到李胖子了,所以请了个假跑去看,从 俺们这乡下旮旯跑到位于静安区的会场还真TMD远,害我换了三种交通工具才总算在一点半前赶到。到那里时,诺大的会场已经快坐了一半,只好找了个中间的位 置坐坐,没过多久,后面的位置也坐得差不多了。前后看看,BORLAND的用户中,还是有不少PLMM的嘛:)

过了一点半,李胖子才出现,开始吹他的法螺了。距离上次见他已经有一年半了,当年他说的BORLAND要推出的galileo和charlotte至今还 是踪影全无,只是SideWinder变成了C#Builder,C++Builder变成C++BuilderX,看来真的是计划没有变化快啊。李胖子 这回主要推的是BORLAND收购Together后的新产品:Together for .net,号称目前.net平台下最好的MDA工具,当然顺便也把BORLAND的ALM那一套(CaliberRM, StarTeam, OptimizeIt...)全又吹了一通,大多数偶是没用过,不好说:P。

还是就拿昨天的那个Together来说吧。这次对Together的宣传重点是:它是一个MDA解决方案。能够agile地解决OOAD/OOP之间的 问题,能通过Modeling的方式,非常快速地实现应用程序的开发。8过说实话,李胖子有误导之嫌,仿佛BORLAND这次要宣传的产品是MDA,而不 是Together似的。8过其实关系也不大,至少目前炒作MDA的概念对Together是绝对有利的。

其实MDA是OMG所提出的一个概念,就是Model Driven Architecture(这个东东包括其缩写MDA都是OMG的注册商标),其主要思想是将传统的Modeling做法,从两步变为三步,但本质还是基于UML的。

在传统的UML Modeling过程中,一般是先用UML把各种Use Case Diagrams/Class Diagrams等等画出来,然后生成代码,Coding。而MDA则对此作了改进,在二者之间加入一步Modeling。MDA中第一次 Modeling所建的Models被称为:PIM(Platform-Independent Model),这是一个高度抽象的Model,与具体的平台无关,即它完全是为了描述软件的逻辑而做,与它将要用什么技术实现无关,不管是要用.net还 是J2EE或是CORBA,而且这个Model是MDA中最关键的部分。在MDA中,第二步的Modeling被称为:PSM(Platform- Specific Models),到这一步,Model就要被转为与具体实现技术相关的了,根据不同的实现技术,同一个可以产生不同的PSM。最后,才是根据PSM生成代 码并Coding。

虽然MDA比传统两步Modeling方式要多一个步骤,但实际上,PSM是通过工具自动从PIM生成,所以并不需要增加工作量。

关于MDA,可以参考OMG关于它的一个FAQ

中场休息后,李胖子演示了一下Together for vs.net,一个集成在vs.net中的two way tools式的modeling工具。功能是粉强,8过很多方面跟一年前Rational发布的XDE有不少相似之处。XDE偶只是看过,没有用过,看着像也只是看着 像,也许Together也有一些特别的强处,因为李胖子也没用过XDE,无法比较。Together现版本有很多吸引人的特色:完全的two way tools,反向工程(李胖子演示了把Duwamish做了一个反向工程),支持多种Design pattern(包括GoF的和Borland自己的以及一些其它的DP,甚至可以自己定义DP),自动文档生成等。

最值的一提的应该还是C#Builder的Architect版,这是一个比较完整的MDA开发工具。之所以说是“比较完整”是因为现在的版本中, Modeling还是有一定的平台依赖(现在主要是针对.net),没有完全实现PIM的Modeling。现在的解决方案是把Model导出为XMI (XML Metadata Integerchange),然后用其它Modeling工具导入。

值得一提的是在C#Builder中,Borland提供了一个被称为ECO(Enterprise Core Object)的O/R Mapping(Object/Relational Mapping)技术,利用这个技术,在Modeling中生成的Object可以直接映射到数据库中成为Persistent Object。这是一种完全OO化的应用开发技术,过去那些Database Schema Script之类的烦心事都可以不用管了,省事太多。

其它的小道消息就只有:Delphi.net将于今年第四季度发布,Delphi8将于明年第二季度发布了。