我刚接触搞这些“绘图”的东西的时候,我也是一脸懵圈的,啥玩意儿,又是方框又是线的,感觉像是小孩子过家家。我琢磨着,这玩意儿肯定不是随便乱画的,背后一定有啥道理在里头。于是我就开始啃那些所谓的“设计规范”,结果越看越迷糊,术语一大堆,什么逻辑流、实体关系、状态图,听着就头大。
我干脆撂下那些理论书,直接找了个实际的项目,那是一个很简单的用户注册流程。我决定自己动手一步步来,看看这“绘图”到底是怎么一回事。
第一步:拆解流程,画出主线
我先是把整个注册流程掰开了揉碎了,从用户打开APP开始,到收到注册成功的短信为止。我拿张大白纸,先用圆角矩形框住“开始”和“结束”这两个点,这算是我的地盘范围。
然后,我开始画“动作”。用户点击了“注册”按钮,这是一个动作,我就画了一个长方形。紧系统要判断输入的信息对不对,这是一个“决策点”,我就画了个菱形。菱形后面必须分叉,往左是“输入有误”,往右是“信息正确”。

- 画矩形表示要做的事情。
- 画菱形表示需要做判断,然后根据结果走不同的路。
我发现,只要我把每一步动作和每一步判断都用不同的形状标出来,再用箭头把它们连起来,整个流程就清晰多了。那个菱形出来的两条线,一条指向弹出一个错误提示框(又是一个动作),另一条指向下一步处理。
第二步:搞清楚谁跟谁有关系
光有流程还不够,我发现系统里头还有一堆“东西”在互相影响,比如用户、数据库、验证码服务这些。我开始尝试画“实体关系图”,这玩意儿比流程图复杂点,但逻辑更底层。
我把“用户”看作一个实体,用一个矩形框住。然后把“用户表”也看作一个实体。我发现,一个用户可以对应数据库里的好多条记录,但一条记录只能属于一个用户。我用一条直线把它们连起来,在线上标注了他们之间的数量关系——一对多。
接着我试着加入“验证码”这个信息。验证码是用户获取的,它和用户之间也存在关系。我发现,绘图的目的就是把这些抽象的概念,用最简单、最直观的几何图形给固定下来,让所有人都看得懂。

第三步:规范化我的画法
一开始我乱画,箭头粗细不一,符号乱用。后来我发现,如果我坚持使用一套固定的符号,其他人看我的图的时候,就不需要我再额外解释了。比如,我坚持用椭圆代表开始和结束,用箭头代表流程走向,用带属性的方框代表数据结构。
我把整个过程当成在给一个完全不懂项目的人讲故事。我画图不是为了炫技,而是为了“沟通”。当我把一个复杂的系统用流程图和结构图画出来之后,我发现我自己的理解也加深了好几层。
你看,绘图这玩意儿,本质上就是把脑子里那些乱糟糟的想法,强行塞进一个个固定的模子里,让它们变得有秩序、有逻辑。等我把这个简单的注册流程图画熟练了,再去看那些复杂的系统架构图,虽然看起来形状多了,但万变不离其宗,无非就是那些矩形、菱形和箭头的组合排列罢了。
现在再看那些图,我就明白,它们就是在描述“谁在什么时候,对谁做了什么事,事情的结果是什么”,就这么简单。









