软件工程的进化“人在环内”到“人在环外”

大模型开启“软件工程3.0”全新时代

大模型开启软件工程3.0的全新的时代,为什么是3.0?软件工程划分为三个里程碑进展:1968年发现一个软件危机,在软件开发过程中不断出现,并不能解决软件工程各种各样的问题,所以提出了软件工程学科和软件工程的概念。在这后面近三十年左右的时间,软件工程学术界、工业界主要是规划了各种软件的开发过程,包括为了更好地促进人与人之间的协作,把软件整合过程划分为需求到设计到编码、测试到构建到运维各个过程,以及过程间每个交互件是什么,要怎么配合。但是到2001年之后发现由传统的过程解决不了问题,因为开发人员的体验比较差,已经影响到效率和软件质量。所以那时候提出敏捷宣言,提出来之后有大量的开源软件、开源社区火热起来,到今天为止很多开发软件是基于敏捷化思想开发,而且运用大量的开源软件,包括华为很多代码是复用很多开源软件的。

到了2023年,包括ChatGPT和GTP4技术出来之后,带来了新的思路。以前写代码是一行行写,即使复用别人的开源软件也是一行行复用,但是如果有个机制,通过跟大模型的交互就能写出代码,从而完成各种各样的软件自评开发,是不是就可以更好地把软件公司往前推一步,所以就产生软件工程3.0。

但是3.0和其他2.0、1.0时代最大的区别就是未来代码很有可能不需要自己写,只要关注自己的核心代码或者大模型解决不了的代码,包括测试、构建也有可能产生重大的变化。围绕这个,我们认为大模型引发了新的技术革命,重新定义了一切。首先大模型重新定义了软件,之前写代码和开发的模式是从原代码编写,以后有可能是基于Prompt之间交互来完成软件的开发或生成软件的形态。

其次,重新定义了工程。这里的工程不仅仅是软件工程,还包括前面的系统工程和后端测试工程。说到底怎么用大模型使能人和AI帮助大家写出更高质量的代码,用更小的人力完成给更快的软件开发和更高质量的软件,是重新定义软件工程要突破的技术。

再者,大模型重新定义了生态。在过去开源社区生态主要是针对一个开源项目展开,但在未来大模型推广之后有很多模型、数据,要怎么构建大模型的生态,各种各样的数据集生态,以及围绕生态怎么保证生态是可信的过程。

此外,大模型重新定义了安全。比如大模型新的安全问题,就是所有人都可以用大模型,造成平民化的攻击,产生很多新的大模型安全问题。还有各种AI Agent流行之后会产生新的安全问题,各种安全体系怎么构建也是重大挑战。

最终围绕四个重新定义之后,发现模型会重新定义整个系统,包括系统的运行行为、交互形式、系统架构、规格、运维等各种各样的方式也会产生变化。

 

未来软件工程形态变化

未来企业的软件开发平台到底会发生什么变化?初步的想法:真正实现软件工程3.0需要做的事情,首先认为过去几十年更多是在做简易工具、IDE、代码仓、构建数据、编译,甚至编程语言,说到底就是帮助人来开发出所需要的软件,而且这些工具之间的相互交互和相互影响是比较小的。随着大模型推出之后,第一步就是怎么把大模型和传统的简易工具整合起来,以大模型作为接口,产生人和大模型不同的交互帮助我们写代码、测试代码、做代码评审和程序分析。

未来希望在五年之内真正做到智能伴侣,智能伴侣和智能工具最大的区别就是智能伴侣可以跟它进行反复地讨论。比如需求不明确,给它一个需求,如果觉得做不了可以跟你讨论,让你提供更多信息,帮你生成测试和设计文档。再去看设计文档,再跟大模型不断地讨论,只有做到这一步,才能真正形成智能伴侣。我个人觉得目前还主要是做到智能工具的时代,到智能伴侣还有比较长的的路要走。

只有到智能伴侣之后,进一步畅想若干年之后的软件开发形态进一步发生变化。有了智能伴侣之后人在环内,跟机器的交付流程可以打通,也就是说未来在一段时间存在三重交付模式:一种是人跟机器的交互,就是人机交互;还有各种机器人之间的交互,机器人跟机器人的交互;还有传统人跟人交互。这个环中会存在两种求知市场:一种是人的求知市场,对人的能力要求,不仅是人跟人之间的沟通,还有人跟机器之间沟通能力也会提升;还有机器人的市场,很有可能各个厂商都不断开发自己的AI Agent或机器人,和机器人投入到软件开发的过程中,不断地迭代循环,帮助一起协同成长。但这只是一个暂时的未来十年的形态。假设15年之后,很有可能是人从环里面挪出来,整个软件开发和维护的过程全部交给机器来完成,只存在一种交互模式,就是各种机器人或Agent之间的交互。人的作用就变成两端,一端是作为最终用户提出各种各样的需求交给机器人组织去完成。然后另外一端就是审计功能,最终机器人完成的软件,人来审计是不是达成功能规格要求和需求,最终形成人到环外。

当前整个实验室也在构建智能化的工具,进入到从简易工具到智能工具的时代,这是目前整体技术的方案,当然这也是此时此刻的技术方案,因为大模型的技术不断往前推进。现在有通用大语言模型,会准备大量的语料和代码数据、测试数据,放进通用大语言模型做增强训练或增强微调,变成软件工程的大语言模型。在这个基础之上把华为公司的编程规范、程序理论和模型规则以及各种各样的收集提示词放进来,进一步做领域模型的微调和人类反馈的强化学习,形成机器人向上支撑软件设计到编码、测试、检视,以及度量的情况。

围绕这个构建了六大能力:500T代码数据、高度精确的代码数据提取、零人工参与的UT自动生成、一站式代码与UT生成能力评估、补全式的AI开发代码生成、人工参与的代码检视意见生成。

形成机器人输出代码后,我们认为这个环就结束了。但实际上如果要做到智能伴侣的时候,是需要跟机器人不断地交互,不断地协同成长,整套流程是要重新设计的。目前整套技术方案过多关注大模型的自身、底层的微调技术和各种各样的能力构建,反而忽略了基础大模型能力随着时间不断地增强,后端人跟机器的交互模式到底怎么构建,其实是目前更加关注的问题。

最后用“都江堰工程”来总结,都江堰工程是2000多年之前完成的重大工程,一举奠定了成都成为开府之国。在现在大模型的时代,也有这么一个机遇,可以构建软件工程的都江堰工程。目前大模型可能有各种各样的挑战,但是总的来说是提供很好的明灯。如果要构建都江堰工程,整个大坝要怎么设计蓝图,至于大坝每一砖每一瓦怎么堆上去,需要大家一起努力,共同构建未来智能化的软件开发。