接“造词圈子割韭菜”-从ABCD谈人工智能对软件开发的影响(1)

DDD领域驱动设计批评文集

做强化自测题获得“软件方法建模师”称号

《软件方法》各章合集


前两天发了一个答疑视频《AI能做“需求分析”吗+警惕造词圈子割韭菜》,其实就是把之前写的同名文章转成了视频。 

图片

没想到,之前的文章点击量没多少,这个视频倒是引起了一些讨论,那干脆就多写一点吧。

(一)我平时用的AI工具

首先要说的是,我每天都用AI工作,所以不要说“潘老师是不是没用过,不了解它的威力”之类。

平时我用的工具的话,主要是这么三个:

图片

我认为目前Claude是最好的。不太难的问题感受不深,但比较难的问题可以看出来Claude比ChatGPT要好。如果是简单的问题,就用免费的通义千问。

(二)建模工作流

给我发信息的或留言的同学,还是表现出一个问题:不了解软件开发需要做哪些思考。

题目和内容说的是“需求分析”(当然,这也是个模糊用语,视频和文章有说明),发过来信息却说到编码去了,而我在视频和文章里面都讲清楚了这个问题,可惜有的同学没有认真看。

所以,我们首先要了解一下软件开发需要做哪些思考。

还是看《软件方法》第1章:

软件开发的每一个迭代周期都需要依次思考这么几个事情:

A-业务建模(business modeling)——定位需要改进的目标组织以及该组织接下来最需要改进的问题。

B-需求(requirements)——描述为了改进组织的问题,待引入的信息系统必须具有的整体表现。

C-分析(analysis)——提炼为了满足功能需求,待引入的信息系统需要封装的核心域机制。

D-设计(design)——考虑质量需求和设计约束,将核心域机制映射到选定非核心域上实现。

在迭代周期中,如果要追求好的结果,按A→B→C→D的顺序来进行推理是必须的,而且各个开发团队一直都在这样做。我们来看几个场景:

开发团队甲,所有成员都认真学习《软件方法》和认真做题,引进了UML和建模工具EA,并按照书中的改进指南改进,最终得到很不错的结果。

开发团队甲的A→B→C→D很容易看出来。

开发团队乙,没听说过《软件方法》,也不用UML和EA,用的是技术总监自己归纳的一套“软件工程方法学”和符号,也还算行之有效。

开发团队乙的A→B→C→D也容易看出来,但形式上和开发团队甲不同。

开发团队丙,快乐拥抱挂着“敏捷”或“领域驱动设计”名头的伪创新。这些伪创新投资少,见效快,门槛低,产量大,仪式感十足。开发团队轻松愉快、热热闹闹地讨论和糊墙。

这里面有A→B→C→D吗?也许有一点,但很少,这些热闹只是装模作样。真正起作用的A→B→C→D推理,可能是在编码的时候在大脑里朦朦胧胧进行的,推理的质量可想而知。

开发团队丁,觉得既然ABC我都不会,我也不想装模作样,就一步到D,直接编码。

这种情况下,还有A→B→C→D吗?有的,和开发团队丙差不多,真正起作用的A→B→C→D推理,是在编码的时候在大脑里朦朦胧胧进行的,同样,推理的质量可想而知。幸好,省去了伪创新装模作样的成本

开发团队戊的故事(纯杜撰,勿对号入座)看起来有点不一样。他们所在的公司赶上了风口,成了某个领域(例如预制菜)的互联网巨头。在开发和维护预制菜相关的项目时,开发团队戊的领导下觉得现在的前端框架Vue、React等还差点意思——更有可能是为了自己的简历积极主动地“觉得”Vue、React等还差点意思,于是搞了个内部项目,自研前端框架“闪电五连鞭”。过了几年,也许是风潮过了,也许是历史使命已经完成,预制菜市场冷却,反倒是“闪电五连鞭”框架误打误撞,受到全世界开发人员热捧,成为公司的生存支柱。

这里面有A→B→C→D吗?看起来像是颠倒了?

再看一个特别的,程序员张三自己做一个东西给自己用。张三只会用编码工具,也没学过UML或类似的知识。

张三这里面还有A→B→C→D的推理吗?

最后这两个,答案也是一样的,并没有什么特别,具体留到后文详述。

总之,每一个软件项目,只要不是故意摆烂,开发团队都会有A→B→C→D的推理过程——也许无意识、隐式地做,也许有意识、显式地做;也许推理过程严谨合理,也许推理过程漏洞百出;也许分成很多人来做,也许一个人做;推理产物的形式也许是UML模型,也许是其他……

就像一道复杂的数学填空题,答案是97/2023,如果考生能填对这个正确答案,他必然在考试过程中的某个时间点做了正确的推理。只要不是故意摆烂,即使是学渣,也会尝试着去推理。只不过相对于学霸的一击必中,学渣可能要反反复复“敏捷探索”多次才答对,甚至直到考试结束还没答对。

本书希望教给读者一种严谨和高效的推理方法。当然,要掌握它,需要付出辛勤和汗水。

(三)做题

针对上面这个知识,我出了很多道题,链接在:umlchina.com/url/examad.html,感兴趣的同学可以去扫码自测。

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

(四)AI对ABCD工作流的助力-概述

有了对ABCD工作流的理解,我们接下来就可以谈一谈AI对它们的影响了。

我做了这样一个表格来归纳:

图片

表格中“步骤”这一列是ABCD工作流的细化,看过《软件方法》书或上我的课的同学都知道。

用来表示各个工件的图是可以换的,包括表示法也可以换,例如不用UML,用自己创新的“革命性划时代领域驱动设计风暴视觉化创意敏捷组件”也可以。注意,造词要造出仪式感,说“视觉化”,不要说“画图”,说“创意组件”,不要说“图形元素”。

“建模难度”这一列指的是建模人员用目前可得的建模工具建模的思考难度。

“助力分数”这一列描述假设前面的步骤已经解决,要得出下一个步骤的有真正价值的工件,AI的帮助有多大?

例如,“组织现状流程(业务序列图)”这一步,如果前面的“愿景”、“组织价值(业务用例图)”这两个工件的内容和形式都达到了要求,那么,在推导,“组织现状流程(业务序列图)”的过程中,AI的助力有多大呢?表格中给出15分,不高,但也不是最低的。

接下来,我们一步步来详细看一下:

(五)分布解析之一:愿景

这个没有前面步骤。

当前现状下,老大和目标组织应该如何定位,定位得到的老大,他最期望的而且你又能满足的改进指标是什么?

或者我换一个视角,从开发组织的视角来说,就是:

当前时间点,我们(开发组织)所开发的系统最应该给哪个组织的什么指标带来多大的改进,使得我们获得最大的利润?

这可太难了。

就算是最简单的,为特定组织定制的系统,即所谓的“做项目”。客户领导就说要“加强管理”,剩下的你自己揣摩去吧。你让AI帮你揣摩领导的言外之意看看?

更难的非定制系统,即所谓的“做产品”,还要加上“定位目标人群或机构+定位老大”的难度——有趣的是,在某些不知柴米油盐贵的开发人员眼里,“做产品”更容易,因为看起来没有“做项目”的“客户领导”、“甲方”,自己想怎么做就怎么做!

所以,“愿景”这一步,目前我认为助力分数只有5分。

展望:

如果有一天,所有人都装上芯片,人的所有自然属性、社会属性以及行为规则全部被提炼并由AI所掌握,这一关就轻松迈过去了。领导脑电波稍微觉得不爽,AI马上就能推算出他为什么不爽以及做一个什么样的东西出来他就爽了。

当然,这个时候,这个“领导”也已经不是真正的领导了。参见Westworld(西部世界)、The Matrix(黑客帝国)等影视作品的探讨。  

图片

图片

==待续==

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值