那这些架构分别表示什么意思呢?如果你去网上寻求答案,你会发现答案千差万别。
本文将尝试回答这个问题。
软件架构
先从我们比较熟悉的「软件架构」说起。在「什么是软件架构」一文中,我们先给架构下了个定义:
架构是特定约束下决策的结果,并且这是一个循环递进的过程。
然后基于这个定义,分别对「约束」、「决策」和「结果」进行具象化:
约束
功能性需求
非功能性需求
......
决策
技术选型
规范
系统切分
组件之间的关系
......
结果
满足约束的软件系统
相关文档
用例图
决策过程文档(各个方案优缺点,选择该方案的原因)
架构视图
......
备选方案
......
我们得到了「软件架构」的定义:「软件架构定义了一组组件以及这些组件之间的通信方式(决策结果),以完成目标功能(约束)。」
实际上,对「约束」、「决策」和「结果」的界定范围的不同,我们就可以对上述的各种架构类型进行定义。
系统架构
「系统」是个很抽象的词,可大可小:
铅笔是个系统
人体是个系统
公司是个系统
地球是个系统
宇宙是个系统
......
但是,无论是哪种系统,都是由一组单元(Unit)及其之间的关系组成,以完成特定的功能:
铅笔由笔芯、笔杆组成,用于完成写字、绘画等功能
人体由头部、身体、四肢等组成,可以吃喝玩乐......
公司由各个部门组成,可以从事商业活动
地球由大气层、地壳、地核等组成,提供可供人类、动植物生活的场所
宇宙由行星、恒星、黑洞等组成,提供各种星球所能正常运行的空间
......
所以,「系统架构」可以这么定义:「系统架构定义了一组单元/元素(Unit/Element)以及这些单元/元素之间的通信方式(决策结果),以完成目标功能(约束)」。
其它架构类型
上面我们从「软件架构」的定义出发,向上抽象出了「系统架构」的定义,基于「系统架构」的定义,我们可以向下细化出其它架构的定义。
组织架构:定义了一系列的部门以及部门与部门之间的关系,以完成整个公司的运作
企业架构:基于业务,定义了组成企业的所有不同要素,以及它们之间如何相互联系(如何作用)。一般企业架构又会拆分为业务架构、IT架构
业务架构:定义了一系列的业务结构及其之间的关系,以提供业务能力完成对应的业务目标
IT架构:定义了一系列的IT组件及其之间的关系,以完成业务功能
应用架构:定义了一系列的系统、子系统、模块及其之间的关系,以完成业务功能
数据架构:定义了一系列的数据结构及其之间的关系,对业务及应用系统提供数据支撑
安全架构:定义了一系列的安全控制模块及其之间的关系,以对目标系统提供安全保障功能
架构视图
架构视图是对于从某一视角或某一点上看到的系统所做的简化描述,描述中涵盖了系统的某一特定方面,而省略了于此方面无关的实体。
比较出名的视图模型是由Rational软件公司的P.Kruchten提出的"4+1"模型,具体可参见「4+1架构视图」:
逻辑视图:设计的对象模型(使用面向对象的设计方法时)。这是一个静态视图,描绘的是系统的静态逻辑结构。论文中使用的是对象模型,不过并不是强制的,只要能表达出意图即可。
过程视图:捕捉设计的并发和同步特征。这是一个流程图,通过对进程的描述,将系统中的各个组件串联到一起。和上面的逻辑视图结合,可以得到一个相对动态的系统结构。
物理视图:描述了软件到硬件的映射,反映了分布式特性。这是一个静态视图,表示系统的各个组件、子系统是如何部署的。
开发视图:描述了在开发环境中软件的静态组织结构。这也是一个静态视图,表示系统在代码层面的结构。
场景:整合上述四个视图。通过一个个的用例流程将系统组件串联到一起。既可用于完善上面的各个视图,也可以用于验证上面的视图意图。
架构类型与架构视图
在「什么是架构模式和架构风格」一文中,我们讨论了架构模式和架构风格的区别:
架构模式:针对某个特定上下文的某类问题的解决方案
架构风格:就是一个解决方案
乍看之下区别不是很大,不过细究起来还是有比较大的差别的,架构模式有场景、有问题,而架构风格没有。
而架构类型和架构视图乍看之下区别也不大,实际细究起来,区别也不是很大。上面的各种架构类型实际都可以看成是真实系统的一个视图:
组织架构:从组织视角来看系统
企业架构:从企业视角来看系统
业务架构:从业务视角来看系统
IT架构:从软件视角来看系统
应用架构:从应用视角来看系统
数据架构:从数据视角来看系统
安全架构:从安全视角来看系统
和上面的4+1视图的区别主要就是视角上的差异,还有就是范围上的差异。上述的各架构类型之间的关系大致如下图所示:

系统架构是最抽象的一层,其中包含了组织架构、人体架构、地球架构、宇宙架构、企业架构等
企业架构又可以拆分为业务架构、IT架构
其中业务架构可以分为组织架构、业务策略和业务流程架构
而IT架构又可以分为应用架构、技术架构、数据架构、安全架构等,上述架构均包含了软件架构和硬件架构
架构类型间的包含关系并不是完全如上图所示的,也分场景。比如:数据架构可能并不一定是属于IT架构的,可能是和企业架构、IT架构同级的,甚至是和企业架构同级的
总结
本文是个人对架构类型和架构视图的梳理和理解。总结一句话,万物都有多面性,要多维度的观察分析。
参考资料
System Architecture
Applications architecture




