《模块的独立性》PPT课件.ppt_第1页
《模块的独立性》PPT课件.ppt_第2页
《模块的独立性》PPT课件.ppt_第3页
《模块的独立性》PPT课件.ppt_第4页
《模块的独立性》PPT课件.ppt_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2. 模块的独立性,模块独立性的概念 模块完成独立的功能 符合信息隐蔽和信息局部化原则 模块间关连和依赖程度尽量小,模块独立性的度量,模块独立性取决于模块的内部和外部特征。 SD方法提出的定性的度量标准: 模块自身的内聚性 模块之间的耦合性, 偶然内聚:各成分之间并没有关系,只是把分散在多处的功能合在一起 逻辑内聚:仅仅是逻辑功能相关成分合在一起 时间内聚:必须在同一时间执行,并无功能逻辑的成分合在一起 过程内聚:过程顺序相关的功能成分合在一起 通讯内聚:需要对相同的外部数据进行操作的成分合在一起 顺序内聚:一个内部成分的输出是另一个内部成分的输入,将它们合起来 功能内聚:只完成单一的功能,低,高, 内容耦合:一个模块直接修改另一个模块的内容 公共耦合:两个以上的模块共同引用一个全局数据 外部耦合:若允许一组模块访问同一个全局变量 控制耦合:接收模块的动作依赖于控制信号 标记耦合:两个模块接口的参数包含相同的内部结构 数据耦合:仅是模块之间的数据传递 非直接耦合:模块之间没有消息传递,低,高,内聚-模块内部各成分之间的关联程度,耦合-模块之间的依赖程度,2. 模块独立性的度量之一:内聚性,一个模块内部各成分之间相互关联的强度 设计目标:高内聚(一模块的所有成分都直接参与 并且对于完成同一功能来说都是最基本的),软件设计的概念和原理,内聚:一个模块内各个元素彼此结合的紧密程度。 偶然内聚:一个模块完成一组任务,任务之间的关系很松散。公共语句。 逻辑内聚:若干个逻辑功能类似的任务组成一个模块。 时间内聚:若干个任务必须在同一段时间内执行。如初始化工作。,低内聚,中内聚,高内聚,过程内聚:模块内的处理元素是相关的,且必须以特定次序执行。 通信内聚:模块中所有元素都使用同一个输入数据,和/或产生同一个 输出数据。,顺序内聚:模块中所有处理元素和同一个功能密切相关,且这些处理必 须顺序执行。 功能内聚:所有处理元素属于一个整体,完成一个单一的功能。,模块A,模块B,模块C,S1; S2;,模块A,模块B,模块C,模块A,模块B,模块C,模块D,模块的内聚性类型:,低 巧合内聚 内 逻辑内聚 聚 时间内聚 性 过程内聚 通信内聚 信息内聚 高 功能内聚,模 块 独 立 性,弱(功能分散),强(功能单一),(1) 巧合内聚(偶然内聚),模块内各部分间无联系,A,B,C,M,MOVE O TO R READ FILE F MOVE S TO T,模块M中的三个语句没有任何联系 缺点:可理解性差, 可修改性差。,例:,(2) 逻辑内聚,把几种相关功能(逻辑上相似的功能)组合在一 模块内,每次调用由传给模块的参数确定执行 哪种功能。,逻辑内聚模块,A,B,C,E,F,G,A,B,C,EFG,A1,B1,C1,EFG模块内部逻辑,E、F、G逻辑 功能相似,组 成新模块EFG,公用代码段,公用代码段,缺点:增强了耦合程度(控制耦合)不易修改,效率低。,(3) 时间内聚,模块完成的功能必须在同一时间内执行,这些功能只 因时间因素关联在一起。 例如:初始化系统模块、 系统结束模块、 紧急故障处理模块等。,(4) 过程内聚,模块内各处理成分相关,且必须以特定次序执行。,过程内聚模块,建立方程组系数矩阵,全部任务纳入一个 模块,得到一过程 性模块,高斯消去法,回 代,高斯消去法解题流程,过程内聚模块,读入 成绩单,读入并审查 成绩单,审查 成绩单,统计 成绩,打印 成绩,统计并打印 成绩,(5) 通信内聚,模块内各部分使用相同的输入数据,或产生 相同的输出结果。,通信内聚模块例,产生工资报表,计算平均工资,职工工资记录,职工工资报表,平均工资,产生职工工资报表并计算平均工资模块,通信内聚模块例,开领 书单,登记 售书,发票,领书单,售 书 登记表,文件,删除,修改,(6)顺序内聚,一个内部成分的输出是另一个内部成分的输入, 将它们合起来。,顺序内聚模块,建立方程组系数矩阵,高斯消去法,回 代,高斯消去法解题流程,(7) 功能内聚,模块仅包括为完成某个功能所必须的所有成分。 ( 模块所有成分共同完成一个功能,缺一不可 ) 内聚性最强,功能内聚模块,建立方程组系数矩阵,高斯消去法,回 代,高斯消去法解题流程,模块独立性的度量之二:,耦合性是模块间相互依赖程度的度量,耦合的强弱取决于模块间接口的复杂程度,进入或访问一个模块的点,以及通过接口的数据。 耦合性越高,模块独立性越弱,内容耦合:一个模块直接修改另一个模块的内容 公共耦合:两个以上的模块共同引用一个全局数据 外部耦合:若允许一组模块访问同一个全局变量 控制耦合:模块之间传递的参数含有控制信息 标记耦合:两个模块接口的参数包含相同的内部结构 数据耦合:模块之间通过参数交换数据信息。 非直接耦合:模块之间没有消息传递,低,高,耦合-模块之间的依赖程度,软件设计的概念和原理 - 耦合,非直接耦合 数据耦合 特征耦合 控制耦合 外部耦合 公共耦合 内容耦合,弱耦合,中耦合,较强耦合,强耦合,模块1,模块2,模块3,模块4,数据耦合 通过简单变量交换数据,特征耦合 通过数据结构交换数据,非直接耦合 模块之间没有信息传递,模块A,模块B,模块C,模块D,模块L,模块N,全局性数据结构 公共耦合,Flag=1?,S1,S2,模块1,控制耦合 模块之间传递的是控制信息,T,F,全 局 性简单变量 外部耦合,模块A,模块B,内容耦合 访问其它模块的内部数据 直接跳到其他模块内部执行,无耦合没有依赖关系,松散耦合有 少量依赖关系,紧密耦合有 很多依赖关系,耦合强度依赖的因素:,一模块对另一模块的引用 一模块向另一模块传递的数据量 一模块施加到另一模块的控制的数量 模块间接口的复杂程度,模块间耦合的类型:,低 非直接耦合 耦 数据耦合 合 标志耦合 性 控制耦合 外部耦合 公共耦合 高 内容耦合,模 块 独 立 性,弱,(低耦合),强,(中耦合),(较强耦合),(强耦合),(1) 非直接耦合,两个模块没有直接关系(模快1和模快2),模块独立性最强。,模块1,模块2,模块3,模块4,(2) 数据耦合,一模块调用另一模块时,被调用模块的输入、 输出都是简单的数据,属松散耦合。,数据耦合举例,开发票,计算水费,单价 数量,金额,数据耦合举例,计算水电费,计算水费,计算电费,用水量,用电量,水费,电费,(3) 标记耦合(特征耦合),如两个模块通过传递数据结构(不是简单数据, 而是记录、数组等)加以联系,或都与一个数据 结构有关系, 则称这两个模块间存在标记耦合。,标记耦合举例,计算水电费,计算水费,计算电费,住户情况,水费,电费,住户情况,“住户情况”是一个数据结构,图中模块都与此数据结构有关。 “计算水费”和“计算电费”本无关,由于引用了此数据结构产生依赖关系,它们之间也是标记偶合。,将标记耦合修改为数据耦合举例,计算水电费,计算水费,计算电费,本月 用水量,本月 用电量,水费,电费,(4) 控制耦合,一模块通过开关量、标志、名字等控制信息, 明显地控制另一模块的功能。,控制耦合举例,A,计算平均分 或最高分,B,平均/最高,成绩,控制耦合举例,读入分数,输出结果,计算平均分,计算最高分,平均/最高?,调用逻辑性模块 B时,须先传递 控制信号(平均分 /最高分),以选 择所需的操作。 控制模块必须知 道被控模块的内 部逻辑,增强了 相互依赖。,B,控制耦合增加了理解和编程的复杂性,调用模块 必须知道被调模块的内部逻辑,增加了相互依赖。 去除模块间控制耦合的方法: (1)将被调用模块内的判定上移到调用模块中进行; (2)被调用模块分解成若干单一功能模块。,改控制耦合为数据耦合举例,A,计算平均分,B1,平均成绩,最高成绩,计算最高分,B2,控制耦合举例,A,发奖牌,名次 (开关量),奖牌,控制耦合,被调用模块内 处理逻辑模式,功能A,功能B,判别,改控制耦合为数据耦合举例,A,发金牌,发银牌,发铜牌,(5) 外部耦合,一组模块均与同一外部环境关联(例如,I/O模块 与特定的设备、格式和通信协议相关联),它们之 间便存在外部耦合。 外部偶合必不可少,但这种模块数目应尽量少。,(6) 公共耦合(公共数据区耦合),一组模块引用同一个公用数据区(也称全局数据区、公共数据环境)。 公共数据区指: 全局数据结构 共享通讯区 内存公共覆盖区等,公共耦合举例, 公共数据区,松散的公共耦合, 公共数据区,紧密的公共耦合,公共耦合举例,公共数据区,C,B,模块A、B、C间存在错综复杂的联系,公共耦合举例,所有的公共耦合关系,A,E,B,C,D,6个模块共享一 个公共数据区,F,公共耦合存在的问题:,(1)软件可理解性降低 (模块间存在错综复杂的连系) (2)软件可维护性差 (修改变量名或属性困难) (3)软件可靠性差 (公共数据区及全程变量无保护措施) 慎用公共数据区和全程变量!,(7) 内容耦合,一模块直接访问另一模块的内部信息(程序代码 或数据)。 最不好耦合形式 !,发生内容耦合的情形:,(1)一模块直接访问另一模块的内部数据 (2)一模块不通过正常入口转到另一模块内 (3)两模块有一部分代码重叠 (4)一模块有多个入口,模块化设计的原则和目标,耦合是影响软件复杂程度和设计质量的重要因素 目标:建立模块间耦合度尽可能松散的系统。,如何降低模块间耦合度?,(1) 如模块必须存在耦合,选择适当的耦合类型 原则:尽量使用数据耦合 少用控制耦合 限制公共耦合的范围 坚决避免使用内容耦合 (2) 降低模块间接口的复杂性,接口复杂性与耦合类型的关系:,接 口 复 杂 性,接口方式,接口数据 的复杂性,无接口关系,直接引用,过程调用语句,数据项作参数,数据结构,变 量名作参数,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论