首页 > 其他分享 >软件工程——内聚性和耦合性

软件工程——内聚性和耦合性

时间:2024-05-25 20:33:05浏览次数:17  
标签:标记 传递 软件工程 模块 内聚 耦合 内聚性 数据

一、耦合性

耦合性指软件结构中模块相互紧密连接的紧密程度。

耦合性由高到低分别为:内容耦合、公共耦合、外部耦合、控制耦合、标记耦合、数据耦合、非直接耦合。

1.内容耦合:

一个模块直接访问另一个模块的内部数据;

一个模块不通过正常入口转到另一模块的内部;

一个模块有多个入口;

两个模块有部分代码重叠。

内容耦合是程度最高的耦合,内容的非正常访问可能造成内容耦合

2.公共耦合:

若干模块访问一个公共的数据环境(全局数据结构、共享的通信区、内存的公共覆盖区等),耦合的复杂程度随耦合模块的数量的增加而显著增加。

3.外部耦合:

一组模块都访问同一公共变量(这里特指基本数据类型,而不是那种复杂的数据结构),而不是通过参数表达传递该全局变量的信息。

虽然。外部耦合和公共耦合都涉及到模块对公共资源的访问,但他们在访问资源类型、模块之间的关联度以及维护的复杂性上都有所区别。

4.控制耦合:

一个模块传递给另一模块的信息是用于控制该模块内部逻辑的控制信号。对被控制模块的任何修改,都会影响控制模块。

5.标记耦合:

当两个模块之间传递的是数据结构,比如高级语言的数组名、记录名、文件名等,这些名字就好像是标记一样,但实际上传递的是这个数据结构的地址。这种耦合方式需要模块之间共享这些标记或标识符,并且依赖于这些标记或标识符的具体实现。因此,标记耦合的模块之间耦合度较高,因为它们需要共享并理解这些标记的含义和作用。

6.数据耦合:

数据耦合是指两个模块之间通过参数传递数据来进行通信。这种耦合方式只需要模块之间共享数据,但并不依赖于数据的具体实现。也就是说,模块之间传递的是数据的值,而不是数据的地址或结构。因此,数据耦合的模块之间耦合度较低,因为它们只需要理解数据的含义和作用,而不需要关心数据的具体实现。这种耦合方式使得模块更加独立,易于重用和修改。

标记耦合和数据耦合的主要区别在于模块之间的通信方式不同,有些类似于引用传递和值传递。

7.非直接耦合:

两个模块间没有直接的关系,它们分别从属于不同模块的控制与调用,它们之间不传递任何信息。这种耦合程度最弱,模块的独立性最高。

二、内聚性

内聚性表示一个模块内部各个元素(数据、处理)之间的紧密程度。

内聚性由低到高分别为:巧合型内聚、逻辑型内聚、时间型内聚、过程型内聚、通信型内聚、顺序型内聚、功能型内聚。

1.巧合型:

又称为偶然型内聚,单纯为了节省空间,将毫无联系或联系不多的各元素放在一个模块中。模块元素关系松散,不易于理解和修改。

2.逻辑型:

将几个逻辑上相似的功能放在一个模块中,当模块被调用时,他会根据传送给他的参数来确定应该完成哪一个功能。

3.时间型:

把需要同属执行的成分放在一个模块中。

4.过程型:

一个模块内的处理元素是相关的,而且必须以特定的次序执行。

5.通信型:

模块中的成分引用的输入数据,或者产生相同的输出数据。

6.顺序型:

一个模块内的处理元素都密切相关于同一功能,模块中某个成分的输出是另一成分的输入。这类模块按顺序执行,模块的一部分依赖于另外一部分。

通信型内聚类似于并联关系,顺序型内聚类似于串联关系。

7.功能型:

一个模块包括且仅包括完成某一功能所必需的所有成分。即模块的所有成分都是为完成该功能而协同工作的、紧密联系、不可分割。

在编写模块时,要符合“高内聚、低耦合”的原则。

标签:标记,传递,软件工程,模块,内聚,耦合,内聚性,数据
From: https://blog.csdn.net/goldfish8848/article/details/139162577

相关文章

  • 软件工程作业
    1、说说你了解过、使用过什么编程语言?比较他们的优势(1)C语言上大学学的第一门语言,C语言语法简单、活性好,代码运行速度快,效率高,提供了对硬件的底层控制功能,适合系统编程和游戏开发,同时C语言资源利用率高,可扩展性强,应用十分广泛。(2)JavaJava是一门面向对象编程语言,功能强大和简......
  • Science| 单体耦合纤维实现无芯片纺织电子(纤维器件/智能织物/柔性可穿戴电子)
    东华大学HongzhiWang,ChengyiHou和QinghongZhang团队在《Science》上发布了一篇题为“Singlebody-coupledfiberenableschiplesstextileelectronics”的论文。论文内容如下:一、摘要        智能纺织品为将技术融入日常生活中提供了理想的平台。然而,目前的纺......
  • 软件工程日报026
     第26天第二天第三天第四天第五天所花时间(包括上课) 3h    代码量(行) 400    博客园(篇) 1    所学知识 vue的基本内容    ......
  • 对软件工程课程的希望和目标
    对于软件工程课程,我怀揣着许多希望和个人目标。以下是我对这门课程的具体期待:一、课程希望全面性与深度:我希望软件工程课程能够全面覆盖软件开发的各个环节,从需求分析、设计、编码、测试到维护,每一个阶段都能得到深入的探讨和实践。实战项目:我渴望在课程中参与真实的软件开发项......
  • 软件工程是不是教会不怎么会写程序的人开发软件?
    软件工程并不仅仅是为了教会不怎么会写程序的人开发软件,它实际上是一个更为广泛和深入的领域。首先,软件工程确实包含了编程这一核心技能,但它更多地是关注如何以系统化、规范化和可维护的方式来进行软件开发。它涵盖了从需求分析、设计、编码、测试到维护的整个开发过程,并强调团队......
  • 软件工程方法论对我们经软件开发有多大用处?谈谈你的看法
    软件工程方法论嘛,就像我们开发软件时的“导航仪”和“工具箱”。它给我们指明了方向,提供了方法和工具,让我们在软件开发这个复杂的旅程中少走弯路,提高效率。首先,软件工程方法论给我们提供了一套完整的开发流程。这个流程就像一张地图,告诉我们应该先做什么,后做什么,怎样确保每个环节......
  • 关于Fluent-EDEM耦合意外关闭后,恢复耦合的注意事项
    当Fluent-EDEM耦合过程中由于意外情况导致软件意外关闭,耦合中断的情况,可以通过读取fluent和EDEM的自动保存的数据文件恢复耦合,但直接读取自动保存的数据文件后,可能出现耦合失败、直接发散等问题下面是笔者学习到的可以解决上述问题的方法。打开fluent最新的自动保存的case文件和......
  • 软件工程1
    (1)对软件工程课程的希望及个人目标首先我想谈谈我对软件工程的简化理解,把“软件工程”拆开成两个部分,简单来说就是软件+工程。软件是软件工程的研究对象,也是软件工程的产品形态与客观存在;工程是将理论和知识应用于实践的科学,其目的是经济有效地解决实际问题。了解了软件工程是......
  • 软件工程与管理实验3
    实验3:编码规范本次实验内容是个人软件过程部分,通过本次实验,学生将掌握以下内容:1、建立自己的编码规范和代码审查表。2、会用COCOMOII模型对软件工作量进行估计。    [实验任务一]:COCOMOII软件的使用实验要求:通过自己看Manual,熟悉COCOMOII软件的使用;......
  • 滴滴网约车订单的开票,如何减少对订单的耦合?
    滴滴网约车订单的开发票页面,见下方移动端页面截图。业务操作大家应该都知道,勾选一笔或多笔订单,点击“下一步”进行开发票。 滴滴网约车日订单量有1千多万。在技术层面,如何设计,来让开票业务最大程度上减少对订单表的耦合呢? 先来回顾一下滴滴网约车订单大致的开票流程。......