- 1、本文档共72页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
“隐藏”意味着有效的模块化可以通过定义一组独立的模块而实现,这些独立的模块彼此间仅仅交换那些为了完成系统功能而必须交换的信息。01使用信息隐藏原理作为模块化系统设计的标准就会带来极大好处。因为绝大多数数据和过程对于软件的其他部分而言是隐藏的,在修改期间由于疏忽而引入的错误就很少可能传播到软件的其他部分。01信息隐藏和局部化的作用:模块独立的概念是模块化、抽象、信息隐藏和局部化概念的直接结果。01希望这样设计软件结构,使得每个模块完成一个相对独立的特定子功能,并且和其他模块之间的关系很简单。02模块独立:5.2.5模块独立有效的模块化(即具有独立的模块)的软件比较容易开发出来。这是由于能够分割功能而且接口可以简化,当许多人分工合作开发同一个软件时,这个优点尤其重要。01独立的模块比较容易测试和维护。这是因为相对说来,修改设计和程序需要的工作量比较小,错误传播范围小,需要扩充功能时能够“插入”模块。02模块独立的重要性:耦合衡量不同模块彼此间互相依赖(连接)的紧密程度。耦合要低,即每个模块和其他模块之间的关系要简单;内聚衡量一个模块内部各个元素彼此结合的紧密程度。内聚要高,每个模块完成一个相对独立的特定子功能。模块独立程度的两个定性标准度量:0102030405耦合:是对一个软件结构内不同模块之间互连程度的度量。要求:在软件设计中应该追求尽可能松散耦合的系统。可以研究、测试或维护任何一个模块,而不需要对系统的其他模块有很多了解;模块间联系简单,发生在一处的错误传播到整个系统的可能性就很小;模块间的耦合程度强烈影响系统的可理解性、可测试性、可靠性和可维护性。耦合耦合程度的度量:(1)非直接耦合/完全独立(nodirectcoupling)如果两个模块中的每一个都能独立地工作而不需要另一个模块的存在,那么它们完全独立。在一个软件系统中不可能所有模块之间都没有任何连接。数据耦合(datacoupling)如果两个模块彼此间通过参数交换信息,而且交换的信息仅仅是数据,那么这种耦合称为数据耦合。BCA维护更容易,对一个模块的修改不会是另一个模块产生退化错误。系统中至少必须存在这种耦合。一般说来,一个系统内可以只包含数据耦合。数据耦合是理想的目标。ACB评价:控制耦合(controlcoupling)如果两个模块彼此间传递的信息中有控制信息,这种耦合称为控制耦合。AB控制耦合往往是多余的,把模块适当分解之后通常可以用数据耦合代替它。A被调用的模块需知道调用模块的内部结构和逻辑,降低了重用的可能性。B评价:当把整个数据结构作为参数传递而被调用的模块只需要使用其中一部分数据元素时,就出现了特征耦合。特征耦合(stampcoupling)01被调用的模块可使用的数据多于它确实需要的数据,这将导致对数据的访问失去控制,从而给计算机犯罪提供了机会。无论何时把指针作为参数进行传递,都应该仔细检查该耦合。评价:02公共环境耦合(commoncoupling)当两个或多个模块通过一个公共数据环境相互作用时,它们之间的耦合称为公共环境耦合。公共环境可以是全程变量、共享的通信区、内存的公共覆盖区、任何存储介质上的文件、物理设备等等。公共环境耦合的类型:一个模块往公共环境送数据,另一个模块从公共环境取数据。数据耦合的一种形式,是比较松散的耦合。两个模块都既往公共环境送数据又从里面取数据,这种耦合比较紧密,介于数据耦合和控制耦合之间。01例:02while(global_variable==0)03{04if(argument_xyz25)05module_3();06else07module_4();08}与结构化编程矛盾,生成的代码完全不可读。01公共环境耦合的模块难于重用,必须提供一个全局变量的清单。03潜在危险很大。模块暴露出必需要更多的数据,难以控制数据存取,而且会导致计算机犯罪。05如果在一个模块中对一个全局变量的声明进行修改,必须修改能够访问该全局变量的每一个模块。02即使模块本身不改变,它和产品中其他模块之间公共环境耦合的实例数也会变化非常大。04有些情况下公共环境耦合更好。06评价:函数可重入的概念可重入函数也可以这样理解,重入即表示重复进入,首先它意味着这个函数可以被中断,其次意味着它除了使用自己栈上的变量以外不依赖于任何环境(包括static),这样的函数就是purecode(纯代码)可重入,可以允许有该函数的多个副本在运行,由于它们使用的是分离的栈,所以不会互相干扰。如果确实需要访问全局变量(包括static),一定
文档评论(0)