架构制图:工具与方法论( 七 )
- 逻辑视图(Logical view):描述系统为终端用户提供的功能 , 一般会通过UML中的类图和状态图来表示;
- 过程视图(Process view):描述系统的动态行为 , 包括流程和交互等 , 一般会通过 UML 中的时序图、活动图和通讯图来表示;
- 开发视图(Development view):从程序员的视角来阐述系统 , 也被称为“实现视图” , 一般会通过 UML 中的组件图和包图来表示;
- 物理视图(Physical view):从系统工程师的角度来描述系统 , 包括系统组件的物理拓扑、各组件之间的物理连接 , 也被称为“部署视图” , 一般会通过 UML 中的部署图来表示;
- 场景(Scenarios):通过一小组用例或场景来描述架构 , 包括系统中各种对象和进程之间的交互时序 , 也被称为“用例视图” 。 这些场景会被用于识别架构元素(architectural elements)以及阐述和验证整个架构设计 , 也可以被作为架构原型的测试起点 。
3. 方法三:C4 Model
C4 模型是一种“抽象优先”(abstraction-first)的架构制图方法 , 它也是受前面的 UML 和“4+1”视图模型所启发 , 但相对而言要更加简单和轻量 , 只包含少量的一组抽象和图表 , 很易于学习和使用 。
1)定义、理念与关键思想
本文插图
C4 模型通过容器、组件、代码以及人这几个抽象来描述一个软件系统的静态结构 , 它的核心理念是希望像 Google Map 一样 , 通过不同层次的细节 , 为代码建立一种可以放大和缩小的导览图 。 它最关键的思想就是自顶向下对系统的静态结构进行逐级拆分 , 依次描述各层次对象的职责、关系和外部依赖 。 除了核心的层次化静态结构视图 , 它还可以包含动态视图、部署视图等补充视图 。
本文插图
上面的左图展示了 C4 模型中各层次抽象之间的映射关系:1 个软件系统由 1~N 个容器组成 , 1 个容器由 1~N 个组件组成 , 1 个组件由 1~N 个代码结构组成 。 右图是以简单的 Spring PetClinic 项目为例 , 演示了一个真实软件系统在 C4 模型下的层次结构:最上层就是 PetClinic 软件系统 , 它可以拆分为数据库、Web 应用等几个容器;Web 应用又可以进一步拆分出 ClinicService 这个组件 , 而这个组件下又包含了 ClinicService 接口类、ClinicServiceImple 实现类、Owner / Pet / Visit 等领域对象类 。
使用 C4 模型进行架构制图 , 本质上就是对上述几种抽象进行可视化 。 具体的做法是依次建立如下几类从粗到细的结构图:Context、Container、Component 和Code(可选) , 这也是 C4 模型名称的来历 。
2)Level 1:System Context diagram
本文插图
系统上下文图作为第一级(L1) , 提供了一个展示系统全貌的顶层大图(big picture)视角 , 包括最中心的软件系统、周边的用户以及其他有交互的系统 。 其中最关键的两个概念分别是:
- 人(Person):即使用软件系统的用户 , 例如一个在线商城系统的消费者、运营小二、系统管理员等;
推荐阅读
- 上游新闻|?你确定?,扫个厕所要18道工序、46种工具
- Win10又绕过用户强制重启 只为安装Office网页版工具
- 公司|华锐工具:今年科创板过会第145家 招商证券过5单
- ITheat热点科技|锐龙 5000 移动低压处理器曝光:Zen 3 架构,AMD
- |航母时速大约是30节,如果将其换算为地面交通工具,到底有多快?
- 假如我能勇敢点|独立站及外贸免费工具,溪致科技推荐8个亚马逊
- 趣头条|有了简易洗车工具套装,又可以省一大笔开销!
- 兔玩电竞|剑姬凯隐成版本答案吸血流剑姬统治上路凯隐晋升打野一哥阿狸转型工具人中单魔切女枪崛起总结,10.21强势套路推荐
- 趣头条途观搭载随车小型工具箱,小问题自己修省钱更方便!
- 兔玩电竞|10.21强势套路推荐 剑姬凯隐成版本答案吸血流剑姬统治上路凯隐晋升打野一哥阿狸转型工具人中单魔切女枪崛起总结
