第5章 总体设计-结构化设计方法

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

f3
f1 f1
编辑
打印
M
M
A
B
A
B
C
模块M有条件地调用模块A与B。 判定为真时调用A,为假时调 用B
模块M反复调用模块A、B、C。 模块M循环调用模块A,B,C

结构图的辅助符号
结构图描述了模块间的调用关系,揭示了 模块结构的偶合和内聚关系,这种关系代表 系统的一种静态结构,表明模块间是否有关 系,是否相互发生影响,但没有说明如何发 生影响。 结构图的主要质量指标是模块内聚度和偶 合度。 获取结构图 根据需求规格说明书建立初始结构图;按高 内聚、低藕合的标准修改初始结构图;反复 修改调整直至获得满意的最终结构图。
正文加工系统
加编号的H图
输入 1.0
输出 2.0
编辑 3.0
加标题 4.0
存储 5.0
检索 6.0
编目录 格式化 7.0 8.0
添加 3.1
删除 3.2
插入 3.3
修改 3.4
合并 3.5
列表 3.6
层次图描绘软件的层次结构 层次图适用于自顶向下的设计软件 过程。 书写文档时,常用层次图描绘软件 结构而不是结构图。因为结构图上包 含的信息太多,清晰程度有时反倒不 如层次图。
T
接受路径
传 入
变 换
传 出
事 务 中心
。 。 。
事务中心
事务型结构的基本模型 同时存在两类结构的模型
结构化设计方法的设计过程
精化数据流图
事务 流类
确定事务中心和动作路径 映射为事务结构 提取控制结构 用启发式规则精化软件结构 描述接口和全局数据结构
变换 确定输入输出流界 映射为变换结构
事务分析
如果没有变换中心,系统的逻辑输入和逻 辑输出是完全相同的数据流,则应把DFD划 分为仅有传入和传出的两个部分。 如果有二次输入数据,则应照实把该输入 数据视为变换中心或传出部分的成分,而不 是传入部分的成分。 如果DFD缺少应有的细节,则应对数据流 图进行补充,必要时应重画DFD 。 对于复杂的数据流图,每个设计人员可能 会得出不同的划分结果。
子程序或过程
A B
模块A调用模块B
控制信息
方框代表一个模块,框内注明模块的名字或 主要功能,方框之间的箭头或直线表示模块 的调用关系。在结构图中带注释的箭头表示 模块调用过程中来回传递的信息或数据。箭 头尾部是空心圆表示传递的是数据,箭头尾 部是实心圆表示传递的是控制信息。 当一个模块调用另一个模块时,调用模块把 数据或控制信息传给被调用模块,以使被调用 模块能够运行。另方面被调用模块在执行过 程中又把它产生的数据或控制信息送回给调 用模块。
结构化设计方法
第5章 总体设计
设计举例
结构化设计方法
无论是何种类型的设计,都要从需求分析 获得的分析模型导出软件的设计模型。
数据对象说明
E-R图
STD图
过程设计 接口设计
DD
DFD图
结构设计
控制说明
加工说明 (PSPEC)
数据设计
设计模型 分析模型
结构化设计方法的特点是面向软件系 统结构,采用结构图来描述程序的结构。 根据需求分析阶段对数据流的分析结果 来设计软件结构,把数据流图变换成程 序结构。理论上,结构化设计方法可以 用于任何软件系统的开发。由于结构化 设计的工作与结构化分析工作相衔接, 所以又说它是一种面向数据流的设计方 法。
模块间的调用关系和接口表示
A
x,y
A
z
x,y y,z
查找学生成绩
学号
查找成功
B
A调用B,传递参数是 x,y,z,其中x,y是B的 输入参数,z是B输出 参数,存放结果值
B
A调用B时,y既是B的 输入参数,又是B输出 参数, B修改了y的值
查找学生记录 反映了既有控制信息 又有数据信息的情况。
报表加工程序结构图
图形工具
结构图(SC)
结构图是描绘系统结构的图形工具,描述 系统由哪些模块组成、程序中模块之间的调 用关系、每个模块“做什么”以及每个模块 输入和输出。 结构图是结构化设计中的重要的结果。 结构图的基本成分有方框、箭头或直线以 及带注释的箭头。
结构图的基本成分
模块 调用
数据信息
已定义模块 例如程序库中的函数
层次图(H图)
用于描绘软件的层次结构,层次图中一个矩形框 代表一个模块,框间的连线表示调用关系,位于上 方的矩形框所代表的模块调用位于下方的矩形框所 代表的模块
正文加工系统
输入
输出
编辑
加标题
存储
检索
编目录 格式化
添加
删除
插入
修改
合并
列表
HIPO图
H图里除了顶层的方框之外,每个方框都加编号, H图中的每个方框配置一张IPO图,该IPO图描述对应 方框代表的模块的处理过程,每张IPO图内都标有它 所描绘的模块在H图中的编号。
变换分析
复审 详细设计
变换分析
变换分析是一系列设计步骤的总称,它是 指经过这一系列设计步骤把具有变换流特性 的数据流图按预先确定的模式映射成软件结 构。 变换结构由传入、传出和变换中心三个部 分组成。 变换中心(中心加工)的任务是把系统的 逻辑输入加工为系统的逻辑输出。
逻辑输入
距离物理输入端(输入始端)最远的但仍 可以被视为系统输入的那些数据流。
面向数据流的设计方法
基本概念和设计过程
SD根据DFD的特性定义变换映射与事务映射。 变换映射与事务映射可以机械地把DFD转换成 初始SC图或程序结构。
变换映射
变换型DFD图
事务映射
初始SC图
事务型DFD图
初始SC图
变换流
如果数据流图中输入信息流沿传入路径进入系统, 同时由外部形式变换为内部形式,经过系统变换中 心加工或处理后,再沿输出通道变换成外部形式离 开系统,则称数据流图所描述的信息流是变换流。 变换流型数据流图有明显的输入、加工/变换、输出 三部分。
逻辑输入 物理输入
f8
Leabharlann Baidu逻辑输出
物理输出 W 传出
f9 f10 f6
A
f1
B
f2
C
f3
f7
R U
P 传入 D
f4
V
E
f5
Q
变换中心
输入流
输出流
变换型数据流图
f3和f5是逻辑输入数据流 ,f8和f9是逻辑 输出数据流 ;P,Q,R属于变换中心;虚线 表示分界线,标定了传入、传出和变换中心 的边界。 如果变换中心不容易找到,可以考虑从物 理输入或物理输出开始逐步从数据流图的两 个端点向中心推进。 通常几支数据流的汇合处的加工是变换中 心,它的两端是逻辑输入和逻辑输出。
f8,f9 f7 f7 R ME
f8
W
f9 U
P
f2
B
f10
V
f1
A
变换型DFD导出的初始结构图
二级分解的第二种画法
Mc f3,f5 f3,f5 MA f3 f5 f5 f6 Q f5
Dto E
f8,f9 f8,f9 ME f8 f9
MT f3 f6 f7 f7
f8,f9 R
取得C
f2 取得B f1 f1 读入A
信息流 外部表示 传入路径 输入流 输出流
变换 中心
传出路径
信 息 内部表示
变换流
基本系统模型模型
时间
变换(流)结构
事务流
信息沿传入路径进入系统,由外部形式变换为内 部形式后到达一个事务中心,事务中心根据输入信 息的类型,在若干个动作路径或活动流中选择一个 来执行,这种信息流称为事务流。
事务
动 作 路 径
进行二级分解
对一级分解的结果继续自顶向下的分 解,这一步分解的方法与第一级分解一 样,实质上仍然是映射。 把数据流图中的加工按照一定的规则 转换为结构图中的模块,直至画出每个 分支所需要的全部模块,获得系统的初 始结构图。
A
f1
f8
W
B
f2
C
f3
f7
R
f9 f10
P
f6
D
f4
U
V
E
f5
Q
Mc
f3,f5 f3,f5 f8,f9
输出流
顶层
f3 ,f5 f3 ,f5
MC
f8, f9 f8, f9
第一层
MA
MT
ME
DFD经第一级分解后导出的结构图 顶层
f8, f9 f3 ,f5
MC
f3 ,f5
f8, f 9
MA
MT
ME
第一层
调用线注明了模块间输送的数据流名称。 此种画法强调第一层每一分支只画一个模块。 可能出现只有输入和输出两个模块的情形。
进行一级分解
主要任务是画出初始结构图的最上面的两层 模块,系统的顶层和第一层。顶层只有一个 用于控制的模块,其功能是完成整个系统要 做的事情。第一层(顶层的下一层)一般包 括输入、输出和变换中心三个模块,它们分 别代表系统的三个相应分支。 具体做法是先把DFD的变换中心对准结构图 的顶层模块,然后画出结构图的顶层模块。 然后逐步自顶向下建立或设计结构图的其他 下属模块和成分。
取得E f3, f4 f4 f2 Bto C 读入D f2
P
输出W
f9
U to V
得出U
f10 f10
输出V
Ato B
变换型DFD导出的初始结构图
变换分析的步骤
复查基本系统模型(确认系统的输入 数据和输出数据符合实际);复查并精 化数据流图;确定数据流图具有变换特 性还是事务特性;确定输入流和输出流 的边界,从而分离出变换中心;完成 “第一级分解”;完成“第二级分解”; 采用启发规则对得到的程序结构的初始 结果进一步精化。
结构化设计(SD)的基本观念
认为程序或系统是由一组功能操作构成的, 需要实现的系统是逻辑功能(模块)的抽象 集合,着重分析模块之间关系,忽视模块内 部的情况。 软件应该设计为结构简单,功能单一、相 互独立的模块组织。 重视“模块度”(软件系统中的模块数目) 概念。 内聚和耦合是评价软件设计质量的标准。
逻辑输出
距离物理输出端(输出末端)最远的但仍 可以被视为系统输出的那些数据流。 数据通过变换中心时被加工,其内容和形 式可能会发生变化,数据在传入和传出的路 径上,其内容和形式也可能会发生变化。
从数据流图导出程序结构图的方法
分析数据流图
在数据流图上找出传入、传出和变换中心,并划分 出它们的分界线。
模块设计原则
启发式规则(用于改进设计、提高质量) 提高模块独立性(高内聚,低藕合) 模块规模应该适中(30~60个语句行为宜) 深度、宽度、扇出和扇入都应适当
…...
应避免的结构
应追求的结构
启发式规则(用于改进设计、提高质量) 模块的作用域应该在控制域之内 追求所有受判定影响的模块都从属于作出 判定的那个模块。 尽可能降低模块接口的复杂程度 接口复杂或不一致是紧偶合或低内聚的征 兆,也是软件发生错误的主要原因之一。 设计单入口单出口的模块(易理解维护) 模块功能应该可以预测(降低维护开销)
符号 f1 f2 f3 f4 f5 f6 f7 f8 f9
信息名 读入信息 最后输入信息 已编辑信息 已检验信息 有效信息 处理结果 日期 信息行 最后结果
f2
报表加工
f6 f5 f5 合法性检验 f2 采集信息 f2 读入 f3 f3 f4 f6 f2
计算
f7
印报表
f9 f8
检验
印表头
f8
印表尾 f8
事务分析
当数据流具有明显的事务特性时,则 应该采用事务分析法处理问题。事务分 析是从事务流型的数据流图导出程序结 构,它的步骤与变换分析基本类似,主 要差别是从数据流图到程序结构的映射, 相关规则及处理参见教材。
设计优化
不能工作的‘最佳设计’是值得怀疑 的。 设计应该追求能够满足所有功能和性 能要求,遵循设计原理和启发式规则的 软件。 早期精化 尽量在设计的早期对软件结构进行精 化,对不同的软件结构进行评价和比较, 力求 “最好”结果。
f8,f9 ME
f8,f9 f8 W f9 U f10
MA
f3 C f2 f4 D f5 E f5 f6 Q f3 f6
MT
f7 f7
P
R
B
f1 A
V
第二级分解
二级分解的第一种画法
Mc f3,f5
f8,f9
f3,f5
MA f3 C f5 E f4 D f5 f6 Q f3 f6 MT
f8,f9
少而简 优化时,只要不违反模块化原则,应 该使用尽可能少的模块;只要满足信 息要求,应该使用尽可能简单的数据 结构。 简洁的结构容易调试和维护。 对时间复杂性有特殊要求的应用, 优化过程会延续到详细设计甚至编码 阶段。
对时间有特殊要求的软件优化对策
优先设计并精化软件结构; 借助CASE工具模拟分析运行时的性能,找 出低效部分; 详细设计时对最耗时的模块仔细推敲; 用高级语言编码; 必要时,对大量占用CPU资源的模块用低级 语言重新编码。即“先让它干起来,再让它 快起来”。
逻辑输入
物理输入
f8
逻辑输出
物理输出 W 传出
f9 f10 f6
A
f1
B
f2
C
f3
f7
R U
P 传入 D
f4
V
E
f5
Q
变换中心
输入流
输出流
顶层
MC/主模块
一级分解
物理输入 A
f1
逻辑输入
f8
逻辑输出
物理输出 W 传出
f9 f10 f6
B
f2
C
f3
f7
R U
P 传入 D
f4
V
E
f5
Q
变换中心
输入流
相关文档
最新文档