2

架构图分类详解

 1 year ago
source link: https://juejin.cn/post/7137250779928199181
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

架构图种类

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

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

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

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

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

架构图的流派

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、法务、财务、采购、差旅与报销等系统。欢迎各位加入我们。

扫码发现职位&投递简历

9ec70dd535c040188f049f6acf47897e~tplv-k3u1fbpfcp-zoom-in-crop-mark:3024:0:0:0.awebp

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK