架构宝典
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2 认识架构

计算机学科(以及信息技术相关领域)中的“架构”一词,是从Architecture翻译过来的。下面是IEEE对Architecture的定义:

Architecture is the fundamental organization of a system embodied in its components,their relationships to each other,and to the environment,and the principles guiding its design and evolution.[IEEE 1471]

架构是系统的基本结构。这种结构体现在组件内、系统彼此间的关系、系统与环境之间的关系,以及指导系统设计与演化的原则上。[IEEE 1471]

一般地,当提及架构这个词的时候,通常都有特定的上下文环境,可以指代系统架构、信息架构、软件架构等。

计算机科学家Grady Booch给出的架构的定义[1]如下:

架构代表形成系统的重要设计决策,其中重要程度由变化导致的成本来衡量。

这个定义更有助于理解架构这个概念,它指出了架构与成本是相关的。

再通过现代汉语词典中的解释来了解一下这个词(有时候字词本义有助于理解专有名词的含义)。

架构:➊建造;构筑。➋框架;支架。➌泛指事物的组织、结构、格局。

对架构有了初步的认识之后,怎样才能对架构有深刻的理解呢?建议从两个方面入手:

●既然这个概念来自建筑工程领域,那么要想有深入准确的理解,就需要看一些建筑方面的资料,比如梁思成的《图像中国建筑史》手绘图,通过看图来直观地体会什么是架构。此外,还可以到建筑工地去观察一些施工的情况,具象地帮助自己理解概念;在旅游时有意识地关注不同样式的建筑,体会不同的风格。“建筑是凝固的音乐[2]”,要主动地从中体会架构的概念,正如体会音乐的旋律。

●对于从计算机科学与工程实践中总结出来的一些架构的概念,要通过实践来学习和领会。类比是个好方法,比如对于 MVC 架构,是否会想到 VC++编程中的“Document/View”模型;又比如说到三层架构或者多层架构时,是否会联想到它与“Client/Server”二层架构的关系。

尽管有些时候没有意识到在开展架构相关工作[3],但它是客观存在的。架构师,通常是指从事架构搭建工作的人。在一个团队中,如果有被明确指派的架构师,那么该团队的架构工作可能会更加专业化,对提高架构的质量有所帮助。但并不是只有架构师才可以负责架构工作,很多公司、团队没有架构师这个职位,而是由工程师或者高级工程师实际承担这项工作。

要把架构师当成一种角色,而不仅仅是一个头衔、一个职位。也许有很多人的工作头衔是架构师,但其实际工作内容和架构关系不大,有些人可能没有架构师的头衔,但实际承担着与架构有关的工作。