Skip to content

第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课时
  • 重点练习:典型例题的反复绘制

🔍 重点难点

重点内容

  1. DFD基本符号 - 掌握四种基本符号的含义
  2. 层次化分解 - 理解自顶向下的分解方法
  3. 数据平衡原则 - 确保父子图的数据一致性
  4. 数据流命名 - 使用有意义的数据流名称
  5. 系统边界 - 正确识别系统内外的界限

难点突破

  1. 数据流平衡 - 通过大量练习掌握平衡技巧
  2. 处理功能分解 - 合理划分处理的粒度
  3. 数据存储识别 - 正确识别需要存储的数据
  4. 外部实体确定 - 准确识别系统的外部实体

📝 考试要点

应用题考点

  • DFD绘制 (15-20分)
  • 数据平衡分析 (8-12分)
  • 系统边界识别 (5-8分)
  • 数据字典编写 (5-8分)

常见题型

  1. 补充DFD - 在给定的DFD中填空
  2. 绘制子图 - 根据父图绘制详细子图
  3. 平衡性检查 - 找出不平衡的数据流
  4. 错误识别 - 找出DFD中的错误

📊 DFD基本符号

四种基本符号

外部实体 (External Entity)
符号:方框
作用:系统外部的人员、组织或其他系统
特点:只能与处理连接,不能直接访问数据存储

处理 (Process)
符号:圆圈或椭圆
作用:对数据进行加工处理
编号:使用层次化编号(如1.1, 1.2)

数据存储 (Data Store)
符号:开口矩形
作用:存储数据的地方
命名:使用名词,如"学生信息"

数据流 (Data Flow)
符号:带箭头的直线
作用:数据的流动方向
命名:使用名词,描述流动的数据

连接规则

  • 外部实体 ↔ 处理
  • 处理 ↔ 处理
  • 处理 ↔ 数据存储
  • 外部实体 ↛ 数据存储(不能直接连接)
  • 数据存储 ↛ 数据存储(不能直接连接)

🔄 数据平衡原则

平衡检查要点

  1. 输入数据流 - 父图的输入必须在子图中出现
  2. 输出数据流 - 父图的输出必须在子图中产生
  3. 数据流名称 - 父子图中的数据流名称必须一致
  4. 数据流方向 - 输入输出方向必须正确

平衡示例

父图处理P1:
输入:A, B
输出:C, D

子图必须包含:
- 从外部进入的数据流A, B
- 向外部输出的数据流C, D
- 子图内部可以有其他数据流

🎯 绘制技巧

绘制步骤

  1. 确定系统边界 - 明确系统范围
  2. 识别外部实体 - 找出与系统交互的外部对象
  3. 绘制顶层图 - 整个系统作为一个处理
  4. 绘制0层图 - 分解为主要处理过程
  5. 逐层细化 - 继续分解复杂处理
  6. 平衡性检查 - 验证各层图的一致性

命名规范

  • 处理命名 - 使用动宾结构,如"录入学生信息"
  • 数据流命名 - 使用名词,如"学生信息"、"成绩单"
  • 数据存储命名 - 使用名词,如"学生档案"、"课程表"
  • 外部实体命名 - 使用角色名称,如"学生"、"教师"

📋 数据字典

数据字典内容

数据流定义:
数据流名称 = 数据元素1 + 数据元素2 + ...

数据存储定义:
数据存储名称 = {数据流名称}

数据元素定义:
数据元素名称 = 数据类型 + 取值范围 + 说明

处理定义:
处理名称 = 输入 + 输出 + 处理逻辑

符号说明

  • = 定义为
  • + 连接(和)
  • [] 可选项
  • {} 重复项
  • () 注释
  • | 选择(或)

预计完成时间:12课时 | 难度等级:★★★★☆