架构漫谈读后感之软件架构师如何工作

  这学期开始学习软件架构,通过阅读王概凯架构漫谈九篇博客,对软件架构有了进一步的了解。感觉学习了架构之后,能对自己的学习和实践有更大的帮助。架构漫谈主要从什么是架构、认识概念是理解架构的基础、如何做好架构之识别问题、如何做好架构之架构切分、什么是软件、软件架构到底是要解决什么问题、不要空设架构师这个职位,给他实权、从架构的角度看如何写好代码、理清技术、业务和架构的关系这九个方面来介绍软件架构。

  首先要了解到底什么是架构。在刚开始是没有架构的,在社会发展的过程中就逐渐形成了社会的架构。把一个整体切分成不同的部分,由不同角色来完成这些分工,并通过建立不同部分相互沟通的机制,使得这些部分能够有机的结合为一个整体,并完成这个整体所需要的所有活动,这就是架构。总的来说架构就是:根据要解决的问题,对目标系统的边界进行界定。并对目标系统按某个原则的进行切分。切分的原则,要便于不同的角色,对切分出来的部分,并行或串行开展工作,一般并行才能减少时间。并对这些切分出来的部分,设立沟通机制。根据,使得这些部分之间能够进行有机的联系,合并组装成为一个整体,完成目标系统的所有工作。

  只有熟悉了架构的概念才能更好的理解架构。每个概念实际上所解决的,还是人遇到的某个特定的问题,我们把解决问题的解决方案,给定了一个名字,这个名字就是对应的某个特定的概念。抽象这个概念是很重要的,在做架构师的群体中,不谈抽象好像就不是一个合格的架构师。根据架构的定义,要做好架构所首先必须具备的能力,就是能够正确的认识概念,能够发现概念背后所代表的问题,进而才能够认识目标领域所需要解决的问题,这样才能够为做好架构打好基础。在做架构的时候,很多时候都是在一个新的领域解决问题,必须要快速进入并掌握这个领域,然后才能够正确的解决问题。

  作为软件工程师或者架构师,我们大部分时候是要去解决别人的问题。架构师在解决问题时候,找出问题的主体,是做架构的首要问题。更进一步,架构师要解决的,基本都是别人的问题,不是自己的问题。架构师都要有这个自觉:发现问题永远都比解决问题来的更加重要。一旦确定了主体,剩下的就是去搞明白主体有哪些问题。这个就比较直接了,常用的方式就是直接面对主体进行访谈,深入到主体的工作生活当中,体验并感受这些问题,甚至通过数据的反馈来定位问题。从问题暴露的点,一点点去溯源查找,一定会找出来谁的问题,以及是什么问题。总的来说要正确的认识问题,需要问两个问题:这是谁的问题?有什么问题?

  在识别出是谁的问题之后,需要做调整,那么就必须要有所动作,做相应的调整。这个调整就是架构的切分。切分就是利益的调整。所有的切分决策都不能够违背这一点,这是大方向。切分要掌握必要的一些原则:确保我们不能违反人性,因为维护自己的利益,是每个人的本性。只有权利和义务对等才能做到这一点。所有的架构分拆,都应该是形成树状的结果,不应该变成有向图,更不应该是无向图实际上切分的过程就是建模的过程,每次对大问题的切分都会生成很多小问题,每个小问题就形成了不同的概念。软件架构师了解清楚架构之后也要认识什么是软件。软件其实就是在计算机上以模拟人为目标,在计算机硬件上编写出的,用来控制硬件行为的程序。有了软件之后,实际上,我们是把我们日常生活中所做的事情,包括我们自己本人都一起虚拟化到了计算机中。而人则演化成了,通过计算机的输入输出设备,控制计算机中的自己,来完成日常的工作,以及与其他人的沟通。成本是我们使用软件的主要动力,可以减少大量的人员培训,减少雇员的数目。不管如何发展,模拟人的所有行为都是一个大的趋势。软件实际上是对现实生活的模拟,虚拟化。也就是说,软件的主要目的,还是把人类的生活模拟化,提供更低成本,高效率的新的生活。从这个角度来看,软件主要依赖的还是人类的生活知识。软件工程师的职责在这个浪潮中,不堪重负,自然而然就分拆为不同的角色,形成了一个独特的架构体系。

  软件架构实际上包括了:代码架构,以及承载代码运行的硬件部署架构。从架构的角度写好代码,逻辑的出现要分对地方。技术总是在人类解决对业务的要求不断提高的情况下产生,目的也是为了获取更大更好的利益。技术是为了解决业务的问题而产生的,没有了业务,技术就没有了存在的前提。也就是说,一般是先有技术,才会有架构。

  软件架构师在工作中是要去平衡别人的利益,甚至会调整别人的利益的。一旦架构师是全心全意的为别人的利益服务,自然而然的架构师就拥有了强有力的影响力,肯定会是一个leader。架构师必须是一个组织的领导人,有权利调动这个组织的架构,才能够更好的发挥架构师的作用,更好的把利益的调整落到实处。架构师的义务就是发现问题并且解决问题。架构师还必须要明白,所给出的解决方案架构的分拆、合并方案,只有让问题的主体的权责对等,才能够真正的解决别人的问题。一般明白了问题的主体,以及主体的利益所在,做到这一点也没有问题。架构师对于技术和语言也要熟悉。因为技术和语言,都是用来识别和解决所服务的主体的权责,保护并提升所服务的主体的权利的。最后准确识别采用什么技术的能力,也是架构师所要具备的能力之一。考虑的主要因素也是长期的成本和收益。通过这九篇博客,对于架构师有了进一步的了解。我总结了架构师在工作中应该注意的问题。和架构师在工作中应该如何解决问题。

 

  

原文地址:https://www.cnblogs.com/kangy123/p/8524985.html