一次成功的重构实践2 - 架构设计的目的
黄国强 2019/1/27
华为老总任正非在1月9日在杭州研究所业务汇报会上的讲话:表示在软件工程能力提升上,我们最缺乏的是对宏观架构有清醒认识的人才。建立公司是一个架构;建立公司的利益体系也是一个架构;任何产品都是架构第一;软件重构一定要从宏观架构入手。
这段话蛮应景的,正好总结了我去年的工作。不过话说华为这么个大公司这个阶段强调软件架构,感觉有点怪怪的。难不成华为的软件没有架构?考虑到华为的所谓“加班文化”,拼命拿钱砸。似乎印证了确实没有架构或架构存在着很大问题。
亚当・斯密在《国富论》中举例说,一个劳动者……纵使竭力工作,也许一天也制造不出一枚扣针,要做二十枚,当然是绝不可能了。但按照现在经营的方法……一个人抽铁线,一个人拉直,一个人切截,一个人削尖线的一端,一个人磨另一端,以便装上圆头。要做圆头,就需要有两三种不同的操作……这样,扣针的制造分为十八种操作……像这样一个小工厂的工人,虽很穷困,他们的必要机械设备,虽很简陋,但他们如果勤勉努力,一日也能成针十二磅。以每磅中等针有四千枚计,这十个工人每日就可成针四万八千枚,即一人一日可成针四千八百枚。
现代社会是高度分工的社会,原因很简单,分工可以提升效率。但高度分工带来个问题,就是沟通成本的上升,沟通成本会限制进一步的分工。那么如何降低沟通成本呢?这就需要对分工之间的联系进行规范,减少分工之间的耦合度,进而减少沟通。
所以说架构设计的目的就是促进模块分工,降低模块耦合度。下面的图指出什么是好的设计,什么是不好的设计。