1、大 模 型 时 代 的 软 件 智 能 化 开 发:分 析、思 考 与 展 望大 模 型 时 代 的 软 件 智 能 化 开 发:分 析、思 考 与 展 望模型时代的软件智能化开发:分析、思考与展望http:/https:/cspengxin.github.io彭鑫复旦大学计算机科学技术学院大 模 型 时 代 的 软 件 智 能 化 开 发:分 析、思 考 与 展 望大模型冲击波前哈佛大学计算机科学教授、谷歌工程主管Matt Welsh预测:生成式AI将在3年内终结编程,到那时候软件开发团队中只有两类人会保留,即产品经理和代码评审人员码农们的焦虑说了这么多年程序员要被AI取代,狼终于来了研究者
2、们的焦虑一大波SOTA纷纷被ChatGPT轻松超越很多研究课题似乎没必要做了大 模 型 时 代 的 软 件 智 能 化 开 发:分 析、思 考 与 展 望迷茫确定:大模型助推软件开发进入新的智能化时代不确定:这种软件开发的智能化新时代是什么样的?在可见的未来软件开发模式将会发生什么样的变化?有哪些开发岗位会消失?又有哪些新的开发岗位会出现?哪些软件工程研究还值得做?如果软件开发只剩下产品经理和代码审核员,软件设计还需要考虑吗?软件维护和代码质量还是个问题吗?软件测试还需要研究吗?大 模 型 时 代 的 软 件 智 能 化 开 发:分 析、思 考 与 展 望冷静思考类比:20年前所研究的软件复用
3、和软件产品线通过代码复制粘贴和API调用广泛实现局部复用并不难,难的是通过需求和设计规划实现系统性的定制化产品开发(例如软件产品线所宣称的那样)与之相似,利用ChatGPT在软件开发过程中广泛实现局部的智能化辅助支持(例如代码片段生成和技术问答)并不困难,难点在于如何利用它们实现端到端、系统性的生成式开发Frederick P.Brooks.No Silver Bullet Essence and Accidents of Software Engineering.Computer,Vol.20(4),April 1987.重温经典软件开发的根本性(Essence)困难和偶然性(Acciden
4、t)困难:根本性的困难在于对于构成抽象软件实体的复杂概念结构的构思(主要是需求和设计),而产生这种抽象软件实体的编程语言表示只是偶然性的困难。大 模 型 时 代 的 软 件 智 能 化 开 发:分 析、思 考 与 展 望基于大模型的端到端生成式应用开发张刚.ChatGPT结对编程实录:提升生产力,还是被代替?https:/ 创建游戏框架 使用GUI替换控制台 在GUI上显示一个L形方块 移动方块并且进行碰撞检测 旋转方块 落下方块并且创建一个新的方块 检测游戏结束 增加整行消除功能 加入所有类型的方块 增加计分能力实践经验整个过程几乎没有人工参与编写代码,生成的代码绝大多数都是正确的看起来懂设
5、计,不仅是简单堆砌代码实现功能,在恰当提示下代码质量一流从整个过程可以看到很好的由外而内,从宏观到微观的设计思想能较好地记住编程上下文,但是也会犯错具备自动化编写测试的能力,质量不比人类写的差由于俄罗斯方块是一个在通用领域很常见的问题,本文的测试不具备在专有业务领域的代表性,在专有业务领域是否可以达到相同的水准需要更为仔细地评估大 模 型 时 代 的 软 件 智 能 化 开 发:分 析、思 考 与 展 望大模型能掌握需求分析与设计吗?端到端的生成式软件开发需要逾越需求分析和软件设计这两座大山ChatGPT似乎具有一定的分析和设计能力根据给定的高层需求自动生成细化需求,同时进行条目整理根据要求自
6、动生成需求描述的规范化表示,例如UML顺序图根据需求自动生成数据库表结构设计以及相应的建表SQL语句根据需求自动生成包含多个类的设计结构根据开发人员的提示以一种增量的方式逐步生成应用代码(这要求对原有的代码实现结构有理解)根据一般的设计原则对代码进行自动化重构以提高可理解性和可扩展性可能的问题需要开发人员掌握整体的迭代过程,其中需要融入一定的设计思考开发人员需要不断检查ChatGPT产生的结果,及时发现ChatGPT的错误并提醒修正特别是在需求分析过程中,ChatGPT进行需求细化主要依据常识或某类软件的共性特征,可能遗漏一些重要需求创新性或个性化需求也需要开发人员进行补充大 模 型 时 代