第9章面向数据流的设计方法
显示器 显示信息
警报类别
警报器
传感数据
电话拨号音频 电话线
传感器
图9-2-1 “家庭保安系统”的顶级数据流图
控制面板 用户命令 用 户 交 互 子 系 统
用户命 令处理
启动/停止 系统和状态 口令 口令 核对
系统 配置 配置数据
原口令 配置数据 配置信息 显示信息 和状态
配置 数据 显示 信息 传感器
号码表
选择电 话号码 电话号码 连通电 话网 产生拨 号脉冲
配 置 数 据
配置信息 电话拨 号音频
图9-2-4 “传感器监测子系统”的第三级DFD
9.2 变换分析
步骤三、确定DFD的特性,判定它为变 换流还是事务流。 以图9-2-4所示DFD为例,数据沿一个传 入路径进来,沿三个传出路径离开,没 有明显的事务中心,因此,该信息流应 属变换流。 步骤四、划定输入流和输出流的边界, 孤立变换中心。
9.2 变换分析
输入流 变换流 输出流
A C
B E D F G H
主控模块 输入流 控制模块
变换流 控制模块
输出流 控制模块
图9-2-5 一级分解
9.2 变换分析
图9-2-5展示的是一个简单三叉结构,实 际处理大型系统的复杂数据流时,可能 需要多个模块对应图9-2-5中一个模块的 功能。“一级分解”总的原则是,在完 成控制功能并保持低耦合度、高内聚度 的前提下尽可能地减少模块的数量。 “传感器监测子系统”一级分解如图 9-2-6所示,其中控制模块的名字概括了 所有下属模块的功能。
3 1 2 4 5 SUBSYS2 输入控制 7 变换控制 10
6 7 10 11
接收部分 事务中心
8
9 发送部分 输出控制 11
4 图9-3-3 设计系统下层模块结构
9.3 事务分析
SYSTEM 输入 1 SUBSYS1 3 输入控制 散转 2 SUBSYS2 变换控制 输出控制 11 8 SUBSYS3
9.2 变换分析
程序结构的模块名已隐含了模块功能,但仍 有必要为每个模块写一个简要的处理说明, 它应当包括: 1.进出模块的信息(接口描述); 2.模块的局部信息; 3.处理过程陈述,包括任务和主要的判 断点的位置、条件; 4.对有关限制和一些专门特性的简要说 明(例如,文件I/O,独立于硬件的 特性,特殊的实时要求等)。 这些描述构成第一版设计规格说明书。
A 事务 事务中心 T B
C
图9-1-3 事务流
精化数据流图 “事务” 确定事务中心 和各动作路径 映射为事务结构 提取控制结构 事务分析 利用启发式策略 精化软件结构 变换分析 流的类型 “变换” 确定输入输出 流界 映射为变换结构
描述接口和全局 数据结构
复审 通过 详细设计
图9-1-4 面向数据流 的设计
配置信息 配置数据 传感器 标识类型 读取传 感数据 传感数据
传感器标志 的类型和位置
显示 格式
传感器信息 警报类别
异常数 据判别
警报数据 电话号码 电话 拨号
产生警 报信号
电话拨号音频
图9-2-3 “传感器监测子系统”的第二级DFD
传感数据 读取传 感数据
传感器信息 产生 显示 置传感器标识 获取响 应信息 传感器标志的 类型和位置 建立警 报条件 格式化 显示 警报数据 产生警 报信号 警报类别
配置信息
主控模块 传感器输入 控制模块 警报条件控 制模块 警报输出控 制模块
图9-2-6 传感器监测子系统一级分解结果
9.2 变换分析
步骤六、执行“二级分解”。 二级分解的任务是把数据流图中每个处 理框映射为结构图中的一个模块。其过 程是从变换中心的边界开始沿输入、输 出通道向外移动;从变换中心的输入(出) 边界向外移动,把遇到的每个处理框映 射为结构图中相应控制模块下的一个模 块。
9.2 变换分析
步骤五、执行“一级分解”(first level factoring) 一级分解的目标是导出具有三个层次的 程序结构,顶层为主控模块;底层模块 执行输入、计算和输出功能;中层模块 控制、协调底层的工作。
9.2 变换分析
程序结构可用Yourdon结构图表示。结构图中,方框 代表模块,框内名称表示模块的功能;方框之间的有 向边(无二义时也可用无向边)表示模块间的调用关 系。调用模块上无标志表示顺序调用:从左至右;菱 形表示选择调用;弧形箭头表示循环调用。但本书后 面除了顺序调用外,并没有遵循这些规定。
9.2 变换分析
下面以“家庭保安系统”的传感器监测 子系统为例说明变换分析的各个步骤。 步骤一、复审基本系统模型 基本系统模型指顶级DFD和所有由外部 提供的信息。这一设计步骤是对系统规 格说明书和软件需求规格说明书进行评 估。这两个文档描述软件界面上信息的 流程和结构。
控制面板 用户命令
家庭保安 系统软件
用户命令数据 读取 用户 命令
系统参数和数据
读取 系统 数据
启动 命令 处理
原始配置项
读取 配置 文件
命令类型
配置命令 启动/停止命令
格式化的 配置数据 配置信息 配置数据 显示信息 和状态 显示信息
确认口令
口令 读取 口令
启动/ 停止 启动/停止 消息 系统
四位数 配置数据
比较口令 与文件
有效口令 “再试”信 产生无效 息 的信息
传感数据 警报器 显示器
传感器 监测
电话线
图9-2-2 “家庭保安系统”的第一级DFD
9.2 变换分析
步骤二、复审和精化软件数据流图 这一步主要是对软件需求规格说明书中的分析 模型进行精化,直至获得足够详细的DFD。 例如,由“传感器监测子系统”的第一级(图 9-2-2 的局部)和第二级(图 9-2-3 ) DFD 进一 步推导出第三级数据流图(图9-2-4),此时, 每个变换对应一个独立的功能,可以用一个具 有较高内聚度的模块实现,至此已有足够的信 息可用于设计“传感器监测子系统”的程序结 构,精化过程亦可结束。
5
9
6
7
4
10
图9-3-4 将模块结构组合,得到程序结构雏形
9.3 事务分析
步骤七、使用启发式设计策略,精化所 得程序结构雏形,改良软件质量。这一 步骤与变换分析法相同。
SYSTEM 输入 1 3 6 7 散转 2 SUBSYS2 10 11 8 5 9
4
9.4 设计优化及原则
9.4.1 启发式设计策略
9.4.1 启发式设计策略
2.调整软件结构的深度、宽度、扇出和扇 入数目,改善软件结构性能。 经验表明,设计良好的软件结构通常顶 层扇出较高,中层扇出较低,底层又高 扇入到公共的实用模块中去。
9.4.1 启发式设计策略
应避免的结构
应追求的结构
图9-4-1 应追求与避免的程序结构
9.4.1 启发式设计策略
接收部分 事务中心Байду номын сангаас
8
9
SYSTEM 输入 1 散转 2 SUBSYS2
发送部分
SUBSYS1
SUBSYS3
图9-3-2 映射系统上层结构模块
…
…
…
9.3 事务分析
步骤六、分解并精化事务结构以及每条 动作路径所对应的结构。这些子结构是 根据流经每一动作路径的数据流特征, 采用本节或上节所述设计步骤逐一导出 的。
课程名称:软件工程 第15讲 班 级: 日 期: 教 室: 教学题目:第9章 面向数据流的设计方法 9.1SD方法, 9.2变换分析 教学目的:掌握SD方法的基本概念,掌握变换分析 方法。 教学重点: SD方法、变换分析方法。 教学难点:变换分析方法。 教 具:多媒体教室、电子教案 作 业:看书
第9章 面向数据流的设计方法
1.调整模块的功能和规模,降低耦合度,提高 内聚度。 若在几个模块中发现了共有的子功能,一般应 将此子功能独立出来作为一个模块,以提高单 个模块的内聚度。合并模块通常是为了减少控 制信息的传递以及对全程数据的引用,同时降 低接口的复杂性。 模块的规模没有固定的要求。以保持模块的独 立性为原则。一般而言,模块规模以一页左右 为宜(高级语言在75个语句左右)。
E F
G H
图9-2-8 结构的优化
9.2 变换分析
上述七个设计步骤的目标是给出软 件的一个整体描述。 一旦有了这样一个描述,设计人员 即可从整体角度评价和精化软件的 总体结构,此时修改所需耗费不多, 却能大大提高软件质量。
课程名称:软件工程 第16讲 班 级: 日 期: 教 室: 教学题目:9.3事务分析,9.4设计优化原则 教学目的:掌握事务分析方法,理解设计优化原则。 教学重点:事务分析方法。 教学难点:事务分析方法。 教 具:多媒体教室、电子教案 作 业:习题7
9.1 SD方法的设计过程和有关概念
SD 方法能方便地将数据流图转换为软件结构, 其过程分为五步: 1. 确定信息流的类型; 2. 划定流界; 3. 将数据流图映射为程序结构; 4. 提取层次控制结构; 5. 通过设计复审和使用启发式策略进 一步精化所得到的结构。
1)变换流
变换流 — 在基本系统模型(即顶级数据 流图)中信息通常以“外部世界”所具 有的形式进入系统,经过处理后又以这 种形式离开系统。
3.改造程序结构,使任一模块的作用域 在其控制域之内。
外 部 表 示 内 部 表 示 输出流 输入流 变换流
信 息
时间
图9-1-1 信息流
1)变换流
C
A B E F
D 图9-1-2 典型的变换流 变换流的特点是:经过变换B的数据流一部分 先经过变换C到达变换E,然后另一部分经过 变换D到达E;即C和D是顺序结构。
2)事务流
事务流——单个数据项称为事务(transaction)沿 传入路径(也称接受通道)进入系统,由外部形式 变换为内部形式后到达事务中心,事务中心根据数 据项计值结果从若干动作路径中选定一条继续执行。 可见它是一个选择结构。