软件架构第一次博客作业

  在今天之前,我可能还不知道什么是架构,什么是架构师。懵懵懂懂的只是觉得架构应该就是类似于之前我们学习过的,例如:MVC,SSH等架构。那么,到底什么是架构?今天我通过阅读架构漫谈来说说我对其的了解。

  什么是架构?《架构漫谈一》中提到架构的定义:“把一个整体(完成人类生存的所有工作)切分成不同的部分(分工),由不同角色来完成这些分工,并通过建立不同部分相互沟通的机制,使得这些部分能够有机的结合为一个整体,并完成这个整体所需要的所有活动,这就是架构。”而我自己解读的架构就是能把一个整体分成部分,保持各部分联系并完成所有任务的就是架构。之所以要使用架构,是为了能够由被动的认识这个世界变为主动的认识,并且以更高的效率改造这个世界。这可能就是架构自然而然诞生的原由。

  那么知道架构的定义还不够,想要理解什么是架构,就必须再明白概念的意义。架构实际上解决的是人的问题,而概念是人认识这个世界的基础,自然概念的认识就非常的重要。概念也属于人认识这个世界并用来沟通的手段,包括“概念”这个概念,也是一样的。在古代,不叫“概念”,称之为“名相”。一般我们认为:看到一个东西,比方说杯子,“杯子”就是一个名字,指代的看到的东西就是相,就是事物的相状。我们一听到“杯子”这个词,脑海里就会浮现出一个杯子的形象。而“杯子”这个词,是用来指代的是这个相状的,叫做名。合起来就叫做“名相”。这个作用其实是为了解决“人需要一个可单手持握,但是希望避免直接接触所盛物体”这个问题。所以说,每个概念实际上所解决的,还是人遇到的某个特定的问题,我们把解决问题的解决方案,给定了一个名字,这个名字就是对应的某个特定的概念。对于概念这个词本身,为了统一指代这些名字,我们称起这类作用的名字称为“概念”。我们上次讨论的“架构”也是是同样的一个特定概念,这里不再详述。同样,什么是“建筑”? “建筑”实际上解决的就是“人需要独占的空间,并还能够比较流畅的和外部世界沟通”的问题。抽象这个词代表的含义,实际上是把不同的概念的相似的部分合并在一起,形成一个新的概念。

  《架构漫谈三》中提到了如何做好架构之间的识别问题。所有的概念基本都有一个很大的问题,就是缺乏主语。而我们大家都心照不宣的忽略这个主语,沟通的时候也都以为大家都懂得对方说的主语是谁,结果大家都一起犯错误。识别问题的一个最大的前提就是要搞清楚:是谁的问题。这个搞清楚了,问题的边界也就跟着确定了,再去讨论问题才有意义。找出问题的主体,是做架构的首要问题。架构师要解决的,基本都是别人的问题,不是自己的问题。总结一下,要正确的认识问题,需要问两个问题:这是谁的问题?有什么问题?

  那么怎么做好架构之间的切分呢?架构的切分的导火索是人的负载太重。架构的切分实际就是对stakeholder的利益进行切分或合并,使得每stakeholder的权责是对等的,每个stakeholder可以为自己的利益负责。架构切分的最终结果都会体现在组织架构上,只有这样才能够让架构落地并推进。架构切分的结果一定是一个树状,这也是为什么会产生分层。层数越多沟通越多,效率越低,分层要越少越好。尽可能变成一颗平衡树,才能让整个系统的效率最大化。

  架构师是要去平衡别人的利益,甚至会调整别人的利益的。一旦架构师是全心全意的为别人的利益服务,自然而然的架构师就拥有了强有力的影响力,肯定会是一个leader。但是只是民意上的leader是没有用的,不能完全发挥架构师的能量。

  架构师必须是一个组织的领导人,有权利调动这个组织的架构,才能够更好的发挥架构师的作用,更好的把利益的调整落到实处。所以很多公司设了很多架构师的职位,但是并不具备调动组织架构的权利,那么这个架构师的职位一定是形同虚设。架构师只能够通过建立某些流程来行使架构师的权利,比如强制架构review,反而会造成很多内部不必要的冲突,最终都会导致这些流程流于形式,得不偿失。相信很多人都已经经历过这些,但似乎很少有人回去探讨这是为什么。

  以上就是我在阅读《架构漫谈》后对于架构以及架构师的理解。

  

原文地址:https://www.cnblogs.com/haojun/p/8523853.html