下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、耦合性(耦合度)耦合性是程序结构中各个模块之间相互关联的度量。它取决于各个模块之间接口的复杂程度、调 用模块的方式以及哪些信息通过接口。一般模块之间可能的连接方式有七种,构成耦合性的七种类型。它们之间的关系为(由弱到强)非直接耦合(Nondirect coupling)如果两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的,这 就是非直接耦合。这种耦合的模块独立性最强。数据耦合(Data Coupling)如果一个模块访问另一个模块时,彼此之间是通过数据参数(不是控制参数、公共数据结构或外 部变量)来交换输入、输出信息的,则称这种耦合为数据耦合。由于限制了只通过参数表
2、传递数 据,按数据耦合开发的程序界面简单、安全可靠。因此,数据耦合是松散的耦合,模块之间的独 立性比较强。在软件程序结构中至少必须有这类耦合。标记耦合(Stamp Coupling)如果一组模块通过参数表传递记录信息,就是标记耦合。事实上,这组模块共享了这个记录,它 是某一数据结构的子结构,而不是简单变量。这要求这些模块都必须清楚该记录的结构,并按结 构要求对此记录进行操作。在设计中应尽量避免这种耦合,它使在数据结构上的操作复杂化了。 如果采取信息隐蔽的方法,把在数据结构上的操作全部集中在一个模块中,就可以消除这种耦 合。控制耦合(control(20upling)如果一个模块通过传送开关、标
3、志、名字等控制信息,明显地控制选择另一模块的功能,就是控 制耦合。如图4. 13所示。这种耦合的实质是在单一接口上选择多功能模块中的某项功能。因 此,对所控制模块的任何修改,都会影响控制模块。另外,控制耦合也意味着控制模块必须知道 所控制模块内部的一些逻辑关系,这些都会降低模块的独立性。外部耦合(External(; oupling)一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变 量的信息,则称之为外部耦合。例如C语言程序中各个模块都访问被说明为extern类型的外部 变量。外部耦合引起的问题类似于公共耦合,区别在于在外部耦合中不存在依赖于一个数据结构 内
4、部各项的物理安排。公共耦合(;ommon Coupling)若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可 以是全局数据结构、共享的通信区、内存的公共覆盖区等。这种耦合会引起下列问题:1)所有公共耦合模块都与某一个公共数据环境内部各项的物理安排有关,若修改某个数据的大 小,将会影响到所有的模块。2)无法控制各个模块对公共数据的存取,严重影响软件模块的可靠性和适应性。3)公共数据名的使用,明显降低了程序的可读性。Page公共耦合的复杂程度随耦合模块的个数增加而显著增加。如图4. 14所示,若只是两个模块之 间有公共数据环境,则公共耦合有两种情况。若一个模块只
5、是往公共数据环境里传送数据,而另一个模块只是从公共数据环境中取数据,则这 种公共耦合叫做松散公共耦合。若两个模块都从公共数据环境中取数据,又都向公共数据环境里 送数据,则这种公共耦合叫做紧密公共耦合。只有在模块之间共享的数据很多,且通过参数表传 递不方便时,才使用公共耦合。否则,还是使用模块独立性比较高的数据耦合好些。(7)内容耦合(70ntent Coupling)如果发生下列情形,两个模块之间就发生了内容耦合。1)一个模块直接访问另一个模块的内部数据;2)一个模块不通过正常入口转到另一模块内部;3)两个模块有一部分程序代码重叠(只可能出现在汇编语言中);4)一个模块有多个入口。在内容耦合的
6、情形,所访问模块的任何变更,或者用不同的编译器对它再编译,都会造成程序出 错。好在大多数高级程序设计语言已经设计成不允许出现内容耦合。它一般出现在汇编语言程序 中。这种耦合是模块独立性最弱的耦合。以上由Myers给出的七种耦合类型,只是从耦合的机制上所做的分类,按耦合的松紧程度的排 列只是相对的关系。但它给设计人员在设计程序结构时提供了一个决策准则。实际上,开始时两 个模块之间的耦合不只是一种类型,而是多种类型的混合。这就要求设计人员按照Myers提出 的方法进行分析,比较和分析,逐步加以改进,以提高模块的独立性。原则上讲,模块化设计的最终目标,是希望建立模块间耦合尽可能松散的系统。在这样一个
7、系统 中,我们设计、编码、测试和维护其中任何一个模块,就不需要对系统中其他模块有很多的了解。 此外,由于模块间联系简单,发生在某一处的错误传播到整个系统的可能性很小。因此,模块间 的耦合情况很大程度影响到系统的可维护性。那么,在系统的模块化设计时,如何降低模块间的耦合度呢?以下几点可供参考。1)根据问题的特点,选择适当的耦合类型在模块间传递的信息有两种:一种是数据信息,一种是控制信息。传送数据的模块,其耦合程度 比传送控制信息的模块耦合程度要低。在模块调用时,传送的控制信息有两种:一种是传送地址,即调用模块直接转向所调用模块内部 的某一地址。在这种情况,一个模块的改动对其他模块有直接影响。另一
8、种是传送判定参数,调 用模块把判定参数传送给所调用模块,决定所调用模块如何执行。在这种情况下,模块间的耦合 程度也很高,所以应当尽量减少和避免传送控制信息。但另一方面,也不要盲目地追求松散的耦 合。例如,一个程序有40种出错信息,若把它们集中放在一个错误处理模块中,通过调用模块传送错误类型到该模块的接口上,再进行处理,就形成控制耦合”。这样做可以消去重复的信息, 使所有错误信息格式标准化。所以,耦合类型的选择,应当根据实际情况,全面权衡,综合地进 行考虑。2)降低模块接口的复杂性模块接口的复杂性包括三个因素:一是传送信息的数量,即有关的公共数据与调用参数的数量; 二是联系方式;三是传送信息的结
9、构。一般情况,在模块的调用序列中若出现大量的参数,就表明所调用模块要执行许多任务。通过把 这个所调用模块分解成更小的模块,使得每个小模块只完成一个任务,就可以减少模块接口的参 数个数,降低模块接口的复杂性,从而降低模块间的耦合程度。模块的联系方式(即调用方式)有两种:call方式和直接引用。前者使用标准的过程调用方式, 模块间接口的复杂性较低,模块间的耦合程度低。后者是一个模块直接访问另一个模块内部的数 据或指令,模块间的耦合程度高。所以,应当尽可能用call方式代替直接引用”,减少模块接 口的复杂性。在参数类型上,尽量少使用指针、过程等类型的参数。此外,在模块接口上传送的信息若能以标准的、直接的方式提供,则信息结构比较简单。若以非 标准的、嵌套的方式提供,则信息结构比较复杂。例如,在模块中要调用画直线的命令LINE, 若命令要求直接给它直线两个端点的坐标Xo, yo, x1,y1:call LINE(zo,yo,X1,y1)则接口复杂性比给origin(始点),end(终点)要低。因为后者还要定义origin和end的结构。call LINE(origin,end)3)把模块的通信信息放在缓冲区中因为缓冲区可以看做是一个先进先出的队列
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 抽样方案GB2828.1-2012培训
- 《财务管理项目化教程(第2版)》高职全套教学课件
- 学校最易劳动合同范本
- 房屋设计外包合同范本
- 批发服装供货合同范本
- 户外楼梯订购合同范本
- 微商版权协议合同样本
- 技术开发免税合同范本
- 植物体的结构层次
- 物质的量课件-高一上学期化学人教版
- 大学教学督导与课堂质量监控工作心得体会(3篇)
- 2025年下半年国家教师资格幼儿园《综合素质》考试真题及参考答案
- 评审委托协议书
- 黑龙江中医药大学《无机化学》2025 学年第二学期期末试卷
- 2025年高中计算机操作试题题库及答案
- 研学基地课程书籍或课件
- 杭州市西湖区人民政府西溪街道办事处公开招聘编外合同制工作人员5人考试笔试备考试题及答案解析
- 2026年山西信息职业技术学院单招职业技能测试题库及参考答案详解1套
- 【《四川省鹤林中学学生宿舍楼施工组织设计》12000字】
- 西安市2024陕西西安市专职消防员管理中心招聘事业编制人员笔试历年参考题库典型考点附带答案详解(3卷合一)
- 2025年盐城港控股招聘面试题库及答案
评论
0/150
提交评论