DevOps:定义汽车软件新开发模式

当前,全球汽车产业正在经历从传统工业向数字化转型的大变革,智能化、数字化、信息化正在成为汽车电子行业转型发展的必由之路。“软件定义汽车”(Software Defined Vehicles,SDV)概念的提出,说明软件在汽车产品中承担的角色越来越重要。随着汽车软件的量级和复杂度不断提高,汽车厂商对嵌入式系统开发需求越来越高。汽车的系统开发以模型驱动开发为主(Model-based systems engineering,MBSE),快速迭代、持续集成、可靠性代码自动生成、测试自动化等改善开发流程的需求逐渐受到重视。 

DevOps结合了软件开发(Develoment)和IT运营(Operations),旨在缩短系统开发生命周期,并提供更高质量的连续交付。本文将从软件开发模式的类别入手,结合当下汽车软件开发过程中面临的各类问题,通过分析DevOps和CI/CD的整合工作流在软件开发中的优势,探索汽车软件开发新模式。

 

01.软件开发模式

软件开发是一项包括需求定义与分析、设计、编程、测试、交付和维护的系统工程。目前常见的软件开发模式有以下四种:

瀑布模式(Waterfall model):将软件开发过程分解成线性顺序的不同阶段,每个阶段依赖于前一个阶段的交付成果。瀑布模式的软件开发过程灵活性较小,因其开发过程基本单向进行。其最大风险在于,该模式只有在产品研发完成后才能确定结果与预期是否相符,如有差错,工程师就需要重新开发,甚至重新设计规划。

▲瀑布模式

迭代增量式开发(Iterative and incremental development):整个开发流程被划分和整合为一系列固定周期的短小项目,即一系列的迭代。每一次迭代都包含需求分析、设计、实现与测试。此模式下,开发工作可以在需求被完整确定之前启动,并在一次迭代中完成系统的一部分功能或业务逻辑的开发工作,再通过客户的反馈来细化需求,开始新一轮的迭代。迭代增量式开发弥补了传统瀑布式开发模式的一些弱点,提高了效率和开发成功率。

▲迭代增量式开发模式

 

螺旋模式(Spiral Model):是一种风险驱动的软件开发模式。基于给定项目的独特风险模式,螺旋模式指导开发团队往往采用不止一个的流程模型,如增量式、瀑布式或原型式。它提倡适应性规划、演化开发、尽早交付和持续改进。

 

▲螺旋模式

 

敏捷软件开发(Agile software development):包括需求发现和解决方案改进。该模式通过自组织和跨职能团队与用户协作,制定适应性计划,进行渐进开发、早期交付、持续改进,灵活应对需求、能力的变化以及对需要解决问题的理解的变化。这是一种以用户需求进化为核心的迭代、循序渐进的开发方法。工程师先将用户最关注的软件原型做出来进行交付,根据用户在实际场景中反馈的问题,快速修改弥补需求中的不足。上述过程不断迭代,直至用户满意。

▲敏捷软件开发

 

02.DevOps&CI/CD

随着汽车软件复杂度和代码数量的不断提高,软件系统开发周期越来越快,传统的开发方式需要耗费大量人力和时间成本,无法紧跟市场越来越快的节奏。这就促使开发团队采用优于传统开发模式、更敏捷的方式——DevOps。 

DevOps是一组过程、方法和系统的统称,集文化理念、实践、工具于一身,重视开发(Dev)和运维(Ops)和质量(QA)部门之间的沟通合作。 

与传统软件开发模式系相比,DevOps打破了开发和运维之间的壁垒,通过自动化“软件交付”和“架构变更”的流程,使得软件的构建、测试和发布能更加快捷、频繁和可靠,从而帮助团队更快地发展和改进产品、服务客户、高效参与市场竞争。

 

▲DevOps

 在汽车软件领域,敏捷开发为嵌入式DevOps提供了合适的路径,以便团队更快发布新版软件代码。随着软件快速迭代,DevOps方法的迭代也在快速演进。在每次迭代中采用卸载/重新安装的方式已变得不切实际,CI(Continuous Integration,持续集成)/CD(Continuous Deployment,持续部署)方法可以使软件系统在不停止运行的情况下进行迭代。

DevOps的核心是持续集成(点击此处查看“持续集成”相关文章)。团队只需通过每天一次或多次的集成,进行嵌入式软件的自动化构建和验证,就可实现持续集成,尽早发现集成错误。

 

 

03.DevOps在汽车嵌入式软件领域推行的解决方案

面临的挑战

目前,阻碍DevOps在汽车嵌入式领域推行的挑战主要有两方面:

1)车载软件大多数为嵌入式软件,难以脱离真实目标系统单独运行。然而绝大部分汽车厂商采用“研发驱动测试”的模式,软件测试部门没有独立的硬件目标系统用于软件测试;

2)在自动化测试实践中,硬件难以支持软件进行不同环境的设置。要想达成完全测试自动化,工程师需要对目标系统进行定制。

 

通用解决方案

一般来说,实现持续集成需要满足以下三点:

1)充分借鉴软件测试经验,引入优秀的开源工具,发挥开源工具灵活、可配置强的特点;

2)整合企业已有的软件测试工具,使测试技术保持集成性;

3)结合全数字仿真平台部署仿真环境,保证测试过程的稳定可靠。

▲DevOps&持续集成

 

SkyEye天目全数字实时仿真软件

SkyEye天目全数字实时仿真软件,是一款国产的基于可视化建模的硬件行为级仿真平台,支持国内外主流架构、处理器和多机同步仿真,具备自动测试框架与灵活的可定制性,在汽车、防务、航空航天、电子、船舶等各种嵌入式领域应用广泛。

▲SkyEye界面图

 

SkyEye具有硬件平台所不具备的灵活性。通过对模型和平台的定制,客户可以得到跟自己的目标系统完全一致的仿真平台。利用SkyEye,软件开发团队可以开展并发式的功能测试和快速回归测试,加快问题定位和排查故障的效率。SkyEye为汽车嵌入式软件的设计、开发、集成与测试,直至后续部署、维护的全生命周期提供了一个功能强大、高效、易用的平台。

 

原文链接:https://mp.weixin.qq.com/s/wPbnh5NVmUt_fFTkbYHFaw

 

posted @ 2022-09-28 09:50  zoeking2  阅读(387)  评论(0编辑  收藏  举报