架构漫谈读后感

  在软件行业,架构是非常重要的,架构一词很早就出现了,它最早源于建筑,它的英文是Architecture,定义为Architecture (Latin architectura, from the Greek ἀρχιτέκτων arkhitekton"architect", from ἀρχι- "chief" and τέκτων "builder") is both the process and the product of planning, designing, and constructing buildings and other physical structures。虽然这个词的解释很明显,但是每个人对这个词的看法都不同,都有自己的理解。

  简单的来说吧,架构的出现是为了提高效率,使1+1>2。架构也就是分工,每个人做自己擅长的事情,最后再有机的结合在一起,达到人们所需要的,所希望的。架构是人类发展过程中,由懵懵懂懂的,被动的去认识这个世界,变成主动的去认识,并以更高的效率去改造这个世界的方法。

  架构就是根据所需要解决的问题,对目标系统的边界进行界定,并对目标系统按照某一个原则进行切分,便于不同的角色进行自己的任务,使各个部分可以一块进行俭省时间。各个模块又要有所联系,最后在每个模块完成时进行合理有机的结合。

  认识概念是理解架构的基础。架构实际上解决的是人的问题,概念是人们认识这个世界的基础,也是用来沟通的手段,何为“相”?就是人们提到一个词就会在脑海中浮现出来的形状。

  识别问题也是架构的重要的部分。架构实际上是解决人的问题,所以找到问题是架构的最重要的部分。识别问题的最大一个前提就是要搞清楚:是谁的问题。这个问题搞清楚了,就好办了。问题的主体是很重要的。

  认清楚了问题之后,就是架构的切分。切分就是利益的调整,我们要非常的清楚,所有的切分调整,都是对相关人的利益的调整。为什么这么说呢,因为维护自己的利益,是每个人的本性,是在骨子里面的,我们不能逃避这一点。当人们认识到要主动的去切分一个系统的时候,毫无疑问,我们不能忘掉利益这个原动力。所有的切分决策都不能够违背这一点,这是大方向。

  架构是软件行业中很重要的部分,那么软件是什么呢。软件的历史,实际上可以说是用机器模拟人的历史。不管大家(包括在这个历史过程中的参与者)有没有意识到,我们都有意无意的在计算机上模仿人类的行为。随着软件的规模的变大,做好一个软件也变得越来越难了。早期的程序员写程序,主要是为了帮助自己研究课题。这些程序员熟练了之后,提高了自己的生产力,并发现还可以帮助别人写程序,慢慢软件就变成了一个独立的行业。程序从早期由一个人完成,也逐渐变成了由很多不同角色的人共同合作来完成。以下讨论的前提,都是基于帮助别人写程序,多人合作的基础上的。结论对于单人为自己写程序也适用。软件的主要目的,还是把人类的生活模拟化,提供更低成本,高效率的新的生活。从这个角度来看,软件主要依赖的还是人类的生活知识。软件更多的是扮演一个cost center,这也是为什么会出现很多的软件代工。

  软件工程师是实现这个模拟过程的关键人物,他必须先理解人是怎么在日常生活中完成工作的,才能够很好的把这些工作在计算机中模拟出来。可是软件工程师需要学习大量的计算机语言和计算机知识,还需要学习各行各业的专业知识。如同前面描述的架构的定义,软件架构的出现也是同样的。一开始是懵懵懂懂的去写软件,后来慢慢的就有意识的去切分,演变成了不同的架构。这个背后的动力也是一样的,就是提升参与的人的利益,降低成本。导火索也是软件工程师的任务太重,我们需要把很多工作拆分出来。拆分的原则也是一样的,如何让权责一致。同样,这个拆分也是需要组织架构的调整,来保证架构的落地。

  软件架构到底要解决什么问题:1.业务问题,具体的现实生活状态下,没有软件的时候,所解决的问题的主体是谁,解决的是什么问题,是如何解决,如何运作的?2.计算机问题:如何现实用软件模拟,软件是否支持扩展等等。

  要成为架构师,必须要超越这个恐惧才能够看清楚,我们要解决的是别人的问题,不是自己完成工作的问题。因为仅仅是完成了自己的工作,也并不一定就解决了别人的问题。如果别人的问题没有解决——即使我们认为自己的工作完成了——我们的工作实际也没完成,因为我们工作是否完成,是别人说了算的,不是我们自己。

架构师是要去平衡别人的利益,甚至会调整别人的利益的。一旦架构师是全心全意的为别人的利益服务,自然而然的架构师就拥有了强有力的影响力,肯定会是一个leader。但是只是民意上的leader是没有用的,不能完全发挥架构师的能量。架构师必须是一个组织的领导人,有权利调动这个组织的架构,才能够更好的发挥架构师的作用,更好的把利益的调整落到实处。

  在开发软件时,我们基本上就是在扮演上帝的角色:我们不但要创建出一个个的程序,还要让这些程序能够脱离我们在硬件上独立运行,以便为这个程序所服务的群体提供服务。当这个程序出现问题甚至bug的时候,我们还得扮演牧师的角色去修复这些问题。技术,业务和架构之间的关系要理清楚。技术总是在人类解决对业务的要求不断提高的情况下产生,目的也是为了获取更大更好的利益,技术有两种关系,1,把不可能变成可能。2.把低速变为高速。当关系1发生的时候,这个地方必定会形成一个切分,新技术会通过某种方式和原有的技术连接在一起形成一个整体,让这个新的技术可以和原有技术共同工作,使得原有的技术可以用更高的效率解决问题。不同的技术,通过树状结构,组合在一起,形成了一个完整的架构解决方案,共同完成业务的目标。这就是技术,业务和架构之间的关系。

  看了这几篇博客收货很大,值得去认真思考反复理解。

posted @ 2018-03-08 19:58  贼帅的火柴人  阅读(119)  评论(0编辑  收藏  举报