
软件结构图的核心不是把模块堆在一张画布上,而是让读者沿着“系统入口→业务模块→数据或服务依赖”读懂一次请求怎样完成。实际绘制时,先确定边界,再按职责拆模块,最后用统一的连接关系表达调用或依赖。若需要同时整理类、组件和接口关系,可先参考 UML 建模工具 的图形分类,再决定本文这张结构图的粒度。

下面用“订单系统”贯穿说明:用户提交订单后,系统要经过身份校验、库存锁定、支付确认和通知回写。这样画出来的图既能说明模块边界,也能在评审时定位“谁负责、依赖谁、失败后回到哪里”。
1. 软件结构图怎么画?
第一步:先写清系统边界和读者问题
在画任何方框前,先写两行边界说明:本图包含哪些系统或服务,不包含哪些内部实现;这张图要帮助谁做什么决定。订单系统的读者是产品、开发和测试,范围可以设为“从下单请求到通知完成”,不把数据库表字段和部署机器混进同一层。
第二步:按职责列出功能模块
先列一级模块,再把每个模块拆成能被一个团队或一个责任人解释的子模块。例如一级模块包括用户、订单、库存、支付和通知;订单模块下可再写创建、取消和查询。模块名称用名词,动作和状态写在连接线或注释里,避免同一个方框同时承担“服务”和“结果”。
第三步:统一符号和连接语义
方框表示模块,带方向的箭头表示请求或数据流,虚线表示可选依赖,注释说明边界条件。先在图例里写出本图约定,再开始连线;不要让同一条实线在不同区域一会儿表示调用、一会儿表示组织归属。Boardmix 的图形库和连接线可以直接拖入画布,适合先搭骨架、再统一调整样式。

第四步:从顶层到依赖层逐级展开
先放系统入口和核心业务,再向下展开子模块;每层只回答一个问题。订单系统可以从“下单 API”连到订单服务,再分到库存锁定、支付确认和通知服务。支付失败时连到“待支付”或“取消”状态,不能只画一条通往“成功”的直线。复杂模块继续拆分时,保留父子关系,不要把所有实现细节平铺在同一层。
第五步:补齐接口、数据和失败出口
每个关键模块至少补一项可核对说明:输入是什么、输出是什么、由谁维护、发生异常后交给谁。评审时沿着一条路径走读,例如“库存不足→释放已占用资源→返回可重试结果”,若找不到出口,就说明图还不能支撑排错。
第六步:按读者需要拆分视图
同一套系统通常需要两张以上视图:产品评审看业务模块和责任边界,开发评审看接口与依赖,运维评审看部署和故障出口。不要把三类信息压在一张图里。订单系统可以先保留“下单—库存—支付—通知”的业务总览,再为支付服务单独展开接口、重试次数和告警负责人;两张图用版本号和关联编号互相指向,后续更新时不会误改另一层。
| 评审对象 | 保留信息 | 避免混入 |
|---|---|---|
| 产品/业务 | 模块职责、用户路径、失败结果 | 字段级实现和机器部署 |
| 开发 | 接口方向、依赖、数据交接 | 无法验证的业务目标 |
| 运维/测试 | 部署边界、告警、回滚出口 | 与故障无关的组织层级 |
| 检查项 | 合格表现 | 常见修正 |
|---|---|---|
| 边界 | 读者知道图从哪里开始、到哪里结束 | 删掉与本次决策无关的部署细节 |
| 层级 | 父模块与子模块不混在同一层 | 把可被独立说明的子模块下沉一层 |
| 连接 | 线型含义统一,关键异常有出口 | 先补图例,再删除重复或交叉连线 |
| 责任 | 模块维护者和接口边界可追溯 | 给模块加负责人或服务名注释 |
2. 软件结构图用什么软件画?
选择工具时先看协作任务,而不是先比较图形数量:个人只需导出一张图,重点是符号和对齐;多人评审则需要在同一画布上留言、移动节点并保留版本。Boardmix 更适合把结构图和评审材料放在同一画布中,常用图形、连接线、文字和便签可以一起组织,图完成后再按团队需要分享或导出。具体格式、权限和导出选项应以当前账号页面显示为准。
- 用图形库快速搭出模块、容器、接口和注释,不必先手动画几何形状。
- 把模块说明、接口约定和评审问题放在同一画布,减少在文档和图片之间来回切换。
- 多人评审时,按颜色或便签标记“待确认、已决定、需补证据”,处理完再清理临时标记。

浏览 Boardmix 社区的绘图模板 时,先查看模板的层级和连线,再替换成自己的模块和依赖;不要直接把模板中的业务名称当成系统事实。完成一版后可用“边界、层级、连接、责任”四项自检,确保这张图真正服务设计评审和后续维护。
打开 Boardmix 白板,从空白画布或合适模板开始整理软件结构。