首先来看,什么是架构?为什么会出现架构?
文章中是这么说的。在每个人都必须自己完成所有生活必须品的生产的时候,是没有架构的(当然在个人来讲,同一时刻只能做有限的事情,在时间上还是可能会产生架构的)。一旦产生的分工,就把所有的事情,切分成由不同角色的人来完成,最后再通过交易,使得每个个体都拥有生活必须品,而不需要每个个体做所有的事情,只需要每个个体做好自己擅长的事情,并具备一定的交易能力即可。
这实际上就形成了社会的架构。怎么定义架构呢?把一个整体(完成人类生存的所有工作)切分成不同的部分(分工),由不同角色来完成这些分工,并通过建立不同部分相互沟通的机制,使得这些部分能够有机的结合为一个整体,并完成这个整体所需要的所有活动,这就是架构。总的来说,架构就是根据要解决的问题,对目标系统的边界进行界定。并对目标系统按某个原则的进行切分。切分的原则,要便于不同的角色,对切分出来的部分,并行或串行开展工作,一般并行才能减少时间。并对这些切分出来的部分,设立沟通机制。使得这些部分之间能够进行有机的联系,合并组装成为一个整体,完成目标系统的所有工作。
其次就是架构解决的是人的问题,我们要做好认识概念是理解架构的基础,做好架构的识别问题、架构的架构切分问题。对于如何做好识别,从文章中可以看到,找出问题的主体,是做架构的首要问题。解决的问题,一定都是人的问题。我们要确定问题的隐含边界,确定问题的主题,才能更好的做好架构的识别问题。一般来说,从问题暴露的点,一点点去溯源查找,一定会找出来谁的问题,以及是什么问题。最坏情况就是当我们时间或者能力有限,实在是无法定位出是谁的问题的时候,比如系统出故障,也就意味着我们无法根本解决问题。这时最好的办法就是去降低问题发生所带来的成本,尽量去隔离问题影响的范围。给我留出时间和空间去识别真正的问题。
对于架构的切分,切分就是利益的调整,不同的人干的活不同,当然分到的利益就不同,每个人都希望把自己的利益最大化。所以自然需要舍掉一些自己不擅长的东西,用自己擅长的东西去换取别人擅长的东西。如何切分,切分的原则是什么?必须在连续时间内发生的一个活动,不能切分。切分出来的部分的负责人,对这个部分的权利和义务必须是对等的。切分出来的部分,不应该超出一个自然人的负载。切分是内部活动,内部无任怎么切,对整个系统的外部应该是透明的。实际上切分的过程就是建模的过程,每次对大问题的切分都会生成很多小问题,每个小问题就形成了不同的概念。最后问什么要切分,导火索便是人的负重太多。架构切分的最终结果都会体现在组织架构上,只有这样才能够让架构落地并推进。架构切分的结果一定是一个树状,这也是为什么会产生分层。层数越多沟通越多,效率越低,分层要越少越好。尽可能变成一颗平衡树,才能让整个系统的效率最大化。
什么是软件,什么是架构师?如何写好代码?
在硬件上编写出的程序,就是软件,是用来控制硬件的行为的。程序从早期由一个人完成,也逐渐变成了由很多不同角色的人共同合作来完成。软件的主要目的,还是把人类的生活模拟化,提供更低成本,高效率的新的生活。从这个角度来看,软件主要依赖的还是人类的生活知识。前面说了架构的问题,同样软件中也会出现架构,随着工程师的任务越来越多,便出现了架构来调整分工。对于架构师这个职位,架构师是要去平衡别人的利益,甚至会调整别人的利益的。一旦架构师是全心全意的为别人的利益服务,自然而然的架构师就拥有了强有力的影响力,肯定会是一个 领导者。架构师必须是一个组织的领导人,有权利调动这个组织的架构,才能够更好的发挥架构师的作用,更好的把利益的调整落到实处。有了好的软件架构,那如何将架构落地。这个时候便是写代码。软件架构实际上包括了:代码架构,以及承载代码运行的硬件部署架构。实际上,硬件部署架构最终还是由代码的架构来决定。因为代码架构不合理,是无法把一个运行单元分拆出多个来的,那么硬件架构能分拆的就非常的有限,整个系统最终很难长的更大。我们需要把代码分为不同的部分,明确责任,表达业务逻辑的代码。和对用户提供访问并保存业务逻辑运行结果的代码。要有业务的逻辑,划分不同的责任。
最后就是,技术、业务、架构的关系。
技术是为了解决业务的问题而产生的,没有了业务,技术就没有了存在的前提。有了更好的技术,效率更差的技术,就会慢慢的被淘汰,消失,一切都遵从人类的利益诉求–也就是业务。在产生新技术的同时,必定会产生切分新技术会通过某种方式和原有的技术连接在一起形成一个整体,让这个新的技术可以和原有技术共同工作,使得原有的技术可以用更高的效率解决问题。这就产生了架构,不同的技术,通过树状结构,组合在一起,形成了一个完整的架构解决方案,共同完成业务的目标。这就是技术,业务和架构之间的关系。
标签:架构,代码,漫谈,技术,问题,切分,架构师 From: https://www.cnblogs.com/mine-my/p/18046748