通过观看设计师的视频,以及再一次的阅读九篇架构漫谈,我在设计师上找到了与软件架构师相通的特性,这次对漫谈的阅读和理解能让我更深一步的了解“什么是架构”,“什么是架构师”。
王概凯从认识架构讲到到最后的理清技术、业务和架构的关系,看完这些内容,相较寒假看的《软件架构实践》这一教材,收获是非常不一样的。
看这本书的时候,让我有了一种错觉,仿佛又回到了看《构建之法》的时候,每当我遇到一个比较晦涩的知识点的时候,作者就会用一个比较形象化生活化的例子来告诉我究竟那是什么。
架构在wikipedia中的定义,让我们觉得架构是一个过程,但是又不是很清晰,因此,作者就从人类居住环境开始类别架构,得出架构产生的五个动力:首先,必须有人执行的工作,如果人不参与这个活动,那么意味着没有地方需要升级改造,那么就不会需要架构,可以说,这是架构的一个前提条件;接着,由于个体人的力量有限,因而,我们开始做架构,这个就是原因;其次,人对系统要有更高的要求,简单的说,这个是因为一个点而来的,算是前提条件的原因;最后,更多的人参与进来使得系统有更高的质量和效率。既然了解其动力,便可挖掘其定义了。此处定义,比起一般的定义,更像一个过程。定义分为四个部分:根据要解决的问题,对目标系统的边界进行界定,接着对某个原则进行切分,然后对切分的内容设立沟通机制,最后将这些组装成一个整体,完成系统的所有工作。这里用一个通俗的理解就是老师把知识分块教授给我们,然后,我们整合知识系统去参加考试,反馈整个教学系统的质量。(希望这个小例子没有错……)
后面文章解释了一个名词“名相”以说明为何一开始说概念并不清晰的原因,架构是一个抽象的概念,并非一个直接可以表达此意的物品。
在了解了架构的基本概念以后,我们要对它进行深入的了解。首先,我们要识别架构的问题,究竟什么叫做问题?笔者此处用了一个非常形象的“女主人让男人削土豆”例子来讲了这个道理。女主人要求男主人削土豆,那么她给了男主人一个命令,提供的“解决晚餐问题”一个解决方案。一般来说,我们所问的所说的,都是表层的“问题”或者“解决方案”,架构师与我们不一样的是,他们是通过现象看了本质,这个层次的人,可以知道,为什么要削土豆,为什么要削一半的土豆。其实多问几个为什么,我们就可以知道真正的问题--解决一家人吃晚饭的问题。这里,就可以识别出问题的主体,一家人。一再强调的是,正确认识问题,前提是,主体一定是人。那么最后就可以总结下如何识别问题了,要确定是谁的问题,是什么问题。
在确认主体之后,就要有所动作,就要对架构进行切分。那么究竟如何切分架构?切分的原因源于我们一开始讲的个人的力量的有限。首先需要认识到这里的切分,其实就是利益的调整,人本性是自私的,所以维护自己的利益这一点不可避免。那么既然涉及利益,那么我们就需要一个准则,确定如何划分了。第一,需要在能力范围内,并且相应的任务权利与义务对等;第二,切分是内部活动,内部无论如何切分,对整个系统的外部应该是透明的。也是说,切分的目的不是为了分割,而是为了更好的融合,为了达到整体效益的最大化。