第29卷 第1期 VO1.29 NO.1 计算机工程与设计 Computer Engineering and Design 2008年1月 Jan.2008 基于MDA的Web应用系统开发研究 洪 霞, 王光明 (浙江工商大学计算机与信息工程学院,浙江杭州310018) 摘要:模型驱动架构MDA是由OMG(object management group) ̄.织定义的一个软件开发架构。平台无关模型PIM是MDA 的核心。介绍了MDA的基本思想,探讨了MDA支持工具的发展,进而论述了利用AndroMDA进行Web应用系统开发的方 法,并通过实例详细描述了构建PIM模型的过程。 关键词:模型驱动架构:平台无关模型;统一建模语言;Web应用系统;建模 中图法分类号:TP3l1.5 文献标识码:A 文章编号:1000.7024(2008)01—0239-04 Research on web application system development based on MDA HONG Xia WANG Guang—ming、 (College of Computer and Information Engineering,Zhejiang Gongshang University,Hangzhou 3 1 001 8,China) Abstract:Model driven architecture(MDA)is a software development architecture defined by OMG【object management group). Platform independent model(PIM)is the core of MDA.The essential idea of MDA is described,the development of tools supporting MDA and the approach of web application system development using An ̄oMDA are discussed,and then the process of creating PIM is discussed in detail by an example. Key words:MDA;PIM;UML;web application system;modeling 0 引 言 降低开发风险、提高效率、实现可快速地维护升级以及处 于不同平台应用系统的互操作性是当今软件开发所要解决的 电子商务、制造业、财务、电信等不同领域 。 在MDA中有两种重要的模型,它们是平台无关模型(plat— form independent model,PIM)和平台相关模型(platform speciifc model,PsM)。平台是指使用特定的技术,在特定的硬件基础 问题。将业务逻辑模型与底层实现平台相分离是一个可行思 路。近几年发展起来的模型驱动架构技术(modeldrivenarchi— 上实现的基础设施,如CORBA平台、EJB平台等。MDA的核 心是PIM,它是一个软件系统功能和结构的形式化规范,与具 体实现技术和硬件环境无关0 。因此创建PIM的过程与具体 的平台无关,它是最抽象和协同性最高的模型。PIM必须具 tecture,MDA)就是遵循此思想的一个很好的解决方案。MDA 定义了一种IT系统描述方法,将系统功能描述从特定技术平 台的功能实现描述中分离出来。它的提出改变了软件设计、 实现和维持的方法,提高了系统的可移植性、互操作性和重用 性“ 。本文根据MDA的思想,选用MDA支持工具进行Web 应用系统开发,实践证明能有效提高系统开发效率,及时响应 用户的需求。 备自动生成PSM所要求的足够信息量。平台相关模型PSM 是基于某一具体目标平台的形式化规范 。根据特定平台和 实现语言的映射规则,PIM模型被自动转换为一个或多个 PSM。MDA的开发过程就是从PIM到PsM,然后从PSM生成 应用程序代码和测试框架的过程,每一层次模型的转化都是 用工具自动实现的,如图1所示。 1 MDA简介 MDA是由OMG(object management group)组织定义的一 个软件开发架构。其使用UML、UMLprofile以及MOF、CWM 组成可扩展的MDA建模语言环境,并在此基础上构建业务导 图1 MDA开发流程 向的模型。只要变换技术平台,模型即可转换成.NET、Java、 CORBA、web Services、XMI(XML meadatta interchange)等架构, 提供各类服务、事件处理、安全机制、交易及目录服务等商务 MDA开发方法在改善系统开发中发挥了重要作用 :①提 高了生产率。MDA将开发人员的注意力转移到开发PIM上, 使开发人员免于陷入具体的实现细节当中,可以花更多的时 间去解决业务逻辑的问题。②增加了可重用性。MDA关注 应用。甚至可随着抽象模型的调整,将商务应用对应到医疗、 收稿日期:2007—02—25 E-marl:hongxiawjm@163.tom 作者简介:洪霞(1981一),女,浙江丽水人,硕士研究生,研究方向为电子商务; 王光明(1945一),男,上海人,教授,博士生导师,研究方 向为电子商务、管理工程、软件工程等。 ・——239・—— 维普资讯 http://www.cqvip.com 的是平台无关的模型,当新的热门技术出现时,可以使用现有 的PIM模型来产生新的实现,并迅速地将PIM转换为新的PSM 和代码;开发多个功能相似的系统时只需对PIM模型进行少 量的修改。③增加了互操作性。MDA不仅从PIM生成PSM, 还生成连接PSM的桥接器。④延长系统生命周期。需求变更 或者修改功能时可以迅速反映,这在很大程度上延长了系统 的生命周期。 2 MDA在AndroMDA中的实现 在MDA思想的具体实现技术上,目前主要有3种流 派:①可执行的UML。属于这种类型的实现有xUML、Open. MDX等。②领域特定语言(domain speciifclanguage,DSL)的开 发方法。针对特定领域扩展UML或使用MOF构建新的元模 型,建立领域特定模型(domain speciifc model,DSM),开发人员 应用DSM进行开发。③模型转换(包括代码生成)的开发方 法。从计算独立模型(computing nidependent models,cIM)得到 PIM,应用目标平台的平台描述模型(platform description model,PDM),通过标记或者其它途径进行模型转换,得到 PSM。这是主流的实现方法,AndroMDA、ECO II、EMF、Arch. Styler等都属于这一类的实现。本文探讨第3种方法,采用 AndroMDA为主要的模型转换工具。目前MDA支持工具的 研发正处在成长期,工具的自动化程度和灵活性还有待改进。 2.1 AndroMDA概述 AndroMDA是一个开源的遵循MDA规范的代码生成框 架,它从CASE工具中读入XML元数据交换(Ⅺv盯Lmetadatain- terchange,Ⅺm)文件格式的UML模型,并生成全部可配置的应 用程序以及其它组件 。对于实际的MDA建模,可以采用任 何能导出(或保存)标准XMI的工具,常用的有ArgoUML,Ma- gicDraw,RSM(rational software modeler/rachitecO,Poseidon等。 AndroMDA使得设计师能够抽出更多的时间专注于高质 量的模型设计,而且维护起来也更加方便,只需修改模型,然 后重新自动生成代码即可。可以将AndroMDA理解为一个转 换引擎,为了支持任意的目标架构,它提供了基于特定平台的 转换包。一个转换包由一套定义生成格式的模板文件组成。 AndroMDA目前已提供的转换包有:AndroMDA.Spring、Andro. MDA.EJB、An&oMDA.Webservices、AndroMDA.Hibernate、 AndroMDA.struts、An&oMDA.JSF、An&oMDA-Java、An&oM— DA.XSD,分别支持相应架构的生成。AndroMDA也允许用户 编写自己的转换包,支持特定的软件工具和硬件环境 。 2.2 AndroMDA应用程序的结构 An&oMDA生成的应用程序采用了现代企业应用程序流 行的三层体系结构,包括表现层、业务层和数据层,其中数据 层又可以细分为数据访问层和数据存储层,如图2所示” 。 表现层:表现层包含了应用程序中需要和用户交互的组 件。例如:Web页面,Rich.clietn表单,用户交互处理组件等。 AndroMDA当前提供两种技术来构建Web基础的表现层: Struts和JSF。 业务层:业务层封装了应用业务功能的核心。业务组件 只提供服务接口,而隐藏了复杂的业务逻辑。业务层主要由 An&oMDA生成的服务组成,使用Spring框架来配置服务。 -——240-—— 图2 AndroMDA应用程序结构 AndroMDA也能生成Web Services服务或EJB,还能为JBPM 引擎生成业务过程和工作流。 数据访问层:数据访问层提供了一种简单的访问和操作 数据的应用程序接口。这一层抽象底层数据访问技术,因而 允许业务层重点关注业务逻辑。An&oMDA以流行的对象关 系映射(objectrelationalmapping,ORM)T具Hibernate为基础生 成数据访问层。 数据存储层:企业应用将数据保存在一个或多个数据存 储结构中。数据库和文件系统是两种常用的数据存储结构。 由于An&oMDA使用Hibernate来生成对数据的访问,用户可 以使用Hibernate支持的任何数据库,常用的如:Mysql、SQL Sevrer、Oracle、DB2等。 3 PIM模型的描述 本文以一个简化的电信网上彩铃订购业务处理系统为 例,说明平台无关模型的描述方法。 3.1彩铃订购流程 电信彩铃(coloring ring back tone,cI T)业务以其新鲜时 尚、个性鲜明、业务特征新颖、用途广泛等特点赢得了广大用 户的喜爱,已经成为继短信之后电信增值服务的又一个热点, 也成为运营商的业务重点,其用户群涵盖了手机用户、小灵通 用户和固网用户。在本例中,CRBT平台是电信彩铃业务的系 统平台,主要保存用户彩铃订购情况的具体信息。用户订购 彩铃的流程如图3所示。用户通过Web页面发起业务请求, Web页面调用JavaBean接口将相关的参数传递给JavaBean; JavaBean再通过Socket通讯发送消息包到CRBT平台,实现对 CRBT平台的功能调用;最后返回处理结果,记录操作日志。 3.2模型构建 An&oMDA把实现MDA机制的规范和转换封装了起来, 用户只要在类似UML的环境下建立PIM模型的用例图、类 图、活动图等,即可按照An&oMDA的步骤生成可执行的应用 程序。这里采用MagicDraw建模工具来建立系统的PIM模型。 MagicDraw是一款UML建模和面向对象系统分析设计 的工具,支持J2EE、c撑、c++、CORBA IDL、.NET、XML Schema、 WSDL、数据库建模、DDL生成和反向工程,是An&oMDA社 区中建模工具的主要选择 。 维普资讯 http://www.cqvip.com 参与的业务的流程一 ,如图5所示。 图5的业务过程模型描述了用户订购彩铃的实现过程, 用活动图来表示。系统将彩铃信息显示在用户界面上,用户 选择购买彩铃或查看彩铃详细信息及彩铃供应商的信息;用 户若选择了购买彩铃,则将其选择的彩铃加入用户购物篮,系 统提示用户输入账号和密码;用户输入相关信息后,连同彩铃 信息一起作为一个消息包通过Socket发送到彩铃业务平台 图3彩铃定购业务流程 (CRBT平台),记录用户购买信息,并确认彩铃购买;最后把操 作记入日志文件。 图5中的第一个动作节点采用动作getAllRings()来获取 彩铃,其后“过渡”上的参数叫做页变量,它的作用是把参数传 (1)实体模型的描述。实体模型主要描述系统中需要处理 的数据。它的描述方法类似于没有成员函数的类的描述方法 。 用类图来表示,如图4所示。 <<Entity>> Ring 递给接下来产生的JSP页可。此处把Collection形式的彩铃传 <<Entiy>> tUser Q Q 递给下一动作节点,并将所有彩铃显示在应用程序的用户界 面上。第二个动作节点中的<<FrontEndView>>构造型告诉 AndroMDA,这个节点与最终用户相关,应当添加到用户界面。 <<Identifier>>+ringld:Long +ringName:String O一 <<Idenli6er>>+userId:Long O. +account:String +name:String ++author:String +supplier:String +price:Float +expiredData:Date +info:String creditcard:String +password:String +address:String 在第二个动作节点之后,用户可以选择带参数的不同“过渡” 分支,如表示查看彩铃提供商信息的go(ringld:datatype::String, supplier:datatype::String)或此条彩铃的详细信息detail(ringld: datatype::String,info:datatype::String),或者购买彩铃buy(ringld: 图4实体模型类图 datatype::Stirng)。这些参数叫做事件参数,如果使用了 事件参 数,AndroMDA可以知道服务器端需要向客户端请求这些参 数。用户或者要在Web界面上选择这些参数的内容(如动作 节点show irngs后面的事件参数),或者输入相应的参数值(如 动作节点enteraccountandpassword后面的submit事件参数)。 在“网上彩铃订购“的PIM中定义了两个实体,彩铃“Ring “和用户“User“。每个实体都有<<Enti哆>>构造型的标记,这 告诉AndroMDA它是一个Hibernate实体。模型在转换的时候 会使用Hibemate转换包,这样意味着不用担心应用程序持久 性的处理,因为它是自动生成的。每个实体只有一个主键, 用<<Identiifer>>构造型来表示。每个实体属性都有相应的类 型,值得注意的是,这些类型都是平台无关的。 (2)业务过程模型的描述。业务过程模型描述了软件系统 “过渡”上的标记值控制着激发相应事件参数的方式。如{ AndroMDA.presentation.Web.action.tablelink=rings.supplier},表 示用户若在显示彩铃的表上选择了供应商(supplier)这列,就会 激发go(ringld:datatype::String,supplier:datatype::String)事件参 get all rings (rings:datatype::Collection) getAllRings 0/defer go(ringld:datatype::String,supplier:datatype::String) <<FrontEndView>> show rings {@andromda.presentation web.action tablelink=rings.supplier @andromda presentation.web.action.type=hyperlink) detail(ringld:datatype::String,info:datatype::String) {@andromda.presentation web.action type ̄hyperlink, @andromda.presentation web action tablelink=rings.info) buy(ringld:datatype::String) t.——————1———— {@andromda.presentation.web <<FrontEndView>> enter account and password prompt user for account and password send massage to crbt platform tring,password ̄datatype::String) {@andromda presentation. sendPurchaseMassage()/defer confirm ring purchase confirmPurchase0/defer writelogfile writeLog0/defer 图5 活动图 一241— 维普资讯 http://www.cqvip.com
数。而{@AndroMDA.presentation.Web.action.type=hyperlink}表 明激发这次事件的动作类型是用户选择了一个超链接。 必须为每个活动图创建(并分配)一个控制器类。控制器 类是一个普通的类,它惟一的任务就是把来自用户界面的调 用转发到业务逻辑层,本例的控制器类为图6中的Purchase— Controller类。活动图中第一个动作节点的getAllRings0/defer 应用迅速响应来自商业和IT技术的改变,大大降低投资成本 和风险。本文分析了使用MDA支持工具AndroMDA进行Web 应用系统开发的方法,详细描述了构建一个简化的电信彩铃 订购业务PIM模型的过程。PIM模型主要解决了软件开发的 跨平台性,将企业应用描述和具体平台实现相分离,从而提升 了业务开发的抽象层次,降低了技术难度,缩短了业务的开发 周期,降低了业务的开发和维护费用。虽然当前的工具不足 以完全支持MDA的一系列观念,如100%代码生成、逆向工程 就是对PurchaseController控制器类第一个方法的引用。 等,但MDA将越来越成熟,成为新一代软件开发方法。 参考文献: 【1】Anneke Kleppe,Jos Warmer,Wim Bast.解析MDA[M].北京:人 民邮电出版社,2004. 【2】 鲍志云.应用MDA【M=1.北京:人民邮电出版社,2003. 图6控制器类图 【3】 Jishnu Mukefii,Joaquin Miller.The MDA guide ve ̄ion1.0.1 【EB/OL].http://www.omg.org/mda/presentations.htm. Basket类具有<<FrontEndSessionObject>>构造型,它代表 【4】 李锐.MDA在领域工程上的研究与应用【D】.大连:大连理工大 一个用户Session范围内的Session对象。它受控制器类的控 学硕士学位论文,2004. 制,控制器类的方法可以访问这个对象 。 【5】What is AndroMDA?【EB/0L】.http://galaxy.andromda.org/ 这样PIM模型就构建完毕了,接着只要在AndroMDA中 index.php. 使用简单的几个命令便能生成应用程序的代码。AndroMDA 【6】Naresh Bhatia.AndroMDA geRing started【EB/OL].http:// 一次性地产生这些代码并不再修改它们,这能够确保手工编 galaxy.AndroMDA.org/docs/ge ̄ing-started/java/index.htm1. 写的代码不被代码生成器覆盖。显然,通过使用AndroMDA 【7】 AndroMDA reference docs for 3.2[EB/OL].http://team.Andro— 或类似的MDA工具,可以将应用程序的开发极大地简化。 MDA.org/docs/whatisit.htm1. 【8】Introducnig MagicDraw[EB/OL].http://www.magicdraw.com. 4结束语 [9 9]陈晓燕,赵建华,李宣东,等.一个MDA支撑工具的设计与实现 MDA为系统开发和集成所带来的价值是巨大的,它能让 [J].计算机工程与设计,2005,26(1):37-43. (上接第104页) 4结束语 [4] Biermann H,Kristjansson D,Zorni D.Approximate boolean operations on lfee—ofrm solids[C].Computer Graphics Procee— 本文主要是在细分曲面具有凸包特征的情况下,选用轴 dings,Annual Conference Series.Califomia:ACM SIGGRAPH, 向包围盒法(AABB)和二部图结合的方法,识别和跟踪在细分 2001:185.194. 曲面求交中不必考虑的面进行细分曲面求交,减少面面求交 【5】Litke N,Levin A,Schr6der P.Trimming ofr subdivision surfaces 的次数,选择halfedge数据结构实现细分曲面求交算法。 【J].Computer Aided Geometric Design,2001,18(5):463-481. 本文只是讨论了细分曲面具有凸包特征的情况下细分曲 【6] Severn A,Samavati EFast nitersections ofr subdivision surfaces 面求交的实现,对于细分曲面的自交没有提出有效的处理方 [J].Compute science,2006,3980(5):91—100. 法,这将是我们以后工作的重点和难点。 【7】 Zhou Hai,Zhou Laishui.Novel method for exactly evaluating hte energy ofCatmul1.Clark subdivision surfaces[J].Journal ofSou- 参考文献: hteast University,2005,21(43I:453-458. 【1] Wu X,Peters J.Interference detection ofr subdivision surfaces[J]. 【8】 Vemuri B C.Efifcient and accurate collision detection for Computer Graphics Forum,2004,23(3):577-584. grnaular flow simulation[J].Graphical Models and Image Pro— [2] Grinspun E,Schr6der ENormal bounds ofr subdivision—surface cessing,1999,60(2):403-422. interference detection[C].Proceedings oflEEE Scientiifc Visuali [9 9]Zachmann G.Minimal hierrachical collision detection【c】.rPo— zation.California:IEEE Computer Society,2001:333—340. ceedings of hte ACM Symposium on Virtual Reality Software 【3】Lanquetin S,Foufou S,Kheddouci H,et a1.Computing sub— and Technology.USA:ACM Press,2002:121-128. division surface intersection[EB/OL].http://www.wscg.ZCU.cz/ 【10】Max McGuire.nle half-edge data structure[EB/OL].http:// wscg2003/Papers2003/HO2.pdf. www.lfipcode.com/articles/article hal ̄dge.shtm1. 一-——242-——
因篇幅问题不能全部显示,请点此查看更多更全内容