耦合
在电子学和电信领域,耦合ǒuhé(英语:coupling)是指能量从一个介质(例如一个金属线、光导纤维)传播到另一种介质的过程。
在电子学中,耦合指从一个电路部分到另一个电路部分的能量传递。例如,通过电导性耦合(Conductivecoupling),能量从一个电压源传播到负载上。利用电容器允许通过交流成分、阻挡直流成分的性质,可以将电路的交流部分和直流部分耦合起来。变压器也可以充当耦合介质,通过在两端配置适当的阻抗,可以达到适当的阻抗匹配。
有关领域
软件工程中
耦合(Coupling)表示两个子系统(或类)之间的关联程度,当一个子系统(或类)发生变化时对另一个子系统(或类)的影响很小,则称它们是松散耦合的;反之,如果变化的影响很大时,则称它们是紧密耦合的。耦合的强弱取决于模块间接间的复杂性、引用模块的位置和数据的传送方式等。设计时应尽量使模块间的耦合度(Couplingdegree)小,模块间的耦合度直接影响系统的可理解性、可测试性、可靠性和可维护性。
相关标准
耦合强度,依赖于以下几个因素:
(1)一个模块对另一个模块的调用;
(2)一个模块向另一个模块传递的数据量;
(3)一个模块施加到另一个模块的控制的多少;
(4)模块之间接口的复杂程度。
物品介绍
在涉及耦合(Coupling)这个术语之前,们先看一个立体声电唱机放大电路的例子。从图1可知,每一个喇叭是同放大器直接相连的,没有放大器就不会有声音;同时,放大器和立体声唱机也是直接相连的。
然而,左右两个喇叭并没有直接相连,们可以任意拔去一个喇叭的插头而对其它器件均没有影响,可见喇叭与其它器件的耦合是极弱的。它们之间的耦合又是十分松散的(loose),即只要拔去插头就可以把模块分开,而不需动用电烙铁拆焊印刷板上的导线或焊片。反之,们如果把模块用导线焊接的方法连接起来,那么它们之间的耦合就较为紧密(tightercoupling)。
电子线路中,由若干电路构成一个有公共阻抗的网络时,某一电路中电压或电流变化能使其它电路也发生相应变化的现象。按公共阻抗的性质可分为电阻耦合,电感耦合,电容耦合及阻容耦合等。
分类
系统耦合始源于物理学,在物理学上耦合是指两个实体相互依赖于对方的一个量度,分为以下几种:
非直接耦合
两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的。
数据耦合
一个模块访问另一个模块时,彼此之间是通过简单数据参数(不是控制参数、公共数据结构或外部变量)来交换输入、输出信息的。
标记耦合
一组模块通过参数表传递记录信息。这个记录是某一数据结构的子结构,而不是简单变量。
控制耦合
如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。
公共耦合
若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构共享的通信区、内存的公共覆盖区等。
内容耦合
如果发生下列情形,两个模块之间就发生了内容耦合:
①一个模块直接访问另一个模块的内部数据;
②一个模块不通过正常入口转到另一模块内部;
③两个模块有一部分程序代码重叠(只可能出现于汇编语言中);
④一个模块有多个入口。
耦合也可分为七级,从低至高为:非直接耦合(Nondirectcoupling)、数据耦合(Datacoupling)、标记耦合(Stampcoupling)、控制耦合(Controlcoupling)、外部耦合(Externalcoupling)、公共耦合(Commoncoupling)、内容耦合(Contentcoupling)。耦合度应越低越好。
若两模块间彼此无任何交互,则称之为非直接耦合;若两模块间仅通过参数交换信息则称为数据耦合,一般系统中均需要存在这类耦合;如果模块间传送的参数包含着复合数据结构,则为标记耦合,例如含有若干数据项的数据记录;若传递的参数中含有控制信息则上升为控制耦合,如一个标志信息用于控制模块内部逻辑;当若干模块与同一个外部环境关联,则模块间存在着外部耦合。如I/O处理使所有I/O模块与特定的设备、格式和通信协议相关联;公共耦合则是指模块间存在着全局变量、公共数据区或可共享的文件等;而内容耦合是指模块间存在着一个模块直接转入另一模块的内部或一个模块直接使用另一模块的数据或控制信息
简单地说,软件工程中对象之间的耦合度就是对象之间的依赖性。指导使用和维护对象的主要问题是对象之间的多重依赖性。对象之间的耦合越高,维护成本越高。因此对象的设计应使类和构件之间的耦合最小。
有软硬件之间的耦合,还有软件各模块之间的耦合。
耦合性是程序结构中各个模块之间相互关联的度量。它取决于各个模块之间的接口的复杂程度、调用模块的方式以及哪些信息通过接口。
耦合可以分为以下几种,它们之间的耦合度由高到低排列如下:
(1)内容耦合。当一个模块直接修改或操作另一个模块的数据时,或一个模块不通过正常入口而转入另一个模块时,这样的耦合被称为内容耦合。内容耦合是最高程度的耦合,应该避免使用之。
(2)公共耦合。两个或两个以上的模块共同引用一个全局数据项,这种耦合被称为公共耦合。在具有大量公共耦合的结构中,确定究竟是哪个模块给全局变量赋了一个特定的值是十分困难的。
(3)外部耦合。一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。
(4)控制耦合。一个模块通过接口向另一个模块传递一个控制信号,接受信号的模块根据信号值而进行适当的动作,这种耦合被称为控制耦合。
(5)标记耦合。若一个模块A通过接口向两个模块B和C传递一个公共参数,那么称模块B和C之间存在一个标记耦合。
(6)数据耦合。模块之间通过参数来传递数据,那么被称为数据耦合。数据耦合是最低的一种耦合形式,系统中一般都存在这种类型的耦合,因为为了完成一些有意义的功能,往往需要将某些模块的输出数据作为另一些模块的输入数据。
(7)非直接耦合。两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的。
总结:耦合是影响软件复杂程度和设计质量的一个重要因素,在设计上们应采用以下原则:如果模块间必须存在耦合,就尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,尽量避免使用内容耦合。
内聚与耦合
内聚标志一个模块内各个元素彼此结合的紧密程度,它是信息隐蔽和局部化概念的自然扩展。内聚是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事。它描述的是模块内的功能联系。耦合是软件结构中各模块之间相互连接的一种度量,耦合强弱取决于模块间接口的复杂程度、进入或访问一个模块的点以及通过接口的数据。程序讲究的是低耦合,高内聚。就是同一个模块内的各个元素之间要高度紧密,但是各个模块之间的相互依存度却要不那么紧密。
内聚和耦合是密切相关的,同其他模块存在高耦合的模块意味着低内聚,而高内聚的模块意味着该模块同其他模块之间是低耦合。在进行软件设计时,应力争做到高内聚,低耦合。
振动模式耦合
振动模式的耦合是指两个振动模态在某一振动模态下(或在某一广义坐标方向上)的振动输入,导致另一振动模态下(或另一广义坐标方向上)的响应。
使耦合分离称为解耦。解耦的目的是使各个自由度上(即各振动模态)的振动相对独立或分离,这样可对隔振效果不佳的自由度独立采取措施而不影响其他自由度方向上的有关性能。当各自由度独立后,可能产生共振的频率比存在耦合时要小,特别在激振能量大的方向上要保证解耦。
强弱程度
耦合的强弱取决于模块的划分是否合理以及模块之间接口的复杂程度。因此,划分模块时应尽量做到:
①排除模块之间不必要的联系;
②减少模块之间必不可少的联系的数量;
③松散模块之间联系的紧密程度。
这样做,就可以得到相互之间耦合比较弱、比较松散的模块划分。
耦合效率
在光纤传输中,接口的入端光功率与出端光功率之比。例如,由光源发出的功率与光纤束接受到的功率之比,或在光纤束的末端接收到的光功率与落到光电检测器上的功率之比。对于发射面大于纤芯直径的光源,光纤的数值孔径NA和芯径的乘积是最大耦合效率的标志。对于发射面积小于纤芯直径的其他光源(如激光二极管)只用NA即可用作耦合效率的合适标志。用尾部烧球的光纤与发光管耦合,用拉锥的光纤与激光管耦合都是为了增大数值孔径NA,提高耦合效率。
参考资料
万方数据知识服务平台.万方数据知识服务平台.2021-12-27