在本学期我们开设了软件体系架构这门课程,提到了架构一词,我找到了由资深架构师王概凯 Kevin 执笔的“架构漫谈”系列专栏----架构漫谈(一):什么是架构?进行相关了解。
这篇文章主要是在表述到底什么是架构,从架构的起源开始论述。文中提到架构一词在业内有很多争论,每个人都有自己的理解,但却没有大家都认可的定义,套用一句在大数据流行的笑话就是:Architecture is like teenage sex,everybody talks about it,nobody really knows what is it.(事实上我也不知道为什么这么说,但是话粗理不粗。)
架构(Architecture)一次源于建筑,在 Wikipedia 上,架构是这样定义的:Architecture (Latin architectura, from the Greek ἀρχιτέκτων arkhitekton"architect", from ἀρχι- "chief" and τέκτων "builder") is both the process and the product of planning, designing, and constructing buildings and other physical structures。(建筑是规划、设计、建造建筑物和其他物理结构的过程和产物。)
这么看,架构好像是一个过程,是人们从被动认识一个项目,到主动了解它的转变,就好像早期的人们从独立的个体,到分工明确的群体的进化。那么为什么会产生架构呢,或者说,产生架构的动力是什么呢?
就好比人们的建筑行为,从山洞到茅草屋,从瓦片房到钢筋水泥。我觉得建筑的架构的产生,是在有了建筑队之后才发生的,建筑队里人们有明确的分工,有明确的目标任务。以此来看的话,总结出以下几点要求:
1.必须由人执行的工作。没有人的介入,也就更没有由人不知不觉发明出来的架构了。
2.每个个体的能力有限。正因如此,所以在人们在群体中才会各尽其能,每个人更大限度的发挥自己的优势(ps.这个道理好像在哪儿都能适用,毕竟现在是团队合作的时代)。
3.每个人的时间有限。为了减少时间的投入,必然会导致把工作分解出去,给擅长于这些工作的角色来完成,从而缩短时间。
4.人们对目标系统有更高的追求。
5.目标系统的复杂性促使了人们合作的发生。
当这 5 个条件同时成立,一定会产生架构。从这个层面上来说,架构是人类发展过程中,由懵懵懂懂的,被动的去认识这个世界,变成主动的去认识,并以更高的效率去改造这个世界的方法。
总结一下,什么是架构,就是:
1.根据要解决的问题,对目标系统的边界进行界定。
2.并对目标系统按某个原则的进行切分。切分的原则,要便于不同的角色,对切分出来的部分,并行或串行开展工作,一般并行才能减少时间。
3.并对这些切分出来的部分,设立沟通机制。
4.根据 3,使得这些部分之间能够进行有机的联系,合并组装成为一个整体,完成目标系统的所有工作。
其实总结到最后还是归结到一个焦点:人。架构要解决的问题终归是人的问题;完成架构终究是人去完成;架构在服务于项目的背后,终究是满足于人的需求。搞清楚这个关键,问题就明朗很多了。