本文来源于阿里云社区电子书《AIGC+软件开发新范式》
《AIGC+软件开发新范式》--02.谈谈我对 AIGC 趋势下软件工程重塑的理解(1):https://developer.aliyun.com/article/1537689
二 . 软件研发挑战及智能化的机会
在 2023 年 6 月,我们组织过一次大规模的专家研讨会,在这个研讨会上大家都在讨论智能化未来对软件研发或者软件工程领域的深刻影响。在这个会上,我们有位专家提出了一个观点,他认为软件工程是人类历史上第一次大规模的集体智力的协作活动,它本身是有本质的复杂性在的。例如《人月神话》的作者所讲的,他认为软件本质的复杂性是现在软件系统中无法规避的内在特性,比如复杂度、一致性、可变性和不可见性。
在过去的若干年,为什么软件效能或者说研发效率提升非常困难,就是因为这些维度没有得到非常好的解决。今天在大模型时代,通过 AI 逐步地去替代人类的事务性工作后,它可以起到非常大的改进作用。我们总结下来有以下四大方面。
第一,是对个体效率的提升。例如我们可以采纳类似 AI 的智能代码助手,它可以大幅的代替研发人员的重复性工作、简单性工作。我们认为它是一种 Copilot 的模式,辅助各个角色去提升自己的工作效率。
第二,是对协作效率的提升。因为有很多专业的分工,它们之间存在一些效率的竖井,互相沟通协作的一些偏差等等。当 AI 逐步地去替代事务性工作,并且形成了 AI 为主、人为辅的编程模式的时候,大家会发现一些角色的分工可能会出现模糊化。比如产品经理写完了需求,是不是可以马上交由 AI 去完成大量的编码工作,然后由工程师进行校验,测试人员进行简单的测试回归,AI 也可以起到非常重要的测试作用,接下来就可以顺利的发布上线。
如果是这样的一个以 AI 为主、人为辅的模式,其实人和人之间的沟通协同问题就可以很好地解决。
第三,是研发体验的提升。在大模型时代,我们会构建软件研发的智能化大脑。这个大脑的表现可能是一个对话框,或者是一个对话形式。这个对话框会成为我们很多操作工具的入口。比如现在大家会发现,IDE 这种智能编码插件,它也有对话框,有 IDE 的编码,这就会成为我们写代码的一个入口。
同样在我们原来的 DevOps 工具上,也会有这样一个对话的入口。在这个入口里我们可以完成很多工具的操作,解决很多问题。它有效地使现有的工具散乱问题得到了解决,统一了整个操作入口。
第四,是数字资产的提升。过去企业内部有很多优质的代码、框架、规范等等,很难瞬间交给开发者,让每一个开发者去遵守。接下来我们会将这些数字资产利用检索增强或者微调训练的方式跟大模型结合起来,不断地在大模型上积累这些资产,而不是使现在产生的代码成为负债,这些积累的资产可以让软件工程师的效能进一步提升。通过这样的方式形成正循环,就可以大幅提升研发效率。
在上图的右侧,大家可以看到每一项的改进,实际上都在解决软件研发的一些本质复杂性。比如说一致性问题、可变性问题、复杂性问题和一些知识显性化问题等等。因此我们认为, AI 对于软件研发的影响是深刻的,尤其是在未来 3 到 5 年,软件研发的流程和软件研发范式会出现颠覆性的变化。
大模型目前已经在深刻的改变智力协作模式,比如说现在常见的代码翻译,从我们的自然语言进行编程,像一些简单的需求,现在可以直接让大模型完成编码。但是现在复杂的业务需求还没有办法完成。不过随着大模型技术的发展,解决这个需求其实就是时间问题。
第二个是知识检索。在海量的知识里,通过对话的方式可以快速地找到相关知识,由大模型输出,变成顺滑的自然语言。
第三个是头脑风暴。其实这是现在开发者最常用的功能之一。比如使用通义千问时,让它给我写个算法,然后不断的纠正它,让它按照我的意图去修改代码,最终就会形成一个可以直接拿来用的代码片段,这个大家现在已经用得很熟练了。
第四个是大模型非常擅长的整理归纳。我们可以用它来整理我们的需求、整理文档和知识,这四种模式实际上已经在改变我们的智力协作模式。
在未来,我们主要有以下三种方式可以和 AI 进行协同。
第一种是聊天模式,可以和 AI 聊我们的需求架构、编程思路,让它给我相应的建议。
第二种是实时模式,在编码过程中大模型可以在背后给我相应的辅助,它是实时性的,帮我发现错误、推荐代码。
第三种是伴随模式,也就是它随时随地可以被召唤出来完成一些事务性工作。比如帮我们做代码评审、异常排查等等,这三种模式会成为未来的主流。
从技术的角度来看,我们也认为会有以下三大趋势。
第一个是基础模型的变化,越来越长的推理上下文以及越来越大的参数量。其实现在 GPT4、GB3.5、GB4 都是非常大的千亿级的参数,包括现在的通义千问、通义灵码也是如此。随着模型的参数量越来越大以及推理上下文越来越长,模型它能感知的知识以及它能处理的任务会越来越复杂。现在它可能还只是完成一些简单的编程任务,在未来很有可能会完成复杂需求的编写。
第二个我们认为它在向纵深去拓展,更深度的去接管编码过程。比如 Github Next 上面的一些项目,我们可以看到未来的一些趋势。比如让大模型去预测下一个编辑位置,让大模型直接完成需求到代码的自动编写以及我们甚至可以通过自然语言描述的方式,让大模型编写好一个框架,直接生成整个代码,也就是说实现自然语言编程。这些在业界都有相应的探索,大家有兴趣的话可以去看相关的 Demo,还是非常酷炫的。
第三个是我们认为现在已经在逐步的向横向扩展,也就是说会贯穿到 DevOps 的整个链路。比如可以用大模型进行辅助的文档查阅、生成评审、辅助编写,大模型已经开始逐步渗透到软件工程的各个领域。
三 . 企业落地研发智能的策略
对于企业而言,在这个 AIGC 或者说大模型爆发的时代,应该如何去落地研发智能化,它的路径和策略是什么?
看到这张图,我们可以跟过去十年的软件工程模式说再见了。因为在过去,我们一直追求的是整体的 DevOps 全链路一站式体验以及构建效能洞察数据体系,去找到效能改进点,不断推进研发效能提升。
在未来十年,我们认为是以大模型为驱动的智能化软件研发体系,也就是有智能化的软件研发工具链,及大语言模型和相关的数字资产,再配合智能的决策辅助,去帮助企业大幅提升软件研发效率以及突破现有的效能瓶颈。
在这里我们推荐企业采用三个阶段来逐步构建研发的智能化。
阶段一,可以先引入 DevOps 基础大模型去构建研发智能大脑。如我们通过编码场景,在 IDE 的编码助手的场景中进行落地。为什么我们会选取这个场景?是因为我们发现大模型目前的技术瓶颈,还没有办法实现一些非常复杂的大面积的编码。
但是在跟人类 pair 的场景下,它就可以起到非常好的作用。比如说代码续写,圈选一段代码去进行单元测试生成、代码注释生成,这些都非常擅长,而且它的效果也非常好。所以说我们认为可以在这个场景先进行切入,先去落地,取得最大的效能红利,我们把这个过程叫做 Landing。
阶段二,我们建议是以长期效率为核心,持续的治理和构建个性化数据。也就是说要实现企业的模型个性化,提供全量、全要素的数据,比如优质的代码数据,优质的业务文档数据,将这些数据收集起来,构建企业个性化的数据集。再通过检索增强或微调训练技术跟大模型结合起来,构建一个企业私有的研发大脑。我们把这一步叫做 Growth。
阶段三,要以大模型为中心,完成整个研发工具链的智能化升级。比如将研发领域的各种工具都接入大模型,进行智能化的整体改造,实现端到端的智能化,进一步的代替各种研发工程师的事务性工作,我们把这一步叫做 Expanding。
从阶段一、阶段二到阶段三,循序渐进的这种模式是我们比较推荐的。现在一般企业都有整体的软件研发的全生命周期管理的工具链,也有沉淀出来的企业非常好的一些数字资产。将数字资产跟大模型结合,进一步去赋能工具链,然后工具链又可以正向地产生更多的资产,因此形成一个循环,让效能越来越高,这就是我们期待的一个模式。
在需求阶段、编码阶段、集成测试阶段、发布部署阶段、咨询学习阶段、效能管理阶段等各个阶段实现智能化升级。
首先可以在编码阶段进行切入,逐步向测试阶段、发布部署阶段进行扩展。像一些和需求与业务连接的复杂场景,可以放到最后去进行提升,通过这种方式逐步落地,最终实现端到端的智能化改造。
接下来我讲一些简单的场景,给大家参考。例如我们可以实现智能的项目管理,可以实现细化需求,拆分子需求,智能的指派负责人,拆分任务等等,这些工作都可以交给 AI 来做。
《AIGC+软件开发新范式》--02.谈谈我对 AIGC 趋势下软件工程重塑的理解(3):https://developer.aliyun.com/article/1537650