所在位置:UML新闻 - 内容 论坛精华    
软件工厂+DSL: 微软对MDA的回答
Stephen Swoyer

[2004/12/1]

两年前,OMG推出了MDA,用UML来自动化来自应用、中间件或者定制组件的软件集成。顾问公司META集团的副总裁Thomas Murphy认为,从某种程度上说,软件工厂和与之相关的领域特定语言DSL(Domain Specific Languages)的概念,是微软对MDA的回应。

“MDA是OMG的软件工厂。微软的目标是DSL领域,因此很多事情都是建立在观察建模以及事情运转的不同视角(View)的价值之上”
那么,微软认为一个DSL是什么呢?微软企业框架和工具组的架构师Keith Short指出,许多开发人员已经在使用DSL工作了-虽然他们自己还不知道。

“SQL就是我们用得很好的一种DSL”,Keith解释,开发人员使用SQL的过程中并不需要了解关系数据库是如何工作的。

好,那么这和软件工厂的概念有什么关系吗?对初学者而言,微软把软件工厂作为自动化一些手工任务和封装领域知识的一种方式。举例来说,领域知识可以被封装为代码或者组件,并可以容易地被复用。Short认为,这也就是DSL的设计目的:从开发人员的角度来看,DSL可以帮助抽象某个特定领域的复杂度(例如架构、过程、技术标准等)。如Web services就很复杂,要求开发人员要了解哪些service是可用的,如何连接的细节等。Short指出,“设想你可以把这些抽象到一个DSL,这个DSL就是关注特定开发环境的工具”。

和Web services一样,SQL 是多年来标准化努力的成果。微软和其它开发商都有义务来开发好的工具帮助开发人员创建自己的DSL。Short说,“要实现理想的场景,我们要做的事情之一就是要帮助设计人员简单地构建DSL并实现它们……”

这个软件巨人在九月的OOPSL会议上发出了DSL的呼吁,并捧出了一个新的工具集,帮助开发人员在图形化环境下定义、编辑DSL。Short指出,藏在该工具集后面的想法就是使得“软件工厂的创建者可以更容易地描述一些事物之间的交互,例如源代码和schema之间。”

微软的动作已经引起了开发人员的关注,即使是像Michael Hudson这样过去对微软的技术通常不屑一顾的程序员。Hudson是Praxis公司的程序员,J2EE专家。他认为DSL是微软的软件工厂中最有震撼力的思想。但他认为很多思想都是从其它的技术例如XDE中借用过来的。XDE是Rational支持MDA方法的RAD工具。

Hudson 说,“我觉得他们找对了关键的地方,那就是:高层建模必须用领域特定的语言来描述。你可以更快地得到你所面对领域的业务逻辑,开发过程更快更有效。我觉得,软件工厂这个概念如果能够获得成功的话,应该是因为在DSL上的创新。”

开发人员是可以将他们的经验用DSL的方式进行封装的,这是完全有可能的。这实际上也是他们对自己工作或多或少的抽象。

但Thomas Murphy认为这种事情将不会发生,“我们已经推动这个概念很久了:通过抽象来简化软件开发,使得谁都可以进行软件开发。但未来还是会需要大量有创造力的开发人员,在软件开发的最前线去开发组件、进行设计”。

(自adtmag,UMLChina袁峰 摘译,不得转载用于商业用途)