软件工程导论PPT 第五章 系统分析与设计-结构化方法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
控制耦合增加了理解和编程的复 杂性,调用模块必须知道被调模 块的内部逻辑,增加了相互依赖
去除模块间控制耦合的方法:
(1)将被调用模块内的判定上移到调 用模块中进行
(2)被调用模块分解成若干单一功 能模块
改控制耦合为数据耦合举例
A
平均成绩
B1
计算平均分
最高成绩
B2
计算最高分
(5) 外部耦合
一组模块均与同一外部环境关联 (例如,I/O模块与特定的设备、 格式和通信协议相关联),它们之 间便存在外部耦合。 外部偶合必不可少,但这种模块 数目应尽量少。
SD方法在概要设计中的主要表达工具
约定:(见讲义P107 图5-1)
不加区分的数据 数据信息
编辑学生记录
Hale Waihona Puke Baidu
学号
学生数据 无此学生
控制信息
读学生记录
Yourdon提出的结构图(SC,Structure Chart)是进行系统结构 设计的另一个有力工具。结构图能够描述出软件系统的模块层次 结构,清楚地反映出程序中各模块之间的调用关系和联系。结构 图中的基本符号及其含义如表6-1所示。
计算平 均工资
平均 工资
产生职工工资报表并计算平均工资模块
(6) 信息内聚
模块完成多个功能,各功能 都在同一数据结构上操作, 每一功能有唯一入口。
信息内聚模块
查找 登录 删除 修改
符号表
几个加工同时引用一个共同的数据
(7) 功能内聚
模块仅包括为完成某个功能所必 须的所有成分。 (模块所有成分共同完成一个功 能,缺一不可 )
55
第3步 分析确定数据流的 类型。
从上图可以看出,数 据沿着两条输入通路进入系 统,然后沿着五条通路离开 ,没有明显的事务中心。因 此可以认为这个信息流具有 变换流的总特征。 第4步 确定输入流和输出 流的边界,从而孤立出变换 中心。
对于汽车数字仪表板的 例子,设计人员确定好了流 的边界如图所示。
两个模块没有直接关系(模块1和 模块2),模块独立性最强。
模块1
模块2
模块3
模块4
(2) 数据耦合
一模块调用另一模块 时,被调用模块的输入、 输出都是简单的数据(若干 参数)。
属松散耦合。
数据耦合举例
开发票
单价 数量
金额
计算水费
(3) 标记耦合(特征耦合)
如两个模块通过传递数据结构
(不是简单数据,而是记录、数组
等)加以联系,或都与一个数据 结构有关系, 则称这两个模块 间存在标记偶合。
标记耦合举例 计算水电费
住户情况 水费
电费
住户情况
计算水费
计算电费
“住户情况”是一个数据结构,图中模块都
与此数据结构有关. “计算水费”和“计算电费”本无关,由于 引用了此数据结构产生依赖关系,它们之间 也是标记偶合.
将标记耦合修改为数据耦合举例
模块独立性的度量
模块独立性取决于模块的内部 和外部特征。
SD方法提出的定性的度量标准:
• 模块之间的耦合性
• 模块自身的内聚性
模块间耦合的类型:
低
无直接耦合 强
耦 (低耦合) 数据耦合
模
合
标记耦合
块
性 (中耦合) 控制耦合
独
外部耦合
(较强耦合)
立 性
公共耦合
高 (强耦合) 内容耦合
弱
(1) 无直接耦合
59
图 第二级分解的方法
对于数字仪表板系统的例子,第二级分解的结果 分别用图描绘。
60
对于数字仪表板系统的例子,第二级分解的结果 分别用上面的图描绘。
61
对于数字仪表板系统的例子,第二级分解的结 果分别用上图描绘。
62
第7步 使用设计度量和启发式规则对第一次分割 得到的系统结构进一步精化。
52
变换分析
变换分析是一系列设计步骤的总称,经过这些步骤把具有变 换流特点的数据流图按预先确定的模式映射成系统结构。变换分 析的设计步骤如下:
(1) 复查基本系统模型。 (2) 复查并精化数据流图。 (3) 确定数据流图具有变换特性。 (4) 确定输入流和输出流的边界,从而孤立出变换中心。 (5) 完成“第一级分解”。 (6) 完成“第二级分解”。 (7) 使用设计度量和启发规则对第一次分割得到的系统结构进 一步精化。
虽然上述任务是松散相关的,但每一项 都是独立的功能实体,最好作为独立的模 块完成。
(1)偶然内聚(巧合内聚)
模块内各部分间无联系
例: A
B
C
M MOVE O TO R
READ FILE F MOVE S TO T 模块M中的三个语句没有任何联系 缺点:可理解性差, 可修改性差
(2) 逻辑内聚
把几种相关功能(逻辑上相似 的功能)组合在一模块内,每 次调用由传给模块的参数确定 执行哪种功能。
计算水电费
本月 用水量
本月
水费
用电量
电费
计算水费
计算电费
(4) 控制耦合
一模块向下属模块传递的信 息 (开关量、标志等控制被 调用模块决策的变量) 控制 了被调用模块的内部逻辑。
控制耦合举例
A
平均/最高 (控制信号)
成绩
B 读入分数
平均/最高? 计算平均分 计算最高分
B
计算平均分 或最高分
输出结果
48
数据流图的类型
根据数据流图的结构特点通常可将数据流图划分为变换型 数据流图和事务型数据流图两个基本类型。
1. 变换型数据流图 变换型数据流图呈现出的结构特点为:由(逻辑)输入、变换中 心和(逻辑)输出三部分组成,如图所示。
49
变换型数据处理问题的工作过程大致分为三步,即取得数据、 变换数据和给出数据。由变换型数据流图映射出的变换型系统结构 图。
(4) 过程内聚(顺序性组合)
模块内各处理成分相关, 且必须以特定次序执行
过程内聚模块
读入 成绩单
审查 成绩单
统计 成绩
打印 成绩
读入并审查 成绩单
统计并打印 成绩单
(5) 通信内聚
模块内各部分使用相同的输 入数据,或产生相同的输出 结果
通信内聚模块例
职工工 资记录
产生工 资报表
职工工 资报表
50
事务型数据流图
事务型数据流图呈现出的结构特点为:输入流在 经过某个被称为“事务中心”的加工时被分离为多个 发散的输出流,形成多个平行的加工处理路径,如图 所示。
51
该类型数据流图所描述的加工过程为:外部数据沿输入通 路进入系统后,被送往事务中心;事务中心接收输入数据并分析 确定其类型;最后根据所确定的类型为数据选择其中的一条加工 路径。由事务型数据流图映射出的事务型系统结构图,如图6-16 所示。
速警告铃声。 在系统需求分析阶段应该对上述每条要求以及系
统的其他特点进行全面的分析评价,建立起必要的文 档资料,特别是数据流图。
54
2. 设计步骤 第1步 复查基本
系统模型。 复查的目的是确
保系统的输入数据和 输出数据符合实际。 第2步 复查并精化数 据流图。
假设在需求分析 阶段产生的数字仪表 板系统的数据流图如 图6-17所示。
5.3.1 概要设计(总体设计)
确定:
•软件系统的结构 •各模块功能及模块间联系(接口)
表示软件结构的图形工具
▪ 结构图 ▪ 层次图和HIPO图
面向数据流的设计方法 (结构化设计方法SD)
1. 面向数据流设计方法的基本概念
SD以数据流图为基础,它定义了把
DFD变换成软件结构的不同映射方法
映射
DFD
内聚性最强
内聚与耦合密切相关,同其 它模块强耦合的模块意味者弱内 聚,强内聚模块意味着与其它模 块间松散耦合.
设计目标: 力争强内聚、弱耦合
3.耦合、内聚与模块独立性关系
耦合与内聚都是模块独立性的 定性标准,都反映模块独立性的良 好程度。但耦合是直接的主导因素 ,内聚则辅助耦合共同对模块独立 性进行衡量。
(公共数据区及全程变量无保护措施)
慎用公共数据区和全程变量!!!
(7) 内容耦合
AB
一模块直接访问 另一模块的内部 信息 (程序代码 或数据)
A B
模块代码重叠
Entry1 ……
Entry1 ……
多入口模块
最不好的耦合形式 !!!
模块化设计的原则和目标 耦合是影响软件复杂程度和设 计质量的重要因素
逻辑内聚模块
A BC
公用代码段
E FG
E、F、G逻辑 功能相似,组
A1 B1 C1
成新模块EFG
A BC
公用代码段
EFG
EFG模块内部逻辑
缺点:增强了耦合程度(控制耦合)
不易修改,效率低
(3) 时间内聚(经典内聚)
模块完成的功能必须在同一时间 内执行,这些功能只因时间因素 关联在一起。
例如:初始化系统模块、 系统结束模块、 紧急故障处理模块等均是时间性聚合 模块.
第五章:系统分析与设计-结构化方法
§5.1 结构化设计方法
软件设计分为两个阶段: (1)概要设计(总体设计)
确定软件的结构以及各组成成分 (子系统或模块)之间的相互关系。
(2)详细设计
确定模块内部的算法和数据结构,产生描 述各模块程序过程的详细文档。
将分析模型转换为软件设计
数
加
据
工
对 E-R图 数据 说
表6-1 结构图中的基本符号
45
在系统结构图中,模块有以下几种类型:传入 模块、传出模块、变换模块和协调模块,如图所示。
46
如上图所示就是一个描绘了产生最 佳解的结构图的例子。
47
面向数据流的总体设计方法
在总体设计中,主要采用面向数据流的设计方法,结构化设计 方法是一种典型的面向数据流的总体设计方法。面向数据流的体系结 构设计的过程如图所示。
象
数据 流图 明
说
字典
明 状态变迁图
控制说明
分析模型
过程设计
接口设计 体系结构设计
数据设计
设计模型
5.2.1 软件设计的概念和原理
1. 软件结构 2. 软件过程 3. 模块化 4. 抽象 5. 信息隐蔽 6. 信息局部化
5.2.2 模块的独立性
模块独立的含义:
•模块完成独立的功能 •符合信息隐蔽和信息局部化原则 •模块间关连和依赖程度尽量小
低 偶然内聚 弱(功能分散)
内 逻辑内聚 聚 时间内聚 性 过程内聚
通信内聚 信息内聚 高 功能内聚
模 块 独 立 性
强(功能单一)
低内聚模块举例
为工程分析包执行错误处理的模块,当计算 的数据超出预定义的边界时调用该模块,它完成 下列任务: (1)根据初始计算的数据计算补充数据; (2)在用户的工作站上生成错误报告; (3)执行用户要求的跟踪计算; (4)更新数据库; (5)使选择后续处理的菜单有效。
对于数字仪表板的例子,第一级分解得出的结构如图所示。每个控 制模块的名字表明了为它所控制的那些模块的功能。
图 数字仪表板系统的第一级分解
58
第6步 完成“第二级分解”。 所谓第二级分解就是把数据流图中的每个处理映射成系统结构
中一个适当的模块。完成第二级分解的方法是,从变换中心的边界 开始沿着输入通路向外移动,把输入通路中每个处理映射成系统结 构中Ca控制下的一个低层模块;然后沿输出通路向外移动,把输出 通路中每个处理映射成直接或间接受模块Ce控制的一个低层模块; 最后把变换中心内的每个处理映射成受Ct控制的一个模块。
目标:建立模块间耦合度尽可能
松散的系统
如何降低模块间耦合度:
(1) 尽量使用数据耦合 少用控制耦合 限制公共耦合的范围 坚决避免使用内容耦合
(2) 降低接口的复杂性
2. 模块独立性的度量之二:内聚性
一个模块内部元素在功能上相互 关联的强度
设计目标:高内聚 (模块在软件过程中 完成单一的任务)
模块的内聚性类型:
软件系统的结构
(问题结构)
(程序结构)
概要设计的任务与步骤
概要设计的过程 : (1)设想可能的方案 (2)选取合理的方案 (3)推荐最佳方案 (4)功能分解 (5)设计软件结构 (6)数据库设计 (7)制定测试计划 (8)编写文档 (9)审查与复审
5.3.1结构图(SC Structure Chart)
53
下面通过一个例子说明变换分析的方法。 1.假设汽车的仪表板将完成下述功能: ● 通过模-数转换实现传感器和微处理机接口; ● 在发光二极管面板上显示数据; ● 指示每小时英里数(mile/h),行驶的里程,
每加仑油行驶的英里数(mile/gal)等; ● 指示加速或减速; ● 超速警告:如果车速超过55mile/h,则发出超
(6) 公共耦合(公共数据区耦合)
一组模块引用同一个公用数据区 (也称全局数据区、公共数据环境)。
公共数据区指: 全局数据结构 共享通讯区 内存公共覆盖区等
公共耦合举例
AB C
公共数据区
模块A、B、C间存在错综复杂的联系
公共耦合存在的问题:
(1)软件可理解性降低 (2)诊断错误困难 (3)软件可维护性差, (4)软件可靠性差
56
第5步 完成“第一级分解”。 如图所示说明了第一级分解的方法。位于系统结构最顶层的
控制模块Cm协调下述从属的控制功能: ● 输入信息处理控制模块Ca,协调对所有输入数据的接收; ● 变换中心控制模块Ct,管理对内部形式的数据的所有操作
; ● 输出信息处理控制模块Ce,协调输出信息的产生过程。
57