这学期新开设了软件体系架构这门课,学这门课之前架构漫谈的九篇博客进行了阅读,对这门课以及架构设计进行了初步的认识与了解。
通过对这几篇博客的阅读,首先需要明白什么是架构,在最早期,每个人有自己的生活方式,人与人之间相互独立,不相往来,随着慢慢的发展,男女共同生活,也就出现了各自的分工,有的人做这个强些,有的人做那个强些,所以就出现了多人分工配合,慢慢的就形成了人的分群,然后通过某些机制例如交易结合在一起使得每个人获得自己所需要的东西。因此,架构就是把一个整体切分成不同的部分,由不同的角色完成这些,并通过建立不同部分相互沟通的机制,使得这些部分能够有机的结合为一个整体,并完成这个整体所需要的所有活动。在切分之前要先根据要解决的问题对目标系统的边界进行判定,切分的原则要便于不同角色,对切分出来的部分,并行或串行开展工作,一般并行才可以减少时间。
架构实际上解决的是人的问题,而概念是人认识这个世界的基础,所以对于概念的认识就显得尤为重要。在古代,人们把概念称作“名相”,相就是指代看到的东西。每个概念实际上解决的是人遇到的某个特定的问题,我们对这个问题给定一个解决方案,这个解决方案的名字就是对应的某个特定的概念。要做好架构首先需要具备的能力就是要能够正确的认识概念,能够发现概念背后的问题,进而才能够在以后的目标领域正确认识所要解决的问题。根据架构定义,做好架构首先要识别出要解决的问题,一般来说,如果把真正的问题找到,那么该问题就已经解决百分之八十了。如何识别问题,有时候我们总在这个地方犯错误,识别问题最大的前提就是弄清楚要解决的是谁的问题,这样系统的边界也就随之确定了,然后再去对问题进行讨论。一般我们要解决的问题,一定都是人的问题;更进一步,架构师要解决的基本都是别人的问题,不是自己的问题;再进一步,任何找上架构师的问题绝对不是真正的问题,自己一定要明白发现问题永远比解决问题更加重要。要正确的认识问题,需要问两个问题,第一是这是谁的问题,第二是有什么问题。只有确定了这两个问题,才能找准自己接下来的方向,所以一般第一步可能会比较繁琐,架构师的能力便体现在对这个问题的识别上。
在正确识别问题后,大部分情况下我们会看到问题已经基本解决,并不需要自己去做其它多余的动作,但有时有些问题是需要我们做一些调整,这个调整的过程就是架构的切分。
切分就是利益的调整,每个人所追求的就是维护自己的利益并且使得利益最大化,这是人的本性,但每个人的时间和能力有限,这就需要自己做出一些舍弃,用自己擅长的去换取自己做不到的东西。而切分过程中需要遵循几个原则,在连续时间内发生的一个活动不能切分;切分出来的部分的负责人,对这部分的权利和义务是对等的;切分出来的那一部分不能超出一个普通人的负载;切分是内部活动,所以对整个系统外部应该是透明的。
在对架构进行了认识之后,要了解软件是怎么回事以及如何运用架构思维实现软件。软件架构的出现和架构的定义是同样的,软件工程师的职责在慢慢的发展中不堪重负,也需要拆分为不同的角色形成独特的架构体系。软件架构要解决的就是业务问题以及计算机问题,业务问题的本质是业务所服务的对象的利益问题。因此也就需要架构师的出现,架构师要平衡别人的利益甚至调整别人的利益,对于架构师来说,语言和技术作为工具应该是信手拈来的。软件实际上是对现实生活的模拟,虚拟化,需要注意,逻辑只能存在于Business中,其余不能有逻辑,否则会导致架构无法快速横向扩展和分拆,增加了修改的成本,不符合开发人员以及业务利益。
最后,需要理清业务、技术以及架构的关系。技术是为了解决业务的问题产生的,没有业务,也就谈不上技术,学会了某种技术并不代表自己一定能够解决问题。所以要作为一名架构师,要能够准确识别采用什么技术。
通过这次的阅读使得自己对于架构有了一个初步的了解,但还需要自己不断地去探索学习,才能对这些有更深的了解,为自己日后的工作提供方便。