品《架构漫谈》
经过观摩了九篇《架构漫谈》博客后,从中学到了很多软件体系架构的知识,从此盖在架构上神秘面纱被掀开了,下面我将体会到的几点感悟与大家分享:
首先为何会产生架构?当人们对人类生存所做出的工作进行分工合作时,此时就产生了架构。那么架构是什么呢?把一个整体(完成人类生存的所有工作)切分成不同的部分(分工),由不同角色来完成这些分工,并通过建立不同部分相互沟通的机制,使得这些部分能够有机的结合为一个整体,并完成这个整体所需要的所有活动,这就是架构。架构是根据要解决的问题,对目标系统的边界进行界定;并对目标系统按某个原则的进行切分;并对这些切分出来的部分,设立沟通机制;最后根据沟通机制,使得这些部分之间能够进行有机的联系,合并组装成为一个整体,完成目标系统的所有工作。接下来就是识别架构,要想很好的识别架构,那么要搞清楚2个问题,其一是“这是谁的问题?” ,其二是“有什么问题?”。明白了问题的主体,就知道了要解决问题的边界约束,那么随之就可以目标明确的去解决问题了。
做好了架构识别后,接下来就需要进行架构了,但是架构毕竟是人来进行的,故必然会涉及到利益问题,为此采取的策略是对架构进行切分。对架构进行切分需要禀行一下几个原则:不能切分一个必须在连续时间内发生的活动;切分出来的负责人对此部分享有平等的权利和义务;切分出来的部分不可超过一个人的负载;切分对整个系统外部应是透明的。
软件架构其实需要解决两个问题,一个是业务问题,另一个是计算机问题。业务问题的本质,是业务所服务的对象的利益问题,明白之后才能搞清业务的概念和组织方式。软件架构需要软件的组织架构和流程来保障,其目标是完成业务在计算机中的虚拟化。
当我们所做的工作是处于社会的分工的一环,需要帮助别人解决问题,并且按时解决别人的问题成为我们自己的问题的时候,我们就有了时间压力,潜意识里会自然而然的有一种对时间的恐惧。这个恐惧在潜意识里面会想方设法推动我们采用各种手段,以便及时的完成工作,换取报酬。作为架构师必须要超越这个恐惧,只有把完成别人工作当成自己的最大利益,才能成为合格的架构师。
软件实际上是对现实生活的模拟,虚拟化,这决定了代码应该分为两部分,即表达业务逻辑的代码和对用户提供访问并保存业务逻辑运行结果的代码。要想快速的完成代码工作,就要克服自己对时间的恐惧,真正的去研究业务的问题,相关stakeholder的利益,把这个变成我们的习惯。写代码的时候让该出现逻辑的地方出现逻辑,让不该出现的地方不能出现。
最后一点,但也是最重要的一点,就是理清技术与架构以及与业务之间的关系:技术是为了解决业务的问题而产生的,没有了业务,技术就没有了存在的前提;一切技术都得遵循人类利益的诉求--业务;一般先有技术,才有架构,不同的技术通过树状结构组合在一起,便形成了一个完整的架构解决方案,以便共同完成业务的目标。当然作为软件架构师,只有具备了准确识别采用什么技术的能力,才能和技术人员较和谐的实现业务目标,达到最终的目的!