面向数据流的设计方法

标签:
软件设计数据流图 |
分类: 软件过程改进 |
1. 从数据流到程序结构
在某些应用中其他设计方法可能更有效,数据流方法可以作为辅助手段。例如数据库系统、专家系统、面向对象系统界面等。
面向数据流的设计可以方便地从分析模型转换导出程序结构的设计描述。这种从信息流(用数据流图表示)向结构的变迁是按一下过程完成的:
(1)
(2)
(3)
(4)
(5)
(6)
(7)
程序结构的设计过程是按“抽象细化自顶向下”的思维方法进行的。
面向数据流的系统结构图中的典型模块:传入模块、传出模块、变换模块(变换型处理的中心)和协调模块(事务型处理的中心)。
每确定建立一个新模块,先将它抽象为一个黑盒,定义模块的外部特征(IPO):模块的功能,即该模块“做什么”;该模块的外部接口,即与其他模块传送的参数。
对已建立的模块“细化”,考虑模块内部如何完成它的功能,即模块应“怎样做”,于是在下一层建立新模块。
每一个模块应明确执行某项任务,并应包含不能完成任务时的对策,后者一般不应分离到其他模块。
每建立一个新的模块,应注意赋予该模块一个合适的名字,这个名字应能明确并正确地表达该模块的功能。
通过“先决定做什么,再考虑怎么做”的循环过程,直至得到完整的层次结构。
经验试探原则:层次结构清晰,对可预见的功能扩充预留接口;模块功能单一、完善;消除重复功能,改善结构;模块作用范围关系;扇入扇出约束;模块大小(McCabe
模块的设计应逐步细化,并注意模块调用传递的信息应该与同一层的数据流图的数据流相对应。
2. 变换型结构
http://s4/mw690/004k5XOCzy6Wvly4wYb33&690
使用变换分析,从需求规格说明的数据流图导出变换型程序结构,步骤有三:
1)
2)
3)
图6.4.2.1-2是需求规格说明中的功能数据流图;
实际的软件系统是变换型和事务型结构的混合结构。通常以变换分析为主,事务分析为辅的方式进行结构设计。在结构设计时,先利用变换分析方法把系统分解为输入、中心处理和输出三部分,设计出结构图的上层模块,然后根据数据流图(控制流图)各部分的结构特点,灵活运用变换分析和事务分析,得到系统的初始结构图。
初始结构图只是满足系统的方案之一,通常不是一个好方案,并且还需要按照需求规格说明中定义的种种约束补充完善系统的结构图。因此在导出初始结构图后,尚有大量的补充和改进的工作。
上述讨论的假设是系统工作在单任务的状态,系统是一个层次的结构。如果系统是在多任务状态下运行,那么需要将数据流图中的加工按任务划分开。每一个任务设计成一个层次结构。任务间的联系用通信方式实现。
一下是医监数据采集系统的实例。
4.1A:乘员、生理参数、巡检结束标志、硬件故障字
B:乘员、生理参数、硬件故障字
C:乘员、生理参数、硬件故障字、参数不安全标志
D:设备故障标志
B:乘员、生理参数、参数不安全标志
R:乘员座椅号对照值
S:乘员、生理参数、硬件故障字
T:参数安全范围L1:(U:乘员、生理参数、巡检结束标志、硬件故障字)
L11:(U:乘员、座椅号、巡检结束标志)
L12:(D:座椅号;U:生理参数、硬件故障字)
L2:(D:乘员、生理参数、硬件故障字;U:参数不安全标志、设备故障标志)
L21:(D:生理参数;U:参数野值标志)
L22:(D:乘员; U:参数安全范围)
L23:(D:生理参数、参数安全范围、硬件故障字; U:参数不安全标志)
L3:(D:乘员、生理参数、设备故障标志、参数不安全标志)
L31:(D:乘员、生理参数、设备故障标志)
L32:(D:乘员、设备故障标志)
L33:(D:乘员、生理参数、参数不安全标志)
Li 表示第一次与第二层之间传递的信息,从左项右数字递增;Lij 表示第二层与第三层间传递的信息;D表示自上而下传递的信息;U表示自下而上传递的信息。4.3 改进后的最终结构图
http://s11/mw690/004k5XOCzy6WBMxSa388a&690
L1:(U:乘员、生理参数、巡检结束标志、设备故障标志)
L11:(U:乘员、巡检结束标志)
L12:(D:乘员;U:生理参数、设备故障标志)
L121:(D:乘员、U:座椅号)
L122:(D:座椅号; U:生理参数、设备故障标志)
L123:(D:座椅号、设备故障标志)
L2:(D:乘员、生理参数、设备故障标志;)
L21:(D:乘员; U:参数安全范围)
L22:(D:生理参数、参数安全范围、设备故障标志; U:参数不安全标志)
L23:(D:乘员、生理参数、参数不安全标志)
L3:(D:乘员、生理参数、设备故障标志)
4.4
a. 减少块间联系,本例中考虑最多的是减少数据流在模块间传送的路径和参数。
b. 消除重复的功能。
c. 消除数据流“直通管道”型模块。
d. 当模块篇幅较大或复杂度较高时,可以分离相对独立的功能建立下层模块。
e. 当模块篇幅不大且功能相关度较高时,可以与下层模块合并。
f. 优化要从系统结构考虑,不是仅限于一些局部细节。
g. SA(System Analysis)过程引入的缺陷,可以在SD(System Design)过程中予以纠正。