精华内容
下载资源
问答
  • 模块耦合度

    千次阅读 2012-09-27 17:52:21
    耦合性(或称“耦合度”) 英文 : coupling  耦合性是程序结构中各个模块之间相互关联的度量。它取决于各个模块之间接口的复杂程度、调用模块的方式以及哪些信息通过接口。 一般模块之间可能的连接方式有七种...
    耦合性(或称“耦合度”)
    英文 : coupling
        耦合性是程序结构中各个模块之间相互关联的度量。它取决于各个模块之间接口的复杂程度、调用模块的方式以及哪些信息通过接口。
    一般模块之间可能的连接方式有七种,构成耦合性的七种类型。它们之间的关系为
    (1)非直接耦合(Nondirect coupling)
    如果两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的,这就是非直接耦合。这种耦合的模块独立性最强。 。
    (2)数据耦合(Data Coupling)
    如果一个模块访问另一个模块时,彼此之间是通过数据参数(不是控制参数、公共数据结构或外部变量)来交换输入、输出信息的,则称这种耦合为数据耦合。由于限制了只通过参数表传递数据,按数据耦合开发的程序界面简单、安全可靠。因此,数据耦合是松散的耦合,模块之间的独立性比较强。在软件程序结构中至少必须有这类耦合。
    (3)标记耦合(Stamp Coupling)
    如果一组模块通过参数表传递记录信息,就是标记耦合。事实上,这组模块共享了这个记录,它是某一数据结构的子结构,而不是简单变量。这要求这些模块都必须清楚该记录的结构,并按结构要求对此记录进行操作。在设计中应尽量避免这种耦合,它使在数据结构上的操作复杂化了。如果采取“信息隐蔽”的方法,把在数据结构上的操作全部集中在一个模块中,就可以消除这种耦合。
    (4)控制耦合(Control Coupling)
    如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。如图4.13所示。这种耦合的实质是在单一接口上选择多功能模块中的某项功能。因此,对所控制模块的任何修改,都会影响控制模块。另外,控制耦合也意味着控制模块必须知道所控制模块内部的一些逻辑关系,这些都会降低模块的独立性。
    (5)外部耦合(External Coupling)
    一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。例如C语言程序中各个模块都访问被说明为extern类型的外部变量。外部耦合引起的问题类似于公共耦合,区别在于在外部耦合中不存在依赖于一个数据结构内部各项的物理安排。
    (6)公共耦合(Common Coupling)
    若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。

    展开全文
  • 以下由耦合度由高向低做一说明,在软件设计中尽量降低模块之间的耦合度。 内容耦合:一个模块直接操作另外一个模块的数据,称为内容耦合。如:模块A有一个方法,直接读取模块B的一个数据变量c进行下一步操作,此时...

    高内聚、低耦合是软件设计中非常关键的概念。耦合度越低,两个模块之间相互影响越小,独立性越强,越容易维护和扩展。以下由耦合度由高向低做一说明,在软件设计中尽量降低模块之间的耦合度。

    1. 内容耦合:举个例子,甲盖房子时,把自家的梁架在邻居乙的柱子上,邻居乙拆自家房子时,甲的房子倒了,甲的房子和乙的房子在内容耦合。我们将一个模块直接操作另外一个模块的数据,称为内容耦合。如:模块A有一个方法,直接读取模块B的一个数据变量c进行下一步操作,此时开发模块B的程序员将c变量删除或改名,则模块A直接崩溃。开发软件时绝不允许这种事情发生,但有些新手就能给你写出来,内容耦合也叫病态耦合。

    2. 公共耦合:多个模块共同引用一个全局对象称为公共耦合。这个模块无法确定那个模块给全局变量赋了值,降低了程序的可读性。软件开发中尽量少用全局公共变量,替代办法使用参数传递解决问题。如果非要使用可以使用松散公共耦合,即只有一个模块写入值,其它模块只是读取。

    3. 外部耦合:一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。外部耦合和公共耦合很像,区别就是一个是简单变量,一个是复杂数据结构。

    4. 控制耦合:一个模块通过接口向另一个模块传递一个控制信号,接受信号的模块根据信号值而进行适当的动作,这种耦合被称为控制耦合,即根据控制信号产生分支语句。如A类调用B类的方法,B类根据A类传入的参数值,决定执行那部分代码,则B依赖A,A、B两个类产生控制耦合关系。控制耦合一般使用多态的方式解决问题。

    5. 标记耦合:标记耦合指两个模块之间传递的是数据结构,如高级语言的数组名、记录名、文件名等这些名字即为标记,其实传递的是这个数据结构的地址。

    6. 数据耦合:两个模块之间有调用关系,传递的是简单数据值,是值传递。耦合度低,模块独立性好,模块间的影响最小。

    7. 非直接耦合:两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的,这种耦合的模块独立性最强。

    总结:尽量使用数据耦合,少用控制耦合和标记耦合,限制公共耦合和外部耦合的范围,完全不用内容耦合

    参考:https://blog.csdn.net/tao475824827/article/details/104157419

    展开全文
  • 降低模块间的耦合度的措施 1.采用简单的数据传递方式 2.尽量使用整型等基本数据类型作为接口参数的数据类型 3.限制接口参数的个数

    降低模块间的耦合度的措施
    1.采用简单的数据传递方式
    2.尽量使用整型等基本数据类型作为接口参数的数据类型
    3.限制接口参数的个数

    展开全文
  • 从两个方面来度量模块之间的独立性,这两个概念是模块耦合度模块的内聚度 耦合度 耦合度分为: 独立耦合 , 数据耦合 , 控制耦合 , 公共耦合 和 内容耦合 独立耦合 指两个模块之间彼此完全独立,没有直接联系,他们...

    模块独立性的度量

    从两个方面来度量模块之间的独立性,这两个概念是模块的耦合度和模块的内聚度

    耦合度

    耦合度分为: 独立耦合 , 数据耦合 , 控制耦合 , 公共耦合 和 内容耦合

    独立耦合

    指两个模块之间彼此完全独立,没有直接联系,他们之间的联系仅仅在于他们同属于一个软件系统或共有一个上层模块,这是耦合程度最低的一种(系统中不可能所有的模块都属于这种关系)

    数据耦合

    数据耦合指两个模块彼此交换数据,如: 一个模块的输出数据是另一个模块的输入数据,或者一个模块带参数调用另一个模块,下层模块又返回参数,在一个系统中,这种耦合是不可避免的,数据耦合的联系程度也较低,这种耦合是不可避免的

    控制耦合

    在调用过程中,若两个模块间传递的不是数据而是控制参数,则模块间的关系为控制耦合,控制耦合不是一种必须存在的耦合
    当被调用模块收到控制信息作为输入参数时,说明该模块内部存在多个并列的逻辑路径,即有多个功能,控制变量从多个功能中选择所要执行的部分,控制耦合是可以完全避免的

    • 找出模块调用时所用的一个或多个控制变量
    • 在被调模块中根据控制变量找出所有的流程
    • 将每一个流程分解为一个独立的模块
    • 将原被调模块中的流程选择部分移到上层模块,变为调用判断

    公共耦合

    公共耦合又称为公共环境耦合或者数据区耦合,如果多个模块对同一个数据区进行存取操作,则它们之间的关系就是公共耦合,公共耦合最弱的一种是:两个模块共享一个数据变量,一个模块只向其中写数据,另一个模块只从其中读数据
    注意的是: 公共耦合很强的时候,关系会变得错综负责,难以控制,系统的可靠性下降,可理解性,可维护性变差

    内容耦合

    内容耦合是耦合程序最高的一种形式,若一个模块直接访问另一个模块的内部代码或数据,即出现内容耦合,内容耦合会严重破坏模块的独立性和系统的结构化,代码相互纠缠,运行错综复杂,应尽量避免
    内容耦合往往变现为以下几种形式:

    • 一个模块访问另一个模块的内部代码或数据
    • 一个模块不通过正常入口而转到另一个模块的内部(如使用goto语句或者jmp指令直接进入另一个模块的内部)
    • 两个模块有一部分代码重叠
    • 一个模块有多个入口(这意味着一个模块有多种功能)
      模块划分时,尽量使用书数据耦合,少用控制耦合(转成数据耦合),限制公共耦合的范围,完全不用内容耦合

    内聚度

    内聚度是模块内部各成分(语句或者语句段)之间的联系,模块内部各成分联系越紧,其内聚度越大,模块独立性越强,系统越易理解和维护,良好的内聚度的模块应能较好的满足信息局部化的原则,功能完整单一模块的高内聚必然能导致模块的低耦合度,理想情况是,一个模块只使用局部数据变量,完成一个功能
    由弱到强的顺序,内聚读可分为7类:

    偶然内聚

    块中的各个任务(通过语句或指令来实现的)之间没有什么有意义的联系,他们之所以能构成一个模块完全是偶然的原因
    偶然内聚的模块有很多缺点:由于模块内没有实质性的联系,很可能在某种情况下一个调用模块需要对它修改而别的模块不需要,这时就很难处理,同时这种模块的含义也不易理解,甚至难以为他去一个何时的名字,偶然内聚的模块也难于测试,空间允许下,不应该使用偶然内聚

    逻辑内聚

    一个模块完成的任务在逻辑上属于相同或相似的一类(例如,用一个模块产生各种类型的输出)
    如: 模块A,B,C的功能相似但不相同,如果把他们合并成一个模块ABC,则这个模块就为逻辑内聚,因为他们是由于逻辑上相似而发生联系的,逻辑联系是一种较弱的联系,当X,Y,Z调用合成的ABC模块时,需要判别执行不同功能的哪一部分
    逻辑耦合存在的问题

    • 修改困难,调用模块中有一个要对其改动,还要考虑到其他调用模块
    • 模块内需要增加开关,判断是谁调用
    • 实际上每次调用只执行模块中的一部分,其他部分也被装入了内存,因而效率不高

    时间内聚

    时间内聚是指一个模块中包含的任务需要在同一时间内执行(如初始化,结束等所需操作)
    时间内聚和偶然内聚,逻辑内聚一样,都属于低内聚度类型

    过程内聚

    如果一个模块内的各个处理元素是相关的,而且必须按固定的次序执行,这种内聚就称为过程内聚,这种内聚往往表现为次序的流程

    通信内聚

    若一个模块中的各处理元素需引用共同的数据(同一数据项,数据区或文件),则称其元素间的联系为通信内聚,通信内聚的各部分是借助共同使用的数据联系在一起的,故有较好的可理解性,通信内聚和过程内聚属于中内聚度型模块

    顺序内聚

    若一个模块内的各处理元素关系密切,必须按规定的处理次序执行,则这样的模块为顺序内聚型,在顺序内聚模块内,后执行的语句或语句段往往依赖先执行的语句或语句段,以先执行的部分为条件,由于模块内各处理元素间存在着这种逻辑联系,所以顺序内聚模块的可理解性很强,属于高内聚度型模块

    功能耦合

    功能耦合是内聚度最高的一种模块类型,如果模块仅完成一个单一的功能,且该模块的所有部分是实现这一功能所必需的,没有多余的语句,则该模块为功能内聚型,功能内聚模块的结构紧凑,界面清晰,易于理解和维护,因而可靠性强,又由于其功能单一,故复用率高,所以他是模块划分时应追求的一种模块类型
    在模块设计时力争做到高内聚,并且能够辨别出低内聚的模块,加以修改使用提高内聚度并降低模块之间的耦合度

    • 设计功能单一的模块
    • 控制使用全局数据
    • 模块间尽量传递数据型变量
      构件(模块)设计的最终目的是将数据模型,架构模型,界面模型变为可以操作的软件,构件设计的详细程度可以根据项目的具体情况而定,在概要设计的时候,可以根据具体要求对各个模块进行详细设计,如果某项目开发过程中不存在详细设计过程,则可以将构件设计得尽可能详细,这样概要设计和详细设计合为一个过程
    展开全文
  • 耦合度

    2021-04-08 18:44:26
    软件工程中对象之间的耦合度就是对象之间的依赖性。对象之间的耦合度越高,维护成本越高。 耦合性:是对模块关联程度的度量。耦合的强弱取决于模块间接口的复杂性,调用模块的方式以及通过界面传递数据的多少。 模块...
  • 耦合度&如何降低耦合度

    千次阅读 2018-07-03 13:44:35
     耦合度就是某模块(类)与其它模块(类)之间的关联、感知和依赖的程度,是衡量代码独立性的一个指标,也是软件工程设计及编码质量评价的一个标准。耦合的强度依赖于以下几个因素:(1)一个模块对另一个模块的...
  • 耦合度(Coupling)是对模块间关联程度的度量 耦合度就好比两个人的对对方的需求程度 如果两个人相互需求很高的话,这两个人就很难离开彼此,即独立性差、耦合度高 两个人都能独立工作,对对方的需求比较低,不需要...
  • 降低软件模块间的耦合度总结

    千次阅读 2008-02-18 15:16:00
    降低软件模块间的耦合度耦合度的系统是很难维护的。一处的修改引起另一处甚至更多处的变动。 你可以通过以下方法降低程序的耦合度:隐藏实现细节,强制构件接口定义,不使用公用数据结构,不让应用程序直接操作...
  • 耦合度耦合性

    2020-02-27 09:46:23
    如果两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的,这就是非直接耦合。这种耦合模块独立性最强。
  • 关于耦合度以及低耦合度的必要性

    千次阅读 2018-07-01 14:22:29
    耦合性(英语:Coupling,dependency,或称耦合力或耦合度)是一种软件度量,是指一程序中,模块模块之间信息或参数依赖的程度。内聚性是一个和耦合性相对的概念,一般而言低耦合性代表高内聚性,反之亦然。耦合性...
  • 耦合度举例说明 (1) 内容耦合。当一个模块直接修改或操作另一个模块的数据时,或一个模块不通过正常入口而转入另一个模块时,这样的耦合被称为内容耦合。内容耦合是最高程度的耦合,应该避免使用之。 ![内容...
  • 耦合度和聚合度

    2015-09-15 09:14:00
    简单地说,对象之间的耦合度就是对象之间的依赖性。指导使用和维护对象的主要问题是对象之间的多重依赖性。对象之间的耦合越高,维护成本越高。因此对象的设计应使类和构件之间的耦合最小. 耦合性是程序结构中各个...
  • 模块间的耦合

    千次阅读 热门讨论 2016-11-08 21:30:20
    耦合性(Coupling),也叫耦合度,是对模块间关联程度的度量。 耦合的强弱取决于 1.模块间接口的复杂 2.调用模块的方式 3.通过界面传送数据的多少。 模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用...
  • 降低耦合度

    千次阅读 2013-04-20 09:58:25
    耦合度就是某模块(类)与其它模块(类)之间的关联、感知和依赖的程度,是衡量代码独立性的一个指标,也是软件工程设计及编码质量评价的一个标准。耦合的强度依赖于以下几个因素:(1)一个模块对另一个模块的调用...
  • 耦合度介绍

    千次阅读 2005-11-21 14:46:00
    软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准。划分摸块的一个准则就是高内聚低耦合。耦合度是指模块之间联系的紧密程度。模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数据传递...
  • 之前的项目,总是把项目所有的“typeAlias”放到一个mybatis.xml文件中,所造成的原因很明显,整个项目耦合度非常高。 本人一直很懒,也不想研究解决办法,随着时间的推移,项目越来越庞大,模块越来越多,所以也就...
  • 模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数据传递关系。模块间联系越多,其耦合性越强,同时表明其独立性越差( 降低耦合性,可以提高其独立性)。 软件设计中通常用耦合度和内聚度作为衡量...
  • 模块耦合

    千次阅读 2017-10-29 20:49:35
    它取决于各个模块之间接口的复杂度、调用模块的方式以及哪些信息通过接口,构成耦合性的七种类型 耦合类型 描述 定义 对修改的敏感 可重用性 可修改性 可理解性 非直接耦合 没有直接...
  • 模块独立性与高内聚低耦合

    千次阅读 2013-09-23 09:29:13
    模块耦合度越高模块独立性越低 模块内聚度越高模块独立性越高   高内聚,低偶合  耦合性也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的...
  • 正因为这样,导致了这两个模块间的耦合度变高,一个模块改变,另一个也得跟着改变,例如敌人降低HP的方法名称不是reduceHP()了,那主角模块也得相应变化。模块间必定得有交互的,那么如何降低模块间的耦合度呢?来看...
  • 什么是耦合度

    万次阅读 2014-05-25 21:25:07
    简单地说,软件工程中对象之间的耦合度就是对象之间的依赖性。指导使用和维护对象的主要问题是对象之间的多重依赖性。对象之间的耦合越高,维护成本越高。因此对象的设计应使类和构件之间的耦合最小。 有软硬件...
  • 内聚度和耦合度

    2016-11-25 18:58:07
    内聚度和耦合度 一、联系 当个程序段或语句(指令) 引用了其它程序段或语句(指令)中所定义或使用的数据名(即存贮区、地址等)或代码时,他们之间就发生了联系。一个程序被划分为若干模块时,联系既可存在 ...
  • 在结构化设计中,模块是设计的最小单位,模块之间的关联程度,用耦合度来表示。模块之间的耦合度越高,模块的独立性就越差,后期的维护成本也就越高。因此,在程序设计过程中,我们追求的是低耦合度耦合度从低到...
  • 耦合度定义 耦合度(Coupling)是对模块间关联程度的度量。耦合的强弱取决与模块间接口的复杂性、调用模块的方式以及... 降低模块间的耦合度能减少模块间的影响,防止对某一模块修改所引起的“牵一发动全身”的水...
  • 内聚度 Cohesion 耦合度 Coupling "Coupling" describes the relationships between modules, and ...耦合性(Coupling),也叫耦合度,是对模块间关联程度的度量 内聚度(Cohesion),一个模块内部各成分彼此结...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,558
精华内容 1,423
关键字:

模块耦合度