《架构漫谈》读后感
阅读博客地址:王概凯 (infoq.cn)
对于软件架构,通过学习王概凯的老师的博客讲解,有了一些基础认识,并有了以下的见解与感受。
1、什么是架构?
首先什么是架构,每个专家都有自己的见解,结果发现,没有大家都认可的定义,每个人都在谈论它,但好像没有人真正了解他,架构起源于建筑行业,就算盖一个村里的房子,都要有图纸进行规划,进行预测等等的环节,软件架构就是将架构应用与软件开发的工厂中。那么什么是架构呢?从人的部落形成的例子上看:架构把一个整体(完成人类生存的所有工作)切分成不同的部分(分工),由不同角色来完成这些分工,并通过建立不同部分相互沟通的机制,使得这些部分能够有机的结合为一个整体,并完成这个整体所需要的所有活动,这就是架构。而架构产生的动力来源为:
1、必须由人执行的工作 2、每个人的能力有限3、每个人的时间有限4、人对目标系统有更高的要求目标5、系统的复杂性使得单个人完成这个系统,满足条件 2,3
架构的定义就总结为:
- 根据要解决的问题,对目标系统的边界进行界定。
- 并对目标系统按某个原则的进行切分。切分的原则,要便于不同的角色,对切分出来的部分,并行或串行开展工作,一般并行才能减少时间。
- 并对这些切分出来的部分,设立沟通机制。
- 根据 3,使得这些部分之间能够进行有机的联系,合并组装成为一个整体,完成目标系统的所有工作
认识了架构,就要进行开始操作,如何架构
2、怎么架构
1、认识概念是理解架构的基础
做好架构的基础是认识概念,不能光理解于名上,要深入的去理解它的相,在人的角度上正确把握它的概念,对于我们的软件工程,我们要针对于一个具体的事物,一个具体的问题进行架构,要充分去理解这个事物、问题的本质,要在站人的直观角度上去把握它的相,才能在做出正确的软件架构。
要做好架构所首先必须具备的能力,就是能够正确的认识概念,能够发现概念背后所代表的问题,进而才能够认识目标领域所需要解决的问题,这样才能够为做好架构打好基础。事实上,这一能力,在任何一个领域都是适用的,比如我们如果想要学习一项新的技术,如果知道这些概念所要解决的问题,学习这些新的技术或者概念就会如虎添翼,快速的入手;学习一个新的领域,也会非常的快速有效;使用这些概念来解释问题,甚至发明新的概念都是很容易的事。为什么强调这个呢,因为做架构的时候,很多时候都是在一个新的领域解决问题,必须要快速进入并掌握这个领域,然后才能够正确的解决问题。
2、如何做好架构之识别问题
我们通过架构的定义,做好架构首先需要做的就是识别出需要解决的问题。一般来说,如果把真正的问题找到,那么问题就已经解决了 80% 了。所以识别问题是很重要的环节步骤。
通过他笔下的那一个笑话:女主人公:老公,把袋子里的土豆切一半下锅。结果老公是把袋子里的每个土豆都削了一半,然后下锅。好笑,因为正常人不会这样做,但是,男主人公也确确实实完成女主人公的任务。出现这个现象是由于我们大部分时候过于关注解决问题,急于完成自己的工作,而不关心“真正的问题是什么”而造成的。当我们去解决一个问题的时候,一定要先把问题搞清楚。解决问题的关键是如何解决问题,而不是盲目解决问题,一个真正投入思考问题是什么的工程师,才可能会真正的成长为架构师。
那如何识别问题呢:找出问题的主体,是做架构的首要问题。我们要解决的问题,一定都是人的问题。架构师要解决的,基本都是别人的问题,不是自己的问题。我们一定要明白,任何找上架构师的问题,绝对都不是真正的问题。为什么呢? 因为如果是真正的问题的话,提问题过来的人肯定都能够自己解决了,不需要找架构师。架构师都要有这个自觉:发现问题永远都比解决问题来的更加重要。
要正确的认识问题,需要问两个问题:
- 这是谁的问题?
- 有什么问题?
3、如何做好架构之架构切分
为什么要进行架构的切分:很多时候问题的产生都是因为沟通的误解,或者主观上有很多不必要的利益诉求导致的。但是总还有一部分确实是有问题的,需要做调整,那么就必须要有所动作,做相应的调整。这个调整就是架构的切分
进行切分的依据:
- 架构的切分的导火索是人的负载太重。
- 架构的切分实际就是对 stakeholder 的利益进行切分或合并,使得每个 stakeholder 的权责是对等的,每个 stakeholder 可以为自己的利益负责。
- 架构切分的最终结果都会体现在组织架构上,只有这样才能够让架构落地并推进。
- 架构切分的结果一定是一个树状,这也是为什么会产生分层。层数越多沟通越多,效率越低,分层要越少越好。尽可能变成一颗平衡树,才能让整个系统的效率最大化。
标签:读后感,架构,概念,漫谈,问题,切分,架构师,解决问题 From: https://www.cnblogs.com/JIANGzihao0222/p/18047359