📖 3.1 结构化设计概述
章节核心逻辑总览
🖥️ 章节逻辑架构图
结构化设计(Structured Design, SD)是软件工程经典结构化开发方法的核心环节,承接结构化分析(SA)的需求成果,衔接后续结构化编程(SP)的实现环节,核心目标是将“做什么”的需求逻辑,转化为“怎么做”的、可落地的模块化软件结构方案。
📌 本节学习目标
- 明确结构化设计的核心任务与阶段划分
- 掌握4项核心设计原则与底层逻辑
- 吃透高内聚、低耦合的核心评价标准
- 能独立完成结构化设计7步标准化流程落地
3.1.1 结构化设计的任务 核心工作
设计阶段总览
结构化设计分为总体设计(概要设计)和详细设计两大递进阶段,核心是完成从需求到可编码方案的转化,全流程任务拆解如下:
🖥️ 设计任务时间线
核心任务明细表格
| 任务名称 | 归属阶段 | 核心动作 | 输出成果 | 核心目标 |
|---|---|---|---|---|
| 体系结构设计 | 总体设计 | 自顶向下功能分解,拆分层次化模块,定义模块调用与依赖关系 | 模块结构图(MSD) | 搭建软件系统整体骨架,完成核心功能拆解 |
| 接口设计 | 总体设计 | 定义模块间、系统与外部的交互规则、数据传递格式与异常处理规则 | 接口规格说明书 | 保障模块协同顺畅,支撑信息隐藏原则落地 |
| 数据设计 | 总体设计 | 基于数据字典完成数据结构、文件结构、数据库逻辑设计 | 数据字典、ER图、数据库设计文档 | 保障全系统数据一致性与可用性 |
| 过程设计 | 详细设计 | 细化底层模块内部算法、执行流程、判断与循环逻辑 | 流程图、N-S图、伪代码 | 输出可直接转化为代码的实现逻辑 |
| 设计评审与优化 | 全阶段 | 验证需求覆盖率、模块独立性,迭代优化设计方案 | 软件设计说明书、评审报告 | 锁定设计基线,降低后续开发与维护成本 |
3.1.2 结构化设计的原则 设计准则
四大原则核心逻辑
所有设计原则最终服务于高内聚、低耦合的核心目标,原则间的逻辑关系如下:
🖥️ 设计原则逻辑关系图
原则明细与落地要求
自顶向下、逐步求精原则
- ✅ 核心定义:从系统顶层总目标出发,逐层向下分解,将复杂大功能拆分为简单子功能,直至模块可直接编码实现
- 📌 设计动作:先定整体框架,再细化每层功能,最后落地模块细节
- ⚠️ 避坑提示:禁止自底向上拼凑模块,避免出现整体结构混乱的问题
模块化原则
- ✅ 核心定义:将系统拆分为多个相对独立、功能单一、可单独验证的模块,通过模块组合实现系统完整功能
- 📌 设计动作:一个模块只负责一项明确的子功能,拆分粒度可控
- ⚠️ 避坑提示:禁止模块功能重叠、职责模糊,避免出现“万能模块”
抽象与信息隐藏原则
- ✅ 核心定义:
- 抽象:忽略非本质细节,只对外暴露模块核心功能与接口,聚焦“模块能做什么”
- 信息隐藏:模块内部实现逻辑、数据结构对外部完全隐藏,仅通过标准接口访问
- 📌 设计动作:接口定义清晰稳定,内部实现可自由迭代
- ⚠️ 避坑提示:禁止外部模块直接操作模块内部数据,避免出现强耦合
- ✅ 核心定义:
高内聚、低耦合原则
- ✅ 核心定义:提升模块内部元素的关联紧密程度(高内聚),降低模块间的依赖关联程度(低耦合)
- 📌 设计动作:模块拆分与重组均以该原则为唯一评价标准
- ⚠️ 避坑提示:禁止为了拆分而拆分,牺牲模块独立性
⚠️ 重要提示
高内聚、低耦合是结构化设计的终极评价标准,直接决定软件的可维护性、可复用性与可靠性,贯穿设计全流程。
3.1.3 模块的独立性 核心指标
模块独立性核心逻辑
模块独立性是结构化设计的核心评价指标,指模块内部功能完整、逻辑自洽,同时与外部模块的关联与依赖尽可能弱的特性,其核心构成与价值如下:
🖥️ 模块独立性价值逻辑图
1. 耦合:模块间依赖程度衡量
耦合度从低到高分为7个等级,耦合度越低,模块独立性越强,设计要求与分级明细如下:
| 耦合等级(低→高) | 核心定义 | 设计规范 |
|---|---|---|
| 无直接耦合 | 两模块无任何直接关联,互不调用、不传参 | 理想状态 无强制要求 |
| 数据耦合 | 模块间仅通过参数传递简单基本类型数据 | 推荐优先使用 最优低耦合方案 |
| 标记耦合 | 模块间传递复合数据结构(结构体/对象),仅使用部分字段 | 可合理使用 控制数据结构复杂度 |
| 控制耦合 | 模块间传递控制信号,一个模块决定另一个模块的执行逻辑 | 尽量避免 增强逻辑依赖 |
| 外部耦合 | 多个模块依赖同一个外部环境(全局变量/外部文件/硬件) | 严格限制 控制使用范围 |
| 公共耦合 | 多个模块访问同一个公共数据环境(全局数据区/共享内存) | 尽量避免 易导致错误扩散 |
| 内容耦合 | 一个模块直接修改/访问另一个模块的内部数据/代码 | 严格禁止 完全破坏模块独立性 |
2. 内聚:模块内关联程度衡量
内聚度从高到低分为7个等级,内聚度越高,模块功能专一性越强,模块独立性越好,设计要求与分级明细如下:
| 内聚等级(高→低) | 核心定义 | 设计规范 |
|---|---|---|
| 功能内聚 | 模块内所有元素共同完成一个且仅一个明确业务功能,缺一不可 | 最优选择 设计优先追求 |
| 顺序内聚 | 模块内处理元素与同一功能相关,必须按固定顺序执行,前序输出是后序输入 | 高质量内聚 可正常使用 |
| 通信内聚 | 模块内所有处理元素,都在同一数据结构上操作,或使用相同输入/输出数据 | 中等内聚 可合理使用 |
| 过程内聚 | 模块内处理元素仅按特定流程顺序执行,无统一功能目标 | 低质量内聚 尽量避免 |
| 时间内聚 | 模块内功能仅因同一时间段执行组合在一起(如初始化模块) | 低内聚 限制使用场景 |
| 逻辑内聚 | 模块内功能仅因逻辑相似组合在一起(如一个模块处理所有报表打印) | 极差内聚 尽量避免 |
| 偶然内聚 | 模块内元素无任何逻辑关联,仅随意拼凑在一起 | 完全禁止 彻底破坏功能完整性 |
3.1.4 结构化设计的步骤 流程步骤
全流程执行总览
结构化设计是标准化的流程化方法,核心是将数据流图(DFD)转化为模块结构图(MSD),7步递进流程如下:
🖥️ 结构化设计7步流程图
每步核心执行明细
| 步骤序号 | 核心输入 | 核心动作 | 核心输出 |
|---|---|---|---|
| 步骤1 | 结构化分析成果(DFD、数据字典、需求规格说明书) | 复审需求完整性、准确性,明确系统功能边界与数据流转规则 | 需求确认文档、设计边界说明书 |
| 步骤2 | 确认后的数据流图(DFD) | 判定DFD类型,分为变换流和事务流两类 | DFD类型判定报告 |
| 步骤3 | 分类后的DFD | 对应映射方法完成初始模块结构生成: • 变换流→变换分析法 • 事务流→事务分析法 | 初始模块结构图(MSD) |
| 步骤4 | 初始模块结构图 | 基于高内聚低耦合准则优化:调整模块粒度、降低耦合、提升内聚、优化扇入扇出 | 优化后的模块结构图 |
| 步骤5 | 优化后的模块结构、数据字典 | 细化模块接口定义,完成核心数据结构、数据库表结构设计 | 接口设计文档、数据设计文档 |
| 步骤6 | 底层原子模块清单 | 设计模块内部算法、执行流程、异常处理逻辑,完成过程设计 | 流程图、伪代码、详细设计说明书 |
| 步骤7 | 全量设计成果 | 整理标准化设计文档,组织跨角色评审,迭代优化后锁定设计基线 | 软件设计说明书、评审通过报告 |
核心映射规则:变换流 vs 事务流
🖥️ 数据流类型对比图
📝 本节总结
结构化设计以模块化、自顶向下、高内聚低耦合为核心,承接需求分析成果,通过标准化流程输出可落地的模块结构方案。它是软件工程传统设计方法的核心框架,其核心设计思想至今仍为现代软件开发提供基础指导。
习题 综合难度
- 简述结构化设计的两大核心阶段,以及各阶段的核心任务。
答案与解析
结构化设计分为总体设计(概要设计)和详细设计两大核心阶段:① 总体设计:核心任务是完成系统体系结构设计,通过自顶向下的功能分解搭建软件整体模块骨架,同步完成接口设计与数据设计,确定模块间的调用与依赖关系。② 详细设计:核心任务是完成过程设计,为每个底层原子模块设计内部算法、执行流程、逻辑细节,输出可直接用于编码的实现方案。
- 请写出结构化设计的四大核心原则。
答案与解析
结构化设计的四大核心原则为:
① 自顶向下、逐步求精原则;
② 模块化原则;
③ 抽象与信息隐藏原则;
④ 高内聚、低耦合原则。
- 什么是模块的独立性?衡量模块独立性的两大核心维度是什么?
答案与解析
模块独立性指模块内部功能完整、逻辑自洽,同时模块与外部模块的关联、依赖尽可能弱的特性,是结构化设计的核心评价指标。
衡量模块独立性的两大核心维度为:
① 耦合:衡量模块之间相互关联、依赖的紧密程度;
② 内聚:衡量模块内部所有元素之间逻辑关联的紧密程度。
📚 拓展阅读
- 经典著作:《结构化设计》Edward Yourdon / Larry L. Constantine
- 拓展知识:结构化分析(SA)-结构化设计(SD)-结构化编程(SP)全流程方法
- 实操案例:管理信息系统的结构化设计完整落地案例