软件工程第7章

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
库存量
库存编号
打印“无此库存记录”错误信息
检索库存记录
5.若干模块均与同一个外部环境关联。 如:I/O、格式、通信协议
北华大学计算机学院
软件工程
6.公共耦合----7.内容耦合(病态耦 合)
模块A中 6.如果两个模块都和同一个公共数据域有关 TRC: A 模块B中 GO TO 公用 C TRC B 数据
最坏
不好 中 中 好
不好
中 中 中 好
不完全黑
不完全黑 半透明 半透明 透明

中 不好 不好 最坏



透明
最坏
北华大学计算机学院
模块间的耦合 1.非直接耦合 --— 2.数据耦合
软件工程
1.非直接耦合: 耦合:表示一个软件结构内各个模块之间的互连程 两个模块中任一个,都不依赖于对方能独立工作 度,尽量选用松散耦合的系统
是程序设计技术,它采用自顶向下逐步求精 流程图 结构化 的设计方法和单入口单出口的控制构件。 结程序设计 构 化 盒图 设 计 判定树 图 形 表 示 判定表 法
北华大学计算机学院
7.2.2 图形表示法
软件工程
1.流程图(也称为程序框图)是最常用的一种 表示法, “顺序”、“分支”和“循环”三个 基本控制构件用流程图表达的形式如图8-2-1所 示。 F
7 模块内所有成分形成一个整体, 功能 完成单个功能
1. 输入系数 求一元二次方程 根的模块 2. 求方程的根 3. 打印方程的根
北华大学计算机学院
软件工程
七种“内聚模块”的性能比 较
评价
最坏
ห้องสมุดไป่ตู้
形式 偶然 逻辑 时间 过程 通信 顺序 功能
可修 改性
最坏
可读性
最坏
黑箱程度
黑箱
通用性

最坏
不好 中 中 好
分支条件
第一个任务
第二个任务
T
循环条件
F
else部分
then部分
T 循环体 do-while循环
顺序结构
If-then-else结构
图8-2-1 流程图构件
北华大学计算机学院
软件工程
7.2.2 图形表示法
2.盒图也称为N-S图或Chapin图。这种表达方 式取消了流程线,它强迫程序员以结构化方式 思考和解决问题。 第一个任务 第二个任务 第三个任务 顺序结构 F 条件 T then 部分 循环条件 do-while 部分
软件工程
PDL(Procedure Design Language)也称 为结构英语或伪码,是所有正文形式的 过程设计工具的统称。
PDL经常表现为一种“混杂”的形式,允 许自然语言(如英语)的词汇与某种结 构化程序设计语言(如Pascal、C、Ada 等)的语法结构交织在一起
北华大学计算机学院
7.2.4 过程设计语言(PDL)
北华大学计算机学院
8.1.2 抽象与逐步求精
软件工程
抽象 过程抽象 数据抽象
把完成一个特定功能的动作序列抽象为 抽出事务的本质特性而暂时不考虑它们 把一个数据对象的定义(或描述)抽象 一个过程名和参数表 的细节。是控制复杂性的基本策略。 为一个数据类型名
定义 软件系统 被描述为 基于计算 机的大系 统的一个 组成部分
北华大学计算机学院
软件工程
5、降低接口的复杂程度:接口复杂可能表 明模块的独立性差。
6、单出单入,避免内容耦合。
7、模块功能可预测 —— 相同输入必产生相 同输出。反例:模块中使用全局变量或静 态变量,则可能导致不可预测。
北华大学计算机学院
7.2 软件过程设计技术和工具
软件工程
7.2.1 结构化程序设计
软件 结构组成
系统中所有 过程性部件 (即模块) 构成的 层次结构 (即程序结构)
对应于 程序结构的 输入输出 数据结构
目标:模块化的程序结构、明确各模块之间的控制 关系、说明程序的输入输出数据流、进一步协调程 序结构和数据结构。 北华大学计算机学院
结构设计原则
软件工程
1. 提高模块独立性
争取低耦合、高内聚(增加内聚 > 减少耦合)
else 部分
if-then-else结构 图8-2-3 盒图的构件
循环结构
北华大学计算机学院
7.2.3 判定表与判定树
软件工程
用于:条件复杂,根据这些条件的组合选择动作 判定表由四部分组成:
左上部
左下部 右上部 右下部
列出所有条件
列出所有可能的动作 所有可能的条件组合(矩阵) 条件组合与动作之间的对应关系
软件工程
软件工程
第 7 章
软 件 设 计 基 础
概 念
基本概念
设计 过程
设计 工具
说明 与评审
北华大学计算机学院
8.1.1 软件设计过程
软件工程
概要设计 详细设计
管 技 理与术 角 角 度 度
结构设计 数据设计
Text Text
过程设计
将 “概设” 结果进一步精化 把信息描述转换为实现软件所 概要设计 根据需求确定软件和数据的总体 结构设计 确定程序各主要部件之间的关系 详细设计 完成每一部件的过程化描述 数据设计 过程设计 框架 成算法表示和数据结构 要求的数据结构
5 模块中各成分都将对数据结构的 通信 同一区域进行操作 循环体
enter data 事务记录 check 累积销售额 data
manipulate data
从文件FILE读出数据
累积订货量 计算累积
模块A
1. 由数据产生报表一
2. 由数据产生报表二
北华大学计算机学院
高级级内聚度(2个)
软件工程
6 模块内的各处理成分均与同一功能相关, 顺序 且这些处理必须顺序执行
3 fan-out 9
A A的扇出
扇入
= 直接调用该模块 的模块数
A的扇入 A
在不破坏独立性的前提 下,fan-in 大的比较好。
北华大学计算机学院
4、作用域在控制域内
软件工程
控制域
B
M A C
M的控制域为 {M,A,B,C}
作用域:M中的一个判定所影响的模块。
例如: A:
………… if …… then goto B1 ………… …………
B: ………… ………… B1: ………… …………
A: ………… if …… then goto M1 ………… …………
M: ………… ………… M1: goto C1 ………… …………
作用域在控制域内
作用域超出了控制域
上例中A的作用超出了控制域。改进方法之一,可以 把A中的 if 移到M中;方法之二,可以把C移到A下面。
7.2.3 判定表与判定树
软件工程
判定树的优点:形式简单,直观明了,易于掌 握。 判定树的缺点: ①存在着数据冗余的问题,相同的数据元素往 往要重复多次,而且越接近树的叶端重复的 次数越多。 ②判定树要求对条件进行层次划分,若条件所 处层次不对,可能会导致增加判定树的复杂 性。
北华大学计算机学院
7.2.4 过程设计语言(PDL)
需求 软件用问 题域约定 的习惯用 语表达
设计 概要设计 过渡到详 细设计时, 抽象级再 一次降低
实现
编码完成 后达到了 抽象的最 低级
北华大学计算机学院
逐步求精
软件工程
逐步求精
为了能集中精力解决主要问题而 尽量推迟对问题细节的考虑
抽 象
求 精
北华大学计算机学院
信息隐藏
软件工程
模块内所含信息对那些不需要这些信息的模块不可
Great deal dependence of
单价
Independent 开发货单
2.数据耦合
Highly coupled
数量 Loosely coupled
金额 Uncoupled
两个模块间通过参数交换信 息, 而信息仅限于数据
计算金额

北华大学计算机学院
3.特征耦合
软件工程
如果两个模块都与同一个数据结构有关,则为特征耦合。
计算水费和电费 计算水量和电费
住户详情 本月用水量 住户详情
本月用电量 电费 电费
计算水费 计算水费
水费 水费
计算电费 计算电费
住户详情数据结构中包括: “本月用水量”、“本月用电量”。 “特征耦合”图可改进“数据耦合”图
北华大学计算机学院
4.控制耦合----5.外部耦合
软件工程
4.当模块A向模块B所传递的信息控制了B的内部 逻辑。 获得库存记录
访问,每个模块只完成一个相对独立的特定功能。
模块独立性(Module independence) 好设计的关键:每个模块完成一个相对独立的子功能, 并且与其它模块间的接口简单。 独立性的度量:耦合(Coupling)&内聚(Cohesion)
北华大学计算机学院
低级内聚度(3个)
软件工程
1 逻辑
一个模块内各成分为完成一组功能而组合在 一起,它们相互之间即使有关系,也很松散。
北华大学计算机学院
7.2.4 过程设计语言(PDL)
软件工程
可进行抽象数据类型的定义,例如 :
TYPE table_1 IS INSTACE OF symbol_table
而symbol_table在另一处已定义如下:
TYPE symbol_table IS STRUCTURE DEFINED
7.一个模块和另一个模块的内部属性有关 (运行程序和内部数据) 。
如:一个模块使用另一个模块内部的数据或控制信息; 北华大学计算机学院 一个模块直接转移到另一个模块。
软件工程
七种“耦合模块”的性能比 较
可读性 好 好 中 不好 不好 最坏 最坏 通用性 好 好 中 不好 不好 最坏 最坏
设计模块时,应以数据耦合为主,辅以特征耦合与控制耦合, 消除公共耦合和内容耦合。
北华大学计算机学院
对连锁反 耦合方式 可修改性 应的影响 非直接 弱 好 数据 弱 好 特征 弱 中 控制 中 不好 外部 中 不好 公共 强 不好 内容 最强 最坏
耦合、内聚与模块独立性的关系
软件工程
北华大学计算机学院
7.1.4 软件总体结构设计(software architecture)
软件工程
2 一个模块完成的诸任务逻辑上相关 偶然
3 如果一个模块包含的诸任务必须在同一时间 时间 段内执行。例如一个初始化模块
from disk from tape from ……
A: Read inputs
北华大学计算机学院
中级内聚度(2个)
软件工程
4 模块内成分彼此相关,并且必须 过程 按特定的次序执行
2. 模块规模适中: 过大不易理解;太小则接口开销过大。 注意分解后不应降低模块的独立性。
北华大学计算机学院
3. 选择适当的深度、宽度、扇出和扇入
软件工程
深度 = 分层的层数。过大表示分工过细。 宽度 = 同一层上模块数的最大值。过大表示系统复杂 度大。 北华大学计算机学院
软件工程

扇出 = 一个模块直接 调用\控制的模块数。
判定表的每一列可解释为一条处理规则 北华大学计算机学院
7.2.3 判定表与判定树
软件工程
【例7.2】问题处理描述:耗电记费系统可以 采用固定价格收费、浮动价格收费和其他方 式收费三种方式。若采用固定价格方式收费, 对每月耗电100kW•h以下的用户只征收最低 标准费,超过100kW•h的用户按价格表A收 费;若采用浮动价格方式收费,则每月耗电 100kW•h以下的用户按价格A收费,超过 100kW•h的用户按价格B收费。
北华大学计算机学院
表7-1 判定表
软件工程


1 T F T F √
2 T F F T √
3 F T T F √
4 F T F T
5 F F
条件
固定价格方式 浮动价格方式 耗电<100kW.h 耗电≥100kW.h 收取最低标准费 按价格表A收费 按价格表B收费 其他处理
动作


北华大学计算机学院
软件工程
考察一个PDL的原型,它可以建立在任意一个通用 的结构化程序设计语言之上。基本成分包括:子 程序定义、界面描述、数据说明、块结构、分支 结构、循环结构和I/O结构。 数据说明的形式为: TYPE <变量名> IS <限定词1> <限定词2> 其中: < 变量名 >——局部变量或全局变量; <限定词1>——某个特定关键字(例如,SCALAR, ARRAY,LIST,STRING,STRUTURE等); <限定词2>——说明此处定义的变量在该过程或整 个程序中应如何使用。
软件工程
PDL应具有下述特点: 1.关键字采用固定语法并支持结构化构件、 数据说明机制和模块化; 2.处理部分采用自然语言描述; 3.允许说明简单(标量、数组等)和复杂 (链表、树等)的数据结构; 4.子程序的定义与调用规则不受具体接口方 式的影响。
北华大学计算机学院
7.2.4 过程设计语言(PDL)
软件工程
【例7.2】判定树
耗电<100kW· — 收取最低标准费 h
固定方式
耗电≥100kW· — 按价格表A收费 h 耗电<100kW· — 按价格表A收费 h
耗电收费
浮动方式
耗电≥100kW· — 按价格表B收费 h 其他方式— 其他处理
图8-2-5 用判定树表示计算耗电收费的算法
北华大学计算机学院
相关文档
最新文档