C4模型理论与示例

目录

理论知识

概述

C4元素

C4模型示例

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

容器图Containers

组件图Components

代码图

系统景观图

动态图

部署图


理论知识

概述

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

C4模型理论与示例_第1张图片

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元素

C4模型理论与示例_第2张图片

元素的图形属性

C4模型理论与示例_第3张图片

元素详细

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--谁在使用哪些系统

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

C4模型理论与示例_第4张图片

容器图Containers

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

组件图Components

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

C4模型理论与示例_第5张图片

代码图

可以用多个UML表示

C4模型理论与示例_第6张图片

系统景观图

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

C4模型理论与示例_第7张图片

动态图

C4模型理论与示例_第8张图片

部署图

你可能感兴趣的:(架构设计,java,架构,spring)