基于MDA的移动应用开发框架
更新时间:2023-06-10 04:56:01 阅读量: 实用文档 文档下载
计 算 机 工 程 第 37 卷 第18期
Computer Engineering V ol.37 No.18
文章编号:文章编号:1000—3428(2011)18—0290—04 ·开发研究与设计技术·开发研究与设计技术·
2011年9月
September 2011
文献标识码:文献标识码:A
中图分类号:中图分类号:TP311.52
基于MDA的移动应用开发框架
陈子涵1,吴明晖1,2,应 晶1,2
(1. 浙江大学计算机科学与技术学院,杭州 310027;2. 浙江大学城市学院计算机科学与工程学系,杭州 310015)
摘 要:手机应用软件开发需要耗费大量时间用于跨平台的移植,但该过程通常是重复的编码工作。为此,提出一种基于模型驱动架构的手机应用软件开发框架(MDMF)。利用模板将抽象出的平台无关模型转换为多个手机平台上的特定模型,进而生成对应的应用程序。应用结果表明了MDMF的有效性。
关键词:关键词:移动应用;模型驱动架构;模型转换;平台无关模型;平台相关模型
Development Framework for Mobile Application Based on MDA
CHEN Zi-han1, WU Ming-hui1,2, YING Jing1,2
(1. College of Computer Science and Technology, Zhejiang University, Hangzhou 310027, China;
2. Department of Computer Science and Engineering, Zhejiang University City College, Hangzhou 310015, China)
【Abstract】Porting mobile applications can be time-consuming, and usually repeats coding work. MDMF, a framework based on Model Driven Architecture(MDA), is proposed to abstract the mobile application model in this paper. With the help of template, abstract Platform Independent Models(PIM) is transformed into platform specific models. This paper focuses on the key technique used in MDMF. Result shows that it is usefulness by developing an application in MDMF to support multi-devices.
【Key words】mobile application; Model Driven Architecture(MDA); model transformation; Platform Independent Mode(PIM); Platform Specific Model(PSM)
DOI: 10.3969/j.issn.1000-3428.2011.18.097
1 概述
手机应用程序的开发通常是在一个的手机平台上建立原
型后,再根据需要移植到不同的手机平台上。移植过程是繁杂的重复劳动,如果能够在不同的手机平台上抽象出一个与手机平台、操作系统、编程语言无关的模型,通过对模型进行设计和描述能自动转换成适合于不同手机平台的代码,就能使手机应用开发人员避免繁杂的移植工作,关注功能和可用性的设计。
模型驱动架构(Model Driven Architecture, MDA)[1]是由OMG(Object Management Group)提出的一种基于UML、XMI、MOF、CWM等其他工业标准的框架,其主要思想是先解除功能设计和具体实现平台之间的耦合关系。然后将独立于具体平台的系统设计模型转换成实现代码。MDA中最关键的技术是从平台无关模型(Platform Independent Mode, PIM)到平台相关模型(Platform Specific Model, PSM)的自动转换。PIM是高抽象、独立任何实现技术的模型。采用模型转换技术将PIM转换为一个或多个PSM,而PSM被用于生成特定平台上的程序代码。
目前的移动应用开发工具很多,但多为针对某一种平台的开发工具,能够支持MDA移动应用开发的工具却很少见。已有的一些用于跨移动平台的程序开发方法和工具主要有:
(1)采用独立平台的脚本语言来实现,如文献[2]通过游戏定义语言(Game Definition Language, GDL)作为可重用的游戏逻辑,并转换成不同平台上的代码;
(2)采用可执行的UML来定义软件模型,并以动作语言(Action Language)来描述动作语义;
(3)采用移动中间件,如LIME、SATIN[3];
(4)在手机应用程序中嵌入网页视图,将手机应用开发转换为Web开发。
方法(1)在技术上实现相对容易,但由于没有通过明确的模型来定义平台无关的逻辑,导致编写脚本的过程复杂而不可靠,并且存在生成代码和脚本之间难于同步的问题;方法(2)采用了MDA方法,但抽象动作规约语言对手机软件开发来说过于复杂,而且转换成目标代码的能力较弱;在方法(3)中,移动中间件为所有的手机平台提供了统一的API,但仍需对每个平台进行单独的开发,而且在执行效率和生成代码规模上存在缺陷;方法(4)直接使用B/S应用来代替手机的原生应用(Native Application),对于一部分网络应用是可行的,但是也存在无法离线应用、无法使用手机本地API、效果和性能较原生应用程序较差的缺陷。
通过分析上述方法的优势和缺陷,结合MDA的方法,本文提出了一个手机应用开发框架MDMF。
2 MDMF开发框架
2.1 MDMF开发流程
标准的MDA开发一般要经历PIM到PSM再到代码的开发流程,MDMF也不例外。MDMF开发框架的MDA模型层次和开发流程如图1所示。
基金项目:基金项目:国家科技重大专项基金资助项目(2009ZX01039-001-002- 004, 2009ZX03001-016, 2009ZX03004-005)
作者简介:作者简介:陈子涵(1983-),男,硕士,主研方向:MDA应用; 吴明晖,副教授、博士研究生、CCF会员;应 晶,教授、博士生导师
收稿日期:收稿日期:2011-03-21 E-mail:minghuiwu@
第37卷 第18期 陈子涵,吴明晖,应 晶:基于 MDA 的移动应用开发框架
291
292 计 算 机 工 程 2011年9月20日
图2 UI元模型片段
客户端代码框架根据DSPF传过来的<UXView>标签下的布局和元素,动态渲染UI控件。为了在不同的手机上给用户不同的交互体验,UI模型元素在每个手机平台上都有对应的实现,实现的细节依赖于各个手机不同的API以及UI风格而定,这些都封装在代码框架的实现中,代码框架相当于中间件,在不同平台上各自有一套实现,但接口和功能是相同的,其主要作用是负责解析DSPF并绑定到生成的数据模型和控制模型中。
下段DSPF定义了包含一个带表头和操作按键列表的<UXView>:
<UXView>
<UXView id="xleV8CP1Mm">
<uxv:ViewContainer id="_RWm_MjhYFqW">
<uxv:Listid="3bPUoeq3HiW" defaultDefaultSet = "MyContacts"> <uxv:Header id="dmAMwEnG" textPoolId ="rN7MQW" style= "Block"/>
<uxv:Toolbar id="uIbN_L01Yr4ZLW">
<uxv:Button id="n_tZj80jmY0" name="" onClick="CreateContact EH"/>
</uxv:Toolbar> </uxv:List>
</uxv:ViewContainer> </UXView>
3.3 PIM中操作脚本的中操作脚本的嵌入
对于复杂的或需要使用手机原生API实现的操作,可通过在DSPF中嵌入Ruby脚本来实现,Ruby脚本包含在<script>标签里嵌入到DSPF文件中。Ruby是一种面向对象编程脚本语言,其最大的优势是优越的跨平台支持和代码生成支持。通过对预定义的Ruby模型进行扩展,可以给PIM加上复杂的、跨手机平台实现的动作语义,可以操作手机本地应用程序编程接口(Application Programming Interface, API)。
4 MDMF中模型转换的设计与实现
4.1 模型转
模型转换的目标
DSPF文件是与具体平台和实现技术无关的,而要通过DSPF生成平台相关模型以及程序代码,就需要通过模型转换技术。MDMF利用模板来实现模型的转换,其核心思想
是:对于源模型的每一个元素,都有一个模板将它映射为一段代码,这里的模板就对应转换规则[4]。
MDMF的模型转换包括2个目标:(1)将DSPF文件表示的状态模型,转换成特定手机平台的PSM;(2)将嵌入到DSPF中的Ruby脚本,转换成特定手机可执行代码。下文介绍了这2个目标的具体实现技术。
4.2 模型转换器的结构 4.2.1 状态模型的转换
状态模型的转换器基于Ruby的ERB模板技术[4],根据描述文件DSPF和相应语言的模板文件生成最终代码,模型转换器如图3所示。
图3 模型转换器
模型转换的步骤如下:从DSPF中读出其Schema文件,根据DSPF中出现的元素,按Schema中的定义,根据模板文件生成对应语言的类。例如,一个将DSPF转换为iPhone平台PSM的生成器代码片段如下:
require 'rexml/document' require "erb/erb"
doc = REXML::Document.new( File.open( " test.dspf" ) ) …
doc.root.each_element( "DataField" ) { |class_obj| class_name = class_obj.attributes()[ "name" ] fields = []
class_obj.each_element( "value" ) { |value| value.push( value.text.strip )} …
erb = ERb.new( File.open( "template.objc.tpl" ).read ) new_code = erb.result( binding ) print "Creating #{class_name}.m\n"
File.open( "#{class_name}.m", "w" ).write( new_code )
上段代码从DSPF中读取<DataModel>中的<DataField>的属性,再根据生成iPhone程序的Object-C代码模板,转换成对应的Object-C类,并写入到对应的.m文件中。
转换器利用DSPF中定义的类型名称来替换模板中的参数,所使用的模板片段如下:
#pragma mark private methods #pragma mark -
- (void)_reset<$MODEL_NAME$>Properties; - (void)_set<$MODEL_NAME$>DefaultValue; @end
@implementation <$MODEL_NAME$>
@synthesize <$PROPERTY_NAME$>=_<$PROPERTY_NAME$>; - (id)<$FUNCTION_NAME$> {
第37卷 第18期 陈子涵,吴明晖,应 晶:基于 MDA 的移动应用开发框架
293
if(self=[super init]) {
[self_reset<$MODEL_NAME$>Properties]; }
[self_set<$MODEL_NAME$>DefaultValue]; return self; }
4.2.2 内嵌操作脚本的转换
DSPF中通过嵌入Ruby脚本来实现具体操作。在模型转换过程中Ruby脚本将直接被代码生成器转换成程序代码。代码生成技术是模型转换的一个特例,它实现了从微软操作框架(Microsoft Operations Framework, MOF)4层模型结构中M1层模型到M0层模型的转换[5]。
MDMF在不同的手机操作系统上都定义了一套基本的原生API操作代码库,操作被称为模块(Module):如获取网络数据、获取地理位置、显示联系人信息、摄像头、日期/时间获取、蓝牙、视频播放、持久化存储、屏幕方向转换以及重力感应等,模板被封装在DSS(Domain Specific Scripts)库中。所有的Module都由ModuleElement这个元模型实例化得到,ModuleElement定义如下:
module Metamodel extend Dss::MMBuilder class ModuleElement < Dss::MMBase has_attr 'name', String end
class InputParams <ModelElement; end class OutputParams <ModelElement; end class FunctionModel <ModelElement; end calss CallbackModel <ModelElement; end
Function Model .contains_many_uni 'argument' InputParams Function Model .contains_one_uni 'returnval' OutputParams Function Model .contains_many_uni 'callback' CallbackModel end
ModuleElement的属性名称和类型由MMBase的has_attr方法来指定。InputParams和 OutputParams定义了模块的输入输出接口。一个Module含有一个或多个函数,通过 Function Model接口实现。异步调用的函数通过CallbackModel接口实现。
在DSPF中嵌入脚本都要实现ModuleElement的接口。代码生成器读取脚本的内容,根据相应平台的模板将脚本转换成特定平台的代码。
5 应用案例应用案例
本文通过一个应用案例描述使用基于MDMF进行建模与开发的过程。需求是要在BlackBerry、Android和iPhone 3种移动平台上开发一个RSS阅读器,包括以下功能:
(1)Features:联网查阅RSS短文; (2)Portfolio:添加短文到收藏;
(3)离线浏览:已经浏览过的Features将下载到手机,并可离线浏览。
状态机应包括至少3个状态,分别对应查阅短文列表,查阅短文内容,用户订阅3个界面。使用Eclipse的UML2插件来设计状态模型和数据模型,状态机如图4所示。
通过XSLT就可以导出每个状态的DSPF。RSS Feed的读取、视频文件的播放和存储离线数据都需要通过编写脚本
来调用DSS库,在DSPF中嵌入Ruby脚本之后,就可以调
用代码生成器,根据需要生成程序的机型,设置对应的模板文件,来生成PSM和目标代码。目标代码模块和对应手机的代码框架相链接,生成手机应用程序。该RSS阅读器在3个手机平台上的实现截图如图5所示。
图4 RSS阅读器状态机
图5 使用MDMF生成的RSS阅读器
6 结束语
本文实现了一个基于MDA的手机应用开发框架MDMF。由具体案例的应用效果可知,该架构能很好地将各个不同手机平台上的应用开发抽象出来,使编码人员更关注与具体平台和实现技术无关的逻辑设计,提高移动应用开发和移植的效率。
参考文献
[1] Miller J, Mukerji J. MDA Guide Version 1.0.1[EB/OL]. (2003-
05-01). /mda/specs.htm.
[2] 丁月华, 王颂贞, 徐 浩. MDA技术在手机游戏开发中的应 用[J]. 计算机工程, 2009, 35(12): 235-238.
[3] Ueyama J, Pinto V, Madeira E. Exploiting a Generic Approach for
Constructing Mobile Device Applications[C]//Proc. of the 4th International Conference on Communication System Software and Middleware. Dublin, Ireland: [s. n.], 2009.
[4] Herrington J. Code Generation in Action[M]. Greenwich, UK:
Manning Publications Co., 2003.
[5] Thiede M. The RGen Ruby Code Generator and Its Use in
Automotive SW Development[C]//Proc. of Code Generation 2009. Cambridge, UK: [s. n.], 2009.
编辑 金胡考
正在阅读:
基于MDA的移动应用开发框架06-10
小涧镇情资料综述0001-31
2016-2017年新青岛版数学六年级上册分数四则混合运算教案1(精品资料)05-24
我的心儿怦怦跳作文04-01
水土保持重点建设工程施工组织设计05-22
邮政营业员技能鉴定理论知识考试复习资料01-26
随机信号通过线性非线性系统分析 - 图文10-10
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 应用开发
- 框架
- 基于
- 移动
- MDA
- 酒店宾客意见表(1)
- 青年教师世界读书日主题演讲稿
- 冯雷超 论《红楼梦》中妙玉形象 修改二
- 初诊银屑病患者364例临床资料分析
- 关于人工智能的应用与发展
- 浅析纪录片《海洋》
- 重庆酒店装修设计三大要点
- 政治生活第一二单元复习
- 039广场园林景观工程施工组织设计
- 人教版小学四年级数学下册期末检测试卷组合
- 本刊在人大复印报刊资料中转载率再度排名第二
- 浅谈计算机网络系统安全技术及防护
- 2011高考二轮复习文科数学专题八 1第一讲 函数与方程思想
- (9.20厦门)最新《建筑机械使用安全技术规程》JGJ33-2012宣贯及建筑机械使用安全监管要点培训班
- 桥涵深基坑安全施工方案
- 人教版小学四年级数学下册期中考试试题七
- 一位清华妈妈给子女的教育方法
- 教学工作计划初中英语例文(2021版)
- 分数小数混合运算的基本运算规律
- 一年级数学下学期期末综合复习表