视图如何画出一张优秀的架构图?( 三 )


2. 容器图 (Container Diagram)
容器图是把语境图里待建设的系统做了一个展开 。
视图如何画出一张优秀的架构图?
本文插图
上图中 , 除了用户和外围系统 , 要建设的系统包括一个基于 javaspring mvc 的 web 应用提供系统的功能入口 , 基于 xamarin 架构的手机 app 提供手机端的功能入口 , 一个基于 java 的 api 应用提供服务 , 一个 mysql 数据库用于存储 , 各个应用之间的交互都在箭头线上写明了 。
看这张图的时候 , 不会去关注到图中是直角方框还是圆角方框 , 不会关注是实线箭头还是虚线箭头 , 甚至箭头的指向也没有引起太多注意 。
我们有许多的画图方式 , 都对框、线的含义做了定义 , 这就需要画图的人和看图的人都清晰的理解这些定义 , 才能读全图里的信息 , 而现实是 , 这往往是非常高的一个要求 , 所以 , 很多图只能看个大概的含义 。
用途
这个图的受众可以是团队内部或外部的开发人员 , 也可以是运维人员 。 用途可以罗列为:

  • 展现了软件系统的整体形态
  • 体现了高层次的技术决策
  • 系统中的职责是如何分布的 , 容器间的是如何交互的
  • 告诉开发者在哪里写代码
怎么画
用一个框图来表示 , 内部可能包括名称、技术选择、职责 , 以及这些框图之间的交互 , 如果涉及外部系统 , 最好明确边界 。
3. 组件图 (Component Diagram)
视图如何画出一张优秀的架构图?
本文插图
组件图是把某个容器进行展开 , 描述其内部的模块 。
用途
这个图主要是给内部开发人员看的 , 怎么去做代码的组织和构建 。 其用途有:
  • 描述了系统由哪些组件 / 服务组成
  • 厘清了组件之间的关系和依赖
  • 为软件开发如何分解交付提供了框架
4. 类图 (Code/Class Diagram)
视图如何画出一张优秀的架构图?
本文插图
这个图很显然是给技术人员看的 , 比较常见 , 就不详细介绍了 。
案例分享
下面是内部的一个实时数据工具的架构图 。 作为一个应该自描述的架构图 , 这里不多做解释了 。 如果有看不明白的 , 那肯定是还画的不够好 。
视图如何画出一张优秀的架构图?
本文插图
画好架构图可能有许多方法论 , 本篇主要介绍了 C4 这种方法 , C4 的理论也是不断进化的 。 但不论是哪种画图方法论 , 我们回到画图初衷 , 更好的交流 , 我们在画的过程中不必被条条框框所限制 。 简而言之 , 画之前想好:画图给谁看 , 看什么 , 怎么样不解释就看懂 。
END


推荐阅读