我看《架构漫谈》——1

    我记得我刚报选这个专业的时候,个人一个大我一届的朋友问我学什么专业的,我告诉他是软件工程。他听见后和我说软件好啊,好工做挣的钱多,尤为是“价购”师!这就是我当时理解的架构,我记得我当时还像个傻子同样给别人解释啥是“价购”,终于在后来的上课才理解是“架构”,如今想一想还难免脸红。架构师这个职业其实并不实在软件中来的,全部工科专业应该都会发展架构师这个职业,不过最早出自建筑工程。程序员

    今读《架构漫谈》,其实对我敲代码,在我的编程能力上没有任何帮助,由于他不是告诉咱们怎么去敲代码,什么语法怎么用;他是更深层次的东西,会敲代码是专业基础,也是最低级的东西;做为程序员应该懂得一个项目中怎么去敲代码,怎么让本身的代码更合理更符合用户的想法,这就用到了软件工程中重要的职业——架构师。编程

  1. 1.    欲聊架构师,先理解架构。

架构,早在好久之前就出现了,因人而现。三个和尚没水喝的故事告诉咱们,当有三个和尚的时候,就应该把每一个人的分工协调开,这样既不会让你们没水喝,还能提升你们的工做效率。虽然不是特别贴切,可是大体有这个意思。想象一下,在最先期,每一个人都彻底独立生活,衣、食、住、行等等所有都本身搞定,整我的类都是独立的个体,不相往来。为了解决人类的延续的问题,天然而然就有男女群居出现,这个时候就出现了分工了,男性和女性所作的事情就会有必定的分工,但是人天天生活的基本需求没有发生变化,仍是衣食住行等生活必须品。可是一旦多人分工配合做为生存的总体,力量就显得强大多了,因此也天然的造成了族群:有些人种田厉害,有些人制做工具厉害,有些地方适合产出粮食,有些地方适合产出棉花等,就天然造成了人的分群,地域的分群。当分工发生后,实际上每一个人的生产力都获得了提升,由于作的都是每一个人擅长的事情。架构

若是在方式上表述,架构就是将任务划分,分工解决并在最后再将结果有机结合,从而完成任务。简单地说:架构实际上解决的是人的问题。工具

  1. 2.  架构师作什么?怎么作?

架构师都充当什么角色呢?妻子和丈夫的例子很好的给了一个介绍。在一个正常工做的团体中,每一个人都会对同一问题有不一样的见解,关照角度不一样,也就致使结果不能有机的结合,架构师在这里的作法就是提出第一个问题,固然他须要真的明白用户需求,提出惟一的一个角度,统一你们的目的这样就促成了任务的行进。效率

由上面的分析能够看出,找出问题的主体,是作架构的首要问题。这也是我一再强调的,咱们要解决的问题,必定都是人的问题。更进一步,架构师要解决的,基本都是别人的问题,不是本身的问题。再进一步,咱们必定要明白,任何找上架构师的问题,绝对都不是真正的问题。为何呢? 由于若是是真正的问题的话,提问题过来的人确定都可以本身解决了,不须要找架构师。架构师都要有这个自觉:发现问题永远都比解决问题来的更加剧要。基础

明确目标问题以后,就是开工了,那问题又来了:如何开工?问问架构师吧!工做的划分就是你们利益划分,由于必需要让每一个人在时间和空间上都不能由太大的负载,并且还要协调你们的权利和义务等等。由上述两个缘由咱们能得出划分的原则:软件

a)   必须在连续时间内发生的一个活动,不能切分。好比孕妇怀孕,必需要 10 月怀胎,不可以切成 10 我的一个月完成。语法

b)   切分出来的部分的负责人,对这个部分的权利和义务必须是对等的。比方说妈妈 10 月怀胎,妈妈有权利处置小孩的出生和抚养,一样也对小孩的出生和抚养负责。为何必须是这样呢? 由于若是权利和义务是不对等的话,会伤害每一个个体的利益,分出来执行的效率会比没有分出来还要低,实际上也损害了总体的利益,这违背了提高总体利益的初衷。软件工程

c)    切分出来的部分,不该该超出一个天然人的负载。固然对于每一个人的能力不一样,负载能力也不同,须要不断的根据实际状况调整,这实际上就是运营。程序

d)   切分是内部活动,内部无任怎么切,对整个系统的外部应该是透明的。若是由于切分致使整个系统解决的问题发生了变化,那么这个变化不属于架构的活动。固然不少时候当咱们把问题分析的比较清楚的时候,整个系统的边界会进一步的完善,这就会造成螺旋式的进化。但这不属于架构所应该解决的问题。进化的发生,也会致使新的架构的切分。

e)   架构切分的结果必定是一个树状,这也是为何会产生分层。层数越多沟通越多,效率越低,分层要越少越好。尽量变成一颗平衡树,才能让整个系统的效率最大化。