【软考备考】软件工程详解:四大开发模型、黑盒白盒测试、McCabe 环路复杂度(附 10 道练习)

数据库通关之后,开进软件工程模块。上午题在这块的年均占分不输数据库,考法集中在三样:

  • 开发模型:给个项目场景,问你该用哪个模型(概念题,送分);

  • 测试方法:黑盒有哪些招、白盒有哪些覆盖标准(概念题,有坑);

  • McCabe 环路复杂度:给个流图算数字(计算题,套公式)。

一、开发模型:看场景,对号入座

瀑布模型 :需求 → 设计 → 编码 → 测试 → 维护,阶段顺序推进、文档驱动 。优点是好管理;致命伤是需求必须一开始就明确------用户要到验收那天才见得到产品,中间想改需求,代价巨大。适用:需求明确、稳定的项目。

原型模型 :需求不明确?先快速做个样品 给用户看,用户说"不是这个感觉",改了再看,反复几轮,需求逐渐清晰。适用:需求模糊、需要用户参与确认的项目。

螺旋模型 :瀑布 + 原型 + 风险分析 。每转一圈走四步:定计划 → 风险分析 → 开发 → 用户评估,每一圈都问一句"这风险还值不值得继续"。适用:大型、昂贵、高风险项目。看到题干里"风险"两个字,基本就是它。

增量模型 :把系统切成若干增量,分批交付------先交核心功能用着,后续版本逐步加料。

V 模型 :瀑布的变种,强调测试与开发阶段一一对应(这个对应关系就是考点):

复制代码
需求分析 ←------------------→ 验收测试
概要设计 ←------------→ 系统测试
详细设计 ←------→ 集成测试
编码 ←------→ 单元测试

口诀:单元对编码,集成对详细,系统对概要,验收对需求

选模型总口诀

需求明确选瀑布 ,需求模糊选原型 ,强调风险选螺旋 ,分批交付选增量

二、黑盒与白盒:就看你打不打开盒子

黑盒测试 (功能测试):不管内部代码怎么写,只关心"给这个输入,出不出那个输出"。常用方法:

  • 等价类划分:把无穷多的输入分成几类,每类挑一个代表测(有效等价类 + 无效等价类);

  • 边界值分析 :专挑边界下手(0、1、最大值、最大值+1)------经验表明错误最爱躲在边界上,这是出题率最高的黑盒方法

  • 因果图、决策表、错误推测法。

白盒测试(结构测试):打开盒子,对着代码逻辑设计用例,追求"覆盖"。覆盖标准从弱到强:

复制代码
语句覆盖 < 判定覆盖 < 条件覆盖 < 判定/条件覆盖 < 条件组合覆盖 < 路径覆盖
  • 语句覆盖:每条语句至少执行一次(最弱,走个过场);

  • 判定覆盖:每个 if 的真、假分支都至少走一次;

  • 条件覆盖 :每个判定里的每个条件,真、假都至少取一次;

  • 条件组合覆盖 :每个判定中条件的所有真假组合都出现;

  • 路径覆盖:每条可能的执行路径都走一遍(最强)。

深坑警告(软考埋过)条件覆盖 ⊄ 判定覆盖 。反例:判定 A && B,用例一 A真B假(判定为假),用例二 A假B真(判定为假)------条件 A、B 都取过真和假(条件覆盖 ✓),但两次判定结果都是假,真分支一次没走(判定覆盖 ✗)。所以"条件覆盖一定包含判定覆盖"是错误说法;反过来,判定覆盖必然包含语句覆盖(分支都走了,语句自然全执行),这是对的。

三、McCabe 环路复杂度:两个公式任选

环路复杂度 V(G) 衡量程序有多"绕",也等于实现路径覆盖至少需要多少测试用例。两个公式,给什么条件用哪个:

公式一:V(G) = 边数 m − 节点数 n + 2 (给了流图就数边和节点) 公式二:V(G) = 判定节点数 + 1(程序里有几个 if/while/for,加 1)

例 1 :流图有 9 个节点、11 条边 → V = 11 − 9 + 2 = 4例 2 :程序中有 3 个判定节点 → V = 3 + 1 = 4

考场上数判定节点通常比数边节点快,但注意:像 A && B 这种复合条件,在流图里会拆成两个判定节点------按拆分后的数。


四、10 道练习题

基础题(1~5)

1. 关于瀑布模型,下列说法正确的是( )。

A. 适合需求不明确的项目 B. 各阶段顺序进行、文档驱动,要求需求在早期明确且稳定 C. 强调每一轮迭代的风险分析 D. 以用户快速试用原型为核心

2. 某项目用户需求模糊,需要用户在使用样品的过程中逐步明确需求,最适合的开发模型是( )。

A. 瀑布模型  B. V 模型  C. 原型模型  D. 喷泉模型

3. 下列测试方法中,属于黑盒测试的是( )。

A. 语句覆盖  B. 判定覆盖  C. 等价类划分  D. 路径覆盖

4. 白盒测试的各种覆盖标准中,覆盖程度最弱的是( )。

A. 语句覆盖  B. 判定覆盖  C. 条件覆盖  D. 路径覆盖

5. 螺旋模型区别于其他过程模型的突出特点是( )。

A. 文档驱动  B. 面向对象  C. 不需要测试  D. 强调风险分析

进阶题(6~10,带坑)

6. 某程序流图有 9 个节点、11 条边,其 McCabe 环路复杂度为( )。

A. 3  B. 4  C. 5  D. 2

7. 某程序中包含 3 个判定节点(if、while 等),其环路复杂度为( )。

A. 3  B. 2  C. 5  D. 4

8. 关于白盒测试的覆盖标准,下列说法正确的是( )。

A. 条件覆盖一定能满足判定覆盖 B. 判定覆盖一定包含语句覆盖 C. 路径覆盖是最弱的覆盖标准 D. 条件组合覆盖比条件覆盖更弱

9. V 模型中,验收测试所对应的开发阶段是( )。

A. 需求分析  B. 概要设计  C. 详细设计  D. 编码

10. 某大型软件项目投资巨大、失败风险高,甲方要求每个阶段都评估风险以决定是否继续投入,应采用的开发模型是( )。

A. 瀑布模型  B. 原型模型  C. 螺旋模型  D. 增量模型


五、答案与详解

1. B 瀑布模型 = 阶段顺序 + 文档驱动 + 需求必须早期明确。A 说反了------需求不明确正是瀑布的死穴,那是原型的地盘;C 是螺旋模型的台词。

2. C 关键词"需求模糊 + 用户逐步明确" → 原型模型。做样品、试用、改、再试,需求在迭代中澄清。

3. C 等价类划分、边界值分析是黑盒双雄;语句/判定/路径覆盖全是白盒家族(看代码结构的)。判别方法一句话:看内部逻辑的是白盒,只看输入输出的是黑盒

4. A 覆盖天梯最低一级:语句覆盖------每条语句走一遍就交差,最弱。

5. D 螺旋模型的灵魂是风险分析,每一圈迭代先评估风险再决定走不走。题干出现"风险"二字,闭眼选螺旋。

6. B 公式一:V = 11 − 9 + 2 = 4。记牢"+2",选 A 的就是漏了它。

7. D 公式二:V = 判定节点数 + 1 = 3 + 1 = 4。和第 6 题答案相同纯属巧合,但两个公式必须都会------题目给边和节点用公式一,给判定节点用公式二。

8. B 本题大坑 。A 错------条件覆盖不一定 满足判定覆盖(正文的 A&&B 反例:两个用例让 A、B 都取过真假,但判定恒为假,真分支从未执行);B 对------判定的真假分支都走了,所有语句自然都执行过,判定覆盖必然包含语句覆盖;C 说反了,路径覆盖是最强的;D 也说反了,条件组合覆盖强于条件覆盖。

9. A V 模型对应关系:验收对需求(验收测试验的就是需求规格说明书)、系统对概要、集成对详细、单元对编码。从上往下记"需求→概要→详细→编码",测试从右往左一一对应。

10. C "每个阶段评估风险决定是否继续" = 螺旋模型的标准动作。大型 + 高风险 + 分圈评估,三个信号全中。


六、五句话带走

  1. 选模型:明确瀑布、模糊原型、风险螺旋、分批增量

  2. V 模型:单元对编码、集成对详细、系统对概要、验收对需求

  3. 黑盒看输入输出(等价类、边界值),白盒看内部逻辑(六种覆盖);

  4. 条件覆盖 ⊄ 判定覆盖,判定覆盖 ⊃ 语句覆盖;

  5. McCabe:边−节点+2 ,或判定节点+1

下一篇预告 :软件工程第二篇(收官)------耦合与内聚 的家族排序(内容耦合最差、功能内聚最好)、软件维护四类型 (猜猜占比最大的是哪种)、以及上午题的计算常客------关键路径:给个活动网络图,找出工期最长的那条路。

相关推荐
梁辰兴16 小时前
软件工程:软件开发环境
软件工程·ide集成·软件开发环境·环境组成·环境分类·case工具·现代趋势
谙弆悕博士1 天前
系统集成项目管理工程师教程(第3版)笔记——第2章:信息技术发展
笔记·计算机网络·信息安全·学习方法·业界资讯·软考·系统分析师
疯狂打码的少年1 天前
【软件工程】软件测试阶段:单元测试与集成测试(高频对比考点)
笔记·单元测试·集成测试·软件工程
ttod_qzstudio1 天前
【软考备考】计算机网络详解:OSI/TCP-IP 分层 + IP 子网划分,一篇拿下网络模块(附 10 道练习)
网络·tcp/ip·计算机网络·软考
疯狂打码的少年2 天前
【软件工程】软件测试:黑盒测试(等价类/边界值/因果图)
笔记·软件工程
qiyongwork2 天前
敏捷方法论的演进:从 Scrum 到规模化敏捷的变革
项目管理·软件工程·scrum
梁辰兴2 天前
软件工程:软件开发模型
软件工程·迭代模型·软件开发模型·模型选择·梁辰兴·经典模型·其他模型
昔柯的修炼日记3 天前
软件工程学习笔记
软件工程
ttod_qzstudio3 天前
【软考备考】存储管理详解:分页地址转换 + 页面置换缺页率,画张表格就得分(附 10 道练习)
存储管理·软考