6.6 软件设计(模块化与内聚耦合)

2026-11-03 11:14:00上一篇 / 下一篇

本篇定位:软件设计(概要/详细设计 + 模块化)是软工必考大户——9 年直接命中 11 题(2018 单41/42、2019 单43/多86、2021 单44/多88、2022 单34、2023 单30、2024 单44、2025 单32),其中内聚/耦合 7 级是软工最经典的背诵点。考点:高内聚低耦合铁律、内聚 7 级(弱→强)、耦合 7 级(弱→强)、概要 vs 详细设计、程序质量评审。核心能力:内聚耦合两张 7 级表背熟 + 高内聚低耦合判定。 数据依据:01-真题/真题文本/ + 01-真题/考点汇总/ + 05-笔记/软件工程-模块总纲.md;答案以专业判断为准。 阅读提示:模块化设计与 2.4 程序设计(函数/类)、4.4 数据库设计(物理设计)衔接;信息隐蔽与 7.3 最小权限思想呼应。


一、考点定位(本章真题统计)

考点真题锚点频次考法
高内聚低耦合2018 单41、2021 单442 年模块划分准则
内聚 7 级2025 单321 年通信内聚判定
耦合 7 级2019 单43、2022 单342 年内容耦合判定(最强)
概要 vs 详细设计2023 单30、2019 多862 年概要设计不含伪代码;详细设计含算法
信息隐蔽2021 多881 年模块设计成黑箱
设计原则2025 单291 年变换模块(读取→处理→输出)
程序质量评审2024 单441 年模块结构评审含哪三项(不含数据结构)

命题规律:设计题考"模块划分准则(高内聚低耦合)+ 内聚/耦合等级判定"。2027 预测 1–2 题:内聚/耦合判定、模块化原则。核心能力:内聚 7 级与耦合 7 级张口就来(两级表)+ 经典例子(通信内聚、内容耦合)。


二、知识框架(先搭骨架)

软件设计两阶段
├── 概要设计(结构设计)
│   ├── 模块划分、模块间接口、数据结构、全局结构
│   ├── ❌ 不写伪代码/算法细节(2023 单30——那是详细设计)
│   └── 产物:模块结构图(层次图)
└── 详细设计(过程设计)
    ├── 每个模块内部的算法、数据结构、物理数据库(2019 多86)
    └── 工具:程序流程图、N-S 图、PAD 图、伪代码

模块化设计核心
├── 准则:高内聚、低耦合(2018 单41、2021 单44)
├── 信息隐蔽:模块设计成黑箱、只露接口(2021 多88)
└── 模块类型(2025 单29):传入/传出/变换/协调

内聚(模块内部,由弱到强 7 级)——2025 单32
偶然 < 逻辑 < 时间 < 过程 < 通信 < 顺序 < 功能
├── 通信内聚:模块内元素共用同一数据集/数据区(2025 单32)
└── 功能内聚:一个模块只完成一个功能(最强、最理想)

耦合(模块之间,由弱到强 7 级)——2022 单34
非直接 < 数据 < 标记 < 控制 < 外部 < 公共 < 内容
├── 数据耦合:只传递数据(最理想)
├── 公共耦合:共享全局数据
└── 内容耦合:直接使用对方内部数据/非正常入口(最强、最差)(2022 单34)

程序质量评审(2024 单44)——开发者角度的"程序本身"评审,各项并列
├── 模块结构:控制流结构 + 数据流结构 + 模块结构与功能结构的对应关系 ← 只有这三条
├── 数据结构:模块内部/全局数据的组织(不属模块结构)
└── 其他:功能的通用性、模块接口、程序的编写质量(注释/可读性)

一句话记忆:设计两阶段(概要管结构、详细管内部);高内聚低耦合是铁律;内聚由弱到强"偶逻时过通顺功"、耦合由弱到强"非数标控外公内"。


三、考点详解

3.1 概要设计 vs 详细设计(2023 单30、2019 多86)

精确定义:

  • 概要设计(结构设计):确定系统的模块结构——模块划分、模块间接口、全局数据结构;不涉及每个模块内部怎么做;
  • 详细设计(过程设计):确定每个模块内部的实现——算法、数据结构、物理数据库(2019 多86)。

2023 单30(选"不属于概要设计"):伪代码不属于概要设计——伪代码/流程图是详细设计工具;概要设计产物是模块结构图/层次图。

口诀:概要=外面看结构(模块+接口)、详细=里面看实现(算法+数据)。

3.2 高内聚、低耦合(2018 单41、2021 单44,必考)

精确定义:

  • 内聚:模块内部各元素结合的紧密程度——越高越好(一个模块专心做一件事);
  • 耦合:模块之间的相互依赖程度——越低越好(模块尽量独立)。

模块划分准则(2018 单41、2021 单44):高内聚、低耦合。

口诀:内部要抱团(高内聚)、外部要独立(低耦合)。

3.3 内聚 7 级(2025 单32)

内聚由弱到强:偶然 < 逻辑 < 时间 < 过程 < 通信 < 顺序 < 功能

级别含义
偶然内聚元素间无关联(凑在一起)
逻辑内聚逻辑上相关(都做"输入"类操作)
时间内聚同一时间执行(初始化模块)
过程内聚按处理流程相关
通信内聚共用同一数据集/数据区(2025 单32)
顺序内聚前一个输出是后一个输入
功能内聚只完成一个功能(最强、最理想)

2025 单32(选 B/通信内聚):某模块实现"写数据 + 读数据"两个功能 → 通信内聚(两功能共用同一数据区)。

口诀:功能内聚最理想、通信内聚共数据。

3.4 耦合 7 级(2019 单43、2022 单34)

耦合由弱到强:非直接 < 数据 < 标记 < 控制 < 外部 < 公共 < 内容

级别含义
非直接耦合模块间无直接关系
数据耦合只传递数据参数(最理想)
标记耦合传递数据结构
控制耦合传递控制信号(开关量)
外部耦合依赖外部约定
公共耦合共享全局数据
内容耦合直接使用另一模块内部数据或经非正常入口转入(最强、最差)

2022 单34(选 D):内容耦合=一个模块直接使用另一模块内部数据、或通过非正常入口转入另一模块内部。

口诀:数据耦合最好、内容耦合最糟;耦合越强越要避免。

3.5 信息隐蔽(2021 多88)

精确定义:信息隐蔽 = 把模块的实现细节(内部数据、算法)封装在模块内部,外部只通过接口访问——模块设计成"黑箱"。

好处:修改内部实现不影响外部调用(降低耦合、便于维护)。

口诀:信息隐蔽=黑箱,只露接口。

3.6 模块类型(2025 单29)

2025 单29(选变换模块):模块 B 从 A 读取成绩、计算后返回 → 变换模块(读入→变换→输出)。

  • 模块四类型:传入模块(只接收)、传出模块(只输出)、变换模块(读入+处理+传出)、协调模块(控制调度)。

3.7 程序质量评审:模块结构评什么(2024 单44)

背景一句话:程序质量评审是从开发者角度对程序本身做的评审(区别于"软件质量保证"对过程的监控)。评审内容是几张并列的清单,其中一张叫模块结构。

模块结构评审只有三条(必背):

#评什么人话
1控制流结构模块之间怎么调用、怎么返回、调用层次深不深
2数据流结构模块之间传什么数据、传多少、参数是否必要
3模块结构与功能结构之间的对应关系模块划分对不对得上功能划分(功能的一对一/一对多是否合理)

并列的其他评审项(不在这三条里):数据结构(模块内部/全局数据怎么组织、是否抽象与信息隐蔽)、功能的通用性、模块的接口、程序的编写质量(注释/可读性)等。

判据一句话:模块结构管"模块之间",数据结构管"模块内部" ——问"模块结构评什么",只答控制流结构、数据流结构、与功能结构的对应关系,三条。

⚠️ 2024 单44 的坑(常见误选 D):题干问"模块结构评审内容中不包括"——B/C/D 三个选项是教材原文的三条子项(恰恰都包括),只有 A 数据结构是并列的另一张清单 → 答案 A。常见误选判 D,其解析把"数据结构"塞进模块结构、把并列项当子项,自相矛盾。本书判断见 附录 F 第 15 条。


四、易错坑汇总(命题人惯用陷阱)

  1. 内容耦合是最强耦合(2022 单34)——"数据耦合最强"错误(数据耦合最弱级、最理想);内容耦合最差。
  2. 功能内聚最强(2025 单32 背景)——"偶然内聚最强"错误(最弱);功能内聚=一个模块一个功能。
  3. 高内聚低耦合是铁律(2018 单41、2021 单44)——"低内聚高耦合好"错误(正相反)。
  4. 概要设计不含伪代码(2023 单30)——"伪代码是概要设计工具"错误(伪代码属详细设计)。
  5. 算法/物理数据库=详细设计(2019 多86)——"物理数据库是概要设计"错误。
  6. 通信内聚共数据(2025 单32)——"读+写两个功能是逻辑内聚"错误(共用数据区=通信内聚)。
  7. 尽量少用全局变量——"模块设计要多用全局变量"错误(全局变量=公共耦合,应避免)。
  8. 信息隐蔽=黑箱——"信息隐蔽=对外公开全部实现"错误(正好相反)。
  9. "不包括"题用"三同一异"判(2024 单44)——三个选项都是教材原文子项(同族)、一个是并列项(异类)→ 选异类。本题数据结构不属于模块结构(属并列的数据结构评审项),常见误选误判 D。
  10. 程序质量评审 ≠ 软件质量保证——前者评程序的产物(从开发者角度),后者监控开发过程(2024 单43 同族考点,见 6.7)。

五、横向扩展(防漏网:本章边界内、真题尚未考但可能补考的点)

说明:横向扩展覆盖"大纲范围内但 9 年真题未考过"的知识,标注【新增概率】供取舍。

  1. 内聚/耦合等级判定变体【高】:给模块描述判内聚/耦合等级(2025 单32、2022 单34 同族)——2027 高概率。
  2. 模块结构图(层次图)【中】:画模块间调用关系——与概要设计衔接。
  3. 程序流程图/N-S 图/PAD 图【中】:详细设计工具——名词辨析(伪代码已考,工具名可能补考)。
  4. 面向对象设计(OOD)原则【中】:单一职责/开闭/里氏替换(SOLID)——与 OOA 衔接。
  5. 设计模式【低】:单例/工厂/观察者——名词题(金融科技题偶尔出现)。
  6. 扇入扇出【低】:模块被调用数/调用其他模块数——结构图度量。
  7. 控制耦合的典型场景【低】:传递标志参数——名词题。
  8. 数据库物理设计(索引/存储结构)【中】:与 4.4/4.6 数据库设计与优化衔接。
  9. 程序质量评审的其他项【中】:功能的通用性、模块接口、程序的编写质量(注释/可读性)、数据结构评审——与 2024 单44 同族,可能换"包括"方向再考一次。

六、真题演练(代表性真题 + 解析)

例 1(2018 单41) 软件设计中划分模块的一个准则是(口径已核)。 A. 高内聚低耦合 B. 低内聚高耦合 C. 高内聚高耦合 D. 低内聚低耦合

答案:A。模块划分准则=高内聚、低耦合。口诀:内部抱团、外部独立。

例 2(2022 单34) 内容耦合是指(口径已核)。 A. 两个模块共享全局变量 B. 两个模块之间传递数据参数 C. 一个模块控制另一个模块的流程 D. 一个模块直接使用另一模块内部数据或经非正常入口转入

答案:D。内容耦合=直接使用对方内部数据/非正常入口(最强耦合);共享全局变量是公共耦合(A)、传数据是数据耦合(B)、控制流程是控制耦合(C)。口诀:内容耦合=抄人家内部。

例 3(2025 单32) 某模块实现"写数据 + 读数据"两个功能,该模块的内聚类型是(口径已核)。 A. 逻辑内聚 B. 通信内聚 C. 顺序内聚 D. 功能内聚

答案:B。读+写共用同一数据区 = 通信内聚;功能内聚是只做一个功能。口诀:共数据=通信内聚。

例 4(2023 单30) 下列(口径已核)不属于概要设计的任务。 A. 模块划分 B. 模块间接口设计 C. 伪代码编写 D. 全局数据结构设计

答案:C。伪代码=详细设计工具;概要设计管模块/接口/全局结构。口诀:概要管结构、详细写伪码。

例 5(2021 多88) 软件工程的核心原则包括(口径已核)。(6.1 已详,此处复习) A. 抽象 B. 模块化 C. 信息隐蔽 D. 自底向上

答案:ABC。抽象/模块化/信息隐蔽是核心;自底向上错误。信息隐蔽=模块黑箱化。口诀:抽象模块隐蔽。

例 6(2025 单29) 模块 B 从 A 读取成绩、计算后返回,该模块属于(口径已核)。 A. 传入模块 B. 传出模块 C. 变换模块 D. 协调模块

答案:C。读入→处理→输出 = 变换模块;只读入=传入、只输出=传出、调度=协调。口诀:读算写=变换。

例 7(2024 单44·本书改判) 在对程序质量进行评审时,模块结构是一个重要的评审项,评审内容中不包括(口径已核)。 A. 数据结构 B. 数据流结构 C. 控制流结构 D. 模块结构与功能结构之间的对应关系

答案:A。模块结构评审=控制流结构 + 数据流结构 + 模块结构与功能结构之间的对应关系三条(B/C/D 是教材原话);数据结构是并列的另一评审项(模块内部/全局数据的组织),不属"模块结构"。常见误选判 D,其解析把并列项当子项,与教材自相矛盾——见 附录 F 第 15 条。口诀:模块结构管"之间"、数据结构管"内部"。


七、本章小结

  • 一条主线:概要设计(结构)vs 详细设计(内部)→ 高内聚低耦合铁律 → 内聚 7 级(偶逻时过通顺功)→ 耦合 7 级(非数标控外公内)→ 信息隐蔽(黑箱)→ 模块四类型 → 程序质量评审(模块结构评三条)。
  • 必背判定:内容耦合=用对方内部(2022 单34);通信内聚=共数据(2025 单32);伪代码=详细设计(2023 单30);高内聚低耦合(2018 单41、2021 单44);模块结构评控制流/数据流/与功能结构的对应,不含数据结构(2024 单44,本书改判 A)。
  • 衔接预告:模块/接口设计→6.7 测试(集成测试验证模块接口);物理数据库→4.4;OOD 原则→6.4 OOA。