软件架构设计 首发于 软件架构设计 写文章 大型软件架构设计

来源:互联网 发布:淘宝优惠券名称怎么写 编辑:程序博客网 时间:2024/05/19 16:29

前一篇说了原理,软件架构本质上是绘制一幅复杂素描所打的草稿,我还说,如果你罩得住,可以不需要这个草稿。


但这只是“理论上”,我们写软件,基本上不是在写只有几千行的代码的小程序,而是写数千万行的大型程序。《道德经》说得好,大曰逝,逝曰远,远曰反。一件事情变大以后,原来近在眼前的事情看到的策略,方法,都会反过来。我举简单程序的例子,是反向化简模型,所谓“执古之道以御今之有。能知古始, 是谓道纪”,是让读者从原始的推演中重新理解我们面对复杂问题时的应该把握的判断模型,是给你讲“道纪”。所以,看我的文章,你不要看我的结论,你要看我的Pattern,我的结论在不同的情形下是不断会变的,我要给你讲的是Pattern,不是要给你讲结论。

我们很多工程师在没有经验的时候,想架构问题都会基于逻辑来想。但如果没有经验,这常常是错误的。 我前面举了个例子,我刚入行的时候(其实现在很多人还有这个误区),当我们发现需求做错了,实现和设计不一致的时候,我们都会做出一个判断:这是需求文档写得不够严谨,设计文档不接地气。这个判断方向基本上是缘木求鱼。我是认为干了好几年,还是抱这种心思的工程师,基本上架构设计水平也就到此为止了。因为你始终无法坚持要“守弱”这个基本原则,你不相信事实,而去相信你的理想了。你写了几年的程序,一直以来需求文档都不够严谨,设计文档一直不接地气,甚至从来没有改进过,你还不断相信,你有一天能写出“严谨”的文档?你完全被你的个人想象蒙蔽了眼睛,从来没有好好看过这个世界啊。

这个问题到底是什么?是工作量啊。整个软件,其实就是一组逻辑,每行软件代码,都是针对不同角度的的逻辑判断。而我们在控制这个软件的所有逻辑被建成以前。我们的逻辑量永远都是不足的啊,如果足了,你根本就不需要设计(包括架构设计)了,你已经拥有你的代码了。所以,构架设计是要在逻辑量不足(逻辑不严谨)的情况下对未来进行预判和控制。而你指望建设好所有的逻辑来解决这个问题?这么明显的逻辑死循环你都没有注意到吗?那你已经忘掉架构设计本来的工作是什么了。

就好比一个领导者,他的工作本应是告诉大家想什么方向走,保证团队能走目的地。你的工作照理说是研究情报,确认对整个团队影响最大的情报,在模凌两可的情况下强行选定方向等等。但这些事情他不去干,而跑去给团队做饭,去充当斥侯探路之类的,看起来很“亲民”,和团队打成一片,但他自己的本职工作呢?

领导者的本职工作是隐形的,是“无名”的,做好了饭,拿到了情报,这些都是有形的,选好方向,让饭做好了,让情报发挥作用,这些行动,并不直接可见,领导者想拿“名”,团队就会失去领导,团队就会失败,团队失败了,领导者也就无所谓名了,整个团队都会被历史淘汰。这就是为什么圣人无私才能成其私,放弃掉你的名,你才让整个团队拥有名,拥有整个团队的名,你才能有你的名。这就是作为领导者的大格局。

而架构师,就是设计团队的设计领导者。

写到这里,我看我还是得把这个链接放出来:《道德经》讲了什么?为什么它广受推崇? - in nek 的回答 。那么辛苦建那个逻辑空间,就是为了描述构架设计的时候,有很多基础概念可以用,否则,后面要描述那些具体技巧的时候,简直不知道应该怎么描述了。

所以,要接着看下去,读者还是看看那个链接吧。我后面会原来越多使用里面的概念的。

0 0