随着汽车电子技术的快速发展,汽车软件的复杂性与日俱增,如何确保软件开发的高效性与稳定性成为了一个关键问题。为了解决这个问题,许多汽车企业和供应商逐渐引入了AUTOSAR架构,并在此基础上构建了持续集成(CI)流程。今天,我们就来探讨一下基于AUTOSAR架构的CI流程实践,并通过对流程的详细讲解,展示其在实际开发中的重要性和优势。 什么是AUTOSAR架构? 首先,AUTOSAR(Automotive Open System Architecture)是一个开放的、标准化的汽车电子软件架构。它旨在通过提供一个标准的接口和抽象层,减少复杂的汽车软件开发流程,并提升软件的可复用性、模块化和可维护性。AUTOSAR架构中的核心模块可以分为应用软件层(ASW)、基础软件层(BSW)和运行时环境(RTE)、微控制器四个层面,它们各自承担不同的功能。 为什么要在AUTOSAR架构中引入CI? 随着汽车软件规模的日益庞大,软件开发的复杂度也不断增加,传统的开发方式往往难以应对复杂系统的集成挑战。尤其是在高度模块化的AUTOSAR架构下,软件的各个层次和模块相互依赖,任何代码变更都有可能影响整体系统的稳定性。为此,开发团队需要一种高效的机制来快速检测问题,确保每次代码修改后的系统都能正常工作。这时,持续集成(CI)流程的重要性便凸显出来,它能够自动化地进行代码集成、测试和反馈,确保软件的质量与稳定性。接下来,我们将介绍在AUTOSAR框架中CI实现的详细流程。 CI流程简介 持续集成(CI)是一种软件开发实践,它强调开发者频繁将代码集成到共享的代码库中,并通过自动化测试和构建系统,确保每次集成都能够得到及时的反馈。那么在本次介绍中的CI在基于AUTOSAR架构的软件开发中,CI流程不仅仅是一个简单的自动化工具链,而是保证软件稳定性和一致性的关键所在。 虽然硬件在环(HIL)测试在开发流程中也扮演着重要角色,但它属于硬件验证的范畴,并不包含在CI流程之内。因此,本文中的CI流程将专注于软件层面的集成和测试,不涉及HIL测试部分。 在本次介绍的CI流程实践中,AUTOSAR框架的测试主要集中在三个部分: ASW(应用层):这一层主要基于MATLAB模型进行开发,因此在测试过程中,重点是对模型的验证。在模块开发的早期阶段,测试的重点是确保模型本身的正确性和稳定性。当模型测试通过后, 该模型模块会被集成到整个开发工程中进行编译,以此验证其与最新代码层是否兼容,并确保功能正常。这一过程可以保证每个模块在合入到整体系统前已经过充分验证。 BSW(基础软件层):这里的BSW层指的是通过框架生成软件自动生成出的代码,通过AUTOSAR架构生成的代码来实现软件功能的更新和维护。每当BSW层的代码更新时,CI流程会自动触发项目的整体编译,从而验证所有基础功能在最新更新下的一致性和稳定性。这一机制确保了基础软件层的变更不会破坏系统的整体功能。 CDD(复杂设备驱动层):该层主要负责复杂设备的驱动程序开发。CDD层通常涉及手写代码,用来满足客户的特定需求。每当CDD层的代码更新后,CI系统会自动执行代码分析和验证,确保新编写的驱动程序与系统的其他部分协调工作,并符合功能要求。 通过这三大模块的分层测试和自动化验证,CI流程确保了AUTOSAR架构下的软件在开发和更新过程中始终保持高效和稳定。 下图展示了一个典型的基于AUTOSAR架构的CI流程,通过Jenkins调度服务器和Gitlab版本管理工具实现模块的自动化集成和测试。 基于AUTOSAR架构的CI流程实践 从流程图中可以看出,整个CI流程主要围绕ASW模块变更、BSW模块变更和CDD模块变更展开,并且根据不同模块的变更类型,分别定义了相应的测试和编译步骤。接下来,我们逐一对各个模块的CI流程进行讲解。 1. ASW模块变更流程 ASW(应用软件)模块的变更通常是由模型开发人员和模型测试人员手动触发的。当ASW模块发生变更时,CI流程将执行一系列的静态和动态模型测试、代码生成以及编译,确保变更后的代码不会引入新的问题。 1. 静态模型测试:使用静态模型测试工具(MXAM)导入模型并进行测试,确保模型的完整性和正确性。 2. 动态模型测试:通过动态模型测试工具(TPT)执行测试用例,并生成测试报告上传到版本管理系统,最后通过邮件通知到对应的模型更改人员。 3. 代码生成:通过MATLAB进行模型生成代码,将其上传至版本管理系统。 4. 编译:完成模型生成代码后,该模型模块代码会被集成到整个开发工程中进行编译,以此验证其与最新代码层是否兼容,并确保功能正常。 在ASW模块的CI流程中,Jenkins服务器会根据预定的触发条件,如代码提交或配置文件的变化,自动执行上述步骤,并将结果通知给相关开发人员。 2. BSW模块变更流程 BSW(基础软件)模块的触发后的执行流程相对简单,通常包括整体工程的编译以及编译后的结果自动上传,其主要目的是确保基础软件的功能和性能在各个开发阶段的一致性。 1. 代码上传:从拉取最新的代码,开发人员根据变更需求对代码进行调整并重新上传。 2. BSW模块编译:从版本管理系统中拉取开发上传好的代码,然后进行编译,最后将编译结果传递到版本管理系统中,并通知到对应的开发人员。 3. CDD模块变更流程 CDD(手写代码)模块的变更与测试也在整个CI流程中占据重要位置。其主要作用是通过静态代码测试和动态代码测试来验证组件的正确性以及组件的合规情况。 1. 静态代码测试:通过Helix QAC工具对导入的代码进行静态分析,检查代码的命名规则和编码规范是否符合标准要求。 2. 动态代码测试:使用VectorCAST工具对组件进行动态测试,并生成测试报告上传到版本管理系统供开发人员查看。 3. 编译:完成模型生成代码后,该模型模块代码会被集成到整个开发工程中进行编译,以此验证其与最新代码层是否兼容,并确保功能正常。 在CDD模块的CI流程中,Jenkins服务器会根据预定的触发条件,如代码提交或配置文件的变化,自动执行上述步骤,并将结果通知给相关开发人员。 基于AUTOSAR的CI流程优势 通过上述流程的详细解读,我们可以看出基于AUTOSAR架构的CI流程具有以下几个显著的优势: 1. 自动化测试与集成:通过Jenkins服务器自动执行代码的集成、测试和发布流程,减少了开发人员和测试人员的手动操作,提高了开发效率。 2. 代码质量保证:静态代码分析和动态测试用例的自动化执行,确保了代码的规范性和正确性,极大地降低了潜在的代码缺陷风险。 3. 及时反馈机制:CI流程中的每个步骤都伴随着详细的报告生成与邮件通知,使得开发人员能够及时获取变更结果,快速进行问题定位和修复。 4. 固定的文件结构:由于AUTOSAR架构中的文件结构是固定和标准化的,CI链路能够很好地利用这一特点,实现高效的集成和自动化测试。这种标准化结构使得代码的组织和管理更加一致,有助于CI流程的自动化处理,进一步提升了集成效率并减少了出错的可能性。 实践中的挑战与建议 虽然基于AUTOSAR架构的CI流程在实际应用中展示了极大的优越性,但在实施过程中也可能会遇到一些挑战: 1. 工具链集成复杂: 由于AUTOSAR涉及多个不同的工具,如MXAM、HeliX QAC、TPT、VectorCAST等,工具链的集成和维护需要耗费较多精力。建议企业在实施过程中设立专门的CI工具链维护团队或让供应商进行链路搭建,后续可以通过内部人员进行维护,确保工具链的高效运转。 2. 团队协作要求高: CI流程的顺利实施需要开发、测试、运维等多方团队的紧密协作,因此在实践中应加强团队之间的沟通与协同,定期进行流程优化与改进。 结语 基于AUTOSAR架构的CI流程是汽车软件开发中不可或缺的一环。它通过自动化的集成与测试,保证了软件的高质量和稳定性。在未来,随着汽车智能化和自动驾驶技术的发展,CI流程的重要性将愈发凸显。因此,持续优化和完善CI流程,是每个从事汽车软件开发的企业都需要高度重视的问题。 通过这次流程的实践介绍,相信大家对基于AUTOSAR的CI流程有了更加清晰的认识。希望本文能够为正在或即将实施CI流程的企业和团队提供有益的参考与启发。北汇信息已为国内汽车客户提供相应的服务内容,欢迎垂询!