首页 > 其他分享 >AUTOSAR架构下,持续集成CI的最佳实践

AUTOSAR架构下,持续集成CI的最佳实践

时间:2024-10-24 13:31:53浏览次数:4  
标签:AUTOSAR 架构 测试 代码 CI 模块 流程

随着汽车电子技术的快速发展,汽车软件的复杂性与日俱增,如何确保软件开发的高效性与稳定性成为了一个关键问题。为了解决这个问题,许多汽车企业和供应商逐渐引入了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框架的测试主要集中在三个部分:

  1. ASW(应用层):这一层主要基于MATLAB模型进行开发,因此在测试过程中,重点是对模型的验证。在模块开发的早期阶段,测试的重点是确保模型本身的正确性和稳定性。当模型测试通过后,该模型模块会被集成到整个开发工程中进行编译,以此验证其与最新代码层是否兼容,并确保功能正常。这一过程可以保证每个模块在合入到整体系统前已经过充分验证。
  2. BSW(基础软件层):这里的BSW层指的是通过框架生成软件自动生成出的代码,通过AUTOSAR架构生成的代码来实现软件功能的更新和维护。每当BSW层的代码更新时,CI流程会自动触发项目的整体编译,从而验证所有基础功能在最新更新下的一致性和稳定性。这一机制确保了基础软件层的变更不会破坏系统的整体功能。
  3. 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服务器会根据预定的触发条件,如代码提交或配置文件的变化,自动执行上述步骤,并将结果通知给相关开发人员。

  1. 基于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流程的企业和团队提供有益的参考与启发。北汇信息已为国内汽车客户提供相应的服务内容,欢迎垂询!

 

翻译

搜索

复制

<iframe></iframe>

标签:AUTOSAR,架构,测试,代码,CI,模块,流程
From: https://www.cnblogs.com/polelink/p/18499413

相关文章

  • Cinemachine系列——最佳视野(一)&CinemachineClearShot
    这里介绍一下,自动切换到场景中最佳视野的摄像机的第一种方式。首先介绍一下CinemachineClearShot组件,它是自动完成这项工作的核心。通过PackageManager导入Cinemachine插件,在导入CinemachineSample后,我们可以在Assets文件夹下Cinemachine/2.6.17(这个是你下载的cinemachine版本......
  • 【YOLOv11改进- 原理解析】 YOLO11 架构解析 以及代码库关键代码逐行解析
    YOLOv11目标检测创新改进与实战案例专栏文章目录:YOLOv11创新改进系列及项目实战目录包含卷积,主干注意力,检测头等创新机制以及各种目标检测分割项目实战案例专栏链接:YOLOv11目标检测创新改进与实战案例文章目录YOLOv11目标检测创新改进与实战案例专栏冷笑话......
  • Cinemachine——磁力吸实现&CinemachineTargetGroup
    视角“聚焦”是游戏过场动画中常见的功能,Cinemachine实现这个功能,让我们看看具体怎么使用吧。通过PackageManager导入Cinemachine插件,在导入CinemachineSample后,我们可以在Assets文件夹下Cinemachine/2.6.17(这个是你下载的cinemachine版本号)/CinemachineExampleScenes/Scenes......
  • 2024年计算机科学与智能算法国际论坛(CSIA 2024) 2024 International Symposium on C
    @目录一、会议详情二、重要信息三、大会介绍四、出席嘉宾五、征稿主题一、会议详情二、重要信息大会官网:https://ais.cn/u/vEbMBz提交检索:EICompendex、IEEEXplore、Scopus三、大会介绍2024年计算机科学与智能算法国际论坛(CSIA2024)将作为主会议第六届智能控制、测......
  • 【NodeJS】NodeJS+mongoDB在线版开发简单RestfulAPI (二):项目文件夹架构及路由的设置
    本项目旨在学习如何快速使用nodejs开发后端api,并为以后开展其他项目的开启提供简易的后端模版。(非后端工程师)由于文档是代码写完之后,为了记录项目中需要注意的技术点,因此文档的叙述方式并非开发顺序(并非循序渐进的教学文档)。建议配合项目源码node-mongodb-template。【NodeJS......
  • 为什么大部分 PHP 程序员做不了架构师?
    大家好,我是码农先森。架构师一直是PHP程序员中梦寐以求的职位,它可望而不可及。我想大部分的PHP程序员心中都有一个架构师梦,但是这个梦基本上很难实现,梦终究还是梦,这是多么痛的领悟。曾几何时,架构师在我心中是「神」一般的存在。虽然说我没能力成为架构师,但有幸于在之前待过的......
  • 《使用Gin框架构建分布式应用》阅读笔记:p127-p142
    《用Gin框架构建分布式应用》学习第9天,p127-p142总结,总计16页。一、技术总结1.Authentication方式汇总(1)APIkeysAPIkeys认证方式示例:func(handler*RecipesHandler)NewRecipeHandler(c*gin.Context){ //API-keys认证 value:=os.Getenv("X-API-KEY") log.Print......
  • 熟悉架构框架:TOGAF的四大核心架构
    摘要:TOGAF(TheOpenGroupArchitectureFramework)是全球广泛应用的企业架构框架,帮助企业在数字化转型中实现业务和技术目标的统一。本文将带你深入了解TOGAF的四大核心架构:业务架构、应用架构、数据架构和技术架构,帮助你快速上手这一强大的工具。正文:引言在当今数字化转型......
  • [COCI2009-2010#4] PALACINKE 题解
    前言题目链接:洛谷。题意简述\(n\)个点,\(m\)条边。每条边上有商店,经过一条边花费\(1\)单位时间,如果在边上的商店购物,额外花费\(1\)单位时间。需要购买\(4\)种物品,每个商店售出\(1\sim4\)种物品不等。请问,在\(T\)个单位时间内,从\(1\)出发购物,得到这\(4\)种物品......
  • FPS-Frontiers in Plant Science
    @目录一、征稿简介二、重要信息三、服务简述四、投稿须知一、征稿简介二、重要信息期刊官网:https://ais.cn/u/3eEJNv三、服务简述FrontiersinPlantScience是在植物研究领域领先的期刊,通过出版严格的同行评审来推动我们对于植物生物学这一领域认知的进步,这本多学科开放......