当前位置: 首页 > news >正文

嵌入式软件开发为什么需要DevOps?

DevOps提出至今已逾十年,作为热门概念,DevOps近年来频频出现于各大技术社区和媒体文章中,备受行业大咖追捧。作为新一代持续集成/持续开发(CI/CD)的方法论,DevOps正被快速引入嵌入式软件开发领域中。

为什么嵌入式软件开发对DevOps的接受度越来越高?其根本原因就在于,目前暂时没有比DevOps更能显著降低成本、提升效率的方法了。

谷歌的DevOps研究和评估(DevOps Research and Assessment,DORA)团队于9月29日发布了《2022年DevOps促进状态报告》,从吞吐量(代码变更的准备时间和部署频率的综合)、稳定性(恢复服务的时间和变更失败率的综合)和运营业绩(可靠性)三个维度对受访者进行了聚类分析,结果显示,未使用DevOps的受访者很少能在半年内将软件投入生产,即便成功投产,也有16%-30%的失败率。

失败意味着什么?根据IT软件质量联盟(Consortium for IT Software Quality,CISQ)的调查显示,2020年全美劣质软件成本消耗高达2.1万亿美元,每个失败项目造成了约5000万美元的经济损失。

嵌入式软件开发&DevOps

对于嵌入式软件开发来说,应用DevOps并非易事。与传统软件领域的DevOps不同的是,嵌入式软件开发的DevOps严重依赖硬件,软硬件存在紧耦合的情况。随着嵌入式系统复杂程度的直线飙升,硬件成为了掣肘嵌入式软件开发领域DevOps实施的瓶颈,不仅增加了部署的成本与实践,还有降低开发质量的可能。对硬件进行模拟仿真成为了最佳解决方案。

天目全数字实时仿真软件SkyEye,是基于可视化建模的硬件行为级仿真平台,支持用户通过拖拽的方式对硬件进行行为级别的仿真和建模,可模拟复杂嵌入式系统硬件。

▲ SkyEye 界面图

基于SkyEye搭建的嵌入式系统虚拟化运行环境,工程师可不受物理硬件限制,随时访问目标系统,快速搭建虚拟硬件模型并提前进行开发、测试和验证工作,实现高效率、高质量的软件交付。

基于SkyEye的DevOps痛点及应对方法

研发周期瓶颈

选择对硬件进行仿真模拟是尽快完成开发、缩短研发周期的有效方法,但工业软件需要选择满足苛刻设计要求的最佳仿真平台。SkyEye可进行硬件行为级仿真,是为工业软件量身定制的仿真平台。

仿真的准确与快速

仿真的准确性与速度似鱼与熊掌,往往不可兼得,对于航空、航天、轨交等安全关键领域而言,准确性通常更为重要。基于DevOps搭建的流水线,仿真程度越是准确,开发团队对代码的信心就越高,软件发布的准备也会更为完备。

如需开发基于特定SoC芯片的嵌入式软件,在无法获得芯片实物的情况下,就可以考虑应用SkyEye。SkyEye支持主流的嵌入式硬件平台,可运行国内外主流的操作系统,对国产生态的支持尤为出色。通过利用基于LLVM的动态二进制翻译技术,SkyEye可使虚拟处理器在典型的桌面计算机上运行速度达到2000MIPS以上。

准确性与速度可通过SkyEye实现兼顾。

无限制的无损测试

基于SkyEye搭建的嵌入式系统虚拟化运行环境,工程师可不受物理硬件限制,在不损坏实验室、不破坏实际设备的情况下对虚拟设备进行反复的压力测试、真空测试等——涉及安全关键的嵌入式硬件往往伴随着高昂的硬件制作成本。

开发团队可应用SkyEye随时访问目标系统,并基于此进行无穷无尽的场景组合测试,从而加快产品测试速度,更大幅降低DevOps应用成本。

与第三方语言或者模型集成

仿真平台如无法与第三方语言或模型集成,DevOps实际的可行性就要大打折扣。SkyEye目前已实现与SystemC集成进行时序仿真,可与MATLAB/Simulink集成进行多领域协同仿真,DevOps实施的便捷性得到了有效保障。

▲ SkyEye与MATLAB连接图

对嵌入式软件开发领域而言,使用SkyEye对硬件进行高精度的仿真模拟,能够有效规避应用DevOps时原有硬件问题带来的风险,大大提高开发效率、降低开发成本。

相关文章:

  • Effective C++笔记之二十三:非void函数不写return
  • LabVIEW提高开发效率技巧----VI服务器和动态调用
  • 人工智能和大模型的简介
  • 【C语言学习路线】
  • 模拟视频推到WVP推流列表
  • 电脑上如何多开微信软件(多个微信同时使用)
  • 【微信小程序】实现授权登入---超详细讲解
  • 【Unity】构建简单实用的年份选择器(简单原理示范)
  • mysql数据库优化及sql调优,Java后端社招面试经历
  • Rust调用同级目录中的rs文件和调用下级目录中的rs文件
  • Docker之数据卷
  • HarmonyOS | 状态管理(五) | @Observed装饰器和@ObjectLink装饰器
  • 艾美捷游离巯基检测试剂盒基本参数和特点说明
  • python基础(15):面向对象编程
  • 【RocketMQ】RocketMQ实例--定时/延时消息
  • Redis 中主从、哨兵和集群这三种模式有什么区别 ?
  • 数据库MYSQL及MYSQL ODBC
  • 华为机试 - 猜字谜
  • Windows下的通用进程守护程序(持续更新中),高仿supervisor。
  • 认证AAA的好处及必要性
  • Chrome谷歌浏览器清空缓存并强制刷新页面
  • 有了 HTTP,为什么还要 RPC?
  • 蓝桥杯:跳越
  • 05第二章:04_使用通用 Mapper
  • 二苯并环辛炔-聚乙二醇-CY5.5;DBCO-PEG-CY5.5简介;DBCO-PEG-Cyanine5.5 激发/发射波长为 675 nm/694 nm
  • 【关于eps8266自动重启 Soft WDT reset】
  • QEMU环境搭建
  • SetWindowLongPtr之GWLP_USERDATA
  • 华为OD机试真题 Python 实现【去除多余空格】【2022.11 Q4 新题】
  • LeetCode 8. 字符串转换整数 (atoi)(C++)
  • 作为程序员的你,常用的软件有哪些?
  • 当谈论 React hook,我们究竟说的是什么?