登录

  • 登录
  • 忘记密码?点击找回

注册

  • 获取手机验证码 60
  • 注册

找回密码

  • 获取手机验证码60
  • 找回
毕业论文网 > 外文翻译 > 计算机类 > 软件工程 > 正文

Android应用程序开发的模型驱动的方法外文翻译资料

 2022-09-18 05:09  

英语原文共 6 页,剩余内容已隐藏,支付完成后下载完整资料


Android应用程序开发的模型驱动的方法

摘要: 移动应用开发行业正日益成长起来,源于在移动设备中大量使用的应用程序,而且其中大部分的运行Android操作系统。然而, 开发用于移动平台的应用程序需要额外的担忧,如代码效率,与设备资源的互动,以及短的时间内将产品推向市场。模型驱动工程(MDE)与UML相结合,如在软件工程中使用,可以为手机软件开发者提供抽象和自动化。为了支持其结合,足够的工具和方法是必需的。本文介绍了Android应用程序开发,其中包括以促进和加速基于UML的建模的移动应用的开发和代码生成MDE方法。

关键词:Android应用程序,移动,模型驱动工程, UML模型,代码生成,建模方法

1引言

智能手机成为个人计算机的替代,正在成为一个移动计算设备,这些设备大多运行Android操作系统。Android[1]是谷歌的移动平台,它代表一种开放式利用开发工具的解决方案、对许多设备的大的支持、以及一种操作系统。

安卓应用是利用Java语言开发的,但是这些并不能在传统的Java虚拟机(JVM)上运行。此外,由于新概念的出现,如活动、服务和用于安卓应用程序开发的具体API,应该适应针对桌面开发的桌面JAVA应用程序。

移动应用程序明显不同于传统应用程序。通常情况下,移动应用程序是事件驱动的,并有不断与输入反应从用户接口或传感器[2]。此外,移动应用程序的任何嵌入式软件应该有效地利用有限的设备资源。在另一方面,移动程序的发展要求短时间应对市场从而有了更多的忧虑。

在传统的软件开发中,有很多方法可以加快设计和开发。在这些方法中,模型驱动工程(MDE)已受到关注,因为通过高标准的提供抽象模型(例如,UML),从而促进复杂的软件的设计[3]。MDE[4]认为模型是关键构件,这些是运用于软件工程(分析、设计、实现和测试)所有阶段。这种方法的主要目的是通过使用支持系统模型的转换技术,以减少问题域和软件实现之间的差距。通常情况下,这种模式的有效使用,结合模型和工具,可以提供抽象和自动化,并且属性调查主要由嵌入式软件设计师。根据由摩托罗拉的研究中,MDE在软件产品所花费的时间减少70%[5]。

最近, Z. Wang [6]研究了使用UML模型的智能手机应用程序的开发。然而,大多数可用的建模工具并不能完全解决基于uml的建模和Android应用程序的代码生成的相关问题。最近努力提出解决这个问题的办法[7][2],但这些呈现一定的局限性,因为在相关的工作部分中讨论解决基于UML建模和代码生成中出现的问题。

本文提出了Android应用程序开发模型驱动的方法。这种方法包括基于UML建模和自动代码生成,促进和加快开发Android应用程序。

本文的剩下的章节分配如下:第二部分介绍了背景,第三部分给出了建议的方法,在第四部分描述了一个案例研究, 而相关作品在第五部分,第六部分总结讨论,并指出了今后的工作方向。

2 Android应用的开发

Android操作系统(OS)是基于Linux内核的谷歌移动设备。它的应用程序是用Java开发的,但是运行在一个特定的叫Dalvik虚拟机[8]。这个平台也提供了一个API与几个组件,这些组件可以定义在一个Android应用程序中重用。在他们之间,活动,服务,广播接收器,和内容提供商是核心组件。

一个典型的Android应用程序由一个或多个活动组成。一个活动通常显示一个视觉用户界面。服务是一种特殊类型的活动,没有视觉用户界面,通常在后台无限期运行。核心组件、活动和服务通常在大部分的代码中封装起来。

Android应用程序必须遵守严格的生命周期协议,通常有指定的方法[2]。一个活动都有它的生命周期,由以下方法定义:onCreate,onStart,onResume,onPause和onDestroy。onCreate方法被调用时,操作系统启动应用程序。在调用onStart使活动在前台屏幕,如果失去了前台则调用onResume,当前台改变到其他应用程序则调用onPause。当使用onStop方法则表示调用原方法活动是不可见的,最后onDestroy表示运行活动被关闭前的最后一个任务。定义服务的生命周期,使用onBind和onDestroy方法。服务的onBind方法是用来制造与服务的持久连接,而onDestroy则是终止它。

一个活动可以通过进程间通信协议的控制和数据传输到另一个活动称为意图。为了促进这一点,一个广播接收器(BR)组件,这是一个专用的侦听器,等待广播消息。当一个意图是播放,BR通过执行一个特定的活动响应。请求为常见的数据(如联系人、图片、信息、音频和文件)由内容提供者(CP),这是一个以数据为中心的服务,让持久数据集用于Android应用程序。数据请求是通过统一资源标识符(URI)表示,它提供了访问CP的标准。

3 Android MDE方法

本节介绍了Android应用程序开发,支持UML建模和自动代码生成所提出的MDE方法。

A.建模

本文提出了如何使用标准的UML Android应用程序的结构和行为完全模拟,专注于这些应用中传统的建模方法不能完全覆盖的具体方面。我们的建模是基于UML,使用类图来描述应用程序结构视图,并且用序列图来表示行为的观点。分段3-A1介绍建模的主要结构组成,而3-A2分段描述的行为方面。

1)结构视图:活动和服务(图1中灰色)是特殊组件,用于定义应用程序结构和开发人员应该指定哪些应用程序类活动和服务。图1说明了建议的方法,主要是定义为一个活动和背景作为服务使用继承关系。

活动和服务类有几个默认的方法(见第二节),通常是由设计师定制。因此,在模型中指示的方法必须定制,标准代码(例如,调用超类的构造函数)可以生成每个方法的特点。图1中所示的示例中,两种方法(从主要从背景和onBind onCreate)被显示为应用程序定制。

本节重点介绍Android应用程序结构的具体方面。定义有关结构的详细信息(如类/接口,属性,操作和关系的定义),设计人员可以使用UML类图符号为传统的软件建模所用。

2)行为视图:在我们的方法中,应用程序行为视图使用序列图,它可以代表迭代,条件和信息交换,像往常一样对传统的面向对象的软件表示。

然而, 当应用程序类从另一个组件要求的一些数据或者一些服务,Android应用程序的行为可以进化组件作为内容提供者和意图,如第二节中所讨论的。它应该在UML模型来描述,以提供完整的应用程序行为视图。图2展示出了用于一个数据请求到内容提供者(CP),通过由主类发送给CP中的接触信息建模的提议表示。

服务请求是由广播接收机(BR)响应,正如在第二部分解释说,所以我们建议的建模是图3所示。主要的生命线表明该活动将在主类。首先, 意图请求被执行,发送一个消息给意图生命线和用ACTION CALL定义所需意图动作。此操作的返回将被分配到的意图Name对象。第二个动作是功能的要求,由startService消息,其作为参数意图对象进行的。

继承活动或服务的方法通常是由程序员和定制,而且应该做到详细的为每个行为定制方法。onCreatect,从活动继承的方法,描述了应用程序启动时第一个任务执行。模型中的图4中所示的基本行为表示这种方法,这是与CP和BR组件,所表示的Ref碎片。于是,一个服务请求通过onStart和onBind发送消息。第一个消息用于启动该服务,而第二个做出持久连接。

B.代码生成

MDE的采用主要好处在于开发Android应用程序的自动化。这种方式,来证明我们所提供的自动化支持MDE的方法中,我们扩展GenCode[9]Android工具来生成代码。而原始GenCode,Android代码生成是基于类和序列图。

从类图,GenCode生成应用程序结构,为每个类生成一个Java文件。它体现了类定义的属性和方法,也包括构造函数,设置和获取方法。类或接口之间的关系,为继承和联合,被认为是在代码生成。类代表一个Android API组件时,定义时要符合声明属性和参数的方法。此外,代码生成还提供了调用活动和服务标准方法,像onCreate。

行为代码生成是基于序列图,限制了代码生成方法调用之前的水平,因此,简单的操作,比如变量归因或数学操作不能生成。从这个图中,捕捉的方法调用序列,包括为每个调用参数和返回。此外,循环和条件还可以捕获从这个图生产相应的Java语句。当这个图提供了一个Android元素,像一个意图,该工具提供了根据行动调用和被调用的服务创造意图。

4 案例分析

蛇,一个开源的应用程序从Android开发者网站[10],被选为案例研究。虽然这是Android应用的一个简单的例子,它可以向我们表明,该方法的主要特点。

获得一个UML模型从蛇代码、手动使用逆向工程。因此,建立了一个UML模型使用纸莎草[11],代表应用程序的静态和动态方面。该模型由一个类图和序列图构成。

蛇静态视图,用类图描述了图五:Android类、活动目的、视图处理程序包,关系,以灰色突出显示在这个模型中,当应用程序类(Snake,SnakeView,TileView),和两个SnakeView内部类(RefreshHandler和Coordinate)说明白盒。

Snake是主要的应用程序类和代表一个Android活动,以及所表示的继承关系。在这个案例中,onCreate ,onPause, onSavedInstanceState和onBackPressed方法被显式地定义,表明这些方法将定制。这个类是由用户接口负责与被关联到所述SnakeView,这也是在图形用户接口定义使用。

图形视图描述由TileView类,SnakeView类,它的内部类,RefreshHandler和Coordinate给出。 TileView是由所描述的观点负责,通过与View类的继承关系所示。TileView覆盖onSizeChanged ,on-Draw方法,继承视图。SnakeView类负责游戏管理,描述和管理游戏元素。RefreshHandler内部类,专门化的处理程序,执行动画,同时负责协调管理素,mAppleList和mSnakeTrail。

onCreate方法的定制为代表的onCreate sd(序列图)图6。这个图描述了应用程序启动时的行为。基本上,它检查最后一场比赛中,选择开始新的或以前的游戏状态。在这方面,两个生命线代表mSnakeView和savedInstanceState对象,在这个场景中进行交互。alt片段代表if / else,当条件为真,一个新的游戏加载,否则,之前的状态是负载。束组件用于恢复以前的状态。

图7描述了onBackPressed sd,可以观察到的model-ing意图。这张图代表后退按钮被按下时执行任务,并调用mainscreen暂停比赛。保存游戏状态,再次调用应用程序时,是以前的游戏场景。实施这种行为的目的是使用。代表序列后,意图对象应该创建和传递参数中的信息,在这种情况下主要识别所需的行动。在那之后,这两个消息后,addCategory和setFlags,代表添加新功能的意图。1的序列使用,2 startActivity服务调用,3论点setIntent对象。

后者的行为方法从TileView 代表后者sd见图8。循环片段用于表示迭代。这方法代表了过程执行的游戏场景和这取决于XTiles和YTiles的数量。选择片段显示的调用drawBitmap 为可选。从画布对象调用该方法。

运用我们的方法,我们从Snake生成Java代码使用GenCode扩展的UML模型。Listing1展示了代码生成的Snake类,声明进口为Android API组件,活动扩展和类属性。

Listing2展示了可以观察到的超级调用,即onCreate方法生成的代码,以及onCreate方法和setContentView、标准调用onCreate方法并从图6指定行为onCreate sd。

从onBackPressed方法生成的代码,这表明一个意图使用,Listing3中描述。在这段代码中,创建setIntent意图,作为主要行动,指定之后,两个方法,addCategory和setFlags setIntent调用。最后,调用服务通过与setIntent startActivity消息参数。该工具还生成超级标准要求活动方法。onPause内部,outState。putBundle onSaveInstanceState,如Listing3中可以观察到。

Listing4演示了生成的代码,后者在后者sd方法建模图8。这段代码包括循环语句的声明(for)条件和计数器和条件(if),以及从画布drawBitmap方法的调用对象,体现了其参数。

由于原来的GenCode,其扩展还支持构造方法的产生,用默认值属性设置和获取方法和内部类。Listing5说明从SnakeView类代码片段,展示了生成的代码行,其中包括属性声明和设置和获取方法。

5 相关工作

有大量的工具,提供使用图形符号作为UML软件建模支持,标准的面向对象的建模语言。这些可以从UML模型生成代码, 如UModel [12],和Artisan工作室[13]。然而,这些工具集中在传统的软件开发,并且不完全支持Android应用程序开发。

简单Android应用程序的慢慢发展,提出了应用程序发明家[14],这是一个基于web的工具生产简单的Android应用程序。然而,它的方法被认为是更“可视化编程”而不是“建模”。

最近的努力集中在MDE支持Android应用程序,于是提出了具体的解决方案和工具[2][15][7]。Andro

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[148535],资料为PDF文档或Word文档,PDF文档可免费转换为Word

您需要先支付 30元 才能查看全部内容!立即支付

企业微信

Copyright © 2010-2022 毕业论文网 站点地图