当前位置:
文档之家› 第九章 面向数据流的设计方法
第九章 面向数据流的设计方法
2013-7-14 6
9.1基本概念和设计过程
基本概念和设计过程
在大系统的DFD中,变换流与事务流往往交织在 一起。 在基于事务流的系统中,当信息沿动作路径流动时 可能呈现变换流的特征,变换分析法与事物分析法需 要交叉使用。
任何设计过程都不应该也不可能完全机械化,人的 判断力和创造性往往起决定作用。
2013-7-14 24
9.2变换分析
传感器监测子系统输出流部分的程序结构
2013-7-14
25
9.2变换分析
传感器监测子系统的程序结构“雏形”
2013-7-14
26
9.2变换分析
变换分析
步骤七 采用启发式设计策略,精化所得程序结构雏形,改 良软件质量。
对于程序结构的雏形,以“模块独立”为指导思想, 对模块或合或拆,旨在追求高内聚、低耦合,易实现、 易测试、易维护的软件结构。
2013-7-14
10
9.2变换分析
“家庭保安系统”的顶级数据流图
家庭保安系统-传 感器监测子系统的 变换分析步骤。
2013-7-14
11
9.2变换分析
变换分析
步骤二 复审和精化软件数据流图 精化软件需求规格说明书中的分析模型,直至获得足够详细 的DFD。 如,由“传感器监测子系统”的第一级(图9.5的局部)和第 二级(图9.6)DFD进 一步推导出第三级数据流图(图9. 7)。 每个变换对应一个独立的功能,可望用一 个具有较高内聚 度的模块实现,至此已有足够的信息用于设计“传感器监测子 系统”的程序结构,精化过程亦可结束。
2013-7-14
40
9.4启发式设计策略
启发块独立性的角度,对程序结构雏形的模 块进行分解或合并,力求降低耦合度,提高内聚度。
(2)改造程序结构,减少高扇出,在增加程序深度 的前提下追求高扇入。
2013-7-14
41
9.4启发式设计策略
典型的程序结构
设计良好的软件结构通常顶层扇出比较高,中层扇出较少, 底层又高扇入到公共的实用模块中去。
2013-7-14
若数据流图所描述的 信息流具有上述特征 则称作变换流。
5
9.1基本概念和设计过程
基本概念和设计过程
事务流 由于基本系统模型呈变 换流,故任意系统中的信 息均可用变换流刻画。 若数据流具有如图9.2所 示形状,称“事务流”。 单个数据项称为事务 (transaction)沿传入 路径(接受通道)进入系 统,由外部形式变换为内 部形式后到达事务中心, 事务中心根据数据项计值 结果从若干动作路径中选 定一条继续执行。
2013-7-14 2
第九章 面向数据流的设计方法
面向数据流的设计方法
本章所述技术用于软件的概要设计描述 ,包括模块、界面 和数据结构的定义,这是后续开发的基础。 每种软件设计方法都有长处和不足,选用哪种方法应考虑适 用的范围。 任何软件系统都可以用数据流图表示,面向数据流的设计方 法可用于任一种软件系统的开发。 该方法对那些顺序处理信息且不含层次数据结构的系统最为 有效,如,过程控制、复杂的数值分析过程、以及科学与工程 方面的应用等等。 当SD方法用于完全的数据处理时,即使系统中使用层次数 据同样行之有效。
2013-7-14
15
9.2变换分析
变换分析
步骤四 划定输入流和输出流边界孤立变换中心。 输入、输出流边界的划分可能因人而异,不同的设 计人员可能把边界沿着数据通道向前推进或后退一个 处理框,这对最后的软件结构影响不大。
“传感器监测子系统”的流界在图9.7中用虚线表示。
2013-7-14
16
9.2变换分析
2013-7-14
4
9.1基本概念和设计过程
基本概念和设计过程
变换流
在基本系统模型(即顶级数据 流图)中信息通常以“外部 世界”所具有的形式进入系 统,经过处理后又以这种形 式离开系统。 输入信息流沿传入路径进入系 统,同时由外部形式变换为 内部形式,经系统变换中心 加工、处理,作为输出信息 流又沿传出路径离开系统, 并还原为外部形式。
2013-7-14 12
9.2变换分析
“传感器监测子系统”的第二级DFD
2013-7-14
13
9.2变换分析
“传感器监测子系统”的第三级DF
2013-7-14
14
9.2变换分析
变换分析
步骤三 确定DFD为变换流还是事务流。 系统内部的信息流总可以用变换流表示,倘若具有明显的事 务特性,还应该采用针对事务流的映射方法。设计人员首先要 判定DFD中占主导地位的信息流,并确定其特性,然后孤立 出具有变换特性或事务特性的支流,这些支流将用于精化由主 导数据流推出的程序结构。 以图9.7所示DFD为例,数据沿一个传入路径进来,沿三个传 出路径离开,无明显的事务中心,该信息流应属变换流。
2013-7-14
28
9.2变换分析
“传感器监测子系统”的程序结构
2013-7-14
29
9.2变换分析
变换分析
上述七个设计步骤的目标是给出软件的一个整体 描述。 一旦有了这样一个描述,设计人员即可从整体角度评 价和精化软件的总体结构,此时修改所需耗费不多, 却能大大提高软件质量。 比较上述设计过程与一般直接编码过程可知,如 果源代码是软件唯一的表现形式,设计人员很难从整 体的观点评价和精化软件。
2013-7-14
18
9.2变换分析
变换分析
一级分解 图9.8展示的是一个简单三叉结构,实际处理大 型系统的复杂数据流时,可能需要两个甚至多个模块 对应上述一个模块的功能。 “一级分解”的原则 在完成控制功能并保持低耦合度、高内聚度的前 提下尽可能减少模块数。
2013-7-14
19
9.2变换分析
2013-7-14
38
9.3事务分析
用户交互子系统的程序结构雏形
2013-7-14
39
第九章 面向数据流的设计方法
9.4启发式设计策略
变换分析和事务分析的最后一个步骤都是运用启发 式策略对程序结构雏形进行优化,以提高软件设计的 整体质量。
启发式设计策略是人们从长期的大量软件开发过程 中积累总结的经验。
2013-7-14
27
9.2变换分析
变换分析
修改“传感器监测子系统”的程序结构雏形 (1)因只存在唯一一条传入路径,故输入控制模块可删除; (2)由变换中心产生的整个子结构可归并为“建立警报条件” 一个模块(选择电话号码的功能纳入其中),变换控制模块不 再需要; (3)“格式化显示”和“生成显示”两个模块归并为“产生 显示”一个模块。
2013-7-14
30
第九章 面向数据流的设计方法
9.3 事务分析
当数据流具有明显的事务特征时,即能找到一个事务(亦称触 发数据项)和一个 事务中心,采用事务分析法更为适宜。 下面以“家庭保安系统”中“用户交互子系统”为例,说明事 务分析法。 该子系统的第一级数据流图如图9.5所示,精化后得到如图9. 14所示第二级 数据流图。图中“用户命令数据”流入系统 后,沿三条动作路径之一离 开系统,若将数据项“命令类型” 看作事务,该子系统的信息流具有明显的事务 特征。 事务分析法的步骤与变换分析方法基本类似,主要差别在于从 数据流图到程序 结构的映射。
2013-7-14 3
第九章 面向数据流的设计方法
9.1基本概念和设计过程
用SD方法将数据流图转换为软件结构 (1)确定信息流的类型; (2)划定流界; (3)将数据流图映射为程序结构; (4)提取层次控制结构; (5)通过设计复审和启发式策略精化结构。 第三步所用映射方法涉及信息流的类型。 信息流分为变换流和事务流两种类型。
2013-7-14
35
9.3事务分析
事务流映射
2013-7-14
36
9.3事务分析
事务分析
用户交互子系统的一级分解
2013-7-14
37
9.3事务分析
事务分析
步骤六 分解并精化事务结构以及每条动作路径所对应的结构。 这些子结构是根据流经每一动作路径的数据流特征,采用本 节或上节所述设计步骤导出的。 图9.18给出了各条动作路径映射后的程序结构。 步骤七 使用启发式设计策略,精化所得程序结构雏形,改良软件质 量。 这一步骤与变换分析法相同。
“传感器监测子系统”
2013-7-14
17
9.2变换分析
变换分析
步骤五 执行“一级分解”导出具有三个层次的程序结构。 顶层为总控模块; 底层模块执行输入、计算和输出功能; 中层模块控制、协调底层的工作。 如图9.8所示,主控模块负责协调下面几个中层控制模块: 输入流控制模块,接收所有输入数据; 变换流控制模块,对内部形式数据进行加工、处理; 输出流控制模块,产生输出数据
2013-7-14
33
9.3事务分析
确定流界
2013-7-14
34
9.3事务分析
事务分析
步骤五 把数据流图映射为事务处理型的程序结构。 事务处理型的程序结构由“ 输入”和“散转”两部分组成, 输入部分的构成方法如变换分析法,即从事 务处理中心开始, 沿输入通路向外推进,每个处理框映射为一个模块。 “ 散转 ”部分顶层为一“散转”模块,它总控所有对应于每 一动作路径的控制模块,每条动作路径都根据它的信息流特征 映射为一个程序子结构。
2013-7-14 7
9.1基本概念和设计过程
面向数据流的设计
2013-7-14
8
第九章 面向数据流的设计方法
9.2 变换分析
变换分析由一系列设计步骤组成,经过这些步骤就 能把具有变换流特点的数据流图,按预先确定的模式 映射成软件结构。
2013-7-14
9
9.2变换分析