Chinaunix首页 | 论坛 | 博客
  • 博客访问: 819353
  • 博文数量: 756
  • 博客积分: 40000
  • 博客等级: 大将
  • 技术积分: 4980
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 14:40
文章分类

全部博文(756)

文章存档

2011年(1)

2008年(755)

我的朋友

分类:

2008-10-13 16:11:49


转贴:

UML2意味着“模型驱动”的架构



UML2意味着“模型驱动”的架构

软件架构师Shaun Forgie认为,UML的2.0版本是模型驱动开发时代到来的号角。

他说,抽象层次的增加将会导致编写代码,不管是Java还是C++,变得不再紧要,就像今天的汇编语言一样。

在和软件架构师协会的一个本地听众交流时,Forgie 认为,UML 2.0 增强了该建模语言的可扩展性(scalability)。在2.0版本中,各种图的描述功能更强,例如,形式化表示算法行为的“状态机”。在新版本中,过程和数据的各种形式化表示之间的关系也被定义得更加清晰。

Forgie 预言,将会有一个架构被定义来“执行”模型,而不需要创建一个可运行的程序。所有这些都会使得大多数开发工作可以更轻易地在模型层次上完成,然后自动生成代码。也就是说,手工书写代码将不再需要,甚至代码的检查也将几乎不再需要。 在基于组件开发(component-based development)方面,先前的UML1.x版本稍有落后。尤其是在面对实时系统时,导致了使用UML的困难,而且生成的代码也很凌乱。

组件,J2EE和 .Net这些流行的开发平台上的元素,在被提供时通常同时还提供有对每个组件行为的描述、提供的接口(port)以及用来和其他组件交流的协议。这些接口用来将这些服务组合在一起,以提供给组织中不同的组调用。这个概念加强了软件的可重用。

对模型而言,也需要被验证和执行,在手工编码和自动生成代码之前都需要检验模型的逻辑。模型同样也有归档和维护等操作。



现在,开发人员可以看到一个真正的模型驱动架构(MDA),过程以及数据库元素都可以从模型中生成得到。这一切和过去不再一样,过去,软件开发中存在着面向对象的应用设计和另外设计的关系数据库间的不吻合。
Forgie认为,UML现在已经更加优美地融入到了OMG的标准和框架之中了。UML现在已经被纳入最高层为元对象设施MOF的层次之中了(译者注:这里指的是OMG的四层元模型架构)。诸如UML、Corba以及OMG的组件仓库元模型都在这个系统中联系起来,它们都是MOF的实例。正如一个特定的UML模型是UML的一个实例,而一个现实世界的对象是这个模型的一个实例一样。
Forgie说,模型驱动架构已经“使我节省了50%的开发工作量,并有希望在未来五年内节省掉这剩下来的50%”。

模型驱动架构的结构仍在发展之中,将UML应用到不同领域的“profile”正在逐年增加,这些领域包括系统工程、应用集成及测试。

IBM(现在包括了Rational)奠基的Eclipse将成为全面实现这个复杂结构的第一个开发环境。作为吸引眼球的招数,各种图形标识的管理方法将会首先推出,然后将会是完成各种实际工作的底层结构支持,全面的实现还要再等几年。


--------------------next---------------------
以七猫的学识和智慧竟然看不穿这个广告?!估计不是不能,而是不愿^_^
假设Forgie空想成真---“将会有一个架构被定义来‘执行’模型,而不需要创建一个可运行的程序”---这有什么可炫耀的,每一种语言都是这样被执行,ASM/C/C++都被编译成机器代码然后交由机器执行,Java被交由JVM执行,等等一切语言都是如此,且一但如此,本身就成了“可运行的程序”,就不能说“不需要创建一个可运行的程序”。尤其是Java,它甚至不生成本地代码,请问UML2比Java现在在何处?

而“在模型层次上完成,然后自动生成代码。”就有点傻气了,都到这份上了,还谈什么“自动生成代码”,我不知道该评价它为不自信还是小家子气?
“手工书写代码将不再需要,甚至代码的检查也将几乎不再需要”---这就开始在偷换概念混淆视听了。什么是代码,什么又是代码检查?难道完成UML2模型的文档不是代码?难道一定要写成mov ax,1和int i=1的才是代码?
让我们按照Forgie的梦想来设想UML2的世界:“手工书写代码将不再需要”---于是UML2er使用臭脚丫来握住鼠标和打字。打出什么字和画出什么图将无所谓,因为Forgie说“代码的检查也将几乎不再需要”。

让我们再回到“抽象层次的增加将会导致编写代码,不管是Java还是C++,变得不再紧要,就像今天的汇编语言一样。”这句话上,似乎在Forgie眼中一切语言都是为了建模,嘿嘿。正好昨天跟vckbase上的一个朋友聊天,谈软件开发中什么是最重要的,我说“设计出符合客户需求的功能最重要”,而朋友说“模式、模型、OO、UML等最重要”,我想Forgie也是这个意思吧,在Forgie眼中软件不再需要开发,已有的东西足够了,只要需要拿来应用即可,就如同黑屋子里的纺织女工认为缝纫机、绣花机、挂烫机等等足够了,活着的机械工程师会被纺织女工淘汰掉,哇塞。
还有说出“不再紧要,就像今天的汇编语言一样”这样的话,足够看出其无知无识,汇编语言也许对不需要任何技术含量的MIS/ERP/WEB应用而言是没有用处,但在IT中MIS/ERP/WEB的地位其实是很低的,低得就像一个普通的纺织女工对纺织业的影响一样。

看这N年来的关于UML的话题,可以看出UML极力想从一个建模语言晋升为一个计算机语言,我觉得成功的可能性等于0,虽然UML一直和Java狼狈为奸着,但 UML想从建模语言晋升为计算机语言 比 Java扩展上建模的能力 要难多了,UML摸了摸大象的尾巴,就把大象的尾巴误认为大象了。


--------------------next---------------------

阅读(395) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~