架构的C4模型是一种软件模块设计范式,它包括四个部分。
- 上下文关系图
- 解决方案容器图
- 技术组件图
- 功能类图
其实写软件如同写科研论文一样。
首先是分析问题,将问题划分为不同的子问题。
不同的子问题就相当于不同的章节。章节之间的依赖关系要满足:基本章节在前面,后面的章节依赖于前面的章节。
章节之间的依赖关系相对比较简单,一般只需要引用依赖即可。描述章节之间依赖的就是上下文关系图。C4模型的上下文相当于是软件的引言。软件中的引用依赖相当于接口。
对不同章节都提出可能的技术解决方案也即技术组件,这些技术组件之间的依赖关系可以比较复杂。往往涉及到交叉依赖。章节就相当于一个容器,容器内是技术组件。
论文的章节中一般含有的各个子小节,就是这个章节的技术模块组件。所以章节中包含子小节就是容器图,子小节反映为技术模块。
子小节内会有各种工具,并使用这些工具来解决子小节的各个方面的细致问题。一般这些工具就相当于论文中的段落。在软件架构中,这些工具就是功能类图。所以每一个技术组件都可以细化为各种功能类图,类图之间的关系就形成了组件的架构图,一般用包图来实现。
注意:论文的段落之间原则上是流程化的。软件架构在这个层面与写论文有不同之处。软件架构中的功能类图之间除了流程之外,还有动态交互。
综上,一个软件架构设计书中,总计包括:
- 一张上下文关系图以及对应的流程图,上下文关系图的组成元件是容器。每个容器之间用接口来传递数据。
- 上下文关系图中的每个容器都要对应一张容器图,容器图内的组成元件是组件。每一个容器图都需要对应的流程图。
- 每个组件都需要对应一张类图,一张流程图。如果是接口型组件,需要设计交互时序图。
网友评论