第六章 结构化分析与结构化设计
本章重点
?掌握结构化系统分析方法,掌握分层 DFD
和 DD的编制方法。
?了解软件模块以及结构特点
?掌握结构化系统设计方法,掌握将 DFD以
及 DD转换为 SC的方法。
一、结构化系统分析方法
二、模块与软件结构
三、结构化系统设计方法
一、结构化系统分析方法
1、数据流程图
1)约定的符号
编号
处理逻
辑名称
外部实
体名称
编号 数据存储名称
数据流名
数据流名
2)数据流程图中的要素
处理逻辑 表示对数据的变换。三种数据变换:数据格式转换,数据内容转换、数据传递。
外部项 表示与某处理逻辑有信息关联的、且为系统之外的人、部门、单位或管理信息系统等。
数据流 标明数据在 DFD中的流向,可以是外部项、处理逻辑产生,也可来自数据存储。
数据存储 数据存储用来标识需暂时或永久保存的数据类。编号惟一标识一个数据存储,数据存储名标识存储的数据类。
采购

生产
部门 XS.1
产品入
库管理
D1 产品库存
D2 产品入库
产品入库单
产品采购单
例 6.1 某公司销售管理信息子系统的数据流程图
XS.5
销售统

XS.6
销售查

XS.3
销售合
同管理
XS.2
产品出
库管理
XS.4
售后服
务管理
XS.1
产品入
库管理
客户
客户
上级
主管
企业
领导
相关
人员
产品
开发
采购

生产
部门
D1 产品库存
D2 产品入库
D5 售后服务信息
产品入
库单
产品采
购单
合同
财务
部门
D3 产品出库
D4 销售合同
产品销
售发票
产品进、出、库存
产品修改信息
销售统
计报表
查询
结果
查询
要求
服务
要求
产品进、出、库存、
合同、售后服务
3)绘制数据流程图的基本步骤
第一步,确定系统的处理逻辑
第二步,对于某处理逻辑,确定与其相关的全部数据流
第三步,对某处理逻辑,确定与其数据流相关的全部外部项
第四步,对于某处理逻辑,确定与其相关的全部数据存储
XS.5
销售统

XS.6
销售查

XS.3
销售合
同管理
XS.2
产品出
库管理
XS.4
售后服
务管理
XS.1
产品入
库管理 采购

生产
部门
D1 产品库存
D2 产品入库
产品入
库单
产品采
购单
财务
部门
D3 产品出库
D4 销售合同
产品销
售发票
产品进、出、库存
4)绘制数据流程图的注意事项
与企业流程图的区别
数据流程图从数据处理的角度,描述企业运作与管理相关的数据变
换、数据存储等。
企业流程图从时间维的角度,描述企业运作与管理相关的活动、活
动的时间次序以及控制关系。
常见的错误
XS.1
产品入
库管理
XS.5
销售统

入库单
采购

会计 采购发票
D1 产品库存 D2 产品入库 入库
数据流的使用不正确
XS.1
产品入
库管理
D1 产品入库
“无中生有” XS.1
产品入
库管理
D1 产品入库
存在死角
命名问题
布局问题
DFD的标题栏
2、数据字典
数据字典完成对数据流程图中元素的定义、描述,对数据流程
图补充说明,给出新系统中相关要素的统一定义和描述。
1)数据元素
数据元素是数据的最小组成单位,具有逻辑不可分性。 编号 X S 0 1 0 标识符 C P C G D J 名称 产品采购单价 别名 产品购入单价
含义
类型 数值型 长度 12 值域
备注
填表人 日期
某产品实际采购的单价
0 ~ 9 9 9 9 9 9 9 9, 9 9 9
同一产品每次采购,其采购单价会不同
2)数据结构
数据元素按某种应用要求逻辑组合在一起
S1
S3 I2 S2 I1
I5 I4 I3 I6 S4 I7
I8 I9
S1的组成,
,I1+S2+I2+S3”
编号 S 0 0 0 0 1
名称 产品标识
含义
组成 产品名称 + 产品规格 + 产品型号 + 单位
相关数据流 产品入库单、产品采购单、产品销售合同
相关处理逻

产品入库管理、产品出库管理、产品合同管理
填表人,日期
3)数据流
主要描述数据流程图中由外部项输入到系统中的数据流,以及从系
统输出到外部项的数据流。数据流的组成可以是一个已定义的数据
结构,或若干个数据元素、简单数据结构、复杂数据结构组成。
编号 L 0 0 0 4
名称 产品进、出、库存
含义 产品指定时期的进库数、出库数以及期末的库存数等
来源 产品入库、产品出库、产品库存
去向 财务部门
组成 年份、月份、产品标识、入库数、期末库存数
流通量 1 份 / 月
高峰流通量 1 份 / 月
备注
填表人,日期
4)数据存储
只描述数据存储的逻辑存储结构,不涉及物理结构
编号 D2 名称 产品入库
含义
组成
关键字
备注
填表人 日期
存储自制或自组产品每次入库的品种、数量、金额等信息
日期、入库单号、产品标识、类别、数量、金额、收货人、送货人
日期、入库单号、产品标识
5)处理逻辑
编号 X S, 1 名称 产品入库管理
简述
输入
输出
备注
填表人 日期
记录自制或自组产品入库的品种、数量、金额等信息
产品出产单、产品采购单
1 )根据产品出产单或产品采购单,确定入库的种类
2 )将相应单据中的信息存入数据存储“产品入库”中
处理
3 )修改数据存储“产品库存”中相应产品的库存数量、库存单价等信息
4 )打印入库单
产品入库
6)处理逻辑小说明
对于复杂的处理逻辑增加更为详细的描述。应遵循如下原则,
描述应该清晰,不能有“可能”、“大概”等不确定性
描述 应该表达与处理逻辑相关的输入 /输出数据流、数据存储
描述只限于“做什么”,不涉及“如
何做” 在数据字典中已说明的内容,不再重复描述
判断树 批发折扣策略
最近 3个月无欠款
批发金额 ≥ 50000 批发金额 < 50000
最近 3个月有欠款
与公司交易 5年 与公司交易 5年以下
折扣率为 10% 折扣率为 5%
折扣率为 15% 无折扣
判断表
条件组合方式 1 2 3 4 5 6 7 8
C1 批发金额≥ 5 0 0 0 0 Y Y Y Y N N N N
C2 最近3 个月无欠款 Y Y N N Y Y N N
C3 与公司交易 5 年以上 Y N Y N Y N X N
A1 折扣率为 15% X X
A2 折扣率为 10% X
A3 折扣率为 5% X
A4 无折扣 X X X X行动
条件
条件组合方式 1’ ( 1, 2 ) 2’ 3’ 4’ ( 5, 6, 7, 8 )
C1 批发金额≥ 5 0 0 0 0 Y Y Y N
C2 最近3 个月无欠款 Y N N
C3 与公司交易 5 年以上 Y N
A1 折扣率为 15% X
A2 折扣率为 10% X
A3 折扣率为 5% X
A4 无折扣 X
条件
行动
结构化语言
顺序结构
分支结构
循环结构
由简单祈始句表达。例:输入课程号
如果〈条件〉 则 〈动作 A〉 [ 否则 就 〈动作 B〉 ]
在某种条件下,连续完成相同的处理若干次,直到条件不成立为止。
3、分层数据流程图
1)分层数据流程图的结构
P.1 P.2 P.3
P.22 P.21 P.33 P.32 P.31 P.12 P.11
P.12 P.11
顶 层
中间层
底 层
2)分层数据流程图绘制的方法
首先绘出零层数据流程图,然后再将零层的每个处理逻辑细化出下层的
处理逻辑,逐细化下去,直到全部处理逻辑都被清晰地表示为止。
3)分层数据流程图绘制的原则
黑箱原则
分解的层数
继承性
只考虑与该处理逻辑相关的外部实体、数据存储以及数据流。区分
外部数据流与内部数据流。
低一层的数据流程图应反映出其父图中与其处理逻辑相关的外部实
体、数据流、数据存储。
若处理逻辑之间出现不需来自数据存储的数据流连接,而直接来自处理逻
辑的数据流连接时,处理逻辑不需再分解。分层数据流程图分层应适当。
采购

生产
部门
D1 产品库存
D2 产品入库
产品入库单
产品采购单
XS.1.3
产品入库
删除
XS.1.2
产品入库修

XS.1.4
产品入库
查询
XS.1.1
产品入库登

相关人

查询要求
查询结果
客户
D4 销售合同
合同基本信息
XS.3.3
合同删除
XS.3.2
合同修改
XS.3.4
合同查询
XS.3.1
合同登录
相关人

查询要求
查询结果
合同
基本
信息
指定合同
的信息
合同
修改
信息
指定合同
原信息
“产品入库管理”
的下层 DFD
“销售合同管理”
的下层 DFD
二、模块与软件结构
1、模块的定义与属性
模块是可以组合、更换和分解的单元,是组成系统、便于处理的基本单位。 属性类 属性 说明
功能 模块能够完成的任务或实现的操作
输入输出数据 模块使用条件和模块相互之间的关系
算法 模块内部如何实现所要求的功能
内部变量 算法中涉及的主要变量
外部属性
内部属性
例:“排序”模块的属性描述
属性类 属性 说明
功能 根据指定的排序规则,完成排序
输入数据:排序规则(升、降)、待排序的数据类型、待排序的数据
输出数据:排序后的数据
内部属性 算法 选定的一种排序算法
输入输出数据
外部属性
2、模块化原理与划分
1)模块化原理
模块是功能明确、大小合适、具有一定独立性、易于实现、便于系统维护,
是组成系统的基本单位。模块化是将复杂的软件划分为不同粒度的模块的
过程,最小粒度的模块完成独立功能,较粗粒度模块由细粒度模块组成。
A
D C B
I
2)模块划分的评价指标
模块划分一般按功能划分,所得模块称为功能模块。
模块的独立性衡量模块划分的质量。模块的耦合与聚合度量模块的独立性。
( 1)耦合
耦合描述模块之间的相对独立性。耦合越小,独立性越强。
数据耦合:模块之间由于数据传递所引起的耦合。
控制耦合:模块之间由于相互调用所引起的耦合。
公共耦合:模块之间由于共享数据区所引起的耦合。
内容耦合:一模块与另一模块内部数据相关所引起的耦合。


物料进销存统计
计算物
料入库
计算物
料出库
计算物
料库存
显示 /打印物
料进销存
数据耦合
控制耦合 模块 A
模块 B
标志
物料进销存统计
显示 /打印物料进销存
显示 /打印控制信息
公共耦合 模块 B 模块 A
全程数据区
共享数据区
内容耦合 控件 A中定义了变量 V,在控件 B的处理中引用了变量 V,
则控件 A与控件 B是内容耦合。
模块之间的耦合以他们之间最坏的耦合类型为模块的耦合类型。
减少模块耦合程度的措施
在耦合方式上,通过过程或函数调用,而不采用直接引用
传递信息类型上,尽量使用数据耦合,少用控制耦合。
控制耦合数量,模块间相互传递参数的个数尽量少。
( 2)聚合
一个模块内部活动之间的关联性,就是聚合。聚合是模块功能
的相对强度,聚合性越强越好。
顺序聚合
通信聚合
功能聚合
过程聚合
时间聚合
逻辑聚合
偶然聚合
相关
性大
相关
性小
功能聚合
一个模块内的各处理元素只与单一任务相关。
顺序聚合
模块内前一个处理元素的输出是另一个处理元素的输入。
通信聚合
模块内所有处理元素都引用同一数据,对同一输入数据进行操作或产生
同一输出数据。
过程聚合
模块内各处理元素之间存在一定的关系,并且必须按某一特定次序执行。
时间聚合
模块内各处理元素必须在一个有限的时间间隔内执行完成
逻辑聚合
模块内包含同一类型的多种活动,各处理元素逻辑相关。
偶然聚合
模块内处理元素之间没有任何关系。
( 3)耦合和聚合两者的关系
在系统中,每个模块的聚合度越高,耦合度越低。反之也成立。
模块之间应尽可能独立,块内联系尽可能大,块间联系尽可能小。模块应
尽量做到高聚合、低耦合。
3、系统应用软件结构的形态
表示系统应用软件结构形态有四个参数:深度、宽度、扇入、扇出。
扇出为 4
扇入为 3
深度:衡量软件调用其他模块的最多层次
宽度:衡量软件结构中模块划分的粒度大小
扇入:衡量某模块被其他模块调用的情况
扇出:衡量某模块调用其他模块的调用情况
三、结构化系统设计方法
1、基本思想
一个程序或系统是由一组功能操作构成。任何程序都可以用顺序结构、
分支结构和循环结构组成。系统设计者只需将系统看作功能模块的集
合,对模块间的关系进行设计。
2、基本方法
采用结构图( SC),将模块按照一定的组织层次结构构造起来,描述
系统由哪些模块组成,以及各模块之间的调用关系。
A
B
A
D C B
A
C B B
A
基本形式 顺序 选择 循环
工资计算与打印
工资打印 工资计算
计算基
本工资
计算加
班工资
计算附
加工资
计算应
扣工资
计算税

工资清单
工资清单
工资计算数据
工作类型、
岗位、时间
基本工资
加班时间
加班工资
附加工资
职工编号
应扣款
收入总额
应缴税
物料进销存统计
计算
物料
入库
显示 /打
印物料
进销存
计算
物料
库存
计算
物料
出库
统计时间
物料编号
入库
统计时间
物料编号
库存时间点
物料编号 库存
物料进销存
显示 /打印控
制信息
3、如何将 SA的结果转换为 SC
结构化分析得到分层 DFD和 DD表示的新系统功能模块,结构化设计将
此转换为 SC和模块说明书。
1)两种映射策略与选择
变换分析映射策略
按照 I-P-O方式,根据 DD中处理逻辑的说明,将某处理分为输入部分、
加工部分、输出部分,得到叶子的下一层模块,然后再逐一对输入部分、
加工部分、输出部分分别划分模块,设定模块的调用参数和返回数据。
例,将数据流程图导出模块结构图,其中 C为变换中心
A E C B D
事务分析映射策略
根据活动的序列得到初始结构图,然后分析每个活动,分解相应细节,
细化活动模块。
主模块
逻辑输入 主加工 C 逻辑输出
E D B A
IN OUT
例,将数据流程图根据事务为中心的分析方法,导出模块结构图
A
E
C
B D
事务处理
获得事务类型
E D C B A
IN OUT1 OUT2 OUT3
调度处理
2)基本步骤
将分层 DFD映射为初始结构图
根据 DD中的处理逻辑说明,细化叶子模块
将叶子模块的结构图合并到初始结构图,得到扩展后的结构图。
优化扩展后的结构图
3)结构图和数据流程图的区别
结构图表现的是层次、上下级模块的调用和控制关系;数据流程图表现
处理逻辑功能的顺序和数据在系统内的流向,不表示各级控制关系和调
用关系。
4)转换实例
销售管理
产品
入库
管理
销售
查询
销售
统计
售后
服务
销售
合同
管理
产品
出库
管理
销售
合同
输入
销售
合同
修订
销售
合同
作废
销售
合同
查询
输入
查询
时间

选择
查询
内容
计算
查询
数据
输出
查询
结果
时间段 查询内容 时间段查
询内容 查询数据
输出成功标志
4、模块的详细设计
SC描述了模块的外部属性,“模块说明书”完成对每个模块的详细设计。
模块标识 W L G L - 0 0 7 所属子系统 物料管理 属于企业规划 是 否
模块名称
主要功能
调用模块
输入
输出
相关数据表
主要内部变量
设计者 设计日期 版本
每循环一次,计算一种物料的进销存,直到全部计算完毕
2 )根据生成的“需计算进销存物料清单”,循环调用
模块“计算物料入库”,获得指定物料的入库数据
模块“计算物料出库”,获得指定物料的出库数据
模块“计算物料出库”,获得指定物料的库存数据
3 )调用“显示 / 打印物料进销存”
算法
物料进销存统计
计算给定时间段物料的进销存,并显示或打印
计算物料入库、计算物料出库、计算物料库存、显示 / 打印物料进销存
统计时间、输出方式
显示 / 打印物料进销存统计表
物料的入库、出库明细,物料年初库存、物料当前库存、物料明细
起始时间、终止时间、打印 / 显示选择、物料的进销存
1 )根据统计时间,从物料“入库”、“出库”明细、“物料年初库存”、
“物料当前库存”中筛选“需计算进销存的物料清单