当前位置:文档之家› 面向数据流的设计方法

面向数据流的设计方法

输入流处 理部分 变换中心 输出流处 理部分
输入流 外部表示 信息 内部表示 时间 变换流 输出流
划分因人而异, 划分因人而异,在一般情况下有点出入对整个 目标软件系统的影响不是很大
©Copyright Xinjun Mao 16
面向数据流的软件设计方法
划分流界例子
输入流 变换流 输出流
A
B E
F H
基本概念和软件设计过程 变换分析方法 事务分析方法 启发式设计策略 设计优化原则
©Copyright Xinjun Mao
25
面向数据流的软件设计方法
事务分析方法
当数据流具有明显的事务特征时,应该采用 事务流的分析方法 基本步骤
– 步骤1. 复审基本系统模型 1. – 步骤2. 复审和精化数据流图 – 步骤3. 确定数据流图的类型:变换流还是事务 流
27
面向数据流的软件设计方法
事务型DFD划分例子
A
接受路径部分
B
事务处 理中心
C
动作路径部分
P
D
©Copyright Xinjun Mao
E
Q
R
S
28
面向数据流的软件设计方法
步骤5.把事务型DFD映射为软件结构
A 输入控制模块 总控模块
B
事务处 理中心
C
散转
C1 C P D E Q 一条动作路径
变换型数 据流图
©Copyright Xinjun Mao
面向数据流的 软件设计方法
软件总体 结构
12
面向数据流的软件设计方法
步骤1. 复审基本系统模型
什么是基本系统模型
– 基本系统模型即SRS中的顶级数据流图
为什么需要对基本系统模型进行复审
– 对系统规格说明书和SRS进行评估,以确保系 统的输入和输出数据符合实际
订票员 订票单
输入流
预定 机票
航班
外部表示 信息
航班号
准备 机票 机票
输出流
费用
变换流
帐单
内部表示 航班目录
帐目
©Copyright Xinjun Mao
记帐
订票员
记帐数据库
时间
5
面向数据流的软件设计方法
事务型的数据流图
数据沿输入通道到达一个转换,该转换根据 输入流类型和特征在若干动作序列中选择一 条来执行
本讲内容
1. 2. 3. 4. 5.
基本概念和软件设计过程 变换分析方法 事务分析方法 启发式设计策略 设计优化原则
©Copyright Xinjun Mao
11
面向数据流的软件设计方法
变换分析方法
基本思想
– 通过一系列的设计步骤,将变换型的数据流图 映射为软件结构 – 输入:SRS(数据流图、数据字典、小说明) – 输出:软件总体结构
©Copyright Xinjun Mao
13
面向数据流的软件设计方法
步骤2. 复审和精化数据流图
为什么需要复审和精化数据流图
– 确保DFD给出目标系统正确的逻辑模型 – 以获得足够详细的DFD – 确保DFD中每个转换代表一个规模适中、相对 独立的子功能
©Copyright Xinjun Mao
©Copyright Xinjun Mao
34
面向数据流的软件设计方法
减少扇出,追求高扇入 减少扇出,
一个好的软件结构通常顶层扇出较高,中间 层扇出较低,底层又高扇入到公共模块中去
……
应避免的结构 期望结构
©Copyright Xinjun Mao 35
面向数据流的软件设计方法
使任一模块的作用域在其控制域内
22
输入流 A B E C D
变换流 F H G I
输出流
J
主控模块
输入流控制模块
变换流控制模块
输出流控制模块
B
D
E
I
A
C
F
G
J
H
输入流 A B E C D
变换流 F H G I
输出流
J
主控模块
输入流控制模块
变换流控制模块
I
B
D
E
J
A
C
F
G
H
面向数据流的软件设计方法
本讲内容
1. 2. 3. 4. 5.
Cn
R
©Copyright Xinjun Mao 29
面向数据流的软件设计方法
步骤6.分解精化事务结构以及每个动 作路径
总控模块 A 输入控制 B C
事务处 理中心
B
C1
C A P D E Q Q R P
一条动作路径
R
©Copyright Xinjun Mao 30
面向数据流的软件设计方法
步骤7. 精化初步软件结构
©Copyright Xinjun Mao
26
面向数据流的软件设计方法
步骤4.识别事务流各个组成部分
把整个事务型DFD划分为以下三个部分
– 接受路径部分:接受事务的输入 – 事务处理中心 – 动作路径部分
判定在每一条动作路径上数据流的特征:变 换流或者事务流
©Copyright Xinjun Mao
©Copyright Xinjun Mao
38
面向数据流的软件设计方法
设计优化原则
在先不考虑时间复杂度的情况下设计并精化软件结 构 借用CASE工具模拟分析运行性能,定位低效率的 部分 详细设计时对耗时的模块进行仔细的推敲,以减少 模块的运行开销 用高级语言编写 对大量占用CPU资源的模块必要时用低级语言重新 进行编码,以提高效率
©Copyright Xinjun Mao 39
面向数据流的软件设计方法
本讲小结
1. 2. 3. 4. 5.
基本概念和软件设计过程 变换分析方法 事务分析方法 启发式设计策略 设计优化原则
©Copyright Xinjun Mao
40
面向数据流的软件设计方法
思考题
你觉得在进行软件设计时,除了上述启发式 设计策略和优化原则之外,还应考虑那些问 题?
输入流 A B E C D
变换流 F H G I
输出流
J
主控模块
输入流控制模块
变换流控制模块
输出流控制模块
B
D
E
I
A
C
F
G
J
H
面向数据流的软件设计方法
步骤7. 精化软件结构改良软件质量
以“模块化”的思想,对软件结构中的模块 进行拆并,以追求高内聚、低耦合、易实现、 易测试、易维护的软件结构
©Copyright Xinjun Mao
©Copyright Xinjun Mao
41
面向数据流的软件设计方法
An Introduction to Software Engineering
Q&A
Practice, Practice, and Practice
©Copyright Xinjun Mao 42
作用域是指受模块内部判定影响的所有模块 控制域是指其所有的下属模块
A 受 E 中判 定影响 A
B
C
D
C
D
E
F
F
E
B
©Copyright Xinjun Mao 36
面向数据流的软件设计方法
其他启发式设计策略
降低模块接口复杂度和冗余度,提高协调性
– 模块接口应尽可能简单并与模块功能相一致如: – Sort(Data; Number) ---- Sort(Data)
©Copyright Xinjun Mao
7
面向数据流的软件设计方法
混合型数据流图
a
b
事务处理中心
c
p
d
e
q r s
8
©Copyright Xinjun Mao
面向数据流的软件设计方法
面向数据流的软件设计过程
面向数据流的设计方法的主要过程
– – – – 确定数据流的类型:变换流还是事务流 划定流界 将数据流图转换为软件结构 通过设计复审和启发式策略精化所得到软件结 构
面向数据流的软件设计方法
本讲内容
1. 2. 3. 4. 5.
基本概念和软件设计过程 变换分析方法 事务分析方法 启发式设计策略 设计优化原则
©Copyright Xinjun Mao
33
面向数据流的软件设计方法
启发式设计策略
改造软件结构,降低耦合度,提高内聚度
– 如果在几个模块中发现共有的子功能,一般应 该将该子功能独立出来作为一个模块,以提高 模块的独立性 – 合并那些具有较多的控制信息传递的模块以降 低模块之间的耦合度
模块功能可预测,避免对模块施加过多限制
– 模块的功能可预测是指输入恒定,则输出恒定
追求单入口、单出口的模块 为满足设计和可移植性要求,把某些软件用 包 封装起来
©Copyright Xinjun Mao 37
面向数据流的软件设计方法
本讲内容
1. 2. 3. 4. 5.
基本概念和软件设计过程 变换分析方法 事务分析方法 启发式设计策略 设计优化原则
I
J
C
D
G
©Copyright Xinjun Mao
17
面向数据流的软件设计方法
步骤5. 执行一级分解
任务: 导出三个层次结构的软件结构
– 底层模块:用于输入、输出和计算等基本功能 – 中间层模块:协调、控制底层模块的工作 – 高层模块:用于协调和控制所有的从属模块
原则
– 在确保完成系统功能并保持低耦合度、高内聚度的情况 下尽可能的减少模块数目
相关主题