好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

嵌入式产品平台开发方法的研究与应用.docx

8页
  • 卖家[上传人]:I***
  • 文档编号:233560676
  • 上传时间:2022-01-02
  • 文档格式:DOCX
  • 文档大小:129.17KB
  • / 8 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    •     嵌入式产品平台开发方法的研究与应用    徐继芸摘要传统嵌入式系统的开发,受到目标平台多样、开发工具不完善、需要软硬件协同开发等因素影响,往往开发周期较长,效率较低同时,一个产品线下的研发团队多以项目组为单位独立开发,项目组之间缺乏有效的沟通和技术共享,导致重复开发,基础模块升级、维护不同步等问题通过开发以通用构建模块为基础的产品平台可以有效减少重复开发,提升产品研发效率同时,在嵌入式产品平台的开发中,通过合理的系统架构,综合使用测试驱动开发,持续集成等敏捷开发方法和工具,提升产品平台开发效率,保障产品平台质量关键词】嵌入式 产品平台 敏捷开发 持续集成 通用构建模块 测试驱动开发1 引言对于一个有多个类似产品的产品线,构建一个以通用构建模块为基础的产品平台,可以加快产品开发速度,降低产品开发成本,控制风险产品平台的目标是将产品线成熟的CBB(Comnion Building Block,通用构建模块)抽取(抽象、重构)出来,提供给应用开发人员使用一方面避免重复开发基础模块,减轻应用开发的复杂度和工作量;另一方面,也避免了多个项目组各自封闭开发导致基础模块升级,Bug修改不同步等问题。

      产品平台的核心是通用构建CBB,CBB的核心是共性和可变性分析(Commonality and Variablity Analisys)下面介绍构建产品平台的核心要点,以及相关的流程、方法和工具2 产品平台总体架构针对中大型嵌入式产品平台,架构需要遵循如下2条核心原则:2.1 分层为了保持良好的结构,对于较大型系统的产品平台,逻辑架构一定需要分层、分包(包,在C++代码中对应的是namespace)设计越底层,模块功能越趋向工具,越高层,越趋向业务逻辑2.2 平台无关设计平台无关设计对于嵌入式平台非常重要,目的是切换硬件平台后,产品平台、应用程序无需改动,只需要针对目标平台做一个实现即可一般使用依赖倒置的设计方法实现平台无关产品平台逻辑架构图如图1产品平台逻辑构架图所示3 产品平台的开发方法和工具一个典型的嵌入式产品平台物理架构视图如图24 CBB开发流程CBB是产品平台的核心组成,CBB开发流程如下:(1)模块需求分析;(2)模块设计;(3)模块接口设计;(4)编写接口测试用例,偏重可用性测试(即TDD,可有效帮助接口设计);(5)模块设计评审;(6)编码;(7)完善单元测试用例需要说明的是步骤4,即TDD(Test-driven Development)——测试驱动开发。

      测试驱动开发是极限编程中倡导的软件开发方法,测试驱动开发的目的是取得快速反馈,并使用说明主线(illustrate the main line)的方法来构建程序经典的测试驱动开发流程,如图3测试驱动开发(TDD)流程图所示为了更敏捷的做设计评审,在设计阶段,可以使用TDD来完善接口设计,我们称之为TDDesign(测试驱动设计),优化的TDD如图4CBB开发中的测试驱动(TDD)开发流程图所示即,在接口设计完成后,实现前,先利用单元测试框架,根据业务流,调用接口写几个单元测试用例在实践中TDD的好处很明显:在写TDD测试用例的过程中就可能发现接口设计的不合理而且,对于持续集成的系统,TDD也并没有增加工作量另一个需要特别说明是步骤5:对设计评审的关注要求的设计评审内容:(1)总体说明(若结构复杂则需有逻辑架构视图);(2)接口使用示例;(3)类图,序列图(UML);(4)设计决策;(5)接口(直接附头文件,不要粘贴到设计文档)设计评审保证了CBB的设计质量,不会因为团队成员素质的不同而出现重大的设计问题CBB代码上传到代码仓库后,剩下的就是自动化工具的工作了:依次自动触发单元测试,集成测试,发布测试,最后邮件发送集成结果给开发人员。

      5 持续集成流程持续集成流程如图5所示集成测试除了集成测试用例外,还复用单元测试的测试用例集成测试运行单元测试的用例时,并非顺序运行所有模块(每个模块初始化,测试,反初始化后再运行下个模块),而是通过配置一定的依赖关系和策略,初始化一系列模块后,运行测试用例,最后,再反初始化这些模块6 发布流程發布流程如图6所示,自动化打包,并对发布包从用户使用的过程测试一遍发布流程每天构建,以保证每天都处于可发布状态所有过程均自动化7 主要工具几个关键的工具:(1)Jenkins:做持续集成工具,使用脚本辅助实现嵌入式系统的远程部署测试2)GTest:Google的单元测试框架3)CMake:高效友好的自动编译工具,优于configure/make4)Doxygen:自动生成接口说明,当然前提是规范好代码的接口说明格式5)MediaWiki:wiki工具,做CBB发布和技术文档的发布平台人人贡献的思想是推崇提倡的8 总结本文介绍的嵌入式产品平台已经在星网视易公司的KTV产品线得到应用,传统上,该产品线一款基于全新硬件平台的系统,开发周期大概需要10?12个月,而基于产品平台,产品开发效率、质量显著提升,芯片平台切换时间大幅缩短至约原来的1/4。

      實践证明,一个产品线下多个产品并行开发时,使用产品平台,可以大幅加快产品开发效率、提升质量、降低成本同时,合理的系统架构,并辅以敏捷方法的使用,可以极大加快产品开发效率参考文献[1]Duvall? Paul M,,Steve Matyas,and Andrew Glover. Continuous integration: improving software quality and reducing risk [M]. Pearson Education, 2007.[2]Beck,Kent.Test-driven development: by example[M] . Addison-Wesley Professional, 2003.[3]徐仕成.持续集成在现代软件开发中的应用与研究[D].中南大学,2007.[4]纪海.基于云计算的产品平台设计服务研究[D].机械科学研究总院,2012.[5]戴建国,赵庆展,郭理,秦怀斌.持续集成在项目开发中的应用研究[J].计算机工程与设计,2009(10):2573-2576.[6]Marta Larusdottir, Jan Gulliksen, Asa Cajander. A License To Ki11-Improving UCSD In Agile Development[J]. The Journal of Systems & Software,2016.[7]GB/T 22033-2008《信息技术嵌入式系统术语》概要[J].信息技术与标准 化,2009(08):38-40.[8]A g i1e software development,wikipedia.org[EB/0L].http:// en.wikipedia.org/wiki/Agile_ software-development.[9]Test-driven development,wikipedia. org [EB/OL] . http: //en. wikipedia. org/ wiki/Agile_sof tware-development.  -全文完-。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.