第 20 章:软件工程¶
来源:课程视频目录与《20.软件工程》思维导图 PDF。用于在 Obsidian 的 Markmap 插件中渲染。
| 项目 | 数值 |
|---|---|
| 视频小节 | 6 |
| 总时长 | 01:31:49 |
---
markmap:
height: 760
initialExpandLevel: 2
maxWidth: 320
spacingHorizontal: 90
spacingVertical: 12
nodeMinHeight: 24
paddingX: 10
---
# 20. 软件工程(6节 / 01:31:49)
## 软件工程定义
- 以工程化原则和方法解决软件问题
- 目标:提高生产率和质量、降低成本
- 三部分:方法、工具、过程
## 20.1 软件需求(19:49)
### 需求基础
- 层次:业务需求、用户需求、系统需求
- QFD:常规需求、期望需求、意外需求
- 获取方法:访谈、问卷、采样、情节串联板、联合需求计划
- 好需求:无二义、完整、一致、可测试、确定、可跟踪、正确、必要
### 需求分析
- 结构化分析 SA
- 数据模型:E-R 图
- 功能模型:数据流图 DFD
- 行为模型:状态转换图 STD
- 基础资料:数据字典
- 面向对象分析 OOA:用例模型、分析模型
- SRS:需求分析最终成果,包括范围、需求、合格性、追踪性等
### 需求管理
- 变更过程:问题分析与描述 → 变更分析与成本计算 → 变更实现
- CCB:变更决策机构,不负责提出变更方案
- 正向跟踪:需求能否在后续成果找到对应点
- 逆向跟踪:设计、代码、测试能否追溯到需求
## 20.2 软件设计(33:53)
### 结构化设计
- 以 DFD 和数据字典为基础,自顶向下、逐层分解、逐步求精
- 原则:高内聚、低耦合
- 工具:系统结构图 SC
### 面向对象设计
- 思想:抽象、封装;以继承和多态实现可扩展
- SOLID 等原则:单一职责、开闭、里氏替换、依赖倒置、接口隔离
- 补充:组合复用、迪米特法则
- 类:实体类、控制类、边界类
### UML
- 事物:结构、行为、分组、注释
- 关系:依赖、关联、泛化、实现
- 结构图:类、对象、构件、组合结构、部署、制品、包
- 行为图:用例、顺序、通信、定时、状态、活动、交互概览
- 4+1 视图:逻辑、进程、实现、部署、用例
### 设计模式
- 要素:名称、问题、目的、解决方案、效果、实例、相关模式
- 范围:类模式、对象模式
- 用途:创建型、结构型、行为型
## 20.3 软件实现(16:29)
- 配置管理:计划、标识、控制、状态记录、审计、发布与交付
- 编码:语言选择;源程序文档化、数据说明、语句结构、I/O 风格
- 效率:程序、算法、存储、I/O
### 软件测试
- 静态测试:检查单、桌前检查、代码走查、代码审查
- 动态测试:黑盒测试、白盒测试
- 类型:单元、集成、确认、系统、配置项、回归测试
- 调试策略:蛮力法、回溯法、原因排除法
## 20.4 部署交付(08:29)
- 部署:配置、安装、激活,保障产品运行
- 交付:提交、集成、构建、部署、测试等发布前活动
- 持续交付:代码可快速、安全、自动化部署到生产环境
- 方案:Kubernetes + Docker、Matrix
- 部署原则:统一存储库/方式/脚本、检查点与回滚、流水线变更生产环境
- 策略:不可变服务器、蓝绿部署、金丝雀部署
- 镜像层次:Build → Ship → Run
## 20.5 软件质量管理(04:56)
- 软件质量:满足明确或隐含需求的能力特性总和
- 管理过程:质量保证、验证与确认、评审与审计
- 常见质量特性:功能性、可靠性、易用性、效率、维护性、可移植性
## 20.6 软件过程能力成熟度(08:13)
- CMMI 表示法:阶段式、连续式
- 成熟度等级:初始级、已管理级、已定义级、量化管理级、优化级
- 连续式能力等级:不完整、已执行、已管理、已定义、量化管理、优化