AI 还没有改变软件工程范式

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

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

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

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

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

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

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

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

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

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

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

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

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

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