夜雨聆风学习资料网

ARTICLE · 1143290

第五章 软件工程基础知识

第五章 软件工程基础知识

一、软件工程概述

软件工程怎么来的?20 世纪 60 年代末爆发"软件危机"(成本失控、进度拖延、质量差、维护困难),1968 年 NATO 会议首次提出"软件工程"概念——用工程化方法开发软件。

软件工程三要素:

要素

含义

方法

完成软件开发各项任务的技术方法(如结构化方法、面向对象方法)

工具

支持方法的软件支撑环境(如 CASE 工具)

过程

把方法与工具综合起来,规定了任务的工作步骤

💡 一句话:方法(怎么做)+ 工具(用什么做)+ 过程(按什么顺序做)。

Boehm 软件工程 7 条基本原理(低频,记前两条即可):分阶段的生命周期计划严格管理、坚持阶段评审、严格的产品控制、采用现代程序设计技术、结果能清楚地审查、开发小组少而精、承认不断改进的必要性。


二、软件开发模型 

1、五大传统模型对比

模型

一句话定位

关键特征

适用场景

记忆钩子

瀑布模型

线性顺序、按阶段推进

文档驱动,上一阶段完成才进下一阶段

需求明确且稳定

"瀑布不能倒流"

原型模型

快速构造可运行原型

抛弃型(仅用于明确需求)/ 演化型

需求不明确、难事先定义

"先做个样儿看看"

增量模型

分批交付可运行产品

第一个增量即构成核心产品,可及早交付

需求可分块、需要快速见效

"分期交房"

螺旋模型

瀑布 + 原型 + 风险分析

每轮迭代都要做风险分析,风险驱动

大型、高风险复杂项目

"螺旋绕着风险转"

喷泉模型

面向对象的迭代模型

迭代无间隙、各阶段重叠

面向对象开发

"喷泉分不出层"

📌 高频陷阱:

问"以风险驱动为特色"→ 螺旋模型(几乎年年换个说法考)
问"需求不明确选什么"→ 原型;问"需求明确选什么"→ 瀑布
螺旋模型是 Boehm 提出的,其每一圈(轮)分为 4 个活动:制定计划 → 风险分析 → 实施工程 → 客户评估
2、统一过程 RUP 

1)四个阶段(顺序必背,各阶段结束有里程碑):

阶段

里程碑(结束标志)

一句话

初始

生命周期目标

定范围、看可行性

细化

生命周期架构

核心架构成形,风险大幅消除

构造

初始运行能力

剩余构件开发、集成

移交

产品发布

交付给用户

RUP 三大特点(考过 N 次"不属于的是"):① 用例驱动 ② 以架构为中心 ③ 迭代和增量开发。

💡 记忆:"用例带着架构迭代跑"。

3、敏捷开发 

敏捷宣言 4 组价值观(2001 年,"高于"前后的词别记反!):

1)个体和互动 高于 流程和工具
2)可工作的软件高于 详尽的文档
3)客户合作高于 合同谈判
4)响应变化高于 遵循计划

Scrum 框架(3-3-5):

类别

内容

3 个角色

产品负责人 PO(定需求优先级)、Scrum Master(教练/服务者,不是项目经理!)、开发团队

3 个工件

产品待办列表、Sprint 待办列表、产品增量

5 个事件

Sprint(迭代)、Sprint 计划会、每日站会、Sprint 评审会、Sprint 回顾会

XP 极限编程:结对编程、测试驱动开发(TDD)、持续集成、小版本发布、简单设计、重构。

CBSD(基于构件的软件开发):核心思路是"购买/复用优先于开发",通过组装现成构件构建系统。

📌 易混点:Scrum Master 是服务型领导,负责排除障碍、维护流程,不负责分配任务、不指挥开发。


三、软件开发方法 

方法

核心思想

记忆钩子

结构化方法

自顶向下、逐步求精;DFD + 数据字典

"从上往下拆"

面向对象方法

OOA→OOD→OOP,对象+类+封装+继承+多态

"万物皆对象"

原型化方法

快速构造样品澄清需求

与原型模型对应

净室软件工程

防止缺陷而非事后修复,强调统计质量控制和正确性验证,无"调试"环节

"先证明对,再写代码"

逆向工程

由现有代码反推设计与需求信息(恢复级别:实现级→结构级→功能级→领域级)

"从结果往回推"

再工程

逆向工程 + 重新设计开发(重构),防系统老化

"推回去再往前走"

💡 逆向工程不等于"抄代码"——它是从程序抽象出更高层次的设计信息。


四、软件测试 

1、测试的世界观(判断题套路)

1)测试目的:尽可能多地发现错误;成功的测试 = 发现了至今未发现的错误的测试
2)测试只能证明有错,不能证明无错
3)测试 vs 调试:测试是"发现"错误(有计划、可由第三方做);调试是"定位并改正"错误(开发人员做)
2、白盒测试(看代码内部结构)

六种逻辑覆盖,由弱到强(排序题!):

语句覆盖 < 判定覆盖 < 条件覆盖 / 判定-条件覆盖 < 条件组合覆盖 < 路径覆盖

其中最强的是路径覆盖(覆盖所有可执行路径),最弱的是语句覆盖(每条语句至少执行一次)。

McCabe 环路复杂度(必考计算!):

V(G) = E − N + 2(E=控制流图的边数,N=节点数)或 V(G) = P + 1(P=判定节点数)

3、黑盒测试(只看功能,不看内部)

三大经典方法(选择题直接问"属于黑盒测试的是"):

1)等价类划分:分有效/无效等价类,每类取代表值
2)边界值分析:取边界及边界附近值(错误最爱藏在边界!)
3)错误推测法:凭经验猜哪里容易错

💡 白盒=结构测试,黑盒=功能测试,看到"逻辑覆盖/基本路径"→白盒,看到"等价类/边界值"→黑盒。

4、测试的四个阶段 + V 模型 

阶段

测什么

辅助模块

单元测试

单个模块,以白盒为主

桩模块(代替被调用的下层)、驱动模块(模拟调用它的上层)

集成测试

模块间接口;自顶向下集成需要桩模块,自底向上需要驱动模块

—

系统测试

整个系统(含性能、安全、压力等)

—

验收测试

用户参与:α 测试=用户在开发场所测;β 测试=用户在实际环境测

—

5、V 模型对应关系(案例题考过画图/填空):

需求分析 ──────对应──────> 验收测试概要设计 ──────对应──────> 系统测试详细设计 ──────对应──────> 集成测试编  码 ──────对应──────> 单元测试

💡 陷阱:"集成测试对应详细设计"(不是概要设计)——很多人凭感觉选反。


五、软件维护 

维护类型

触发原因

例子

记忆钩子

改正性维护

交付后发现错误

修 Bug

"改错"

适应性维护

环境变了

适配新操作系统/新硬件/新法规

"环境变了就适应"

完善性维护

用户要求增加功能、改善性能

加报表、优化响应速度

"锦上添花"

预防性维护

为将来可维护性、可靠性

重构老化代码

"治未病"

📌完善性维护占比最大(约 50%~60%)——问"软件维护中工作量最大的是"→ 完善性维护。


六、CMM / CMMI 

CMMI 五级(第 2 版教程新译法,级别+名称都要记):

级别

名称

一句话

1

初始级

无序、靠英雄

2

已管理级

项目级管理(老 CMM 叫"可重复级")

3

已定义级

组织级标准过程

4

量化管理级

用统计和量化手段管理

5

优化级

持续改进

💡 场景判断口诀:"项目管住=2,组织定标=3,量化度量=4,持续改进=5"。题干出现"统计过程控制、量化指标"→ 4 级;出现"不断优化、持续改进"→ 5 级。


七、软件配置管理 

1、三个核心概念(概念辨析题):

1)配置项:纳入配置管理的工作产品(代码、文档、数据)
2)基线:通过正式评审和批准的配置项集合,此后变更必须走变更控制流程——"过了评审就冻结"
3)变更控制:变更请求 →CCB(变更控制委员会)审批→ 实施 → 配置审计

三类配置库:开发库(个人工作区)→受控库(基线放这里)→ 产品库(发布产品)。

📌 基线 ≠ 版本号:基线强调"正式评审通过的、只能通过正式程序变更"这个状态。


八、软件项目管理要点 

1、进度管理:
1)甘特图:直观展示进度,但不能清晰反映任务间的依赖关系与关键任务
2)PERT 图 / 关键路径法:关键路径 = 最长路径,决定总工期;关键路径上的活动总时差为 0(不能拖延)
2、成本估算:COCOMO 模型(基本/中级/详细三个精度层次)
3、风险管理:风险识别 → 风险估计 → 风险评价 → 风险控制(口诀"识-估-评-控")
4、软件项目管理四要素:人员、产品、过程、项目(PSP/TSP/CMM 集成体系)

九、自测题

【第 1 题】某大型航空航天软件项目技术复杂、风险高,最适合采用的软件开发模型是( )

A. 瀑布模型

B. 螺旋模型

C. 增量模型

D. 喷泉模型

✅答案:B
。螺旋模型的最大特色是每轮迭代都进行风险分析、以风险驱动,适合大型高风险复杂项目。A 瀑布适合需求明确的项目;C 增量强调分批交付;D 喷泉是面向对象的迭代模型。 📍 考点:开发模型选择(高频!)

【第 2 题】关于瀑布模型,下列说法错误的是( )

A. 各阶段按顺序推进,上一阶段完成后才进入下一阶段

B. 是一种文档驱动的模型

C. 适合需求不明确、经常变化的项目

D. 阶段间存在因果的衔接关系

✅答案:C
。瀑布模型的前提正是需求明确且稳定;需求不明确应该用原型模型。A/B/D 都是瀑布的正确描述,其中"文档驱动"是瀑布的经典标签。 📍 考点:瀑布 vs 原型的适用场景辨析

【第 3 题】统一过程(RUP)的三大特点不包括( )

A. 用例驱动

B. 以架构为中心

C. 迭代和增量开发

D. 数据流驱动

✅答案:D
。RUP 三大特点 = 用例驱动 + 以架构为中心 + 迭代和增量开发。"数据流"是结构化分析方法(DFD)的关键词,拿来当干扰项。顺带复习 RUP 四阶段:初始→细化→构造→移交。 📍 考点:RUP 特点(考过多次"不包括")

【第 4 题】关于 Scrum 框架,下列说法正确的是( )

A. Scrum Master 负责给开发团队分配开发任务

B. 产品负责人(PO)负责维护产品待办列表并确定优先级

C. 每日站会时长通常为 30~60 分钟

D. Sprint 回顾会用于向用户演示产品增量

✅答案:B
。PO 的核心职责就是管理产品待办列表、排列优先级,代表用户利益。A 错:Scrum Master 是服务型领导,负责排除障碍、维护流程,不分配任务;C 错:每日站会一般不超过 15 分钟;D 错:向用户演示增量的是 Sprint 评审会,回顾会是对流程本身的复盘改进。 📍 考点:Scrum 角色/事件职责(近年热考)

【第 5 题】在白盒测试的逻辑覆盖中,覆盖强度最弱的是( )

A. 语句覆盖

B. 判定覆盖

C. 条件组合覆盖

D. 路径覆盖

✅答案:A
。强度排序:语句覆盖 < 判定覆盖 < 判定-条件覆盖 < 条件组合覆盖 < 路径覆盖。语句覆盖只要求每条语句执行一次,最弱;路径覆盖要求覆盖所有可执行路径,最强。 📍 考点:逻辑覆盖强度排序(必考!)

【第 6 题】某程序控制流图共有 10 条边、8 个节点,其环路复杂度 V(G) 为( )

A. 2

B. 3

C. 4

D. 18

✅答案:C
。McCabe 环路复杂度公式:V(G) = E − N + 2 = 10 − 8 + 2 = 4。另一算法 V(G) = 判定节点数 P + 1:由 8 节点 10 边可推出 P = 3,同样得 4。两个公式互相验证,考试务必都记住。 📍 考点:McCabe 环路复杂度计算(计算题常客)

【第 7 题】某银行系统上线运行三年后,因国家出台新的个人信息保护法规,需要修改系统的数据加密与留存模块。这属于( )

A. 改正性维护

B. 适应性维护

C. 完善性维护

D. 预防性维护

✅答案:B
。触发原因是外部环境变化(新法规),属于适应性维护。辨析:改 Bug = 改正性;加功能/提性能 = 完善性(占比最大);为将来防老化 = 预防性。法规/操作系统/硬件变化 → 一律适应性。 📍 考点:维护类型场景判断(高频!)

【第 8 题】某软件组织使用统计过程控制技术,对软件过程和产品质量建立量化的度量指标并进行管理。按照 CMMI,该组织的过程能力至少达到( )

A. 已定义级(3 级)

B. 已管理级(2 级)

C. 量化管理级(4 级)

D. 优化级(5 级)

✅答案:C
。题干关键词"统计过程控制、量化度量"正是 4 级量化管理级的定义特征。口诀:项目管住=2,组织定标=3,量化度量=4,持续改进=5。若是"不断优化、持续改进"才选 5 级。 📍 考点:CMMI 等级场景判断

【第 9 题】在 V 模型中,与详细设计阶段相对应的测试阶段是( )

A. 单元测试

B. 集成测试

C. 系统测试

D. 验收测试

✅答案:B
。V 模型对应关系:需求分析↔验收测试,概要设计↔系统测试,详细设计↔集成测试,编码↔单元测试。最大陷阱是"详细设计对应单元测试"(那是编码的对应项)——集成测试测的是模块间接口,接口正是详细设计的产物。 📍 考点:V 模型左右对应关系(案例题也考过)

【第 10 题】关于软件配置管理中的基线,下列说法错误的是( )

A. 基线是已经通过正式评审和批准的配置项集合

B. 基线的变化必须通过正式的变更控制程序

C. 基线一旦建立就永远不能修改

D. 基线为后续开发工作提供了一个稳定的基础

✅答案:C
。基线是"冻结但可变更"——不是不能改,而是改必须走变更控制流程(CCB 审批)后形成新基线。A、B、D 都是基线的正确表述:"正式评审通过 + 受控变更 + 稳定基础"三个关键词。 📍 考点:基线概念辨析


📌 本章速记卡

1、软件工程三要素:方法 + 工具 + 过程;1968 年 NATO 会议提出
2、模型一句话:瀑布=文档驱动;原型=需求不明确;增量=分批交付;螺旋=风险驱动;喷泉=面向对象无间隙
3、RUP:初始→细化→构造→移交;特点"用例带着架构迭代跑"
4、敏捷宣言:"可工作的软件高于详尽的文档";Scrum = 3 角色 / 3 工件 / 5 事件,Scrum Master 是服务者不是经理
5、白盒=结构测试(逻辑覆盖、McCabe:V = E − N + 2);黑盒=功能测试(等价类、边界值、错误推测)
6、测试四阶段:单元→集成→系统→验收;V 模型:详设对集成、概设对系统
7、、维护四类:改错、适应环境、完善(占比最大 50%+)、预防
8、CMMI 五级:初始→已管理→已定义→量化管理→优化;"量化度量=4,持续改进=5"
9、基线=评审通过的冻结版本,变更走CCB
10、关键路径=最长路径,总时差为 0;甘特图看不出依赖关系

相关学习资料