人工智能的力量--生成式AI如何革新汽车软件开发

描述

2023年春节后,人工智能在国内掀起一股热潮,生成式AI大模型的突破,让其具备重新定义生产力的潜力。但是单独AI模型的突破只是第一步,真正要形成生产力,导入到一个工业化的制造过程,还有大量的工作要做。本文聚焦汽车行业车载软件开发这个细分领域,谈谈生成式AI的突破对汽车软件开发过程的影响。

作为一家专注于汽车软件研发的企业,光庭一直不断在优化汽车软件开发流程上进行探索和实践。2021年,董事长朱敦尧博士提出“超级软件工场”概念,利用人工智能技术来优化汽车软件开发过程,打造“超级大脑”,实现人机协同的智能化软件开发。

为推进智能化开发平台的建设,光庭成立了“超级软件工场实验室”,专注和探索汽车领域智能化软件开发研究。过去一年来,实验室从自身汽车软件开发的业务场景出发,探索AI如何能够对软件生产力带来提升。

本文将从4个部分结合生成式AI模型,探讨如何面向汽车软件业务这个细分领域,构建智能化软件开发平台。

1、智能化软件开发愿景——光庭超级软件工场:光庭超级软件工场的背景和愿景。

2、智能化软件开发的分级构想:简述智能化软件开发过程构建的具体实施路径。

3、生成式AI在汽车软件开发过程中的探索实践:结合具体的业务场景例子,展示生成式AI模型如何在具体的工作中应用,融入到汽车软件开发业务流程中,构建人机协同的工作流程。

4、生成式AI在软件工程中如何落地?

01智能化软件开发愿景-- 光庭超级软件工场

软件定义汽车时代,软件体验逐渐成为汽车的核心竞争力,软件在汽车中承担的责任越来越大。面对不断增加的复杂性需求,当前车载软件开发体系,无法在高效率,高安全性,高可靠性方面满足行业需求。正是基于这样的行业需求背景,光庭提出“超级软件工场”。

软件开发

同时,软件定义汽车时代下汽车行业的协作结构也在发生着改变。汽车行业以往协作模式是主机厂做整车设计和集成,Tier1供应商提供各类零部件和解决方案。但在软件为主的时代,要实现产品的差异化,大型主机厂以及新势力都开始布局构建自身软件能力,所谓要把“灵魂”掌握在自己手上。

但构建强大的软件开发能力并不容易,对于以硬件制造为主的主机厂来说是很大的挑战,硬件研发和软件研发流程体系存在差异,汽车本身的安全要求也决定了不能照搬互联网行业的开发体系。同时软件人才的争夺也是非常内卷,复合型汽车软件人才更是极度稀缺。

因此降低汽车软件人才门槛,提升软件开发生产力,通过数字化的开发平台提升汽车软件开发能力,是汽车行业急需解决的课题。

光庭拥有二十多年的汽车软件开发经验与积累,结合多年的行业经验,我们希望能够在AI逐步普及的时代,探索新的软件开发模式。

我们设想了数字化、知识化、智能化三个阶段目标,实现超级软件工场整体构想:

数字化:构建一个软件全生命周期的开发运维平台,实现软件开发过程数据的数字化,其目标是实现对于软件开发质量、效能、运行状况的全面数据分析以及软件资源的充分复用;

知识化:基于特定领域技术和业务文档开展概念及关系抽取,构建图谱化的知识库,系统性地实现软件开发运维知识的沉淀和共享,为软件开发和运维提供所需要的领域和背景知识。并结合开发人员的行为进行知识推送,实现让知识找人;

智能化:通过在软件工程各个任务阶段导入AI能力,实现人机协同的软件开发,从以人为主导的软件开发过程逐步过渡到以机器为主导的软件开发过程;

软件开发

02

智能化软件开发的分级构想

超级软件工场最终的目标是实现机器主导的智能化开发过程。作为长远目标,这个过程就像汽车要完全实现自动驾驶,需要一步步分阶段实现。因此类似自动驾驶L1到L5的分级定义,我们也尝试对智能化软件开发过程进行等级划分,从L0到L5级,定义出可分阶段实施的步骤。

软件开发

L0 体系化  初级阶段,对软件开发定义出明确的过程体系,并基于标准(比如CMMI / ASPICE)要求的流程进行软件开发活动。在这个阶段,虽有标准,但是执行上需依靠经过训练能够遵循流程进行软件开发活动的人员,以及标准的过程文档来保证软件开发活动的有序执行,本质上是依靠人及文档的规范性来保障软件流程执行。

L1 平台化

这一阶段,需要构建端到端的全生命周期软件开发云平台,组织依赖这个开发平台来执行任务跟踪,进行流程要求的各项活动,提交的制品也都纳入平台管理。相比L0级要依靠训练有素的人来保障流程实施,本阶段可依赖开发平台流程来推动流程实施。

L2 数字化

本阶段会对软件开发平台进行数字化增强,增强软件开发过程的数字化,建立对软件过程中产生的成果物单元的演化过程构建追溯关系,将代码变更同具体人的行为和任务建立关联,实现代码问题追溯,技术债度量,对软件开发进度和质量实现可量化的度量。

L3 知识化

本阶段为特定领域的业务与技术背景构建知识图谱,同时对软件过程成果物(需求、设计方案、实现代码、测试用例、Bug等)之间建立追踪和语义关联。并支持智能化的知识推荐和问答系统。同时实现软件开发资源的自动化抽取,动态构建技术货架,最大化实现软件开发资源的复用。

L4 智能化

在数字化和知识化的基础上,将智能化能力导入到软件开发流程,构建一个人机协同开发平台来整合人和AI。从以人为主导的开发过程逐步过渡到以AI为主导的开发过程。

人机协同分两个阶段,先以人主导,机器辅助。经过一段时间的开发过程数据积累后,AI能够掌握更多能力,会逐步转向机器主导,由人来辅助的协同模式。需求输出给AI,AI来提供可能的设计方案,甚至进行具体的设计编码执行,但对最终结果负责的是人,对方案最终拍板的是人,对测试结果最终评价的是人。

软件开发

L5 智慧化

进入以机器为主导的开发阶段,就能产生一个能够把控软件项目全局的AI,可以称为超级大脑,由它来把控整个软件开发和维护过程。

软件开发

以上的分级设想是现阶段我们对智能化软件开发平台还不够成熟的初步构想,为了能够逐步实现这个愿景,光庭正在协同高校科研单位及产业上下游伙伴,共同探索面向汽车软件开发业务这个细分领域,构建智能化开发平台的理论研究和工程实践。

2022年,光庭和武汉大学计算机学院成立了“武汉大学-光庭信息智能软件工场联合实验室”。2023年同复旦大学计算机学院开展了《光庭智能网联汽车超级软件工场白皮书》的编写合作,构建超级软件工场的理论基础。

软件开发

光庭是一家拥有20多年发展历史的汽车软件行业上市公司,但并不是擅长AI算法和AI模型研究的人工智能头部企业。当在2021年底提出这个构想时,我们也面临很多来自内部和外部的质疑:“真的能够让AI来主导软件开发吗?”,是不是有些异想天开?软件开发是复杂的逻辑过程,可不是下棋和人脸识别这类规则明确的问题......等等。

虽然学术界在智能软件开发领域已有多年研究,有很多论文成果,但是各种方法的泛化能力有限,一旦涉及具体业务的软件工程场景,不易落地。虽然Kite,Copilot这类智能编码工具能够提升编码效率,但真正的软件工程中,写代码这项任务过程其工作量占比并不大。所以我们希望利用AI技术来改造汽车软件开发过程,要依靠人工智能技术的发展推动效率提升。面对质疑,只能说,道阻且长,行则将至......

2022年12月,生成式AI技术终于有了新的突破,新技术虽然并非无所不能,但其具有的颠覆性,特别是其呈现出理解人自然语言的意图并快速给出结果的能力,真正让我看到人机协同开发场景有了落地的可能。

之前,同学术界接触,了解到的很多智能化软件工程课题研究,都是基于正向的思路,由人来发现一些规则、范式、算法,来优化软件开发流程,这些成果距离工程化应用还存在一定的距离,效果也有局限,泛化能力不足。老实说对于这种正向研究成果,用到具体的工程化场景,实现智能化,难度大,效果差。

而依靠神经网络自身的优化迭代,经过大数据量的训练,经过大数据量的训练,生成式AI大模型确实具备自身识别一些规律,并对软件工程的各项活动:需求编写、代码review、代码理解、测试用例编写、代码生成等过程能够起到帮助作用。

03

生成式AI在汽车软件开发过程中的探索实践

谈到汽车软件开发,包含的内容很多,汽车软件复杂多样,从底层OS到上层应用,不同层次的软件其工具链和开发流程也不同。我们在超级软件工场的规划中,根据开发方式不同进行分类,我们定义了5类开发平台。

软件开发

其中越下层的应用开发,遵循的标准越规范,也是越能发挥当前AI能力的地方。以下我们根据当前软件开发流程的阶段,对需求、设计、编码、测试等各个阶段AI能够提供的支持进行测试。

产品需求编写协助汽车行业发展悠久有着成熟的流程体系,文档规格非常统一,比如对于产品需求,有统一的规范格式;比如仪表类需求,一般按照功能概述、电源模式、配置参数、输入信号、处理策略、输出信号、异常处理、异常恢复这些标准段落结构进行分解描述。当前AI具备按照定制格式输出的功能,示例效果如下:

软件开发

上图AI的问答输出,遵循了输出格式的要求,但是输出的内容还比较单薄。在写这篇文章的同时,微软改良后的AI也在新必应上上线,我们可以看看新必应的表现:

软件开发

改良的模型给出了更详细的内容,不过标准文档中很多信息都是使用图表来表达的,当然这点AI可以很快调整:

软件开发

在形式上,AI具备输出产品需求的能力。不过在内容上,AI给出的内容不能说错误,但是不能够精确匹配到一个具体业务场景的编写需求,毕竟有很多项目背景知识并没有完整提供给它。匹配具体业务场景是AI落地的难点,这点后面再谈。 但是AI给出的结果,还是具有一定参考价值的,可能会补足编写人员的思维盲区。因此作为文档编写的参考信息输出,对编写人员是有意义的。

前面谈到的数字化,有一点就是开发过程成果物的数字化,对于软件需求这个成果物来说,一个需求文档文件还不能算数字化,要把需求内容条目化,规范化,对象化,并用易于跟踪的半结构化方式进行存储,才能够满足数字化的要求。

软件开发

光庭和武汉大学建立的联合实验室,有一个子课题就是设计《统一车载软件需求描述语言规范》,作为文档化用户需求向半结构化软件需求转换的指南。根据规范,可以从分章节表达的文字化用户需求中提取车载软件的各类需求(功能需求、信号需求、界面需求等)及其属性,完成对象化转化,形成半结构化需求。这种统一、规范的半结构化需求,使得基于AI模型的车载软件开发需求辅助生成,用户需求、软件开发需求以及后续软件制品间的跟踪关系自动生成等,皆成为可能。设计过程汽车底层软件开发有相应的行业标准,比如AOTUSAR CP/AP,这类开发过程遵循标准的设计和接口规范,是基于模型驱动的开发模式(MDD),这种开发模式并不以编码为主,而是根据需求使用开发工具进行参数设计和配置,并通过图形化低代码开发方式定义算法,最后由工具生成目标平台代码。 这个过程中,参数的定义和配置是存储为ARXML的形式,我们测试了AI对ARXML文档的理解及根据需求生成新的配置文件能力。(示例效果如下)

软件开发

 

软件开发

 

软件开发

在这个测试中,先输入一段车灯的控制服务接口ARXML定义,可以看到AI能够很好地理解这段配置代码,并给出了针对这段代码的解释,然后要求AI基于这个文件结构,设计一个车窗控制相关的服务接口。在仅给出简单条件情况下,AI就输出了一段车窗控制服务定义——其中定义了:

车窗状态:WindowStatus

车窗状态更新事件:WindowStatusUpdateEvent

车窗位置:WindowPotion

开关车窗方法:OpenWindow,CloseWindow

这段AutoSAR配置参数的自动生成表现不错,特别注意开关车窗这两个方法加入了一个speed的接口参数,这很符合业务场景。这些方法是没有给参考输入,是由AI自动产生,并且符合车窗控制的相关功能。MDD开发过程中,AutoSAR配置是个很繁琐的过程,对工程师要求也较高,要了解很多业务背景知识才能胜任。如果能够实现部份自动化配置能力,将可以很好地加快工作效率。

但由于当前AI模型对输入和输出信息的长度限制较大,这点在很大程度限制了业务落地的可用性。一个稍稍复杂的ARXML配置文件,动辄上万上十万行,当前AI无法实现这种量级数据的输入和输出。所以要落地到业务场景,需要拆分逻辑与模块,将大数据量工作分解为小数据量、多批次的工作。

编码

除了生成ARXML,也可以要求AI将ARXML直接转为代码,整体正确性基本OK,但要符合特定目标平台,细节还需再修改。(示例效果如下)

软件开发

 

软件开发

 

软件开发

根据需求编写代码算是AI模型模型比较擅长的能力了。但如何给AI准确描述代码需求是更值得讨论的问题。与机器对话交流也是一个能力门槛,并非任何一位工程师都能够做到。在我们安排小范围工程师测试时,发现因工程师的表达和语言组织能力参差不齐,会出现各种不同的答案结果。有的工程师将AI当神仙,描述的问题哪怕是在非常模糊、晦涩的情况下仍寄希望于得到精确结果。因此与AI对话能力也是需要逐步培养,或者将对话方法模板化和规范化,保证每个人都能正确进行人机对话。根据代码生成注释和文档也是软件工程很重要的事情,文档和代码的变更同步一直是难题。当前AI对局部代码进行注释的能力已经很优秀了,但是整体项目工程的内容学习和架构文档生成,还无法进行测试。另外,对于较复杂代码,AI在给输入的代码加注释时,偶尔会修改原始代码,这也是这种概率生成式语言模型存在的问题,实际业务导入时,要对其加了注释之后的代码进行校对,防止其自由发挥。  测试

AI模型并不能自动执行测试,但是具备根据需求生成测试用例,以及根据代码生成单元测试代码的能力。下图是输入功能需求,AI输出测试用例的过程。

软件开发

 

软件开发

AI第一次只能给出基本的正向用例,通过多轮对话,可以逐步补充和完善用例,特别是最后对于项目命名不能含有数字这个条件,补充的用例覆盖面很不错,英文搭配,中文搭配,正向条件和异常条件给出的非常完备。

不过真正工程中,测试用例的产生相比这类对话描述更复杂,对于车载软件,很多都是上千行复杂的表格来管理各种参数组合构成的用例,虽然看上去AI写的的测试用例很靠谱,但是导入到实际业务场景,还存在很多问题要解决。

生成式AI在软件工程中如何落地前面我们看到了AI在汽车软件开发中各个业务阶段能够介入的能力。但是AI的能力,如果进行的是浏览器中的聊天窗口,对软件生产力的提升,会非常有限。必须要集成到开发流程中,成为平台的一部分,让业务数据无缝流动起来,才能实现人机的高效协同。

这一点,可以参考工作流程自动化平台make,AI嵌入到业务流程的节点,打通各个服务节点的数据。make(make.com)给了我们非常好的思路,将开发流程中的各个环节和工具链包装成为不同的模组节点,让数据流动起来。

软件开发

 

软件开发

(将AI能力导入 make.com 流程引擎示例展示)

除了业务流集成问题之外,AI还要更理解和匹配业务场景。

OpenAI已发布的GPT3模型接口中,有提供Fine-turning(模型微调)功能,支持使用定制化数据进行针对性调整,这为特定业务场景的优化提供了可能。但这个微调能够达到什么效果,还是我们持续研究的课题。

软件开发

软件开发

总结回看人类进入工业时代标志,蒸汽机驱动的珍妮纺纱机,依赖于人力驱动手工纺织机器来织布,而动力驱动工业纺织机出现后,人类不再通过手工织布,而是维护机器的运作,进入了织布行业的人机协同时刻。

当前,虽然我们主要还是依靠程序员手工编码来实现软件需求,但生成式AI的不断突破,让我们看到解放软件制造生产力的曙光,我们可以期待脱离手工编写代码的时代,将进一步解放人力。

但这里有一个概念要澄清,我们经常说软件研发,其实研和发是有区别的。研究是设计新方法,新算法。而开发是基于成熟的技术,算法,组件库,工具链,标准,来实现软件功能。AI能加速的是后者,前沿领域的探索,还是要依靠人的智慧。

汽车软件的研发,很多都属于开发工作。比如适配新的芯片,新的体系架构,新的通讯模式等。像自动辅助驾驶这类算法为主的工作,才属于研究范畴。伴随人工智能技术的进步,需要新的编程模式来对软件工程进行革新。

超级软件工场,就是对这种新编程模式的探索,通过智能化软件开发平台的构建和进化,打造超级大脑来主导未来的汽车软件开发过程。去年底的AI技术突破掀起的这股人工智能新一波浪潮,更是加强了团队的信心。作为中国企业,我们更期待中国的生成式AI模型取得突破。毕竟国外AI服务都限制了中国区域的使用,未来平台产品化,必须整合中国的AI模型服务来发布。

审核编辑 :李倩

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分