当向别人介绍自己的系统时,随着受众的不同,我们应该站在不同的抽象层次去介绍。比如,当面向非技术人员或团队外开发人员时,应该着重介绍系统的运行环境以及系统提供的功能;当面向团队内开发人员时,应该着重介绍技术选型、功能划分及它们之间的关系;当面向负责某个功能的开发人员时,应该着重介绍组件划分,各个组件的组织方式。
由国际知名架构师Simon Brown编写的《软件架构》中介绍的C4模型具有表达性强、制作简洁等优势,下面将详细介绍这个模型并用示例加以说明。
C4模型将软件系统分成四个层次:
语境图是一种可以展示给非技术人员的架构图。需要关注于使用者与系统之间的关系,而不是技术细节和实现原理。
范围:整个软件系统
关键元素:范围内的软件系统
辅助元素:范围内的用户和系统之间的关系
受众:每个人
示例1,文件服务:
容器图主要展示技术的选择和容器之间的交互。它是一种简单的高层次组织结构,对开发人员很有用。
范围:单独的系统
主要元素:系统内的各个容器
辅助元素:相关的用户和系统与容器之间的联系
受众:技术人员
注意:该图不需要介绍部署环境、集群、复制和故障转移等
示例1,文件上传:
示例2,文件下载:
组件图用于展示容器内各个组件的组织方式。
范围:单独的容器
主要元素:容器内的各个组件
辅助元素:相关的用户和系统与组件之间的联系
受众:开发人员
示例1,文件系统的HTTP服务:
类是组件的实现代码。应该关注于暴漏哪些属性和接口来表示组件的功能。通常可以使用UML模型工具自动生成。
关于UML类关系图可以参考:https://jingyan.baidu.com/article/ad310e80f7d5c01848f49e6b.html。