第19讲软件结构图的优化.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 第19讲 软件结构图的优化 * 本讲主要内容: 一、7种耦合的独立性 二、7种内聚的独立性 三、软件结构的优化规则 * 引言:软件结构优化的总原则 软件结构更加合理—高内聚、低耦合; 结构稳定 易于实现 易于理解 易于测试 易于维护 * 一、7种耦合的独立性 * A访问C的内部数据或不通过正常入口而转入C的内部 …… A B C D A: ………… ………… goto C1 ………… ………… C: ………… ………… C1: …… …… 1) 内容耦合:一个模块直接引用另一个模块的内容 * 2)公共耦合——多个模块都访问同一个公共数据环境 问题: 公共数据的变化将影响所有调用它的模块; 复杂程度随耦合模块的个数增加而增加。 Global:V1, V2 A: A1=V1+V2 ………… B: V1=B1 ………… Global:V1,V2 C: V1++ ………… D: V2=B1+V1 ………… 注意:公共数据环境包括全局数据结构、共享的通信区、内存的公共覆盖区等 * 3)控制耦合:模块A向模块B传递一个控制信息 B模块的具体功能取决于控制信息Flag A B Flag F2 F1 Fn …… …… Flag * 4)数据耦合:两个模块传递的是普通数据项 A模块 B模块 a,b? ? c * 非直接耦合:两个模块之间没有直接的关系。例模块B和C之间没有直接的调用关系,而是通过父模块A实现的信息交互。 数据结构耦合:两个模块之间传递数据结构。 外部耦合:两模块共享的是全局数据项,而不是数据结构。 A B C a,b c F,g * 内聚:衡量一个模块内部各个元素间彼此关系的紧密程度 二、7种内聚的独立性 * 巧合内聚:一个模块执行多个完全互不相关的动作。 这种模块没有可复用性。 * 逻辑内聚:一个模块执行一系列逻辑相关的动作。 例如,一个模块有A、B、C三个功能,当A功能执行成功后,执行C功能,否则执行B功能。 两个问题: 接口参数可能比较复杂,难于理解; 多个功能纠缠在一起,使模块的可维护性降低。 A模块:参数b,s,t,u,v,y, begin ………… 处理功能A的程序段 A=s+t-y; …………; if a then { 处理功能C的程序段 Sum=u+v/b; ………; } else{ 处理程序B的程序段 …………; } …………; end * 时间内聚:模块各个功能的执行与时间有关,通常要求所有功能必须在同一时间段内执行。例如初始化模块和终止模块。 过程内聚——一个模块内多个功能是相关的,而且必须按特定的次序执行。例,从录入界面读取数据,然后更新数据库记录,这是将两个相关的功能放在一个模块中实现。 通信内聚——一个模块内的多个功能都使用同一个数据结构。例如,功能A向某个数据结构写数据,功能B从该区域读数据,实际上它们是通过操作相同的数据结构达到通信的目的。 顺序内聚——一个模块内的所有处理元素都与一个功能相关,并且这些处理元素必须顺序执行。 * 功能内聚 :一个模块中各个部分都是完成某一具体功能必不可少的组成部分。这些部分相互协调工作,紧密联系,不可分割。 这种模块易于理解和维护,并且它的可重用性好 。 * 规则一:模块功能完善化。 一个完整的功能模块,不仅能够完成指定的功能,而且还应当能够向调用者返回完成任务的状态; 要求功能模块具有出错处理的内容,当模块不能完成规定的功能时,必须回送出错标志,向它的调用者报告失败的原因。 如果模块正确结束,应该返回正确结束的标志。 上述内容不应分离到其他模块中去,会增大模块间的耦合。 三、优化软件结构设计的规则 * 规则二:设计功能单一、结果可预测的模块。 一个功能单一和结果可预测的模块可以被看成是一个“黑箱”,不论内部处理细节如何,对于相同的输入数据,总能产生同样的结果。 如果模块内部蕴藏一些结果可能无法预测的内容: 例,模块内部有一个局部控制变量M,在运行过程中模块的功能由该控制变量确定,结果难以预测,可能造成混乱。 * 规则三:消除重复功能,改善软件结构。 认真审查初始的软件结构图,对功能重复的模块进行合并处理。 例,两个模块功能相似,只是处理的数据类型不一致,应该修改模块的数据类型定义。 注意:如果两个模块的功能只是局部相似,不要简单地合二为一,合并后会造成模块内部设置许多判断开关,模块的接口参数势必会传递一些控制信息,造成模块内聚降低。 方法:分析相似模块的相同部分,分离出去组成新模块。 * 规则四:模块的作用范围应在控制范围之内。 模块的控制范围:这个模块及其所有下属模块。如图中模块E的控制范围是I、H、J。 模块的作用范围:这个模块内判定的作用范围,凡受这个判定影响的模块都属于这个判定的作用范围个模块内的判定 例,图中模块J

文档评论(0)

docindoc + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档