第五章 传统的设计方法(白底)2014
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
位置离受它控制的模块越近越好
例
下一节
消除重复功能
X和Y中有部分功能类似
e.g. X Q1 Y Q2 X Q’ Y
X
Y
开关量
Q1’
Q2’
Q’
Q1’ Q
Q2’
Q’模块
Q
Q’模块 成了逻辑内聚了,内聚度高
X
Y
X
Y
X
Y
Q1’
Q2’
Q1’
Q2’
Q
Q1’和Q2’均较大, Q单独构成模块
Q
Q2‘较小,上升与Y合并
• 基本系统模型指顶级DFD和所有由外部提供的信息。 • 这一设计步骤是对系统规格说明书和软件需求规格说 明书进行评估。
顶级DFD-“家庭保安系统”
第1级DFD:“家庭保安系统”
第2级DFD-传感器监测子系统”
第3级DFD-“传感器监测子系统”
• 对DFD2细化的结果得到传感器监测子系统” 的第3级DFD
• 建议:
– 先用SD方法确定软件的整体结构 – 在详细设计阶段再用面向数据结构的方法确定 部分模块的逻辑过程
5.1.2结构化设计模型 ——从分析模型导出设计模型
数据对象描述
PSPEC DFD 过 程 设计 接口设计 体系结构设计
E-R DD
CFD CSPEC 数据设计
分析模型
设计模型
5.2结构化设计SD
–信息流沿传入路径进入系统,由外部形式变换为内部形 式, –经系统变换中心加工、处理, –作为输出信息流又沿传出路径离开系统,并还原为外部 形式。
DFD种类(2)事务流
•事务:单个数据项(transaction) •特点:
– 沿传入路径(接受通道)进入系统,由外部形式变换为内部形式后到达事 务中心,事务中心根据数据项计值结果从若干动作路径中选定一条继续执 行。
(步骤二)确定DFD流的类型
• ―用户命令数据”流入系统后,沿三条动作 路径之一离 开系统, • 若将数据项“命令类型”看作事务,该子 系统的信息流具有明显的事务 特征。
(步骤三)确定流界
输入流 变换中心 输出流
输入流 接受路径 事务中心
变换中心 接受路径
输出流
(1)找出数条动作路径的公共源头,即为事务中心,确定由事务中心发出的 每一动作路径的数据流特性。事物中心是 “启动命令处理”框。 (2)划定接受路径与所有动作路径的界限,判定每一动作路径数据流的特征
(步骤四) “一级分解”
传入部分
A
变换中心
B
传出部分
W
a
b
C
c
P
r
w
R
D
d
p
E
u
U
e
v
Q
V
一级分解
传入部分
A
变换中心
B
传出部分
W
a
b
d
C
c
P
D
E
e
r p
Q
w R u
U
v
V
传感器监测子系统一级分解结 果
输入流
变换中心
输出流
(步骤五)二级分解
DFD的处理框与程序结构模块一一对应 • 把数据流图中每个处理框映射成程序结构 中一个适当的模块 • 二级分解过程是从变换中心的边界开始沿 输入、输出通道向外移动,把遇到的每个 处理框映射为程序结构中的一个模块。
T
接受部分
事务中心
动作部分
事务控制
顶层
接收
发送
第一层
例:“家庭保安系统”中“用户交互子系统”
“家庭保安系统”第1级DFD:
用户交互子系统的二级数据流图
(步骤一)复审精化DFD ——用户交互子系统的3级数据 流图
事务
• •
―用户命令数据”流入系统后,沿三条动作路径之一离 开系统, 若将数据项“命令类型”看作事务,该子系统的信息流具有明显的事务 特征。
(1)输入分支映射(2)输出分支映射
主控模块 输入流 控制模块 输出流 控制模块
传感器监测子系统输出流部分的程序结构
传感器监测子系统的程序结构“雏形”
模块说明
•程序结构的模块名隐含模块功能,必须为每个模块 写一个简要的处理说明, •包括:
①进出模块的信息(接口描述); ②模块的局部信息; ③处理过程陈述,包括主要的判断点和任务; ④对有关限制和一些专门特性的简要说明(如,文件I/ 0,独立于硬件的特性,特殊的实时要求等等)。
(步骤二)确定DFD流的类型
9.2变换分析
变换流还是事务流? • 数据沿一个传入路径进来,沿三个传出路径离开, 无明显的事务中心,该信息流应属变换流。
(步骤三)划分边界
• 数据沿一个传入路径进来,沿三个传出路径离开, 无明显的事务中心,该信息流应属变换流。 • 划定输入流和输出流边界孤立变换中心。
Q
Q1‘较小,上升与X合并
X
Y
Y
Q2’
Q
Q1‘较小,Q2均较小,上升分别与X、Y合并
扇入和扇出
M
M M的扇入
高扇入能增加模块M的利用率
M的扇出
低扇出可减少模块M调用和控制的复杂度
例:应避免的扇出结构——煎饼型结构
煎饼形结构 不可取!
计算 实发工资
取得 工资数据
计时制 工资额
薪金制 工资额
编外人员 工 资
(步骤六)启发式设计策略优化初始SC图
• 使用启发式设计策略,精化所得程序结构 雏形——初始SC图,改良软件质量。 • 这一步骤与变换分析法相同。详见后
5.3.4混合结构
• 一个大型系统常常是变换型结构和事务型的混合结构,为了 导出初始SC图,必须同时使用变换映射和事务映射 • 下例中,总体是一个变换结构,但是输入路径是事务型结构 (比如对输入数据分类编辑等)
第五章 传统的设计方法
5.1概述 5.1.1传统的设计方法: 5.1.1结构化设计模型 5.2结构化设计SD 5.2.1描述工具—SC图 5.3面向数据流的设计——SD法 5.3.1面向数据流设计过程和基本概念 (1)面向数据流的设计过程 (2)变换流 (3)事务流 5.3.2变换映射 5.3.3事务映射 5.3.4混合结构 5.3.5优化结构设计的指导规则 5.4数据和文件设计 5.5详细设计——过程设计 5.6 人机界面设计 --见板书 5.7设计规格说明书 5.8设计复审
“ 散转 ”部分顶层为一“散转”模块,它总控所有对应于每一动作路径
用户交互子系统的一级分解
散转-事务中心 输入
三个 动作路径
(步骤五)二级分解
分解并精化事务结构以及每条动作路径所对应 的结构 • 子结构是根据流经每一动作路径的数据流特征, 采用本节或上节所述设计步骤导出的。
用户交互子系统的程序结构雏形
5.3.2变换映射
• 细化DFD • 划分DFD图的边界 • 建立初始SC图的框架
– 顶层都只含一个用于控制的主模块 – 第一层包括传入、传出和中心变换三个模块
• 分解SC图的各个分支
– 分解实质上是“映射”
实例2:家庭保安系统
背景 • 家庭保安市场正以每年40%的速度增长。 我们希望建立一种基于微处理器的家庭保 安系统,它能够识别异常事件并采取相应 的防护措施。这些异常事件应包括:非法 进入、火灾、水淹,等等。一旦异常情形 被相应的传感器探测出来,系统应自动用 电话向监控中心报警。此外,系统应允许 户主对其行为实施程序式控制。
家庭保安系统的需求
开机后,显示当前工作状态,接收并处理用户指令 一:用户交互 1)配置操作
软件允许用户在安装时进行系统配置,并通过控制面板与用户进行 信息交互,实施对传感器的监控 1)指定每一传感器的种类和编号; 2)设置开、关机密码; 3)指定报警电话号码; 4)指定报警延迟和电话重拨延迟时间(单位为秒)
目录
5.1概述
5.1.1传统的设计方法:
– 面向数据流 – 面向数据结构
5.1.1结构化设计模型 ——从分析模型导出设计模型
5.1.1传统的设计方法包括:
(1)面向数据流设计(SD方法)
– 数据流是考虑一切问题的出发点,SASD; – 集中精力在模块的划分上,以得出软件的体系 结构图; – 适合于在概要设计阶段使用。
Hale Waihona Puke Baidu
(步骤四)一级分解-事务流映射
• 把DFD映射为事务处理型的程序结构。
事务处理型的程序结构由“ 输入”和“散转”两部分组成, “输入”部分的构成:如变换分析法,即从事 务处理中心开始,沿输入
通路向外推进,每个处理框映射为一个模块。 的控制模块,每条动作路径都根据它的信息流特征映射为一个程序子结构。
2)启停系统 3)核对口令 二:异常处理——传感器监测:
当软件系统接收到传感器发出的数据后,判别是否出现异常事件。 有异 常,则在指定的延迟时间内拨报警电话号码,拨号操作将按照重拨延迟 反复进行,直至电话接通。然后软件系统负责报告时间、地点和异常事 件的性质。
(步骤一)复审精化DFD
以“家庭保安系统”为例
5.2.1描述工具—SC图
• SC图的组成符号 (P88)
– 模块:矩形框 – 模块间的调用关系:带箭头的连线 – 线上标注传入和传出模块的数据流
• SC图中的模块符号
– 传入——左侧 – 传出—右侧 – 变换 – 源:始端 – 漏:末端 – 控制 :只调用其他模块,不受其他模块调用的模块。
SC图中的模块调用
•这些描述构成第一版设计规格说明书。
(步骤六)启发式设计策略,优化雏 形
对于程序结构的雏形,以“模块独立”为指导思 想,对模块或合或拆,旨在追求高内聚、低耦 合,易实现、易测试、易维护的软件结构。
优化“传感器监测子系统”的程序结构雏 形
( (2)由变换中心产生的整个子结构可归并为“建立警报条件”一个模块(选择电 话号码的功能纳入其中),变换控制模块不再需要; (3)“格式化显示”和“生成显示”两个模块归并为“产生显示”
1)简单调用
B
A
C
A先调B,再调c
2)选择调用
B
A C A B C D
左:A根据内部判断,决定是否调B 右:按另一个判定结构决定调C或D
3)循环调用
A根据内部判断,重复调B和C 直到A内出现满足循环结束条件
5.3面向数据流的设计——SD法
• 需求阶段:分析数据流,生成DFD和DD • 设计阶段:将DFD通过SD法软件结构。 • 适用于:
优化后的“传感器监测子系统”的程序结 构
5.3.3事务映射
• 在DFD图上确定边界
– 事务中心 – 接受部分(接受路径) – 发送部分(包括全部动作路径)
• 画出SC图框架
– DFD图的三个部分分别映射为事务控制模块, 接受模块和动作发送模块
• 分解和细化接受分支和发送分支
划分事务型DFD
传入 变换 传出
例
扇入高:上级模块多——能增加本模块的利用率 扇出低:下级模块少 ——可减少模块调用和控制的复杂度 (一般扇出数为3~4,不超过5~7)例
• 作用域/控制域规则
改造程序结构,使任一模块的作用域不要超出控制域的范围
模块作用域:受该模块内部判定影响的所有模块;
(模块控制域为其所有下层模块)
税收 扣款
编外人员 税 收
•组成:
– 至少一条接受通道、 – 一个事务中心 – 若干动作路径
接受路径 事务 中心
动作路径
例:混合流:同时存在两类结 构
传入 变换 传出
T 事务中心
(1)面向数据流的设计过程
• 用SD方法从DFD图SC软件结构图
1. 精化DFD图 2. 确定DFD的类型:事务流?变换流? 3. 划定流的边界 4. 把DFD图映射为程序结构(初始的SC图 ) 变换映射或事务映射 5.优化初始的SC图:通过设计复审和启发式策略
SD——Stevens,Myers,Constantine,1970’s • 核心任务:
把DFD图表示的分析模型转换为软件结构的设计模型
• 内容
– 结构设计—概要设计
• 体系结构设计——SC图 • 接口设计——SC图 • 数据库设计——物理数据模型
– 过程设计—详细设计
• 模块的处理过程——N-S图,PDL等
(2)面向数据设计(Jackson方法)
– 数据结构算法程序结构; – 最终得出程序的过程性描述,并不明确软件现分 几个模块的概念; – 适合于在过程设计阶段使用。
• 面向数据流VS面向数据结构的共同点
– 遵循结构化程序设计、逐步细化等设计思想 – 都要从分析模型到设计模型 – 服从“程序结构必须适合问题结构”
c1 c2 b1 a b
A B G
C1
D
d c3
C3 E
e g f
F
h
J
+ +
b3
b2
C2
k
K
j
l
L
m
5.3.5优化结构设计的指导规则
• 修改程序结构,提高内聚,降低耦合
——对模块分割、合并和变动调用关系的指导规则 提高内聚:合并多个子功能模块 简化模块接口:少用全局性数据和控制型信息
• 消除重复功能 • 追求高扇入/低扇出
–顺序处理信息且不含层次数据结构的系统最为 有效,如,过程控制、复杂的数值分析过程、 以及科学与工程方面的应用等等
• 数据流种类 (1)变换流 (2)事务流
5.3.1面向数据流设计过程和基本概念
• DFD的种类
1)变换流 2)事务流
• 面向数据流的设计过程
DFD种类——(1)变换流
变换 中心
• 输入变换加工(处理)输出