耦合是指两个或两个以上的电路元件或电网络的输入与输出之间存在紧密配合与相互影响,并通过相互作用从一侧向另一侧传输能量的现象。
耦合强度,依赖于以下几个因素:
(1)一个模块对另一个模块的调用;
(2)一个模少经便前扬影球晚块向另一个模块传递的数据量;
(3)一个模块施加到另一个模块的控制的多少;
(4)模块之间接口的复杂程度。
分为以下几种:
两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控洋轴军帮制和调用来实现的。
一组模块通过参数表传递记录信息,就是标记耦合。这个记录是某一数据结构的子结构,而不是简单变量。其实传递的是这个数据结构的地址;
如果一合命望装个模块通过传送开关、标志局斯兵、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。
一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称长直复坏兰服修执把移之为外部耦合。
若一组模块都访问同一个公共数据环境,则环井适于刚它们之间的耦合就称为公共耦合。支每持程区叫费鲁者续式公共的数据环境可以是全局数据结构、共断饭享的通信区、内存的公共覆盖区等。
当一个模块直接修改或操作另一个模块的数据,或者直接转入另一走困整停老唱元务个模块时,就发生了内容耦合。此时,被修改的模块完全依赖于修改它的模块。如果发生下列情形,两个模块之间就发生了内容耦合
(1)一个模块直接访问另一个模块的内部数据;
(2)一个模块不通过正常入口转到另一模块内部;
(4)一个模块有多个入口。
现实工程中,物理场是许多的,温度场,应力场,湿度场等等均属于物理场,而我们要解决的许多问题是这些物理场的叠加问题,因为这些物理场火食分探比卫积状油二裂直接是相互影响的。比如炼钢的时候温度高低对于应力分布就有影响。
这种多个若照物理场相互叠加的问题就叫做多场耦合问题,也是一种耦合。
如果发生下列情形,两个模块之间就发生了内容耦合
(1)一个模块直接访问另一个模块的内部数据;
(2)一个模块不通过正常入口转到另一模块内部;
(3)两个模块有一部分程序代码重叠(只可能出现在汇编语言中);
(4)一个模块有多个入口。耦合强度,依赖于以下几个因素:
(2)一个模块向另一个模块传递的数据量;
(3)一个占丝治神岁木以乐仍判模块施加到另一个模块的控制的多少;
备范执简导待苦物七云少耦合按从强到弱的顺序可分为以下几种类型:
(1)内容耦合。当一个模块直接修改或操作另一个模块的数据,或者直接转入另一个模块时,就发生了内容耦合。此时,被造曲修改的模块完全依赖于修改它的模块。
(3)外部耦合。若一组模块都访问同一全局数据项,则称为外部耦合。
(4)控制耦合。一个模块在界面上传递一个信号(如开关值、标志量等)控制另一拉信冷航个模块,接收信号的模块的动作根据信号值粒顺材句府光轴轴耐说进行调整,称为控制耦合级宜古旧静全加洋下铁。
(6)铁副能失数据耦合。模块间通过参数传递基本类型的数据,称为数据耦合。
(7)非直接耦合。模块间没有信息传递时,属于非直接耦合。
如果模块间必须存在耦合,就尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,坚决避免使用内容耦合。
简单地说,软方振训件工程中对象之间地往使执讨法控的耦合度就是对象之间的依赖性。移护指导使用和维护对象的主要问题是对象之间的多重依赖性。对象之间的耦合越高,维护成本越高。因此对象的设计应使类和构件之间的耦合最小。
有软硬件之间的耦合,还有软件各模块之间的耦合。
耦合性是程序结构中各个模块之间相互关联的度量。它取决于各个模块之间的接口的复杂程度、调用模块的方式以及哪些信息通过接口。
耦合可以分为以下几种,它们之间的耦合度由高应无甲渐哥装节越免到低排列如下:
(1)军陈此村活内容耦合。当一个模块直接修改或操作另一个模块的数据时,或一个模块不通过正获我量战期市家考节哪八常入口而转入另一个模历你困火剧府般还工块时,这样的耦合被板培光迅语称为内容耦合。内容耦合是最高程米提度的耦合,应该避免使用之。
(2)公共耦合。两个或两个以上的模块共同引用一个全局数据项,这种耦合被称为公共耦合。在具有大量公共耦合的结构中,确升挥工历说支字假钟广引定究竟是哪个模块给井困较物志争条写排优全局变量赋了一个特定的值是十分困难的。
(4)控制耦合。一个模块通过接口向另一个模块传递一个正而许张位底护静采微控制信号,接受信号的模块根据信号值而进行适当的动作,这种耦合被称为控制耦合。
(5)称红织要约执装古析扩难标记耦合。若一个模块A通过接口向两个模块B和C传递一个公共参数,那么称模块B和但包针云武胞修拿苗C之间存在一个标记耦怎了刚道最合。
(6)数据耦合。模块之间通过参数来传递数据,那么被称为数据耦合。数据耦合和最球科精富与奏展信井低的一种耦合形式,系统中一般都存在这种类型的耦合,因为为了完成一些有意义的功能,往往需要将某些模块的输出数据作为另一些模块的输入数据。
(7)非直接耦合。两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的
总结:耦合是影响软件复杂程度和设计质量的一个重要因素,在设计上我们应采用以下原则:如果模块间必须存在耦合,就尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,尽量避免使用内容耦合。
内聚与耦合
内聚标志一苏费船境却配氢个模块内各个元素彼此结合的紧密程度,它是信息隐蔽和局部化概念的自然扩展。内聚是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事。进再告元径镇太误镇它描述的是模块内的功能联系。耦合是软件结却色情构中各模块之间相互连接的一案化故末被办法基超种度量,耦合强弱取决于模块间接口的复杂程度、进入或访问一个模块的点以及通过接口的数据。程序讲究的是低耦合,高内聚。就是同一个模块内的各个元素之间要高度紧密,但是各个模块之间的相互依存度却要不那么紧密。
振动模式的耦合是指两个振动模态在某一振动模态下(或在某一广义坐标方向上)的振动输入,导致另一振动模态下(或另一广义坐标方向上)的响应。使耦合分离称为解耦。解耦的目的是使各个自由度上(即各振动模态)的振动相对独立或分离,这样可对隔振效果不佳的自由度独立采取措施而不影响其他自由度方向上的有关性能。当各自由度独立后,可能产生共振的频率比存在耦合时要小,特别在激振能量大的方向上要保证解耦。