§ 4.4概要设计 (总体设计 )
概要设计确定:
软件系统的结构
各模块功能及模块间联系 (接口 )
表示软件结构的图形工具
结构图
层次图和 HIPO图概要设计的任务与步骤概要设计的过程,
(1)设想可能的方案
(2)选取合理的方案
(3)推荐最佳方案
(4)功能分解
(5)设计软件结构
(6)数据库设计
(7)制定测试计划
(8)编写文档
(9)审查与复审
4.4.1结构图 (SC Structure Chart)
SD方法在概要设计中的主要表达工具约定:
编辑学生记录读学生记录学生数据无此学生学号不加区分的数据数据信息控制信息
SC中的四种模块传入模块
(a) (b)
A
A
传出模块
B
B
变换模块
(c)
C D
协调模块
E
(d)
E F F
SC中的选择调用
A
CB D
A根据内部判断决定是否调用 B
A按另一判定结果选择调用 C或 D
SC中的循环调用
A
B C
A根据内在的循环重复调用 B,C等模块结构图 (SC)举例医院管理系统门诊管理药房管理药库管理病房管理财务管理处 方挂号处理挂 号 费总 计挂号单挂号费总计出库处理进药管理病历管理处方管理常规处理酒店管理信息系统功能结构图
H M I S
收银管理子系统收银管理子系统 收银管理子系统客人登记预定登记客房处理历史记录客房查询预定查询餐桌安排菜单作业营业结帐汇总打印各类查询初始设置客帐处理退房处理夜审处理客帐查询报表打印大型零售商场管理信息系统功能结构图
TM M I S
系统维护
P
O
S
系统零售实时系统商品进货管理商品批发管理商品库存管理商品及商品帐管理顾客管理连锁店管理财务管理人事工资管理计划统计管理经理查询
4.4.2 面向数据流的设计方法
(结构化设计方法 SD)
1,面向数据流设计方法的基本概念
SD以数据流图为基础,它定义了把
DFD变换成 软件结构 的不同 映射 方法映射DFD
(问题结构 )
软件系统的结构
(程序结构 )
系统结构特征可归纳为两种典型形式:
变换型结构
事务型结构数据流图可分为两种类型,
变换型数据流
事务型数据流变换中心输入 输出变换型 结构事务中心接受路径动作路径基本模型 特征事务型结构由输入、变换中心和输出三部分组成具有在多种事务中选择执行某类事物的能力变换型数据流结构事务型数据流结构传入 变换 传出变换中心传入部分传出部分事务分析事务中心动作
1
动作
2
动作
3
接受接受部分变换型数据流举例输入信息物理输入格式检查 处理 显示正确信息 结果物理输出数据变换中心逻辑输入逻辑输出传入部分 传出部分特点:具有明确的传入、变换 (或称主加工 ) 和传出界面的 DFD
变换流示意图信息时间信息流输入流 输出流交换流外部表示内部表示事务型数据流图举例
I M
L
N
OA
B
C
D
F
E
G
H
大型系统 DFD中,变换型 和事务型结构往往共存,
T
事务中心传入 变换 传出
2,面向数据流设计方法的设计步骤
(1)精化 DFD
(2)确定 DFD类型
(3)把 DFD映射到系统模块结构设计出模块结构的上层
(4)基于 DFD逐步分解高层模块设计出下层模块
(5)根据模块独立性原理,精化模块结构
(6)模块接口描述面向数据流方法的设计过程精化数据流图区分事务中心和数据接收路径映射成变换结构流类型区分输入和输出分支映射成事务结构用启发式设计规则精化软件结构导出接口描述和全程数据结构复查详细设计
“事务,,变换,
事务分析 变换分析
SD方法的两种映射过渡方法变换型 DFD
事务型 DFD
初始 SC
初始 SC
变换分析事务分析初始的 SC
主模块输入模块 主加工模块 输入模块事务控制模块接受模块 动作发送模块动作 1模块 动作 2模块 动作 3模块由变换分析产生由事务分析产生
(1) 变换分析设计方法步骤:
(1)区分传入、变换中心、
传出部分,在 DFD 上标明分界线
B CA
D E Q
P R
W
U V
a b
c
ed
r
p
u
w
v
变换中心传入部分传出部分变换分析设计方法步骤
(2)第一级分解 (建立初始 SC框架 )
设计顶层和第一层模块第一级分解的方法
MC
MTMA ME
第一级分解后的 SC
MC
MTMA ME 第一层顶层
c,e c,e u,w u,w
传入模块 传出模块中心变换模块第一级分解后的 SC(另一种画法 )
MC
MA1
c e u,w
c,p
Q P R
e
p
r
r
w,u
w
传入分支模块中心加工分支模块传出分支模块
MA2 ME1 ME2
变换分析设计方法步骤
(3)第二级分解 (分解 SC各分支 )
自顶向下分解,设计出每个分支的中、下层模块传入分支的分解
(1)
MA
C
B
A
b
a
c
E
D
d
e
c,e
传入分支的分解
(2)
MA
Get C
b
a
c
Read D
d
e
c,e
B to C
b c d e
a b
Get E
Get B D to E
A to BRead D
传出分支的分解
ME
W
Write V
u
u
w,u
v v v
Put U
U to V
ME
U Write W
ww u
w,u
V
(1) (2)
中心加工分支的分解
MT
PQ R
e
c,p r
u,wp
r
任何情况下都可使用变换分析方法设计软件结构,但如数据流具有明显的事务特点时 (有一个明显的事务中心 ),以采用事务分析方法为宜。
(2) 事务分析设计方法事务分析设计方法步骤:
(1)在 DFD上确定事务中心、接收部分和发送部分。
(2)画出 SC框架,把 DFD上的三部分分别映射为事务控制模块、接收模块和动作发送模块。
(3)分解细化接收分支和发送分支,
完成初始 SC。
用户命令交互子系统DFD
读用户命令密码命令密码显示信息系统参数数据用户命令读系统数据 配置信息显示信息和状态命令分析处理读密码命令类型开 /关命令建立配置文件原配置数据激活 /非活动系统与文件中密码比较格式化配置数据配置 命令检验信息过程重试信息四位数字 检验信息检验信息
A/D
信息格式化配置数据格式化配置数据初始的 SC
主模块输入模块 主加工模块 输入模块事务控制模块接受模块 动作发送模块动作 1模块 动作 2模块 动作 3模块由变换分析产生由事务分析产生事务分析的映射方法总控调度
C路径B路径A路径
A路径
B路径C路径接收路径用户命令交互子系统 初始的 SC
用户执行模块读用户命令 命令处理密码处理控制器现用 /非现用系统系统设置控制器用户命令交互子系统DFD
读用户命令密码显示信息系统参数数据用户命令读系统数据 配置信息显示信息和状态命令分析处理读密码命令类型建立配置文件原配置数据激活 /非活动系统与文件中密码比较格式化配置数据检验信息过程重试信息四位数字 检验信息检验信息
A/D
信息格式化配置数据格式化配置数据密码命令开 /关命令配置 命令用户命令交互子系统 的 SC
用户执行模块读用户命令 命令处理密码处理控制器现用 /非现用系统系统设置控制器读系统数据建立配置文件显示信息与状态用户命令交互子系统DFD
读用户命令密码显示信息系统参数数据用户命令读系统数据 配置信息显示信息和状态命令分析处理读密码命令类型建立配置文件原配置数据激活 /非活动系统与文件中密码比较格式化配置数据检验信息过程重试信息四位数字 检验信息检验信息
A/D
信息配置数据格式化配置数据密码命令开 /关命令配置 命令用户命令交互子系统 的 SC
用户执行模块读用户命令 命令处理密码处理控制器现用 /非现用系统系统设置控制器读系统数据建立配置文件显示信息与状态读密码用文件比较密码密码输出控制器产生无效信息事务流设计举例
I M
L
N
A
B
C
D
F
E
G
事务中心事务流设计举例取 A
总控
A
L M N
G
D
B C F
E
(主模块)
事务加工模块动作分支的典型结构
P
T 2T 1 T i
A 2
D 2
A 1
D 1
A 3 A j
D k
事务层操作层细节层处理层 主模块事务加工模块操作模块细节模块事务流设计举例取 A
总控
A
L M N
G
D
B C F
E
动作 1 动作 n….
细节模块 1 细节模块 2 ….
(操作模块)
(细节模块)
事务型数据流图举例
I M
L
N
OA
B
C
D
F
E
G
H
事务流设计举例 (另一种画法 )
输入 A
XX系统变换控制
A
L M
A
G
D
B C
FE
输出 E,F,G
E,F,G E,F,G
输出 HO
E,F、
G H H
N
要求类型处 理有效图书管理要求当前日期
2.1
新书入库
2.2
借入库单罚款单一层数据流图 (a)
借书
2.3
注销图书
2.5
借书
2.4
目录文件借书单书 单注销单
3 4
1
2
6
7
5
8
10
9
11
变换中心传 入 传 出事务型
(3) 混合流设计举例混合流设计举例
T
事务中心 传入 变换 传出接收部分发送部分
AB
T1
变换中心传入 传出
T2
T3
a
b b1b2
b3
c1
c2
c3
d e g
f j
L
m
事务流子系统
BC CD DE
EH
HK
FJ
KL
LMh
混合流设计举例
k
混合流设计举例输入 D
XX系统变换控制 输出 K
输入 C
d
c
输出 LCD DE FJ EH HK KL
c d
d k
k
k
L L
输出 MLM
m mL事务子系统
SafeHomede的第 0层DFD
SafeHomede
软件系统用户命令和数据显示信息控制面板传感器 传感器 状态警铃电话线警告类型电话号码拨音控制面板显示
SafeHomede的第 1层DFD
控制面板与用户交互 控制面板显示密码电话号码拨音传感器状态显示信息配置请求用户命令和数据配置系统警铃电话线传感器配置信息显示信息和状态监控传感器激活/不激活系统传感器信息密码处理 警告类型检验 id信息开始停止 状态信息监控传感器的第 2层DFD
电话号码拨音传感器状态配置数据显示格式配置信息 产生警告信息拨号评估设置传感器信息读传感器警告类型传感器 id类型传感器 id
类型定位
4.4.3 体系结构设计优化将初始 SC根据模块独立性原则进行精化,对模块进行合并、分解修改、调整,得到高内聚、低耦合模块,得到易于实现、易于测试和易于维护的软件结构,产生设计文档的最终 SC。
改进软件结构设计的指导原则
(软件结构设计的启发式规则 )
(1)模块功能的完善化
(2)消除重复功能
(3)将模块的影响限制在模块的控制范围内
(4)深度、宽度、扇出和扇入适中
(5)模块大小适中
(6)降低模块接口的复杂性
(7)模块功能可预测
(8)避免模块的病态连接
(9)根据设计约束和可移植性要对软件打包
(1) 模块功能的完善化完整的模块应包括三部分:
(1)执行规定功能部分
(2)出错处理部分
(3)需返回给调用者数据时,
返回是否正确结束标志。
(2)消除重复功能
Q1
C
Q2
C
Q1 Q2
C改进前
Q1,Q2功能相似
X Y
Q’
X Y X Y
重复部分 改进方法 1:
将 Q1,Q2
合并为 Q’
不可取改进方法 2:
将 Q1,Q2的公共部分分离出来
C
H
D E
G
X
F
(3)将模块的影响限制在模块的控制范围内
A I
L
J KB
模块 C的控制范围,C,D,E,F,G,H
如果模块
C 作出的决策影响了模块 L,
L超出了 C
的控制范围
(4) 减少高扇出争取高扇入高扇出的模块结构举例:
编外人员工资取得工资数据计时制工资额薪金制工资额编外人员税款编外人员扣款常规扣款税收扣款计算实发工资避免平铺结构增加中间层降低扇出编外人员工资取得工资数据计时制工资额薪金制工资额编外人员税款编外人员扣款常规扣款税收扣款计算实发工资计时工人实发工资计薪工人实发工资编外人员实发工资
(5) 模块大小适中模块过大:可理解程度下降模块过小:开销大于有效操作系统接口复杂
(6)降低模块接口的复杂性接口传递信息应简单且和模块功能一致。
(7) 模块功能可预测模块看成黑盒子,相同输入产生相同输出,其功能为可预测的。
模块带有内部状态其功能可能是不可预测的。难理解、难测试、
难维护。
防止模块功能过分局限功能单一的模块具有高内聚。
但如任意限制局部数据结构的大小,过分限制控制流中可做的选择或外部接口的模式,模块功能就过分局限,使用范围过分狭窄,缺乏灵活性和可扩充性。
(8)避免模块的病态连接防止指向模块中间的分支或引用
(针对内容耦合)
(9)根据设计约束和可移植性需求对软件打包打包指用来为特定环境组装软件的技术
4.4.4 层次图和 HIPO图
IBM公司发明的 HIPO图:
层次图 + 输入 / 处理 /输出图
(H图 ) (IPO图 )
(Hierachy Input Process Output)
1,层次图 (H图 )
表示软件的层次结构正文加工系统输入 输出 编辑 加标题 存储 检索 编目录添加 删除 插入 修改 合并 列表带编号的层次图 (H图 )
正文加工系统输入
1.0
输出
2.0
编辑
3.0
加标题
4.0
存储
5.0
检索
6.0
编目录
7.0
添加
3.1
删除
3.2
插入
3.3
修改
3.4
合并
3.5
列表
3.6
2,HIPO图
H图中每一方框 (模块 )均有一张
IPO图对应航线调度系统 HIPO图举例
H图,命令监控器
1.0
取得输入
1.1
输入确认
1.2
请求确认
1.3
更新处理
1.4
传统的 IPO图举例输入 处理 输出读口令请求口令文件
1取得输入
2口令确认
3请求确认请求记录权限文件 4更新处理权限记录状态报告响应命令监控器 (1.0)的 IPO图改进的 IPO图格式
IPO图系统:
模块:
编号:
作者:
日期,
被调用,调用:
输出:输入:
输入:
局部数据元素,注释:
§ 4.5详细设计 (过程设计,模块设计 )
主要任务,编写详细设计说明书为此,设计人员应:
(1)确定每个模块的算法,用工具表达算法的过程,写出模块的详细过程性描述。
(2)确定每一模块的数据结构。
(3)确定模块接口细节。
详细设计是编码的先导。
4.5.1 结构化程序设计 (SP)方法传统的设计技术和旧观念,
强调设计的随意性,具有浓厚的个人色彩,
追求程序效率和个人设计技巧新的设计思想和风格,
清晰第一
使用标准的、规范的控制结构
逐步细化
4.5.2 详细设计的描述方法详细设计工具:
(1) 图形工具
(2) 表格工具
(3) 语言工具
1,程序流程图
2,盒图 (N-S图 )
3,问题分析图 (PAD)
4,过程设计语言 (PDL)(伪码 )
5,判定表
2,盒图 (N-S图 )
用方框图代替传统的流程图描述五种基本控制结构的图形构件
(1) 顺序型 A
B
C
(2) 选择型 ( If – then – else)
If – then – else If – then
AB
F 条件 T
A
F T条件
then –部分 then –部分else–部分
(3)多分支选择型 (CASE型 )
A1
值 1
A2 An
....
....
条件值 2 值 n
(4) WHILE重复型 (5) UNTIL重复型
S
(循环体)
DO-WHILE P S
(循环体)
REPEAT UNTIL P
(先测试循环 ) (后测试循环 )
循环条件
(6) 并行结构
A1 A2 An....
(7) 移出标记
A C
B
F X6 T
A:
D
(调用结构 )
3,问题分析图 (PAD)
(Problem Analysis Diagram)
基本控制结构,
(1)顺序结构 (2)选择结构
A
B
C
A
B
T
F
条件
(3)重复结构
WHILE C S UNTIL C S
(先测试循环 ) (后测试循环 )
等价的 PASCAL语言:
REPEAT C UNTIL S
等价的 PASCAL语言:
WHILE C DO S
(4) 多分支选择型 (CASE型 )
A1值 1
值 2
值 n
A2
An
.
.
.
..
.条件系统流程图早于 DFD的一种建模工具。
以图形方式说明系统中的控制流和数据流。
系统流程图示例初始处理数据检查、库存询问、库存分配定货处理帐单处理启动定货销售工作结束定货或询问显示数据顾客文卷库存文卷库存文卷接受的定货文卷临时定货文件显示选择查问库存的初始显示输入查询输入错询问回答检查定货单说明定货单发票询问定货
1,可行性研究报告
2,项目开发计划
3,需求规格说明书
4,概要设计说明书
5,详细设计说明书
6,数据库设计说明书
7,测试计划
8,测试分析报告
9,项目总结报告
10.操作手册
11.用户手册
12.开发进度周报课程设计提交文档:
概要设计确定:
软件系统的结构
各模块功能及模块间联系 (接口 )
表示软件结构的图形工具
结构图
层次图和 HIPO图概要设计的任务与步骤概要设计的过程,
(1)设想可能的方案
(2)选取合理的方案
(3)推荐最佳方案
(4)功能分解
(5)设计软件结构
(6)数据库设计
(7)制定测试计划
(8)编写文档
(9)审查与复审
4.4.1结构图 (SC Structure Chart)
SD方法在概要设计中的主要表达工具约定:
编辑学生记录读学生记录学生数据无此学生学号不加区分的数据数据信息控制信息
SC中的四种模块传入模块
(a) (b)
A
A
传出模块
B
B
变换模块
(c)
C D
协调模块
E
(d)
E F F
SC中的选择调用
A
CB D
A根据内部判断决定是否调用 B
A按另一判定结果选择调用 C或 D
SC中的循环调用
A
B C
A根据内在的循环重复调用 B,C等模块结构图 (SC)举例医院管理系统门诊管理药房管理药库管理病房管理财务管理处 方挂号处理挂 号 费总 计挂号单挂号费总计出库处理进药管理病历管理处方管理常规处理酒店管理信息系统功能结构图
H M I S
收银管理子系统收银管理子系统 收银管理子系统客人登记预定登记客房处理历史记录客房查询预定查询餐桌安排菜单作业营业结帐汇总打印各类查询初始设置客帐处理退房处理夜审处理客帐查询报表打印大型零售商场管理信息系统功能结构图
TM M I S
系统维护
P
O
S
系统零售实时系统商品进货管理商品批发管理商品库存管理商品及商品帐管理顾客管理连锁店管理财务管理人事工资管理计划统计管理经理查询
4.4.2 面向数据流的设计方法
(结构化设计方法 SD)
1,面向数据流设计方法的基本概念
SD以数据流图为基础,它定义了把
DFD变换成 软件结构 的不同 映射 方法映射DFD
(问题结构 )
软件系统的结构
(程序结构 )
系统结构特征可归纳为两种典型形式:
变换型结构
事务型结构数据流图可分为两种类型,
变换型数据流
事务型数据流变换中心输入 输出变换型 结构事务中心接受路径动作路径基本模型 特征事务型结构由输入、变换中心和输出三部分组成具有在多种事务中选择执行某类事物的能力变换型数据流结构事务型数据流结构传入 变换 传出变换中心传入部分传出部分事务分析事务中心动作
1
动作
2
动作
3
接受接受部分变换型数据流举例输入信息物理输入格式检查 处理 显示正确信息 结果物理输出数据变换中心逻辑输入逻辑输出传入部分 传出部分特点:具有明确的传入、变换 (或称主加工 ) 和传出界面的 DFD
变换流示意图信息时间信息流输入流 输出流交换流外部表示内部表示事务型数据流图举例
I M
L
N
OA
B
C
D
F
E
G
H
大型系统 DFD中,变换型 和事务型结构往往共存,
T
事务中心传入 变换 传出
2,面向数据流设计方法的设计步骤
(1)精化 DFD
(2)确定 DFD类型
(3)把 DFD映射到系统模块结构设计出模块结构的上层
(4)基于 DFD逐步分解高层模块设计出下层模块
(5)根据模块独立性原理,精化模块结构
(6)模块接口描述面向数据流方法的设计过程精化数据流图区分事务中心和数据接收路径映射成变换结构流类型区分输入和输出分支映射成事务结构用启发式设计规则精化软件结构导出接口描述和全程数据结构复查详细设计
“事务,,变换,
事务分析 变换分析
SD方法的两种映射过渡方法变换型 DFD
事务型 DFD
初始 SC
初始 SC
变换分析事务分析初始的 SC
主模块输入模块 主加工模块 输入模块事务控制模块接受模块 动作发送模块动作 1模块 动作 2模块 动作 3模块由变换分析产生由事务分析产生
(1) 变换分析设计方法步骤:
(1)区分传入、变换中心、
传出部分,在 DFD 上标明分界线
B CA
D E Q
P R
W
U V
a b
c
ed
r
p
u
w
v
变换中心传入部分传出部分变换分析设计方法步骤
(2)第一级分解 (建立初始 SC框架 )
设计顶层和第一层模块第一级分解的方法
MC
MTMA ME
第一级分解后的 SC
MC
MTMA ME 第一层顶层
c,e c,e u,w u,w
传入模块 传出模块中心变换模块第一级分解后的 SC(另一种画法 )
MC
MA1
c e u,w
c,p
Q P R
e
p
r
r
w,u
w
传入分支模块中心加工分支模块传出分支模块
MA2 ME1 ME2
变换分析设计方法步骤
(3)第二级分解 (分解 SC各分支 )
自顶向下分解,设计出每个分支的中、下层模块传入分支的分解
(1)
MA
C
B
A
b
a
c
E
D
d
e
c,e
传入分支的分解
(2)
MA
Get C
b
a
c
Read D
d
e
c,e
B to C
b c d e
a b
Get E
Get B D to E
A to BRead D
传出分支的分解
ME
W
Write V
u
u
w,u
v v v
Put U
U to V
ME
U Write W
ww u
w,u
V
(1) (2)
中心加工分支的分解
MT
PQ R
e
c,p r
u,wp
r
任何情况下都可使用变换分析方法设计软件结构,但如数据流具有明显的事务特点时 (有一个明显的事务中心 ),以采用事务分析方法为宜。
(2) 事务分析设计方法事务分析设计方法步骤:
(1)在 DFD上确定事务中心、接收部分和发送部分。
(2)画出 SC框架,把 DFD上的三部分分别映射为事务控制模块、接收模块和动作发送模块。
(3)分解细化接收分支和发送分支,
完成初始 SC。
用户命令交互子系统DFD
读用户命令密码命令密码显示信息系统参数数据用户命令读系统数据 配置信息显示信息和状态命令分析处理读密码命令类型开 /关命令建立配置文件原配置数据激活 /非活动系统与文件中密码比较格式化配置数据配置 命令检验信息过程重试信息四位数字 检验信息检验信息
A/D
信息格式化配置数据格式化配置数据初始的 SC
主模块输入模块 主加工模块 输入模块事务控制模块接受模块 动作发送模块动作 1模块 动作 2模块 动作 3模块由变换分析产生由事务分析产生事务分析的映射方法总控调度
C路径B路径A路径
A路径
B路径C路径接收路径用户命令交互子系统 初始的 SC
用户执行模块读用户命令 命令处理密码处理控制器现用 /非现用系统系统设置控制器用户命令交互子系统DFD
读用户命令密码显示信息系统参数数据用户命令读系统数据 配置信息显示信息和状态命令分析处理读密码命令类型建立配置文件原配置数据激活 /非活动系统与文件中密码比较格式化配置数据检验信息过程重试信息四位数字 检验信息检验信息
A/D
信息格式化配置数据格式化配置数据密码命令开 /关命令配置 命令用户命令交互子系统 的 SC
用户执行模块读用户命令 命令处理密码处理控制器现用 /非现用系统系统设置控制器读系统数据建立配置文件显示信息与状态用户命令交互子系统DFD
读用户命令密码显示信息系统参数数据用户命令读系统数据 配置信息显示信息和状态命令分析处理读密码命令类型建立配置文件原配置数据激活 /非活动系统与文件中密码比较格式化配置数据检验信息过程重试信息四位数字 检验信息检验信息
A/D
信息配置数据格式化配置数据密码命令开 /关命令配置 命令用户命令交互子系统 的 SC
用户执行模块读用户命令 命令处理密码处理控制器现用 /非现用系统系统设置控制器读系统数据建立配置文件显示信息与状态读密码用文件比较密码密码输出控制器产生无效信息事务流设计举例
I M
L
N
A
B
C
D
F
E
G
事务中心事务流设计举例取 A
总控
A
L M N
G
D
B C F
E
(主模块)
事务加工模块动作分支的典型结构
P
T 2T 1 T i
A 2
D 2
A 1
D 1
A 3 A j
D k
事务层操作层细节层处理层 主模块事务加工模块操作模块细节模块事务流设计举例取 A
总控
A
L M N
G
D
B C F
E
动作 1 动作 n….
细节模块 1 细节模块 2 ….
(操作模块)
(细节模块)
事务型数据流图举例
I M
L
N
OA
B
C
D
F
E
G
H
事务流设计举例 (另一种画法 )
输入 A
XX系统变换控制
A
L M
A
G
D
B C
FE
输出 E,F,G
E,F,G E,F,G
输出 HO
E,F、
G H H
N
要求类型处 理有效图书管理要求当前日期
2.1
新书入库
2.2
借入库单罚款单一层数据流图 (a)
借书
2.3
注销图书
2.5
借书
2.4
目录文件借书单书 单注销单
3 4
1
2
6
7
5
8
10
9
11
变换中心传 入 传 出事务型
(3) 混合流设计举例混合流设计举例
T
事务中心 传入 变换 传出接收部分发送部分
AB
T1
变换中心传入 传出
T2
T3
a
b b1b2
b3
c1
c2
c3
d e g
f j
L
m
事务流子系统
BC CD DE
EH
HK
FJ
KL
LMh
混合流设计举例
k
混合流设计举例输入 D
XX系统变换控制 输出 K
输入 C
d
c
输出 LCD DE FJ EH HK KL
c d
d k
k
k
L L
输出 MLM
m mL事务子系统
SafeHomede的第 0层DFD
SafeHomede
软件系统用户命令和数据显示信息控制面板传感器 传感器 状态警铃电话线警告类型电话号码拨音控制面板显示
SafeHomede的第 1层DFD
控制面板与用户交互 控制面板显示密码电话号码拨音传感器状态显示信息配置请求用户命令和数据配置系统警铃电话线传感器配置信息显示信息和状态监控传感器激活/不激活系统传感器信息密码处理 警告类型检验 id信息开始停止 状态信息监控传感器的第 2层DFD
电话号码拨音传感器状态配置数据显示格式配置信息 产生警告信息拨号评估设置传感器信息读传感器警告类型传感器 id类型传感器 id
类型定位
4.4.3 体系结构设计优化将初始 SC根据模块独立性原则进行精化,对模块进行合并、分解修改、调整,得到高内聚、低耦合模块,得到易于实现、易于测试和易于维护的软件结构,产生设计文档的最终 SC。
改进软件结构设计的指导原则
(软件结构设计的启发式规则 )
(1)模块功能的完善化
(2)消除重复功能
(3)将模块的影响限制在模块的控制范围内
(4)深度、宽度、扇出和扇入适中
(5)模块大小适中
(6)降低模块接口的复杂性
(7)模块功能可预测
(8)避免模块的病态连接
(9)根据设计约束和可移植性要对软件打包
(1) 模块功能的完善化完整的模块应包括三部分:
(1)执行规定功能部分
(2)出错处理部分
(3)需返回给调用者数据时,
返回是否正确结束标志。
(2)消除重复功能
Q1
C
Q2
C
Q1 Q2
C改进前
Q1,Q2功能相似
X Y
Q’
X Y X Y
重复部分 改进方法 1:
将 Q1,Q2
合并为 Q’
不可取改进方法 2:
将 Q1,Q2的公共部分分离出来
C
H
D E
G
X
F
(3)将模块的影响限制在模块的控制范围内
A I
L
J KB
模块 C的控制范围,C,D,E,F,G,H
如果模块
C 作出的决策影响了模块 L,
L超出了 C
的控制范围
(4) 减少高扇出争取高扇入高扇出的模块结构举例:
编外人员工资取得工资数据计时制工资额薪金制工资额编外人员税款编外人员扣款常规扣款税收扣款计算实发工资避免平铺结构增加中间层降低扇出编外人员工资取得工资数据计时制工资额薪金制工资额编外人员税款编外人员扣款常规扣款税收扣款计算实发工资计时工人实发工资计薪工人实发工资编外人员实发工资
(5) 模块大小适中模块过大:可理解程度下降模块过小:开销大于有效操作系统接口复杂
(6)降低模块接口的复杂性接口传递信息应简单且和模块功能一致。
(7) 模块功能可预测模块看成黑盒子,相同输入产生相同输出,其功能为可预测的。
模块带有内部状态其功能可能是不可预测的。难理解、难测试、
难维护。
防止模块功能过分局限功能单一的模块具有高内聚。
但如任意限制局部数据结构的大小,过分限制控制流中可做的选择或外部接口的模式,模块功能就过分局限,使用范围过分狭窄,缺乏灵活性和可扩充性。
(8)避免模块的病态连接防止指向模块中间的分支或引用
(针对内容耦合)
(9)根据设计约束和可移植性需求对软件打包打包指用来为特定环境组装软件的技术
4.4.4 层次图和 HIPO图
IBM公司发明的 HIPO图:
层次图 + 输入 / 处理 /输出图
(H图 ) (IPO图 )
(Hierachy Input Process Output)
1,层次图 (H图 )
表示软件的层次结构正文加工系统输入 输出 编辑 加标题 存储 检索 编目录添加 删除 插入 修改 合并 列表带编号的层次图 (H图 )
正文加工系统输入
1.0
输出
2.0
编辑
3.0
加标题
4.0
存储
5.0
检索
6.0
编目录
7.0
添加
3.1
删除
3.2
插入
3.3
修改
3.4
合并
3.5
列表
3.6
2,HIPO图
H图中每一方框 (模块 )均有一张
IPO图对应航线调度系统 HIPO图举例
H图,命令监控器
1.0
取得输入
1.1
输入确认
1.2
请求确认
1.3
更新处理
1.4
传统的 IPO图举例输入 处理 输出读口令请求口令文件
1取得输入
2口令确认
3请求确认请求记录权限文件 4更新处理权限记录状态报告响应命令监控器 (1.0)的 IPO图改进的 IPO图格式
IPO图系统:
模块:
编号:
作者:
日期,
被调用,调用:
输出:输入:
输入:
局部数据元素,注释:
§ 4.5详细设计 (过程设计,模块设计 )
主要任务,编写详细设计说明书为此,设计人员应:
(1)确定每个模块的算法,用工具表达算法的过程,写出模块的详细过程性描述。
(2)确定每一模块的数据结构。
(3)确定模块接口细节。
详细设计是编码的先导。
4.5.1 结构化程序设计 (SP)方法传统的设计技术和旧观念,
强调设计的随意性,具有浓厚的个人色彩,
追求程序效率和个人设计技巧新的设计思想和风格,
清晰第一
使用标准的、规范的控制结构
逐步细化
4.5.2 详细设计的描述方法详细设计工具:
(1) 图形工具
(2) 表格工具
(3) 语言工具
1,程序流程图
2,盒图 (N-S图 )
3,问题分析图 (PAD)
4,过程设计语言 (PDL)(伪码 )
5,判定表
2,盒图 (N-S图 )
用方框图代替传统的流程图描述五种基本控制结构的图形构件
(1) 顺序型 A
B
C
(2) 选择型 ( If – then – else)
If – then – else If – then
AB
F 条件 T
A
F T条件
then –部分 then –部分else–部分
(3)多分支选择型 (CASE型 )
A1
值 1
A2 An
....
....
条件值 2 值 n
(4) WHILE重复型 (5) UNTIL重复型
S
(循环体)
DO-WHILE P S
(循环体)
REPEAT UNTIL P
(先测试循环 ) (后测试循环 )
循环条件
(6) 并行结构
A1 A2 An....
(7) 移出标记
A C
B
F X6 T
A:
D
(调用结构 )
3,问题分析图 (PAD)
(Problem Analysis Diagram)
基本控制结构,
(1)顺序结构 (2)选择结构
A
B
C
A
B
T
F
条件
(3)重复结构
WHILE C S UNTIL C S
(先测试循环 ) (后测试循环 )
等价的 PASCAL语言:
REPEAT C UNTIL S
等价的 PASCAL语言:
WHILE C DO S
(4) 多分支选择型 (CASE型 )
A1值 1
值 2
值 n
A2
An
.
.
.
..
.条件系统流程图早于 DFD的一种建模工具。
以图形方式说明系统中的控制流和数据流。
系统流程图示例初始处理数据检查、库存询问、库存分配定货处理帐单处理启动定货销售工作结束定货或询问显示数据顾客文卷库存文卷库存文卷接受的定货文卷临时定货文件显示选择查问库存的初始显示输入查询输入错询问回答检查定货单说明定货单发票询问定货
1,可行性研究报告
2,项目开发计划
3,需求规格说明书
4,概要设计说明书
5,详细设计说明书
6,数据库设计说明书
7,测试计划
8,测试分析报告
9,项目总结报告
10.操作手册
11.用户手册
12.开发进度周报课程设计提交文档: