软件架构师如何工作
- 原文链接(转载请注明出处):软件架构师如何工作
前言
要想了解软件架构师如何工作,首先要搞清楚这么几个问题:什么是架构,怎样理解架构,如何做好架构,什么是软件,什么是软件架构师,软件架构师的工作是什么,怎么理清技术、业务和架构三者的关系。资深架构师王概凯在《架构漫谈》系列专栏中一一给出了这些问题的答案。本文也是本人阅读《架构漫谈》时所做的笔记与思考。
什么是架构
什么是架构,为什么会产生架构,作者由人类社会的演化,人类社会中分工的出现来引入问题的答案。把一个整体(完成人类生存的所有工作)切分成不同的部分(分工),由不同角色来完成这些分工,并通过建立不同部分相互沟通的机制,使得这些部分能够有机的结合为一个整体,并完成这个整体所需要的所有活动,这就是架构。为什么会产生构架,对于人类社会而言,由于人群的生产力提高,人类学会了越来越多的技术,但是不可能一个人都会这些新的技术,所有就产生了分工,一旦产生了分工,就把所有的事情切分成不同人去完成,从而以更高的效率来认识世界以及改造世界。这实际上形成了社会的架构,它是人类发展过程中,由懵懵懂懂的,被动的去认识这个世界,变成主动的去认识,并以更高的效率去改造这个世界的方法。而在现如今生活中而言,架构实际上就是指人们根据自己对世界的认识,为解决某个问题,主动地、有目的地去识别问题,并进行分解、合并,解决这个问题的实践活动。
怎么理解架构
怎样理解架构呢,作者讲到,认识概念是理解架构的基础,那么问题又来了,什么是概念,怎么理解概念。一般认为,概念属于人认识这个世界并用来沟通的手段,这个问题的概念是抽象的,就像面向对象里面的类与对象之间的关系。根据架构的定义,要做好架构所首先必须具备的能力,就是能够正确的认识概念,能够发现概念背后所代表的问题,进而才能够认识目标领域所需要解决的问题,这样才能够为做好架构打好基础。
如何做好架构
如何做好架构,作者从两个方面来谈。首先是识别问题,这里需要的不仅仅是沟通能力,还有你对问题的定位问题,问题的主体是谁,这是识别问题的关键也是最难的地方,在这之中,我们要明白我们要解决的都是人的问题。在识别问题之后,我们要做的就是利益的切分,所谓的利益的切分,就是平均好在解决这个问题的过程中所有人员的自身利益。要做到权利与义务的对等。这其实就是一个建模的过程,并且是一个树状的模型,是一个分层的模型,要做好架构,必须让所建的模型树是一颗平衡树,让整个系统的效率最大化,让每个人的利益最大化。
什么是软件
什么是软件,这个问题来到了计算机,程序这些概念上来,软件的主要目的,是把人类的生活模拟化,虚拟化,提供更低成本,高效率的新的生活。软件主要依赖的是人类几千年来的生活知识,软件的出现也是为了解决人的问题,刚开始的时候,一个人就能写出一个非常出色的软件,但是随着人们需求的日益增加,人类想通过软件来解决的问题越来越多,导致软件写的越来越大,再加上一些新的语言,技术出现,一个人难以开发如此庞大的软件,开发软件需要几个人,或者更多的人一起合作,并且在开发过程中各司其职。一开始是懵懵懂懂的去写软件,后来慢慢的就有意识的去切分,于是演变成了不同的软件架构。而对软件需求,问题进行识别切分,对系统进行设计的人就称之为软件架构师。
什么是软件架构师
但是做架构的并不都叫架构师,架构师是以解决问题为自己的工作,并且这个问题是别人的问题。架构师是要去平衡别人的利益,甚至会调整别人的利益的。这就要求架构师有非常强的影响力。从具体来说,软件架构师要做的就是从做好架构出发,让软件工程师写好代码,架构师对需求以及问题做好了分析和切分之后,设计系统框架,然后程序员按照框架来编写代码,如果最终编写出来的软件不能用来解决用户的需求或者问题,或者太复杂繁琐,说明在整个系统架构是上出现了问题,而一个好的架构师则会充分做好软件架构,包括代码架构以及承载代码运行的硬件部署架构,设计出来的框架会真正的解决各方的问题包括自己的。
怎么理清技术、业务与架构的关系
一个好的软件架构师,技术、业务和架构这三者之间的关系一定理解的十分清楚。作者讲到,技术是为了解决业务的问题而产生的,没有了业务,技术就没有了存在的前提;有了更好的技术,效率更差的技术,就会慢慢的被淘汰,消失,一切都遵从人类的利益诉求--也就是业务。做为软件架构师,其主要角色应该是解决业务问题,至于技术问题应该交给技术人员,自己专注于软件本身的架构,当然在解决业务问题的过程中,软件架构师还要准确识别要采用什么技术来解决问题更加高效方便,这个能力也是软件架构师所应该具备的。考虑的主要因素也是长期的成本和收益。