AI驱动的软件研发:挑战与机会

软件研发面临的主要挑战:系统复杂度的无限膨胀

目前华为公司面临的主要问题,第一个是规模,系统复杂度已经是代码仓有上千亿行,虽然公司自身只有几十万行,但是开源代码加起来有上千亿。版本是以千为单位,这不是全公司的,有些产品线一个产品在线上活跃的版本就是几千个。

第二是软件集成发布流程复杂,不管是用共主干开发,还是用分成流水线发布,使得整个软件集成和发布特别复杂。另外一个很大的问题,定位定结越来越困难,不管是自己的模块、开源、第三方,系统的定位定界是难的问题。

从开源软件整个层次也可以看出企业软件越来越复杂,在这么多软件里面,选择你要的东西,这时候还要考虑资源利用率、性能、可靠性、安全隐私等等,全局的复杂性使得软件开发越来越困难。

2019年公司变革时候的调研,从代码量增加到团队规模的增加从组织流程的复杂度再到工具环境的复杂度到管理度,人力成本是下降的。

另外是交付节奏,希望按月交付、按天交付,公司是八个月一个版本,现在能做到6个月一个版本,所以交付节奏的加快也使得系统复杂度越来越大。

再看现在做的一些事情,大模型是否能提升软件开发效率,不管是工业界还是学术界,尤其是微软讲多少人在用大模型,公司内部也在用这个东西,做这个事情。华为大模型的使用是从设计开发到测试交付、维护,都有可能在用这个模型。目前的规划是做知识管理和代码生成,这是两个最重要的实践。

另外智能生成实践,大模型辅助OM开发自动化,提升OM资源研发效率70%。这个挑战在于内容特别多、步骤特别长,整个Mini行要26个步骤,非常容易遗漏。学习曲线特别陡峭,有380多种模型属性,落到脚本有246个API的函数,应用逻辑很复杂,这么一个复杂的东西特别容易出问题。

我记得2020年在产品线团队调查,一个新员工进来学这个东西,大概两个月做一个MINI行,现在通过大模型和各种方法,把中间的某些步骤自动化,目标是能够争取在天级,就是两三天做一个。

另外整个研发工具链中,刚才AI For SE与SE For AI,这些都是可以做的,包括知识获取、AI应用、模型与服务等。在数据这块也是非常重要的,我们自己有教训,很多都是用开源模型去搭,如果开源模型混上自己的数据不一定能力是提升的,如果数据没有弄好,或者没有对齐,经常有时候模型训出来是变差的,或者某些方面的能力好了,另外方面的能力差了,所以数据是很重要的。

现在主要的工作重心包括模型开发、模型运行和模型运维运营,这是我们正在关注的几个方面。还有华为公司有很多内源项目,最近有一百多个内源项目出来,比较有名的项目,一个是AICoder,全球技术服务部搞的一个框架。还有一个小鲁班机器人,可以自动回答公司每一个员工日常问的问题,当然后面有很多引擎,不一定是大模型。

面向未来,我们期望面对软件的复杂性方面来解决这些问题,一个是怎么优化研发过程;第二是怎么做知识积累;第三是怎么帮助个人提升能力;最后一个是在组织团队方面怎么促进协作。