软件设计师备考笔记
上午题 | 下午题 |
---|---|
计算机网络概述 | 数据流图设计(下午试题一) |
程序设计语言基础知识 | 数据库设计(下午试题二) |
标准化和知识产权 | UML分析与设计(下午试题三) |
数据库 | 面向对象程序设计与实现(下午试题六) |
操作系统 | 算法设计与C语言实现(下午试题四) |
结构化开发与方法 | |
软件工程 | |
网络与信息安全 | |
数据结构 | |
算法分析设计 |
1 数据流图的基本概念
- 数据流图又称数据流程图(Data Flow Diagram,DFD)
是一种便于用户理解、分析系统数据流程的图形工具
。它摆脱了系统的物理内容,精确地在逻辑上描述系统的功能、输入、输出和数据存储等,是系统逻辑模型的重要组成部分
。
2 DFD 的基本成分及图形表示
- 外部实体(External Agent):外部实体是指存在于
软件系统之外的人员或组织
,它指出系统所需数据的发源地和系统所产生的数据的归宿地。 - 加工(Process):加工
描述了输入数据流到输出数据流之间的变换
,也就是输入数据流经过什么处理后变成了输出数据流。每个加工都有一个名字和编号。编号能反映出该加工位于分层DFD中的哪个层次和哪张图中,也能够看出它是哪个加工分解出来的子加工。 - 数据存储(Data Store):数据存储用来
表示存储的数据
,每个数据存储都有一个名字。 - 数据流(Data Flow):数据流由一组固定成分的数据组成,
表示数据的流向
。除了流向数据存储或从数据存储流出的数据流不必命名外,每个数据流都必须有一个合适的名字,以反映该数据流的含义。
3 分层数据流图的画法
- (1)
画系统的输入和输出。把整个系统
。把整个软件系统看作一个大的加工,然后根据系统从哪些外部实体接收数据流,以及系统发送数据流到哪些外部实体,就可以画出系统的输入和输出的图,这张图称为顶层图。 - (2)
画系统的内部
。将顶层图的加工分解为若干个加工,并用数据流将这些加工连接起来,使得顶层图中的输入数据经过若干个加工处理后变换成顶层图的输出数据流。这张图称为0层图。从这一加工画出一张数据流图的过程实际上就是对这个加工的分解。- 确定加工的方法:在数据流的组成或值发生变化的地方画一个加工,这个加工的功能就是实现这一变化;也可以根据系统的功能确定加工。
- 确定数据流的方法: 当用户把若干个数据看作一个单位来处理(这些数据在一起到达,一起加工)时候,可以把这些数据看成一个数据流。
- (3)
画加工的内部
。把每个加工看作一个小系统,该加工的输入/输出数据流看成小系统的输入/输出数据流。于是可以用与画0层图同样的方法画出每个加工的 DFD 子图。
4 对图和加工进行编号
对于一个软件系统,其数据流图可能有许多层,每一层又有许多张图。为了区分不同的加工和不同的 DFD 子图,应该对每张图和每个加工进行编号,便于管理。
- 父图子图:假设分层数据流图里的某张图(记为图 A)中的某个加工可以用另一张图(记为图 B)来分解,则称 图A 是 图B 的父图,图B 是 图A 的子图。在一张图中,有些加工需要进一步分解,有些加工则不必分解。因此,
如果父图中有n个加工,那么它可以有 0 ~ n 张子图(这些子图位于同一层),但每张子图都只对应于一张父图
。 - 编号:
- 顶层图只有一张,图中的加工也只有一个,所以不必编号。
- 0层图只有一张,图中的加工号可以分别是 0.1,0.2…或 1,2…。
- 子图号就是父图中被分解的加工号。
- 图的加工号由图号、圆点、序号组成。
5 注意事项(重点)
- 应适当地为数据流、加工、数据存储、外部实体命名,且名字应反映该成分的实际含义,避免空洞的名字。
- 画数据流而不要画控制流。
- 每条数据流的输入或者输出都是加工。
- 一个加工的输出数据流不应与输入数据流同名,即使它们的组成成分相同。
- 允许一个加工有多条数据流流向另一个加工,也允许一个加工有两个相同的输出数据流流向两个不同的加工。
- 保持父图子图平衡。也就是说,父图中某加工的输入/输出数据流必须与其子图的输入/输出数据流在数量和名字上相同。值得注意的是,如果父图的一个输入(或输出)数据流对应于子图中几个输入(或输出)数据流,而子图中组成这些数据流的数据项全体正好是父图中的这一个数据流,那么它们仍然算是平衡的。
- 在自顶向下的分解过程中,若一个数据存储首次出现时只与一个加工有关,那么这个数据存储应作为这个加工的内部文件而不必画出。
- 保持数据守恒。也就是说,一个加工所输出数据流中的数据必须能从该加工的输入数据流中直接获得,或者是通过该加工产生的数据。
- 每个加工必须既有输入数据流,又有输出数据流。
- 在整套数据流图中,每个数据存储必须既有读的数据流,又有写的数据流。但在某一张子图中可能是只有读没有写,或者只有写没有读。
6 题型
6.1 补充和完善数据流
- 遇到这类问题,首先要想到分层数据流图的数据流平衡原则,即父图和子图的输入/输出数据流一致,这是找出遗漏数据流非常重要的技巧。
- 其次,每个加工至少有一个输入数据流和一个输出数据流,反映此加工的数据来源和结果,加工的输出数据流应该都有其对应的输入数据流。
- 再次,要找出遗漏的数据流,最根本的依据还是说明。因为除了图之外,题目中最重要的部分就是说明。说明部分详细介绍了系统的功能,是找出所缺数据流的基本入口。
- 有时数据流平衡原则不作为解题的直接方法,而作为排除的手段,然后根据说明或其他方法找到图中遗漏的数据流。
6.2 找出错误或多余的数据流
- 要找出错误或多余的数据流,解题方法可以参考完善数据流的方法。一般可以先进行上下层图的对照和分析,然后检查是否每个加工至少有一个输入数据流和一个输出数据流,是否加工的输出数据流都有其对应的输入数据流。而最根本的判断标准仍然是题目的说明部分。
6.3 找出多余的文件
- 在某层数据流图中,只画流程图各加工之间的公共数据文件时,如果一个文件仅作用于一个加工,即和该文件有关的输入/输出数据流只涉及一个加工,那么该文件可以作为局部文件出现在该加工的子图中,在父图中则可以省略。这个规则是为了使整个流程图的层次结构更为清晰、科学。当然这些文件如果画出,并不会造成理解的错误。另外,如果某层图只有一层细化图,即该层图没有子图,则不存在局部文件和外部文件之分,其中涉及的任何文件都不作为多余的文件。
6.4 添加数据字典条目
- 可以根据说明部分找出答案。同时还可以结合给出的数据流图,查看有关记录需要输入给哪些加工,这些加工输出哪些字段。