title: 软件工程关键过程与设计
tags:
- module
- software-engineering
- design
- joplin
type: module
source_type: reconstructed
created: 2026-04-23
updated: 2026-04-23
---
软件工程关键过程与设计
[!abstract]
这一模块聚焦生命周期中最容易出题、也最容易决定项目质量的部分:需求分析、建模、结构化设计与模块划分。
模块结论
- 关键过程不是机械阶段名,而是一套从问题澄清到结构落地的转换链路。
- 需求分析的核心是把模糊需求转成结构化表达,比如 DFD、E-R 图、用例图。
- 设计阶段的核心不是“画图”,而是借由模块划分和接口组织控制复杂度。
- [[高内聚低耦合]] 是模块独立性的核心判断标准。
一、可行性研究
可行性研究在流程中的位置
- 它发生在需求细化之前。
- 如果可行性判断失误,后续需求和设计再精细也可能建立在错误前提上。
二、需求分析
- 核心任务:
- 明确功能需求
- 明确性能和约束要求
- 明确数据需求
- 确定系统边界和外部交互
常见建模工具
- 数据流图 DFD:描述数据如何流动、加工和存储。
- 数据字典:统一数据元素定义。
- E-R 图:描述实体、属性和联系,偏向数据库逻辑建模。
- 用例图:从参与者视角描述系统功能边界。
这些工具分别解决什么问题
- DFD 强调过程和流动。
- E-R 图强调数据结构。
- 用例图强调系统功能和使用者关系。
三、设计阶段
概要设计
- 决定系统结构、模块划分、接口关系和层次组织。
- 输出通常包括结构图、层次图、模块说明。
详细设计
- 落到具体算法、处理流程和数据结构细节。
- 常见表达包括流程图、PAD 图或伪代码。
四、模块化与独立性
- 模块化的目标是把复杂系统拆成可理解、可实现、可维护的部分。
- 理想状态是模块内部职责集中,对外依赖尽量简单稳定。
耦合
- 描述模块之间联系的紧密程度。
- 一般希望耦合尽量低。
- 常见次序可按从较优到较差理解为:数据耦合、控制耦合、公共耦合、内容耦合。
内聚
- 描述模块内部功能的一致性和集中程度。
- 一般希望内聚尽量高。
- 常见次序可按从较差到较优理解为:偶然内聚、逻辑内聚、时间内聚、功能内聚。
为什么强调高内聚低耦合
- 高内聚让模块职责清晰,更容易理解和修改。
- 低耦合让局部变更不至于牵连全局。
- 它本质上是在控制变化传播范围。
五、设计启发原则
- 模块规模适中,避免过大难维护或过碎难组织。
- 扇入扇出合理,避免一个模块依赖过多下层模块。
- 控制范围和作用范围尽量一致,减少隐藏副作用。
- 通过抽象和信息隐藏减少外部对内部实现细节的依赖。
六、易错点
- 需求分析不是把用户原话抄下来,而是把需求结构化、模型化。
- E-R 图和 DFD 解决的问题不同,不要混用。
- 高内聚低耦合不是口号,答题时要能说明它如何影响维护和扩展成本。
七、复习提问
- 可行性研究为什么不能跳过?
- DFD、E-R 图、用例图分别最适合描述什么?
- 为什么“模块独立性”会直接影响后续测试和维护难度?
来源
- [[raw/Joplin/计算机专业基础/软件工程/_软件工程考研复试终极整理版.md]]
- [[raw/Joplin/计算机专业基础/软件工程/3.软件工程——关键过程与工具.md]]
相关页面
- [[软件工程]]
- [[软件测试与维护]]
- [[高内聚低耦合]]