论文部分内容阅读
近年来,电子商务日臻成熟,网上购物成为人们日常生活中不可或缺的组成部分。有一些精明的人在网上购物的时候会对同类商品货比三家,然后选择价格最优的,或者综合性价比等因素后最适合自己的那件商品。然而目前无论国内还是国外都存在数量众多的线上商城,如果只依靠一个人去比对同一商品在不同商城的价格并从中发现最低价不是一件很现实的问题,另外,不同商城会在某些节假日或者特殊的时间开展一些促销活动,而目前促销活动也种类各异,如果单靠简单的爬虫去获取商品的价格并排序并不是很好的方案,爬虫无法理解这么多的活动规则,而目前爬虫在短时间内也无法进化到如此智能。所以目前最好的方案是爬虫收集加人工筛选,同时依靠UGC,用一些吸引人的奖励措施鼓励用户爆料。在这个领域,国内的领先产品是“什么值得买”。百度公司在2015年也有重新进入电子商务领域的战略目标,具体包括两大产品“百度惠”以及“百度Mall”,其中“百度惠”就是与“什么值得买”类型相似的购物推荐产品。随着目前移动互联网的浪潮来临,许多在PC上流行的应用纷纷推出了与之对应的移动端版本,“百度惠”也不例外,对应的Android版本和iOS版本也已经在各大应用商店上架。从整个Android移动开发技术的发展历程来看,目前尚属于趋向于成熟,但尚未形成像传统软件工程那样拥有一整套成熟的开发流程以及对应的技术的阶段。本文将会分以下几个方面介绍“百度惠”App开发团队在Android移动开发领域技术架构的思考,以及将软件工程的思想应用到移动开发领域的探索实践:“百度惠”App端的需求分析。根据市场调研报告MRD最后形成的需求。由于本项目组的产品形态已经确定为App形式,所以需求分析中已经规定了大量和App相关需求。全局系统架构Clean Architectur e。经过大量实际开发经验之后总结出来系统架构方案,其本质思想依然是软件工程领域经常提到的“低耦合,高内聚”Framework目关的关键技术模块。实际开发项目中本项目组经常需要用到的一些通用模块,本质上与具体业务逻辑无关,属于技术细节,但是Google并没有为开发者提供这些功能,所以在这方面第三方开源项目非常繁荣,本文主要会介绍“百度惠”App开发团队在选用这些技术时候的最佳实践。测试。依然是传统软件工程的优秀思想在移动开发领域的延伸,其中重点在于依赖自动化工具自动化测试,持续QA。另外由于Android碎片化问题比较严重,以及自动化测试无法覆盖的地方,云端测试服务开始崭露头角。持续集成与持续交付。一方面,这是为持续测试提供保障,另一方面,本项目组也需要把最新的产品交到用户的手上,让用户去尝试这些实验性的新功能,在得到用户反馈之后迅速调整产品。热代码替换。传统的Android新版本发布是在用户的设备上替换安装,也就是说旧版本的缺陷只有在用户获取新版本的APK之后才有可能解决。同样的,某一些试验性的新功能,无论改动多么小,哪怕只有一行代码,也需要重新打包,发布新版本,提醒用户下载更新之后才能被用户感知。而事实上,Android虚拟机本身是具有一定的代码动态加载能力的,阿里巴巴团队的AndFix是业内公认比较好的动态更新替换解决方案。新技术发展趋势展望。Android移动开发依然在发生着一些变革,第一个趋势是JetBrains推出了新的JVM语言Kotlin,在JVM上的语言现在已经足够多了的情况下,Kotlin为Android开发做了足够多的优化,可以说是面向Android开发的JVM语言。另一个趋势便是Reactive X响应函数式编程范式。这是近年来非常热门的一种编程范式,影响力大到甚至影响了一些语言的设计,由于其吸收了函数式编程、Promise/Deferred异步编程范式的众多优点,其本质上其实就是把函数式编程处理集合类型的优势,运用到了由大量事件驱动的应用的事件流的处理上了,所以其在Java上的实现RxJava非常适用于Android移动开发。