当前位置:文档之家› 软件工程第四章-2(软件设计)

软件工程第四章-2(软件设计)

事务控制模块
由事务分 析产生
接受模块
动作调度模块
动作1模块 动作2模块 动作3模块
软件结构图的六种模块类型
• ⑴ 传入模块 从下属模块传入数据X,经处理后返回给上级模块数据流 Y。它传送的数据流叫做逻辑输入数据流。
Y 模块名 X
数据流
控制流
箭头尾部是空心圆表示传递的是数据,否则表示传递的是 控制信息。为了绘图简便本讲义后面暂且全部用普通箭头
DE FJ EH
k 输出K k
L
L
HK
KL 输出L
事务子系统
L
m
m
LM 输出M
混合流设计
订货输入
订货处理
提货发票
读入数据
判别
进货输入
库存修改
进货票据
订单记录
分析统计
生成统计表
映射成
4.5.3 体系结构设计优化
将初始SC根据模块独立性原 则进行优化,对模块进行合并、分 解修改、调整,得到高内聚、低 耦合模块,得到易于实现、易于 测试和易于维护的软件结构,产 生设计文档的最终SC。
事务流设计
查询 事务1
事务2
有效 事务
有效 事务
更新事务
v
存款 取款
更新事务
w
审计信息
事务选择 确定事
事务3
有效 事务
务类型
更新事务
x
事务4
审计 记录
事务5
转账
有效 事务
更新事务
y
映射成
修改密码
有效 事务
更新事务
z
ATM机处理事务主控
分析器
调度器
ATM机系统结构
转账 修改密码
事务选择
查询
存款
取款
审计记录
打包指用来为特定环境组装软件的 技术
4.5.4 层次图和HIPO图
IBM公司发明的HIPO图:
层次图 + 输入 / 处理 /输出图 ( H图 ) (IPO图)
(Hierachy Input Process Output)
1.
层次图(H图)
表示软件的层次结构
正文加工系统
输入 输出 编辑 加标题
存储 检索 编目录
3、变换分析设计方法
步骤:
(1)区分传入、变换中心、 传出部分,在 DFD 上 标明分界线
a A
B
b
变换中心
C
传入 部分
c r P
w
W
传出 部分
d e D E
R p Q u
v U V
从数据流程图的物理输入端开始,向系 统的中间移动,一直到某个数据流不再 被看作是系统的输入为止,这个数据流 的前一个数据流就是系统的逻辑输入。 同理从物理输出端开始,向系统的中间 移动,就可以找到软件的逻辑输出。 在输入部分和输出部分之间的就是中心 变换部分。

(4) 减少高扇出争取高扇入
高扇出的模块结构举例: 计算实发工资
取得 计时 薪金 编外 税收 编外 常规 编外 工资 制工 制工 人员 人员 人员 数据 资额 资额 工资 扣款 税款 扣款 扣款
避免平铺结构
增加中间层降低扇出
计算实发工资
取得工 计时工人 计薪工人 资数据 实发工资 实发工资 编外人员 实发工资
1. 程序流程图
2. 盒图(N-S图) 3. 问题分析图(PAD) 4. 过程设计语言(PDL)(伪码)
5. 判定表
2. 盒图(N-S图)
用方框图代替传统的流程图
描述五种基本控制结构的图形构件
(1) 顺序型
A B C
(2) 选择型(If – then – else)
If – then – else F If – then F
改进软件结构设计的指导原则
(软件结构设计的启发式规则)
(1) 模块功能的完善化
完整的模块应包括三部分:
(1)执行规定功能部分
(2)出错处理部分
(3)需返回给调用者数据时, 返回是否正确结束标志。
(2)消除重复功能
X
Q1
Y
Q2
X
Y
Q’
X
Q1
Y
Q2
C C
重复部分
改进前 Q1、Q2功 能相似
改进方法1: C 将Q1、Q2 改进方法 2 : 合并为Q’ 将 Q1 、 Q2 的公共 不可取
条件
T
条件
T
B
A
A
then –部分
else–部分 then –部分
(3)多分支选择型(CASE型)
条件 值1 值2
....
值n
A1 A2 .... An
(4) WHILE重复型 (5) UNTIL重复型 (后测试循环) (先测试循环)
DO-WHILE P
系统: 模块: 编号:
IPO图
作者: 日期:
被调用: 输入:
调用: 输出:
输入: 局部数据元素:
注释:
§4.6详细设计(过程设计、模块设计)
主要任务:编写详细设计说明书 为此,设计人员应: (1)确定每个模块的算法,用工具 表达算法的过程,写出模块的 详细过程性描述。 (2)确定每一模块的数据结构。 (3)确定模块接口细节。 详细设计是编码的先导。
Q
R
ME2
传入分 支模块
中心加工 分支模块
传出分 支模块
变换分析设计方法步骤
(3)第二级分解(分解SC各分支)
自顶向下分解,设计出每个分支 的中、下层模块
完成第二级分解的方法是,从变换中心
的边界开始沿着输入通路向左移动,把 输入通路中每个处理逻辑映射成软件结 构中MA控制下的一个低层模块; 然后沿输出通路向右移动,把输出通路 中每个处理逻辑映射成直接或间接受模 块ME控制的一个低层模块; 最后把变换中心内的每个处理映射成受 MT控制的一个模块。
4.6.1 结构化程序设计(SP)方法 传统的设计技术和旧观念:
设计的随意性,具有浓厚的个人色彩. 追求程序效率和个人设计技巧
新的设计思想和风格:
清晰第一
使用标准的、规范的控制结构
逐步细化
4.6.2 详细设计的描述方法
详细设计工具: (1) 图形工具 (2) 表格工具 (3) 语言工具
模块调用的表示(续)

⑵ 选择调用
表示判定条件。 A
B
B C D
模块A 中某个判定为真时调用模块B, 为假时不调用。
C
D
模块A 中某个判定为真时调用模块C, 为假时调用模块D。
模块调用的表示 (续)

⑶ 循环调用
A A
B
C
B
C
D
模块A根据内部循环条件,重复调用B、C模块, 直至内部出现满足循环终止条件为止。
计时 税收 薪金 常规 制工 制工 资额 扣款 资额 扣款
编外 编外 编外 人员 人员 人员 工资 税款 扣款
设计良好的软件结构应该是 顶层扇出比较高,中间扇出 较少,底层扇入到高扇入的 公共模块,有点类似于橄榄 过大:可理解程度下降 模块过小:开销大于有效操作 系统接口复杂
航线调度系统HIPO图举例 H 图: 命令监控器
1.0
取得输入 1.1
输入确认 1.2
请求确认 1.3
更新处理 1.4
传统的IPO图举例
输入
读口令请求 口令文件 权限文件
处理
1取得输入 2口令确认 3请求确认 4更新处理
输出
请求记录
权限记录 状态报告
响应
命令监控器(1.0)的IPO图
改进的IPO图格式
事务分析设计方法步骤:
(1)在DFD上确定事务中心、接收部 分和发送部分。 (2)画出SC框架,把DFD上的三部分 分别映射为事务控制模块、接收 模块和动作调度发送模块。 (3)分解细化接收分支和发送分支, 完成初始SC。
接收 路径
总控 调度
A路径
B路径
C路径
A路径
C路径 B路径
事务分析的映射方法
§4.5概要设计(总体设计)
概要设计确定:
软件系统的结构 各模块功能及模块间联系(接口)
表示软件结构的图形工具
结构图(SC,Structured chart) 层次图和HIPO图
4.5.1 面向数据流的设计方法
(结构化设计方法SD,Structured Design)
1. 面向数据流设计方法的基本概念
„„
活动通路
„„
„„
„„
优化数据流图 面向数据流 方法的设计 “事务” “变换” 流类型 过程
区分事务中心 和数据接收路径 区分输入和 输出分支
映射成事务结构
事务分析
映射成变换结构
变换分析
用启发式设计规则优化软件结构
导出接口描述和全程数据结构 复查
详细设计
初始的SC
主模块
由变换分 析产生
输入模块 主加工模块 传出模块
传 入 分 支 的 分 解
c
C
b
c,e MA
e
E
d
B
a
D
A
传 出 分 支 的 分 解
w,u
ME
w
W
u
U
v
V
中心加工分支的分解
MT
e p
Q
c,p
P
r
u,w r
R
下面设计一个“统计输入文件中单词数目”程序。
文件名
读文 件名
文件名
验证 文件名
有效的 文件名
统计 单词数
单词 格式化 格式化 总数 单词数
添加 删除 插入 修改 合并
列表
带编号的层次图(H图)
相关主题