软件设计基本概念.pptVIP

  1. 1、本文档共71页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
模块独立程度的两个定性标准度量: 耦合衡量不同模块彼此间互相依赖(连接)的紧密程度。耦合要低,即每个模块和其他模块之间的关系要简单; 内聚衡量一个模块内部各个元素彼此结合的紧密程度。内聚要高,每个模块完成一个相对独立的特定子功能。 当前第31页\共有71页\编于星期一\15点 1. 耦合 耦合:是对一个软件结构内不同模块之间互连程度的度量。 要求:在软件设计中应该追求尽可能松散耦合的系统。 可以研究、测试或维护任何一个模块,而不需要对系统的其他模块有很多了解; 模块间联系简单,发生在一处的错误传播到整个系统的可能性就很小; 模块间的耦合程度强烈影响系统的可理解性、可测试性、可靠性和可维护性。 当前第32页\共有71页\编于星期一\15点 耦合程度的度量: (1) 非直接耦合/完全独立(no direct coupling) 如果两个模块中的每一个都能独立地工作而不需要另一个模块的存在,那么它们完全独立。 在一个软件系统中不可能所有模块之间都没有任何连接。 当前第33页\共有71页\编于星期一\15点 (2) 数据耦合(data coupling) 如果两个模块彼此间通过参数交换信息,而且交换的信息仅仅是数据,那么这种耦合称为数据耦合。 当前第34页\共有71页\编于星期一\15点 评价: 系统中至少必须存在这种耦合。一般说来,一个系统内可以只包含数据耦合。 数据耦合是理想的目标。 维护更容易,对一个模块的修改不会是另一个模块产生退化错误。 当前第35页\共有71页\编于星期一\15点 (3) 控制耦合(control coupling) 如果两个模块彼此间传递的信息中有控制信息,这种耦合称为控制耦合。 当前第36页\共有71页\编于星期一\15点 评价: 控制耦合往往是多余的,把模块适当分解之后通常可以用数据耦合代替它。 被调用的模块需知道调用模块的内部结构和逻辑,降低了重用的可能性 。 当前第37页\共有71页\编于星期一\15点 (4) 特征耦合(stamp coupling) 当把整个数据结构作为参数传递而被调用的模块只需要使用其中一部分数据元素时,就出现了特征耦合。 评价: 被调用的模块可使用的数据多于它确实需要的数据,这将导致对数据的访问失去控制,从而给计算机犯罪提供了机会。 无论何时把指针作为参数进行传递,都应该仔细检查该耦合。 当前第38页\共有71页\编于星期一\15点 (5) 公共环境耦合(common coupling) 当两个或多个模块通过一个公共数据环境相互作用时,它们之间的耦合称为公共环境耦合。公共环境可以是全程变量、共享的通信区、内存的公共覆盖区、任何存储介质上的文件、物理设备等等。 当前第39页\共有71页\编于星期一\15点 公共环境耦合的类型: 一个模块往公共环境送数据,另一个模块从公共环境取数据。数据耦合的一种形式,是比较松散的耦合。 两个模块都既往公共环境送数据又从里面取数据,这种耦合比较紧密,介于数据耦合和控制耦合之间。 当前第40页\共有71页\编于星期一\15点 例: while(global_variable==0) { if (argument_xyz25) module_3(); else module_4(); } 当前第41页\共有71页\编于星期一\15点 评价: 与结构化编程矛盾,生成的代码完全不可读。 如果在一个模块中对一个全局变量的声明进行修改,必须修改能够访问该全局变量的每一个模块。 公共环境耦合的模块难于重用,必须提供一个全局变量的清单。 即使模块本身不改变,它和产品中其他模块之间公共环境耦合的实例数也会变化非常大。 潜在危险很大。模块暴露出必需要更多的数据,难以控制数据存取,而且会导致计算机犯罪。 有些情况下公共环境耦合更好。 当前第42页\共有71页\编于星期一\15点 函数可重入的概念 可重入函数也可以这样理解,重入即表示重复进入,首先它意味着这个函数可以被中断,其次意味着它除了使用自己栈上的变量以外不依赖于任何环境(包括static),这样的函数就是purecode(纯代码)可重入,可以允许有该函数的多个副本在运行,由于它们使用的是分离的栈,所以不会互相干扰。如果确实需要访问全局变量(包括static),一定要注意实施互斥手段。可重入函数在并行运行环境中非常重要,但是一般要为访问全局变量付出一些性能代价 当前第43页\共有71页\编于星期一\15点 (6) 内容耦合(content coupling) 最高程度的耦合是内容耦合。如果出现下列情况之一,两个模块间就发生了内容耦合: 一个模块访问另一个模块的内部数据; 一个模块不通过正常入口转到另一个模块的内部; 两个模块有一部分程序代码重叠

文档评论(0)

风高云蛋 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档