嵌入式软件开发的开发过程和技术往往落后于一般软件行业。即使在今天,通用软件行业已经采用构建管道、持续集成和测试工具,而通用嵌入式行业似乎没有意识到这些流程的存在,开发更复杂的构建管道会对嵌入式软件开发生命周期产生巨大影响。让我们看看嵌入式开发人员如何创建自己的构建管道。

  构建管道概述

  开发更复杂的构建管道会对嵌入式软件开发生命周期产生巨大影响。例如,在软件产品的整个生命周期中,经过深思熟虑的构建管道可以:

  提高软件质量

  减少调试时间

  降低项目成本

  提高按时完成任务的能力

  简化软件部署过程

  软件构建管道只不过是用于管理、测试和部署应用程序的过程和工具。例如,嵌入式软件开发人员通常会将他们的软件提交到修订控制系统,手动测试他们的代码,然后发布可以手动部署到他们的系统的应用程序映像。这个构建管道非常传统,但它缺乏现代构建管道可以提供的复杂性和自动化。

  嵌入式开发人员可以利用的更现代的构建管道由四个阶段组成,这些阶段可以完全自动化和手动启动。这些阶段包括:

  提交软件(手动触发)

  构建和分析(自动化)

  测试和报告(自动化)

  部署(自动或手动)

  每个阶段都有自己的流程和与之关联的工具,但最后三个阶段都可以作为持续集成/持续部署流程 (CI/CD) 的一部分来完成。CI/CD 背后的想法是,开发人员可以在一天结束时将他们的代码提交到存储库,然后启动一系列自动构建、度量和测试,这些可以在第二天或一切顺利的情况下为开发人员提供反馈,自动将固件部署到现场设备。此过程的概述和所涉及的一般工具如下图所示:

  请注意,此图由两部分组成,上半部分描述所遵循的过程,下半部分描述所涉及的工具。测试和报告阶段与部署阶段之间也存在障碍。除了所有的测试用例之外,软件只有在通过了所有的构建和分析标准时才应该被部署。如果任何构建或测试用例产生警告或错误,则可以将此反馈报告给嵌入式开发人员,这会触发对软件的更新,然后是新的提交,然后再次启动自动化阶段。

  增强嵌入式软件构建管道

  创建自动化构建管道不会一蹴而就。研究正确的工具、实施它们、测试过程,然后培训工程师如何正确使用它需要时间,那么如何去增强他们的软件构建管道呢?

  首先,确保你拥有健全的修订控制流程非常重要。当今大多数团队都使用版本控制,与几年前相比,这是一个很大的改进,但许多团队都会提到他们每周只提交一次代码,甚至更少。软件应该以足够小的块开发,代码每天至少提交一次,如果不是一天几次的话,这样会让管道更频繁地提供反馈。

  其次,你需要实现一个持续集成服务器。嵌入式软件开发人员也可以使用的最流行的之一是 Jenkins(尽管还有其他的)。持续集成服务器旨在自动构建和部署软件,你会发现通常有许多集成可用于自动化几乎任何你可能想要的东西。

  第三,嵌入式开发人员需要确保自己的编译器和静态代码分析工具可以通过命令行界面执行,或者它们包含用于自己的持续集成服务器的插件。如果没有静态代码分析工具怎么办? 静态代码分析是软件开发过程中的重要一步,现在是寻找分析的好时机。

  第四,也许最困难的是选择测试工具并将其集成到开发过程中。自动化测试非常适合回归测试和验证软件,但它们确实需要将测试设计和实施作为开发过程的一部分。不完全测试软件的自动化测试可能会在软件中留下漏洞,并导致部署质量低于预期。出于这个原因,如果可能的话,应该从一开始就开发测试工具,并将其集成到像测试驱动开发 (TDD) 这样的过程中。

  最后,你不必一次完成所有这些操作,增强构建管道可以分步完成,从上述每个步骤开始,一次一个地构建你的工具链和流程。一旦每个阶段都坚如磐石,就可以添加它,直到你最终拥有一个现代化的构建管道,该管道可以完全自动化你的构建、测试和部署。

  结论

  嵌入式软件构建管道的现代化可以为嵌入式开发团队和整个业务带来很多好处。就像任何流程一样,为嵌入式系统开发正确构建现代构建管道需要时间和预算投资,以构建和实施管道。现代构建管道可以帮助阐明前进的道路、监控软件质量甚至简化软件更新。

开发嵌入式软件构建管道相关推荐

  1. 嵌入式系统实验 构建嵌入式Linux系统,《嵌入式系统与开发》构建嵌入式Linux系统-实验报告.doc...

    <嵌入式系统与开发>构建嵌入式Linux系统-实验报告 <嵌入式数据库sqlite移植及使用> 实验报告 学生姓名: 陈 彤 学 号: 1座机电话号码 专业班级: 130044 ...

  2. CodeMix使用教程:构建管道和验证

    CodeMix在线订购年终抄底促销!火爆开抢>> 在CodeMix中构建管道和验证 CodeMix利用通过CodeMix增强任务定义的构建管道来生成项目的单一权威构建. 使用构建管道,用户 ...

  3. golang 管道_必须具有用于golang构建管道的工具

    golang 管道 Build pipelines have become one of the most important parts of every software development ...

  4. 如何优雅地使用pdpipe与Pandas构建管道?

    作者 | Tirthajyoti Sarkar 译者 | 清儿爸 编辑 | 夕颜 出品 | AI科技大本营(ID: rgznai100) [导读]Pandas 是 Python 生态系统中的一个了不起 ...

  5. 嵌入式开发环境构建_设计模式:不可变的嵌入式构建器

    嵌入式开发环境构建 上周,我写了关于什么使图案成为反图案. 本周,我提出一种设计模式-或等待--也许这是一种反模式. 还是? 让我们看看! 当有一个类可以构建另一个实例时,构建器模式是一种编程风格. ...

  6. 捷克 签证_一位捷克开发人员构建了可在您的浏览器中直接运行的语音合成器

    捷克 签证 Here are three links worth your time: 这是三个值得您花费时间的链接: A Czech developer built this mouth synth ...

  7. webpack最新版本_webpack小结-开发环境构建优化

    刚刚对我们前端项目做了一顿分析优化操作,因为接手时每次构建要花两分钟左右的时间,实在忍受不了,只能动手了.通过这次优化,重新温习了下 webpack 的一些知识.接下来会关于 webpack 展开写几 ...

  8. pandas中size方法_如何使用pdpipe与Pandas构建管道?

    作者 | Tirthajyoti Sarkar译者 | 清儿爸编辑 | 夕颜来源 | AI科技大本营(ID: rgznai100) [导读]Pandas 是 Python 生态系统中的一个了不起的库, ...

  9. 4.5管道实现机制和模拟构建管道「深入浅出ASP.NET Core系列」

    原文:4.5管道实现机制和模拟构建管道「深入浅出ASP.NET Core系列」 希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,谢谢关注. 管道实现机制 要了解管道的实现机制 ...

  10. c语言程序构建,c语言开发环境构建及简单的c程序设计.doc

    c语言开发环境构建及简单的c程序设计 实验x C语言开发环境构建及简单的C程序设计 一.实验目的 1.熟悉字符模式下的C程序编译和调试环境,基本掌握麒麟Linux字符模式下的编译工具和调试工具的使用: ...

最新文章

  1. html5 颜色弹窗 位置,HTML5之placeholder属性以及如何更改placeholder属性中文字颜色大小位置...
  2. css6图层 解锁,OpenLayers 5至6:图层无法渲染
  3. python中configparser详解_python ConfigParser模块详解
  4. 跟计算机断层扫描相关的技术,计算机断层扫描技术(简称PET)
  5. jquery ajax 数据传输
  6. url编码函数encodeURI和encodeURIComponent
  7. 12、testng.xml指定运行测试包、测试类、测试方法
  8. dell笔记本c语言系统,戴尔dell笔记本电脑U盘重装系统win7教程图解
  9. HDU 4694: Important Sisters(支配树)
  10. UVa 11572 Unique snowflakes【滑动窗口】
  11. Nobook虚拟实验室完爆各种传统实验室
  12. 【毕业设计-教程】红外控制原理详解 - 单片机嵌入式 物联网 stm32 c51
  13. html id 命名,html类,id规范命名
  14. 一个写着玩的 bitcoin 客户端
  15. 音频采集 via Media Foundation
  16. 让gentoo安装不再难
  17. mysql 经纬度范围_根据经纬度查询最近距离,mysql查询经纬度附近范围
  18. 初学博科YIGO2.0学习心得--下推
  19. usb gadget g_webcam uvc gadget调试
  20. Docker中Swarm集群部署

热门文章

  1. 软件工程师:机器学习也需要学习?
  2. C#开发工控上位机编程 csdn_C#串口编程示例
  3. 有效沟通要解决的三个基本方面
  4. 《计算机世界》封面报道:互联网10年孤独[z]
  5. 如何实现批量截取整个网页完整长截图?内容很多很高浏览器看不全Chrome插件崩溃无需安FireShot,优爱酷批量长网页整页截图系统,设计师推荐的必备好工具好方法web2pic,html2jpeg
  6. [算法]代码运行时间增长数量级对比 线性级别N vs 线性对数级别 NlgN
  7. 【Android Studio】一款简易appUI界面开发(2)
  8. 第十三届蓝桥杯C B组 J:砍竹子
  9. 【资源下载】分享个嵌入式开发的入门教程(包含视频)
  10. Es6模板字符串封装与使用