本为为译文
对于Android,开发人员可以使用Android开发工具插件[3]在Eclipse编程环境下[4]。对于Windows Phone,开发人员可以使用微软的专门版本 Visual Studio环境[5]。类似的,黑莓,Symbian和其他平台也有自己的开发工具。此外,现在有一些跨平台开发工具,如RhoMobile’s Rhodes和开源PhoneGap,它们可用于创建各种品牌智能手机的本地应用程序。沿着同样的思路,Netbiscuits,Appcelerator,Kyte,和其他公司也提供支持创建使用他们的移动网络和混合用地 SDK或前面提到的环境之一的工具和框架。
这些功能强大的开发工具和框架,极大地简化实施一个移动应用程序的任务。然而,他们主要集中在试图尽快创建一个应用程序的个人开发。对于可以由一个开发者构建的(而且易于更新的)小型和中型移动应用,他们体现了对于前几代的工具的巨大进步,并鼓励开发商坚持的建立在平台架构中重要抽象和模块化的原则。
然而,随着移动应用程序变得更加复杂,更有移动性超越廉价的娱乐应用到更多的业务关键用途,这将使软件工程的流程变得必不可少,以确保安全,高质量的移动应用程序的开发。虽然许多“经典”软件工程技术将很容易转移到移动应用领域,任然有可供研究的新的的研究和发展领域。“本文的其余部分,确定其中的一些领域。
2、 软件工程和移动应用开发
我们把“软件工程”定义为一个人或团队组织和管理创造软件密集型系统的过程,是一个从观念到一个或多个正式版本发布的过程。
2.1什么使移动不同?
在许多方面,开发移动应用程序是类似于其他嵌入式应用的软件工程开发方法。常见问题包括设备的硬件集成,以及传统的安全,性能,可靠性,和存储限制等问题。然而,移动应用提出了一些额外的要求,这些要求在传统的应用软件开发中很少发现,包括:
1)与其他应用程序可能发生的相互作用——大多数嵌入式设备只有出厂时安装的软件,但移动设备可能有无数从不同的来源的应用,它们之间有交互的可能性;
2)传感器处理——最现代的移动设备,如,“智能手机”,包括能够响应设备的运动的加速度计,能够响应众多的手势的触摸屏,还有真正的和/或虚拟的键盘,全球定位系统,能够应用语音通话以外的迷你麦克风,一个可用或更多的摄像机和多种网络协议;
3)本地和混合应用(移动网络)——大多嵌入式的设备仅使用能直接安装在设备上软件,但移动设备通常包括能够调用通过浏览器调用在互联网或电话网上的服务,以数据或者在设备上显示;
4)硬件和软件平台家族——大多数嵌入式装置执行的代码是根据该设备的性能定制的,但移动设备可能要支持所有支持的该操作系统的不同设备的应用,同时支持不同版本的操作系统。例如,一个 Android开发者必须决定是否建立一个单一的应用程序或多个版本上运行 Android的设备和操作系统的广泛系统版本[6]
5)安全性——大多数嵌入式设备“封闭”的,考虑到此,没有简单的方法来攻击嵌入式软件,并影响其运作,但移动平台是开放的,允许安装新的可以影响整体操作的“恶意软件”,这样的应用甚至可以偷偷传输本地数据。
6)用户界面——一个定制的嵌入式应用程序,开发人员可以控制用户体验的所有方面,但移动应用程序必须与其他常见的应用共享用户界面元素应用而且必须坚持以用户界面的原则指引外部开发,其中许多原则是实施中的软件开发工具包(SDK),它们是平台的一部