文/姚冬
通过对Android产业开发的简要分析,总结了Android系统开发中遇到的各种问题,从产品组合、需求管理、建模与重用、协同开发等角度分析和总结出能够加速Android系统开发并有效提高产品质量的方法和思路。最后在此基础上,提出了Android系统开发平台的解决方案,并结合整个产品生命周期,对Android系统开发中的各个环节加以表述。
经过多年的发展,Android已不是最初设想的仅仅作为移动设备的平台,它提供了一个跨设备的通用结构,并且开始进入其他数字消费设备领域,诸如平板电脑、移动互联网设备、Google TV等,甚至有配备触摸屏的家用固定电话、遥控器、饭店的触摸屏目录、医疗设备以及厨房电脑等。
Android用它开放、跨平台的通用软件架构征服了众多消费者以及厂商,前景一片光明,但并非一片坦途。无论是与Apple平台,还是Android同一产业链上的不同厂商之间,竞争始终存在。在Android面前人人平等,如何能够在相同的起跑线下脱颖而出,得到市场和客户的认可,是摆在我们面前的巨大挑战。
本文从多个角度出发,分析了Android产品开发中遇到的问题,探讨了有效提高产品开发效率的方式和方法,试图找到一个通用并行之有效的解决方案。由于整个方案贯穿Android产品生命周期,因此称之为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、有没有拍照功能等。产品的特性讲究人无我有、人有我新。这要求我们一方面加以创新,去产生吸引消费者购买行为的新特性;另一方面也要求我们对产品的种种特性,根据不同的市场定位加以组合,因为并非一个大而全的产品就可以满足所有人的需要。产品的特性大致可以分成下面三种类型。
各厂商应对不同类型的特性,根据相应消费人群使用习惯,以及不同市场的合规型要求,进行灵活合理的组合,从而得到适应不同的市场定位的产品组合。
可行性分析
一款产品的推出,除了要具备相应的特性以外,也要对其可行性进行分析。衡量的因素有众多维度,例如技术可行性、商业可行性、市场潜力、财务回报、产品复杂性以及战略一致性。
每个企业都有定义的企业战略,对自身及其产品都有相应的定位,产品要求与企业战略目标保持一致,对实现企业战略目标提供帮助和支持。同时产品的投入要求有匹配的产出,成本与收益一定要达到良好的比率,并且要求在收益与风险之间达到平衡。产品技术方面要评估现有技术与预期目标之间的差距、实现的技术复杂度与产品总体架构是否一致。而风险的管控同样是对产品评估的重要因素之一,包括质量风险、进度风险、组织风险、技术风险等。
不同的维度,在不同的市场环境下,面向不同的目标人群,其优先级以及评判标准是不尽相同的,这就需要引入灵活的评判模型,通过产品或特性的两两比对得到打分模型,并针对不同的判决因素进行加权,综合评比得到最终的判决。
资源配置与管理
产品组合管理是联系战略决策和战术执行的纽带,产品开发是商业战略的表现形式,企业实现其战略的重要途径就是通过恰当的展品开发,产品组合管理要求在企业战略与产品开发之间建立桥梁。
企业往往会同时有开发多款产品的需求,而各种资源总是有限的,产品组合管理同时研究资源的分配,帮助企业合理有效的配置资源。资源管理要求能够对产品进行排优,从而优化资源投入与产出,实现产品价值最大化。错误的产品规划将在运行资源、定位、宣传、销售和支持方面给企业带来沉重压力,并行产品组合的增多会加剧运行的复杂性,必须在产品开发项目的数量与公司自身能力之间找到最佳均衡点。基于产品开发能力来调整产品组合规划可以帮助有效提高整个产品开发项目的成效。
通过需求管理和重用缩短产品上市时间
需求的捕获
需求管理首先是对需求和灵感的捕获,面对复杂多变的市场环境,要求准确地捕捉和发掘Android用户的真实需求,捕获业务人员、设计人员的灵感,从而避免因需求的遗漏或是灵感的丢失,错误或模糊的需求所造成产品的延迟或取消。对需求的描述通常通过文字与模型并存的方式进行,文字的优势在于描述具体、精确的事务,例如数字、指标等;而模型的优点在于无歧义、规范化。结合两者优势可以帮助业务人员或产品经理准确地把握和阐述用户需求。
需求的审批
需求需要经过排优、审批的过程,并非所有需求和灵感都切实可行,一个好的想法同时也需要恰当的市场环境。快速变化的市场环境要求简洁灵活的需求批复、实现、追踪流程,保持对市场的最高灵敏度,避免笨重的管理流程带来滞后。另外,不同的需求是针对不同的客户群,其定位和时效性都不同,这就需要通过不同的产品加以实现,这一点至关重要,可以通过前面论述过的产品组合管理得以实现。
需求的复用
在Android的开发过程中,有效的需求复用可以很好地缩短整个软件开发周期。通过需求管理流程,需求得以在不同的产品中实现复用,并且很好地支持设计开发的复用流程。产品线工程是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年的系统软件开发和软件工程实践经历。
本文选自《程序员》杂志2011年10期,更多精彩内容敬请关注10期杂志
《程序员》杂志订阅火热进行中