Advertisement

最佳实践:DevOps在嵌入式软件开发领域的实践探索丨IDCF

阅读量:

高嵩先生目前在武汉智能设计与数控技术创新中心担任研发效能工程师中级认证学员

摘要:

嵌入式系统因其具备高集成度、高稳定性和低成本等核心优势而广泛应用于各个行业;在进行嵌入式软件开发时,需要充分考虑硬件设备与其环境之间的兼容性问题;开发团队应采用更加高效且灵活的方法来完成嵌入式产品的开发、部署与维护工作;DevOps被视为一种流程导向的文化理念,在软件开发领域已取得了显著成效;本文旨在探讨DevOps在嵌入式产品开发中的具体应用方式,并分析其面临的主要挑战以及相应的解决方案;通过对实际案例进行深入分析并总结经验教训,在本文中将为嵌入式产品开发团队提供宝贵的经验参考和实践指导

关键词:DevOps、嵌入式系统、嵌入式软件开发、持续集成、持续交付

1、引言

凭借信息技术的进步和发展, 嵌入式系统已经成为现代生活中不可或缺的重要组成部分. 不仅在智能手机和汽车领域, 而且在智能家居设备以及工业自动化系统中, 它们都发挥着重要作用. 然而, 在嵌入式设备日益复杂的背景下, 传统的开发模式已经难以应对快速迭代市场的需求. DevOps作为一种整合开发与运维理念, 提供了一种提升软件质量和效率的方法论, 并广泛应用于软件开发领域[1]. 然而, 目前关于DevOps的最佳实践主要集中在互联网及应用软件领域, 在嵌入式软件开发中仍面临诸多限制[2]. 针对这一现状, 本文将深入研究DevOps在嵌入式软件开发领域的实践应用, 旨在为嵌入式软件团队提供更加高效灵活的研发流程.

2****、DevOps概述****

DevOps整合了Development(开发)与Operations(运维)这两个术语,并旨在减少开发团队与运维团队之间的障碍以实现从软件开发到部署再到维护的自动化以及持续优化[3]。其核心在于推动文化与流程上的变革,并包括以下核心关键实践:

借助自动化工具与脚本来完成开发、测试与部署流程,从而降低人为干预并提升效率与一致性的水平。

持续集成(CI):定期地将开发人员编写的代码整合到公共存储库中,并通过自动化流程完成编译过程并执行测试工作;以保证代码质量及系统的稳定性。

持续交付机制(CD):定期地将经过CI流程验证并成功通过的代码定期部署到生产环境中,并以确保快速响应与可靠发布。

(4)监控与反馈:借助监控系统与用户反馈机制的信息采集能力,在实时监测系统运行状态的基础上, 有效识别并应对问题发生, 并通过持续优化提升产品性能和服务质量

DevOps以精益生产思想为核心指导,在融合敏捷开发方法论的基础上,致力于实现持续优化与价值最大化。通过缩短软件开发周期,并显著提升交付速度与质量的同时,在降低故障率与运营成本方面也取得了显著成效。这些成果能够有效应对市场需求的快速变化,在互联网行业得到了广泛应用。随着开源生态系统的不断完善发展,在这一领域逐渐涌现出了包括Jenkins、Gitlab、Kubernetes等在内的开源自动化工具集合。然而这些工具虽然在某些方面具有较强的单元特性但在信息化集成与维护能力方面存在明显不足这无形中抬高了DevOps实施的门槛。近年来随着大型互联网技术企业的实践经验积累其已成功推出了包括微软Azure华为云原力腾讯云码仓在内的系列商业化的DevOps解决方案这些平台不仅在集成度上更加完善而且界面设计更为友好化为中小企业及其他行业实施DevOps转型的重要助力

3、嵌入式软件开发的挑战

与传统的软件开发相比,嵌入式软件开发具有以下特点:

基于特定硬件设计[4]:嵌入式软件一般会整合到特定的 hardware 设备中,在开发过程中需充分考虑 hardware 和 software 之间的兼容性和相互作用

一般情况下, 嵌入式软件必须满足严格的时间响应需求, 各模块之间必须按照预定的时间顺序运行, 从而保证系统能够及时、准确地处理各类事件。

(3)资源受限:嵌入式软件通常配备有限的存储空间与计算能力,在设计时就需要对代码进行优化并提高资源利用率;开发团队需通过精简代码与提升资源使用效率来实现系统的高性能水平与产品成本之间的平衡状态

由于这些特点导致,在嵌入式软件开发中难以实现传统软件开发所使用的DevOps框架与工具的应用

在产品 versions 管理方面面临的主要困难在于 software 和 hardware 之间存在较强的依赖关系。每种 hardware configuration 都对应着特定的 software versions 要求。在实际应用中可能会遇到同时支持数十种不同的 hardware configurations 的情况。

(2)提高效率方面的难题。实现嵌入式系统软件的有效测试必须依赖软硬件协同调试,在实际应用中通常依靠人工操作。在嵌入式设备上部署自动化的代理服务用于测试是高度复杂的,并且这可能会导致嵌入式系统的运行效能下降。

(3)知识产权安全面临的挑战。嵌入式系统软件通常基于硬件属性进行技术参数调整,在获取这些参数的过程中往往需要大量经验积累和实验验证。该过程构成其重要的技术资产之一。如何有效管控嵌入式系统软件源代码的流通同样面临重大挑战。

4、嵌入式软件开发模式设计

针对这些挑战,本研究将围绕组织协作机制及CI/CD流程展开,深入分析嵌入式软件开发模式,旨在实现嵌入式软件开发过程中的持续集成与标准化交付,从而有效缩短嵌入式系统产品的发布周期

4****.1********面向嵌入式软件的反脆弱组织构建****

嵌入式软件产品高层面向终端用户端,在底层与硬件芯片进行连接。在产品设计过程中需要注重用户体验和使用感受的同时也要考虑到硬件的成本问题避免不必要的浪费因此要确保能够按照层次逐步实现目标

总体架构设计应注重高内聚与低耦合作为主要目标,并可采用分层次的设计思路。嵌入式软件通常划分为应用层面、业务逻辑层面、功能模块层面以及硬件驱动层面等部分;其中的功能模块层面又可分为用户态功能模块及内核态功能模块两个子部分。在整体架构设计方案中需规划各层次的API接口,并明确各层次间的接口关系;避免上一层依赖下一层的情况出现。通过层次分明的设计结构实现对DevOps实践的有效支持。

该方法有助于简化产品需求的分解过程。
在团队协作中, 各个层级的角色通常扮演着甲方与乙方的角色。
由此可见, 在团队组织中进行产品需求分解往往意味着各个层级之间的分工合作不断进行。

(2)界定团队工作的范围并明确各成员应承担的角色至关重要。具备抗逆能力的组织结构要求当团队成员出现"空缺"时其他同事能迅速填补这一缺口。通过构建学习型组织环境促进团队成员间的知识共享与协作发展是一种有效的方式但必须注意在嵌入式软件开发中要特别留意团队边界问题。例如为了避免应用层开发者深入驱动层开发可能导致效率低下因此在每层之间设立清晰的分工界限有助于构建具备抗逆能力的组织结构

(3)便于划分CI/CD的不同阶段。合理的模块划分有助于降低持续构建的工作量,并避免不必要的构建过程;明确的技术依赖关系有助于规划流水线的执行流程;清晰的设计方案能够促进产品规划与集成工作。

总体架构确定后, 可采用SoS(Scrum of Scrums)的规模化敏捷开发模式, Scrum团队在各个层级内独立运作. 针对产品Owner(PO)、业务经理(SM)及团队成员进行明确指定, 其中产品Owner不仅要负责本团队的产品需求,还需向其下属团队提出相关需求.

在整个嵌入式系统层次上成立SoS团队,该团队由产品负责人Scrum敏捷管理大师市场副总裁架构师及Scrum计划负责人为代表组成.每隔一周至两周安排一次会议用于优化进度与解决问题每次会议期间各相关方应聚焦讨论当前项目进展中的风险挑战并分享可应用的技术创新方案

4****.2考虑软硬件测试的CI/CD********设计****

面对嵌入式软件系统知识产权安全挑战的同时

其次,在推动系统智能化发展的大背景下应当尽可能地发展虚拟调试技术。一方面借助虚拟调试技术能够在开发阶段就发现并解决潜在的问题从而减少后期维护工作的负担;另一方面随着工业数字化转型进程的加快虚拟调试技术将成为构建数字孪生产品的重要支撑性技术实现这一目标的有效途径

为了搭建分叉发布与主干发布的工作流,请参考附图1的具体配置设置

图1 Git分支开发-主干发布工作流示意图

值得特别关注的是,在大型团队进行转型的过程中

图2 热修复工作流示意图

基于现有架构的基础上

图3 嵌入式软件CI/CD流程示意图

5、DevOps在国产智能数控系统产品开发中的实践效果

此数控系统属于典型的嵌入式设备类型。其硬件基础配置主要包含工控机(IPC)与人机交互面板(HMI)。如图4标注展示了这些核心组件的位置关系及其基本连接方式。通过HDMI和USB接口实现了工控机与人机界面的高效数据传输与控制。在工控机内部运行RTOS操作系统以及相关的功能软件实现。

通过评估本文所提出的研发模式,在经过一个月的应用后显示出显著的效果。具体而言,在实施该模式一个月后,价值流动效率提升了约30%,而故障率下降了约56%。随着团队成员逐步掌握这一新方法并持续提出优化建议,并且通过不断收集反馈意见并进行改进,在未来一年内我们有理由相信将能够实现每周至少发布一次的目标

6、结论

本文从理论与实践相结合的视角探讨了DevOps技术在嵌入式产品开发领域的应用价值。通过对DevOps核心理念及操作规范的深入分析,并结合嵌入式产品开发的具体特点及面临的主要挑战,在系统性研究的基础上深入探究如何将DevOps理念成功融入嵌入式产品开发实践中,并提出了一套切实可行的操作方案。基于实际案例进行分析与总结后发现该技术方案既保证了项目实施的有效性又确保了最终产品质量,在提升团队协作效率方面发挥了显著作用并为相关企业提供了有益的技术参考建议

然而,在实际操作中实现将DevOps理念应用于嵌入式产品开发并非易如反掌之事。这不仅需要开发团队与运维团队的密切协作配合...还需双方共同努力...不仅要优化现有工作流程...还需不断完善相关的技术和工具体系...以不断提升整体技术水平与效率水平

参考文献

在《软件学报》2019年第30卷第10期中发表的研究论文《围绕基于完整价值交付的文档DevOps实践探讨》

[2] 祁向杰, 郑武, 谢凤玲及其他作者. 在企业数字化转型中硬웨实现DevOps实践[J/OL]. 值得工程学报, 2020年6月8日发布于第39卷第1期: 第1至第5页

[3] 荣国平,张贺,邵栋,等.软件过程与管理方法综述[J].软件学报,2019,30(01):62-79.

该文提出了一种基于Azure DevOps平台的持续集成与自动化测试方案,在嵌入式系统开发中实现了高效的测试管理功能。该方案通过整合先进的CI/CD技术与自动化测试框架,在保障系统稳定运行的同时显著提升了开发效率。发表于《工业控制计算机》期刊, 2022年9期, 页码17-19+23.

全部评论 (0)

还没有任何评论哟~