将一种特定领域的建模语言翻译为较不抽象的形式的办法是将其翻译为已经有翻译器存在的DSL。当建模语言以这种方式相关连时,它们会通过表3中的网格组织起来。网格的列代表内容,行代表抽象的级别。典型地,对于一种给定的应用程序类型(例如一个B2C商务应用程序),网格的形状和内容代表了一套模型、源代码文件和其它的产品。在创建和部署这类应用程序时,必须开发它们来正确表现功能性和非功能性的要求。相类似地,通过网格的路径代表了必须执行的活动,以及定义开发过程流的产品之间的转换。
一般来说,应用程序开发是基于不断地精化过程,这一过程从网格的左上角开始,业务需求捕获从这里开始,到右下角数据最终被加载到数据中心的服务器上为止。同时,这一过程也基于从右下角到左上角不断地抽象过程。这一过程的技巧是提供双向同步,或者至少是抽象层之间的双向协调,这样,这种自然的从上到下、从底端到顶端的迭代过程就能汇聚起来。通过网格某一路径就能确定创建一个应用程序片断的最好路径,并具有网格所定义的类型。它规定了必须开发的产品、满足需求必须执行的步骤、需要建立的体系结构、产生的实现,并且确保应用程序能正确进行部署。
在概念阶段,从业务视角来考虑重点关注的是业务用例的分析,通过对业务用例的分析转化出相关的业务对象和业务流程,同时该分析必须基于企业组织结构和岗位角色,通过对企业的组织结构分析抽象出系统的权限和角色模型.这是业务对象和业务流程都必须要依赖的基础数据.对于企业的业务对象分析,可以采用传统的ER关系建模或采用面向对象的概念建模,但最终都要解决数据通过数据库的持久化存储问题.
在逻辑阶段,企业组织结构将抽象为系统的权限,角色和基础数据的建模.业务对象将抽象为消息,对象或业务实体.而业务流程将通过系统的工作流模型进行建模.从概念阶段->逻辑阶段主要解决了从现实到抽象的建模.通过逻辑阶段解决了现实世界问题域的抽象描述,但并不重点去解决整个抽象模型如何实现的问题,因此也可以理解为在该阶段重点是解决MDA中的PIM平台无关模型.
在实现阶段重点是解决逻辑模型如何实现,抽象的逻辑模型到具体实现语言的转化,具体的数据的持久化的考虑,系统的具体部署等相关问题.因此在该阶段重点是解决MDA中的PSM平台相关模型.
Web Service的设计和部署
作为示例,让我们再次浏览表3的网格,在右下方中(如表4)我们能更详细地观察到网格中的视点和彼此的联系。在此表中,长方形代表领域特定的建模语言,虚线代表细化转换,实线代表约束。
表格演示了以下内容:
" Business Entity DSL定义业务实体抽象,它描述了有效的、消息驱动的、松散耦合的数据服务,并映射到一个对象-关系框架上。业务实体的例子,包括顾客和订单。(要注意对业务对象概念的理解,业务对象概念既不等同于数据表,也不等等同于某一个具体的类)
" Business Process DSL定义业务活动、角色、依赖抽象,以及处理模式的一个分类,可以用来组合模式,形成业务处理规范。Enter Negotiated Order是业务处理的一个例子,它可使用三种处理模式:一种用于用户界面处理,用于创建购物车;一种用于顺序处理,用于提交订单,执行信用检查;一种用于规则驱动的处理,用于计算折扣。(在这里要理解两种业务流程,一种是指具体的业务的处理流程,这类可以通过Biztalk来实现;另外常见的是针对业务对象的审核和审批流程,这类要有专门的工作流模型来支持实现)
" 这两种DSLs都映射到一个Web Service DSL,它描述了一个面向服务的应用中相互协作的Web服务。Web Service DSL可用于描述如何将业务实体和处理实现为Web服务,如何定义它们交换的消息,使用什么协议来支持它们的交互,使用抽象来隐藏底层Web 服务实现的细节。预先定义的Web 服务交互模式,如服务 fa鏰de、服务接口和gateway2,可用于确保应用程序的体系结构使用最优的方案。模型方面,如安全策略,可在模型中的多处被定义和使用,也就是对一组被选择的服务端口进行操作。(通过Web Service又很好的体现了架构的松散耦合和SOA思路)
" 可以用一种称之为Logical Systems Architecture DSL的DSL来描述数据中心的配置。这样就可以为数据中心提供用一种网络式的、按照逻辑服务器和连接来描述的、规模不变的定义。这也正是使用Web Service DSL和安装软件、配置设置来描述的Web服务的部署目标。数据中心的标准配置,如msdn.microsoft.com 的Microsoft System Architecture模式,可用于基于这种DSL的模型。
" 来源于某一模型的信息可用于开发另一模型。业务实体和处理之间、Web 服务和逻辑服务器之间的交互就是例子。后者最引人注意,因为它可用于设计部署。将部署基础结构的知识用于Web服务设计,这些对设计生产约束,可以避免部署问题。类似地,反之,如果设计将被部署在某一给定的逻辑服务器类型,我们可以校验所部署到的服务器是否具有正确的类型,是否安装了正确的软件,配置是否正确。我们将这些称之为部署设计,因为它说明了分布式应用程序在部署时出现的一些普遍问题。
" 在设计时,映射驱动模型之间的转换。例如,我们使用移植将Web服务模型映射到目标平台上的多个产品的实现上,包括组成框架(如ASP.NET)的类、各种配置和策略文件。