架构的产生是由于人的能力有限,从而产生了分工,人人各司其职,通过沟通来获得生活的必须品,这就产生了架构。架构就是把一个整体切分成不同的部分,由不同角色来完成这些分工,并通过建立不同部分相互沟通的机制,使得这些部分能够有机的结合为一个整体,并完成这个整体所需要的所有活动。架构解决的是人的问题。做好架构的能力,首先要对系统有正确的概念,有正确的理解,才能了解问题的本质。
做好架构首先需要做的就是识别出需要解决的问题,而解决问题首先要识别问题的主体,即产生问题的主体。一旦确定了主体,就去搞明白主体有哪些问题。软件架构就是解决别人问题的。架构需要对整体进行切分,切分就是对利益的调整。切分就是明确地去界定每个人工作的责任和权利。当系统的利益相关人的责任和权力产生了问题,就需要构架去重新切分,从未确保每个人的利益。切分的原则:1、必须在连续时间内发生的一个活动,不能切分。2、切分出来的部分的负责人,对这个部分的权利和义务必须是对等的3、切分出来的部分,不应该超出一个自然人的负载。4、切分是内部活动,内部无任怎么切,对整个系统的外部应该是透明的。切分架构的输出是一个系统的模型,明确的界定了功能的边界,每个相关人的权利和义务。
软件就是现实世界的一个模拟,使用来解决人们日常生活中的问题的。软件架构是将软件的工作进行拆分、分解,以更好更快的解决人们问题的。软件的架构分为部署的架构和代码的架构。部署的架构就是可以将软件拆分部署到不同的机器上,仍可以正常运行。代码的架构就是软件工作人员的分工,使之可以独立的完成代码的某个部分。成为软件架构师需要我们有足够的自信,克服时间恐惧和压力,把完成别人工作当成自己的最大利益。
架构师是要去平衡别人的利益,甚至会调整别人的利益的。架构师需要有着对技术熟练的运用,因为需要应用技术解决别人的问题,但更重要的是对问题的分析和解决问题的能力。我们真正想快速的完成代码工作,就要克服自己对时间的恐惧,真正的去研究业务的问题,相关人的利益,把这个变成我们的习惯。技术是为了解决业务的问题而产生的,没有了业务,技术就没有了存在的前提。有了更好的技术,效率更差的技术,就会慢慢的被淘汰,消失,一切都遵从人类的利益诉求——也就是业务。不同的技术组合在一起,形成一个完整的架构解决方案,共同完成业务的目标。准确识别采用什么技术的能力,也是架构师所要具备的能力之一。考虑的主要因素也是长期的成本和收益。