第14课:软件设计进化

软件发展的几个阶段:
1.软件工具和信息化阶段  代表:ERP/OFFICE之类
2.互联网服务阶段  代表:淘宝/QQ
3.社会基础设施阶段 代表:阿里云
……

随着技术发展,软件架构越来越复杂,边界越来越模糊

针对这些问题,提出以下几个观点:

1.从外延的确定性转为内核确定性
以前架构一个项目,第一步就是先对一个业务从四周向内核进行抽象,明确好哪些能做,哪些不能做
但是随着人工智能,IoT等的发展,业务边界很难再明确,这个时候,就需要转为内核确定性
抽象出来哪些是公用的,不怎么变化的,作为内核,在内核的基础上,让架构自然进化
以演绎法为主,局部采用归纳法,就像人由基因控制一个,我们先构造基因

2.文档即代码
所有外化的文档都不应该存在,就像秦始皇可以焚书坑儒,但是不能毁掉DNA
代码就是文档,比如一个业务是淘宝业务,代码这里建个目录就叫淘宝,里面的代码写的能被当做文档来读,就成功了
而不是搞一些千奇百怪无法理解的概念来写代码,根本搞不清楚是在写什么
当然了,这里也不是说不用写文档了,必要的文档还是需要的
还有就是文档和给人看的,代码虽然是机器运行,但归根结底也要给人看的,不要用机器思维写文档,写代码,而是用人的思维

3.面向功能的组件化设计到面向业务的对象化设计
我们的世界分为熵增的无机体和熵减的有机体
以前的设计思路是在工厂化模块化的设计产品,设计无机体,随着业务的发展,补丁越来越多,直到不可维护,推倒重来
随着人工智能的发展,软件渐渐的不再是单纯的无机体
我们要用设计有机体的思路来设计软件,有机体单个个体的复杂度是有限的,是靠群体协作来发挥力量
设计思路主要为:回归到业务本质,用对象化的设计来让业务可生长,继承和变异。

打赏  如对你有帮助,请我喝杯咖啡吧!