认识软件体系架构
什么是架构?在没有上软件体系结构之前,我一直不清楚架构的概念。通过学习软件体系结构和阅读架构漫谈,我对架构有了初步的了解和认识。架构就是将一个整体的工作分成不同的部分,然后分配各给各个不同的角色去完成,并通过建立不同部分相互沟通的机制,使得这些部分能够有机的结合为一个整体,并完成这个整体所需要的所有活动,这就是架构。架构本身就是为了解决现实生活中的实际问题而存在的,脱离了实际,架构也就没有了存在的意义。就好比说盖房子一样,建什么样的房子,就需要搭建什么样的房屋结构,总不能把建平房的那一套运用到高楼大厦吧?不同的房子有不同的架构,软件设计也是一样的道理。房子有房子的架构,音乐有音乐的架构,企业有企业的架构,同理,软件也有它自己的架构。既然如此,我们应当如何理解架构呢?架构实际上就是指人们根据自己对世界的认识,为解决某个问题,主动地、有目的地去识别问题,并进行分解、合并,解决这个问题的实践活动。
要认识软件架构,就必须要知道它能为我们做什么和它能带给我们什么样的好处。通过发现问题以及认识目标领域所需要解决的问题,这样才能够为做好架构打好基础。发现问题的本质,并应用什么样的架构,那么问题也就差不多迎刃而解了。要正确认识问题,就必须要清楚这个问题是从何而来,是由什么样的原因造成的。很多时候问题的产生都是因为沟通的误解,或者主观上有很多不必要的利益诉求导致的。但是总还有一部分确实是有问题的,需要做调整,那么就必须要有所动作,做相应的调整。这个调整就是架构的切分。切分是利益的调整。架构切分的结果一定是一个树状,这也是为什么会产生分层。层数越多沟通越多,效率越低,分层要越少越好。尽可能变成一颗平衡树,才能让整个系统的效率最大化。
既然软件架构是为了解决问题而存在的,但是它到底要解决什么样的问题呢?首先分析是谁的问题。客户需要提升业务的效率,降低业务的成本,这也是软件开发的出发点。业务相对简单,用户流量小,时间要求也不紧迫,这时不用讨论架构的问题。当访问的流量越来越大,涉及到软件本身的业务体系,工作量不断增多,工作内容不断拆分,这时,软件架构的意义就体现出来了。
在实际的软件开发过程中,大多数人认为所谓的架构是一种技术,在很多人的概念里面,架构和技术实际上是等同的。学会了几种技术,就认为学会了某种架构了。然而,任何技术都是为了解决某种问题而存在的,学会了技术,并不代表自己能够解决问题,这一点非常的重要。技术不等同于架构,学会了某种技术并不能解决实际问题。而懂得架构的人,会分析实际问题,通过采用某种架构,并运用响应的技术来解决问题。所以,架构师真正的能力是分析问题并采用某种架构和技术来解决实际问题。