1.概述
结构化方法是世界上第一个软件开发方法学,用来指导从需求分析、到设计开发各个阶段该怎么样做,采用什么样的方法,产出什么样的结果,从而保证整个软件开发周期可控。
结构化方法分为:
- 结构化分析
- 结构化设计
其中结构化分析是最核心的,因为在结构化方法中,结构化分析的结果是十分贴近实现的,一旦分析的较好,设计实现是很容易的事情。
结构化分析核心思想是将一个大问题自顶向下逐层分解为一个个不可再分的小问题。
如何将一个大问题拆成一个个小问题?结构化方法中提出了一整套的标准流程来实现整个过程。这个流程就是:
数据流图——>结构图
先产出“数据流图”,然后将“数据流图”转化为“结构图”,结构图是一种对软件的结构进行清晰描述的图,十分贴近代码实现,一旦产出合理的结构图后后序的设计实现都是水到渠成。结构图就是结构化分析要产出的最终、最核心的内容。
当然整个过程中为了使得描述更加清晰可以选择性加入“数据字典”、“加工说明”来辅助进行说明。
2.数据流图
数据流图,一种建模方式,在数据流图的世界观里,所有的计算系统都是信息的处理和转换,总是有一些输入经过计算系统,在系统内流转后进行输出。
数据流图有两套符号体系,DeMarco-Yourdon和Gane-Sarson:
外部实体:数据的产生者或消费者,可以是人、设备、另一个计算机系统等。
过程:数据的转换器,如计算纳税金额、计算面积、显示图表等。
数据流:就是指向数据流转方向的箭头并且组织起数据结构。
数据存储:存储数据的介质,数据库、磁盘等。
3.结构图
结构图是树状的,用来表示模块而之间的依赖关系、信息传递。结构图可以由数据流图转化而来,其更加贴近代码实现,更加便于后续的构造活动,所以说数据流图转结构图是结构化设计的关键。
结构图的符号:
4.一个例子
4.1.需求
设计一个高考录取统分子系统,该系统需要具备以下功能
- 计算标准分:根据考生原始分计算,得到标准分,存入考生分数文件。
- 计算录取线:根据标准分、招生计划文件中的招生人数,计算录取线,存入录取线文件。
4.2.数据流图
首先甄别出各个实体:
外部实体:考生
过程:计算标准分、计算录取线
数据存储:标准分、录取线、招生计划文件
可以得出如下数据流图:
4.3.结构图
结构图可以从数据流图转化而来,转化的过程很简单,数据流图已经描述好了输入、处理过程、输出,结构图其实也分为三部分,输入、处理、输出。
于是先根据数据流图归纳好输入模块、处理模块、输出模块:
输入:
原始分输入
招生文件输入
处理:
分数处理
计算标准分
计算录取线
输出:
存入考生分数
存入录取线
各个模块儿间的信息传递,在数据流图中也可以知道,就是各结点间流转的数据,于是可以做出结构图:
顶层结点是整个系统,输入向整个系统输入数据,处理模块处理数据,输出模块输出、存储数据。数据信息沿着调用线走。
5.辅助工具
有时候单纯用“数据流图”、“结构图”无法描述清楚,这时候可以用一些辅助的工具,进行描述。主要的辅助工具有:
- 数据字典
- 加工说明
5.1.数据字典
数据流图中结点间流转的数据如果组成比较复杂,可以通过数据字典来进一步描述。
数据字典中的逻辑操作符:
示例:
销售的商品=商品名+商品编号+价格
现金额=非负数
查询要求=[商品编号|商品名]
5.2.加工说明
加工说明,即简单描述加工节点需要做什么,说清楚就行,可以用纯文字,表格,也可以用伪代码的形式来展现,比如说:
if 后买数量>10
then 6折
else 9折