C4模型理论与示例

C4模型是一种用于描绘软件系统结构的可视化方法,包括系统上下文图、容器图、组件图和代码图。它强调了系统、容器、组件和代码的关系,以及动态图和部署图在展示系统交互和DevOps实践中的作用。系统景观图提供了更全面的系统视角,而动态图则展示了不同元素间的调用关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

理论知识

概述

C4元素

C4模型示例

系统图Context--谁在使用哪些系统

容器图Containers

组件图Components

代码图

系统景观图

动态图

部署图


理论知识

概述

C4-MODEL:主要设计理念类似于地图,C4关键要素包括:关系——带箭头的线、元素——方块和角色、关系描述——线上的文字、元素的描述——方块和角色里的文字、元素的标记——方块和角色的颜色、虚线框。

C4核心图:

  • 系统: System Context,所表达的是系统和用户以及它所依赖系统之间的关系
  • 容器:Container,系统是由容器组成的,这个容器是一个抽象的概念,代指有自己独立进程空间的一种存在,如果系统设计的好也可以1:1对应Docker
  • 组件:Component,容器是由组件组成的,组件在这里把接口和它的实现类打包成一个概念,组件是映射到代码库中的真实抽象
  • 代码:Code,代码图就是UML里的类图之类很细节的图。一般是不画的,都是代码生成出来。除非非常重要的且还没有写出代码的组件才画代码图。

C4扩展图

  • 系统景观图:上下文图只关注聚焦系统和它的直接关系。系统景观图是比上下文图更丰富的系统级别的表达,它把间接相关的系统都会标示出来,那些系统的用户以及用户之间的关系也会标示出来,只是内部的用户会用灰色标记。
  • 动态图:不同于其他表达静态关系的图,它是用来表达动态关系的,也就是不同的元素之间是如何调用来完成一个业务的。所以动态图不仅仅适用于一个层面上,它在系统级、容器级和组件级都可以画,表达的目标是不一样的。
  • 部署图:关注DevOps,实线框不同于虚线框,它表达的是数据中心

在实践中,系统景观是对系统图的补充,动态图是对组件图的补充。

核心图组成详细

View type

Scope

Permitted elements

1. System Context

A software system.

Software systems

People

2. Container

A software system

Software systems

People

Containers within the software system in scope

3. Component

A container

Software systems

People

Other containers within the parent software system of the container in scope

Components within the container in scope

4. Code

A component

Code elements (e.g. classes, interfaces, etc) that are used to implement the component in scope

C4元素

元素的图形属性

元素详细

Element type

Parent

Properties

Person

None

Name*

Description

Location (Internal or External)

Software System

None

Name*

Description

Location (Internal or External)

The set of containers that make up the software system

Container

A software system

Name*

Description

Technology

The set of components within the container

Component

A container

Name*

Description

Technology

The set of code elements (e.g. classes, interfaces, etc) that the component is implemented by

Code Element

A component

Name*

Description

Fully qualified type

Relationship**

Description

Technology

C4模型示例

系统图Context--谁在使用哪些系统

图中的颜色表示哪些软件系统已经存在(灰色)以及待构建的系统(蓝色)

容器图Containers

系统的容器(应用程序、数据存储、微服务等),技术决策也是该图的关键部分。下例显示了互联网银行系统(虚线框)由五个容器组成:服务器端 Web 应用程序、客户端单页面应用程序、移动应用程序、服务器端 API 应用程序和数据库

组件图Components

下图显示了上图 API Application这个系统模块 应用程序中的一些组件(而不是全部)

代码图

可以用多个UML表示

系统景观图

灰色表示已开发完成的系统

动态图

部署图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

korgs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值