考点频率★★★★★上午题必考下午题偶尔结合考查难度⭐⭐⭐建议重点掌握七种耦合的强弱排序、七种内聚的强弱排序以及各自的典型场景1️⃣ 什么是模块独立性模块独立是指每个模块完成一个相对独立的特定子功能并且与其他模块之间的联系简单。通俗地说各干各的活互相少打扰。一个模块越独立它就越容易被理解、测试、修改和复用。如果模块之间纠缠不清改一个地方就要改一片——这就是软件工程里常说的“牵一发动全身”。衡量模块独立程度有两个定性标准耦合和内聚。设计目标高内聚、低耦合——模块内部要“抱得紧”模块之间要“离得远”。2️⃣ 耦合Coupling模块之间的“关系”耦合是模块之间互相连接的紧密程度的度量。耦合度越高模块独立性越差。耦合的强弱取决于三个因素模块之间接口的复杂程度调用模块的方式通过接口传递的信息类型耦合的七种类型从低到高排列等级耦合类型说明典型场景最低无直接耦合两个模块之间没有直接关系不传递任何信息两个独立工具函数互不调用↓数据耦合传递的是简单数据值相当于值传递调用calculate(a, b)传递两个整数↓标记耦合传递的是数据结构如整个对象或结构体传递一个User对象给另一个模块↓控制耦合传递的是控制变量被调用模块根据该变量选择执行哪个功能传入actionType1让模块决定执行A还是B↓外部耦合模块通过软件之外的环境联结如I/O设备、通信协议多个模块读写同一个配置文件↓公共耦合通过公共数据环境如全局变量、共享内存相互作用多个模块直接读写同一个全局数组最高内容耦合一个模块直接使用另一个模块的内部数据或通过非正常入口进入模块A直接访问模块B的私有变量记忆顺口溜由高到低 → 由低到高反向记接 数 标 制 外 共 容从低到高无直接→数据→标记→控制→外部→公共→内容关键理解数据耦合和标记耦合的区别在于传递的是简单值还是数据结构控制耦合的特征是传递控制信息如标志位、命令码被调用模块根据它选择执行路径内容耦合是最差的耦合应当完全避免3️⃣ 内聚Cohesion模块内部的“团结”内聚是一个模块内部各个元素彼此结合的紧密程度的度量。内聚度越高模块独立性越强。一个内聚程度高的模块应当只做一件事。内聚的七种类型从低到高排列等级内聚类型说明典型场景最低偶然内聚巧合内聚模块内各处理元素之间没有任何联系把几个不相关的工具函数塞进一个“Utils”模块↓逻辑内聚执行若干个逻辑上相似的功能通过参数决定执行哪一个一个printReport(type)函数根据type打印不同报表↓时间内聚把需要同时执行的动作组合在一起系统启动时的初始化模块读配置、建连接、加载缓存↓过程内聚完成多个任务这些任务必须按指定的过程顺序执行一个模块按顺序执行“读文件→处理数据→写结果”↓通信内聚所有处理元素都在同一个数据结构上操作对同一张数据表进行增、删、改、查的模块↓顺序内聚各处理元素密切相关于同一功能且必须顺序执行前一元素的输出是下一元素的输入输入数据→校验数据→格式化数据→输出数据最高功能内聚所有元素共同作用完成一个功能缺一不可一个calculateTax(income)函数只做计算税额这一件事记忆顺口溜由弱到强偶 逻 时 过 通 顺 能关键理解过程内聚和顺序内聚容易混淆过程内聚强调执行顺序但各步骤之间不一定有数据传递关系顺序内聚强调数据流前一步的输出是后一步的输入功能内聚是最高级别的内聚是设计的理想目标4️⃣ 高内聚、低耦合模块设计的黄金法则耦合和内聚是同一枚硬币的两面模块内部联系越紧密 →内聚越高→ 模块独立性越强模块之间联系越少 →耦合越低→ 模块独立性越强为什么要追求高内聚、低耦合可读性强每个模块只做一件事容易理解易维护修改一个模块不影响其他模块易复用独立的模块可以在其他项目中直接使用易测试模块功能单一测试用例清晰5️⃣ 经典例题例题12019上·上午题已知模块A给模块B传递数据结构X则这两个模块的耦合类型为 。A. 数据耦合 B. 公共耦合 C. 外部耦合 D. 标记耦合解析传递的是数据结构非简单数据值→标记耦合。如果传递的是简单数据值才是数据耦合。答案D例题22019下·上午题某模块中各个处理元素都密切相关于同一功能且必须顺序执行前一元素的输出就是下一元素的输入则该模块的内聚类型为 。A. 过程内聚 B. 时间内聚 C. 顺序内聚 D. 逻辑内聚解析关键词是“前一元素的输出就是下一元素的输入”——这是顺序内聚的典型特征。过程内聚只强调执行顺序不强调数据传递关系。答案C例题3模块A直接访问模块B的内部数据则模块A和模块B的耦合类型为 。A. 数据耦合 B. 标记耦合 C. 公共耦合 D. 内容耦合解析直接使用另一个模块的内部数据 →内容耦合。这是耦合程度最高的类型应当完全避免。答案D6️⃣ 记忆口诀耦合看模块间内聚看模块内。耦合越低越好内聚越高越妙。七种耦合从低到高无数标制外公内。七种内聚从低到高偶逻时过通顺能。7️⃣ 小测验评论区对答案某系统中模块M1调用模块M2时传递了一个布尔值isValidM2根据该值决定执行校验通过后的处理逻辑还是错误处理逻辑。则M1和M2之间的耦合类型为 。A. 数据耦合B. 标记耦合C. 控制耦合D. 公共耦合本专栏日更点击头像 → 专栏《软考中级高频考点》订阅第一时间接收新内容#软考中级 #软件设计师 #耦合 #内聚 #模块独立性 #软件工程