要学好软件架构,首先要解决的问题就是什么是架构。一直以来,在软件行业,对于架构的定义都有争议,很多人都在讨论架构,但是很多人都不知道到底什么是架构。很多大佬都对这个架构有争议了,像我这种还没出师的菜菜鸟就更不用说了,更是对软件架构没有什么理解。
在读过王概凯老师的《架构漫谈》之后才有所了解,文章中写到:把一个整体切分成不同的部分,由不同角色来完成这些分工,并通过建立不同部分相互沟通的机制,使得这些部分能够有机的结合为一个整体,并完成这个整体所需要的所有活动,这就是架构。
根据我的理解,架构就是把一个大的复杂的问题,根据一个原则把它切分开,便于不同的角色来完成它,不同的角色不同的分工,同时进行工作,就能大大减少工作时间,提高工作效率,每个角色各司其职完成自己的任务,最后再将这些部分整合起来,完成全部工作。简单来说,就是分解和合并。架构使得每个角色能发挥出各自的长处,节省了时间的投入,提高了工作效率和质量。
第二部分主要谈到了关于概念和抽象的问题。正确的认识概念是做好架构首先必须具备的能力,而抽象就是把不同的概念的相似的部分合并在一起,形成一个新的概念。有效的认识概念,明白概念背后的含义,以及利用对概念的理解,快速的进行学习,有利于帮助我们在架构阶段,快速的识别和定位问题,找到问题的所在,这是架构的起始。
在看到第三部分之前,我以为做架构最重要的工作是切分的部分,读完之后才发现自己的理解还是有错。一个架构师的水平高低,其实是看他识别问题的能力。找到事情的真正问题所在才能真正的解决问题,找到问题才能确定解决方案,问题一旦不明确,解决方案必然不能达到用户满意,很多软件开发过程中与用户之间的问题可能就出在这个方面吧。
虽然找问题这个事情听起来很简单,好像人人都能行,其实不然,要找到事情真正的问题是不容易的,我们经常在这个过程中犯错,导致每个人都做了很多工作却无法解决问题。所以要正确的认识问题是有方法的,要找到是谁的问题,到底是什么问题。找到问题的主体对于确定系统的边界很重要,主体一旦找错,系统边界也会跟着出错,后续的工作便一错再错。找到问题的主体是重点,接下来就是找到具体的问题是什么,然后解决问题。至此,才能开始切分工作。