架构图与流程图到底怎么画?从工具选型到AI辅助一次说透
发布时间:2026/10/6 3:49:57 作者:尧图编辑部 阅读量:1,286

前几天有个做后端的朋友问我画架构图和流程图到底用哪个画图工具我反问他一句你这张图是画给谁看的自己写代码时用还是拿去跟产品对需求还是要放进方案PPT里给老板拍板他愣了半天说没想过这个问题。这就是很多人选工具选不明白的根源——画图工具从来不是越贵越好、功能越全越好而是跟你的使用场景匹配才是真的好。这篇文章我就围绕画图工具推荐这件事把选型逻辑、工具实测、架构图画法、流程图画法、AI辅助画图这几个部分一次说透。你会看到同样一张系统架构图为什么有人用Visio有人用draw.io还有人直接用代码写Mermaid也会看到一张用户管理模块流程图或算法流程图是怎么从零一步步画出来的。不管你是有几年经验的技术人还是刚接触画图的新人只要照着这篇文章的思路走一遍至少能少走两个月弯路。1. 先别急着下工具把这张图画给谁看想清楚1.1 三种典型场景对应完全不同的选型逻辑我在不同公司、不同项目里待过也帮人审过不少设计文档发现画图需求大致能归成三类。第一类是方案沟通图比如给领导汇报的系统架构图、给客户的微服务架构图。这类图的重点是好看、清楚、一眼能看懂需要精修颜色、间距、图标都得讲究。第二类是开发协作图比如放在代码仓库里的流程图、用户管理模块的时序图、数据库关系的ER图。这类图的重点是跟着代码走、方便改、能版本管理。第三类是临时思考图画给自己看梳理逻辑用的比如画一张MyBatis的XMLConfigBuilder工作流程图来辅助读源码或者画一张算法流程图推导思路。这类图最重要的是画得快难看点无所谓。这三类需求对工具的要求完全不同。以前我只推荐一个工具后来发现这是偷懒。正确做法是先判断自己属于哪类场景再去选工具这样效率最高。1.2 从热搜词里能看到大家的真实需求文章的附带信息里有很多搜索热词我扫了一遍发现还挺有意思基本能对应到上面三类场景搜微服务架构图软件架构图芋道系统架构图的是要画方案图搜用户管理模块流程图mybatis中xmlconfigbuilser的工作流程图renpy流程图制作的是要画开发图搜算法流程图流程图转化为控制流图算法 流程图 习题的更像是在学习或做作业要的是快速表达逻辑。还有一个值得单独说下的词bpmn流程图网关使用。这属于业务流程建模领域的专业问题说明一部分人画流程图的场景已经升级到工作流引擎、审批流这种级别了。这意味着你不光要会画箭头和菱形判断框还得理解BPMN里的网关、泳道、事件这些东西。我在第4章会专门展开讲。1.3 我的选型决策思路我现在给自己定的决策规则是这样的也分享给你作为参考如果是方案汇报图优先选Visio或ProcessOn这类拖拽型工具因为模板多、样式专业能快速做出一张视觉效果好的图。如果是在代码仓库里维护的图优先选Mermaid或PlantUML这类文本型工具因为图就是代码能放进Git能diff能自动跟随版本演进。如果是画一个复杂业务流程图、需要多人实时协作选draw.io或ProcessOn分享链接就能一起改。如果只是画给自己看的草稿那用什么都行甚至白纸也行关键别在工具上纠结。这套思路的核心是把工具选择和你交付的载体绑定。载体是PPT就选成品图工具载体是Git仓库就选文本图工具载体是协作文档就选在线协作工具。理顺这个逻辑你再去对比具体的工具特性就不会被各种功能介绍带偏。2. 六款主流工具实测拖拽派与文本派的真实差距2.1 拖拽派Visio、draw.io、ProcessOn怎么选先说我用得最多的三个拖拽型工具。Microsoft Visio是老牌桌面工具图表类型极全从网络拓扑图到组织结构图都有现成模板。它的强项是专业度和细节控制画出来的架构图能直接进PPT字体、线型、填充效果都非常正式。缺点是贵按年订阅而且本地单机协作体验一般文件传来传去容易出多个版本。我司很多做解决方案的同事喜欢它但纯开发团队里反而不常用。draw.io是我的主力工具它是个开源的在线绘图应用也提供桌面版。它最大的优势是可以直接把图保存成XML文件然后丢进Git仓库管理别人通过链接就能打开看。它还支持直接存到GitHub、GitLab、网盘和开发流程结合得非常好。虽然默认样式看起来朴素但胜在灵活什么图都能画而且免费无限制。ProcessOn在国内用得比较多它是偏协作和模板社区的产品。模板中心里能找到很多大佬分享的架构图、流程图、思维导图画图前先去扒一张好看的模板能省很多排版功夫。免费版限制个人文件数量但日常用基本够了。它更适合需要从社区抄作业的场景比如你让我凭空设计一张手机中框工艺流程图我大概率会去参考一下制造业的现有模板。亿图图示这类国产工具也可以纳入考虑模板丰富度是最大卖点界面比Visio更符合中文用户习惯但它的正版价格也不算低除非公司统一采购否则我建议先试试上面几个免费方案。2.2 文本派Mermaid、PlantUML、Graphviz各自擅长的领域文本画图是很多程序员喜欢的路子我也不例外。核心思路是用纯文本描述图形结构然后由工具渲染成图。Mermaid语法最简单适合画时序图和基础流程图。GitHub的README里可以直接嵌Mermaid代码块Markdown文档里也能直接用这是它最大的杀手锏。我写接口文档时顺手就能在下方嵌一段Mermaid流程图代码评审时大家都看得懂。PlantUML胜在UML图形全面时序图、类图、用例图、部署图都有成熟语法更适合画复杂的软件设计图。比如你想画一个微服务架构的部署视图用PlantUML的组件图和部署图组合表达效果比Mermaid好。代价是语法的学习成本略高改样式尤其麻烦想微调就得去折腾skinparam参数。Graphviz是老牌自动布局工具它用dot语言描述节点和边由算法自动排版。它的优势在于复杂关系图比如几十个节点的依赖关系图、流程图转化为控制流图这种手动画必然乱丢给Graphviz自动布局反而清楚。缺点是布局结果有时候很反直觉你得接受它不按你的想法排版。2.3 一张表格看清核心差异说了这么多我用一个表格直接对照一下主要参数方便你按需求查表工具上手成本免费程度协作能力导出格式典型场景Visio中等付费订阅弱桌面文件图片、PDF、SVG正式方案图、网络拓扑图draw.io低完全免费在线实时协作图片、XML、PDF、HTML开发协作、开源项目图、任意场景ProcessOn低免费版够用在线实时协作图片、PDF等模板参考、业务流程图、思维导图Mermaid极低完全免费天然支持Git渲染成图片/SVGMarkdown文档、接口文档内嵌图PlantUML中高完全免费天然支持Git渲染成图片/SVGUML类图、时序图、部署图Graphviz中高完全免费天然支持Git渲染成图片/SVG复杂依赖图、自动布局图2.4 我日常的组合用法我现在的工作流是一套组合拳不押注单一工具**画业务流程图、架构方案图时用draw.io或ProcessOn进Git仓库的规范图用Mermaid或PlantUML给领导汇报的成品图用Visio精修一下。**文本图的好处是能被diff改过什么一目了然这在评审时特别有用拖拽图的好处是所见即所得但多人协作时经常出现你改一版他改一版最后合并困难的情况。所以在开新项目时我都会建议团队定一个规矩图跟着代码走能用文本画的不要用文件画。这不是说拖拽工具不好而是文件型的图天然存在协作和版本管理的短板而文本型的图恰好解决了这个短板。提示如果团队刚起步一个人画图画不明白别急着定工具规范。先用draw.io画两周找到自己最痛的点再决定要不要切到Mermaid或PlantUML。工具迁移成本不大但需求搞错了重画的成本很大。3. 架构图这么画分层、边界与微服务的表达3.1 架构图的核心不是画框是表达分层和依赖很多新手画架构图拿起工具就画一堆方框然后连上线最后得到一张一切都连在一起的拓扑图。这种图放在PPT上确实唬人但仔细看基本没有信息量。架构图真正要表达的是三层信息组件有哪些、组件之间的边界在哪、组件之间的依赖是什么方向。你在画任何架构图之前先问自己三个问题这些组件我按什么维度分层每层的职责边界划在哪里依赖是同步调用、异步消息还是数据流这三件事想清楚了画出来的图才有讨论价值否则只是把代码目录搬到图形里。以画软件架构图为例我习惯按展示层、应用层、服务层、数据层、基础设施层这样的横向分层来组织。每一层的内部框表示具体组件层与层之间用箭头表达调用关系箭头要标注协议比如HTTP、RPC、消息队列。这样一来看图的人第一眼看到的是纵向分层第二眼看到的是横向依赖信息层级非常清楚。3.2 微服务架构图的三个关键动作微服务架构图的难点在于服务数量多、关联复杂画出来很容易一团乱麻。我踩过几次坑之后总结出三个关键动作。第一个动作是先按业务域分组再画服务。不要一上来把几十个微服务名全列出来先用粗颗粒度的域概念归组比如用户域、订单域、支付域域下面再挂具体服务。这样图的横向宽度不会铺太开人眼能承受的复杂度有限。第二个动作是把横切组件单独画一层。网关、注册中心、配置中心、认证中心、监控链路这些横切关注点不属于任何业务域需要单独划出行或列来放。我给团队评审图时看到最多的问题就是网关和业务服务混在一起箭头满天飞根本看不清谁在调谁。第三个动作是数据存储必须明确归属。一个服务连一个库还是多个服务共享一个库是微服务架构图里最需要讲清楚的边界。画图时不要把每个服务都朝中间那个MySQL图标拉一条线而要用分组或颜色标出每个服务的数据库归属必要时单独画一张数据依赖子图。3.3 从开源项目的系统架构图里学到的组织方式芋道系统架构图这个搜索词很有意思说明大量的人面对开源项目时第一反应就是先找架构图来理解系统。我以这类开源快速开发平台的典型架构为例说一下组织方式。这类系统的架构图一般会呈现两个视角。第一个是部署视角从前端Nginx开始画到网关Gateway再到认证中心、各个微服务模块最后落到数据库、Redis、消息队列这些基础设施。第二个是代码模块视角表现的是工程结构比如一个Spring Boot项目里包含system模块、infra模块、bpm模块等。这两个视角的差异很多人没意识到画出来混在一起看的人就会很困惑。我的建议是一张架构图只表达一个视角。如果你想表达整个系统的运行形态画部署视角如果你想表达工程代码的组织边界画模块视角。如果两个都要请明确做成两张图互相引用。开源项目的架构图之所以值得学习不是因为它画得多漂亮而是它对边界的表达非常克制。3.4 画架构图最容易翻车的几个细节最后补充几个我实际踩过的坑。颜色不要超过三种。很多人画架构图喜欢每个模块用一个颜色结果图一放出来跟彩虹一样重点全丢了。正确做法是用一种颜色表示分层背景一种颜色表示重点模块最多再加一种颜色标注本次改动/新增的部分。箭头方向要统一。依赖关系的箭头永远指向被依赖方调用关系的箭头指向被调用方不要把两种语义混在一张图里。如果混了一定要加图例说明否则看图的人只能靠猜。组件命名要用全称。缩写省空间但阅读成本极高。我第一次画的微服务架构图里写了USRORD这种缩写评审时被业务方追着问了半天。后来一律用完整命名空间不够就换行或放大画布不牺牲可读性。提示画架构图之前先花十分钟写一段文字描述把分层和依赖用自然语言说清楚。如果这段话自己都讲不顺图也一定画不顺。文字版架构说明是图最好的创作草稿。4. 流程图这么画符号、分支、泳道与算法流程4.1 先把基本符号和流向规则刻进肌肉记忆流程图是最通用的图形语言适用范围从业务审批到算法推导都要用。它之所以高效是因为有一套约定俗成的符号体系。我的建议是先把最基础的几个符号刻进肌肉记忆圆角矩形或椭圆起止节点矩形处理步骤或操作菱形判断或分支平行四边形输入输出文档形状文档或报表圆柱形数据库箭头线流程流转方向流向规则有一条铁律**箭头只能从出口流向下一节点的入口不能出现循环路径混乱更不能有悬空的线。**如果你画的流程需要回到上一步这叫循环画回环时要保证路径清晰且不穿过其他步骤。很多新手画着画着箭头交叉在一起图的阅读性瞬间归零。4.2 分支、循环、网关从简单判断到BPMN分支是流程图最常见的结构。一个判断框两个出口——是走是还是走否这是最简单的二分支。实际业务里分支可能超过两个分支出口这时我建议不要从同一个菱形判断框直接拉出三个箭头而是用条件合并或拆成连续判断保证每个判断框语义单一。再说循环结构。算法流程里循环用判断加回边实现比如条件满足则返回重新执行某一步。画这类回环时我习惯在回边箭头上标注循环条件这样看的人不用去猜为什么这条线往回走。热搜词里那条bpmn流程图网关使用上升到专业建模层面了。BPMN标准里网关分三类很多刚接触工作流的人会弄混**独占网关X**是排他分支走其中一条互斥路径**并行网关**是并发分叉所有分支同时执行且必须都汇聚**包容网关O**介于两者之间可以同时走多个满足条件的分支。画法上网关用菱形表示但内部会有不同标记别和普通判断框混用。如果你在用Activiti、Flowable这类工作流引擎画审批流程网关的语义直接影响运行时的走向绝不是画着好看而已。4.3 用用户管理模块演示一张业务流程图的诞生拿热搜词里用户管理模块流程图来做个完整示范。假设需求是管理员新增一个用户我画图的步骤是这样的第一步列出所有角色和关键动作。角色是管理员和系统动作包括登录、进入用户列表、点击新增、填写表单、提交、校验、保存、记录日志、返回列表。第二步画出主流程骨架先不管异常分支从开始一路画到结束。主流程就是管理员发起请求系统处理反馈结果形成一个闭环。第三步补充判断分支。表单校验是否通过是一个判断框通过则保存不通过则返回填写页并提示错误信息。是否重复用户名也是一个判断框这个判断条件往往比表单校验更能体现业务规则。第四步考虑权限和跨角色场景。如果这个系统要求操作日志留痕保存用户后需要异步写一条日志这就是一个并行分支可以画一个并行网关或者直接画一条旁路。如果管理员本身不是全局角色还需要先判断他是否有用户管理权限。第五步整理布局和泳道。角色清晰时我建议加泳道把管理员操作和系统处理分成两条横向泳道或纵向泳道。这样一眼就能看出哪些动作是人做的哪些是系统做的将来排查问题也方便。4.4 算法流程图与控制流图教科书题目的画法算法流程图和管理流程图的差别在于算法更关注处理步骤和数据变化不关注角色。画法上主要用处理框和判断框。以求两个正整数的最大公约数辗转相除法为例流程是开始 → 输入a和b → 判断b是否等于0 → 若等于0则输出a → 若不等于0则执行 tempb, ba%b, atemp → 回到判断。这个过程在图上就是一个典型的循环结构。画完后你就能理解为什么计算机科学里要把这种流程转化成控制流图——控制流图把每个判断节点变成基本块的边界方便做路径分析和测试覆盖。热搜词里流程图转化为控制流图说的就是这件事本质上是把自然语言画出的流程图抽象成更严格的程序分析表达。对于做编译原理、测试覆盖率相关工作的人画完算法流程图后不妨再多走一步把每个基本块编号标注边的关系你会对代码结构有更清晰的认识。另外提一句renpy流程图制作和手机中框工艺流程图前者是视觉小说剧情分支本质上也是一棵流程树后者是制造业工艺流程更关注工序顺序和质检节点。这两个场景看起来跟IT不相干但用的符号和规则全是同一个体系这就是流程图的通用价值。5. AI画图的新玩法多模态生成与ComfyUI工作流5.1 先用AI生成文本图还是直接生成成品图最近AI画图这个话题非常热。热搜词里有个qwen-image流程图comfyui说明已经有人在尝试用多模态大模型直接生成流程图图片再用ComfyUI这类工作流工具去批量化处理。我的观点是**AI画图目前最成熟、最稳定的用法不是AI直接画图而是AI写图代码。**也就是让大模型直接输出Mermaid或PlantUML的代码你复制到工具里渲染。这样做的好处是代码可控、改起来有依据、输出稳定。我也试过让AI直接生成架构图或流程图图片效果确实惊艳排版配色很专业但问题也很明显——图里的中文文字偶尔会出现错字节点之间的连线关系可能出现逻辑错误。这种错误有时候非常隐蔽比如把用户服务连到了订单服务如果不是业务熟手根本看不出来。5.2 我实测的AI辅助流程我自己现在的实操路径是这样的。比如我要画一张用户管理模块流程图我会给AI一段流程描述让它先输出Mermaid代码然后粘到mermaid.live里渲染成图检查逻辑有没有问题。确认逻辑没问题后再根据用途决定如果只是放GitHub README里那直接用Mermaid就完事如果要放进正式技术方案我会把这张渲染图当作底稿在draw.io里重新排一版规范好配色间距。如果是用ComfyUI来搭工作流典型的做法是把AI绘图模型作为节点配合提示词预处理、图像后处理节点实现输入一段文字描述自动输出一张流程图底图的效果。这套工作流适合批量生产风格统一的示意图但需要投入时间学习ComfyUI的节点连线逻辑初次搭建门槛不低。我的建议是先别追求端到端自动化老老实实让AI写Mermaid代码等流程跑顺了再考虑引入ComfyUI增加图像控制和风格化。5.3 现阶段AI画图的边界和避坑根据我这段时间的实测在AI画图这件事上有几个相对明确的边界第一AI适合起稿不适合终稿。它可以帮你从零到一生成一张结构完整的流程图省去你对着空白画布发呆的时间但最终交付之前一定要人工逐条检查逻辑和文字。尤其是架构图里服务间的依赖关系AI非常容易合理脑补出一些不存在的调用边。第二中文场景要重点检查。目前AI直接生成的图片中中文文字错别字问题依然存在而且处理起来很麻烦改一个字可能要重新生成整张图。相比之下AI生成代码再渲染的方式就没有这个问题——代码里的文字想改哪里改哪里重新渲染就完成了。第三公司内部保密项目慎用公开AI服务。架构图、流程图往往包含系统模块名、服务名、数据库名这些敏感信息如果用的是公开云服务存在信息外泄风险。企业内部如果没有私有化部署的模型我更建议用本地开源的文本画图方案把画图模型这种能力用在OKR、公开项目这些非敏感内容上。我觉得现阶段最务实的判断是把AI当成一个画图搭子而不是画图师傅。它帮你完成从零到一的冷启动负责把一坨思路变成一张初稿但最终能不能交付仍然取决于你脑袋里对业务和技术的理解和判断。这个边界保持住AI画图就能成为你效率提升的工具而不是一个新的踩坑来源。我个人现在的固定流程是先用AI生成Mermaid初稿确认思路再在draw.io里做精细排版架构类大图另配一份PlantUML版本留在Git仓库里。这么一套下来既享受了AI的提速又保住了图的质量和可维护性。画图工具真的不是越多越好也不是越贵越好找到适配你交付载体的两三款把它们用熟比装一整套全家桶都管用。