ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

流程图绘制规范:从控制流到符号布局,让每一张图都能被看懂

流程图绘制规范:从控制流到符号布局,让每一张图都能被看懂 我见过太多“画完自己都看不懂”的流程图了。尤其是项目评审的时候一屏幕花花绿绿的框和线每个人都以为自己看懂了结果一讨论每个人理解的都不一样。搞到最后大家宁愿回去翻三百字需求文档也不愿意看那张本该省时间的图。问题大多不出在画图工具上而出在画图的人脑子里有没有一套统一的绘制规范。流程图之所以叫图是因为它能把一个过程压缩成一张静态的图让人按顺序看下来就知道先做什么、后做什么、什么情况下走哪条路。这个目标听起来很简单真要做到却不那么容易。这篇内容就是围绕“流程图的绘图规范”来写的。我会先讲规范背后的逻辑再给一套可以直接落地、可以照着抄的符号与步骤最后用图书馆管理系统的还书流程做全程演示。它适合这么几类人准备毕业设计的同学论文里几乎必须画流程图刚接手带流程的软件项目的新人以及所有需要和团队对齐业务流程的产品、运营、测试同学。小白读完至少能画出一张别人看得懂的流程图老手也能借这个框架回头审视自己那些“画得很爽但别人看不懂”的图。1. 为什么你的流程图别人看不懂1.1 流程图在本质上描述的是“控制流”流程图不是信息罗列它描述的是控制流。什么叫控制流就是从起点出发按照时间顺序逐个节点执行遇到分支就根据条件选择去向直到到达终点。这非常像计算机执行程序一次只能在一个节点上停留执行完一个动作才能去下一个动作遇到判断就必须分叉。很多人画出来的图之所以让人犯晕是因为画图的人把自己跳跃的思考过程直接堆进了图里。比如一个节点上写着“遍历用户列表找到状态正常的账号如果存在就发送通知否则返回空同时更新最后登录时间”。这一段话里至少混了三个动作、一个判断、一个异常分支正常读者根本不知道下一步该往哪走。规范的流程图本质上只保留五类元素对象谁在做、动作做什么、顺序先做什么再做什么、分支什么条件下走哪条路、边界什么时候开始、什么时候结束。如果一句话里同时混入了业务背景、界面细节、多条规则和情绪语言那它应该回到需求文档里而不是塞进流程图里。流程图表达得越“薄”读者理解起来越“厚”。1.2 同一段需求规范版和不规范版差多远我拿最常见的登录流程来举例。不规范的画法长这样一个大矩形框里写“用户输入账号密码系统校验正确就进入首页错误就提示”然后结束。看起来好像也没错但这真的只是一句话加了个框不是流程图。规范画法要拆成节点流程应该是开始 → 用户输入账号密码 → 系统校验账号密码 → 判断账号密码是否一致 → 不一致则提示错误结束 → 一致则进入系统首页结束。拆开之后每个节点只有一个动作判断是判断操作是操作分支结果明确标注在出口上。为什么拆开之后才看得懂因为“校验”这个动作在原始描述里既包含了判断又包含了两个结果拆开后读者不需要猜测“正确”之后是直接进首页还是先做点别的也不需要替画图人脑补“错误”具体指什么错、提示完去哪。流程图的规范不是形式主义而是把隐藏在长句里的逻辑判断显式化让每个人的理解对齐到同一套结论上。1.3 不规范的代价不是“丑”是误读图丑一点顶多影响观感图看不懂影响的就是交付。不规范流程图的真实代价往往在画完图之后才暴露第一沟通产生分叉。十个人看同一张不规范的图能得出八种理解。产品以为“校验”包含密码强度判断开发以为“校验”只查账号是否存在测试又觉得“校验”需要覆盖黑名单场景。一张本来就该消除歧义的图反而成了新的歧义来源。第二测试用例会漏。判断条件没有在出口标注时测试设计经常漏掉异常分支。比如密码错误这条路径图里没画清楚测试就只覆盖了成功登录上线后被用户一摸就出问题。第三后期转需求、转代码、转BPMN全都得重来。规范的流程图可以直接成为开发方案底稿可以相对顺畅地翻译成状态判断或BPMN网关不规范的图翻译的人必须反复找人确认这个返工成本比重新画一张图还高。所以规范的核心目标始终是降低信息噪声让流程图成为一门精确语言而不是印象派画作。2. 画图前必须想清楚的五件事2.1 先确定你要画的是哪一种图流程图的近亲很多很多人一开始就选错图种。这里先做一个简单区分控制逻辑为主、强调先后顺序的选流程图多个角色或系统之间协作、需要明确职责边界的选跨职能泳道图描述对象在不同状态之间迁移的选状态图描述多个系统组件之间按时间顺序调用的选时序图描述数据从哪产生、流经哪些存储、最终去哪的选数据流图DFD。这里特别容易踩坑的是“软件工程流程图”和“系统流程图”。很多同学毕业设计里把数据流图DFD和流程图混着画DFD里用圆圈表示处理、不强调时间顺序而流程图强调控制流和执行顺序两者本质不同。选错了图种后面怎么画都会别扭。产品流程图、技术流程图、算法流程图虽然都叫流程图但服务的目标不一样产品图偏重业务规则是否完整技术图偏重逻辑能否落地算法图偏重循环与分支的严密性。动手之前先问一句我这张图是给谁看的他要从图里得到什么答案决定了图种和颗粒度。2.2 用“四问法”把流程理清楚再动笔我在画任何流程图之前都会先回答四个问题答案写不出来就不碰画图工具。一问起点这个流程从什么事件开始触发触发方是谁比如登录流程的起点是“用户打开登录页并提交账号密码”而不是“用户访问系统”。二问终点什么情况下算流程结束正常结束长什么样异常结束又长什么样登录流程正常结束是进入首页异常结束是提示错误且停留在登录页。三问角色这个流程涉及哪几个角色或系统它们各自的动作是什么如果读者、馆员、系统都在同一张图里出现那基本可以确定要画泳道图。四问主路径在没有任何异常的情况下最顺畅、用户最常走的那条路径是哪条先把主路径画出来再考虑分支比一开始就铺开全部异常分支要好得多。我见过太多人一上来就画图画到一半发现分支太多、线绕来绕去最后推倒重来。四问法的价值在于文字表达可以很随意但一旦你需要把这些答案变成流程图的节点和箭头任何逻辑缺口都会立刻显形。2.3 一次只画一张图能分层就不要硬塞流程图的大忌是一张图想讲完整个系统。如果一个流程超过十五个节点强烈建议拆层。顶层图只放主流程和关键子流程节点每个子流程在单独的图里展开。以图书管理系统为例顶层流程图会有“借书”“还书”“续借”“预约”几个大环节每个环节内部又有一串动作和判断。如果强行画成一张总图节点上百个线的复杂度会爆炸。这也是“预定义过程”节点左右双边矩形存在的意义它代表“此处展开为另一张流程图”。顶层图给读者一个全局视野展开图给读者局部细节两层结构互相配合比一张巨型流程图更符合阅读习惯。3. 常用符号与对应语义别再用矩形框装判断3.1 核心符号对照表流程图的符号规范是有国际标准底层的最常用的是ISO 5807日常画图只需要掌握其中八成即可。我按实际使用频率整理了一张表符号图形特征含义典型使用场景起止节点圆角矩形或椭圆流程的开始与结束第一张图上方的“开始”流程末尾的“结束”操作/处理节点矩形一个动作、一步处理“查询借阅记录”“发送通知”“更新库存”判断/决策节点菱形根据条件决定走向“是否存在在借记录”“密码是否正确”文档节点底边为波浪形的矩形输入或输出的文档“打印还书凭单”“生成报表”数据输入/输出平行四边形数据的输入或输出程序中的“输入账号密码”“输出计算结果”预定义过程左右双边矩形可展开为另一张流程图的子流程顶层图中的“借书流程”另图展开连接符圆形内置编号跨页或绕线时指示连接关系同一页被长线绕行时用编号对应等待/延时六边形流程发生等待“等待系统响应”“排队中”建议你在团队里固定这套符号不要临场发挥。很多人喜欢用圆角矩形表示操作、用矩形表示判断这种自创做法在自己电脑里没问题一旦交给其他人阅读歧义立刻就来了。统一符号是流程图规范的第一条底线。3.2 菱形判断的两个出口怎么标菱形判断节点是流程图里最容易画错的地方。一个判断节点必须有一个入口、至少两个出口而且每个出口线上必须标注条件是/否、Y/N、大于/等于/小于等。没有出口标签的菱形在读者眼里就是一个路牌上没有方向的分岔口。我习惯的做法是真值“是”往下走假值“否”往右走。这样主路径保持向下主流程的阅读顺序不会被频繁打断。比如新增用户模块里的判断“必填项是否完整”两个出口就分别标“完整”和“不完整”后面各接各的处理逻辑。有时候一个菱形要表达三态怎么办比如数值比较的结果是“大于、等于、小于”。可以把判断框写成“数值关系比较”然后三个出口分别标“大于”“等于”“小于”。但要注意不要让出口标签写成长句。如果一个箭头上写了“用户不存在且账号已被锁定所以跳转到错误提示页”说明你根本不是出口标签写得不够而是节点拆分不到位。遇到长标签往回查把“组合判断”拆成多个菱形才是正路。3.3 什么时候可以用自造符号我不是说任何符号都必须刻板按国际标准来。团队内部使用完全可以约定一些特殊符号比如用带闪电标志的节点表示“通知事件”用信封形状表示“消息”。但有两个前提第一出现自造符号就必须配图例图例画在图的右下角或左下角让第一次看图的人能查到含义第二对外交付的图尤其是毕业设计、论文、跨部门评审尽量只用通用符号不要给自己找麻烦。这里顺带提一下BPMN网关。BPMN里的网关图形看起来和菱形很像但语义丰富得多排他网关XOR表示多选一并行网关AND表示全部分支同时执行包含网关OR表示满足条件的多个分支都执行。如果你的团队明确在用BPMN流程图那网关就按BPMN的语义来如果只是普通流程图的菱形判断就不要扩展它不具备的语义。混用是评审现场最常见的翻车原因之一。3.4 不同场景对符号的依赖并不一样算法流程图、工艺流程图、数学建模流程图虽然都用到这套符号但侧重不同。算法流程图对循环结构的要求很高注意for循环、while循环的回边处理循环边界必须清晰跳出循环的判断条件要明确。工艺流程图和PID流程图则必须遵循对应领域的标准图形语义更多更专但布局规范是共通的。数学建模流程图通常只做环节展示符号可以简化但每个环节最好还是用“动词名词”表达不要用名词短语堆砌。理解了这一点你在画不同领域的流程图时就不会被网上的“模板”带偏。4. 一个案例串起主流程绘制的标准步骤4.1 案例选择图书馆管理系统的还书流程为什么选还书流程做演示一是因为“图书馆管理系统毕业设计流程图”是高频搜索词几乎所有图书管理类项目都会涉及二是因为还书流程同时覆盖了主路径、异常分支和跨角色协作用来演示绘图规范非常合适。以还书为线索你可以看到“步骤清单—符号化—泳道化”的全过程。4.2 第一步把需求写成有顺序的步骤清单先别碰画图工具先把业务规则用文字按顺序列出来。我给出的演示清单是读者在服务台提交还书申请馆员扫描图书条码系统根据条码查询借阅记录判断是否存在在借记录不存在提示“未查询到借阅记录”流程结束存在继续判断图书是否有逾期或损坏无异常登记还书更新图书在馆状态打印还书凭单有异常计算罚款或赔偿金额读者完成缴费再登记还书、更新状态、打印凭单流程结束。很多人习惯一上来就画符号画到一半开始改逻辑结果图也乱、逻辑也没理清。直接把业务规则写成文字本质上是先逼自己把“顺序”和“分支”想明白。文字表达是允许重复的、允许模糊的符号化之后这些模糊就会变成明显的逻辑断点。4.3 第二步把清单翻译成符号把上面的步骤翻译成流程图的符号语言对应关系是这样的“读者提交还书”对应起止节点之后的第一个操作节点注意“读者”是角色可以放在泳道里“馆员扫描条码”是第二个操作节点“系统查询借阅记录”是第三个操作节点也可以画成数据输入输出节点接下来进入菱形“是否存在在借记录”它的“否”出口连接一个操作节点“提示未查询到借阅记录”然后再接到结束节点“是”出口则继续走向下一个菱形“是否有逾期或损坏”。“是否有逾期或损坏”这个判断要分两条出口一条“否”接到“登记还书”一条“是”接到“计算罚款或赔偿金额”缴费完成后汇合到“登记还书更新在馆状态”最后统一到“打印还书凭单”和结束节点。这里有一个细节值得注意结束节点可以是多个。“提示未查询到借阅记录”之后可以直接结束异常缴费流程结束之后也可以结束。这些结束分支合并到同一个结束节点或者保留多个结束节点都是允许的。只要保证开始节点只有一个读者就能顺着主线一路走到底。4.4 第三步决定要不要升级成泳道图如果这张图只是描述系统的处理逻辑普通流程图就够用了。但图书馆还书流程里有读者、馆员、系统三个不同的参与方我建议升级成泳道图三列分别是“读者”“馆员”“系统”。读者提交申请放在读者泳道馆员扫描条码放在馆员泳道系统查询借阅记录、判断是否存在在借记录放在系统泳道。这样一来每个节点的责任主体一目了然跨泳道的连接线本身就表达了交互和职责移交。泳道图有一个隐性收益能暴露出职责不清的节点。比如“判断是否有逾期或损坏”这个动作到底是馆员人工判断还是系统根据借阅数据自动判断画泳道图时你不得不回答这个问题。很多时候业务理不清一画泳道图就暴露无遗。4.5 普通流程图的菱形不够用了怎么办如果还书流程中有这样一个分支“读者有逾期费用未缴且图书存在损坏”你发现两条分支都要处理普通菱形就表达不完整了。这时候你才需要回头考虑BPMN网关。我给你的建议是不要为了“高级”而用BPMN。普通流程图能表达清楚就用普通菱形等业务逻辑真正需要“并行执行”或“多条件满足时执行多个分支”时再学BPMN的排他网关、并行网关、包含网关。先把标准流程图画对再谈扩展这样最稳。5. 布局与连接线的设计规范5.1 方向选择与主路径优先流程图的阅读方向默认是自上而下必要时可以向右扩展但尽量少用自下而上的连接线。主路径是整个流程里最顺畅、最常用的一条路它应该始终保持在视觉的“主通道”上不要被分支干扰。拿登录流程举例主路径是“开始→输入账号密码→系统校验→进入首页”这条线应该从上往下笔直走异常分支“密码错误”再往右拐。如果主路径一会儿往左一会儿往右读者很容易丢失“我现在在流程的哪个位置”的定位感。5.2 判断节点的出口布局判断节点最常见的布局问题是“是”“否”两条出口线交叉或者两条线绕过一大圈才各自到达目标节点。规范的做法是判断节点放中间偏左的位置“是”往下走“否”往右走或者反过来但保证交叉最小化。如果两条分支走到后面要合流比如异常处理完成后和正常处理汇合到“登记还书”这个节点这是允许的多条线汇聚到一个节点本身不违规。但要确保汇聚之后该节点仍然只有一个出口继续向下否则又会变成身份不明的分支。一个判断节点后面最好不要跟着超过三个出口。如果出口太多考虑拆分判断条件用多个菱形来完成一次多维度的决策。比如“是否逾期、是否损坏、是否缴纳费用”这三个条件不要写进一个菱形里而是拆成三个菱形串行这样每一步的逻辑都更清楚。5.3 连接线交叉、绕路、跨页的处理连接线是流程图的生命线也是大部分流程图画得乱的根源。三条最基本的规则第一条交叉线能避则避。不可避免时很多绘图工具支持“跳线”功能在交叉点画一个小小的桥在线和线相交的地方明确表示“这里不相连”。如果工具不支持跳线就重新调整节点布局把交叉降到最低。第二条一条连接线只表达一个流转关系。不要为了少画一条线让一个箭头同时指示两个方向也不要画“来回线”表达循环。循环用判断节点加回边解决回边尽量从侧面绕回不要横穿主路径。第三条长线是违禁品。如果一个节点和另一个节点相隔十万八千里需要通过长线才能连接说明布局需要调整。跨页时用连接符节点比如第一页结束处的圆形节点里写数字“1”第二页对应的位置放同样编号“1”的圆形节点读者通过编号跳转。不要梦想一张图塞下所有内容分页是正常的。5.4 节点文字的写法节点文字最能体现一个人对流程图规范的理解深度。操作节点用“动词宾语”的短语比如“查询借阅记录”“更新图书状态”“打印还书凭单”不要写完整句更不要写带主语的叙述句。“系统需要去数据库里把这本书的所有借阅记录查询出来然后展示给用户看”这句话放到流程图里应该被拆成“输入图书条码”“查询借阅记录”“展示借阅信息”三个节点。判断框内写条件本身不写动作结果。比如菱形里写“是否存在在借记录”出口线上写“是”“否”而不是在菱形里写“去查询是否有借阅记录”。箭头上方可以写“是/否”这类短标签不要写长判断表达式。字体方面全图尽量保持一种字体、一种字号特殊情况用加粗或颜色突出重要路径但不要大面积变色。节点文字长度不要超过节点宽度超出就换行或者精简。5.5 泳道、底色与图例的适度使用泳道和底色可以帮助读者快速定位角色和系统边界但使用要克制。第一颜色不要作为唯一的信息载体因为图被打印成黑白后颜色信息会全部丢失。假设红色表示“异常分支”那么打印成黑白后读者就看不出异常在哪了需要在异常路径上用文字标签辅助说明。第二图例必须的场合用了自造符号、特殊颜色、非标准图标就一定要在图例里说明。论文和毕业设计里一张流程图自带图例能给评审老师留下很专业的印象。第三节点之间的间距和连线的方向要统一。现代画图工具几乎都有一键对齐、均匀间距、统一尺寸的功能画完以后花一分钟做一次自动整理图的专业度会立刻提升一个档次。6. 流程图质量的审查清单与常见错误对照6.1 高频错误对照表我在项目评审里见过的流程图问题翻来覆去其实就那么几类。整理成对照表边画图边查常见错误规范做法没有开始或结束节点加上圆角矩形起止节点明确边界一个大矩形里写多句话拆成多个操作节点一个节点只做一件事判断节点出口没有标注条件每个出口线上写“是/否”或具体条件箭头指向混乱主路径绕来绕去重排布局主路径保持自上而下直行判断条件写在箭头上、判断框内空白条件写入菱形出口只标结果一个节点有多个出口但没说明条件拆判断或每个出口都标注明确条件连接线交叉过多调整布局用跳线或连接符节点文字写成完整长句精简为“动词宾语”短语数据流和控制流用同一种线数据流改画数据流图DFD或做线型区分节点间距忽大忽小字体不统一用工具的对齐、统一间距、统一样式功能整理这条表适合打印出来贴在工位上。画完一张图拿它从头到尾扫一遍大多数问题都能当场发现。6.2 画完之后的五步自查除了对照错误表我每次出图前还会做一轮“纸上运行”。所谓纸上运行就是把自己当成计算机手指点在开始节点上沿着箭头一步一步走每到判断节点就随便选一条分支看最终能不能走到结束节点。五个自查项第一开始节点是否有且仅有一个一张流程图如果出现两个“开始”读者会立刻分裂成两派。第二从开始到结束能不能读出一条完整主路径如果主路径自己都走不通说明图里的逻辑有断点。第三每个判断节点是否至少有两个出口并且出口都带标签没有标签的判断节点就是逻辑黑洞。第四每个操作节点是否有且仅有一个入口和一个出口一个操作节点同时被两条线流入语义上就等于一次执行了两个前置动作这通常意味着图里缺少判断节点。第五图例是否解释了一切非标准符号和颜色如果这张图还要交给别人评审图例就是你的说明书。6.3 给团队评审时怎么按规范提问评审流程图时别只说“我觉得这张图看不太懂”“感觉不够直观”这种反馈对改进没有帮助。要按规范给出具体问题。我常用的提问话术是“从这个判断节点的‘是’出口走接下来到哪里为什么‘否’出口反而绕了这么大一圈”“这个操作节点同时有两条线流入是不是漏画了一个判断还是的确无条件汇合”“这个子流程节点的展开图里必须有入口和出口你确定两头的节点和顶层图对得上吗”“你说的‘判断是否超期’是由系统自动判断还是馆员人工判断这张图里看不出来。”这几个问题一出口画图的人立刻知道自己该补什么。规范的价值就在这些场景里体现它不是束缚创意的条条框框而是让所有参与同一件事的人能站在同一套语言体系里交流。最后再说一个我个人坚持到现在的习惯每次画完流程图我都会把屏幕转过去让一个没有参与这个项目的人从头到尾走一遍。只要他在某个节点停留超过三秒说明那个地方的表达不够直白可能是符号用错了可能是该拆分的没有拆也可能是出口条件没有标清楚。流程图的核心目标从来不是美观而是让任何具备基本阅读能力的人看图之后都能得出同一个结论。能做到这一点你的图就算真正画规范了。
返回列表