-
什么是架构 #
架构这个词在软件出现之前就存在,它源于建筑行业。实际上当人们产生分工,就形成了社会的架构。
王概凯把架构的定义为:把一个整体(完成人类生存的所有工作)切分成不同的部分(分工),由不同角色来完成这些分工,并通过建立不同部分相互沟通的机制,使得这些部分能够有机的结合为一个整体,并完成这个整体所需要的所有活动,这就是架构。
架构的目的是为了满足人的越来越高的需求,提升质量,减少时间。实际上解决的是人的问题。
-
如何做好架构#
1.正确认识概念:
人类有何多种语言,但是不同的语言之间可以进行翻译,是因为虽然语言不同,但是人类所面临的的问题是一样的,所使用的名不同而已。要做好架构所首先必须具备的能力,就是能够正确的认识概念,能够发现概念背后所代表的问题,进而才能够认识目标领域所需要解决的问题,这样才能够为做好架构打好基础。
2.识别问题
一般来说,如果把真正的问题找到,那么问题就已经解决了 80% 了。这个能力基本上就决定了架构师的水平。一个软件工程师或者架构师,大部分时候是要去解决别人的问题,“别人”是谁,是值得好好思考的。找到问题后一定要识别这是谁的问题,然后再去讨论问题才有意义。
3.利益的切分
解决问题时所做的调整叫做架构的切分,切分都是对相关人的利益调整。因为每个人的时间是有限的,如何使人在有限的时间内做出更多的事情这就需要架构师来进行调整。架构的切分实际就是对 相关人的利益进行切分或合并,使得每个相关人的权责是对等的,每个相关人可以为自己的利益负责。
-
理清技术、业务和架构的关系#
1.什么是技术
漫谈九中给出了一个钻木取火的例子,业务目标是为了取火,钻木取火这个技术的出现解决了这个问题。任何技术都是为了解决某种问题而存在的,学会了技术,并不代表自己能够解决问题,这一点非常的重要。学会的技术的多少,所带来的差别只是自己解决问题的手段多了罢了。不能认为学习的技术越多,自己的水平就越高。
2.技术人员和业务人员的关系
由于技术人员很多时候关心的技术,和业务的主要目标往往不是直接对应的,业务也是负责某一部分的业务,也不是和业务的主要目标直接对应的,都是树的分支节点。在软件行业,根节点技术就是软件, 所以架构师要认识软件。
架构师应该承担起解决业务问题的这个角色来,专注于 Business Domain 和软件本身的架构,让技术人员致力于为业务在计算机中跑起来而努力。只有把这两者很好的结合起来,才能更好地完成业务的目标,才会让软件更好地服务于大家。最终一定会得到一个很好的软件架构,令软件开发团队和业务部门都能够很好地开展工作并降低成本。
-
什么是软件架构师#
架构师必须是一个组织的领导人,有权利调动这个组织的架构,才能够更好的发挥架构师的作用,更好的把利益的调整落到实处。
架构师的工作是要让事情权责对等起来,让每个人为自己的权利产生的结果负有义务,大部分时候问题就自然都解决了。架构解决的是人的利益问题。这就要求架构师有非常强的影响力。从具体来说,软件架构师要做的就是从做好架构出发,让软件工程师写好代码,架构师对需求以及问题做好了分析和切分之后,设计系统框架,然后程序员按照框架来编写代码,如果最终编写出来的软件不能用来解决用户的需求或者问题,或者太复杂繁琐,说明在整个系统架构是上出现了问题,而一个好的架构师则会充分做好软件架构,包括代码架构以及承载代码运行的硬件部署架构,设计出来的框架会真正的解决各方的问题包括自己的。
-
软件架构师的工作 #
作为软件架构师,软件当然是重中之重,软件架构的出现也是同样的。一开始是懵懵懂懂的去写软件,后来慢慢的就有意识的去切分,演变成了不同的架构。这个背后的动力也是一样的,就是提升参与的人的利益,降低成本。导火索也是软件工程师的任务太重,我们需要把很多工作拆分出来。拆分的原则也是一样的,如何让权责一致。
软件的本质,其实就是通过把人类的日常工作生活虚拟化,减少成本,提升单个人员的生产力,提升人类自己的利益。软件工程师的职责在这个浪潮中,不堪重负,自然而然就分拆为不同的角色,形成了一个独特的架构体系。这一切的背后,仍然是为了提升人类自己的利益,解决人类自己的问题。
软件架构师,就是为了更好地完成这个过程