`

浅谈手机软件架构设计(转)

阅读更多
浅谈手机软件架构设计
 

2010-12-24 作者:陆征 来源:网络

 

今天的话题相对有些偏技术层面,主要想分享一些手机客户端产品架构工作中的一些理解,也希望得到同行的一些交流机会。

手机软件对用户来讲,是一个完整的整体,一个封装好的安装包,一个可以运行的执行文件。但是在我们设计软件,特别是一个相对复杂的软件的时候,就必须要将它的内部立体化,理清它的结构框架,确保软件的整体一致性。

软件的架构工作,通常由一个公司的研发组来做出,但是我认为作为一个参与软件产品的产品经理来说,了解一些架构设计方面的工作是会有帮助的。

软件的架构设计的重要性有两个,一个是增强项目的协作并行能力。这一点和互联网产品经常提到web重构具有相似性的。如果我们不能将整体架构标准化,不能约束好各个功能模块的衔接性,没有定义好功能层与界面层的配置协议,那么整个软件开发过程必然是一个链条式,每一个时间点只能进行一项工作,大大增加了项目开发时间,而时间永远是宝贵的。而良好的前期架构,有助于将各个功能点拆分开,交给多个人同时并行,最后仅需简单的拼装,就可以完成一个成型的产品。可以说,软件越复杂,前期合理架构就越重要。

第二个重要性,是提升软件的可扩展能力。当前的软件领域非常像房地产行业的一个地方,在于分布开发上市。一个房地产项目,占地数公顷,这里是各期楼盘,那里则是底商乃至于公园。这些不可能都做好,才会开盘销售。那么软件也一样,做好一期之后,就要面对用户,而后续的延续性版本和横向扩展能力,都仰仗良好的前期产品架构。可以说,一个产品的生命力和发展,仰仗的就是软件前期架构的合理性和前瞻性。

事实上,单一的技术主导的架构设计,存在一定的误区。研发人员多会关注前沿技术的演进,考虑将新技术的可能加入软件架构中。但是新技术与用户需求之间往往存在距离,一个是新技术可能并非具有用户所认可的产品实用性,二是新技术带来的是极不合理的投入产出性价比。而一个成熟的产品人员,会更关注实用性和用户表现力,对于用户需求的敏感程度要高于一直置身于技术发展研发人员,而且偏运营的产品会计算出运作的成本与难度。两种人相互配合,会达到更好的效果。当然,存在这样一种天才,他们是兼具技术前瞻性、良好的产品眼光,以及市场控制能力的人,这种人可遇不可求,不讨论也罢。

很多时候,我所在的产品经理群时常会争议一个产品经理要对技术了解到什么程度为止。其实这个要结合具体情况来判断。如果你的工作中很少涉及到产品前期的架构工作,更多的是对成型产品的表现层做演进性改进工作,或者更加偏重产品化后的运营、市场营销工作。那么相对而言,技术并非是关键因素。但是,如果想要按照自己的思路,去设计一款完整的产品,那么对于产品所处的平台特性、实现能力等技术层面的东西,就应该有一定的了解。

当然,试图深入了解各平台技术的具体实现,这同样是一个需要天才才可以做的事情。以手机软件而言,所涉及的平台,包括服务器所涉及的Windows/linux特点、数据库特点,终端的C\C#环境,以及android(J2ME)、symbian、WM(win CE)等等开发平台,每一个都可以深入进去钻研出无穷无尽的东西出来。研发工程师尚且分平台,有专攻,何况一个产品人员。更重要的是,是对平台的共性和特性有所了解,多去观察一些该平台下产品的功能实现程度,来判断平台的潜力。当然,这表明产品很难站在技术的前沿,事实上也不应该站在前沿。前沿往往意味着更大的风险,以及更高标准的研发投入。而且,一些无法判断的技术实现难度,可以通过和该领域的研发人员交流获得。

回到手机软件,从整体架构考虑,我们可以优先将其分类为终端(客户端)和云端(服务器端)。无论是从手机和无线网络的性能角度出发,还是从业务的控制、计费、统计和安全性考虑,我们都不可能将软件的所有工作放在终端层面。因此,一个手机软件的背后,其实往往有类似网络软件产品的支撑服务器。不过,今天主要谈终端。

而终端,实际上也应该考虑用一个梯形结构,将层级分开,做到逻辑分明,拆卸拼装方便,各模块单独维护。

简单来讲,由上至下,按照用户可见到不可见,我们可以将终端大致分为:

界面层(框架层)

功能层

数据层

层级之间,利用配置好的相应协议进行传输控制。界面层的独立,一有助于设计师可以按照相应的规范进行平行工作,而不要等到软件完成原型之后,再进行界面设计;二也符合用户对界面表现力越来越高的要求。只有将界面层独立,才可能将界面元素更进一步拆分,更换界面让软件改头换面,而又不影响软件的正常使用。

事实上,界面层应该包括基础框架逻辑(主要是根据终端尺寸和分辨率进行模块化布局)以及皮肤层(主要是以个性化为目的的可拆卸替换的皮肤和配色方案)。对于手机而言,这些还要考虑终端操作特点,比如触摸屏、非触摸屏,以及一些支持手势和力感应的终端的特殊利用。

功能层,试功能的复杂程度和关联程度,有平行并列和网状结构等多重布局。这一点实际上已经涉及到了研发人员具体编码时的功能模块拆分,这一点产品人员可以视情况适度介入。当然了解的更好,也有助于在产品需求文档撰写时更好的书写“具体功能需求”部分。有一点是需要特别注意的,就是哪些功能模块,是需要和云端交互的,而哪些是更适合放在云端而不要放在终端上的。这些内容产品人员可以在需求中提出,在具体设计过程中沟通决定。

由于一个软件产品可能涉及多终端,那么不同终端的功能层差异,也是一个重要的考虑因素。在确保核心功能被满足的条件下,对不同终端进行适当的功能层版本拆分是必要的。这时候主要参考的是产品的统一性以及具体产品维护的难度。每多一个版本,其维护的难度和成本都要相应增加,这是显而易见的。

数据层,包括了终端保存的配置文件、数据表、对应表和终端上的相关文件。这些数据的读写增删转移,当然是通过功能层来控制的。但是架构时可以着重查漏补缺,观察哪些关键数据项是在前期需求规划时被遗漏的。

事实上,功能和数据分级别细分的好处还在于,产品升级的便捷性。参考一些成熟的产品,发布大版本通常周期较长,而过程中经常会通过文件增量或者替换,来实现小规模的升级优化,这就是建立在整体结构的细致拆分之上。如果各种功能混杂编排在一起,这种微调是不可能做出的。

除了上面说的,能展开的东西还很多,但是相对是一些更具体的设计了。比如如何合理的配置网络的同步异步传输,如何在功能层设置监控点进行相应的触发逻辑。超出今天的浅谈和架构话题,以后有机会再说吧。

理解的不够准确的地方,欢迎同行指正。

分享到:
评论

相关推荐

    浅谈GSM手机的MMI软件开发

    MMI的开发需要综合考虑硬件特性、软件架构及用户体验,通过合理的架构设计和高效的代码实现,确保MMI的稳定性和性能,为用户提供流畅、直观的交互体验。 综上所述,GSM手机的MMI软件开发是一项复杂的任务,涉及多...

    软件测试_浅谈软件测试流程

    - **嵌入式软件**:可能需要特定的硬件平台和网络环境,例如测试手机软件时可能需要模拟不同的网络条件。 测试环境的搭建要尽可能模拟真实应用场景,同时也要考虑到成本效益比。 #### 六、测试执行 **测试执行**...

    浅谈针对《Android手机程序设计》进行CDIO模式的教学评价探索.pdf

    2. 设计(Design):学生需要根据构思阶段的结果,进行系统架构设计,包括界面设计、数据结构设计和算法选择等。在此过程中,他们应学习到如何优化用户体验,提高程序效率。 3. 实现(Implement):此阶段要求学生...

    浅谈基于单片机的计步器设计.pdf

    本篇论文“浅谈基于单片机的计步器设计”主要讨论了一种基于单片机的计步器的原理、设计思想、系统硬件构成、软件设计及实现过程。计步器作为日常运动的监控器,在现代社会中得到了广泛应用,尤其是配合现代智能设备...

    浅谈集成电路芯片安全隐患检测技术.pdf

    集成电路技术是现代信息技术发展的基石,在我们的日常生活中,从智能手机到汽车电子,再到大型计算机系统,无处不体现出集成电路的重要作用。然而,随着集成电路在各种电子设备中的普及与应用,其安全性问题也日益...

    浅谈如何利用现代电子技术做好电商美工设计.pdf

    电商网站设计的趋势紧随移动设备的普及,设计时需要考虑到多种屏幕尺寸和浏览设备的兼容性,如智能手机、平板电脑等。为了提供良好的用户体验,设计师要合理安排网页的布局,使用户能够在不同的设备上都能轻松浏览和...

    浅谈《Java程序设计》在民族类高校中的教学改革与实践.pdf

    教学过程中,除了必要的理论知识点传授外,还应增加实际项目开发流程和要点的相关知识,比如如何使用参考文档、如何善用开发工具、如何划分软件模块、如何设计程序文档以及代码联调时如何进行Debug工作等。...

    浅谈人工智能发展对平面设计行业产生的影响.pdf

    设计公司和企业开始尝试利用人工智能来总结设计模式、开发公用版设计软件,或为特定客户需求定制设计程序。 在理论研究方面,人工智能对于平面设计的影响同样不容小觑。研究人员正在探索如何通过人工智能来模拟和...

    ui设计生毕业论文题目.docx

    47. 基于Cocos2d-x的电视UI架构设计 48. 一种基于AndroidUI剖析与设计方法 49. 智能UI界面设计剖析 50. 基于WPF的UI设计方法研讨 51. 试析图形图像UI设计 52. 基于中国传统元素的应用UI设计研讨 53. 视觉转达设计的...

    浅谈Java的发展及前景.pdf

    "浅谈Java的发展及前景" 经过对文件的分析,我们可以从多个角度来谈论Java的发展及前景。 首先,从Java的发展历史来看,Java是由Sun Microsystems公司于1995年5月推出的面向对象的程序设计语言。Java的出现标志着...

    浅谈物联网时代软件工程在智能家居中的应用 (1).pdf

    此外,数据安全和隐私保护也是软件工程在智能家居中必须考虑的重要因素,这涉及到数据加密、访问控制和用户隐私策略等方面的设计。 综上所述,物联网时代软件工程在智能家居中的应用涉及多个层面,包括家庭安防、...

    浅谈基于云计算和大数据的智慧校园方案设计.pdf

    在云计算模式下,用户无需拥有和管理自己的硬件和软件,而是可以通过网络访问共享的计算资源,如服务器、存储空间、应用程序等。云计算的目标是使IT资源像水和电一样成为一种公共服务,用户按需获取,按使用量付费。...

    浅谈Android移动开发程序员的职业发展之路

    ### 浅谈Android移动开发程序员的职业发展之路 随着信息技术的快速发展与智能手机的普及,移动应用开发成为了一个备受关注的领域,而Android作为全球最大的移动操作系统之一,其开发人员的需求量也在逐年攀升。本文...

    【毕业论文选题】ui设计生毕业论文题目.docx

    此外,针对特定用户群体,如老年人或儿童的UI设计,需要充分考虑他们的特殊需求和使用习惯,如“浅谈适应老年用户的手机社交应用UI设计”和“3-6岁儿童教育类应用软件UI分析与设计”。 UI设计与产品形象的关联性是...

    浅谈基于物联网技术的净水机运行状态监控系统设计.zip

    4. 应用层:用户通过智能手机APP或网页端,实时查看净水机的状态,接收故障警告,了解水质情况,甚至可以远程控制净水机的开关及工作模式。 三、系统功能 1. 实时监控:系统可以实时监控净水机的工作状态,包括...

    浅谈嵌入式处理器及其发展趋势.pdf

    相比之下,ARM架构以其高效能、低功耗和广泛的应用生态,成为当前嵌入式领域的主流选择,广泛应用于手机、平板电脑、物联网设备和汽车电子等领域。MIPS和PowerPC在特定的工业和网络设备中有其独特的优势,而DSP则在...

    浅谈车联网发展.pdf

    在车联网的架构设计中,通常会采用成熟的NGTP 2.0架构,增加统一运营管理域,确保车联网云服务平台不仅能够提供业务,还能够进行运营管理。同时,标准化的内外部接口能够帮助车联网系统集成第三方资源,降低对特定第...

    浅谈移动互联网安全.pdf

    随着移动智能终端如智能手机、平板电脑等设备的普及,移动互联网已经深入到人们日常生活的方方面面,不仅提升了工作效率和生活质量,同时也带来了安全隐患。移动互联网安全涉及的范围较广,包括但不限于移动设备安全...

Global site tag (gtag.js) - Google Analytics