【职场修仙】- 设计图篇

1,687 阅读3分钟

- Live and Learn - (6).png

前言

工作中难免要写技术方案,今天写个架构设计,明天写个组件设计,反正就是在你开开心心写代码主之前,总有xxx让你写设计方案,设计方案最核心的部分又是设计图,设计图又分很多种,在什么情况下用什么样的设计图,每次都会困惑我很久。那么今天我们就来个汇总,彻底把设计图这个问题搞明白。

基础

在开始学习设计图之前,我们首先要知道我们画图的目的:

用它们来表达你将如何构建一个软件系统(预先设计)或者现有的软件系统是如何工作的(回顾文档、知识分享和学习)。

所以将图画的清楚,明白,是我们的重点,含糊不清的软件架构图容易导致误解,这可能会拖慢一个优秀团队的前进步伐,如何对软件架构图进行拆分,我推荐一篇文章用于软件架构的C4模型 C4模型体现了分层架构思想,是业界优秀的架构图表达思想之一

[Context、Container、Component、Code] C4 模型由一系列分层的软件架构图组成,这些架构图用于描述上下文、容器、组件和代码。C4 图的层次结构提供了不同的抽象级别,每种抽象级别都与不同的受众有关。

下面我们来看各种不同的图例

各种类型图

系统架构图

适用场景:概要设计的主图

要点:

  • 静态图(标识有哪些模块) vs 动态图(标识业务过程)

    • 推荐两张合在一起
    • 或者可以各画一张图
  • 各模块的标准化图示

    • 服务:中文名英文名(S0),方框。当同一类模块需要进一步分类时,推荐采用不同颜色,并在图中附上示例
    • 数据库:圆柱体
    • 用户:用户图例
  • 当服务较多时(例如>7)

    • 用泳道划分层次
    • 用虚框线对服务进行分组
  • 大部分业务项目(不涉及大幅架构调整的)

    • 尽可能把主要流程都画出来
    • 推荐在服务下方注明改动了什么

图例

架构图的副本.drawio.png

UML类图

适用场景:常用与详细设计

要点:

图例

image.png

流程图

适用场景:表达业务流程的可选方式,优点是较为通俗,方便产品、业务同学理解

要点:

  • 主要在表达流程,重点在流程,不是实现。

图例一

线上问题处理SOP.png

图例二

image.png

时序图

适用场景:表达业务流程的可选方式,优点是较为精确,方便技术达成共识

要点

图例

时序图.png

状态机图

适用场景:涉及状态流转,可建模为有限状态机

要点

  • 状态机图用于模拟各个类对象,用例和整个系统的动态行为

图例

image.png

ER图

适用场景:当涉及实体较多时,用ER图表现各个实体之间关系

要点

  • 推荐引入DDD域概念(核心域、支撑域、通用域)来对各个表进行区分

图例

image.png

参考文献