不管是在项目的论证、方案设计还是实现过程中,我们经常会谈到系统架构。一些与系统架构相关的名词也时常会被提起,例如系统组成、体系、框架、平台等等。这些名词在各种报告、文档、交流、讨论中非常常见,但是人们对其涵义的理解并不统一,甚至不乏模糊不清、相互混淆之处:不同的人在说到系统架构时,常常有可能指的是不同的东西;或者对于同一幅图,有的人称之为系统组成图,有的则称之为系统架构图;或者对于报告中的“系统组成”、“系统架构”等章节,有的人认为应当这样写,有的人认为应当那样写。诸如此类的问题,在这几年的工作中经常遇到。

其实这本不是什么问题,一个东西名曰张三还是李四,对其本身并无影响。如果在交流的时候因为对概念理解不一致产生了误解,再解释说明一下也就澄清了。奈何出师之前,授业恩师数年如一日地强调对术语的使用要严谨,养成了我好抠字眼的酸腐习性。所以有了本文,打算谈一谈我对系统架构及几个相关概念的理解。
在进入正题之前先感叹一下汉语言文学的博大精深。我一直很好奇:当学中文的老外第一眼看到由一个简单的“红”字演绎出来的深红、浅红、大红、粉红、绯红、殷红、嫣红、洋红、桃红、火红、血红、酒红时,究竟是感觉到惊艳还是昏厥。这种博大精深无疑让我们的诗词歌赋瑰丽多彩,但是对于技术类的语言表达也会带来一些麻烦。偏偏对于汉语言来说,现代科学技术基本上又算是个“外来妹”,诸多术语在翻译之后本就不易理解,再经过多方演绎,我辈就只好说情何以堪、情何以堪了。
所以在需要辨析概念时,通常我会打开词霸和google,先把对应的英文单词找到再说。这次也不例外。
 
【系统架构】、【系统体系结构】、【系统体系架构】
 
“系统架构”与“系统体系结构”其实都对应着同一个英文词组:system architecture。Architecture一词翻译成“架构”或者“体系结构”都有些年头了,并且不乏使用群体。前者主要是在软件开发领域,software architecture通常译为“软件架构”,与之相关的还有“架构师”这样的头衔。至于后者,computer architecture貌似从一开始就译为“计算机体系结构”;大学课程用的是这个名,一些著名教材也都是这样翻译的,例如J. L. Hennessy与D. A. Patterson的经典之作《计算机体系结构:一种量化方法》(Computer Architecture: A Quantitative Approach)。
“系统体系架构”一词是如何产生的,我就不知道了。这让我想起了香港的金店:先是有周大福、周生生,后来出现了周大生、周生福……不管怎样,它始终还是金店,所以我觉得“系统体系架构”还是system architecture。
既然都是system architecture,通常我只用“系统架构”一词(有computer architecture这种明确的语境时除外)。原因无他,可以少说或者少写两个字。
那么系统架构究竟是什么?或者说,如果需要描述系统架构,究竟应该描述哪些东西?怎样描述呢?
业界对系统架构通常有两种理解:一种是广义的系统架构,即“大”架构;另一种是狭义的系统架构,即“小”架构。大架构通常需要按照各种“系统架构框架”(system architecture framework)来进行描述;小架构则可能只需要一幅图,一段文字。系统架构框架以后会专门说明,本文只说“小”架构。
“小”架构通常包括两部分内容:1) 系统由哪些部分组成;2) 各部分之间的交互关系。
系统架构可以在不同层次上描述。最常见的是功能架构(functional architecture),即描述系统由哪些逻辑上的功能模块组成,以及各功能模块之间的关系。例如下图是ITU-T下一代网络(Next Generation Network, NGN)标准中的NGN功能架构。(ITU-T Recommendation Y.2012, Functional requirements and architecture of the NGN release 1)
 

 
与功能架构相对的是物理架构。物理架构描述系统由哪些物理的软硬件设备组成,以及各设备之间的关系。
 
【系统组成】
 
“系统组成”对应的英文词组应当是system organization。将organization翻译成“组成”也是有些年头了,例如很多计算机专业的同学在学习computer architecture之前先要学习computer organization(或者一些与计算机科学相关的专业没有开computer architecture课,但是可能会开computer organization课),这里的computer organization在国内一般就称为“计算机组成原理”。
那么系统组成究竟应该怎样写呢?至少有两种常见的方式。第一种方式其实是系统架构的简化版,例如D. A. Patterson与J. L. Hennessy在他们的另一本经典之作《计算机组成与设计:硬件/软件接口》(Computer Organization and Design: The Hardware/Software Interface)中对计算机组成的描述如下图:
 

 
上图不仅示意了计算机由哪些部分组成,还简要示意了这些组成部分之间的交互关系,只是与系统架构图比起来,描述的粒度比较粗。
系统组成的第二种描述方式就是组织结构图(organization chart),从英文名称很容易看出它与system organization的联系。这种方式通常只描述系统组成部分之间的“整体—部分”关系,不描述组成部分之间的交互关系。还是计算机组成的例子,如果用组织结构图来描述就是下面这幅图。
 

 

因为系统组成的第一种描述方式其实是系统架构的简化版,所以如果另外还有一节专门写系统架构的话,一般我会按照第二种方式来写系统组成。
 
【体系】
 
在技术资料中经常出现的“体系”一词至少有两种涵义。一种其实就是“系统”(system)的意思,例如,“成体系地阐述了XXX”这句话与“系统性地阐述了XXX”是一个意思,这里的“成体系地”就是systematically。
“体系”的第二个涵义对应的英文是hierarchy,又称为“谱系”。典型的例子是“同步数字体系”(Synchronous Digital Hierarchy, SDH)。Hierarchy是将有共同特征的、属于同一个大类的事物按照特定的规律进行归类、整理,形成的有层次的结构。例如,把所有的动物按门、纲、目、科、属、种进行归类,得到的树状结构就是动物的谱系/体系。
显而易见,树状图是描述hierarchy最常用的方式。图的形式与描述系统组成的组织结构图很相似,但是节点之间的连接线所代表的逻辑关系是不同的。

(未完待续)