一直以来,在软件行业,对于什么是架构,都有很多的争论,每个人都有自己的理解。甚至于很多架构师一说架构,就开始谈论什么应用架构、硬件架构、数据架构等等。我曾经也到处寻找过架构的定义,请教过很多人,结果发现,没有大家都认可的定义。近几天,阅读了王概凯的架构漫谈,才上我更好的理解什么是架构,以及如何应用架构更好的完成一个软件。
什么是架构
要想理解什么是架构,我们先来了解一下为什么产生架构,在人类社会发展初期,整体生产力水平低下,我们完成的主要任务就是简单的建造一个简易房屋,狩猎和对食物的简单加工以及人类的后代繁衍,这些基础的生产生活活动对于人类之间的合作,沟通要求不太严格,但随着社会的发展,人类的物质生活越来越丰富,社会的结构越来越复杂,这就导致社会的分层越来越明显,这就导致每个人要想获得生存所需要的所有事情如果只靠自身能力就显得不切实际,这也就导致人员实现了分工,一旦实现了分工,就把所有的事情,切分成由不同的角色的人来完成,最后在通过交易,是的各个个体都拥有生活必须品,这样就完成了社会的架构
那么在这个例子里,架构要定义成什么呢?在社会的架构中,我们的目标是实现每个人获得生活的必需品,在社会内部具有生产不同用品的人员分层,在各个成员中的交易过程就是架构内个各部分的沟通。所以总结一下 这就是把一个整体切分成不同的部分(分工),由不同的角色来完成这些分工,并通过建立沟通机制来实现系统中各部分之间的交流,是的各部分有机的结合成一个整体,并完成系统内的各项工作。这就是架构。
这里总结一下架构产生的动力
- 必须由人执行的工作(不需要人介入,就意味着不需要改造,也就不需要架构了)
- 每个人的能力有限(每个人都有自己的强项,个人的产出受限于最短板,并且由于人的结构限制,同时只能专注于做好一件事情,比如虽然有两只眼睛,但是只能同时专注于一件事物,有两只手,无法同时做不同的事情。ps. 虽然有少部分人可以左手画圆右手画框,但是不是普遍现象)
- 每个人的时间有限(为了减少时间的投入,必然会导致把工作分解出去,给擅长于这些工作的角色来完成,见 2,从而缩短时间)
- 人对目标系统有更高的要求(如果满足于现状,也就不需要进行架构了)
- 目标系统的复杂性使得单个人完成这个系统,满足条件 2,3(如果个人就可以完成系统的提高,也不需要别的人参与,也就不需要架构的涉及,只是工匠,并且一般这个工作对时间的要求也不迫切。当足够熟练之后,也会有一定的架构思考,但考虑更多的是如何提高质量,提高个人的时间效率)
总结一下什么是架构
- 根据要解决的问题,对目标系统的边界进行界定。
- 并对目标系统按某个原则的进行切分。切分的原则,要便于不同的角色,对切分出来的部分,并行或串行开展工作,一般并行才能减少时间。
- 并对这些切分出来的部分,设立沟通机制。
- 根据 3 使得这些部分之间能够进行有机的联系,合并组装成为一个整体,完成目标系统的所有工作。
如何利用架构
架构的产生是为了更有效的实现系统的有机结合。要想做出更好的架构,首先第一步就是做好架构的切分。
我们为什么要做切分
标签:架构,每个,漫谈,系统,切分,完成,深度,部分 From: https://www.cnblogs.com/open52000/p/17133184.html切分就是对系统内部的功能进行划分,这样也符合架构的初衷,复杂问题简单化,简单问题流程化。我们考虑如何利用架构就是如何做好系统内部分功能人员的切分,我们要做好切分就要充分考虑