摘要

1) 一句话总结

AI 尚未改变“需求 → 设计 → 开发 → 测试 → 部署”的软件工程底层范式,其目前的作用仅是加速迭代流程,真正的范式颠覆受限于需求无法标准化和自动化验证。

2) 核心要点

  • 底层范式未变:软件工程的核心流程(需求、设计、开发、测试、部署)在瀑布模型、敏捷开发以及当前的 AI 时代均保持一致。
  • 敏捷与 AI 的作用:敏捷开发通过缩小迭代范围和自动化测试缩短了周期;AI 编程则是进一步加速了原型、开发、测试和部署等各个环节。
  • 设计环节的弱化:由于 AI 降低了代码生成的成本,开发过程可能会减少设计环节,倾向于“先跑起来再迭代”。
  • AI 的优势领域:AI 在编程和数学等领域的飞跃,得益于这些领域的结果是可以被自动化验证的,从而能利用强化学习。
  • 颠覆范式的前提:只有当 AI 能够将人类需求标准化,并据此自动完成编码和测试验收,脱离人类参与,才能真正颠覆现有范式。
  • 标准化需求的悖论:自然语言无法作为标准化的需求描述,唯一能作为标准描述的只有代码本身,但这最终又会绕回现有的软件工程范式。

3) 风险与缺口(Gaps)

  • 需求验证缺口:软件工程的需求本质上是开放式、非标准化且模糊的,当前无法实现自动化验证。
  • 自动化闭环缺口:AI 目前仍需人类参与(Human in the loop),尚无法做到自动分析需求、自动实现并自动验证。
  • 需求描述工具缺口:缺乏能够替代代码语言来精准描述标准化需求的自然语言或工具。

正文

软件工程的底层范式是不是会变化,不是取决于 AI 写代码,而是取决于需求是否能做到标准化。

软件工程底层的范式从来就没变过,一直就是:需求 → 设计 → 开发 → 测试 → 部署;瀑布模型是如此,敏捷开发也是如此。

不同的是敏捷开发通过缩小每次迭代的范围以及配合上自动化(CI/CD+自动化测试),加速了这个迭代的过程,将迭代周期从几个月甚至几年缩短到几周。

现在的 AI 编程依然没有改变这个范式,不同是把整个迭代进一步提速了,原型设计大幅提速、开发大幅提速、测试部署也能提速,设计么,也能提速,毕竟代码不值钱了,干脆不要设计或者少设计,能跑就行,不能跑再开发一版。

AI 在软件工程上要突破,还是要从根源上下功夫,软件工程的根源是需求,现在软件工程的范式无法突破是因为需求是开放式的,非标准化的,无法自动化验证的。

AI 真正强大的地方,在于所有能被自动化验证的领域,都能通过强化学习实现飞跃,比如现在 AI 编程领域、数学领域的进步,就是因为这些领域是可以自动验证的。

软件工程的需求是无法自动化验证。

老板说要做一个淘宝网站,这是个需求,但这个需求是模糊的、无法自动化验证的,所以要做需求分析,要去实现,最终要测试验收。

开发和验收的标准就是最初的需求,但这个标准是模糊的,因为没有人在一开始说得清楚需求,需求一直在变化,需要产品经理、程序员、测试、项目经理在里面各种拉扯。

敏捷开发只是通过缩短迭代周期,解决了筛选高优先级需求,以及让需求的变化可以快一点响应的。

AI 也只是加速了整个迭代,但还是要 human in loop(人参与其中),需要人去用 AI 分析需求、去设计、去用 AI 写代码,AI 还做不到自动分析需求自动实现自动验证。

真要颠覆现在的软件工程范式,只有说 AI 能把人的需求标准化,有了一个标准化的需求,然后 AI 就可以自己去自动化的编码和测试验收,那就不需要人参与其中了。

但是怎么样才能是一个标准化的需求呢?自然语言能描述吗?恐怕不行,真要出一个标准化需求的只能是代码语言,但是代码怎么产生的呢?

产生代码不还是得回到 需求 → 设计 → 开发 → 测试 → 部署 这个范式么?

关联主题