当前位置: 首页 > news >正文

软件设计师-结构化分析方法-耦合

耦合类型

内容耦合​​ - ​​最差​

  • ​表现​​:一个模块直接修改或依赖于另一个模块的内部数据或实现细节(例如,直接操作另一个模块的内部变量)。

  • ​例子​​:模块A直接修改模块B内部的一个全局变量或私有成员变量。

  • ​违反原则​​:严重违反封装和信息隐藏原则。

​公共耦合​

  • ​表现​​:多个模块都依赖于同一个全局数据区(如全局变量、共享的数据库表)。

  • ​例子​​:多个类都直接读写同一个全局变量。修改这个全局变量的结构,所有依赖它的模块都可能需要调整。

  • ​问题​​:数据流向不清晰,难以追踪是谁在什么时候修改了数据。

​外部耦合​

  • ​表现​​:模块都依赖于同一个外部接口或协议(例如,都依赖同一个文件格式、硬件接口)。

  • ​例子​​:多个模块都需要按照特定格式读写同一个文件。如果文件格式改变,所有模块都受影响。

  • ​注意​​:这种耦合有时是不可避免的,但应将其限制在少数模块内。

​控制耦合​

  • ​表现​​:一个模块通过传递控制信号(如标志、开关参数)来影响另一个模块的内部逻辑。

  • ​例子​​:调用一个函数时,传入一个 isSorted参数,函数内部根据这个参数是 true还是 false执行完全不同的逻辑。

  • ​问题​​:被调用模块的行为不完全由自身决定,而是受调用者控制,增加了理解的复杂性。

​标记耦合​

  • ​表现​​:模块之间通过复杂的数据结构(如对象、结构体)进行交互,但可能只使用了该结构的一部分数据。

  • ​例子​​:函数A需要用户的名字,但函数B将一个完整的 User对象(包含名字、年龄、地址等)传给A。A只用了名字,但如果 User对象的结构改变,A也可能需要重新编译。

  • ​改进​​:应该只传递必需的数据(如只传名字字符串)。

​数据耦合​​ - ​​理想​

  • ​表现​​:模块之间通过参数传递必需的基本数据类型进行通信,没有上述各种复杂的依赖。

  • ​例子​​:函数A调用函数B,并传递两个整数作为参数。B返回一个计算结果。这是最理想的耦合方式。

  • ​特点​​:依赖关系清晰、简单。

记忆技巧

耦合类型

核心特征

形象比喻

代码示例

好坏程度

​内容耦合​

直接修改对方内部

闯进别人家乱翻抽屉

moduleA.privateVar = 10

🔴 最差

​公共耦合​

通过全局数据交互

多人共用一个公告板

多个模块读写同一个全局变量

🔴 很差

​外部耦合​

依赖相同外部环境

团队共用同一套工具

模块都依赖特定文件格式

🟡 较差

​控制耦合​

传递标志控制逻辑

遥控器指挥对方行动

process(data, isSorted=true)

🟡 中等

​标记耦合​

传递复杂数据结构

寄整个行李箱只为送钥匙

func(user)但只用 user.id

🟢 较好

​数据耦合​

只传必要基本数据

精准递送需要的东西

calculate(a, b)

🟢 最佳

2024年下半年

以下哪个不能提高软件可维护性()

A. 多利用硬件的特点

B. 完善模块内容

C. 模块间联系加强

D. 确认各阶段软件设计文档的正确性

答案:C错误

解析:因为模块间的联系加强,说明模块之间的耦合程度高了,对于软件维护是不利的

2021年上半年

模块A通过非正常入口转入模块B内部,则这两个模块之间是()耦合。

A. 数据

B. 公共

C. 外部

D. 内容

答案:D

分析:直接操作另一个模块的内部变量

2019年上半年

答案:D

分析:通过复杂的数据结构传递,就是标记耦合

2018年下半年

答案:A

分析:

  1. 分析传递的内容​​:采购子系统向财务子系统传递的是“采购金额、收款方和采购日期”。这些是具体的业务数据项(金额是数值,收款方和日期是基本信息),而不是控制信号或复杂数据结构。

  2. ​判断耦合类型​​:

    • 这些数据是财务子系统直接需要的,没有提到传递多余或不相关的数据。

    • 传递方式像是直接参数传递,而不是通过一个庞大的数据结构(如包含地址、电话等完整采购对象)。

    • 没有控制标志(如“是否审核”),也没有通过外部媒介(如文件或数据库)。

    • 因此,这符合​​数据耦合​​的特征:模块间只交换必要的基本数据,耦合度低。

  3. 为什么不是其他选项?
  • ​B. 标记耦合​​:如果传递的是整个采购订单对象(包含金额、收款方、日期等,但可能还有其他字段),而财务子系统只使用部分字段,才属于标记耦合。但题干强调传递的是具体信息(金额、收款方、日期),没有提到多余字段,因此更偏向数据耦合。

  • ​C. 控制耦合​​:如果传递的是控制信号(如“开始结算”、“取消操作”),才属于控制耦合。但这里传递的是业务数据,所以排除。

  • ​D. 外部耦合​​:如果数据通过全局变量或共享文件传递,才属于外部耦合。但题干没有提到外部介质,所以排除。

2018年上半年

答案:D错误

分析:

  • ​A. 调用模块的方式​​:会影响耦合程度(如直接调用耦合度高,间接调用耦合度低)。

  • ​B. 各个模块之间接口的复杂程度​​:接口越复杂,耦合度通常越高。

  • ​C. 通过接口的信息类型​​:会影响耦合类型(如传递数据耦合度低,传递控制信息耦合度高)。

  • ​D. 模块提供的功能数​​:这是模块内聚性的相关概念,不直接影响模块间的耦合程度。耦合程度只关心模块间的连接,而不关心模块内部有多少功能。

2017年下半年

答案:B

分析:传递数据结构,就是标记耦合

2016年上半年

答案:A

分析:多个模块都依赖于同一个全局数据区(如全局变量、共享的数据库表)。

2011年上半年

模块A之间访问模块B的内部结构,则模块A和模块B的耦合类型为()

A. 数据耦合

B. 标记耦合

C. 公共耦合

D. 内容耦合

答案:D

分析:一个模块直接修改或依赖于另一个模块的内部数据或实现细节(例如,直接操作另一个模块的内部变量)。是最差的耦合。

http://www.dtcms.com/a/520265.html

相关文章:

  • 响应式企业网站 下载网站制作是不是要先用ps做
  • 购买网站建设需要注意app软件开发制作公司电话
  • 【AI Agent】入门、学习、求职
  • C++中const与引用深度解析:从使用到底层原理
  • Product Hunt 每日热榜 | 2025-10-23
  • 【大话码游之 Observation 传说】上集:月光宝盒里的计数玄机
  • raid恢复之后数据库故障处理(ora-01200,ORA-26101,ORA-600)---惜分飞
  • 2025年中专机电一体化专业做什么工作?
  • JavaWeb 全栈学习路径:从工具到项目的实战蜕变指南
  • 中国工信备案查询网站做网站的软件电子
  • tailwindcss暗色主题切换
  • Classwork 5 - Check the HTML Tags
  • 15、【Ubuntu】【VSCode】VSCode 断联问题分析:UID 补充
  • 本地网站404错误德州网站怎样建设
  • 从被动防御到主动防护:雷池WAF+cpolar的安全实践
  • 网络营销咨询网站源码多平台网页制作
  • 广州在建火车站在哪里国内最好的危机公关公司
  • mysql锁整理
  • linux下java程序使用jprofiler进行压测
  • R语言随机森林分析显示R方和P值
  • 《Python爬虫 + 飞书自动化上传》全流程详细讲解
  • ELK——logstash
  • 图像进行拼接-后进行ocr检测识别
  • 登封网站设计wordpress终极简码
  • 网站服务器关闭建设网站需要的安全设备
  • STM32 RS422异步UART通信测试全方案C++软件开发,嵌入式软件开发,Linux
  • Qt笔记:的初次使用Qt-Advanced-Docking-System
  • 基于PyTorch和CuPy的GPU并行化遗传算法实现
  • Apollo Canbus模块技术深度解析
  • DeepSeek-OCR 嵌入dify工作流