软件架构师如何工作
如果要思考软件架构师如何工作,首先你就要思考:到底什么是架构。
首先架构的定义是什么呢?软件架构是指在一定的设计原则基础上,从不同角度对组成系统的各部分进行搭配和安排,形成系统的多个结构而组成架构,它包括该系统的各个组件,组件的外部可见属性及组件之间的相互关系。
他是怎样产生的呢?首先一件工作需要人来完成而人的时间精力能力等是有限的,并且人们不满足于现状,追求更高的层次,个人不能更好的完成。
所以我们也就的得到了架构的含义。
1. 根据要解决的问题,对目标系统的边界进行界定。
2. 并对目标系统按某个原则的进行切分。切分的原则,要便于不同的角色,对切分出来的部分,并行或串行开展工作,一般并行才能减少时间。
3. 并对这些切分出来的部分,设立沟通机制。
4. 根据3,使得这些部分之间能够进行有机的联系,合并组装成为一个整体,完成目标系统的所有工作。
那么我们怎样去理解架构呢?
首先我们要知道架构实际上就是为了要解决人的问题。那么理解一些基础的问题也就成为了理解架构的关键。概念也就是我们通过解决问题解决完成后给定一个名字来指代。就像我们所认识的架构就是一种特定的概念。一组解决完问题的方法集合。回过头来,根据架构的定义,要做好架构所首先必须具备的能力,就是能够正确的认识概念,能够发现概念背后所代表的问题,进而才能够认识目标领域所需要解决的问题,这样才能够为做好架构打好基础。
我们都认为工作也就是解决问题。那么解决问题之前就要识别问题。正确而准确的识别问题更是关键。所以我们在识别问题之前首先应该问自己两个问题也就是:这是谁的问题?有什么问题?问题一更是重中之重,一旦我们知道了这是谁的问题之后就会变得非常容易。
在识别出是谁的问题之后,会发现,在大部分情况下,问题都迎刃而解,不需要做额外的动作。很多时候问题的产生都是因为沟通的误解,或者主观上有很多不必要的利益诉求导致的。但是总还有一部分确实是有问题的,需要做调整,那么就必须要有所动作,做相应的调整。这个调整就是架构的切分。切分也就是利益的调整。架构的切分的导火索是人的负载太重。
架构的切分实际就是对stakeholder的利益进行切分或合并,使得每个stakeholder的权责是对等的,每个stakeholder可以为自己的利益负责。
架构切分的最终结果都会体现在组织架构上,只有这样才能够让架构落地并推进。
架构切分的结果一定是一个树状,这也是为什么会产生分层。层数越多沟通越多,效率越低,分层要越少越好。尽可能变成一颗平衡树,才能让整个系统的效率最大化。
当我们认识清楚结构的东西后我们一样要知道什么是软件。程序从早期由一个人完成,也逐渐变成了由很多不同角色的人共同合作来完成。变得更加需要多个人来协作完成一个软件。如同前面描述的架构的定义,软件架构的出现也是同样的。一开始是懵懵懂懂的去写软件,后来慢慢的就有意识的去切分,演变成了不同的架构。这个背后的动力也是一样的,就是提升参与的人的利益,降低成本。导火索也是软件工程师的任务太重,我们需要把很多工作拆分出来。拆分的原则也是一样的,如何让权责一致。
那么到底什么又是架构师呢?架构师是要去平衡别人的利益,甚至会调整别人的利益的。架构师必须是一个组织的领导人,有权利调动这个组织的架构,才能够更好的发挥架构师的作用,更好的把利益的调整落到实处。具备架构师能力的组织领导人,一定是一个很好的领导,这个组织一定是很健康向上的,因为每个人的权利和义务就是比较均等的。架构师的义务也就是发现并解决问题。准确识别采用什么技术的能力,也是架构师所要具备的能力之一。考虑的主要因素也是长期的成本和收益。