系统架构设计师备考站2027 上半年 · 通勤版 ⌕搜索
本页目录 · 5 节
  1. 一、知识框架
  2. 二、必背要点
  3. 2.1 软件工程与过程模型
  4. 2.2 需求工程
  5. 2.3 系统分析与设计
  6. 2.4 软件测试
  7. 2.5 净室软件工程
  8. 2.6 基于构件的软件工程
  9. 2.7 软件项目管理
  10. 三、易混淆概念对比
  11. 四、常见考法与出题角度
  12. 五、速记与自测

第 5 章 软件工程基础知识

对应大纲:科目 1-4 软件工程基础知识|教材 P175–P217|优先级 ★★★★★|综合知识估分 8~11 分
读法:本章三科通吃。抓两条主线——时间线(模型→阶段→里程碑)、产物线(需求→设计→代码→测试)。模型一律按「适用 + 缺点」两列背,案例题直接调用。


一、知识框架

软件工程基础知识
├─ 5.1 软件工程
│   ├─ 定义与三要素(方法、工具、过程)
│   ├─ 过程模型:瀑布|原型|螺旋|增量|迭代|V|喷泉
│   ├─ 敏捷:XP|Scrum|FDD|ASD|DSDM|Crystal
│   ├─ RUP:4 阶段 × 9 核心工作流
│   └─ 能力成熟度模型:CMM/CMMI 5 级
├─ 5.2 需求工程:获取|分析|定义(SRS)|验证|管理(变更/追踪/基线)
├─ 5.3 系统分析与设计:结构化(DFD/DD/ERD/判定表)|面向对象(UML)
├─ 5.4 软件测试:黑盒/白盒/灰盒|单元→集成→确认→系统→验收
├─ 5.5 净室软件工程:正确性验证|统计质量控制|增量开发
├─ 5.6 CBSE:构件与构件模型|CBSE 过程|构件组装
└─ 5.7 软件项目管理:进度|配置|质量|风险

二、必背要点

2.1 软件工程与过程模型

定义:将系统化、规范化、可度量的方法用于软件开发、运行与维护。三要素:方法、工具、过程(按什么顺序做)。

七种过程模型

模型核心思想优点缺点/适用
瀑布阶段线性、文档驱动里程碑清晰、易管理需求须稳定,返工代价大
原型快速原型澄清需求用户早参与、偏差早暴露易当成品、文档弱
螺旋风险驱动,四象限循环风险早识别、可演进成本高,需风险评估能力
增量分批交付功能增量早交付、可并行需良好架构,集成复杂
迭代多轮细化,逐步完善适应变更、反馈快迭代边界与文档管理难
V 模型开发与测试一一对应质量内建、缺陷早发现需求变更不灵活
喷泉面向对象,阶段重叠迭代适合 OO管理难,里程碑不清

V 模型对应:需求 ↔ 验收测试|概要设计 ↔ 系统测试|详细设计 ↔ 集成测试|编码 ↔ 单元测试。

敏捷方法

方法核心特征
XP四价值观(沟通、简单、反馈、勇气),结对编程、测试先行、重构、持续集成
Scrum三角色 PO/SM/团队、三工件、五会议,冲刺 2~4 周
FDD以「特征」为单位,5 步流程,适合大团队
ASD / DSDM猜测—合作—学习;时间盒 + MoSCoW 优先级

RUP 四阶段

阶段目标里程碑
初始确定范围与可行性生命周期目标
细化建立可执行架构基线生命周期架构
构建完成主体功能初始运行能力
交付交付、试用、修正产品发布

九个核心工作流:过程类六个——业务建模、需求、分析与设计、实现、测试、部署;支持类三个——配置与变更管理、项目管理、环境。RUP 三特点:用例驱动、以架构为中心、迭代增量。

CMMI 五级

级别名称特征
1初始级过程无序,靠个人,结果不可预测
2已管理级项目级计划、跟踪、配置管理
3已定义级组织级标准过程,项目裁剪使用
4量化管理级用统计度量定量控制过程
5优化级持续改进、缺陷预防、技术创新

CMMI 有阶段式(成熟度级别)与连续式(过程域能力级别 0~5)两种表示;CMM 只有阶段式且仅针对软件。

2.2 需求工程

层次:业务需求(为什么做)→ 用户需求(要什么)→ 系统需求(功能、非功能、约束)。

环节方法与产物
获取访谈、问卷、观察、文档分析、原型、JAD、头脑风暴
分析结构化 SA(DFD + 数据字典)、面向对象(用例 + 类图)
定义输出 SRS:正确、无歧义、完整、一致、可验证、可追踪
验证评审、原型确认、用例反推
管理基线、变更控制、版本控制、追踪

变更流程:申请 → 影响分析(成本/进度/风险)→ CCB 审批 → 实施 → 验证 → 更新基线。
需求追踪:前向(需求→设计→代码→用例)、后向(反向)、双向;工具为追踪矩阵,用于覆盖检查与影响分析。

2.3 系统分析与设计

结构化方法(自顶向下、逐步求精、功能分解)

工具作用
DFD四要素:外部实体、加工、数据流、数据存储;分层为上下文图→0 层→1 层
数据字典定义数据流、数据元素、数据存储、加工,与 DFD 配套
E-R 图概念建模:实体、属性、联系(1:1、1:N、M:N)
判定表/树表达复杂条件组合逻辑

设计转换:变换分析(输入—处理—输出)与事务分析(按事务类型分派)。
模块准则:高内聚低耦合;扇入大、扇出小(3~7 为宜);深度宽度适中。

内聚(高→低)耦合(低→高)
功能 > 顺序 > 通信 > 过程非直接 > 数据 > 标记 > 控制
> 时间 > 逻辑 > 偶然> 外部 > 公共 > 内容

面向对象:三要素封装、继承、多态;OOA 产出用例模型与领域类图,OOD 产出架构与类设计。
UML 分结构图(类、对象、包、构件、部署、组合结构)与行为图(用例、活动、状态机、交互)。
速记:用例看功能、类图看结构、顺序看交互、活动看流程、部署看节点。

2.4 软件测试

方法依据看内部结构典型方法
黑盒需求/规格否等价类、边界值、判定表、因果图、正交、场景法、错误推测
白盒源代码/结构是逻辑覆盖、基本路径、循环测试、McCabe
灰盒接口 + 部分内部部分接口测试、数据库测试、日志分析

覆盖强度:语句 < 判定 < 条件 < 判定/条件 < 条件组合 < 路径。判定/条件覆盖不强于条件组合覆盖;路径覆盖最强但不可穷尽。

McCabe 环形复杂度 V(G) = E − N + 2 = 判定节点数 + 1 = 封闭区域数
阶段对象依据文档要点
单元函数/模块详细设计白盒为主,需驱动与桩模块
集成模块接口概要设计自顶向下(桩)、自底向上(驱动)、三明治、大爆炸
确认整个软件SRSα(开发方场地、内部用户)、β(用户场地、真实用户)
系统完整系统需求 + 设计功能、性能、安全、兼容、恢复、可靠性
验收交付验收合同/用户需求用户验收 UAT、合同验收、法规验收

方法与阶段对应:单元(白盒)→ 集成(白盒 + 灰盒)→ 确认(黑盒)→ 系统(黑盒)→ 验收(黑盒)。

回归测试:变更后重跑既有用例,防止引入新缺陷,是持续集成的前提。

2.5 净室软件工程

  1. 正确性验证:用形式化方法(盒结构:黑盒—状态盒—清盒)在开发中证明正确,而非靠测试找错。
  2. 统计质量控制:基于使用模型做统计抽样,用可靠性认证代替穷尽测试。
  3. 增量开发:小增量推进,每个增量都做正确性验证。

差异:传统「靠测试发现缺陷」,净室「不引入缺陷」;形式化成本高,适合高可靠嵌入式与航天软件。

2.6 基于构件的软件工程

构件:可独立部署、可复用、有明确接口契约、可组装的软件单元。构件模型三要素:构件、容器、支撑服务(命名、事务、安全、持久化)。

构件模型代表
EJBJava 企业级构件
COM/DCOM/COM+Windows 平台
CCMCORBA 构件模型
.NET 程序集 / Web Services托管构件 / 跨平台服务

CBSE 过程:需求分析 → 构件识别 → 构件评估 → 构件选择与适配 → 组装 → 测试部署。
组装四方式:顺序、层次、叠加(覆盖扩展)、正交。
复用成本:理解、适配、组装、验证——复用不是零成本。

2.7 软件项目管理

工具特点
WBS自顶向下分解到可估算的工作包
甘特图直观显示工期与并行,看不出依赖
PERT 网络图显示依赖,三点估算,可算概率
CPM 关键路径最长路径,总时差为 0,决定工期
PERT:TE = (O + 4M + P) / 6        标准差 σ = (P − O) / 6

配置管理五活动:配置标识 → 版本控制 → 变更控制(CCB) → 配置审计 → 状态报告。
三类基线:功能基线(需求冻结)、分配基线(设计分配)、产品基线(交付产品)。
质量:QA 面向过程、预防为主;QC 面向产品、检测为主;手段有评审、走查、审查、度量。
风险:识别(技术/管理/商业/外部)→ 分析(概率、影响、风险暴露 = 概率 × 损失)→ 规划(规避、转移、减轻、接受)→ 监控。


三、易混淆概念对比

AB关键区别
瀑布增量瀑布一次交付、阶段线性;增量分批交付、每批可用
螺旋迭代螺旋以风险驱动、含风险分析象限;迭代以完善驱动
原型法敏捷原型用于澄清需求、可丢弃;敏捷是完整迭代交付方法论
RUP 阶段RUP 工作流阶段是时间维(4 个);工作流是活动维(9 个),每阶段都跑 9 个
CMMI 3 级CMMI 4 级3 级组织级标准过程;4 级引入统计度量与定量控制
验证确认验证「做得对不对」;确认「做的是不是用户要的」
黑盒白盒黑盒看需求找功能缺陷;白盒看代码找逻辑缺陷
单元测试集成测试单元依据详细设计、需驱动/桩;集成依据概要设计、测接口
桩模块驱动模块桩模拟被调的下层;驱动模拟调用的上层
α 测试β 测试α 在开发方场地、内部人员;β 在用户场地、真实用户
结构化方法面向对象方法以功能/数据流为中心(DFD);以对象/职责为中心(UML)
净室工程传统测试净室靠形式化验证不引入缺陷;传统靠测试发现缺陷
内聚耦合模块内元素关联(越高越好);模块间依赖(越低越好)
QAQCQA 过程导向、预防;QC 产品导向、检测

四、常见考法与出题角度

出题角度典型问法应对陷阱
模型选择「需求不明确、需快速反馈」原型 / 敏捷误选瀑布
模型特征「以风险驱动的模型是」螺旋误选迭代
阶段里程碑「RUP 细化阶段结束达到」生命周期架构误选初始运行能力
工作流数量「RUP 核心工作流几个」9 个(6 + 3)误答 6
成熟度级别「组织建立标准过程并裁剪」CMMI 3 级误选 2 级
需求变更「需求变更由谁审批」CCB误选项目经理单独决定
DFD 要素「不属于 DFD 四要素的是」判定表/控制流DFD 不画控制流
内聚耦合「通过公共数据区交互属于」公共耦合与外部耦合混淆
测试方法「不看内部结构、按需求设计用例」黑盒误选白盒
复杂度「McCabe 复杂度计算」V=E−N+2漏 +2
集成策略「需要桩模块的是」自顶向下与自底向上混淆
项目管理「看不出任务依赖的图是」甘特图误选 PERT

案例题角度:按项目特征选过程模型并说明理由;补 DFD 与用例图;设计等价类与边界值用例;算关键路径与工期;配置管理与风险应对表。


五、速记与自测

速记

  • 三要素:方、工、过
  • 模型七将:瀑、原、螺、增、迭、V、喷
  • V 模型:需—验、概—系、详—集、码—单
  • RUP:四阶段(初、细、构、交)+ 九流(业、需、析、实、测、部 + 配、项、环)
  • RUP 三特点:用例驱动、架构中心、迭代增量
  • CMMI:初、管、定、量、优
  • 内聚耦合:内高外低;功能最好、内容最差
  • 测试阶段:单、集、确、系、验;覆盖强度:语 < 判 < 条 < 判条 < 组 < 路
  • PERT:(乐观 + 4×最可能 + 悲观)÷ 6

自测

  1. RUP 九个核心工作流中,哪三个属于支持类?
  2. 自底向上集成测试需要编写哪种辅助模块?
  3. 某任务乐观 4 天、最可能 6 天、悲观 14 天,期望工期与标准差是多少?

答案:1. 配置与变更管理、项目管理、环境。2. 驱动模块(driver)。3. TE=(4+24+14)/6=7 天,σ=(14−4)/6≈1.67 天。