专业的编程技术博客社区

网站首页 > 博客文章 正文

聊聊架构类型(架构的类型)

baijin 2024-08-18 13:16:48 博客文章 5 ℃ 0 评论

对于「架构」这个词你应该不会陌生,如果你在企业内部,那应该听说过「组织架构」;而如果你从事软件行业,那架构这个词应该就再熟悉不过了,什么「企业架构」、「业务架构」、「软件架构」、「系统架构」、「数据架构」、「安全架构」等等等等。

那这些架构分别表示什么意思呢?如果你去网上寻求答案,你会发现答案千差万别。

本文将尝试回答这个问题。

软件架构

先从我们比较熟悉的「软件架构」说起。在「什么是软件架构 」一文中,我们先给架构下了个定义:

架构是特定约束决策结果,并且这是一个循环递进的过程。

然后基于这个定义,分别对「约束」、「决策」和「结果」进行具象化:

  • 约束
    • 功能性需求
    • 非功能性需求
    • ......
  • 决策
    • 技术选型
    • 规范
    • 系统切分
    • 组件之间的关系
    • ......
  • 结果
    • 满足约束的软件系统
    • 相关文档
      • 用例图
      • 决策过程文档(各个方案优缺点,选择该方案的原因)
      • 架构视图
      • ......
    • 备选方案
    • ......

我们得到了「软件架构」的定义:「软件架构定义了一组组件以及这些组件之间的通信方式(决策结果),以完成目标功能(约束)。

实际上,对「约束」、「决策」和「结果」的界定范围的不同,我们就可以对上述的各种架构类型进行定义。

系统架构

「系统」是个很抽象的词,可大可小:

  • 铅笔是个系统
  • 人体是个系统
  • 公司是个系统
  • 地球是个系统
  • 宇宙是个系统
  • ......

但是,无论是哪种系统,都是由一组单元(Unit)及其之间的关系组成,以完成特定的功能

  • 铅笔由笔芯、笔杆组成,用于完成写字、绘画等功能
  • 人体由头部、身体、四肢等组成,可以吃喝玩乐......
  • 公司由各个部门组成,可以从事商业活动
  • 地球由大气层、地壳、地核等组成,提供可供人类、动植物生活的场所
  • 宇宙由行星、恒星、黑洞等组成,提供各种星球所能正常运行的空间
  • ......

所以,「系统架构」可以这么定义:「系统架构定义了一组单元/元素(Unit/Element)以及这些单元/元素之间的通信方式(决策结果),以完成目标功能(约束)」。

其它架构类型

上面我们从「软件架构」的定义出发,向上抽象出了「系统架构」的定义,基于「系统架构」的定义,我们可以向下细化出其它架构的定义。

  • 组织架构:定义了一系列的部门以及部门与部门之间的关系,以完成整个公司的运作
  • 企业架构:基于业务,定义了组成企业的所有不同要素,以及它们之间如何相互联系(如何作用)。一般企业架构又会拆分为业务架构、IT架构
  • 业务架构:定义了一系列的业务结构及其之间的关系,以提供业务能力完成对应的业务目标
  • IT架构:定义了一系列的IT组件及其之间的关系,以完成业务功能
  • 应用架构:定义了一系列的系统、子系统、模块及其之间的关系,以完成业务功能
  • 数据架构:定义了一系列的数据结构及其之间的关系,对业务及应用系统提供数据支撑
  • 安全架构:定义了一系列的安全控制模块及其之间的关系,以对目标系统提供安全保障功能

架构视图

架构视图是对于从某一视角或某一点上看到的系统所做的简化描述,描述中涵盖了系统的某一特定方面,而省略了于此方面无关的实体。

比较出名的视图模型是由Rational软件公司的P.Kruchten提出的"4+1"模型,具体可参见「4+1架构视图 」:

  • 逻辑视图:设计的对象模型(使用面向对象的设计方法时)。这是一个静态视图,描绘的是系统的静态逻辑结构。论文中使用的是对象模型,不过并不是强制的,只要能表达出意图即可。
  • 过程视图:捕捉设计的并发和同步特征。这是一个流程图,通过对进程的描述,将系统中的各个组件串联到一起。和上面的逻辑视图结合,可以得到一个相对动态的系统结构。
  • 物理视图:描述了软件到硬件的映射,反映了分布式特性。这是一个静态视图,表示系统的各个组件、子系统是如何部署的。
  • 开发视图:描述了在开发环境中软件的静态组织结构。这也是一个静态视图,表示系统在代码层面的结构。
  • 场景:整合上述四个视图。通过一个个的用例流程将系统组件串联到一起。既可用于完善上面的各个视图,也可以用于验证上面的视图意图。

架构类型与架构视图

在「什么是架构模式和架构风格 」一文中,我们讨论了架构模式和架构风格的区别:

  • 架构模式:针对某个特定上下文的某类问题的解决方案
  • 架构风格:就是一个解决方案

乍看之下区别不是很大,不过细究起来还是有比较大的差别的,架构模式有场景、有问题,而架构风格没有

而架构类型和架构视图乍看之下区别也不大,实际细究起来,区别也不是很大。上面的各种架构类型实际都可以看成是真实系统的一个视图:

  • 组织架构:从组织视角来看系统
  • 企业架构:从企业视角来看系统
  • 业务架构:从业务视角来看系统
  • IT架构:从软件视角来看系统
  • 应用架构:从应用视角来看系统
  • 数据架构:从数据视角来看系统
  • 安全架构:从安全视角来看系统

和上面的4+1视图的区别主要就是视角上的差异,还有就是范围上的差异。上述的各架构类型之间的关系大致如下图所示:

  • 系统架构是最抽象的一层,其中包含了组织架构、人体架构、地球架构、宇宙架构、企业架构等
  • 企业架构又可以拆分为业务架构、IT架构
  • 其中业务架构可以分为组织架构、业务策略和业务流程架构
  • 而IT架构又可以分为应用架构、技术架构、数据架构、安全架构等,上述架构均包含了软件架构和硬件架构

架构类型间的包含关系并不是完全如上图所示的,也分场景。比如:数据架构可能并不一定是属于IT架构的,可能是和企业架构、IT架构同级的,甚至是和企业架构同级的

总结

本文是个人对架构类型和架构视图的梳理和理解。总结一句话,万物都有多面性,要多维度的观察分析

参考资料

    • System Architecture(https://en.wikipedia.org/wiki/Systems_architecture)
    • Applications architecture(https://en.wikipedia.org/wiki/Applications_architecture)

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表