一、 什么是架构
听到架构这个词,我的第一反应是做项目用什么架构,框架等等,心中没有明确的定义。专栏作者通过类比,简单的例子的引出了产生架构的动力与定义,使我对架构有个大概的认识。
最早时期的人独自生活,力量有限,会有以下问题:
1、任何事要人的参与
2、人的能力有限
3、时间有限
4、对生存质量的要求提高
5、对生存产生经验的总结,思考。
基于以上几点,分工出现,族群出现,人只需做自己擅长的事,具备交易能力即可。这便是社会架构的动力,同理可以推出软件架构的动力。
人类最开始住山洞,为了面对生产的挑战,人类开始:
1、建立隔离空间的设施。
2、但要有门窗保持与自然的沟通
3、生活的各个部分到室内后,就产生了不同空间的分割
4、族群出现,人类开始有意识设计不同功能的房子
5、建筑的架构出现
总结一下,什么是架构:
1、根据要解决的问题,对目标系统的边界进行界定。
2、并对目标系统按某个原则的进行切分。切分的原则,要便于不同的角色,对切分出来的部分,并行或串行开展工作,一般并行才能减少时间。
3、并对这些切分出来的部分,设立沟通机制。
4、根据3,使得这些部分之间能够进行有机的联系,合并组装成为一个整体,完成目标系统的所有工作。
架构实际上就是指人们根据自己对世界的认识,为解决某个问题,主动地、有目的地去识别问题,并进行分解、合并,解决这个问题的实践活动。架构的产出物,自然就是对问题的分析,以及解决问题的方案。
二、 认识“概念”
架构实际上解决的是“人”的问题,而概念是“人”认识这个世界并用来沟通的手段。作者举了“杯子”的“名相”。杯子为”名“,作用为“相”。
“杯子”是用来标识物件作用的,用来交流的。要解决问题就需要作用,为交流就有了“相”。
杯子作用其实是为了解决“人需要一个可单手持握,但是希望避免直接接触所盛物体”这个问题。概念实际上所解决的,还是人遇到的某个特定的问题,我们把解决问题的解决方案,给定了一个名字,这个名字就是对应的某个特定的概念。
作者还对抽象有独到的见解。相似的部分抽象之后形成的是一个新的概念,和原来那个概念并不一样,所解决的问题也不一样。杯子是杯子,容器是容器它们所解决的问题是不一样的
所以要做好架构,首先就要能够正确的认识概念,能够发现概念背后所代表的问题,进而才能够认识目标领域所需要解决的问题,才能做好架构。
三、 架构识别
做好架构首先需要做的就是识别出需要解决的问题。一般来说,如果把真正的问题找到,那么问题就已经解决了80%了。这个能力基本上就决定了架构师的水平。
例子:(人)切一半土豆,切(土豆)的一半。出现错误.
处理问题的常见错误:
1.被告知要处理一个问题,但是交过来的实际上是一个解决方案,不是问题本身
2.被告知要处理一个问题,直接通过直觉就有了一个解决方案,马上考虑解决方案如何落地,或者有几种解决方案,选哪个合适。架构师在处理问题时,如果致力于把自己的工作完成,要马上警惕只有真正明白了是谁的问题,才能够真正地完成自己的任务,真正地把自己的问题解决掉,而不是反过来。
找出问题的主体,是做架构的首要问题:
1.找到概念的”主语“确定问题的边界。谁的问题?
2.一旦确定了主体,剩下的就是去搞明白主体有哪些问题。有什么问题?
四、架构切分
很多时候问题的产生都是因为沟通的误解,或者主观上有很多不必要的利益诉求导致的。但是总还有一部分确实是有问题的,需要做调整,这个调整就是架构的切分。
分工的出现产生了一个互相依赖的社会,互相谁都离不开谁(但会导致人的负载过重)。切分就是利益的调整。动力就是人们对自己利益的渴望。
切分的原则:
1、必须在连续时间内发生的一个活动,不能切分。(时间上的负载)
2、切分出来的部分的负责人,对这个部分的权利和义务必须是对等的。(利益维护)
3、切分是内部活动不会影响系统解决的问题。(系统透明)
切分就是建模的过程
架构切分的最终结果都会体现在组织架构上,只有这样才能够让架构落地并推进。
架构切分的结果一定是一个树状,这也是为什么会产生分层。层数越多沟通越多,效率越低,分层要越少越好。尽可能变成一颗平衡树,才能让整个系统的效率最大化。
原文:https://www.cnblogs.com/luohaochi/p/11053545.html