论Android产品高效开发之路

  文/姚冬

  通过对Android产业开发的简要分析,总结了Android系统开发中遇到的各种问题,从产品组合、需求管理、建模与重用、协同开发等角度分析和总结出能够加速Android系统开发并有效提高产品质量的方法和思路。最后在此基础上,提出了Android系统开发平台的解决方案,并结合整个产品生命周期,对Android系统开发中的各个环节加以表述。

  经过多年的发展,Android已不是最初设想的仅仅作为移动设备的平台,它提供了一个跨设备的通用结构,并且开始进入其他数字消费设备领域,诸如平板电脑、移动互联网设备、Google TV等,甚至有配备触摸屏的家用固定电话、遥控器、饭店的触摸屏目录、医疗设备以及厨房电脑等。

  Android用它开放、跨平台的通用软件架构征服了众多消费者以及厂商,前景一片光明,但并非一片坦途。无论是与Apple平台,还是 Android同一产业链上的不同厂商之间,竞争始终存在。在Android面前人人平等,如何能够在相同的起跑线下脱颖而出,得到市场和客户的认可,是摆在我们面前的巨大挑战。

  本文从多个角度出发,分析了Android产品开发中遇到的问题,探讨了有效提高产品开发效率的方式和方法,试图找到一个通用并行之有效的解决方案。由于整个方案贯穿Android产品生命周期,因此称之为Android系统开发平台,希望能够对致力于Android产业的厂商或个人有所启示。


  图1 Android系统层次结构(引自Android官网)

  Android系统开发平台

  Android希望能够建立标准化、开放式的软件平台和操作系统,平台由操作系统、中间件、用户界面和应用程序组成,已经衍生出一条由手机和其他终端制造商、移动运营商、半导体公司、软件公司等组成的、完整的产业链和生态环境。此举必将推进更好、更快的创新,为移动用户提供更多功能强大的应用和服务。如图1所示。

  Android开发不只局限于Android应用的开发,而是涵盖整个Android产业链的所有环节,从系统的定制,到电子设备的研制,甚至可以包含适用于Android平台的各种半导体部件。由于终端和应用最受关注,并且也是最容易被直接接触到的,因此本文会更多地面向设备制造商以及应用开发商。

  Android系统在逐渐稳定和成熟,但版本变化还是相对比较快,开发人员需要适应快速变化的版本;同时,Android用户与传统平台的用户群不同,其消费行为也必然不同,要求厂商对目标客户群的消费行为作出良好判断;另外,Android平台上应用开发的盈利模式不够明确,给产业链带来未知因素。Android带来机遇的同时也带来了挑战,必然不会一帆风顺,对于终端研发以及应用开发会提出种种的挑战和更高的要求。

  支持跨平台的应用开发

  Android推出至今,历经了多个版本,同时还存在由Android系统衍生出来的特定厂商的系统,这往往要求设备和应用厂商同时支持多个版本。另外对于应用而言,有时不仅需要支持Android,还需要支持其他系统例如iOS、Windows Mobile等。因而提出跨平台的产品和应用的开发,以支持多种平台、多个版本的需要。

  产品准确定位,及时响应市场需求

  想想近十年Motorola和Nokia等公司的沉浮,让人不禁感叹电子设备市场的瞬息万变。要把握好市场的脉搏,就要求产品准确定位,在对需求加以捕获的同时,进行良好的分析、排优和管理。

  产品的创新性要求高,准确捕获与把握创意

  电子产品更新换代的速度极快,厂商无法依靠品牌本身来黏合客户,消费者对产品的忠实程度取决于产品质量和功能,这就对产品的创新性提出了更高的要求:要求细致研究客户消费行为,准确寻找市场需求,及时的捕获并把握产品创意。

  缩短产品上市时间

  电子消费市场日新月异,时间就是生命。要想尽量缩短产品从创意产生到推向市场的时间,就带来了产品的协作开发、功能复用以及测试一体化等需求。

  基于上述种种分析,结合Android开发特点,我个人认为有必要建设Android系统开发平台。下文试图从产品组合管理、需求管理、模型驱动开发以及协作开发等方面入手对其进行阐述和分析。限于篇幅和个人研究水平的局限,不求事无巨细面面俱到,只是重点介绍个人心得体会,希望对大家能够有所启示。

  通过产品组合管理准确产品定位

  变化的市场对所有厂商都提出了挑战,无论是对于终端制造商还是应用开发商而言,如何保持自身的竞争力是面临的最大痛点之一。这就要求企业在不断发掘新创意的同时,提升生产及开发的效率,建立区别于竞争对手的竞争优势。

  对于Android而言,即使是在同一个平台、同一生态环境下的不同厂商之间,也是合作与竞争同在的关系,如何良好地适应竞争激烈的生态环境,就需要依赖对自身产品的组合规划、对产品特性的差分定位、对竞争对手的优势分析。这就引出了产品组合管理的概念。

  产品组合管理通过对市场环境的分析,收集商机,捕获并分析需求,根据对竞争对手以及自身企业及产品特性,制定产品组合策略,以期平衡整个产品开发投资组合中的风险和回报,最大限度地提高市场认知和投资收益。

  产品组合能够从四个方面创造企业价值:价值最大化、均衡、战略一致性、合理的产品分布。价值最大化允许主动管理组合中的项目,以便从业务目标的角度最大限度地提高组合价值;均衡的产品组合能够防止在决定项目规模时出错,以防出现项目执行时间过长或者项目的业务风险过高等问题;为了实现战略一致性,目标产品组合应以支持公司实现主要业务目标为标准;应确保提供合理数量的资源来支持已经确定的产品项目。

  产品特性组合

  电子产品非常强调特性,例如是否具备WiFi、有没有拍照功能等。产品的特性讲究人无我有、人有我新。这要求我们一方面加以创新,去产生吸引消费者购买行为的新特性;另一方面也要求我们对产品的种种特性,根据不同的市场定位加以组合,因为并非一个大而全的产品就可以满足所有人的需要。产品的特性大致可以分成下面三种类型。

  功能型特性,例如拍照功能、上网功能。

  性能型特性,例如CPU速率、内存大小、拍照的像素等。

  合规型特性,例如不同国家的入网要求。

  各厂商应对不同类型的特性,根据相应消费人群使用习惯,以及不同市场的合规型要求,进行灵活合理的组合,从而得到适应不同的市场定位的产品组合。

  可行性分析

  一款产品的推出,除了要具备相应的特性以外,也要对其可行性进行分析。衡量的因素有众多维度,例如技术可行性、商业可行性、市场潜力、财务回报、产品复杂性以及战略一致性。

  每个企业都有定义的企业战略,对自身及其产品都有相应的定位,产品要求与企业战略目标保持一致,对实现企业战略目标提供帮助和支持。同时产品的投入要求有匹配的产出,成本与收益一定要达到良好的比率,并且要求在收益与风险之间达到平衡。产品技术方面要评估现有技术与预期目标之间的差距、实现的技术复杂度与产品总体架构是否一致。而风险的管控同样是对产品评估的重要因素之一,包括质量风险、进度风险、组织风险、技术风险等。

  不同的维度,在不同的市场环境下,面向不同的目标人群,其优先级以及评判标准是不尽相同的,这就需要引入灵活的评判模型,通过产品或特性的两两比对得到打分模型,并针对不同的判决因素进行加权,综合评比得到最终的判决。

  资源配置与管理

  产品组合管理是联系战略决策和战术执行的纽带,产品开发是商业战略的表现形式,企业实现其战略的重要途径就是通过恰当的展品开发,产品组合管理要求在企业战略与产品开发之间建立桥梁。

  企业往往会同时有开发多款产品的需求,而各种资源总是有限的,产品组合管理同时研究资源的分配,帮助企业合理有效的配置资源。资源管理要求能够对产品进行排优,从而优化资源投入与产出,实现产品价值最大化。错误的产品规划将在运行资源、定位、宣传、销售和支持方面给企业带来沉重压力,并行产品组合的增多会加剧运行的复杂性,必须在产品开发项目的数量与公司自身能力之间找到最佳均衡点。基于产品开发能力来调整产品组合规划可以帮助有效提高整个产品开发项目的成效。

  通过需求管理和重用缩短产品上市时间

  需求的捕获

  需求管理首先是对需求和灵感的捕获,面对复杂多变的市场环境,要求准确地捕捉和发掘Android用户的真实需求,捕获业务人员、设计人员的灵感,从而避免因需求的遗漏或是灵感的丢失,错误或模糊的需求所造成产品的延迟或取消。对需求的描述通常通过文字与模型并存的方式进行,文字的优势在于描述具体、精确的事务,例如数字、指标等;而模型的优点在于无歧义、规范化。结合两者优势可以帮助业务人员或产品经理准确地把握和阐述用户需求。

  需求的审批

  需求需要经过排优、审批的过程,并非所有需求和灵感都切实可行,一个好的想法同时也需要恰当的市场环境。快速变化的市场环境要求简洁灵活的需求批复、实现、追踪流程,保持对市场的最高灵敏度,避免笨重的管理流程带来滞后。另外,不同的需求是针对不同的客户群,其定位和时效性都不同,这就需要通过不同的产品加以实现,这一点至关重要,可以通过前面论述过的产品组合管理得以实现。

  需求的复用

  在Android的开发过程中,有效的需求复用可以很好地缩短整个软件开发周期。通过需求管理流程,需求得以在不同的产品中实现复用,并且很好地支持设计开发的复用流程。产品线工程是Android产品系列开发的重要方法,需求复用的管理是支持产品线工程的必要手段。

  需求的复用可以针对不同的层面。项目一级需求复用,是将业务规则、数据元素、用户界面等定义为单一的实例且通过需求开发过程为项目成员共享和复用;组织一级的需求复用,是当团队在多个项目协作时,信息可以通过共享的需求库进行重用。这样的需求库可以被组织来为不同产品定义特性。


  图2 Android系统开发平台

  通过跨平台应用开发减少重复工作量

  自推出到现在,Android历经多个版本, 前期的系统版本无论是从功能还是稳定性都差强人意,直到1.6版本才有了第一个稳定且功能强大的系统版本。除Android自身这么多版本以外,还存在由 Android系统衍生出来的特定厂商的系统,存在很多厂商基于Android某一个稳定版本的基础加以定制,得到的操作系统,例如中移动的OPhone 系统、联想的乐OS等。

  开发厂商,尤其是应用开发商,有时需要同时支持多个版本的多种系统,多线作战对于开发商而言是极大的挑战。跨平台的应用开发可以帮助开发商良好地应对多平台多版本的应用开发支持,从而提高开发效率,减少重复的开发工作。

  跨平台开发的实现需要借助工具的支持, 对工具而言要求包括两个内容。

  首先,工具需要支持代码生成并通过编译后,可以运行在不同的系统和平台上,并且能够支持跨平台的部署和调试。通过跨平台的编译、部署和调试,极大地帮助开发人员提升开发效率,并且同时能够保障应用开发的质量。

  其次, 由于不同的系统和平台, 甚至Android不同的版本之间,其API调用都有所不同,如果针对每一个版本都需要调整代码,那么将对后续的维护和升级都造成严重的困难。因此,跨平台的开发要求工具能够支持一套设计、一套实现能够应对多种系统和平台,从而减轻重复而枯燥的开发工作。而能够实现这一要求的最佳选择就是模型驱动开发。模型驱动开发工具可以根据不同的目标环境,基于相应的框架和模型,生成适用于特定目标环境的代码。这对于手机开发这样的嵌入式系统开发而言是至关重要的,尤其是当需要适应不同的目标硬件、系统环境时,模型驱动开发由此极大地提高了软件的复用度,使相同的设计和功能模块,可以方便快捷地应用部署到不同的产品设备中。同时由于是基于同一套设计和实现生成的代码,其功能、质量以及稳定性都可以得到良好的保障,从而极大地减轻开发人员的重复工作量,让他们从其中脱身出来,将精力放在更富有创造性和挑战性的设计与开发工作中。

  结束语

  Android提供的标准化、开放的软件平台和操作系统是史无前例的创举,其商业价值也逐渐凸显,应用软件数量迅速突破了十万大关。一片赞誉中,Android开发的道路却并非总是坦途,尤其是对Android产业链中的不同厂商而言,无论是设备制造商,或是应用开发商,市场竞争始终存在,优胜劣汰是亘古不变的,如何在众多的同行业竞争对手中突破重围,脱颖而出,与每一个厂商切身利益紧密相关。

  以上通过对Android系统开发的简单分析, 提出Android系统开发平台的概念,从产品组合、需求管理、建模与重用、协同开发等角度分析和总结,提供一些能够加速Android系统开发,并有效提高产品质量的方法和思路。

  参考资料

  《项目经理到执行官修炼之道——图解组合管理》宁德军,朱华宇,清华出版社 ISBN 978-7- 302-23638-2。

  《实时设计模式》(美)Bruce Powel Douglass 著,麦中凡 ,陶伟等译, 北京航空航天大学出版社 ISBN 7-81077-421-2。

  作者姚冬,北京邮电大学软件工程在职研究生。现就职于某知名跨国企业,关注复杂系统开发,以及软件过程改进等方面的研究。拥有12年的系统软件开发和软件工程实践经历。

  文章来源:程序员官网

时间: 2024-10-31 04:52:08

论Android产品高效开发之路的相关文章

专访实战专家,揭秘iOS神奇开发之路

专访实战专家,揭秘iOS神奇开发之路 转自:http://www.ciitn.com/archive/5533.html 中国信息产业培训网主编专访业内知名实战专家.安博教育-中程在线金牌讲师关东升老师 时间:2012-03-29 10:59来源:未知 作者:xinglu点击: 164 次 在现今的移动互联网时代,苹果产品风靡全球.因此,相应的iOS开发也渐渐成为IT业界热门的职业方向.除了可以给开发人员带来高薪的职位,还能够为个人创造可以盈利的开发模式,对此,中国信息产业培训网主编专访业内知名

个人站长的自学网站开发之路

接触电脑是从1999年开始,那时我们学校开了电脑科,全是486的机器,从哪里在接触到了wt,五笔,dos,wps等软件.可以说是有个入门吧. 2000年,师范毕业,可是那一年起师范不包分配了,于是天天在家里玩,很郁闷的.走在大街上看到电脑培训班上面招网页制作学习,抱着无聊,好奇的心情我就参加了,在里面学习了photoshop,frontpage这两款软件,记得当时花了我七八百大洋.唉仍然还记得叔叔当时听说又要交钱的眼神,唉.从此我就进入了网页制作的世界,记得当时用这两款软件制作了偶的第一个个人网

android网游开发之socket的简单设计和实现

对于普通应用的网络模块一般使用http文本协议,在android开发中使用http协议比较简单,sdk已经做了很好的封装了,具体使用方法可以参考我的这篇博文.而在游戏开发中,可以结合使用http和socket,当然了http协议底层也是基于tcp协议的.http协议是无连接.无状态的,每次连接只能处理一个请求,然后就断了,而且发一个请求需要附加额外信息(请求行.请求头),每次请求都需要重新建立连接:使用socket的好处是更高效和省流量,建立一次连接后,只要不手动或者出现异常断开,就可以一直互相

移动应用开发之路

内置的移动应用开发昂贵,而且很多时候都是一种非常悠久的项目,大部分是应用在其构建的具体的移动设备和操作系统上.但是内置的移动应用,完全可以利用内置的设备性能,比如指南针.相机和GPS.而且通常提供了比用HTML5 Web语言编写应用更佳的性能. 另一方面,移动应用开发要比在基于Web的Html5.CSS3和JavaScript平台更加快速更高效.此外,它们还可以跨多个移动平台工作.提供一次的编写,就可以在任何地方运行的移动应用.但是通常缺少内置应用性能,而且还不能访问所有设备内的性能. 替代内置

我的SIP开发之路

http://hi.baidu.com/ltlovelty/blog/item/837baf1ece7fc6f11ad57647.html     经过对SIP协议和开源协议栈快半年的研究,我现在终于有点入门了.还记得当时刚刚接触这个敬仰已久的东东的时候,那个头大啊,毕竟它的协议族太大了,每个知识点都可以无限延伸,光是鉴权机制就让我花了不少精力.面对我的是大堆大堆的英文协议和代码,看得我是应接不暇啊~~ 还好挺过来了,下面分享下我的经验吧.   首先,推荐几个不错的资源给刚刚接触SIP的朋友们:

产品管理之敏捷之路(一)——携手同行,走自己的敏捷之路

这是我最近在公司内部培训所整理的资料,本篇原本是PPT,我在这里整理成博客分享给大家. 另外,最近因事回家待了一个月,所以很多东西都耽搁了,包括Magicodes.NET,这个直到现在我都没有时间去更新它,希望下周开始能够逐步投入少量时间. 本篇作为开篇,在此,我先列下本系列的内容(可能有些篇章过多,会进行拆分),希望和大家探讨交流: 产品管理之敏捷之路(一)--携手同行,走自己的敏捷之路 产品管理之敏捷之路(二)--使用TFS生成服务+PowerShell实现持续集成 产品管理之敏捷之路(三)

Android开发之旅:android架构

引言 通过前面两篇: Android 开发之旅:环境搭建及HelloWorld Android 开发之旅:HelloWorld项目的目录结构 我 们对android有了个大致的了解,知道如何搭建android的环境及简单地写一个HelloWorld程序,而且知道一个android项目包括哪 些文件夹和文件及相应的作用.本篇将站在顶级的高度--架构,来看android.我开篇就说了,这个系列适合0基础的人且我也是从0开始按照这个步骤来 学的,谈架构是不是有点螳臂挡车,自不量力呢?我觉得其实不然,如

Android开发之Parcel机制实例分析_Android

本文实例讲述了Android开发之Parcel机制.分享给大家供大家参考.具体分析如下: 在java中,有序列化机制.但是在安卓设备上,由于内存有限,所以设计了新的序列化机制. Container for a message (data and object references) that can be sent through an IBinder.  A Parcel can contain both flattened data that will be unflattened on t

Android开发之ImageLoader使用详解_Android

先给大家展示效果图,看看是大家想要的效果吗,如果还满意,请参考以下代码: 前言 UniversalImageLoader是用于加载图片的一个开源项目,在其项目介绍中是这么写的, •支持多线程图片加载 •提供丰富的细节配置,比如线程池大小,HTPP请求项,内存和磁盘缓存,图片显示时的参数配置等等: •提供双缓存 •支持加载过程的监听: •提供图片的个性化显示配置接口: •Widget支持(这个,个人觉得没必要写进来,不过尊重原文) 其他类似的项目也有很多,但这个作为github上著名的开源项目被广