基于改进的MVC模式的模型驱动开发方法
2014-04-21覃国蓉周德伟何涛
覃国蓉,周德伟,何涛
(深圳信息职业技术学院软件学院,广东 深圳 518172)
基于改进的MVC模式的模型驱动开发方法
覃国蓉,周德伟,何涛
(深圳信息职业技术学院软件学院,广东 深圳 518172)
为了能够快速实现“云+端”系统种类繁多的客户端,提高系统的开发效率和模型的复用性,提出了一个基于改进的MVC模式的模型驱动开发方法IMVC-MDD,并对该方法进行了形式化描述。IMVC-MDD基于改进的MVC模式将系统模型细分为可并行开发的GUI模型、业务模型、数据模型和通用系统功能模型,使用WordNet本体保证模型合成时的一致性。细分模型使得各个子模型可以并行开发,从而提高建模效率和质量,获得更好的系统复用性和可移植性。实际应用验证了该方法的有效性。
模型驱动开发;模型合成;改进的MVC模式;WordNet本体
随着移动互联网和云计算的兴起,“云+端”作为一种新型应用形态越来越普及。其中“云”是基于云计算技术的服务端,而“端”则是指PC及各类智能终端。“云+端”系统不仅要提供Web客户端和桌面版客户端,同时还需要为种类繁多的移动智能设备提供不同的客户端(APP)。这些客户端的不同主要体现在图形用户界面(Graphical User Interferface,简称GUI)的实现上。所以,研究支持在不同类型的用户界面之间进行快速移植的软件开发方法具有重要的实际意义。
MVC模式将系统分为Model、View和Controller三部分,可以有效分离显示和业务逻辑。理论上,采用MVC模式进行开发可以方便系统在不同用户界面之间移植。但是经典的的MVC模式存在Controller与View紧密耦合,而且所有核心功能和数据都集中在Model层——Model层功能过于复杂的弊端。另外,单纯使用MVC模式还无法提供系统在各开发阶段的可追踪性。
模型驱动开发方法(Model Driven Development,简称MDD) 用模型取代代码作为开发工件,提升了软件开发的抽象层次,分离了业务功能分析设计和实现平台之间的紧耦合关系,可以有效的解决传统软件开发技术中存在的生产效率问题、移植性问题、互操作问题以及维护和文档问题。
本文针对移动互联网下的工程应用需求,研究适用于MVC模式开发的系统的模型驱动开发方法,提高模型的复用性和系统开发效率,以便于系统在不同类型客户端之间进行快速移植,有效解决不同客户端适配难度大的问题。
2 相关研究
文献[1]利用分层模型低耦合性的特点MVC设计模式,新的MVC 模式分为5 层:UI、Service、BO、DO、DA,对UI 进行了泛化,通过抽象类来进行数据传递。改进的MVC 模式具有低耦合、用户接口和功能模块分离的特点。这种改进通用性强,但是由于没有提取横切关注点,不能支持面向方面编程,所以在提高可复用性方面还有改进空间。
文献[2]则针对基于服务的移动应用开发,提出了一个平衡的MVC架构,将耗资源的功能部署在服务器端,用于解决移动设备的资源限制问题。但是该研究没有引入MDD。
文献[3]提出一个用于开发移动应用的模型驱动开发方法,使非专业的用户可以轻松地设计移动应用程序。与本文不同,该研究的成果只是处于概念阶段,而且文献的工作也没有实现任何转化工具。文献[4]的研究更进一步,该方法采用元模型描述移动应用需求,用户可用DSL来建立模型。该方法需要熟悉DSL建模,在实际开发中创建详细的模型也不是轻松的工作。
文献[5]将中小型企业信息化模型划分为数据模型、权限模型和界面模型三个部分,以便能有效的提高模型准确率以及建模效率。由于其模型细分没有基于设计模式,在实践操作上有一定难度,而且该研究也没有考虑模型合成时的一致性问题。
文献[6]将设计模式引入到MDD中,以简化模型的设计难度并提高MDD模型的复用性。该研究针对所有设计模式,建模方法和转换规则具有较强的可扩展性和通用性,但也在一定程度上增加了规则的复杂性。
文献[7]提出了一种语义Web服务发现方法,该方法基于WordNet[8]本体标注Web服务的操作名、参数以及用户请求,并且采用文献[9]的方法进行语义比较。
本文受文献[1]改进MVC模式降低模块耦合度和文献[5]将设计模式引入MDD简化模型的设计难度并提高模型的复用性,以及文献[4]对模型进行细分提高建模效率,[7]引入WordNet进行语义匹配的启发,提出一个改进的MVC模式,并基于该模式提出一种MDD开发方法Improved MVC pattern based MDD,简称为IMVC-MDD。 IMVC-MDD基于改进的MVC模式将系统模型细分为可并行开发的多个子模型以简化建模难度,便于系统在不同类型客户端之间快速移植,同时该模型还使用WordNet本体以保证模型合成时的一致性。
2 IMVC-MDD开发方法
2.1 IMVC-MDD的PIM
2.1.1 改进的MVC模式
针对经典的MVC模式的缺陷,本文提出改进的MVC模型,分为界面层GUI、业务层Business、数据层PO、数据访问层DAO和通用系统功能层Util。GUI层对应MVC模型中的View/Controller的组合,负责界面的生 成、显示与用户的交互;Business层、PO层、DAO层和Util层则是对MVC模型中的model层的扩充和细分,分别负责处理业务、数据对象、数据访问和日志、协议转换、安全性等一些领域无关的系统的通用功能。
这样的改进一方面消除了原先MVC的Controller功能过于依赖View而引起的模块间的耦合,另一方面也使得层次更加清晰化,各个层次的责任更加明确,为更好的软件复用提供了有利条件,特别是将系统通用的功能作为Util层独立出来,可以提取横切关注点支持面向方面编程,从而可获得更好的复用性。
2.1.2 IMVC-MDD的PIM
本文基于改进的MVC模型,将系统的PIM模型细分为界面展示模型GUI Model、业务模型Business Model、数据模型Data Model和系统通用模型Util Mode,通过WordNet本体将各个模型合成为一个整体。改进的MVC模式和IMVC-MDD的PIM对应关系如图1所示。
四类模型的划分降低了PIM模型的耦合程度,可以发挥不同建模专家的特长,并充分利用界面、业务和数据方面成熟的建模工具(如BPMN 2.0 Modeler for Visio description ,PowerDesigner,LiquidApps等),从而提高建模效率和模型的准确性。当完成一种客户端的系统(如浏览器版)时,可通过相关工具快速生成其他类型客户端的系统。
图1 改进的MVC模式和IMVC-MDD的PIMFig.1 Improved MVC pattern and PIM of IMVC-MDD
IMVC-MDD的PIM可以用一个五元组来描述,即PIMmvc=<MGUI,MBusiness, MData,MUtil,OWordNet>,其中:
(1)MGUI表示GUI Model,对应改进的MVC的GUI层,MGUI可以用一个三元组来描述,即MGUI=<CGUI,CProcess,VO>,其中CGUI表示GUI组件,用UIML (User Interface Markup Language,用户界面标记语言)来描述;CProcess,表示处理GUI事件的组件,VO是GUI层显示数据的载体,CProcess,和VO都用类图来描述。如对于web版的系统登录功能来说,其CProcess,最终转化为LoginAction类,其VO最终转化为AccountVO类。
(2)MBusiness表示Business Model,对应改进的MVC的Business层,MBusiness可以用一个二元组来描述,即MBusiness=<Cservice,BO>,其中表示服务组件Service Component(包括接口和实现),BO表示处理业务的对象的集合,Cservice和BO都用类图来描述。同样是web版的系统登录功能,其Cservice为AccountService接口和AccountServiceImpl类,其BO为AccountBO类;
(3)MData表示Data Model,对应PO和DAO层。考虑到一般IDE工具,如Hibernate Tools,都会根据数据库同时自动生成PO(在Hibernate Tools中为domain)和DAO层的代码,所以把这2层放到一个模型中。MData可以用一个二元组来描述,即MData=< Cdao,PO>,其中Cdao表示实现数据库访问的组件DAO Component(包括接口和实现),PO表示与数据库表对应的持久化对象的集合,Cdao和PO都用类图来描述。同样是web版的系统登录功能,其Cdao为AccountDao接口和AccountDaoHibernate类,其PO为AccountPO类;
(4)MUtil表示Util Model,对应Util层,MUtil可以用一个三元组来描述,即MUtil=<CLog,CSecurity,COther>,其中CLog表示日志方面组件,CSecurity表示处理认证和授权的安全方面组件,COther表示其他公共方面组件,如数据库连接池、线程池、错误处理等相关类和方面。如果使用ApsectJ,则 CLog对应用于日志操作的Log类和用于织入日志操作的方面LogAspect,而CSecurity则对应于授权方面AuthorizationAspect和认证方面AuthenticationAspect,CLog,CSecurity和COther都用类图来描述。
(5)OWordNet是基于WordNet的本体,用来解决以上4个模型合成时的命名不一致问题,具体将在3.2节中详细描述。
2.2 基于WordNet本体的模型合成方法
2.2.1 IMVC-MDD模型合成的难点
IMVC-MDD的各子模型的耦合程度低,只存在一个子模型中的元素关联(或引用)另一个子模型中的元素时所引起的耦合。这种耦合也会产生一致性的问题,主要表现在以下2个方面:
(1)被关联的类不存在,需要在相关模型中增加;
(2)被关联的类存在,但是在另一个类 中使用的类名不同,需要在2个模型中解决命名不一致的问题。
模型合成时对(1)的处理只需要进行名称匹配增加没有匹配的服务类即可,但是(2)的处理必须进行语义匹配,否则无法解决命名不一致的问题。
2.2.2 基于WordNet本体的模型合成方法
针对IMVC-MDD的模型合成问题,本文基于类命名规则,并引入WordNet本体进行语义匹配处理命名冲突,保证系统模型合成时的一致性。
3.2.2.1 类命名规则
为了便于语义匹配,IMVC-MDD使用如下类命名规则:
(1)通用规范:指有类名都必须遵循的规范。假设 word表示正确的首字母大写的英语单词,abbr表示英语缩写,则该规则可以形式化表示如下:
即类名使用英语单词或英语单词组合或英语单词与缩写的组合,单词的首字母大写。
(2)Business类及接口命名规则:服务接口命名为αService,如AccountService;实现服务接口的类命名为αServiceImpl,如AccountServiceIml;BO类命名为αBO,如AccountBO,其中α为满足公式(1),即通用规则的标识符。
(3)Data类及接口命名规则:PO类命名为αPO,如AccountPO,Dao接口命名为αDao,如AccountDao,实现Dao接口的类命名为αDaoγ,如AccountDaoHibernate。其中α为满足公式(1)的标识符,γ表示实现Dao的技术,如Hibernate,Ibatis或JDBC。
2.2.2.2 基于WordNet本体标注的模型合成规则
WordNet是Princeton 大学研发的包含语义信息的一个字典,所以又被称为WordNet本体库。WordNet的名词部分按照同义词集合和词汇层级来组织的,可以根据词汇间的层次关系来计算两个名词间的相似程度。
IMVC-MDD对建立的模型采用如下模型合成规则:
(1)首先对所有模型中的类名用WordNet本体库中的本体进行标注,为类名赋予语义概念,以便于进行语义级别的匹配和比较。由前面的命名规则可知,类的命名不一定是一个正确的英文单词,而只是组合的标识符,我们按照下面几个方法来处理:①单个英文单词:直接用上位词标注;②单词组合,如BankAdmin,根据大小写将词组分割成单词,再对每个单词标注;③缩写,如PO,Admin:直接使用缩写作标注;④找不到上位词的单词:保留原词。
(2)然后匹配需要关联其他类的类(简称请求类)和被关联的类(简称服务类)。匹配的依据就是各自标注的本体之间的语义相似度,这样请求类和服务类的相似度就转化为本体之间的语义相似度。本体之间的语义相似度有很多可以使用的方法[9-11],这些方法在特定领域被证明是可行的。文献[9]提出了本体之间的相似度的计算公式:
其中,l表示2个概念间的最短路径的长度,h表示2个概念在树中最近的相同父辈概念在树中的高度,α,β≥0是调节因子,文献[8]中的实验表明当α=0.2,β=0.6时效果最佳。由于该方法通用性较好,容易实现,因此,同文献[6]一样,本文也直接采用该方法计算本体之间的相似度。
(3)匹配结果处理。如果匹配成功,则统一请求类和服务类的类名;没有匹配成功,则在相应模型中增加与请求类名相同的服务类。
(4)对各个最终的子模型进行合成,得到整体模型。
由于基于WordNet本体标注的模型合成规则可消除命名冲突,所以能保证合成后的模型的一致性。
2.3 IMVC-MDD开发过程
IMVC-MDD采用轻量级的开发过程,支持模型复用,如图2所示。
在系统需求分析阶段需要形成软件系统的CIM模型,这个CIM模型包括系统用例图和活动图。每一个用例至少对应着一个活动图。
系统设计阶段得到系统的PIM,是IMVC-MDD开发方法最重要的阶段。在这个阶段的PIM,GUI Model采用UIML和类图来描述,Business Model、Data Model和Util Model采用类图来描述,类的命名遵循命名规则。首先,查找可复用的模型库,看是否有可复用的GUI Model、Business Model、Data Model和Util Model,如果有,则对其进行调整作为本系统的初始子模型。如果没有,则分别建模由CIM得到对应的初始子模型;然后使用WordNet本体进行语义匹配消除子模型间的冲突,得到修正后的模型,将其中可复用的子模型入库。
图2 IMVC-MDD开发过程Fig.2 Development process of IMVC-MDD
PIM模型到PSM模型转换过程和PSM模型到代码的生成过程属于系统转换和实现阶段。IMVC-MDD的PIM模型的细分使得在这2个阶段可以充分利用各模型建模方面成功的方法和工具,自动得到对应的PSM模型和源代码。
最后在代码调整和完善阶段,开发者对生成的代码进行一定的调整和补充,如界面层代码的调整和业务层代码的完善补充,得到可运行的软件程序。
2.4 应用实例
“深圳市龙岗区义务工作者联合会义工综合信息管理平台”为第26届世界大学生运动会配套服务系统,最初系统只是开发了浏览器版,后来用户又要求开发桌面版和Android App版(手机版)以方便一些义工活动信息的及时推送。
浏览器版采用SSH框架(MVC模式)完成,没有使用IMVC-MDD方法。而桌面版和手机版则使用IMVC-MDD方法开发。
图3 登录功能的模型Fig.3 Model of login function
图4 由GUI模型生成登录功能的GUI代码Fig.4 GUI code of login function generated by GUI model
为了复用浏览器版的模型生成桌面版系统,我们首先使用Rational Rose对浏览器版系统进行逆向软件工程得到系统的Business Model、Data Model以及Util Model,然后采用UIML完善web版的GUI Model,限于篇幅,在这里仅给出系统登录功能模块的GUI Model、Business Model和Data Model,如图3所示。
通过LiquidApps共享浏览器版的UIML文件自动生成桌面版(Java Swing)和Android版的GUI模块的代码,进行用户体验优化和其他调整,进而得到桌面版和手机版系统,如图4。
三个版本开发工作量对比结果见表1所示。由于采用IMVC-MDD,即使开发团队在开发时不熟悉相关技术,桌面版和手机版的GUI开发工作量(分别为20和18工作日)相对于没有采用IMVC-MDD的浏览器版(50工作日),还是减少了很多。而且由于复用了浏览器版的业务模块、数据模块和通用系统功能模块,桌面版和手机版的总开发工作量(分别为25和20工作日),相对于浏览器版(160工作日)更是大大减少。可见IMVC-MDD可大大提高系统的开发效率、复用性和可移植性。
表1 三个版本开发工作量对比(单位:工作日)Tab.1 Comparison of the 3 versions of the development workloacl
3 结语
本文的创新点在于提出了一种基于改进的MVC模式的模型驱动开发方法,该方法可有效提高系统开发效率和模型的复用性,支持系统在不同类型客户端(浏览器、桌面和移动终端)之间快速移植,在当前移动互联网迅速发展,大量业务系统从传统互联网模式向移动互联网转移的背景下非常具有现实意义。该方法也有局限性:对于MVC模式不适用的系统,该方法也不适用。
(References)
[1]李春红,高建华.使用分层模型改进MVC设计架构[J].计算机工程与设计,2007,28(4):766-769.LI Chunhong,GAO Jianhua.Improved MVC based on layers model[J].Computer Engineering and Design,2007,28(4):766-769.(in Chinese)
[2]Hyun Jung La,Soo Dong Kim.Balanced MVC Architecture for Developing Service-based Mobile Applications[C].IEEE International Conference on E-Business Engineering,Piscataway:IEEE Computer Society,2010:292-299.
[3]Anna Ruokonen,Lasse Pajunen,Tarja Systa.Florence T.Balagtas-Fernandez,Heinrich Hussmann.Model-Driven Development of Mobile Applications[C].23rd IEEE/ACM International Conference on Automated Software Engineering,Piscataway:IEEE Computer Society,2008:509-512.
[4]Bernardi Mario L.,Cimitile Marta.Model driven development of cross-platform mobile applications[C].2012 IASTED International Conference on Software Engineering,Acta Press,2012:37-44.
[5]李磊磊.基于MDA的中小型企业信息化建模平台的研究与实现[D].成都:电子科技大学,2010.LI Lei-lei.Study and implementation of the modeling platform based on MDA for of the informationization the medium and small-sized enterprises.Chengdu:University of Electronic Science and Technology of China,2010.(in Chinese)
[6]张天,张岩,于笑丰,王林章,李宣东.基于MDA的设计模式建模与模型转换[J].软件学报,2008,19(9):2203-2217.ZHANG Tian,ZHANG Yan,YU Xiao-Feng,WANG Lin-Zhang,LI Xuan-dong.MDA based design patterns modeling and model transformation[J].Journal of Software,2008,19(9):2203-2217.(in Chinese)
[7]邢少敏,周伯生,陈天影.基于WordNet本体和PLSA的语义Web服务发现[J].北京航空航天大学学报,2009,35(11):1325-1329.XING Shao-Ming,ZHOU Bo-sheng,CHEN Tian-ying.Semantic Web service discovery based on WordNet ontology and PLSA. Journal of Beijing University of Aeronautics and Astronautics,2009,35(11):1325-1329.[8]WordNet Documentation[ EB/ OL].http:/ wordnet .princeton.edu/ wordnet/ do cumentation/,October 27,2010.(in Chinese)
[9]Li YH,Bandar ZA,McLean D.An approach for measuring semantic similarity between words using multiple information sources[J].IEEE Trans on Knowledge and Data Engineering,2003,15(4):871-882.
[10]王艳娜,周子力,何艳.WordNet 中基于IC的概念语义相似度算法[J].计算机工程,2011,37(22):42-44.WANG Yan-na,ZHOU Zi-li,HE Yan.Concept Semantic Similarity Algorithm in WordNet Based on Information Content[J].Computer Engineering,2011,37(22):42-44.(in Chinese)
[11]翟延冬,王康平,张东娜,黄岚,周春光.一种基于WordNet 的短文本语义相似性算法[J].电子学报,2012,40(3):617-620.ZHAI Yan-dong,WANG Kang-ping,ZHANG Dongna,HUNAG Lan,ZHOU Chun-guang.An Algorithm for Semantic Similarity of Short Text Based on WordNet.Acta Electronica Sinica,2012,40(3):617-620.(in Chinese)
A model-driven development approach based on improved MVC pattern
QIN GuoRong, ZHOU DeWei, HE Tao
(School of Software,Shenzhen Institute of Information Technology,Shenzhen 518172,P.R.China)
In order to quickly develop different clients of a “cloud+Terminal” application,gain better software reusability and improve development efficiency in the mobile internet environment,an MDD approach based on improved MVC pattern is proposed.The approach separates the system PIM into GUI Model,Business Model,Data Model and Util Model whose composition consistence is guaranteed by WordNet ontology.The separation reduces the complexity,makes the models develop parallelly,thus improves modeling efficiency and model accuracy and gains better system reusability and portability.The practical application confirmed the validity of the approach.
model driven development;model composition;improved model-view-controller pattern;wordnet ontol ogy
TP311
:A
1672-6332(2014)03-0012-06
【责任编辑:高潮】
2014-09-10
本课题得到国家自然科学基金项目(No.61172165);广东省自然科学基金资助项目(No.S2011010006113,No.S2011040000672);深圳市科技研发资金项目(No.JC201006020791A) ;深圳信息学院科研项目(YB201008)资助
覃国蓉(1969-),女(土家族),湖南人,硕士,教授。主要研究方向:软件工程、信息安全。 E-mail:qingr@sziit.edu.cn