汽车软件开发的功能开关管理方法及装置与流程

文档序号:32794438发布日期:2023-01-03 22:00阅读:26来源:国知局

1.本发明涉及软件开发领域,尤其涉及一种汽车软件开发的功能开关管理方法及装置。


背景技术:

2.智能汽车软件架构包括多个模块,每个模块包含多个配置项,这些配置项用于控制不同的业务逻辑。如果有开发需求变更涉及多个模块、多个功能的开关,开发与测试时需要开发人员进行评估修改影响范围,此过程需要依赖多个开发人员;根据不同的功能需求和测试需求,开发人员需要频繁变更代码、维护多个版本的代码,代码冗余,开发效率低,软件质量不稳定,流程复杂,闭环周期长。软件集成人员面对不同的软件发版需求,依赖开发人员的代码修改和提交情况,功能开关的管理单一,不够灵活。
3.因此现有技术还有待于进一步发展。


技术实现要素:

4.针对上述技术问题,本发明提供了一种汽车软件开发的功能开关管理方法及装置。
5.本发明的第一方面,提供一种汽车软件开发的功能开关管理方法,其包括:获取汽车软件的各模块需要管理的功能开关,构建用于变更各模块功能开关变量的管理工具,所述管理工具带有ui界面,所述ui界面展示配置项, 用户可修改配置项的值;利用自动化脚本将所述管理工具接入汽车软件开发的集成流水线中;接收用户在所述ui界面中选择的汽车软件模块,将选择的汽车软件模块的代码集成至处于编译环境中的软件开发包;汽车软件编译时,利用所述管理工具对所述软件开发包中所述选择的汽车软件的模块的开关变量赋值;调用tasking编译器将所述软件开发包编译,上传至artifactory。
6.可选地,所述的汽车软件开发的功能开关管理方法,还包括:将所述需要管理的功能开关配置为ui界面进行展示,并根据配置默认文件用以控制汽车软件各模块需要管理的功能开关,所述管理工具包含有关联功能开关参数的软件代码;所述配置文件保持为json文件,提供给后续的台架测试、实车测试作为输入。
7.可选地所述将选择的汽车软件的模块的代码集成至处于编译环境中的软件开发包,包括:根据预设的build_stage参数将所述选择的汽车软件的模块的代码集成至处于编译环境中的软件开发包;并在汽车软件的各模块功能开关变量更新时,更新所述管理工具。
8.可选地,所述的汽车软件开发的功能开关管理方法,还包括接收用户上传的ci配置,依据所述ci配置修改所述管理工具中汽车软件的各模块需要管理的功能开关的值,将修改后的所述各模块的功能开关的值展示于所述ui界面。
9.本发明的第二方面提供一种汽车软件开发的功能开关管理装置,其包括:构建模块,用于获取汽车软件的各模块需要管理的功能开关,构建用于变更各模块功能开关变量的管理工具,所述管理工具带有ui界面,所述ui界面展示配置项, 用户可修改配置项的值;接入模块,用于利用自动化脚本将所述管理工具接入汽车软件开发的集成流水线中;集成模块,用于接收用户在所述ui界面中选择的汽车软件的模块,将选择的汽车软件的模块的代码集成至处于编译环境中的软件开发包;赋值模块,用于汽车软件编译时,利用所述管理工具对所述软件开发包中所述选择的汽车软件的模块的开关变量赋值;处理模块,用于调用tasking编译器将所述软件开发包编译,上传至artifactory。
10.可选地,所述的汽车软件开发的功能开关管理装置还包括:配置模块,用于将所述需要管理的功能开关配置为ui界面进行展示,并根据配置默认文件用以控制汽车软件各模块需要管理的功能开关,所述管理工具包含有关联功能开关参数的软件代码;配置文件保持为json文件,提供给后续的台架测试、实车测试作为输入。
11.可选地,所述集成模块,包括环境集成模块,所述环境集成模块用于:根据预设的build_stage参数将所述选择的汽车软件的模块的代码集成至处于编译环境中的软件开发包;并在汽车软件的各模块功能开关变量更新时,更新所述管理工具。
12.可选地所述的汽车软件开发的功能开关管理装置,还包括修改模块,用于接收用户上传的ci配置,依据所述ci配置修改所述管理工具中汽车软件的各模块需要管理的功能开关的值,将修改后的所述各模块的功能开关的值展示于所述ui界面。
13.本发明的第三方面提供一种汽车软件开发的功能开关管理方法,其包括:收集需要管理的汽车软件模块的功能开关,对于所述功能开关的参数值构建管理工具,所述管理工具用于在开发或测试时修改所述汽车软件模块的功能开关的值;在ui界面展示管理工具,将所述管理工具作为功能模块集成于接入汽车软件开发的集成流水线中;所述管理工具接收用户对所述管理工具的操作,根据传入的build_stage参数,将用户在所述管理工具选择的汽车软件模块的代码集成至软件开发包;汽车软件编译时,利用所述管理工具对所述软件开发包中所述选择的汽车软件的模块的开关变量赋值;调用tasking编译器将所述软件开发包编译,上传至artifactory。
14.本发明的第四方面,提供一种电子设备,其特征在于,包括:至少一个处理器;以及与所述处理器通信连接的至少一个存储器,其中:所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如本发明实施例的第一方面所述的方法。
15.本发明的第五方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被计算机运行时,执行如本发明实施例的第一方面所述的方法。
16.本发明通过控制软件功能开关配置的管理工具统一管理软件功能开关的赋值,解决了原始代码的功能单一问题,改善了人工修改代码导致误差,提高了代码准确率,大大缩
短了人工修改上传代码的时间,有效的避免了误差的出现。
附图说明
17.图1为本发明实施例中一种汽车软件开发的功能开关管理方法的流程示意图;图2为本发明实施例中一种汽车软件开发的功能开关管理装置的模块示意图;图3为本发明实施例中又一种汽车软件开发的功能开关管理方法的流程示意图。
具体实施方式
18.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
19.jenkins是一个开源软件项目,是基于java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。汽车软件的开发涉及多个模块,多个模块又包含有不同的配置项。gitlab 是一个用于仓库管理系统的开源项目,使用git作为代码管理工具,并在此基础上搭建起来的web服务。软件开发利用上述两个平台进行开发,过程中通过ci/cd持续集成系统工具形成开发的流水线系统,开发团队可以保持软件更新并将其迅速地投入实践中。
20.ci/cd是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法。ci/cd的核心概念是持续集成、持续交付和持续部署。作为一个面向开发和运营团队的解决方案,ci/cd主要针对在集成新代码时所引发的问题。具体而言,ci/cd可让持续自动化和持续监控贯穿于应用的整个生命周期(从集成和测试阶段,到交付和部署)。这些关联的事务通常被统称为“ci/cd管道”,由开发和运维团队以敏捷方式协同支持。ci/cd中的“ci”指的是持续集成(continuous integration),它属于开发人员的自动化流程。成功的ci意味着应用代码的新更改会定期构建、测试并合并到共享存储库中。“cd”指的是持续交付和/或持续部署(continuous delivery)。目前许多ci/cd流水线技术都基于jenkins。
21.请参阅图1,本发明提供一种汽车软件开发的功能开关管理方法,包括:步骤110:获取汽车软件的各模块需要管理的功能开关,构建用于变更各模块功能开关变量的管理工具,所述管理工具带有ui界面,所述ui界面展示配置项, 用户可修改配置项的值。
22.具体可以由开发人员或测试人员梳理开发项目或待测试项目包括哪些功能模块,各个功能模块有哪些需要进行管理的功能开关。梳理好以后用于构建各个功能模块的管理模块,由所述管理工具管理。示例地,智驾报警包括有多种报警信号,如邮箱报警、发动机报警、胎压报警等等。开发人员或测试人员可以预先将各个模块的功能开关的控制代码编写后存储管理库,编写控制逻辑,形成具有功能关联的所述管理工具,在编译阶段可以直接将控制代码并入汽车软件。
23.应当了解的是,同一软件会有不同的版本,不同的版本都需要进行测试,不同版本的软件开发会有不同的变更需求,每次测试均需要人工修改参数,因此会产生一些问题。本发明在研发、测试之前即完成功能开关的信息收集与管理,具体做法是设计对于汽车软件
的各模块需要管理的功能开关的变量的赋值管理工具,自动修改功能开关的变量,以改变开关的状态。
24.例如:canadapter模块的功能开关conf1_canapt用于控制是否外发智驾报警信号,默认conf1_canapt=0(不外发智驾报警信号 )。由于需求变更或者测试需求,要改为conf1_canapt=1(外发智驾报警信号)。默认conf1_canapt=0,需要修改时,常规做法是开发人员评估修改影响范围,修改conf1_canapt=1,重新上传至artifactory,集成编译后,测试人员进行验证。如验证有问题,需要重复上述操作。
25.对于上述需要重复人工修改的问题,本发明旨在由平台构建所述管理工具,并在该平台形成ui界面,例如使用jenkins ui界面(也可以使用其他ui),便于开发或测试人员操作,可用于选择需要管理的功能开关。在一实施例中,将所述需要管理的功能开关配置为ui界面进行展示,并根据配置默认文件用以控制汽车软件各模块需要管理的功能开关,所述管理工具包含有关联功能开关参数的软件代码;配置文件保持为json文件,提供给后续的台架测试、实车测试作为输入。
26.构建所述管理工具时,配置管理工具的ui界面(build_config参数)和默认配置文件(conf.json),事先由开发人员编写功能开关的软件代码,用于动态控制功能开关的启闭。软件代码可被调用,然后在集成阶段将软件代码集成于编译环境中的软件开发包。其中ui界面中可显示可配置的开关,并将用户选择的可配置开关进行关联,形成build_conf参数,然后根据build_conf参数(由集成人员控制)可以对软件开发包中的模块的功能开关进行赋值。
27.步骤120:利用自动化脚本将所述管理工具接入汽车软件开发的集成流水线中。
28.所述自动化脚本即实现在汽车软件开发过程中,自动将所述管理工具形成的汽车软件的模块需要管理的功能开关关联至集成流水线中。在开发与测试过程中,版本的迭代会增加或者减少功能开关,因此可基于需求将所述管理工具中的汽车软件的各模块需要管理的功能开关通过编写管理代码的方式,在汽车软件的各模块功能开关变量更新时,更新所述管理工具,同时ui界面更显可选择汽车软件的模块。
29.步骤130:接收用户在所述ui界面中选择的汽车软件的模块,将选择的汽车软件的模块的代码集成至处于编译环境中的软件开发包。
30.用户可以在ui界面中确定所述管理工具,需要执行的汽车软件的模块及其可配置的开关,将多个功能开关可配置的开关进行参数关联。用户选择完成后,点击开始构建,形成配置文件build_stage参数。
31.示例地,根据预设的build_stage参数将所述选择的汽车软件的模块的代码集成至处于编译环境中的软件开发包。根据流水线的编译步骤,建立编译流程,所述管理工具接入集成流水线中,可以根据build_stage参数在编译过程中修改功能开关的变量。
32.步骤140:汽车软件编译时,利用所述管理工具对软件开发包中所述选择的汽车软件的模块的开关变量赋值。
33.流水线的编译阶段,根据传入的build_conf参数,对软件开发中、在所述管理工具中选择的模块的功能开关变量进行赋值。具体可以将功能开关的软件代码集成在汽车软件的模块,为功能开关变量赋值。
34.默认配置文件(conf.json)可以根据用户的选择配置功能开关的参数,给予功能
开关的值赋值。以下为其中一种赋值示例:{"ctapcanadapter":{"conf1_canapt":"0" },"ctapdiagmanager":{"conf1_dm":"0","conf2_dm":"1"
ꢀꢀ“
conf3_dm":"1"},
ꢀꢀ
"ctapsysmanager":{
ꢀꢀ
"ctapsysmanager_dw.conf_apa_sysm":"0"
ꢀꢀ
"ctapsysmanager_dw.conf_pilot_sysm":"0"
ꢀꢀ
},
ꢀꢀꢀ
"ctapvms":{
ꢀꢀ
"conf1_vms":"0",
ꢀꢀ
"conf2_vms":"0"
ꢀꢀ
},
ꢀꢀꢀ
"ctapdegradecontrol":{
ꢀꢀ
"conf1_dc":"0"}}步骤150:调用tasking编译器将所述软件开发包编译,上传至artifactory。
35.本发明使用所述管理工具,通过jenkins流水线实现对各模块的功能开关的动态管理。对于需求人员,提出的功能需求或测试需求可以尽快的完成开发、编译、测试闭环;对于模块的开发人员,不需要编写额外的代码来管理此开关的值;对于软件集成人员,根据软件发版需求,可以动态、实时地去修改功能开关,进行集成编译。
36.进一步地,所述的汽车软件开发的功能开关管理方法还包括:接收用户上传的ci配置,依据所述ci配置修改所述管理工具中汽车软件的各模块需要管理的功能开关的值,将修改后的所述各模块的功能开关的值展示于所述ui界面。
37.开发或测试时,如果有新增软件功能开关、变更软件功能开关的需求,根据需求人员的需求提出,开发人员根据需求修改模型增加配置项,将源文件推送到gitlab,集成人员新增ci配置,然后更新所述管理工具。基于此可以动态修改所述管理工具,并动态地管理汽车软件的模块的功能开关的赋值。
38.由上述可知,本发明通过软件开关配置管理工具,解决了原始代码的功能的单一性,改善了人工修改代码导致误差的可能性,提高了准确率,以及工作效率,大大缩短了人工修改上传代码的时间,有效的避免了误差的出现。
39.请参阅图2,本发明提供一种汽车软件开发的功能开关管理装置,包括:构建模块21,用于获取汽车软件的各模块需要管理的功能开关,构建用于变更各
模块功能开关变量的管理工具,所述管理工具带有ui界面,所述ui界面展示配置项, 用户可修改配置项的值。
40.示例地,配置管理工具的ui界面(build_config参数)和默认配置文件(conf.json),事先由开发人员编写功能开关的软件代码,用于动态控制功能开关的启闭。软件代码可被调用,根据参数、配置文件将功能开关的参数软件代码关联,然后将软件代码集成于编译环境中的软件开发包。其中ui界面中可显示可配置的开关,并将用户选择的可配置开关进行关联,形成build_conf参数,然后根据build_conf参数(由集成人员控制)可以对软件开发包中的模块的功能开关进行赋值。
41.接入模块22,用于利用自动化脚本将所述管理工具接入汽车软件开发的集成流水线中。
42.集成模块23,用于接收用户在所述ui界面中选择的汽车软件的模块,将选择的汽车软件的模块的代码集成至处于编译环境中的软件开发包。
43.用户可以在ui界面中确定所述管理工具中,需要执行的汽车软件的模块及其可配置的开关,将多个功能开关可配置的开关进行参数关联。用户选择完成后,点击开始构建,形成配置文件build_stage参数。用户可以基于ui界面自由选择需要管理的汽车软件的模块,形成配置以后,功能开关的管理的软件代码可被调用,集成于编译环境,对于开发与测试可以实现动态调节。
44.所述集成模块,包括环境集成模块,所述环境集成模块用于:根据预设的build_stage参数将所述选择的汽车软件的模块的代码集成至处于编译环境中的软件开发包;并在汽车软件的各模块功能开关变量更新时,更新所述管理工具。
45.赋值模块24,用于汽车软件编译时,利用所述管理工具对软件开发包中所述选择的汽车软件的模块的开关变量赋值。
46.例如将所述管理所述功能开关的软件代码集成至流水线的编译阶段的汽车软件开发包,所述软件代码可以自动实现功能开关的变量赋值。
47.处理模块25,用于调用tasking编译器将所述软件开发包编译,上传至artifactory。
48.所述装置,还包括配置模块26,用于将所述需要管理的功能开关配置为可选择的ui界面进行展示,并根据配置默认文件用以控制汽车软件各模块需要管理的功能开关,所述管理工具包含有关联功能开关参数的软件代码;配置文件保持为json文件,提供给后续的台架测试、实车测试作为输入。
49.进一步地,所述的汽车软件开发的功能开关管理装置,还包括修改模块,用于接收用户上传的ci配置,依据所述ci配置修改所述管理工具中汽车软件的各模块需要管理的功能开关的值,将修改后的所述各模块的功能开关的值展示于所述ui界面。
50.如图3所示,本发明还提供一种汽车软件开发的功能开关管理方法,包括:步骤310:收集需要管理的汽车软件模块的功能开关,对于所述功能开关的参数值构建管理工具,所述管理工具用于在开发或测试时修改所述汽车软件模块的功能开关的值。
51.由需求人员提出测试需求、功能需求或执行器需求,开发人员收集需求涉及到的需要管理的功能开关,然后编写所述功能开关的管理程序,该管理程序被映射为所述管理
工具上的功能模块。各功能模块对应于不同功能开关的变量控制程序。
52.步骤320:在jenkins ui界面展示管理工具,将所述管理工具作为功能模块集成于接入汽车软件开发的集成流水线中。
53.集成人员可以在jenkins ui界面操作所述管理工具,集成人员选择需要管理的功能开关,选择完成后由所述管理工具的配置文件配置成具有参数关联度的build_conf参数,可实现对不同功能开关的软件代码变量赋值。可以理解为直接将功能开关的软件代码直接集成至汽车软件开发包中。
54.步骤330:所述管理工具接收用户对所述管理工具的操作,根据传入的build_stage参数,将用户在所述管理工具选择的汽车软件模块的代码集成至软件开发包。
55.示例地,根据预设的build_stage参数将所述选择的汽车软件的模块的代码集成至处于编译环境中的软件开发包。根据流水线的编译步骤,建立编译流程,所述管理工具接入集成流水线中,可以根据build_stage参数在编译过程中修改功能开关的变量。
56.步骤340:汽车软件编译时,利用所述管理工具对软件开发包中所述选择的汽车软件的模块的开关变量赋值。
57.步骤350:调用tasking编译器将所述软件开发包编译,上传至artifactory。
58.本发明还提供一种电子设备,包括:至少一个处理器;以及与所述处理器通信连接的至少一个存储器,其中:所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行上述汽车软件开发的功能开关管理方法。
59.本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现上述汽车软件开发的功能开关管理方法。
60.可以理解,计算机可读存储介质可以包括:能够携带计算机程序的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器 (rom ,read-only memory)、随机存取存储器(ram,random access memory)、以及软件分发介质等。计算机程序包括计算机程序代码。计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读存储介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、以及软件分发介质等。
61.在本发明的某些实施方式中,装置可以包括控制器,控制器是一个单片机芯片,集成了处理器、存储器,通信模块等。处理器可以是指控制器包含的处理器。处理器可以是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。
62.流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明地优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
63.本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各实例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
64.以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1