【架构&设计】如何画产品架构图 - hippowc/hippowc.github.io GitHub Wiki

C4模型
	概念
		用于分层展示软件架构图
		定义了如何为软件结构分层、定义了抽象级别
	Context/System:上下文/系统
		高层次抽象:一个门户系统
	Container:容器
		组件执行或者驻留的地方:web容器,数据库,描述独立功能
	Component:组件
		一个类或多个类组成的逻辑组
	Class:代码
		类,最小单位
	Person:使用者
		使用系统的人,或者依赖的其他系统
4+1视角
	概念
		从使用者的不同视角出发,描述软件系统架构
		不同视角的图,针对不同的使用者
		每个视图上均独立地使用的元素集合(组件、容器、连接符),捕获工作形式和模式,并且捕获关系及约束
	场景视图
		描述系统参与者与功能用例的关系,反应系统的需求和交互设计
	逻辑视图
		描述系统功能拆解后组件的关系,组件的约束和边界
	物理视图
		系统软件到物理硬件的映射关系,用于知道软件的部署过程
	处理流程视图
		描述系统组件之间的通信时序,反应系统的功能流程和数据流程,类似时序图和流程图
	开发视图
		描述系统的模块划分和组成,细化到内部包的组成,反应系统的开发过程
受众视角
	概念
		个人的理解
		4+1视角中,有些视图在受众不同时,含义仍然不同,譬如逻辑视图
	业务组件
		分解不同的独立的业务功能,譬如账号管理,应用创建
	代码组件
		分解不同的代码功能组件,譬如:权限校验,异常处理
概括
	画一个架构图,首先要明确受众,第二要明确传达什么信息
	根据受众选择一个视角,根据视角选择抽象层次
	譬如
		非技术人员:老板、产品
			Context + Container
				描述功能点,业务流程
		多个协作技术人员
			Component
				描述模块依赖关系
		单个技术人员
			Class
				描述类的依赖关系,方法执行流程