沃尔沃汽车公司(VCC)是世界上最知名与最受人尊敬的汽车品牌之一。 该公司在为全球客户提供最新技术和安全性能方面享有很高的声誉。 在瑞典哥德堡郊区的VCC研发中心里,数千名工程师组成的工作团队致力于为下一代乘用车创造新技术。无论是应用于电动、燃油还是混合式动力系统,沃尔沃汽车研发活动的重点是提高动力总成部件(发动机,动力传动系统,齿轮箱)的性能。 因此,汽车动力系统应用的控制软件起着至关重要的作用。
沃尔沃汽车:为沃尔沃汽车软件注入更多动力
扩大沃尔沃汽车内部软件开发的规模
沃尔沃汽车公司(VCC)在大约20年前引进了基于模型的内部软件开发,主要用于发动机和动力传动系统的控制。 基于模型的开发的优点是,现场工程师的专业知识可以与自动化的高质量软件开发相结合。 未来控制软件的功能模型将由功能开发人员的人编写,他们是其各自领域的专家。 他们专注于机电一体化系统及其功能行为,在软件生成工具链的支持下创建易于阅读,可测试和可维护的软件模型,包括控制器代码。VCC驱动系统和动力总成部门始于2002年,当时有一个大约由10名软件开发人员组成的不大的团队和一个简单的基本流程。 当时手动批处理(Bat)文件被用于生成代码和软件建构流程中。
在过去的几年里,由于来自多种不同车辆项目的需求不断增加,如不同类型的动力传动系统和燃烧控制功能的扩展,控制器软件中加入了越来越多的功能。 所需功能的复杂性和绝对数量也呈指数级增长。 这导致越来越多的验证和确认步骤需要插入到开发链中。目前这个开发团队已发展成100多名行业专家和功能开发人员的团队。 随着团队规模的扩大,将不同的软件组件集成到一个工作系统中,并减少需要在软件存储库中进行跟踪的故障数量成为了一个挑战。 而新软件产品的每一个版本的发布也变得越来越具有挑战性。 当时Apache SVN被用作管理开发不同软件版本的主要工具。
沃尔沃汽车向持续集成的转变
2014年,沃尔沃汽车的高层技术管理层决定引进先进软件行业的最佳实践、工具和方法。 在当今的软件行业里,持续集成(CI)和每日构建被用于将软件系统中的不同组件轻松集成到成熟的软件系统中,并使已有的保留功能不会被新的特征影响。 此外,每个开发人员会收到关于他们对软件系统的贡献的快速反馈,且资源密集型的测试过程能够一夜之间在一个更大的服务器上完成。 通过使用回归测试、每日构建和持续集成,人们可以有效地避免一场“集成噩梦”, 即要等到发布日那一天才能将其开发的各部分合并到预发布分支(release branch)上时的通常情况。 这些重要的CI原则被引入到VCC整个电子控制模块系列中。
2018年,他们又额外引进了基于OpenStack ZUUL的新CI系统。 ZUUL的座右铭是:“不要合并损坏的代码。”因此,只有经过测试和分析的代码才被允许合并到主分支(master)上。 ZUUL有许多优点,但最重要的一个是预测合并步骤,它允许大规模并行化。 ZUUL建立在变更管理系统GIT的基础上,这是一种快速、可扩展的分布式版本控制系统。 此外,GIT的插件Gerrit用来准备协作代码审查。 因此,ZUUL是大脑, 它听取Gerrit里的事件并将任务分发给Jenkins。 这个最新引进的、基于CI的开发链被称为沃尔沃汽车ECM CI链。 从软件实现开始,每一个新的提交都会自动触发一组集成和回归测试。 开发人员提交的变更已通过运行对构建的自动测试进行了验证。 这种新的开发方法完全遵循项目前期加载质量保证流程的理念。 另外,将后期集成问题的数量降低到绝对最低值的主要目标也很快得到了实现。
沃尔沃汽车的MES工具软件部署
到目前为止,VCC关注的重点一直是用于版本管理、代码生成和最终代码质量的主要技术。 但是,在基于模型的设计中,最终代码的质量取决于为自动代码生成提供基础的软件模型的设置。 功能模块是最核心的工件,而对软件模型的全面验证是保证最终代码质量的关键。 出于这个原因,沃尔沃汽车的动力总成部门开始寻找先进、实用的模型质量指标和质量工具,以弥补在这方面的不足。
2017年,VCC评估了一套由Model Engineering Solutions公司设计的模型质量工具。VCC决定逐步将建模规范检查工具MES Model Examiner® (MXAM)和模型结构检查工具MES M-XRAY® (MXRAY)(注: 自2020年起,MXRAY已完全集成在MXAM中), 引入到现有的CI工具链。 MES工具软件能够计算质量指标并分析每个通过CI工具链的模型是否符合建模规范的标准。 在开发流程中,收集的指标充当了质量门禁的作用,如果软件模型的质量指标未超过阈值,那么它只能由开发人员才能成功提交。 分析的结果将报告给各功能设计人员,他们对其模型的更改负全部责任。 文中的前两张图片显示了检查的汇总结果及其报告方式。 单击链接将会弹出更多的详细结果,高效地支持开发人员修复模型。
报告生成的软件指标
在MES模赛思专家的指导下,VCC驱动系统和动力总成部门对他们的项目进行了调查并选出了合适的模型质量规范。 于是,我们按照相关的具体建模风格需求编制并测试了常规开发项目与沃尔沃汽车驱动系统中安全攸关项目的建模规范集。
在ECM CI链中,每次单个提交都会触发一组自动化测试,包括复杂性分析和MXAM的建模规范合规性检查。 最后,例如建模规范合规性、复杂性、单元测试结果和代码审查结果会以汇总反馈的形式提供给开发人员,并提供详细报告的链接。 公司的总目标是建立一个学习圈,并在此过程中激励早期和自我问责的错误预防。
ECM CI的设计涵盖了从模型的首次提交到自动生成代码的审查的所有流程步骤。 它还可以加入那些影响工具链中的检查、测试配置和工作流的配置设置。
使用CI驱动开发链取得的成果
尽管引入新的CI驱动工具链需要花费一些时间和精力,但它已经展现了许多优点。 首先,它显著改善了软件开发团队之间的协作方式。 验证和质量保证的主要目标得到了实现、提高了生产率,并且显著减少了繁琐的手工工作量。 最大的提升来自MES工具,因为复杂性的降低有助于对功能的更好理解,进而可以快速稳健地进行动力系统的参数调优(校准)。 复杂性的降低会带来模型的重构,并使单元测试的编写更加容易。 根据沃尔沃汽车驱动系统的ECM软件架构师Andreas Wikerstål博士的说法,ECM CI链“为我们提供了必要的工具组合,以应对不断增长的基于软件的功能的数量,同时保证了软件的稳健性和质量不变。 在功能模型层级,MES工具允许我们在开发流程的早期阶段进行度量并提高质量。 这为代码创建和集成的最后关键阶段节省了大量时间与金钱。”
向全集成CI链迈进
在未来几年,沃尔沃汽车的目标是逐步扩展其基于模型的设计流程,并覆盖所有的开发项目。 越来越多的用户将使用工具链,其中MXAM将发挥不可或缺的作用。 沃尔沃汽车将全面致力于ECM CI工具链的持续扩展,并使其剩余的半自动步骤完全实现自动化。 沃尔沃汽车驱动系统的CI/CD产品负责人Johannes Foufas自信地说:“我们目前正在研究向ZUUL v3的方向迈进,,因为该产品将为我们提供in-repo配置,实时配置更改,对多节点作业的本机支持以及Ansible工作内容。 我们还将努力移除所有手动步骤,并根据GIT标签仅保留同行评审,产品负责人批准和发布步骤。 如果可能的话,其它的所有步骤都应该实现自动化。”未来,软件CI工具链的创建将自动触发工具链中的下一步,且不受任何用户的干扰。 此外,更加详尽的建模规范将被逐步引进,以进一步提升进度,提高建模规范的合规性。