第18章:移动软件开发过程

章节摘录Android无线应用程序开发

123.4. 4.
第4页,共4页

选择源控制系统

移动开发考虑对源控制系统没有令人惊讶的要求。开发人员评估他们如何处理移动项目的配置管理的一些注意事项

  • 能够跟踪源代码(Java)和二进制文件(Android软件包等)

  • 能够通过手机配置来跟踪应用程序资源(图形等)

  • 与开发人员选择的开发环境(Eclipse)集成

一次考虑是开发(IDE)(如Eclipse)和源控制系统之间的集成。通用源控制系统,如穿孔,颠覆和CVS与Eclipse很好。

实现适用的版本系统

开发人员还应该在早期决定考虑手机详细信息和软件构建的版本控制方案。通过单独构建(即1.0.1版),它通常不足以通过构建来启动软件。

移动开发人员通常将传统版本控制方案与目标手机配置(1.0.1.handsetModel)组合。这有助于质量保证,技术支持人员和最终用户,他们可能不知道手机的型号或仅通过营销名称开发人员知道它们往往不知道。请注意,手机配置可以包括特定于载波特定手机自定义,例如T-Mobile G1。

如果使用混合模型进行分组我们之前讨论的项目要求,则可以将此信息添加到版本中。例如,使用相机支持开发的应用程序可能是版本的1.0.1.chandsetName,其中C代表“相机支持”,而无需相机支持的手机相同的应用程序可能具有1.0.1.nc.nc.HandseTname,NC代表“无相机支持”源分支。如果您有两种不同的维护工程师支持不同的源代码树,则只需通过版本名称授予谁来分配错误。

只是为了让事情变得更加令人困惑,你可能需要计划特定手机上的固件的不同版本。例如,T-Mobile G1已收到固件升级。如果升级产卵,您可能想要适当的版本:1.0.1.n.g1.upg1.1,等等。

是的,这可能会失控,所以不要过落,但如果你在智能地前期设计版本控制系统,那么当你在内部和用户浮动时,它就会有用。现场对用户识别的特定手机的支持呼叫并不罕见,以根据伟大的版本编号方案查找,以至于他们要么没有他们认为他们在手机上有错误的版本。

设计移动应用程序

在为移动应用程序设计时,开发人员必须考虑手机强加的约束,并决定适用于给定项目最适合的应用程序框架。

了解移动设备限制

应用程序预计将快速,响应,稳定,但开发人员必须与有限的资源合作。在设计和开发移动应用程序时,必须记住所有目标手机的内存和处理电源限制。

探索常见的移动应用程序架构

移动应用程序传统上有两个基本模型:独立应用和网络驱动应用程序。

独立应用程序与他们所需要的一切包装,并依靠听筒做所有繁重的举重。所有处理工作都在本地完成,在内存中,并受到设备的限制。独立应用程序可能会使用网络功能,但它们不依赖于它们进行核心应用程序功能。合理独立申请的一个例子是纸牌游戏。

网络驱动的应用程序提供轻量级手机客户端,但依靠网络提供其内容和功能的一部分。网络驱动的应用程序通常用于将强化处理卸载到服务器,但它们也可用于在安装应用程序后添加功能。它们还具有允许开发人员在许多不同移动操作系统中构建一个智能服务器和大量手机客户端来支持用户的大量受众的额外好处。网络驱动应用程序的良好示例包括

  • 可定制的内容,如铃声和壁纸应用

  • 具有非关键过程和内存密集操作的应用程序,可以将其卸载到强大的服务器,并将结果交付给客户端

  • 任何在稍后提供其他功能的应用程序,没有完整更新到二进制文件

您依靠网络以协助您的应用程序的功能取决于您。您可以使用该网络仅提供内容更新(流行的新铃声),或者您可以使用它来指示您的应用程序的外观和行为(例如,在飞行中添加新的菜单选项或功能)。

设计可扩展性和维护

应用程序可以用固定的用户界面和固定功能集写入,但它们不需要。网络驱动的应用程序可能更复杂,但为长期提供灵活性 - 这是一个例子。

让我们说你想写壁纸应用程序。您的应用程序可以是独立版本,部分网络驱动或完全网络驱动。无论如何,您的应用程序将有两个必需的功能:

  • 显示一堆图像并允许用户选择一个。

  • 采取所选的图像并将其注册为手机上的壁纸。

超级简单的独立壁纸应用程序可能会带一套壁纸。如果它们是所有目标手机的通用尺寸,您可能需要为特定手机重新格式化。您可以编写此应用程序,但它会浪费空间和处理。您无法更新可用的壁纸,通常只是一个糟糕的设计。

部分网络驱动的壁纸应用程序可能允许用户浏览固定的壁纸类别菜单,从通用图像服务器显示图像。应用程序下载特定的图形,然后格式化手机的图像。您可以随时向服务器添加新壁纸,但每次要添加新的手机配置时都需要构建新应用程序。如果要更改菜单,例如要在以后添加动画壁纸,则需要编写应用程序的新版本。此应用程序是可行的,但它不能明智地使用其资源,也没有特别可扩展。但是,您可以使用单个服务器为Android,BREW,J2ME和BlackBerry客户端编写客户端,因此我们仍处于比我们独立壁纸应用程序的更好位置。

壁纸应用程序的完全网络驱动版本可以在手机上进行最小值。它询问服务器显示哪些菜单和他们去的地方。用户浏览图像服务器就像部分网络驱动版本一样,但是当用户选择壁纸时,移动应用程序只会向服务器发送请求:“我想要这个图像,我是这种手机。”服务器会跟踪每个手机的格式化要求。服务器重新格式化并调整图像(流程密集型操作)并将完美的定制图像向下发送到应用程序,该应用程序将其设置为壁纸。为更多手机添加支持是简单的 - 部署轻量级客户端,其中包含任何必要的更改,并为服务器添加支持该手机配置。为动画壁纸添加新的菜单项只是服务器更改,导致所有手机(或任何手动服务器指示的手机)获得该新类别。此应用程序的响应时间取决于网络性能,但应用程序是最可扩展和动态的。

独立应用程序非常简单,适用于单手,单手应用程序和那些旨在网络无关的应用程序。网络驱动的应用程序需要更多预见,有时会更加复杂地发展,但在长期运行中可能节省大量时间。

用于应用互操作性的设计

移动应用程序设计人员应考虑如何与手机上的其他应用程序界面,包括由同一开发人员编写的其他应用程序。解决一些问题是

  • 您的申请是否会依赖其他内容提供商?

  • 这些内容提供商是否保证安装在手机上?

  • 您的申请是否会作为内容提供商?它会提供什么数据?

  • 您的应用程序是否有背景功能?作为服务?

  • 您的申请是否会依赖于第三方服务或可选组件?

  • 您的应用程序是否会通过远程接口(AIDL)将其功能暴露?

开发移动应用程序

移动应用程序实现遵循与其他平台相同的设计原则。移动开发人员在实施期间采取的步骤相当简单:

  • 编写和编译代码。

  • 在软件仿真器中运行应用程序。

  • 测试和调试软件仿真器中的应用程序。

  • 包并将应用程序部署到目标手机。

  • 测试和调试目标手机上的应用程序。

  • 将团队的更改合并到申请完成之前重复。

我们在第19章“开发和测试防弹Android应用程序”中讨论了建立实体Android应用的发展策略。

测试移动应用程序

Mantra有一个移动质量保证:

早期测试,经常测试,测试实际设备。

这是不幸的,但即使现在,大多数质量保证(QA)测试是手动手动完成的。测试人员面临许多挑战,包括手机碎片(许多手机,每个手机,每个具有不同的功能),定义设备状态(什么是干净的状态?),处理真实世界的事件(电话,覆盖丢失)。收集测试所需的手机可能是昂贵和困难的,因此移动测试房屋有一个活跃的市场。

移动QA团队的好消息是Android SDK包含许多有用的工具,用于测试仿真器和手机上的应用。利用白盒测试有很多机会。手机测试的自动化可能不是一种选择(尽管有公司在这个方向上工作),但抓住了使用传统的QA自动化软件,如Borland Silktest等机会,用于对构建验证,烟雾测试和任何早期测试进行模拟器测试当手机不容易获得时。

必须修改缺陷跟踪系统以跨手机配置和运营商进行测试。对于彻底的测试,QA团队成员通常不能给出设备并告诉“尝试打破它”。测试人员有许多灰色的灰色,在黑匣子和白色盒子测试之间。测试人员应该围绕Android模拟器和Android SDK提供的其他实用程序了解他们的方式。


小费 -

在第7章中,“使用布局设计Android用户界面”,我们解释了如何使用层次结构视图实用程序设计和验证用户界面设计并在手机上拍摄完美屏幕截图。在本书的第七部分“附录”部分中,您将找到Android模拟器(附录A),DDMS实用程序(附录B)和Android调试桥(附录C)的快速启动指南。这些工具对开发人员来说是有价值的,但允许测试人员对手机配置进行更大的控制。


移动质量保证涉及大量的边缘案例测试,并且再次,手机的预生产模型可能与最终向消费者拖到消费者的预生产模型可能不会完全相同。我们更多地讨论第19章中的Android应用程序。

部署移动应用程序

开发人员需要确定他们用于分发应用程序的方法。使用Android,您有几个选择。您可以自己推出应用程序,并像Android Market一样利用第三方市场。综合移动市场(如卸孔)也有Android分销渠道,您可以利用。

确定目标市场

开发人员必须考虑第三方提供的任何要求,提供Android Market和Handango等申请分发机制。

包括应用要求的市场要求

特定的分销商可能会代表您分发哪些类型的应用程序施加规则。它们可能会施加质量要求,如测试认证(尽管本书在本书进行打印时没有特定于Android应用程序)和随附的技术支持,以及文档和遵守常见的用户界面工作流程标准(即,后退按钮应该表现这样的)和响应应用的性能指标。分销商也可能施加内容限制,例如禁止令人互动的内容。

我们在第20章“销售您的Android应用程序”中讨论销售Android应用程序的更多信息。〜

支持和维护移动应用程序

一般来说,如果您来自传统的软件背景,则移动应用程序支持要求最小,但它们确实存在。运营商和运营商通常用作最终用户的技术支持的前线。作为开发人员,您通常不需要24/7响应性技术支持人员或免费电话号码等。事实上,大部分应用程序维护可以落在服务器端,并限于内容维护 - 例如发布新媒体,如铃声,壁纸,视频或警报。

也就是说,市场上的硬件迅速变化,移动开发团队需要留在市场之上。以下是移动应用程序开发独有的维护和支持考虑因素。

维护足够的应用程序文件

维护通常不是由开发初始应用程序的同一工程师进行的。在这里,保持足够的开发和测试文档,包括规格和测试脚本,更重要。

管理Live Server更改

始终应得的谨慎对待任何直播服务器。这意味着备份和升级需要适当定时。需要保护的数据,并且始终保持用户隐私。应仔细管理卷展览,因为实时移动应用程序用户可能依赖其可用性。不要低估服务器端开发或测试需求。在“Live”之前,始终在安全测试环境中测试服务器卷展览。

识别低风险的移植机会

如果您已经实施了我们之前在本章中讨论过的手机数据库,现在是分析手机相似性以确定易于移植项目的理想时间。例如,您可能会发现以下内容:最初为特定手机开发了应用程序,但现在市场上有几种流行的手机,规格相似。将现有应用程序移植到这些新手机有时会像生成新的构建一样直接(具有适当的版本控制)并在新手机上测试应用程序。

概括

移动软件开发随着时间的推移而发展,并以传统的桌面软件开发的一些重要方式不同。在本章中,您获得了一些实用的建议,以便将传统的软件流程调整为移动,从识别目标手机来测试和部署您的应用程序。涉及软件过程时,总是有改进的余地。希望其中一些见解可以帮助您避免陷阱新的移动公司有时会进入或简单地改善资深团队的过程。

参考资料和更多信息

软件过程中的维基百科:http://en.wikipedia.org/wiki/software_development_process.

维基百科关于快速应用开发(Rad):http://en.wikipedia.org/wiki/Rapid_Application_development.

维基百科关于迭代发展:http://en.wikipedia.org/wiki/iterative_and_incremental_development.

Wikipedia瀑布发展过程:http://en.wikipedia.org/wiki/waterfall_model.

极限编程:http://www.extremeprogramming.org/

©版权Pearson教育。版权所有。

加入网络世界社区有个足球雷竞技appFacebooklinkedin.评论是最重要的主题。

版权所有©2009.Raybet2

123.4. 4.
第4页,共4页
IT薪水调查:结果是