架构图分类详解

15,188 阅读7分钟

背景

架构图是程序员工作中必不可少的技能,好的架构图能言简意赅的传递关键的业务和技术信息。

架构图种类

  1. 产品/业务架构:重点关注产品功能组成,从业务逻辑的视角出发,整体展现一个企业各类系统之间的层次和关系。产品架构关注的是业务视角

  2. 系统/应用架构:一个系统包含多个应用。二者关注的都是技术视角。

    • 系统架构,关注系统的整体组成结构,描述内部的逻辑功能模块及其之间的组成关系、外部系统依赖等
    • 应用架构,侧重从应用部署单元角度,描述系统下多个应用间的层次分布、依赖关系等。
  3. 技术架构:突出技术实现,重点描述系统的关键技术组件,例如分层、核心技术组件、上下游通信方式、数据流向等。

  4. 数据架构:描述核心数据模型设计、数据同步和备份的机制等。

  5. 部署架构:描述技术部件的物理拓扑结构,重点突出网络、机房、应用以及基础设施的关系。

架构图的流派

UML图

UML是最经典的用于架构分析设计的方法论。UML图可分为行为建模、结构建模两种。

行为建模

描述了在系统中的相互作用,代表之间的交互的结构图,行为建模显示系统的动态性质。

  • 用例图:用例图描述了系统提供的一个功能单元,一般用于需求分析的最初阶段。可让使用者清楚的理解这个软件到底能提供什么功能,是不是满足自己的需求,另外一方面对应开发者来说,可以更好地理解需求,从而能更好的去实现这些需求。用例之间包含4种关系:

    • 关联关系(Association)
    • 包含关系(Include)
    • 扩展关系(Extend)
    • 泛化关系(Generalization)

image.png

  • 活动图:活动图描述满足用例要求所要进行的活动,以及活动间的约束关系,有利于识别并行活动。用于需求分析阶段。它对于系统的功能建模特别重要,强调对象间的控制流程;

  • 泳道图:泳道将活动图中的活动划分为若干组,并把每一组指定给负责这组活动的业务组织,即对象。在包含泳道的活动图中,每个活动只能明确地属于一个泳道。泳道是用垂直实线绘出,垂直线分隔的区域就是泳道。

  • 时序图/交互图:时序图,是一种详细表示对象之间以及对象与参与者实例之间交互的图,它由一组协作的对象(或参与者实例)以及它们之间可发送的消息组成,它强调消息之间的顺序。时序图被广泛使用于设计阶段,详细而直观地表现了一组相互协作的对象在执行一个(或少量几个)用例时的行为依赖关系,以及操作和消息的时序关系。 在时序图中,alt标签可以表示丰富的含义,一定要注意灵活使用:

image.png

  • 状态图:状态图主要用于描述对象具有的各种状态、状态之间的转换过程以及触发状态转换的各种事件和条件。 主要用于涉及复杂的状态流转的模型的分析设计 UML 状态图描述了一个状态机,可以被定义为一台机器,它定义了一个对象,这些状态控制外部或内部事件的不同状态。

结构建模

结构建模具有捕捉静态的功能。

  • 类图:类图的作用是描述程序中类的信息及各个类之间的关系,一般用于详细设计过程。类图用于描述每一个类的详细信息,包括变量,和方法,以及描述系统中各模块类之间的关系。 类之间的关系由强到弱:

    • 泛化(Generalization):用于表达xx是什么的关系。
    • 组合(Composition):是一种强生命周期的包含关系。
    • 聚合(Aggregation):是一种弱生命周期的包含关系。
    • 实现(Realization):接口级别的实现关系。
    • 关联(Association):是一种中等依赖关系,表现为在对象属性中的依赖关系。
    • 依赖(Dependency):是一种弱依赖关系,表现为在方法级别对对象的依赖。

image.png

  • 包图:描述包的结构和依赖关系。
  • 组件图:组件图适用于基于组件的开发模式,它通过组件,及组件的接口、端口来表达组件的构成及其关系。组件图通过接口、端口的方式来表达组件间的连接,很形象的表达出一个组件可以被另一个提供了相同接口的组件替换。组件图比较适用于 SOA 架构、微服务架构的表达,描述整个系统的结构以及子系统间的通讯方式,或者表达一些基础设施,比如脚手架,消息中间件等等。

image.png

  • 部署图:部署图描述的是系统运行时的结构,展示了硬件的配置及其软件如何部署到网络结构中。一个系统模型只有一个部署图,部署图通常用来帮助理解分布式系统。

image.png

4+1视图

又称用例视图或场景视图。其中1指场景视图,4+1中的4个视图分别是:

  • 逻辑视图:逻辑视图是包含系统职责的的划分,以及内部各逻辑元素间的关系。逻辑视图可以理解对应上述的系统架构图。
  • 开发视图:开发视图用于描述系统的模块划分和组成,以及细化到内部包的组成设计,开发视图关注的是程序员的具体落地实现,反映了系统开发实施过程,通过它能够找到它所有代码和所有的二进制交付件。广义上包图、类图属于开发视图。
  • 部署视图:描述程序的物理拓扑结构,重点反应了程序软件到硬件的映射和部署过程。对于UML的部署图。
  • 过程视图:描述系统软件组件之间的通信时序,数据的输入输出,反映系统的功能流程与数据流程。时序图和流程图属于过程视图
  • 场景视图:描述系统的参与者与功能用例间的关系,反映系统的最终需求和交互设计。场景视图对于UML的用例图。

image.png

C4架构图

C4指的是Context, Containers, Components, Code, 指代不同Level的架构图,通过从总到分的结构从多个维度描述系统架构。

  • Context:即系统上下文,这是最高Level的架构图,不暴露系统的内部细节,所展现的是:本系统的用户是谁、与哪些外部系统有交互。由此可见它和用例图很类似。
  • Containers,有别于Docker容器,指的是在一个软件系统中可独立部署/独立运行的单元。可以是服务器端 Web 应用、单页应用、桌面应用、移动应用、数据库等。他很像前面讲的应用架构图。
  • Components,组件图则是放大和分解每个容器,显示了容器是如何由多个“组件”组成的,每个组件是什么,它们的职责以及技术/实现细节。组件可以理解为一个中间件、业务组件、工具类、外部系统等。这个对应UML的组件图。
  • Code,代码层则放大每个组件以显示它是如何作为代码实现的;对应 UML 的类图和包图

image.png

加入我们

我们来自字节跳动飞书商业应用研发部(Lark Business Applications),目前我们在北京、深圳、上海、武汉、杭州、成都、广州、三亚都设立了办公区域。我们关注的产品领域主要在企业经验管理软件上,包括飞书 OKR、飞书绩效、飞书招聘、飞书人事等 HCM 领域系统,也包括飞书审批、OA、法务、财务、采购、差旅与报销等系统。欢迎各位加入我们。

扫码发现职位&投递简历

官网投递:job.toutiao.com/s/FyL7DRg