ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Visio画网上书店数据流图:分层拆解与PDF导出避坑指南

Visio画网上书店数据流图:分层拆解与PDF导出避坑指南 简介这份PDF面向软件工程初学者与需要掌握结构化需求分析方法的开发者以网上书店系统为案例讲解如何用Visio 2007绘制Gane-Sarson数据流图。内容围绕“自顶向下、逐层分析”的思路展开完整呈现顶层、中层与底层三层数据流图的推导过程并细化到用户注册、订单信息查询、书籍信息查询、订购图书、订单信息管理、图书信息管理六个加工模块同时给出图元绘制、文字编辑、连线与布局调整的完整操作路径。资源包为单一PDF文件约857KB轻量易读适合课堂练习、课程设计或自学参考。目前已有5319人学习读者可借此理解外部用户与数据源点终点的识别方法、数据存储设计要点并对照案例动手复现各层数据流图为后续系统设计与编码打下需求分析基础。1. 用 Visio 画网上书店数据流图从一张 PDF 到能交付的 DFD很多人第一次接到「画网上书店系统的数据流图」这个任务第一反应是打开 Visio 直接拖框。结果画出来的东西自己看着都别扭数据存储和外部实体混在一起加工只有输入没有输出父子图对不上号。最后交上去的 PDF 被老师或评审一句「逻辑不闭合」打回来重做。这篇讲的就是怎么用 Visio 把网上书店系统的数据流图DFD从零画到能交付包括分层怎么拆、Visio 里用哪套图形、参数怎么标、导出 PDF 时怎么保证清晰。适合正在做课程设计、软件工程文档、需求分析交付的从业者和学生。Visio 只是工具真正决定这张图能不能过审的是结构化分析方法本身——先想清楚数据怎么流再动手画。2. 网上书店的 DFD 该分几层先定边界再动笔2.1 为什么不能一上来就画一张大图数据流图的核心是「自顶向下、逐层分解」。网上书店系统看着简单但如果你把用户注册、浏览、下单、支付、发货、评价全塞进一张图框会超过三十个箭头交叉成蜘蛛网没人看得懂。结构化分析方法要求你先画顶层上下文图Context Diagram把整个系统当成一个加工只标外部实体和进出系统的数据流然后逐层分解每张子图的输入输出必须和父图对应。网上书店的顶层上下文图通常只有四个外部实体顾客、管理员、支付网关、物流系统。系统作为一个整体加工接收顾客的注册信息、订单请求输出订单确认、发货通知。这一层不出现任何数据存储因为上下文图描述的是系统与外部世界的边界。注意上下文图里绝对不能画数据存储。这是新手最常犯的错把数据库当成外部实体画进去评审一眼就能看出来你不懂 DFD 规范。2.2 网上书店 DFD 的分层方案我一般按三层来拆具体层数看交付要求但网上书店这个规模三层足够层级图名加工编号核心内容顶层上下文图0系统整体与四个外部实体的数据流一层功能级 DFD1~4用户管理、图书浏览、订单处理、后台管理二层细节级 DFD1.1~4.3每个功能的子加工和数据存储读写一层图的四个加工分别是1 用户管理、2 图书浏览与检索、3 订单处理、4 后台管理。每个加工都要有输入流和输出流不能出现「只进不出」的黑洞加工也不能出现「只出不进」的奇迹加工。这是 DFD 平衡规则Visio 不会帮你检查得自己盯。二层图只展开需要细化的加工。比如 3 订单处理可以拆成 3.1 生成订单、3.2 库存校验、3.3 支付处理、3.4 更新订单状态。每个子加工读写哪些数据存储要在图上标清楚。数据存储一般有D1 用户表、D2 图书表、D3 订单表、D4 库存表、D5 支付记录表。2.3 在 Visio 里搭出分层结构Visio 没有专门的 DFD 模板常见做法是用「软件和数据库」类别里的「数据流图」模具或者直接用基本流程图形状改。我习惯用数据流图模具因为它自带加工圆角矩形、数据存储开口矩形、外部实体矩形、数据流箭头四种标准形状。打开 Visio 后新建 → 类别 → 软件和数据库 → 数据流图。如果找不到在搜索框输入「Data Flow Diagram」。模具面板里拖出「Process」放到画布上这就是加工。外部实体用「External Entity」数据存储用「Data Store」。画顶层图时把四个外部实体放在画布四角中间放一个加工标号 0然后用「Data Flow」箭头连接。箭头方向要标清楚比如顾客 → 系统是「注册信息、订单请求」系统 → 顾客是「订单确认、发货通知」。顶层图布局参考文字示意实际在 Visio 里拖形状 [顾客] ----注册信息/订单请求---- (0 网上书店系统) ----订单确认/发货通知---- [顾客] [管理员] ----图书信息/审核操作---- (0 网上书店系统) ----销售报表---- [管理员] [支付网关] ----支付请求---- (0 网上书店系统) ----支付结果---- [支付网关] [物流系统] ----发货单---- (0 网上书店系统) ----物流状态---- [物流系统]这个布局的逻辑是每个外部实体和系统之间至少有一条进和一条出保证数据流闭合。Visio 里画完后用「对齐」和「分布」功能把形状摆整齐不然后面导出 PDF 会很难看。3. Visio 画 DFD 的具体操作从拖形状到导出 PDF3.1 建立画布和页面设置Visio 默认页面是 A4 横向画 DFD 够用。但如果一层图加工多建议改成 A3。页面设置路径设计 → 页面设置 → 页面尺寸 → 预定义 → A3。方向选横向。然后设置网格和对齐。视图 → 显示 → 网格打勾视图 → 对齐和粘附 → 对齐到网格打勾。这样拖形状时会自动吸附箭头连接点也容易对准。我一般还会把「动态网格」关掉不然形状会自动缩放画 DFD 不需要这个。3.2 用数据流图模具画加工和数据存储从模具拖出「Process」形状双击可以输入文字。加工命名格式是「编号 动词短语」比如「1.1 验证用户身份」「3.2 校验库存」。编号要和父图对应Visio 不会自动编号得手动改。数据存储用「Data Store」形状命名格式是「D编号 名称」比如「D1 用户表」「D3 订单表」。数据存储的开口方向有讲究开口侧表示写入闭口侧表示读取。Visio 的数据存储形状默认两边都是开口需要手动调整。选中形状 → 右键 → 设置形状格式 → 线条 → 端点类型可以改成闭口。外部实体用「External Entity」形状直接写名称比如「顾客」「支付网关」。外部实体不能和外部实体直接连箭头必须经过加工。3.3 连接数据流并标注流名用「Data Flow」箭头连接形状。Visio 的箭头有自动路由功能但 DFD 里最好手动调整避免箭头穿过形状。连接后双击箭头可以加文字标签写数据流名称比如「订单信息」「支付结果」。数据流命名用名词短语不要用动词。比如「提交订单」是错的「订单信息」是对的。因为数据流表示的是流动的数据不是动作。一层图局部示例文字描述 [顾客] --注册信息-- (1 用户管理) --用户记录-- [D1 用户表] [D1 用户表] --用户信息-- (1 用户管理) --登录结果-- [顾客] [顾客] --订单请求-- (3 订单处理) --订单记录-- [D3 订单表] [D3 订单表] --订单详情-- (3 订单处理) --支付请求-- [支付网关] [支付网关] --支付结果-- (3 订单处理) --订单确认-- [顾客]这个片段的逻辑是用户管理加工读写 D1订单处理加工读写 D3 并和支付网关交互。每个加工都有进有出数据存储也有读写方向。Visio 里画的时候箭头尽量走直线或直角不要用曲线导出 PDF 后曲线会显得很乱。3.4 导出清晰 PDF 的参数设置Visio 导出 PDF 模糊是高频问题。原因通常是导出时用了「打印」而不是「另存为 PDF」或者分辨率没设对。正确做法文件 → 导出 → 创建 PDF/XPS → 选项 → 发布选项 → 分辨率选「高」300 dpi 以上→ 确定 → 发布。如果导出后还是模糊检查页面设置里的「打印缩放」是不是「调整为 1 页」。有时候图超出页面边界Visio 会自动缩小导致 PDF 里线条变细。改成「调整为 2 页 x 2 页」或者手动调整页面尺寸让图完整落在页面内。提示导出前按 CtrlShiftG 打开「大小和位置」窗口检查所有形状是否在页面边界内。超出边界的形状导出后会被裁掉。4. 避坑Visio 画 DFD 翻车的五个血泪经验4.1 父子图数据流不平衡现象一层图里加工 3 有「订单请求」输入和「订单确认」输出但二层图 3.1 生成订单只有输入没有输出评审说父子图对不上。原因分解时只画了子加工的内部逻辑忘了把父图的输入输出流继承下来。DFD 平衡规则要求子图的输入输出必须和父图对应加工一致。解决画子图前先把父图加工的所有输入输出流列出来子图画完后逐条核对。Visio 里可以用「注释」形状在画布旁边列清单画完一条勾一条。4.2 数据存储和外部实体画反现象把「数据库」画成外部实体把「管理员」画成数据存储整张图逻辑混乱。原因没分清外部实体和数据存储的定义。外部实体是系统边界外的角色或系统数据存储是系统内部的数据存放点。解决记住一句话——外部实体是人或外部系统数据存储是表或文件。网上书店里顾客、管理员、支付网关、物流系统是外部实体用户表、图书表、订单表是数据存储。4.3 Visio 保存后自动退出文件丢失现象画到一半 Visio 崩溃自动退出重新打开发现最近保存的版本丢了很多内容。原因Visio 的自动恢复默认间隔是 10 分钟崩溃时未保存的内容会丢失。另外 Visio 有时会因为形状过多或字体缺失导致崩溃。解决第一把自动恢复间隔改成 3 分钟文件 → 选项 → 保存 → 自动恢复时间间隔。第二养成 CtrlS 的习惯每画完一个加工就保存一次。第三如果文件已经丢失去C:\Users\用户名\AppData\Roaming\Microsoft\Visio找自动恢复文件后缀是.vsd或.vsdx。4.4 箭头交叉太多导致图不可读现象一层图里箭头横七竖八顾客到订单处理的线穿过了三个形状评审说看不清数据流向。原因形状布局没规划好外部实体和数据存储的位置随意摆放。解决布局原则是外部实体放画布边缘加工放中间数据存储放底部或侧面。同一方向的数据流尽量走同一条通道。Visio 里可以用「连接线」工具手动调整箭头走向不要用自动路由。4.5 导出 PDF 后文字变成乱码或方框现象Visio 里显示正常的中文导出 PDF 后变成方框或乱码。原因PDF 导出时字体没有嵌入或者用了非标准字体。解决在 Visio 里统一用「微软雅黑」或「宋体」这类标准字体不要用特殊字体。导出 PDF 时在发布选项里勾选「嵌入字体」。如果还是乱码先导出为图片PNG300 dpi再插入 Word 转 PDF。5. 进阶技巧用 Excel 数据驱动 DFD 形状属性Visio 有个被低估的功能从 Excel 导入数据并自动关联到形状。画网上书店 DFD 时加工和数据存储的编号、名称、描述可以提前在 Excel 里维护然后批量导入 Visio减少手动输入错误。5.1 准备 Excel 数据表建一个 Excel 文件列名如下ShapeIDShapeTypeLabelDescriptionP1Process1 用户管理处理注册、登录、信息修改P2Process2 图书浏览分类浏览、关键词检索P3Process3 订单处理生成订单、库存校验、支付D1DataStoreD1 用户表存储用户账号和 profileD2DataStoreD2 图书表存储图书元数据ShapeID 是唯一标识ShapeType 决定导入后映射到哪种 Visio 形状Label 是显示文字Description 是备注。5.2 在 Visio 里关联数据Visio 里打开「数据」选项卡 → 「将数据链接到形状」→ 选择 Excel 文件 → 选工作表 → 下一步 → 把 ShapeID 映射到形状的「形状 ID」字段。然后选中画布上的形状右键 → 数据 → 链接到数据 → 选择对应行。关联后修改 Excel 里的 LabelVisio 形状上的文字会自动更新。这个技巧在画多层 DFD 时特别省事因为同一批加工和数据存储会在不同层出现编号和名称必须一致用 Excel 统一管理就不会写错。Excel 数据导入 Visio 的操作路径 1. Visio → 数据 → 将数据链接到形状 2. 选择 Excel 文件 → 选择工作表 → 下一步 3. 勾选「第一行包含列标题」→ 下一步 4. 在「形状 ID」下拉框选择 ShapeID 列 → 下一步 5. 完成 → 拖动 Excel 行到对应形状上完成关联这个流程的逻辑是Excel 作为单一数据源Visio 作为可视化层。参数说明ShapeID 必须唯一ShapeType 目前 Visio 不直接支持自动换形状需要手动拖对应模具形状再关联。Description 字段可以显示在形状的「形状数据」窗口里方便评审时查看。5.3 用图层管理多层 DFDVisio 的「图层」功能可以把不同层的 DFD 放在同一个文件里通过显示/隐藏图层切换。新建图层开始 → 图层 → 图层属性 → 新建。建三个图层顶层、一层、二层。画的时候把形状分配到对应图层。这样交付时一个 Visio 文件包含所有层导出 PDF 时可以选择「当前图层」或「所有图层」。如果评审要求每层单独一页 PDF用图层控制导出比建多个文件方便。我自己的习惯是画 DFD 之前先在纸上列加工清单和数据存储清单确认父子图平衡关系再打开 Visio。Visio 只是把想清楚的东西画出来想不清楚的时候硬画最后一定返工。希望帮到你。本文还有配套的精品资源点击获取
返回列表