找了一晚上,感觉有的文章介绍的不够全面,现结合教材作一些自己的理解
文章目录
(一)数据流图的定义:
1.数据流图(DFD): 描述数据在系统中如何被传送或变换,以及描述如何对数据流进行变换的功能(子功能);
2.数据流图就是用来刻画数据流和转换的信息系统建模技术,任何软件系统都可以用数据流图表示。
–《软件工程》(第三版)高等教育出版社
(二)数据流图中的主要图形元素及符号
附加符号:
(三)如何画数据流图
- 从问题描述中取出4种基本组成成分
- 根据1的结果画出系统的基本系统流图(顶层图)
- 把由2得到的基本系统模型细化为系统的功能级数据流图
- 对功能级数据流图中的主要功能进一步细化,直至满意为止。
(四)数据流图的层次结构
为什么要是用层次结构?
为了表达数据处理过程的数据加工情况,需要采用层次结构的数据流图。按照系统的层次结构进行逐步分解,并以分层的数据流图反映这种结构关系,能清楚地表达和容易理解整个系统。
1. 顶层流图
仅包含一个加工,它代表被开发系统。它的输入流是该系统的输入数据,输出流是系统所输出数据
2. 底层流图(零层图)
是指其加工不需再做分解的数据流图,它处在最底层,分解原来庞大的系统,增加数据存储和对加工和外部实体的编号
3.中间层流图
表示对其上层父图的细化。它的每一加工可能继续细化,形成子图。
数据流图设计原则:
分层感觉就是在上一层的变化流的基础上扩展
分层的数据流图
(五)实践
写了一晚上,感觉画数据流图就是要多看多练才有感觉,直接上题
实践例题1:图书预定系统
第一步:画出顶层数据流图
第二步:细化
第三步:逐步细化
实践例题2:
第四步:对主要功能进一步细化
因为用户命令在上一步已经细化得很彻底了,所以这里只需要进一步细化传感数据
(六)数据词典
为什么要使用数据字典?
答:数据词典与数据流图配合,能清楚地表达数据处理的要求
词条描述:
对于在数据流图中每一个被命名的图形元素,均加以定义,其内容有: 名字,别名或编号,分类,描述,定义,位置,其它等
数据流词条描述:
数据流名:
说明:简要介绍作用即它产生的原因和结果
数据流来源:来自何方
数据流去向:去向何处
数据流组成:数据结构
数据量流通量:数据量,流通量
数据元素词条描述:
数据元素名:
类型:数字(离散值,连续值),文字(编码类型)
长度:
取值范围:
相关的数据元素及数据结构:
数据文件词条描述:
数据文件名:
简述:存放的是什么数据
输入数据:
输出数据:
数据文件组成:数据结构
存储方式:顺序,直接,关键码
存取频率:
加工逻辑词条描述:
加工名:
加工编号:反映该加工的层次
简要描述:加工逻辑及功能简述
输入数据流:
输出数据流:
加工逻辑:简述加工程序,加工顺序
源点及汇(终)点词条描述
名称:外部实体名
简要描述:什么外部实体
有关数据流:
数目:
例如:
名字:零件编号
别名:
描述:唯一地标识库存清单中一个特定零件 的关键码
定义:零件编号=8{字符}8
位置:定货报表
定货清单
……
简而言之就是对我们已经编号的各个成分进行解释说明
(七)变换分析方法
步骤1. 复审基本系统模型
什么是基本系统模型
—基本系统模型即SRS中的顶级数据流图
为什么需要对基本系统模型进行复审
—对系统规格说明书和SRS进行评估,以确保系统的输入和输出数据符合实际
步骤2. 复审和精化数据流图
为什么需要复审和精化数据流图
—确保DFD给出目标系统正确的逻辑模型
以获得足够详细的DFD
---- 确保DFD中每个转换代表一个规模适中、相对独立的子功能
步骤3. 确定数据流图的类型
信息流都可用变换流表示,但是如果有明显的事务流特征,则还应采用事务流的映射方法。
设计人员负责判定在数据流图中占主导地位的信息流是变换流还是事务流。
步骤4. 划分输入流、输出流边界
划分流界例子
步骤5. 执行一级分解
任务: 导出三个层次结构的软件结构
- 底层模块:用于输入、输出和计算等基本功能
- 中间层模块:协调、控制底层模块的工作
- 高层模块:用于协调和控制所有的从属模块
原则 - 在确保完成系统功能并保持低耦合度、高内聚度的情况下尽可能的减少模块数目
一级分解的结果可以用层次图、结构图等来表示
步骤6. 执行二级分解
步骤7. 精化软件结构改良软件质量
以“模块化”的思想,对软件结构中的模块进行拆并,以追求高内聚、低耦合、易实现、易测试、易维护的软件结构
画图不上例题就是耍无赖,安排
先展示一下书本上的例题:家庭安全系统
第一层:
第二层:
第三层:
转化成的结构图:
书上的例题看完后,我不是很理解,不知道你们感觉如何,既然这条路走不通,咱就换条
将下列数据流图转换成SC软件结构图:
例题一:
例题二:
总结:
1.这个数据流程图呢,结合例题多看,多做吧,实践中加深理解。
2.细化的画法不唯一,我们老师说画的合情合理即可。