文章目录
结构化分析与设计方法是一种面向数据流的传统软件开发方法,它以数据流为中心构建软件的分析模型和设计模型。
结构化分析(SA
)、结构化设计(SD
)和结构化程序设计(SPD
)构成了完整的结构化方法。
(一)结构化分析方法概述
结构化方法是采用自顶向下逐层分解的思想进行分析建模的。
自顶向下逐层分解充分体现了分解和抽象的原则。
- 抽象:忽略一个问题中与当前目标无关的那些方面,以便更充分地关注与当前目标有关的方面。
- 分解:将一个复杂的问题,分解成若干个小问题,将每个小问题再分解成若干个更小的问题,经过多次逐层分解,每个最底层的问题都是足够简单、容易解决的,这个过程就是分解。
结构化方法的分析结果组成:
- 一套分层的数据流图
- 一本数据词典
- 一组小说明(也称为加工逻辑说明)
- 补充材料
(二)数据流图
数据流图也称为数据流程图(DFD
),它是一种便于用户理解、分析系统数据流程的图形工具。它摆脱了系统的物理内容,精确地在逻辑上描述系统的功能、输入、输出和数据存储等,是系统逻辑模型的重要组成部分。
1. 数据流图的基本图形元素
基本图形元素包括:
- 数据流(
Data Flow
) - 加工(
Process
) - 数据存储(
Data Store
) - 外部实体(
external Agent
)
数据流、加工和数据存储用于构建软件系统内部的数据处理模型;外部实体表示存在于系统之外的对象,用来帮助用户理解系统数据的来源和去向。
(1)数据流
数据流由一组固定成分的数据组成,表示数据的流向。
数据流的分类:
- 从一个加工流向另一个加工
- 从加工流向数据存储(写)
- 从数据存储流向加工(读)
- 从外部实体流向加工(输入)
- 从加工流向外部实体(输出)
tips:
1. 除了流向数据存储或从数据存储流出的数据流不必命名外,每个数据流都必须有一个合适的名字,以反映该数据流的含义。
2. 数据流图中描述的是数据流,而不是控制流。
3. 数据流或由具体的数据属性(也称为数据结构)构成,或由其他数据流构成。
(2)加工
加工描述了输入数据流到输出流之间的交换,也就是输入数据流经过什么处理后变成了输出数据流。
tips: 一个加工可以有多个输入数据流和多个输出数据流,但至少有一个输入数据流和一个输出数据流。
数据流图中关于加工经常出现的三种错误:
- 有输入但是没有输出,称之为“黑洞”
- 有输出但没有输入
- 输入不足以产生输出,称之为“灰洞”
(3)数据存储
数据存储用来存储数据。
tips:
1. 每个数据存储都有一个定义明确的名字标识。
2. 可以有数据流流入数据存储,表示数据的写入操作;也可以有数据流从数据存储流出,表示数据的读操作;还可以用双箭头的数据流指向数据存储,表示对数据的修改。
(4)外部实体(外部主体)
外部实体是指存在于软件系统之外的人员或组织,它指出系统所需数据的发源地(源)和系统所产生的数据的归宿地(宿)。
外部实体既可以是源,也可以是宿,也可以既是源又是宿。
2. 数据流图的扩充符号
在数据流图中,一个加工可以有多个输入数据流和多个输出数据流,可以加上一些扩充符号来描述多个数据流之间的关系。
扩充符号:
- 星号(*),表示数据流之间存在“与”关系。如果是输入流则表示所有输入数据流全部到达后才能进行加工处理;如果是输出流则表示加工结束将同时产生所有的输出数据流。
- 加号(+),表示数据流之间存在“或”关系。如果是输入流则表示其中任何一个输入数据流到达后就能进行加工处理;如果是输入流则表示加工处理的结果是至少产生其中一个输出数据流。
- 异或(⊕),表示数据流之间存在“互斥”关系。如果是输入流则表示当且仅当其中一个输入流到达后才能进行加工处理;如果是输出流则表示加工处理的结果是仅产生这些输出数据流中的一个。
3. 数据流图的层次结构
(1)层次结构
分层数据流图的顶层只有一张图,其中只有一个加工,代表整个软件系统,该加工描述了软件系统与外界之间的数据流,称为顶层图。
顶层图中的加工经分解后的图称为0
层图,也只有一张。
处于分层数据流图最底层的图称为底层图,在底层图中,所有的加工不再进行分解。
分层数据流图中的其他图称为中间层。
(2)图和加工的编号
- 顶层图中只有一个加工,该加工不必编号
0
层图中的加工编号分别为1、2、3…
- 子图号就是父图中被分解的加工号
- 对于子图中加工的编号,若父图中的加工号为
x
的加工分解成某一子图,则该子图中的加工编号分别为x.1、x.2、x.3…
4. 分层数据流图的画法
步骤:
- 画系统的输入和输出,形成顶层图,只有一个加工,即待开发的软件系统。
- 画系统的内部,将顶层图的加工分解成若干个加工,并用数据流将这些加工连接起来,使得顶层图中的输入数据经过若干加工处理后变成顶层图的输出数据流,这张图称为
0
层图。 - 画加工的内部,将该加工看作一个小系统,该加工的输入和输出数据流就是这个假设的小系统的输入和输出数据流,然后采用画
0
层图的方法画出该加工的子图。
5. 分层数据流图的审查
审查要点:
- 分层数据流图的一致性和完整性
- 分层数据流图的一致性,包括:
- 父图与子图的平衡
- 数据守恒
- 局部数据存储
- 一个加工的输出数据流不能与该加工的输入数据流同名
- 分层数据流图的完整性,包括:
- 每个加工至少有一个输入数据流和一个输出数据流
- 在整套分层数据流图中,每个数据存储至少有一个加工对其进行读操作,另一个加工对其进行写操作
- 分层数据流图中的每个数据流和文件都必须命名,并保持与数据字典一致
- 分层数据流图中的每个基本加工都应有一个加工规约
- 分层数据流图的一致性,包括:
- 构造分层数据流图时需要注意的问题
- 适当命名
- 画数据流而不是控制流
- 避免一个加工有过多的数据流
- 分解尽可能均匀
- 先考虑确定状态,忽略琐碎的细节
- 随时准备重画
- 分解的程度
- 分解应自然,概念上应合理、清晰
- 只要不影响易理解性,可适当增加加工数量,以减少层数
- 上层多分解几个加工,下层少分解几个加工
- 分解要均匀
(三)数据字典(DD)
数据字典是为数据流图中的每个数据流、文件、加工,以及组成数据流或文件的数据项做出说明。
1. 数据字典的内容
内容:
- 数据流条目
- 数据存储条目
- 数据项条目
- 基本加工条目
2. 数据词典管理
词典管理主要是把词典条目按照某种格式组织后存储在词典中,并提供排序、查找和统计等功能。
3. 加工逻辑的描述
常用的加工逻辑描述方法有结构化语言,判定表和判定树