第9章 数据流图
📚 章节概述
数据流图(DFD)是软考中级软件设计师考试的重要应用题内容,主要考查结构化分析方法的应用。本章将学习数据流图的绘制方法、平衡原则和解题技巧。
🎯 学习目标
通过本章学习,你将掌握:
- 数据流图的基本概念和符号
- 数据流图的绘制原则和方法
- 数据平衡原则的应用
- 数据流图题目的解题技巧
- 典型数据流图问题的分析方法
📖 课程安排
9.1 数据流图概述 (2课时)
- 数据流图的定义 - 描述数据在系统中的流动
- DFD的基本符号 - 外部实体、处理、数据存储、数据流
- DFD的层次结构 - 顶层图、0层图、1层图等
- DFD的作用 - 需求分析、系统设计的工具
9.2 数据平衡原则 (2课时)
- 父图与子图平衡 - 输入输出数据流的一致性
- 数据守恒原则 - 数据不能凭空产生或消失
- 接口一致性 - 上下层图之间的接口匹配
- 命名一致性 - 数据流和数据存储的命名规范
9.3 解题技巧 (2课时)
- 题目分析方法 - 理解业务流程和数据流向
- 绘图步骤 - 从顶层到底层的逐步细化
- 常见错误 - 数据流不平衡、处理功能不明确
- 检查方法 - 验证数据流图的正确性
9.4 典型例题分析 (6课时)
9.4.1 例题1:图书管理系统
- 系统背景 - 图书馆借还书业务流程
- 需求分析 - 读者管理、图书管理、借还管理
- 顶层DFD - 系统与外部实体的交互
- 0层DFD - 主要业务处理过程
- 1层DFD - 详细的子处理过程
9.4.2 例题2:学生成绩管理系统
- 系统背景 - 学校成绩管理业务流程
- 需求分析 - 学生管理、课程管理、成绩管理
- 数据流分析 - 成绩录入、查询、统计流程
- 数据存储设计 - 学生信息、课程信息、成绩信息
- 平衡性检查 - 验证各层图的数据平衡
9.4.3 例题3:订单处理系统
- 系统背景 - 电商订单处理业务流程
- 需求分析 - 订单管理、库存管理、支付管理
- 复杂数据流 - 多个外部实体的交互
- 异常处理 - 库存不足、支付失败等情况
- 系统边界 - 明确系统内外的界限
⏰ 学习时间安排
- 总学习时间:12课时
- 建议学习周期:1-2周
- 每日学习时间:1-2课时
- 重点练习:典型例题的反复绘制
🔍 重点难点
重点内容
- DFD基本符号 - 掌握四种基本符号的含义
- 层次化分解 - 理解自顶向下的分解方法
- 数据平衡原则 - 确保父子图的数据一致性
- 数据流命名 - 使用有意义的数据流名称
- 系统边界 - 正确识别系统内外的界限
难点突破
- 数据流平衡 - 通过大量练习掌握平衡技巧
- 处理功能分解 - 合理划分处理的粒度
- 数据存储识别 - 正确识别需要存储的数据
- 外部实体确定 - 准确识别系统的外部实体
📝 考试要点
应用题考点
- DFD绘制 (15-20分)
- 数据平衡分析 (8-12分)
- 系统边界识别 (5-8分)
- 数据字典编写 (5-8分)
常见题型
- 补充DFD - 在给定的DFD中填空
- 绘制子图 - 根据父图绘制详细子图
- 平衡性检查 - 找出不平衡的数据流
- 错误识别 - 找出DFD中的错误
📊 DFD基本符号
四种基本符号
外部实体 (External Entity)
符号:方框
作用:系统外部的人员、组织或其他系统
特点:只能与处理连接,不能直接访问数据存储
处理 (Process)
符号:圆圈或椭圆
作用:对数据进行加工处理
编号:使用层次化编号(如1.1, 1.2)
数据存储 (Data Store)
符号:开口矩形
作用:存储数据的地方
命名:使用名词,如"学生信息"
数据流 (Data Flow)
符号:带箭头的直线
作用:数据的流动方向
命名:使用名词,描述流动的数据连接规则
- 外部实体 ↔ 处理
- 处理 ↔ 处理
- 处理 ↔ 数据存储
- 外部实体 ↛ 数据存储(不能直接连接)
- 数据存储 ↛ 数据存储(不能直接连接)
🔄 数据平衡原则
平衡检查要点
- 输入数据流 - 父图的输入必须在子图中出现
- 输出数据流 - 父图的输出必须在子图中产生
- 数据流名称 - 父子图中的数据流名称必须一致
- 数据流方向 - 输入输出方向必须正确
平衡示例
父图处理P1:
输入:A, B
输出:C, D
子图必须包含:
- 从外部进入的数据流A, B
- 向外部输出的数据流C, D
- 子图内部可以有其他数据流🎯 绘制技巧
绘制步骤
- 确定系统边界 - 明确系统范围
- 识别外部实体 - 找出与系统交互的外部对象
- 绘制顶层图 - 整个系统作为一个处理
- 绘制0层图 - 分解为主要处理过程
- 逐层细化 - 继续分解复杂处理
- 平衡性检查 - 验证各层图的一致性
命名规范
- 处理命名 - 使用动宾结构,如"录入学生信息"
- 数据流命名 - 使用名词,如"学生信息"、"成绩单"
- 数据存储命名 - 使用名词,如"学生档案"、"课程表"
- 外部实体命名 - 使用角色名称,如"学生"、"教师"
📋 数据字典
数据字典内容
数据流定义:
数据流名称 = 数据元素1 + 数据元素2 + ...
数据存储定义:
数据存储名称 = {数据流名称}
数据元素定义:
数据元素名称 = 数据类型 + 取值范围 + 说明
处理定义:
处理名称 = 输入 + 输出 + 处理逻辑符号说明
=定义为+连接(和)[]可选项{}重复项()注释|选择(或)
预计完成时间:12课时 | 难度等级:★★★★☆