英语原文共 4 页,剩余内容已隐藏,支付完成后下载完整资料
移动应用开发的软件工程问题
安东尼·沃斯曼
卡内基梅隆硅谷大厦23,M / S 23-14
莫菲特领域,CA 94035 USA
1 650 335 2807
tonyw@sv.cmu.edu
摘要
本文提供了在移动设备上运行的应用程序相关的一个重要软件工程研究问题的概述。其中的主题是开发过程、工具、用户界面设计、应用可移植性、质量和安全性。
类别和主题描述:D.2 [软件工程]:D.2.2设计工具和技术
一般术语:设计,可靠性,安全性,人为因素
关键词:移动设备,应用开发,软件工程,编程环境,用户界面设计,研究议程。
- 介绍
虽然移动设备的应用程序开发至少停滞了十年,但是从2008年7月iPhone AppStore开放以来移动市场的应用开发呈指数级增长。从那时起,设备制造商已经创建了其他移动设备网点,包括Android,BlackBerry,Nokia Ovi,Windows Phone等等。行业分析师估计有超过25万种应用可通过各种商店和市场进行使用,其中一些可用于多个设备类型。
我们最近对移动开发商进行了一项小型调查[1],使用可用的移动开发者论坛征求受访者意见。调查的一个关键目标是获得对移动应用程序的开发实践的更深入的了解。我们的结论包括以下几点:
- 大部分应用程序相对较小,平均几千行源代码,由一两个主管构思,设计和开发的开发人员实施应用程序。
- 那些完全在移动设备上运行应用的和在远程服务器上执行的基于设备的小型客户端的应用程序与“本机”应用之间存在尖锐的差距。
- 开发商坚持推荐一套“最佳做法”,但很少使用任何正式的发展过程
- 开发人员很少对他们的发展努力和收集的几个指标组织跟踪
有许多全面的编程环境适用于主要移动平台。苹果的iOS开发中心提供Xcode包,其中
包括一个Interface Builder,一个iPhone仿真器,以及完整的开发环境可用于所有苹果产品[2]。对于Android,开发人员可以使用Android开发工具插件[3];对于Eclipse编程环境[4]。 对于Windows手机,开发人员可以使用微软的专门版本Visual Studio环境[5]。同样,有应用程序BlackBerry,Symbian和其他平台的开发工具。另外现在有一些跨平台的开发工具,如RhoMobile的Rhodes,MoSync和PhoneGap,可以用于在各种品牌的智能手机上创建本机应用程序。同样的,Netbiscuits,Appcelerator,Kyte等公司提供工具和框架支持使用他们的手机网站和混合网站的创建SDK或之前提到的环境之一。
强大的开发工具和框架,简化实施移动应用程序的任务。 然而,他们主要专注于正在尝试尽快创建一个应用程序个人开发者。对于小和可以构建的中型移动应用程序(和很容易更新的),它们代表了前几代工具的一个巨大的改进,并鼓励开发人员坚持抽象的重要原则内置于平台架构中的模块化。
然而,随着移动应用变得越来越复杂,移动超越经济的娱乐应用程序到更重要的商业关键用途,应用软件工程确保流程安全和高质量的发展移动应用至关重要。而许多“经典”的软件工程技术将轻松转移到移动应用领域,还有其他领域进行新的研究和开发。本文的其余部分指出了这些领域中的一些。
- 软件工程与移动应用开发
我们将“软件工程”定义为一个个人或团队组织和管理创建一个密集型软件系统,从概念到一个或多个正式发行的过程。
2.1什么让手机有所不同?
在许多方面,开发移动应用程序类似其他嵌入式应用的软件工程。共同问题包括与设备硬件的集成,以及安全性,性能,可靠性和存储的传统问题限制。 然而,移动应用程序提供了一些额外的传统上不太常见的软件应用要求,包括:
- 与其他应用程序的潜在交互——大多数嵌入式设备只有工厂安装的软件,但移动设备可能有许多来自不同的来源的具有互动的可能性应用。
- 传感器处理——大多数现代移动设备,例如,“智能手机”包括响应的加速度计到设备移动,响应的触摸屏许多手势,以及真实或虚拟键盘,全球定位系统,麦克风由语音通话以外的应用使用,一个或更多的摄像机和多种网络协议。
- 本地和混合(移动网络)应用程序——大多数嵌入式设备仅使用直接安装的软件在设备上,但移动设备通常包括通过电话调用服务的应用程序网络或互联网通过网络浏览器影响数据和显示在设备上。
- 大多数硬件和软件平台的家庭嵌入式设备,该设备的属性执行定制的代码,但移动设备可能必须支持为所有这些编写的应用程序支持操作系统的各种设备,以及也适用于不同版本的操作系统。 例如,Android开发者必须决定是否构建单个应用程序或多个版本来运行广泛的Android设备和操作系统版本 [6] 。
- 安全性——大多数嵌入式设备都是“关闭”的感觉到没有直接的方式来攻击嵌入式软件影响其操作,但可移动平台是开放的,允许安装新的“恶意软件”应用程序可能会影响整体设备的操作,包括偷偷的通过这样的应用传输本地数据。
- 用户界面——具有定制嵌入式应用程序,开发人员可以控制各方面的用户体验,但移动应用必须共享用户界面的常用元素与其他应用而必须坚持外部开发用户界面指南,其中很多都是在软件开发工具包(SDK)中实现这是平台的一部分。
- 测试的复杂性——而本机应用程序可以以传统的方式或通过基于PC的测试仿真器,移动Web应用程序尤其如此挑战测试。 他们不仅有很多的在测试Web应用程序时发现的相同问题,但它们有与传输相关的附加问题通过网关和电话网络。
- 功耗——应用的许多方面影响其使用设备的电源,从而影响电池设备的使用寿命 专用设备可以优化为了最大的电池寿命,但移动应用程序可能无意中大量使用电池排水资源。
2.2最佳实践
凭借创建移动应用程序的所有最新经验,很多人知道如何建立他们以及人们如何使用他们的设备和这些应用程序。
同时,除了最大也最复杂的一切软件和系统开发项目已经离开了一个过程密集型的方法来实现更敏捷的Scrum方法[7]和其他敏捷技术,例如测试驱动开发,寻求广泛接受。那是特别是对于为Web开发的应用程序,其中开发模式依赖于许多连续的版本不断发展的产品。 Scrum开发过程是一个序列短暂的(2-4周)“冲刺”,一个团队处理一组任务作为产品增量,每个冲刺都是一个“积压”的要求。 我们对移动开发者的调查[1]建议甚至个别开发人员在开发移动应用程序时都遵循Scrumlike流程。
除了过程之外,是系统的编纂关于最佳做法的知识应用开发。 万维网联盟发布了一套候选人的移动网络建议(不是本机应用)[8]。苹果发布了一个iPhone应用程序编程指南[9]具有各种指导iPhone开发方面。 开发者指南Android包含一个最佳实践部分应用程序兼容性,用户界面指导和设计对于表现和响应性等等[10]。
简而言之,开发人员可以找到很多指导来帮助他们编程他们的应用程序。平台开发人员已经绘制几十年的软件工程知识创造软件为开发人员提供访问的架构和SDK需要的设备资源。然而,这些技术方面却没有解决创建大规模应用程序的更大问题。
2.3寻找余额
每个工程学科的长期挑战之一是“扩大”:寻找适合的管理技巧日益复杂的项目。 对于一个很好的方法个人工程师在项目任务中不总是工作被分成一个团队的成员。 团队(和任何监督管理)需要协调的机制报告。大型项目的复杂性增加往往需要更多关注[变更]要求,产品架构和测试,以及关键项目属性,例如鲁棒性,可用性,可靠性等。
对于移动设备及其应用软件工程过程不仅要了解硬件设备属性,也必须处理如上所述项目管理问题和移动应用开发的独特方面。
许多大型和面向企业的移动应用将会成为产品系列的一部分。 这些应用程序通常是移动Web应用程序,而不是本地移动应用程序,并且将经常补充或增加现有的应用程序。如结果,移动应用的开发通常将是在整体软件开发的背景下完成努力,从而为移动设备提供管理框架应用。但是,手机的独特品质环境使得重要的是不要对待移动应用程序作为一个事后的想法,而是一个独立的任务软件工程流程和产品要求。
3.移动研究议程
软件工程尽管开发了30万多个移动应用程序,他们的工程流程仍然没有太多的正式研究。现有的知识体系是非常务实的,有很多指南和许多示例代码作为示例。在这个我们确定了一些最有希望的领域软件工程研究涉及移动开发应用。
3.1用户体验
使用移动设备不同于使用桌面或笔记本电脑。 手势,传感器和位置数据可能用于游戏机和传统电脑,他们玩在许多移动应用中占据主导地位。 较小的显示而不同风格的用户互动也有重大的影响关于移动应用的交互设计,反过来又有一个对应用开发的影响力很大。 移动用户界面范例是基于小部件,触摸,物理的运动和键盘(物理和虚拟)而不是熟悉的WIMP(Windows,图标,菜单,指针)界面风格苹果的iOS和Microsoft Windows。 其他背景依赖关系也可能在用户体验中发挥作用,包括物理位置,邻近的其他方面移动设备,以及各种设备功能的激活
移动平台包括自己的UI库和指南,所以设备的本机应用程序将共享一个常见的“外观”感觉。应用程序开发人员有义务遵守平台标准,特别是触摸屏设备,其中用户期望使用平台的标准手势集,其中对于每个平台不同。
随着挑战,尽可能地利用有限的屏幕空间,用户界面设计更加重要比以往任何时候都要 移动用户通常会寻求快速完成简单的任务,不能利用全方位的优势功能由传统的Web应用程序提供。
用于移动Web应用程序的用户界面可借用传统的Web应用程序,但必须经常重新设计突出显示最常用的功能并做大部分有效利用屏幕和移动用户界面范例,包括用户输入和相关联的运动地点信息。
这些意见引发了一些研究问题,其中包括:
- 如何确定哪些功能应该是目前在移动版的传统应用程序?是否有能够确保最大限度重用的技术的代码在不同版本之间?
- 构建本地手机的可比性很大应用程序(或一组用于不同平台)与移动Web应程序相比? 有没有用户满意度可衡量差异生产力与其中之一?
- 是否需要专门的情景开发移动应用的流程和工具? 移动UI需要不同的上下设计过程支持一套不同的用例?
- 软件设计师如何整合各种应用设计中输入和传感器数据的形式?
用户体验也受到其他工业界的强烈影响与设备本身相关的设计问题,例如重量和尺寸,但是这些项目大部分在软件领域之外发展,这里没有进一步讨论。
3.2非功能性要求
任何应用程序,移动或其他应用程序的成功取决于一张冗长的非功能品质清单。其中最多与移动应用相关的是性能(有效利用设备资源,响应能力,可扩展性),可靠性(健壮性,连通性,稳定性),质量(可用性,可安装性)和安全性。 许多这些问题一直存在针对Web应用程序,该知识提供了一个研究移动应用的出色起点要求。
移动环境,依赖于不同的种类的网络,不同于传统的环境,因此提出了一些新的研究问题,如:
- 当移动Web应用程序的行为不同时,连接使用电话网络(3G,4G)比当使用802.11(WiFi)或802.16(WiMax)连接安全性有差异吗?响应性有没有显著差异?是传统的回退和异常处理技术足够,或连接的可能性越大(或间歇连接)需要额外的机制是什么?
- 是否有保证数据所需的新技术完整性,还是将同步技术从传统的客户端——服务器计算足够吗?是否潜在的连接或电池电量损失代表如果这样的事件,程序或数据完整性的风险在交易或系统更新期间发生?
- 应用程序的设计是否有所不同关于他们正在进行的网络的速度用过的?在亚洲,一些国家的利率为50亿美元更高,而在美国的典型速度,甚至与3G网络,低于1Mb。
- 开发者如何创建应用程序最大限度地延长电池寿命和资源使用?
再次,这些问题只是广泛范围的一小部分需要进一步研究的研究问题。
3.3进程,工具和架构
随着移动应用的复杂化和使命越来越多关键的,发展组织必须引进流程解决了开发过程的更多方面在当今的敏捷流程和开发环境中。如以前注意到,用户体验特别重要,所以更需要创建用户界面的原型,特别是当支持多个设备时。
测试是移动软件工程的另一个重要领域研究。 一个问题涉及开发测试产品系列的方法,如Android设备。它的不足以仅在模拟器上测试Android应用程序;它必须在许多不同的Android设备上进行测试不同版本的操作系统在各种电信上网络,也许与l10n和i18n选项。综合测试套房将简化此过程。
另一个研究领域涉及应用维护快速变化的移动平台世界。 虽然“早采用者”消费者往往愿意更新他们的设备他们的应用程序,大多数企业用户不太可能这样做。 在很多情况下,他们的公司会有政策劝阻他们从这样做可以看出,企业转型缓慢远离Windows XP和Office 2003.一个特别有趣的问题涉及使用虚拟化技术在这些设备上作为支持各种平台的一种方式。
最后,应用开发和部署正在移动朝向“云”。 这种新的计算范式不仅如此影响开发过程和工具,也是应用架构。
3.4便携性
应用开发人员快速开发了iPhone应用程序苹果创建AppSt
全文共6661字,剩余内容已隐藏,支付完成后下载完整资料
资料编号:[143550],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。