系统开发基础:课件整理与例题解析¶
本篇合并“课程内容提要、软件工程概述、软件开发模型、软件开发方法、系统分析、系统设计、系统测试、系统维护、软件质量保证、软件文档、章节回顾”共 11 篇课件。保留全部 41 张教学图片和 31 道例题,例题统一编号;折叠区域的参考答案、推导和纠错由本笔记补充,不是课件提供的官方答案。
本章沿“选择开发过程 → 明确需求 → 设计系统 → 验证软件 → 维护演化”学习。配合第 06 章知识导图复习时,先理解题目中的因果关系,再用关键词定位知识点。图片中的星级是原讲义的复习建议;旧模型和标准应按题目指定版本理解。
一、软件生存周期与过程改进¶
生存周期¶
软件生存周期覆盖从提出需求、开发、交付、运行维护到退役的全过程。课件用以下顺序呈现常见活动:
可行性分析与计划 → 需求分析 → 概要设计 → 详细设计 → 编码 → 测试 → 维护。
这是活动划分,不要求所有项目都只能单向执行一次。迭代开发可以反复开展需求、设计、实现与测试;测试策划、评审、质量保证也不应等到编码结束才开始。
软件工程的三个基本要素¶
**方法、工具、过程**分别解决三个问题:方法说明怎样分析、设计和验证;工具提供自动化或半自动化支持;过程安排活动顺序、人员职责、交付物和检查点。例如,使用等价类划分来设计测试是方法,JUnit 是工具,把测试纳入每次代码合并前的检查是过程。人员执行这些活动,质量承诺支撑整个工程体系,但它们不是这组三要素中“过程”的替代项。
CMM 与 CMMI:先看版本,再看等级¶
**CMM(Capability Maturity Model)**关注软件过程能力成熟度。旧版 SW-CMM 的五级从低到高为:
| 等级 | 名称 | 识别线索 |
|---|---|---|
| 1 | 初始级 | 过程不稳定,较依赖个人经验和临时应对 |
| 2 | 可重复级 | 建立基本项目管理,能够重复类似项目中的成功实践 |
| 3 | 已定义级 | 形成组织级标准过程,并在项目中裁剪应用 |
| 4 | 已管理级 | 通过度量,对过程与产品质量进行定量管理 |
| 5 | 优化级 | 持续改进过程,开展缺陷预防和技术、过程变革 |
**CMMI(Capability Maturity Model Integration)**整合多个过程改进模型。传统阶段式表示主要从**组织成熟度**观察,连续式表示主要从**各过程域的能力**观察。不要把组织的成熟度等级与某个过程域的能力等级混为一谈。
阶段式传统五级为:初始级、已管理级、已定义级、定量管理级、优化级。原图的“可管理级”“优化管理级”属于表述变体;应注意它与 SW-CMM 二级“可重复”、四级“已管理”的名称差异。
| 早期连续式能力等级 | 考试识别点 |
|---|---|
| CL0 未完成 | 过程未执行,或没有满足该过程域的全部特定目标 |
| CL1 已执行 | 将可识别的输入转为输出,实现该过程域的特定目标 |
| CL2 已管理 | 已管理过程的制度化,计划、执行、监控等有保障 |
| CL3 已定义 | 已定义过程的制度化,基于组织标准进行裁剪 |
| CL4 定量管理 | 定量管理过程的制度化,使用统计和其他定量方法 |
| CL5 优化 | 持续改进过程能力,支持业务目标 |
CL4 与 CL5 都会用数据,区别在**用数据做什么**:用缺陷率、交付周期的统计结果监控现有过程是否稳定,侧重定量管理;据此试验并改进评审方式、工具或开发过程,侧重优化。只看到“量化、统计”不能立刻选 CL4,还要看题目是在控制现有过程,还是改变过程以持续改善。
版本提醒:“连续式共有六级(CL0~CL5)”是 CMMI v1.1/v1.2 等早期教材口径。CMMI v1.3 连续式能力等级已经缩为 CL0~CL3,较新版本也不能直接套用这张六级表。题目明确“六级”时,按它指定的历史模型作答。成熟过程有助于提高质量和可预测性,但不保证任何项目必然成功。
例题 1:CMM 等级方向¶
以下关于CMM的叙述中,不正确的是( )。
A、CMM是指软件过程能力成熟度模型
B、CMM根据软件过程的不同成熟度划分了5个等级。其中,1级被认为成熟度最高,5级被认为成熟度最低
C、CMMI的任务是将已有的几个CMM模型结合在一起,使之构成“集成模型”
D、采用更成熟的CMM模型,一般来说可以提高最终产品的质量
参考答案与解析
选 B。 旧版 CMM 的成熟度从 1 到 5 逐步提高,B 把方向写反。关键词是等级方向,而不是“集成模型”三个字。过程改进有助于提高质量,但 D 的“一般来说”不能扩大为必然保证。
例题 2:连续式模型的已执行级¶
能力成熟度模型集成(CMMI)是若干过程模型的综合和改进。连续式模型和阶段式模型是CMMI提供的两种表示方法。连续式模型包括6个过程域能力等级(Capability Level,CL),其中( )的共性目标是过程将可标识的输入工作产品转换成可标识的输出工作产品,以实现支持过程域的特定目标。
A、CL1(已执行的) B、CL2(已管理的)
C、CL3(已定义的) D、CL4(定量管理的)
参考答案与解析
按题目明示的早期六级模型,选 A。 CL1 的关键是完成特定目标,将输入工作产品转换成输出工作产品;CL2 才强调已管理过程的制度化。这里不要用较新版本的等级体系替换题干。
专项题库练习(4 题)¶
本小节对应题库练习共 4 道题目,题目覆盖本节考点,答案与解析默认折叠。
题目 015¶
来源:知识点练习「系统开发基础」第 15、116 题(原站入口)。
关于 CMM,下列说法不正确的是( )。
-
A. CMM是指软件过程能力成熟度模型
-
B. CMM根据软件过程的不同成熟度划分了5个等级,其中,1级被认为成熟度最高,5级被认为成熟度最低
-
C. CMMI的任务是将已有的几个CMM模型结合在一起,使之构造成为“集成模型”
-
D. 采用更成熟的CMM模型,一般来说可以提高最终产品的质量
答案与解析
平台答案(来源第 15 题):B。
整理解析(来源第 15 题)
选 B。传统软件 CMM 的等级从低到高为:1初始级、2可重复级、3已定义级、4已管理级、5优化级,选项把高低方向颠倒了。成熟过程有助于稳定交付和持续改进,但等级本身不保证每个产品都没有缺陷;这些等级名称也不要与不同版本 CMMI 的术语直接混用。
来源第 116 题对照
原题题干
下列有关 CMM 及 CMMI 的表述,哪一项不正确( )?
原题选项对照
| 原选项 | 内容 | 本页选项 |
|---|---|---|
| A | CMM是指软件过程能力成熟度模型 | A |
| B | CMM根据软件过程的不同成熟度划分了5个等级,其中,1级被认为成熟度最高,5级被认为成熟度最低 | B |
| C | CMMI的任务是将已有的几个CMM模型结合在一起,使之构成“集成模型” | C |
| D | 采用更成熟的CMM模型,一般来说可以提高最终产品的质量 | D |
原平台答案(来源第 116 题,原题选项):B;对应本页选项:B;本页平台答案:B。
整理解析(来源第 116 题)
选 B。CMM 的五级成熟度由 1 级到 5 级递增,1 级最低,5 级最高,选项恰好倒置。较成熟的过程有助于稳定地控制质量,但成熟度等级不是某个具体产品必然高质量的保证。
题目 022¶
来源:知识点练习「系统开发基础」第 22 题(原站入口)。
软件工程的三个基本要素是方法、工具和( )。
-
A. 软件系统
-
B. 硬件系统
-
C. 过程
-
D. 人员
答案与解析
平台答案:C。
整理解析
选 C。方法回答技术上如何分析、设计、实现和验证;工具为这些活动提供自动化支持;过程组织活动、产物、职责和检查点。质量承诺是软件工程的基础,但本题采用的三要素组合是方法、工具、过程。
题目 085¶
来源:知识点练习「系统开发基础」第 85 题(原站入口)。
CMMI 综合并改进了多个过程模型,提供连续式和阶段式两种表示。题设的连续式有 6 个过程域能力等级;其中哪一级的共性目标是将可标识的输入工作产品转换成可标识的输出工作产品,以支持该过程域的特定目标( )?
-
A. CL1(已执行的)
-
B. CL2(已管理的)
-
C. CL3(已定义的)
-
D. CL4(定量管理的)
答案与解析
平台答案:A。
整理解析
选 A,即 CL1“已执行”。关键是过程已实际完成工作并达到过程域目标;CL2 进一步强调过程受计划、监控与管理,CL3 强调组织级定义,CL4 强调定量管理。版本说明:题干采用 CL0—CL5 的旧版连续式分类,不能将“六级”套用到所有新版 CMMI。
题目 095¶
来源:知识点练习「系统开发基础」第 95 题(原站入口)。
CMMI 有连续式与阶段式表示。按题目采用的 6 个连续式过程域能力等级,使用量化、统计手段改变并优化过程域,以适应客户要求变化和持续改进目标的是哪一级( )?
-
A. CL2(已管理的)
-
B. CL3(已定义级的)
-
C. CL4(定量管理的)
-
D. CL5(优化的)
答案与解析
平台答案:D。
整理解析
选 D,即 CL5“优化”。CL4 侧重用定量方法控制已有过程,CL5 在此基础上持续改进、改变过程以提升绩效。六级编号是题设的旧版模型口径,不能不分版本沿用。
二、软件开发模型¶
开发模型说明活动如何组织、怎样反馈和交付。选择时看**需求稳定程度、风险、反馈频率、交付约束和组织能力**;项目大小只是背景之一,不能单凭“大项目”“小项目”选模型。
瀑布模型与 V 模型¶
瀑布模型按阶段推进,强调阶段成果、文档与评审。需求较稳定、验收边界较清晰时较容易规划;越晚发生的重大变更,越可能带来跨阶段返工。图中的反馈箭头也说明它并非绝对禁止返回上一阶段。
V 模型强调开发工作与验证活动的对应关系。测试准备和评审可以提前进行,右侧的测试执行通常在相应被测对象可用后开展。
| 测试层次 | 主要依据和关注点 |
|---|---|
| 单元测试 | 模块的详细设计、算法与接口契约 |
| 集成测试 | 模块结构、接口设计、调用与协作关系 |
| 系统测试 | 系统需求,包括功能、性能、安全等质量要求 |
| 验收测试 | 用户需求、业务目标、合同或验收准则 |
课件把集成测试连到“详细设计”。不同教材对概要与详细设计的接口工作划分不同,核心应记成“集成测接口,单元测模块”。V 模型强调对应验证,不能理解为采用该模型就保证需求已实现,也不能理解为测试只发生在 V 的右半边。
原型、演化与增量¶
**原型**用可观察、可交互的模型帮助澄清需求或验证方案。它可以是纸面界面、交互演示或可运行程序,未必覆盖完整系统。
- 抛弃式原型:用于探索,完成验证后舍弃;正式产品按合适的架构和质量要求重新建设。
- 演化式原型:在可控制的工程基础上持续改进,逐渐形成产品。
- 演化开发:根据反馈不断完善需求与软件版本,重点是“边使用、边认识、边完善”。
- 增量开发:把功能按优先级分批交付,每个增量增加可用能力;初始增量常包含核心功能。
这些概念可以共存:先做抛弃式原型澄清交互,再分批交付;也可以让每个增量通过多次迭代演化。不要用“演化一定是大项目先做一点”“原型一定从零开始并抛弃”“只有增量才先做核心”来硬分。增量开发需要良好的架构与模块边界,不会自动产生好的模块划分。
**基于构件的开发**通过选择、适配和组装可复用构件构造系统。通常先按需求查找并评估构件,再协调它们提供和需要的接口,最后集成与测试;构件可以内部开发,也可以采购。例如导入系统复用文件解析构件与数据校验构件,仍须检查字段格式、接口版本和错误处理是否兼容,必要时加适配层。可复用不等于可直接拼接,也不要求构件内部一律采用面向对象技术。教材常把这一模型放在演进式、迭代式开发中讲,但“使用构件”本身并不限定整个项目的生命周期。
螺旋模型¶
螺旋模型是**风险驱动**的迭代过程。每轮通常包含目标与计划、风险识别与分析、开发和验证、评审并规划下一轮。原型、模拟、试验等都可以用于降低风险。
复杂度高、风险大的项目更可能值得投入系统的风险分析,但“小项目不能用”“一定开发成本低”都不是其定义。其核心不是画出螺旋线,也不是单纯多迭代几次。
喷泉模型与统一过程 RUP¶
喷泉模型常用于描述面向对象开发活动的**迭代和交叠**。分析、设计、实现等活动之间没有绝对分割线,需要反复反馈;“无间隙”指阶段联系紧密,不表示没有阶段成果或无需管理。
RUP 的三个核心特征是:用例驱动、以架构为中心、迭代与增量。
| 阶段 | 核心目标 |
|---|---|
| 初始(Inception) | 明确范围、业务价值、关键用例和主要风险,判断是否值得继续 |
| 细化(Elaboration) | 建立并验证架构基础,处理重大风险,细化计划 |
| 构造(Construction) | 逐步完成其余功能,持续集成与测试 |
| 移交(Transition) | 交付用户、部署、培训、反馈修正并达到可用状态 |
阶段不等于学科或活动。 需求、分析设计、实现、测试、部署等工作可出现在多个阶段,只是重点和投入比例不同。例如细化阶段也可以编码和测试,构造阶段也可能细化需求。
经典 UP 的**五个核心工作流**是需求、分析、设计、实现、测试;RUP 还展开业务建模、部署及项目管理等工作,不能混用两者的清单数量。一次迭代可贯穿这些工作流并形成可执行版本,但版本可以用于内部评估,不要求每轮都向最终用户正式发布。四阶段回答“项目推进到哪里”,工作流回答“正在做哪类工作”。
敏捷方法与 XP¶
敏捷强调尽早、持续交付有价值的软件,通过协作与反馈应对变化。它重视可工作的软件、客户合作、技术质量与可持续节奏;“快大于好”不是敏捷原则。少写无用文档不等于不写文档,适应变化不等于没有计划。
小团队较便于密切沟通,但敏捷并不由团队人数定义;大规模应用需要额外的协调与治理。自动化测试、持续集成和重构正是帮助团队快速变更并维持质量的手段。
课件用“四、五、十二”记忆早期 XP:
- 四项价值观:沟通、简单、反馈、勇气;后续版本加入“尊重”,常概括为五项。
- 五项原则:快速反馈、简单性假设、逐步修改、拥抱变化、优质工作。
- 十二项实践:计划游戏、小型发布、系统隐喻、简单设计、测试先行、重构、结对编程、集体代码所有权、持续集成、每周 40 小时、现场客户、编码标准。
重构是**在不改变可观察行为的前提下改进内部结构**;原表把它描述为重新明确需求,不足以表达其定义。简单设计是满足当前需要并保持清晰,不等于随意设计。“每周 40 小时”体现可持续节奏,具体实践集合随 XP 版本演进。
| 方法 | 识别线索与补充 |
|---|---|
| XP | 工程实践:结对、测试先行、重构、持续集成 |
| Scrum(并列争球法) | Sprint、待办列表、优先级、透明与检视适应;冲刺时长固定且不超过一个月,不强制恰好 30 天 |
| Crystal(水晶法) | 以人为中心,根据团队规模和系统关键性调整过程 |
| FDD(特性驱动开发) | 建立总体模型、特性列表,按特性计划、设计与构建;常见首席程序员和类所有者角色 |
| ASD(自适应软件开发) | 推测、协作、学习,在不确定性中反复调整 |
| AUP(敏捷统一过程) | 以敏捷方式简化统一过程,保留初始、精化、构建、转换等阶段 |
| 开源协作 | 可以分布式开发、公开评审;是一种协作与许可方式,本身不等于敏捷过程模型 |
**XP 的实践要理解动作,而不只记名称:**结对编程通常由一人操作、一人同步检查和思考,两人定期交换角色,相当于持续的非正式审查;共享理解和减少返工是主要收益,不能保证每小时写出更多代码。测试先行是先用一个会失败的测试表达预期,再写实现使其通过,随后在测试保护下重构。持续集成要求频繁整合并自动构建、测试;集体代码所有权允许团队共同维护代码,同时仍要遵守评审与编码规则。
**Scrum 中的三个常见名词不是三个顺序步骤:**Product Backlog 是按优先级排列、持续完善的产品工作清单;Sprint Backlog 是当前冲刺目标、选取的工作及交付计划;Sprint 是完成这些工作的固定时长周期。例如产品清单中有登录、离线缓存、导出功能,本次冲刺只选登录及其测试,并不等于其余需求被删除。重构可以在冲刺中执行,但它是工程实践,不是 Scrum 规定的工件名称。
AUP 所说“大型上连续、小型上迭代”,可理解为总体沿初始、精化、构建、转换等阶段推进,各阶段内部仍反复完成小规模开发活动。它不等于每个项目都重新制定一套方法;依据团队和关键性选择不同方法组合,更接近 Crystal 的裁剪思想。
例题 3:边使用边改善¶
某企业拟开发一个企业信息管理系统,系统功能与多个部门的业务相关。现希望该系统能够尽快投入使用,系统功能可以在使用过程中不断改善。则最适宜采用的软件过程模型为( )。
A、瀑布模型 B、原型模型 C、演化(迭代)模型 D、螺旋模型
参考答案与解析
选 C。 题干强调先投入使用,再通过实际使用不断改善需求与产品,是演化/迭代的直接线索。抛弃式原型可能只用于探索,不一定直接成为运行系统;螺旋的关键线索应是风险驱动。
例题 4:螺旋模型的特征与成本¶
关于螺旋模型,下列陈述中不正确的是( ),( )。
A、将风险分析加入到瀑布模型中
B、将开发过程划分为几个螺旋周期,每个螺旋周期大致和瀑布模型相符
C、适合于大规模、复杂且具有高风险的项目
D、可以快速的提供一个初始版本让用户测试
A、支持用户需求的动态变化
B、要求开发人员具有风险分析能力
C、基于该模型进行软件开发,开发成本低
D、过多的迭代次数可能会增加开发成本,进而延迟提交时间
参考答案与解析
按传统考试区分,参考 D、C;第一空存在表述不严。 第二组 C 把风险分析和多轮开发描述成必然低成本,显然不成立。
第一组通常把“快速初始版本供用户测试”归为原型模型的典型描述,因而预期排除 D。但螺旋模型本身完全可以利用原型或早期版本做评估,原图也画有“原型 1、原型 2”;所以“可以快速提供”并非技术上绝对错误。应把 D 理解为“不能保证快速交付初始版本、这也不是其决定性特征”,不要记成“螺旋不能做原型”。A、B 同样是教材对螺旋模型的简化概括。
例题 5:增量模型与模块划分¶
以下关于增量开发模型的叙述中,不正确的是( )。
A、不必等到整个系统开发完成就可以使用
B、可以使用较早的增量构件作为原型,从而获得稍后的增量构件需求
C、优先级最高的服务先交付,这样最重要的服务接受最多的测试
D、有利于进行好的模块划分
参考答案与解析
按本题常用口径选 D。 好的模块划分和可演化的总体架构,是支持增量开发的前提;采用增量模型本身不会自动带来好的划分。早期增量可以帮助获取后续需求,重要服务先交付也往往获得更长时间的使用和验证。C 的“最多测试”是这种交付策略的预期好处,并非现实项目的必然保证。
例题 6:冲刺对应的方法¶
在敏捷过程的开发方法中,( )使用了迭代的方法,其中,把每段时间(30天)一次的迭代称为一个“冲刺”,并按需求的优先级别来实现产品,多个自组织和自治的小组并行地递增实现产品。
A、极限编程XP B、水晶法 C、并列争球法 D、自适应软件开发
参考答案与解析
选 C,Scrum。 “冲刺”是直接识别线索。题干 30 天属于旧教材常见示例,现代 Scrum 的 Sprint 为固定长度且不超过一个月,不一定都是 30 天。
例题 7:XP 的经典实践¶
极限编程(XP)的十二个最佳实践不包括( )。
A、小的发布 B、结对编程 C、持续集成 D、精心设计
参考答案与解析
选 D。 经典 XP 实践是“简单设计”,并没有名为“精心设计”的这一项。此题考实践名称,不表示 XP 不需要认真设计;重构、测试和简单设计共同维护质量。
专项题库练习(26 题)¶
本小节对应题库练习共 26 道题目,题目覆盖本节考点,答案与解析默认折叠。
题目 004¶
来源:知识点练习「系统开发基础」第 4 题(原站入口)。
关于统一过程 UP,下列说法不正确的是( )。
-
A. UP是以用例和风险为驱动,以架构为中心,迭代并且增量的开发过程
-
B. UP定义了四个阶段,即起始、精化、构建和确认阶段
-
C. 每次迭代都包含计划、分析、设计、构造、集成、测试以及内部和外部发布
-
D. 每个迭代有五个核心工作流
答案与解析
平台答案:B。
整理解析
平台选 B。UP 的四阶段是起始、精化、构建、移交(Transition),最后一阶段不是“确认”。经典 UP 的五个核心工作流为需求、分析、设计、实现、测试,各次迭代的投入比例不同;不要把它们与 RUP 全部工作流的数量混为一谈。C 的“内部和外部发布”也应按过程裁剪理解:迭代可形成内部可执行版本,不代表每次都必须对最终用户正式发布。
题目 005¶
来源:知识点练习「系统开发基础」第 5 题(原站入口)。
某公司开发的软件产品只有部分需求已明确,其余需求仍需细化;同时受市场竞争压力,产品要尽快上市。以下哪种开发模型最不适合这一情形( )?
-
A. 瀑布
-
B. 原型
-
C. 增量
-
D. 螺旋
答案与解析
平台答案:A。
整理解析
选 A。传统瀑布模型倾向于较早明确需求、按阶段推进,面对尚待澄清的需求和尽早交付压力,返工与等待完整交付的成本较高。原型可帮助澄清需求,增量可先交付核心功能;螺旋突出风险分析。这里是场景适配比较,不意味着瀑布绝不允许反馈,也不意味着其他模型必然更快。
题目 014¶
展开题目 014(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 14 题(原站入口)。
关于增量开发模型,下列说法正确的是( )。
-
A. 需求被清晰定义
-
B. 可以快速构造核心产品
-
C. 每个增量必须要进行风险评估
-
D. 不适宜商业产品的开发
答案与解析
平台答案:B。
整理解析
选 B。增量模型可优先实现可工作的核心功能,再逐步补充能力并吸收反馈。它不要求全部需求一开始都清晰,也适用于商业产品。以每轮风险分析为标志的是螺旋模型;增量开发也可以做风险管理,但不能把“每个增量必须风险评估”当成其定义特征。
题目 024¶
展开题目 024(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 24 题(原站入口)。
某公司准备开发一个技术含量高、客户相关风险也多的产品。以下哪种开发过程模型最适合这一情形( )?
-
A. 瀑布
-
B. 原型
-
C. 增量
-
D. 螺旋
答案与解析
平台答案:D。
整理解析
选 D。螺旋模型以风险驱动每一轮计划、分析、开发与评估,适合逐步验证高技术风险和客户需求风险。平台“仅有螺旋模型考虑风险”过于绝对;其他过程也可开展风险管理,区别在于螺旋把它作为显式的组织核心。
题目 025¶
展开题目 025(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 25 题(原站入口)。
在敏捷开发方法中,哪一种强调不同项目需要采用不同的策略、约定与方法体系( )?
-
A. 极限编程(XP)
-
B. 水晶法(Crystal)
-
C. 并列争球法(Scrum)
-
D. 自适应软件开发(ASD)
答案与解析
平台答案:B。
整理解析
选 B。Crystal 是一组可按团队规模、沟通需求和系统关键程度裁剪的方法,强调为具体项目选择适当实践,而非一套规则适用于所有项目。平台扩展说明中的 Scrum“固定30天迭代”不宜照搬;Sprint 通常是固定长度、一个月或更短的周期。
题目 033¶
展开题目 033(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 33 题(原站入口)。
一个开发小组计划建设超大规模软件,通过通信卫星向订阅者提供移动电话通信,并进行监视与控制。下列过程模型中最不适合的是( )。
-
A. 瀑布
-
B. 原型
-
C. 螺旋
-
D. 喷泉
答案与解析
平台答案:B。
整理解析
平台选 B。题意把“原型模型”视为独立承担整个超大规模系统交付的过程,这种做法较难独自覆盖整体架构、跨系统集成及风险控制。但不能因此断言大型系统不应使用原型;对关键技术、接口和需求制作局部原型,仍能帮助降低风险。
题目 034¶
展开题目 034(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 34 题(原站入口)。
以用户需求为动力、以对象为驱动,并适合面向对象开发方法的过程模型是( )。
-
A. 瀑布
-
B. 原型
-
C. 螺旋
-
D. 喷泉
答案与解析
平台答案:D。
整理解析
选 D。喷泉模型用于描述面向对象开发,允许分析、设计、实现等活动迭代、重叠,体现围绕对象模型逐步完善系统。平台把螺旋模型限定成“面向对象开发模型”不准确;螺旋的核心是风险驱动,可与不同开发方法结合。
题目 042¶
展开题目 042(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 42 题(原站入口)。
关于增量开发模型,下列说法不正确的是( )。
-
A. 不必等到整个系统开发完成就可以使用
-
B. 可以使用较早的增量构件作为原型,从而获得稍后的增量构件需求
-
C. 优先级最高的服务先交付,这样最重要的服务接受最多的测试
-
D. 有利于进行好的模块划分
答案与解析
平台答案:D。
整理解析
平台选 D。增量交付依赖先合理划分功能和接口,划分本身是需要解决的设计难点,不能说选择增量模型就自动得到良好的模块划分。较早交付的重要能力通常会在后续迭代反复验证,但“接受最多测试”也取决于测试计划,不是机械保证。
题目 053¶
展开题目 053(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 53 题(原站入口)。
哪种敏捷方法把定期迭代称作“冲刺”,原题将周期写为每30天一次;按需求优先级实现产品,并由多个自组织、自治小组并行地增量交付( )?
-
A. 极限编程XP
-
B. 水晶法
-
C. 并列争球法
-
D. 自适应软件开发
答案与解析
平台答案:C。
整理解析
选 C,即 Scrum。识别线索是按优先级推进产品,并用 Sprint(冲刺)组织短周期增量。原题的“30天”是旧式教材表述;现代 Scrum 的 Sprint 是固定长度、一个月或更短,不要求恰好30天,多团队并行也不是使用 Scrum 的必要条件。
题目 054¶
展开题目 054(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 54 题(原站入口)。
某开发组为公司开发产品控制软件,全程监控生产与销售:从采购各种材料,经产品加工,到最终销售。采购流程、加工过程和销售过程都可能变化。最不适合采用(54)模型,主要原因是该模型(55)。
请作答:第 54 题。
-
A. 瀑布
-
B. 原型
-
C. 增量
-
D. 喷泉
答案与解析
平台答案:A。
整理解析
本问选 A。采购、加工、销售流程都可能变化,意味着需求需要持续调整;传统瀑布较早确定基线并按阶段推进,跨阶段返工可能较大。选择依据是题干给出的需求变化,而不是平台解析额外假定的“大型系统”。
题目 055¶
展开题目 055(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 55 题(原站入口)。
某开发组为公司开发产品控制软件,全程监控生产与销售:从采购各种材料,经产品加工,到最终销售。采购流程、加工过程和销售过程都可能变化。最不适合采用(54)模型,主要原因是该模型(55)。
请作答:第 55 题。
-
A. 不能解决风险
-
B. 不能快速提交软件
-
C. 难以适应变化的需求
-
D. 不能理解用户的需求
答案与解析
平台答案:C。
整理解析
本问选 C。瀑布按阶段交付与评审,对后期需求变化通常要重新检查上游分析、设计和下游实现,适应成本较高。它并非不能理解用户或绝不管理风险,本题应抓住“难以适应变化的需求”。
同材料可参照第 54 题。
题目 063¶
展开题目 063(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 63 题(原站入口)。
关于螺旋模型,下列说法不正确的是( )。
-
A. 它是风险驱动的,要求开发人员必须具有丰富的风险评估知识和经验
-
B. 它可以降低过多测试或测试不足带来的风险
-
C. 它包含维护周期,因此维护和开发之间没有本质区别
-
D. 它不适用于大型软件开发
答案与解析
平台答案:D。
整理解析
平台选 D。螺旋模型适合风险高、规模较大的项目,用逐轮风险分析决定后续开发、验证或是否继续投入。其他模型也能管理风险,区别是螺旋以此组织过程。C 的“开发与维护没有本质区别”应理解为都可沿迭代周期演化,不表示维护与首次开发的约束、任务和成本完全相同。
题目 064¶
展开题目 064(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 64 题(原站入口)。
关于极限编程 XP 中的结对编程,下列说法不正确的是( )。
-
A. 支持共同代码拥有和共同对系统负责
-
B. 承担了非正式的代码审查过程
-
C. 代码质量更高
-
D. 编码速度更快
答案与解析
平台答案:D。
整理解析
平台选 D。结对编程让一人操作、一人同步检查与讨论,可支持共享理解和持续代码审查;但并不保证即时编码速度更快。平台“编码速度不能改变”同样过于绝对,配对经验、任务类型及减少返工等都会影响局部速度和总体交付效率,质量收益也依赖有效协作。
题目 076¶
展开题目 076(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 76 题(原站入口)。
以下哪项不在经典极限编程 XP 的十二项最佳实践中( )?
-
A. 小型发布
-
B. 结对编程
-
C. 持续集成
-
D. 精心设计
答案与解析
平台答案:D。
整理解析
选 D。经典XP十二项实践中对应的名称是“简单设计”,而不是“精心设计”;小型发布、结对编程、持续集成均在该组实践中。简单设计不等于草率设计,而是满足当前需要并通过测试和重构持续改进,避免无依据的提前复杂化。
题目 084¶
展开题目 084(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 84 题(原站入口)。
关于增量式软件开发,以下哪项叙述不正确( )?
-
A. 容易理解,管理成本低
-
B. 核心的产品往往首先开发,因此经历最充分的“测试”
-
C. 第一个可交付版本所需要的成本低,时间少
-
D. 即使一开始用户需求不清晰,对开发进度和质量也没有影响
答案与解析
平台答案:D。
整理解析
选 D。增量交付可以逐步获取反馈,但需求不清仍会影响架构、估算与接口,导致后续增量返工,不能断言进度和质量完全不受影响。A 所说管理成本低也只是可能的相对优势;多版本配置与集成会增加管理复杂度,并非无条件成立。
题目 094¶
展开题目 094(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 94 题(原站入口)。
企业计划开发涉及多个部门业务的信息管理系统,希望尽早投入实际使用,并在使用中持续完善功能。四种软件过程模型中,哪一种最符合这一目标( )?
-
A. 瀑布模型
-
B. 原型模型
-
C. 演化(迭代)模型
-
D. 螺旋模型
答案与解析
平台答案:C。
整理解析
选 C。先交付可用系统,再依据实际反馈迭代扩充和改善功能,对应演化式开发。原型也可帮助澄清需求,演化原型与这种做法并不完全排斥;本题着重的是持续演进可运行产品,而不只是制作需求验证样品。
题目 104¶
展开题目 104(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 104 题(原站入口)。
有关系统原型的用途,下列哪项被题目判为不正确( )?
-
A. 可以帮助导出系统需求并验证需求的有效性
-
B. 可以用来探索特殊的软件解决方案
-
C. 可以用来指导代码优化
-
D. 可以用来支持用户界面设计
答案与解析
平台答案:C。
整理解析
按原型法通常用于需求澄清、方案探索和界面验证的教材口径,选 C。限定说明:不能据此绝对断言原型无法指导优化;性能原型和实验代码也能提供算法或实现性能的信息。代码优化不是一般需求原型的主要目标,这是平台答案较合理的适用范围。
题目 105¶
展开题目 105(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 105 题(原站入口)。
以下关于极限编程 XP 最佳实践的说法,哪项不正确( )?
-
A. 只处理当前的需求,使设计保持简单
-
B. 编写完程序之后编写测试代码
-
C. 可以按日甚至按小时为客户提供可运行的版本
-
D. 系统最终用户代表应该全程配合XP团队
答案与解析
平台答案:B。
整理解析
选 B。XP 提倡测试先行:先用自动化测试表达预期行为,再编写使测试通过的代码,并持续重构。简单设计、频繁集成或小版本交付、客户代表持续参与都符合其方向。重构应保持外部可观察行为,不能把它简单等同于重新定义需求。
题目 115¶
展开题目 115(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 115 题(原站入口)。
按题目所说的敏捷方法 Scrum“步骤”,下面哪一项不在其中( )?
-
A. Product Backlog
-
B. Refactoring
-
C. Sprint Backlog
-
D. Sprint
答案与解析
平台答案:B。
整理解析
选 B。Product Backlog 和 Sprint Backlog 是 Scrum 的工件,Sprint 是迭代事件;Refactoring 是可采用的工程实践,并非 Scrum 规定的步骤或工件。术语说明:把其余三项统一叫“步骤”不准确,且 Scrum 团队完全可以在 Sprint 中重构。
题目 125¶
展开题目 125(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 125 题(原站入口)。
喷泉模型适用于面向(125)的开发方法;该模型的特点不包括(126)。
请作答:第 125 题。
-
A. 对象
-
B. 数据
-
C. 数据流
-
D. 事件
答案与解析
平台答案:A。
整理解析
本问选 A。喷泉模型针对面向对象开发,分析、设计、编码等活动可相互重叠并反复迭代,便于复用已有对象或构件。题目两个空分别询问适用方法和模型特点,作答时应区分。
题目 126¶
展开题目 126(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 126 题(原站入口)。
喷泉模型适用于面向(125)的开发方法;该模型的特点不包括(126)。
请作答:第 126 题。
-
A. 以用户需求为动力
-
B. 支持软件重用
-
C. 具有迭代性
-
D. 开发活动之间存在明显的界限
答案与解析
平台答案:D。
整理解析
本问选 D。喷泉模型强调活动的迭代与重叠,阶段之间不要求严格完成后才能启动下一阶段,因此“存在明显界限”与其特点不符。活动没有僵硬界限,不代表无需管理或检查阶段成果。
题目 131¶
展开题目 131(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 131 题(原站入口)。
关于螺旋模型,错误的陈述填入(131);该模型不具有的特点填入(132)。
请作答:第 131 题。
-
A. 将风险分析加入到瀑布模型中
-
B. 将开发过程划分为几个螺旋周期,每个周期大致和瀑布模型相符合
-
C. 适合于大规模、复杂且具有高风险的项目
-
D. 可以快速地提供一个初始版本让用户测试
答案与解析
平台答案:D。
整理解析
平台本问选 D,意在把风险驱动的螺旋模型与强调尽快交付增量的模型作区分。螺旋模型通过多轮目标确定、风险分析、开发验证和下一轮规划推进,适合风险较高的复杂项目。限定说明:它也可以使用原型、较早交付可测试版本,所以 D 的“可以快速提供”并非与螺旋模型绝对冲突;应理解为不是其核心保证或区分性特征。
题目 132¶
展开题目 132(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 132 题(原站入口)。
关于螺旋模型,错误的陈述填入(131);该模型不具有的特点填入(132)。
请作答:第 132 题。
-
A. 支持用户需求的动态变化
-
B. 要求开发人员具有风险分析能力
-
C. 基于该模型进行软件开发,开发成本低
-
D. 过多的迭代次数可能会增加开发成本,进而延迟提交时间
答案与解析
平台答案:C。
整理解析
本问选 C。风险识别、评估和多轮迭代需要投入,不能把开发成本低作为螺旋模型的普遍特点。其价值在于提早处理重大风险,可能减少后续损失;并非采取该模型就一定使总成本高于其他方案。
题目 142¶
展开题目 142(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 142 题(原站入口)。
关于增量模型的优点,下面哪项不正确( )?
-
A. 强调开发阶段性早期计划
-
B. 第一个可交付版本所需要的时间少和成本低
-
C. 开发由增量表示的小系统所承担的风险小
-
D. 系统管理成本低、效率高、配置简单
答案与解析
平台答案:D。
整理解析
选 D。多次交付需要协调增量依赖、接口、版本与配置,管理不一定简单或成本低。较小增量可能较早交付并缩小单次变更风险,但不代表整个项目自动具备所有瀑布模型的优点,也不代表需求变化没有代价。
题目 143¶
展开题目 143(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 143 题(原站入口)。
以下关于敏捷统一过程 AUP 的陈述,哪项不正确( )?
-
A. 在大型任务上连续
-
B. 在小型活动上迭代
-
C. 每一个不同的系统都需要一套不同的策略、约定和方法论
-
D. 采用经典的UP阶段性活动,即初始、精化、构建和转换
答案与解析
平台答案:C。
整理解析
选 C。AUP 保留初始、精化、构建、转换等 UP 阶段,在阶段内部迭代交付;题目用“大型上连续、小型上迭代”描述这种组织方式。C 更接近水晶方法按项目规模、关键性等裁剪方法的思想,不是 AUP 的特有原则,也不意味着每个系统都必须从零发明方法论。
题目 154¶
展开题目 154(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 154 题(原站入口)。
以下关于快速原型模型优点的叙述,哪一项不正确( )?
-
A. 有助于满足用户的真实需求
-
B. 适用于大型软件系统的开发
-
C. 开发人员快速开发出原型系统,因此可以加速软件开发过程,节约开发成本
-
D. 原型系统已经通过与用户的交互得到验证,因此对应的规格说明文档能正确描述用户需求
答案与解析
平台答案:B。
整理解析
平台选 B,按教材意图是不把“适合大型系统整体开发”当作快速原型模型的固有优势。限定说明:大型项目也可以在局部或需求阶段使用原型,并非规模大就不能采用;快速搭出原型也不自动节约总成本。D 的验证更只能增加对需求的信心,不能保证规格说明已完整、无误,题目中这些表述不宜当作普遍保证。
三、软件开发方法¶
方法与模型描述的侧重点不同:模型组织开发过程,方法提供分析、设计与实现的思路,两者可以组合。
| 方法 | 核心思路 | 常见适用线索 |
|---|---|---|
| 结构化方法 | 用户需求为基础,自顶向下、逐步分解;用数据流和功能分解组织分析设计,强调阶段成果与文档 | 业务与数据处理规则较清楚,需求较稳定 |
| 原型化方法 | 快速建立原型、用户评价、反复修正 | 需求不清、交互需要验证;也可以用于大型系统的局部 |
| 面向对象方法 | 围绕对象、职责及协作建立连贯模型,支持封装和复用 | 领域对象及其关系清楚,需要持续演化 |
| Jackson 方法 | 根据输入、输出数据结构推导程序结构 | 数据结构与处理结构关系密切的程序设计问题 |
原课件把“结构化方法”直接等同于“瀑布模型”,这是简化:结构化分析与设计也可以在迭代中使用。原型法主要价值是获取反馈,不天然保证“更好的复用性”;抛弃式原型甚至明确不进入正式产品。
例题 8:需求稳定程度与开发方法¶
若用户需求不清晰且经常发生变化,但系统规模不太大且不太复杂,则最适宜采用( )开发方法,对于数据处理领域的问题,若系统规模不太大且不太复杂,需求变化也不大,则最适宜采用( )开发方法。
A、结构化 B、Jackson C、原型化 D、面向对象
A、结构化 B、Jackson C、原型化 D、面向对象
参考答案与解析
参考 C、A。 第一空“需求不清、经常变化”适合通过原型获取反馈;第二空是教材描述的结构化方法典型场景。Jackson 方法强调数据结构驱动程序结构,题干没有提供这一决定性线索。规模大小只是题目背景,不是方法的硬性适用边界。
专项题库练习(4 题)¶
本小节对应题库练习共 4 道题目,题目覆盖本节考点,答案与解析默认折叠。
题目 002¶
来源:知识点练习「系统开发基础」第 2 题(原站入口)。
关于结构化开发方法,下列说法不正确的是( )。
-
A. 将数据流映射为软件系统的模块结构
-
B. 一般情况下,数据流类型包括变换流型和事务流型
-
C. 不同类型的数据流有不同的映射方法
-
D. 一个软件系统只有一种数据流类型
答案与解析
平台答案:D。
整理解析
选 D。结构化设计把分析得到的数据流图映射为模块结构,常用变换映射和事务映射。一个系统的不同部分可以分别呈现这两类数据流,不能规定全系统只能有一种。
题目 012¶
来源:知识点练习「系统开发基础」第 12 题(原站入口)。
关于结构化开发方法,下列说法不正确的是( )。
-
A. 总的指导思想是自顶向下,逐层分解
-
B. 基本原则是功能的分解与抽象
-
C. 与面向对象开发方法相比,更适合于大规模、特别复杂的项目
-
D. 特别适合于数据处理领域的项目
答案与解析
平台答案:C。
整理解析
选 C。结构化方法强调自顶向下、功能分解与抽象,对以数据处理为中心且需求较稳定的系统有适用性。它并不因这些特点就普遍比面向对象方法更适合大规模复杂项目;实际还取决于需求变化、领域建模、架构和团队能力,不能仅按规模判定方法优劣。
题目 031¶
来源:知识点练习「系统开发基础」第 31 题(原站入口)。
若用户需求尚不清楚且经常变化,但系统规模不大、复杂度不高,最适合采用(31)开发方法。若问题属于数据处理领域,系统同样不大、不复杂,而且需求变化较少,则最适合采用(32)开发方法。
请作答:第 31 题。
-
A. 结构化
-
B. Jackson
-
C. 原型化
-
D. 面向对象
答案与解析
平台答案:C。
整理解析
本问选 C。需求不清晰且经常变化时,可先构建原型让用户试用和反馈,再逐步澄清需要做什么;题目还限制系统不大、不复杂,符合这种沟通方式的常见适用场景。平台说“只有原型化适用”过于绝对,面向对象等方法也可结合原型和迭代。
题目 032¶
来源:知识点练习「系统开发基础」第 32 题(原站入口)。
若用户需求尚不清楚且经常变化,但系统规模不大、复杂度不高,最适合采用(31)开发方法。若问题属于数据处理领域,系统同样不大、不复杂,而且需求变化较少,则最适合采用(32)开发方法。
请作答:第 32 题。
-
A. 结构化
-
B. Jackson
-
C. 原型化
-
D. 面向对象
答案与解析
平台答案:A。
整理解析
本问选 A。题目强调数据处理、需求较稳定和规模复杂度有限,按教材选用面向功能分解与数据流分析的结构化方法。Jackson 也与数据结构驱动的设计有关,但不能仅因“数据处理”就认定必须选择它;本题是在给定的整体开发方法分类下作适配选择。
同材料可参照第 31 题。
四、系统分析与需求¶
需求分析回答什么¶
需求分析不只列功能,还应明确**质量要求、业务规则、约束、边界及验收依据**。例如“发工资”是能力,“3 秒内响应”是质量要求,“使用指定身份系统”是约束。
常见活动包括:识别问题 → 分析与协商需求 → 编制需求规格 → 评审与确认。评审关注正确性、完整性、一致性、可行性和可验证性;并非直接决定全部实现细节。
例题 9:需求分析的输出¶
软件开发过程中,需求分析阶段的输出不包括( )。
A、数据流图 B、实体联系图 C、数据字典 D、软件体系结构图
参考答案与解析
选 D。 软件体系结构主要是设计阶段的产物;DFD、E-R 图和数据字典可用于需求分析,分别帮助描述功能/数据流、数据关系和数据定义。迭代项目可以提前探索架构,但不改变本题对主要产物的分类。
获取方法与分类¶
访谈、联合研讨、问卷、观察、参与业务、查阅历史文档及原型反馈等方法可互补。业务需求、用户需求、系统需求是不同抽象层次;功能、性能和约束是另一组分类维度,不能简单一一对应。
课件另用“基本需求(明示)、期望需求(隐含)、兴奋需求”描述需求获取中的类别。兴奋需求能带来额外满意度,不表示它必然是应删除的“冗余”。这组教材用语也不宜直接与 Kano 模型的各类别同名互换;仍需通过价值、成本和优先级决定是否纳入。
例题 10:功能需求与质量要求¶
某企业财务系统的需求中,属于功能需求的是( )。
A、每个月特定的时间发放员工工资
B、系统的响应时间不超过3秒
C、系统的计算精度符合财务规则的要求
D、系统可以允许100个用户同时查询自己的工资
参考答案与解析
按题目的分类口径选 A。 发放工资是系统要提供的业务功能;响应时间是性能要求,并发用户数量是容量要求,计算精度在此归为准确性等质量要求。
实际需求中,精度与舍入规则也可能是具体的业务功能规则,不能把所有带数字的要求都归成非功能需求。应看描述的是业务行为还是该行为需达到的质量程度。
结构化分析的产物¶
典型成果包括**分层数据流图(DFD)、数据字典、加工逻辑说明**及补充材料;还可使用实体联系图描述数据关系、状态模型描述动态行为。
| 元素 | 关注什么 | 常见命名或判断线索 |
|---|---|---|
| 外部实体 | 系统边界外的数据来源或接收者 | 人、组织、其他系统;“外部”相对于当前建模边界 |
| 数据流 | 被传递的数据 | 名词或名词短语;箭头表示数据方向 |
| 加工 | 输入数据如何转换为输出数据 | 动宾短语,例如“校验订单” |
| 数据存储 | 需要保存的数据 | 文件、数据表、逻辑数据集合 |
数据流至少一端应连接加工,不能用“外部实体 → 数据存储”跳过处理逻辑。DFD 描述逻辑数据变换,不表达严格的控制执行顺序。分解后要检查父图与子图的输入输出平衡,不能凭空增加或丢失对外数据流。
若把原示意图中孤立的
P作为实际加工,它没有输入输出,就不是完整合法的加工描述;若只是图例,应明确标出。不能把该孤立图元照搬为规范示例。数据存储D1/D2/D3也应补充清晰名称和字典定义。
数据字典统一定义数据项、数据结构、数据流、数据存储及相关加工说明等。课件所用教材把外部实体排除在该题的数据字典条目清单外,不能因此推断外部实体无须说明:系统边界、交互方、输入输出契约仍需要记录,不论它是否由本团队开发。
同一业务对象在不同模型中的角色¶
DFD 问“谁向系统提供数据、数据怎样加工”,E-R 图问“需要保存哪些对象及其关系”,状态模型问“事件使对象怎样改变状态”。例如移动挂号应用中,患者向软件提交预约,在 DFD 中是外部实体;患者编号、姓名等需要保存,在 E-R 图中又可构成患者实体;预约从待确认变为已确认,则由状态模型描述。DFD 的外部实体不等于 E-R 图的弱实体:弱实体缺少独立标识,需要结合所属实体的标识才能唯一确定,例如只在某订单内唯一的订单行号。
画 DFD 时从整个系统逐层分解到基本加工,抽象程度逐步降低。除了父子图边界平衡,还要检查加工的语义:无输入却产生输出是“奇迹”,有输入却无输出是“黑洞”,输入不足以解释输出是“灰洞”。平衡只检查分层接口,不能代替这三项检查。完整画图步骤见数据流图专题。
加工逻辑、判定树与判定表¶
每个不再分解的基本加工都需要说明**输入按什么业务规则产生输出**。可用结构化语言的“如果/否则”、判定树或判定表表达,此时不必选定实现用的集合类型、数据库索引或具体算法。程序流程图、N-S 盒图更偏重顺序、选择、循环等执行结构。
判定树沿树枝依次检查条件,叶子给出动作;判定表把条件取值放在上部、动作放在下部,每列是一条规则,适合检查多条件组合是否遗漏或冲突。若有 n 个相互独立的布尔条件,完整枚举有 2^n 种组合;化简后的规则列数可能更少,不能反过来改变原始组合数。
例如下载策略规定:“非 Wi-Fi 时一律等待;Wi-Fi 下电量充足则自动下载,否则提示用户”。设 W 表示 Wi-Fi,P 表示电量充足,原始组合是 TT、TF、FT、FF,化简后为:
| 条件或动作 | 规则 1 | 规则 2 | 规则 3 |
|---|---|---|---|
| W | 真 | 真 | 假 |
| P | 真 | 假 | — |
| 动作 | 自动下载 | 提示用户 | 等待 |
“—”表示该条件无论真假,整套动作都相同。只有动作集合一致、且合并不会覆盖原本不同的规则时才能合并;如果一种情形还要额外发送通知,就不能仅因两者都允许下载而合成同一列。
例题 11:数据流图与外部实体¶
在结构化分析中,用数据流图描述( )。当采用数据流图对一个图书馆管理系统进行分析时,( )是一个外部实体。
A、数据对象之间的关系,用于对数据建模
B、数据在系统中如何被传送或变换,以及如何对数据流进行变换的功能或子功能,用于对功能建模
C、系统对外部事件如何响应,如何动作,用于对行为建模
D、数据流图中的各个组成部分
A、读者 B、图书 C、借书证 D、借阅
参考答案与解析
选 B、A。 DFD 描述数据如何流动和变换,属于功能建模。读者在图书馆管理系统边界外与系统交换数据,是外部实体;“借阅”是活动,“图书”和“借书证”是领域中的信息对象,不会仅因是实物就成为 DFD 的外部实体。
例题 12:数据字典的教材口径¶
数据字典是结构化分析的一个重要输出。数据字典的条目不包括( )。
A、外部实体 B、数据流 C、数据项 D、基本加工
参考答案与解析
按本课件的数据字典条目约定,选 A。 数据流、数据项、基本加工等在该结构化分析口径下需要定义说明;外部实体另在边界与接口说明中描述。这不是所有工具或方法的数据字典都必须排除外部实体的通用禁令。
专项题库练习(17 题)¶
本小节对应题库练习共 17 道题目,题目覆盖本节考点,答案与解析默认折叠。
题目 037¶
来源:知识点练习「系统开发基础」第 37 题(原站入口)。
数据流图中,某个加工要执行的动作取决于多个逻辑条件。哪种工具能清楚表达复杂条件组合与相应动作之间的关系( )?
-
A. 流程图
-
B. NS盒图
-
C. 形式语言
-
D. 决策树
答案与解析
平台答案:D。
整理解析
选 D。决策树沿分支表示条件取值,在叶子处给出对应动作,能直观看到一组条件如何导向处理策略。决策表也常适合表达复杂条件组合,但不在本题选项中;流程图和NS图更侧重执行控制结构。
题目 049¶
来源:知识点练习「系统开发基础」第 49 题(原站入口)。
软件开发的需求分析阶段,其输出不包括( )。
-
A. 数据流图
-
B. 实体联系图
-
C. 数据字典
-
D. 软件体系结构图
答案与解析
平台答案:D。
整理解析
选 D。按结构化开发的阶段划分,数据流图、概念实体联系图与数据字典用于表达需求分析结果;软件体系结构图主要是设计阶段的产物,回答实现方案如何组织。这里是教材的阶段职责区分,实际迭代中可交叉完善。
题目 050¶
展开题目 050(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 50 题(原站入口)。
结构化分析中的数据流图用于描述(50)。若为图书馆管理系统绘制数据流图,下列(51)属于外部实体。
请作答:第 50 题。
-
A. 数据对象之间的关系,用于对数据建模
-
B. 数据在系统中如何被传送或变换,以及如何对数据流进行变换的功能或子功能,用于对功能建模
-
C. 系统对外部事件如何响应,如何动作,用于对行为建模
-
D. 数据流图中的各个组成部分
答案与解析
平台答案:B。
整理解析
本问选 B。DFD 展示数据从哪里来、经过哪些加工和存储、流向哪里,从而表达系统的功能分解。实体之间的关系通常用 ER 图描述,事件驱动的状态变化通常用状态模型描述,数据字典则解释图中数据项的含义。
题目 051¶
展开题目 051(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 51 题(原站入口)。
结构化分析中的数据流图用于描述(50)。若为图书馆管理系统绘制数据流图,下列(51)属于外部实体。
请作答:第 51 题。
-
A. 读者
-
B. 图书
-
C. 借书证
-
D. 借阅
答案与解析
平台答案:A。
整理解析
本问选 A。相对于图书馆管理软件的边界,读者提交查询、借阅等请求并接收结果,是数据的外部来源或去处。图书和借书证更适合作为业务数据对象,借阅则是一项业务活动,不能仅因它们与系统有关就都叫外部实体。
同材料可参照第 50 题。
题目 071¶
展开题目 071(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 71 题(原站入口)。
某医院预约系统允许患者查看专家特长介绍与就诊时间,记录患者信息,并让患者预约特定时间就诊。用 DFD 做功能建模时,患者属于(71);用 ERD 做数据建模时,患者属于(72)。
请作答:第 71 题。
-
A. 外部实体
-
B. 加工
-
C. 数据流
-
D. 数据存储
答案与解析
平台答案:A。
整理解析
本问选 A。以预约软件为系统边界,患者向系统提供预约和身份信息、读取专家及时间信息,是系统外部的数据来源与接收者,所以在DFD中画为外部实体。判断依据是系统边界和信息交互,不是“患者不参与任何加工”。
题目 072¶
展开题目 072(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 72 题(原站入口)。
某医院预约系统允许患者查看专家特长介绍与就诊时间,记录患者信息,并让患者预约特定时间就诊。用 DFD 做功能建模时,患者属于(71);用 ERD 做数据建模时,患者属于(72)。
请作答:第 72 题。
-
A. 实体
-
B. 属性
-
C. 联系
-
D. 弱实体
答案与解析
平台答案:A。
整理解析
本问选 A。ERD 把需要存储其属性、与预约等业务对象建立联系的患者建模为实体。题干没有给出必须依靠另一实体才能识别患者的条件,不能据此判为弱实体。相同业务对象在DFD和ERD中的角色可以不同,因为两种模型的关注点不同。
同材料可参照第 71 题。
题目 073¶
展开题目 073(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 73 题(原站入口)。
企业财务系统的下列要求中,属于功能需求的是( )。
-
A. 每个月特定的时间发放员工工资
-
B. 系统的响应时间不超过 3 秒
-
C. 系统的计算精度符合财务规则的要求
-
D. 系统可以允许100个用户同时查询自己的工资
答案与解析
平台答案:A。
整理解析
平台选 A。按月定时发工资直接规定系统要完成的业务行为;响应时间和并发人数属于性能约束。计算精度在本题按质量或业务约束归类,但若具体要求规定金额计算、舍入方式,它也可能成为可执行的功能规则,不能把所有精度描述一概排除在功能需求之外。
题目 082¶
展开题目 082(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 82 题(原站入口)。
结构化分析会产生数据字典。按本题采用的条目分类,以下哪项不属于数据字典条目( )?
-
A. 外部实体
-
B. 数据流
-
C. 数据项
-
D. 基本加工
答案与解析
平台答案:A。
整理解析
按本题教材的“数据项、数据流、数据存储、基本加工”分类选 A。外部实体描述系统边界外的数据来源或去向。限定说明:不同方法的数据字典也可能登记外部实体,不能把排除它说成所有工具的统一规则;平台解析先说包含外部实体、随后又排除,前后口径不一致。
题目 083¶
展开题目 083(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 83 题(原站入口)。
商店系统的“检查订货单”加工遵循以下规则:金额大于 5000 元且欠款超过 60 天时不批准;金额大于 5000 元而欠款不超过 60 天时,发批准书和发货单;金额不超过 5000 元时也发批准书、发货单,若同时欠款超过 60 天,还须发催款通知书。用决策表表示时,题目所问的“条件取值的组合数最少”为多少( )?
-
A. 2
-
B. 3
-
C. 4
-
D. 5
答案与解析
平台答案:B。
整理解析
按合并相同行为的规则列计数选 B,共 3 列:①金额>5000 且逾期>60 天,不批准;②逾期≤60 天,不论金额大小都发批准书和发货单;③金额≤5000 且逾期>60 天,发上述两单并催款。两个布尔条件原本仍有 2×2=4 种取值组合;“3”指决策表化简后的规则数,不能理解为原始条件组合只有三种。
题目 092¶
展开题目 092(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 92 题(原站入口)。
下列哪项不属于结构化分析阶段的典型输出( )?
-
A. 数据流图
-
B. 数据字典
-
C. 加工逻辑
-
D. 结构图
答案与解析
平台答案:D。
整理解析
选 D。结构化分析用分层数据流图、数据字典和基本加工逻辑描述系统需要完成的工作;模块结构图描述模块划分及调用关系,属于结构化设计。
题目 093¶
展开题目 093(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 93 题(原站入口)。
航空公司开发机票预订系统,旅客用信用卡付款,系统通过信用卡公司已有管理系统的接口完成支付。用数据流图建立需求模型时,这个信用卡管理系统属于哪类元素( )?
-
A. 外部实体
-
B. 加工
-
C. 数据流
-
D. 数据存储
答案与解析
平台答案:A。
整理解析
选 A。建模边界是机票预订系统,信用卡管理系统位于边界外,通过接口提供服务并交换数据,因而是外部实体;它并非预订系统内部的加工或数据存储。
题目 102¶
展开题目 102(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 102 题(原站入口)。
采用数据流图进行建模时,应遵循怎样的分解方向和抽象层次变化( )?
-
A. 自顶向下、从具体到抽象
-
B. 自顶向下、从抽象到具体
-
C. 自底向上、从具体到抽象
-
D. 自底向上、从抽象到具体
答案与解析
平台答案:B。
整理解析
选 B。先描述整个系统与外部的数据交换,再把较高层的加工逐层分解为更具体的子加工,即自顶向下、从抽象到具体。各层仍是需求的逻辑模型,不等于越细就必须写成实现代码。
题目 112¶
展开题目 112(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 112 题(原站入口)。
某考试系统先审核报名表;审核通过的考生登录后,系统自动生成一套试题,由考试中心提供标准答案;阅卷老师提交成绩,考生再查询自己的分数。用数据流图建模时,哪项不是外部实体( )?
-
A. 考生
-
B. 考试中心
-
C. 阅卷老师
-
D. 试题
答案与解析
平台答案:D。
整理解析
选 D。考生、考试中心和阅卷老师是相对系统边界的外部参与者,可作为数据来源或去向;试题是系统处理和传递的数据内容,不是独立的外部参与者。
题目 123¶
展开题目 123(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 123 题(原站入口)。
结构化分析中,用于定义和说明数据流图元素的工具是哪一项( )?
-
A. 加工逻辑
-
B. 实体联系图
-
C. 流程图
-
D. 数据字典
答案与解析
平台答案:D。
整理解析
选 D。数据字典为图中的数据项、数据流、存储及相关加工提供名称、组成、含义或说明,补足图形本身无法表达的细节。加工逻辑则进一步解释基本加工怎样把输入转换成输出。
题目 138¶
展开题目 138(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 138 题(原站入口)。
关于结构化分析的数据字典中所写的加工逻辑,下列哪一项不正确( )?
-
A. 对每一个基本加工,应该有一个加工逻辑
-
B. 加工逻辑描述输入数据流变换为输出数据的加工规则
-
C. 加工逻辑必须描述实现加工的数据结构和算法
-
D. 结构化语言,判定树和判定表可以用来表示加工逻辑
答案与解析
平台答案:C。
整理解析
选 C。基本加工规格说明要明确输入如何按业务规则转为输出,但需求分析不必指定实现这些规则的具体数据结构和算法。结构化语言、判定树或判定表可以用来消除业务逻辑歧义。
题目 140¶
展开题目 140(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 140 题(原站入口)。
绘制分层数据流图时,以下哪一项不属于应遵循的要求( )?
-
A. 给图中的每个数据流、加工、数据存储和外部实体命名
-
B. 图中要表示出控制流
-
C. 一个加工不适合有过多的数据流
-
D. 分解尽可能均匀
答案与解析
平台答案:B。
整理解析
选 B。通常的 DFD 表示数据来源、流动、存储和转换,并不用于画执行先后、条件分支等控制流。纠错:父子图平衡是保持分解前后边界数据流一致;避免无输入却有输出、无输出或输入不足以产生输出的加工,是另一组语义检查,并非只要父子平衡就自动满足。
题目 152¶
展开题目 152(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 152 题(原站入口)。
零件厂商系统中的一个基本加工,会根据客户类型、订单金额和客户信用等条件的组合采取不同动作。哪种方式最适合编写其加工规格说明( )?
-
A. 自然语言
-
B. 流程图
-
C. 判定表
-
D. 某程序设计语言
答案与解析
平台答案:C。
整理解析
选 C。判定表把多个条件的取值组合与应执行动作对应起来,便于检查规则遗漏或冲突。自然语言和流程图并非绝对不能描述加工,也不只用于实现阶段,只是这种多条件决策用判定表通常更清楚。
五、系统设计¶
概要设计、详细设计与接口¶
分析侧重“需要什么”,设计侧重“如何组织与实现”。设计中常用抽象、逐步求精、信息隐藏和模块独立性等原则。
| 层次 | 主要决策 | 典型产出 |
|---|---|---|
| 概要设计 | 架构、模块职责、模块关系与接口契约、数据组织方案 | 架构与模块结构、主要接口说明、逻辑数据模型等 |
| 详细设计 | 模块内部算法和数据结构、接口细节、具体存储与输入输出形式 | 算法与过程描述、内部数据结构、物理设计及详细规格 |
数据与接口都可以跨两个层次逐步细化。概要阶段要明确模块之间传递什么、依赖什么;详细阶段补充参数、错误处理、协议、界面行为等。接口设计不只等于人机界面设计,也不只属于详细设计。 数据库的概念、逻辑和物理设计在具体过程中的归属也应服从项目约定,不能只靠名称判阶段。
从数据流到模块结构¶
结构化设计将分析阶段的 DFD 映射为模块结构。**变换流**呈现“输入处理 → 中心变换 → 输出处理”,例如读取传感器记录、换算单位、生成报表;可据此划分输入、变换和输出分支。**事务流**先识别请求类别,再由事务中心分派到不同处理路径,例如按请求类型执行查询、预约或取消。一个系统可以同时包含两类流,事务中的某条处理分支内部还可以是变换流;这里的“事务”不专指数据库事务。
模块结构图用方框表示模块,用连线表达调用关系,并标记传递的数据或控制信息。常见画法以空心圆箭头表示数据、实心圆箭头表示控制;应结合图例确认。它关注“谁调用谁、传什么”,不用于逐条表示模块内部的顺序、分支和循环。
| 模块职责 | 数据和控制怎样流动 |
|---|---|
| 传入模块 | 从下属模块或外部取得数据,必要时处理后交给上级 |
| 传出模块 | 接收上级数据,处理后向下属模块或外部输出 |
| 变换模块 | 对输入作计算或转换,再返回处理结果 |
| 协调模块 | 安排下属模块的调用,协调它们的工作 |
例如控制模块先调用读取模块取得原始定位点,再调用计算模块求行程距离,最后调用展示模块输出。计算模块有输入也有输出,但其主要职责仍是变换;不能看到“返回数据”就判为传出模块。
MVC、三层 C/S 与常见架构风格¶
MVC 按职责分离模型、视图和控制器:模型保存领域状态与业务规则,视图负责呈现,控制器解释用户输入并协调模型更新。以记账界面为例,金额与记账规则属于模型,列表和统计图属于视图,处理“保存”动作属于控制器。分离后,同一模型可以供多种视图使用,也便于分工和修改界面;运行速度仍由计算、数据访问与实现决定。Android 的 Activity 往往混有多种职责,不能只按类名机械对应 MVC。
三层 C/S 按表现层、业务功能层、数据层分工。例如 Android 客户端展示订单,服务端校验订单规则,数据库保存订单。各层通过约定接口协作,可使用不同语言和平台;C/S 也可以采用两层等其他组织方式。逻辑上的三层不要求恰好部署在三台机器,客户端也可能需要升级。MVC 则是另一种职责划分,不能直接把 Model、View、Controller 分别替换成上述三层。
| 架构风格 | 协作方式与适用线索 | 优点与代价 |
|---|---|---|
| 仓库风格 | 多个构件围绕共享的中心数据访问和更新;常见示例为数据库、黑板及教材中的超文本系统 | 便于共享数据、集中管理,但构件依赖共同的数据模式;容错需要另行设计,集成交互也不一定容易测试 |
| 黑板系统 | 多个“知识源”依据共享黑板中的当前状态贡献局部结果,由控制机制协调推进 | 适合不能预先固定完整求解顺序的问题;触发次序和共享状态使结果重现、调试更复杂 |
| 管道—过滤器 | 过滤器转换输入数据,管道把输出传给下一过滤器;常见于编译和批处理流程 | 接口统一时易复用、可流水并行;数据转换、缓冲和传输有成本,最慢阶段会限制吞吐量 |
| 微服务 | 按业务能力拆分职责明确、可独立部署的服务,通过约定接口协作 | 便于分别演进与扩展,但要处理网络调用、局部故障及跨服务数据一致性 |
| 事件驱动 | 事件产生者发布发生的事实,订阅者或处理器据此作出响应 | 降低产生者与处理者的直接依赖;采用异步消息时须考虑延迟、重复投递和乱序 |
架构示例不是排他分类:编译器既可用词法、语法等处理阶段构成管道,也可共享语法树和符号表。选择风格时应看实际组织方式,不能仅靠产品名称判断。
例如预约、收费和通知分别作为独立服务部署,体现微服务划分;收费完成后发布事件,由通知服务发送预约确认,又体现事件驱动。前者关注服务怎样划分和部署,后者关注怎样传递变化并触发处理。仅看到“调用 API”不足以断定采用微服务,单体系统也可以提供 API。
数据库访问也要区分技术层次:JDBC 是 Java 数据库访问接口,用于建立连接、执行 SQL 和读取结果;XML 是数据表示格式,CGI 是 Web 服务器与外部程序交互的接口规范,COM 是组件对象模型。后三者可以参与一个访问数据库的系统,但并不因此与数据库访问接口同义。Android 的 Room/SQLite 属于端上本地持久化,访问远端业务通常经服务端 API;题目中的 Java Web 数据库连接应按 JDBC 的职责理解。
容错设计与冗余¶
容错是发生部分故障后仍维持必要服务或恢复服务的能力,不能与“从不出错”混同。**结构冗余**增加备用部件或实现,**信息冗余**附加校验等信息,**时间冗余**通过重复执行、重试等换取恢复机会。它们都要付出成本,也不能保证抵抗共同原因故障。
旧教材另列的**冗余附加技术**是使冗余机制能工作的配套部分:备份程序的存储和调用、错误检测与恢复程序,以及所需的固化程序等。它不是“所有重要程序和数据都多存一份”的总称。Android 中用校验发现缓存损坏、切换到可用备份,还需检测、选择和恢复逻辑;备份本身存在并不等于已经实现容错。
例题 13:概要设计与模块算法¶
概要设计文档的内容不包括( )。
A、体系结构设计 B、数据库设计 C、模块内算法设计 D、逻辑数据结构设计
参考答案与解析
选 C。 模块内部的具体算法主要在详细设计中确定;架构和逻辑数据结构属于概要设计的重要内容。“数据库设计”范围较广,概念和逻辑方案与物理细节可分别在不同层次细化。
例题 14:详细设计与模块接口¶
软件详细设计阶段的主要任务不包括( )。
A、数据结构设计 B、算法设计 C、模块之间的接口设计 D、数据库的物理设计
参考答案与解析
按题目的阶段划分选 C。 模块之间的主要接口与调用关系应在概要设计时明确,详细设计重点是模块内部算法、数据结构及更具体的物理实现。
这不表示详细设计不再处理任何接口细节。原课件另把“接口设计”整体列入详细设计,容易与本题冲突,应统一理解为“概要定契约,详细补细节”。
例题 15:接口设计的依据和任务¶
在采用结构化开发方法进行软件开发时,设计阶段接口设计主要依据需求分析阶段的( )。接口设计的任务主要是( )。
A、数据流图 B、E-R图 C、状态-迁移图 D、加工规格说明
A、定义软件的主要结构元素及其之间的关系
B、确定软件涉及的文件系统的结构及数据库的表结构
C、描述软件与外部环境之间的交互关系,软件内模块之间的调用关系
D、确定软件各个模块内部的算法和数据结构
参考答案与解析
选 A、C。 数据流图提供系统与外部实体、内部加工之间交换数据的依据;接口设计描述这些交互和模块调用的约定。体系结构设计关注主要结构元素及关系,数据设计关注数据组织,过程设计关注模块内算法。
模块独立性与控制范围¶
模块规模、层次深度、宽度、扇入和扇出要合理,功能应清晰可预测。扇入表示直接调用该模块的模块数,扇出表示该模块直接调用的其他模块数;不是一律越大或越小越好。
抽象保留调用者关心的能力、隐藏不必要的细节;信息隐藏把容易变化的实现封装在接口之后。例如调用 loadUser(id) 不应要求界面知道数据来自缓存还是数据库。模块过大难以理解,过小又会增加接口与协调成本;仅因几段语句重复或功能名称相似就合并,也可能把不同职责绑在一起。评价耦合要看调用方式、接口复杂度和信息类型,不能仅数模块有几个功能。
源代码行数更少也不代表效率更高。应先定位耗时或内存瓶颈,再考虑算法、数据结构及运行时:把反复线性查找改为合适的索引可能减少计算,把多行代码挤成一行则不会自动减少机器工作。语言或实现方式可能影响常数开销,是否改善仍要测量。
一个判定的**作用范围**是受其影响的模块集合;模块的**控制范围**是其控制的下属模块范围。设计希望让影响处于可控制的范围内,即**作用范围包含于控制范围**。原文“作用域应该在模块之内”过于模糊,应注意这里不是编程语言的局部变量作用域。
例题 16:作用范围与控制范围¶
以下关于模块化设计的叙述中,不正确的是( )。
A、尽量考虑高内聚、低耦合,保持模块的相对独立性
B、模块的控制范围在其作用范围内
C、模块的规模适中
D、模块的宽度、深度、扇入和扇出适中
参考答案与解析
选 B。 方向写反:希望模块的作用范围位于其控制范围之内,即控制范围包含作用范围。关键词是“影响谁”应处于“能控制谁”的范围中。
内聚:模块内部为何放在一起¶
| 类型(强 → 弱) | 判断依据 | 例子或辨析 |
|---|---|---|
| 功能内聚 | 共同完成一个明确功能 | 计算订单总价所需的各步骤 |
| 顺序内聚 | 前一步输出成为后一步输入 | 读取记录 → 清洗记录 → 转换记录 |
| 通信内聚 | 使用同一输入数据或产生同一输出数据 | 围绕同一客户记录进行若干处理 |
| 过程内聚 | 为遵循某个执行次序而组合 | 先做 A 后做 B,但没有明确的数据接力 |
| 时间内聚 | 在同一时间点或阶段执行 | 程序启动时完成多种初始化 |
| 逻辑内聚 | 把逻辑上同类的不同操作合并,常由标志选择 | 在一个入口中按类型选择不同输入方式 |
| 偶然(巧合)内聚 | 没有强的共同目的 | 无关工具函数随意堆在一起 |
顺序内聚与过程内聚都有次序,区别在于是否存在“前一输出 → 后一输入”的数据联系。 表中等级是传统结构化设计的复习序列,实际设计仍需结合职责、边界和变化原因判断。
例题 17:顺序内聚的决定性线索¶
某模块中各个处理元素都密切相关于同一功能且必须顺序执行,前一处理元素的输出就是下一处理元素的输入,则该模块的内聚类型为( )内聚。
A、过程 B、时间 C、顺序 D、逻辑
参考答案与解析
选 C。 决定性条件是“前一个处理的输出成为下一个处理的输入”,所以是顺序内聚。只有特定执行顺序、没有这条数据联系时,才更接近过程内聚。
耦合:模块之间依赖什么¶
| 类型 | 识别依据 | 注意事项 |
|---|---|---|
| 非直接耦合 | 无直接联系,由上层组织调用 | 不表示整个系统完全没有间接依赖 |
| 数据耦合 | 通过参数传递所需的简单数据 | 例如只传学生编号 |
| 标记耦合 | 通过参数传递记录或结构体 | 例如传整个学生记录;尤其要警惕只用部分字段却依赖整个结构 |
| 控制耦合 | 传入标志等信息,决定被调用模块内部逻辑 | 参数是整数并不能证明它是数据耦合,要看语义 |
| 外部耦合 | 依赖外部约定、设备或格式等 | 本课件采用“共享全局简单变量”的特定分类口径 |
| 公共耦合 | 共享公共数据环境、全局状态 | 一个模块修改共享数据可能影响多个模块 |
| 内容耦合 | 直接使用另一模块内部实现或绕过正常入口 | 破坏封装,依赖最强 |
“外部耦合”在教材之间存在定义差异:课件按共享全局简单变量分类,常见软件工程定义强调外部施加的格式、协议或设备接口。考试要看指定教材,工程实践要描述真实依赖。原图“一个模块有多个入口”本身也不足以证明内容耦合,关键是是否绕过约定边界侵入另一模块内部。
例题 18:数据耦合与标记耦合¶
模块A将学生信息,即学生姓名、学号、手机号等放到一个结构体中,传递给模块B。模块A和B之间的耦合类型为( )耦合。
A、数据 B、标记 C、控制 D、内容
参考答案与解析
按传统分类选 B。 通过参数传递整个学生记录/结构体,是标记耦合;只传独立简单数据更接近数据耦合。并不是“参数里装的是数据,所以一定叫数据耦合”,要看参数的结构和使用方式。
人机界面的三条黄金准则¶
Theo Mandel 的三条准则是:让用户掌握控制、减少用户记忆负担、保持界面一致性。例如允许撤销操作、展示可选项而不是要求记住命令、让同类操作使用一致术语和反馈。
例题 19:黄金准则的范围¶
Theo Mandel在其关于界面设计所提出的三条“黄金准则”中,不包括( )。
A、用户操纵控制 B、界面美观整洁 C、减轻用户的记忆负担 D、保持界面一致
参考答案与解析
选 B。 美观整洁是有价值的界面目标,但不是这三条黄金准则的名称;另外三项分别对应用户控制、减轻记忆负担、一致性。
专项题库练习(43 题)¶
本小节对应题库练习共 43 道题目,题目覆盖本节考点,答案与解析默认折叠。
题目 001¶
来源:知识点练习「系统开发基础」第 1 题(原站入口)。
在 MVC(模型/视图/控制器)架构中,视图负责描述( )。
-
A. 将应用问题域中包含的抽象领域知识呈现给用户的方式
-
B. 应用问题域中所包含的抽象类
-
C. 用户界面对用户输入的响应方式
-
D. 应用问题域中包含的抽象领域知识
答案与解析
平台答案:A。
整理解析
选 A。模型表达领域数据、规则和状态,视图负责把模型内容呈现给用户,控制器负责解释输入并协调相应操作。视图描述的是呈现方式,不等于模型中的抽象类或领域知识本身。
题目 003¶
来源:知识点练习「系统开发基础」第 3 题(原站入口)。
模块 A 把某班某门课的成绩交给模块 B,B 计算平均成绩、最高分和最低分,再把结果返回 A。在软件结构图中,B 属于( )模块。
-
A. 传入
-
B. 传出
-
C. 变换
-
D. 协调
答案与解析
平台答案:C。
整理解析
选 C。B 接收调用方 A 的原始成绩,在内部完成统计变换,再把所得结果返回 A,符合变换模块的职责。判断依据是数据如何进入、加工和返回,而不是模块是否有输入或输出。
题目 006¶
展开题目 006(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 6 题(原站入口)。
在用于屏蔽软件错误的容错系统中,以下哪项不属于“冗余附加”技术的组成部分( )?
-
A. 关键程序和数据的冗余存储及调用
-
B. 冗余备份程序的存储及调用
-
C. 实现错误检测和错误恢复的程序
-
D. 实现容错软件所需的固化程序
答案与解析
平台答案:A。
整理解析
按题目使用的容错教材分类选 A。“冗余附加”指支撑容错机制的额外功能,包括备份程序的存取调用、错误检测与恢复程序、相关固化程序,对应 B、C、D。A 不在这一特定分类的列举中,不能据此说关键程序或数据不能采用冗余。冗余也不等于零故障,平台长解析中“热备备用模块失效率为0”的说法不成立。
题目 013¶
展开题目 013(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 13 题(原站入口)。
模块 A、B、C 中都重复出现同样的 5 个语句,但这些语句彼此没有联系。为消除重复,把这 5 个语句提取成模块 D。D 的内聚类型是( )内聚。
-
A. 功能
-
B. 通信
-
C. 逻辑
-
D. 巧合
答案与解析
平台答案:D。
整理解析
选 D。5 个语句只因在多处重复而被放在一起,彼此没有任务或数据联系,属于巧合内聚,也称偶然内聚。去除重复并不自动提高内聚;功能内聚还要求各部分共同完成一个明确的功能。
题目 023¶
展开题目 023(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 23 题(原站入口)。
选择系统的适当解决方案,把系统划分为若干子系统并建立整体体系结构,属于( )设计阶段的工作。
-
A. 概要
-
B. 详细
-
C. 结构化
-
D. 面向对象
答案与解析
平台答案:A。
整理解析
选 A。概要设计先确定系统整体组织、子系统划分及接口关系;详细设计再细化模块内部的数据结构、算法和实现细节。结构化与面向对象是设计方法,不是与概要、详细相对应的两个时间阶段。
题目 026¶
展开题目 026(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 26 题(原站入口)。
一个模块完成两个操作:向某个数据结构区域写数据,以及从同一区域读取数据。该模块属于( )内聚。
-
A. 过程
-
B. 时间
-
C. 逻辑
-
D. 通信
题目 036¶
展开题目 036(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 36 题(原站入口)。
子系统结构设计需要确定各子系统的模块结构并绘制模块结构图。在这个过程中,不需要考虑下列哪项工作( )?
-
A. 每个子系统如何划分成多个模块
-
B. 每个子系统采用何种数据结构和核心算法
-
C. 如何确定子系统之间、模块之间传送的数据及其调用关系
-
D. 如何评价并改进模块结构的质量
答案与解析
平台答案:B。
整理解析
按结构设计与详细设计的教材分工选 B。模块结构设计重点是划分职责、确定接口和调用关系、评价模块结构;内部数据结构与具体算法通常在详细设计中展开。但对架构有决定影响的核心算法或数据组织,实际工程中仍可能需要提前验证,不能把“不属于本题阶段的主要任务”理解成绝不考虑。
题目 041¶
展开题目 041(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 41 题(原站入口)。
图中模块 A、B 都访问同一组全局变量和数据结构,它们之间属于( )耦合。
-
A. 公共
-
B. 控制
-
C. 标记
-
D. 数据
答案与解析
平台答案:A。
整理解析
选 A。两个模块通过共享的全局数据环境发生关联,属于公共耦合。若仅通过参数传简单数据,通常讨论数据耦合;若传整个记录或结构体,通常讨论标记耦合;传递决定对方执行分支的标志则涉及控制耦合。
题目 043¶
展开题目 043(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 43 题(原站入口)。
设计软件模块结构时,下列哪项不能改进设计质量( )?
-
A. 模块的作用范围应在其控制范围之内
-
B. 模块的大小适中
-
C. 避免或减少使用病态连接(从中部进入或访问一个模块)
-
D. 模块的功能越单纯越好
答案与解析
平台答案:D。
整理解析
平台选 D,宜理解为反对“越细小、越简单就一定越好”的绝对化:过度拆分会增加接口与协调成本,模块还应保持适当规模。单一职责与功能内聚本身是合理目标;若把“功能单纯”理解成职责明确,D也可成为良好原则。因此平台仅靠区分“单纯”和“单一”判错,措辞依据不足。
题目 044¶
展开题目 044(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 44 题(原站入口)。
仓库体系结构由一个居于中心的数据仓库和若干其他构件组成,各构件访问仓库并对数据进行增加、删除、修改等操作。以下关于这种风格的说法中,不正确的是(44);不属于仓库风格的是(45)。
请作答:第 44 题。
-
A. 支持可更改性和可维护性
-
B. 具有可复用的知识源
-
C. 支持容错性和健壮性
-
D. 测试简单
答案与解析
平台答案:D。
整理解析
平台选 D。尤其在黑板式系统中,多种知识源围绕共享状态协作,调度与交互可能使测试、结果重现更困难,不能保证“测试简单”。原解析将黑板系统的特征泛化到所有仓库系统也偏宽;集中仓库的容错性仍须通过备份、恢复等设计实现,不能从风格名称直接保证。
题目 045¶
展开题目 045(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 45 题(原站入口)。
仓库体系结构由一个居于中心的数据仓库和若干其他构件组成,各构件访问仓库并对数据进行增加、删除、修改等操作。以下关于这种风格的说法中,不正确的是(44);不属于仓库风格的是(45)。
请作答:第 45 题。
-
A. 数据库系统
-
B. 超文本系统
-
C. 黑板系统
-
D. 编译器
答案与解析
平台答案:D。
整理解析
按题目常见架构示例分类,平台选 D:数据库、黑板、超文本被列为仓库风格,编译器常用作管道—过滤器的例子。但编译器也可以围绕共享语法树、符号表等组织成仓库结构,实际可混合多种风格;本题答案不能理解成编译器绝不属于仓库风格。
同材料可参照第 44 题。
题目 052¶
展开题目 052(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 52 题(原站入口)。
在结构化开发方法中,主要负责模块内部数据结构及算法设计的是( )。
-
A. 体系结构设计
-
B. 数据设计
-
C. 接口设计
-
D. 过程设计
答案与解析
平台答案:D。
整理解析
选 D。过程设计把结构中的部件细化为可执行的处理步骤,确定内部算法和所需数据结构。数据设计关注文件、数据库等数据组织,体系结构设计关注主要部件及关系,接口设计关注交互边界;本题强调的是模块内部的处理实现。
题目 060¶
展开题目 060(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 60 题(原站入口)。
某模块中,处理 A 向数据结构 X 写入数据,处理 B 从同一数据结构 X 读取数据。该模块属于( )内聚。
-
A. 逻辑
-
B. 过程
-
C. 通信
-
D. 内容
答案与解析
平台答案:C。
整理解析
选 C。读、写操作都围绕数据结构 X 展开,结合点是共同数据,因此是通信内聚。仅有执行先后要求通常指过程内聚;“内容”在本题教材分类中通常出现在内容耦合概念,不是这里的内聚类型。
题目 061¶
展开题目 061(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 61 题(原站入口)。
使用结构化方法开发软件时,设计阶段的接口设计主要依据需求分析产物(61);接口设计的主要任务为(62)。
请作答:第 61 题。
-
A. 数据流图
-
B. E-R图
-
C. 状态-迁移图
-
D. 加工规格说明
答案与解析
平台答案:A。
整理解析
本问选 A。DFD 描述系统边界及加工之间流动的数据,能据此识别外部交互、输入输出以及模块间需要传递的信息,为接口设计提供主要线索。数据字典等分析产物可进一步细化字段和约束,并非只看一张图即可完成设计。
题目 062¶
展开题目 062(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 62 题(原站入口)。
使用结构化方法开发软件时,设计阶段的接口设计主要依据需求分析产物(61);接口设计的主要任务为(62)。
请作答:第 62 题。
-
A. 定义软件的主要结构元素及其之间的关系
-
B. 确定软件涉及的文件系统的结构及数据库的表结构
-
C. 描述软件与外部环境之间的交互关系,软件内模块之间的调用关系
-
D. 确定软件各个模块内部的算法和数据结构
答案与解析
平台答案:C。
整理解析
本问选 C。接口设计规定系统与外部环境如何交互、内部模块如何调用与交换信息。A偏向体系结构,B偏向数据组织,D偏向模块内部的过程设计。接口也不限于人机界面,还包括服务、模块及外部系统之间的约定。
同材料可参照第 61 题。
题目 065¶
展开题目 065(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 65 题(原站入口)。
关于 C/S(客户机/服务器)体系结构的优点,下列说法不正确的是( )。
-
A. 允许合理地划分三层的功能,使之在逻辑上保持相对独立性
-
B. 允许各层灵活地选用平台和软件
-
C. 各层可以选择不同的开发语言进行并行开发
-
D. 系统安装、修改和维护均只在服务器端进行
答案与解析
平台答案:D。
整理解析
选 D。典型 C/S 的客户端也包含需要部署、更新和维护的软件,因此不能说一切变更只在服务器端完成。A、B、C 实际按三层 C/S 讨论表现、业务和数据职责的分离;C/S 本身并不必然限定为三层。
题目 066¶
展开题目 066(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 66 题(原站入口)。
设计软件模块结构时,下列哪项不能改进设计质量( )?
-
A. 尽量减少高扇出结构
-
B. 模块的大小适中
-
C. 将具有相似功能的模块合并
-
D. 完善模块的功能
答案与解析
平台答案:C。
整理解析
平台选 C。仅因功能看起来相似就把模块合并,可能把不同职责和变化原因绑在一起,削弱内聚、扩大依赖。应根据职责和数据联系判断;真正重复且职责一致的逻辑仍可合理抽取复用。模块规模、扇入扇出等也需结合上下文,平台所列行数或数量阈值只能作为经验参考。
题目 067¶
展开题目 067(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 67 题(原站入口)。
模块 A、B、C 都含有相同程序块,而块内语句彼此没有联系。将该块提取为模块 D 后,D 属于(67)内聚;以下关于这种内聚类型的说法中,不正确的是(68)。
请作答:第 67 题。
-
A. 巧合
-
B. 逻辑
-
C. 时间
-
D. 过程
答案与解析
平台答案:A。
整理解析
本问选 A。各语句互不相关,只是碰巧在多个地方一起出现,把它们打包并没有形成统一职责,因此属于巧合内聚(偶然内聚)。与第13题考点相近,但题干、选项和本组后续小问不同,分别保留。
题目 068¶
展开题目 068(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 68 题(原站入口)。
模块 A、B、C 都含有相同程序块,而块内语句彼此没有联系。将该块提取为模块 D 后,D 属于(67)内聚;以下关于这种内聚类型的说法中,不正确的是(68)。
请作答:第 68 题。
-
A. 具有最低的内聚性
-
B. 不易修改和维护
-
C. 不易理解
-
D. 不影响模块间的耦合关系
答案与解析
平台答案:D。
整理解析
平台选 D。将不相关操作集中到一个模块,可能让多个调用方依赖同一组无关细节,修改影响范围也可能扩大,不能断言不会影响耦合。巧合内聚通常最弱、难于理解维护,但平台“必然增加耦合”也过强,具体还须看接口和依赖如何变化。
同材料可参照第 67 题。
题目 077¶
展开题目 077(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 77 题(原站入口)。
关于管道—过滤器体系结构,下列说法不正确的是( )。
-
A. 软件构件具有良好的高内聚、低耦合的特点
-
B. 支持重用
-
C. 支持并行执行
-
D. 提高性能
答案与解析
平台答案:D。
整理解析
平台选 D,应理解为“不能保证提高性能”。过滤器间的数据转换、传递和缓冲可能带来开销,吞吐量也受最慢阶段限制;另一方面,流水并行和合适的分工又可能提高吞吐量。因此平台直接说“不能提高性能”不准确,需结合工作负载和实现判断。
题目 078¶
展开题目 078(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 78 题(原站入口)。
模块 A 将学生姓名、学号、手机号等学生信息装入一个结构体,再传递给模块 B。两模块之间属于( )耦合。
-
A. 数据
-
B. 标记
-
C. 控制
-
D. 内容
答案与解析
平台答案:B。
整理解析
选 B。A通过参数传入一整个学生记录结构,按教材称为标记耦合(也称特征耦合或印记耦合)。它不同于只传所需简单数据项的数据耦合,也不是直接共享全局环境的公共耦合。实际应关注B是否依赖不需要的字段及记录布局;传递结构化对象本身并不自动意味着设计错误。
题目 079¶
展开题目 079(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 79 题(原站入口)。
一个模块承担多个功能,这些功能必须按特定次序执行。该模块属于( )内聚。
-
A. 时间
-
B. 过程
-
C. 信息
-
D. 功能
答案与解析
平台答案:B。
整理解析
选 B。多个操作因为控制流程要求而按特定次序组织,属于过程内聚。若进一步明确前一操作的输出就是下一操作的输入,才有顺序内聚的特征;题目只给出执行次序,没有给出这种数据传递关系。
题目 081¶
展开题目 081(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 81 题(原站入口)。
一个基于 Web 的电子商务应用需要访问保存在数据库中的业务对象。下列哪一项是常用访问方式之一( )?
-
A. JDBC
-
B. XML
-
C. CGI
-
D. COM
答案与解析
平台答案:A。
整理解析
选 A。JDBC 是 Java 的数据库连接与访问接口,可用于建立连接、执行 SQL 并读取结果,最直接对应题目的数据库访问需求。XML 用于表示数据,CGI 规定 Web 服务器与外部程序的交互方式,COM 是组件对象模型。限定说明:CGI 程序或 COM 组件也可以调用数据库接口参与访问流程,不能把平台的分类表述理解为它们绝对无法访问数据库。
题目 087¶
展开题目 087(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 87 题(原站入口)。
下列哪项通常不写入概要设计文档,而属于更细的设计内容( )?
-
A. 体系结构设计
-
B. 数据库设计
-
C. 模块内算法设计
-
D. 逻辑数据结构设计
答案与解析
平台答案:C。
整理解析
选 C。概要设计确定系统结构、模块划分、接口和总体数据安排;模块内部怎样逐步计算属于详细设计的算法设计。数据库和数据结构的设计可跨多个阶段逐步细化,不能仅凭“数据”二字排除它们。
题目 088¶
展开题目 088(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 88 题(原站入口)。
耦合用于衡量模块之间连接的紧密程度及相对独立性。以下哪项不是其直接判断依据( )?
-
A. 调用模块的方式
-
B. 各个模块之间接口的复杂程度
-
C. 通过接口的信息类型
-
D. 模块提供的功能数
答案与解析
平台答案:D。
整理解析
选 D。调用方式、接口复杂度和传递的是数据还是控制信息,直接反映模块间依赖;模块提供多少功能本身主要涉及职责划分,不能单独决定耦合。功能增多可能间接增加依赖,但不是本题定义中的直接判据。
题目 097¶
展开题目 097(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 97 题(原站入口)。
下面关于模块化设计的说法,哪项不正确( )?
-
A. 尽量考虑高内聚、低耦合,保持模块的相对独立性
-
B. 模块的控制范围在其作用范围内
-
C. 模块的规模适中
-
D. 模块的宽度、深度、扇入和扇出适中
答案与解析
平台答案:B。
整理解析
选 B,包含方向写反了。模块内判定所影响的范围应处于该模块及其下属模块构成的控制范围内,从而避免一个模块影响不受其协调的部分。高内聚、低耦合以及合适的规模与层次都是设计目标;代码行数、扇入扇出数不宜视为跨项目的固定硬阈值。
题目 098¶
展开题目 098(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 98 题(原站入口)。
企业管理信息系统的采购子系统利用材料价格、数量等计算采购金额,再向财务子系统传送采购金额、收款方、采购日期等信息。两个子系统属于哪种耦合( )?
-
A. 数据
-
B. 标记
-
C. 控制
-
D. 外部
答案与解析
平台答案:B。
整理解析
平台选 B,隐含把这些字段作为一条记录或数据结构参数传递,因而归为标记耦合。题面只列出多项业务数据,没有明确它们的传递形式:若各项作为简单数据参数传递,则可归为 A 数据耦合。字段多并不能证明一定封装成结构,更不能证明一定传地址。原页已核实:确实没有记录或结构参数说明,这种条件不足属于原题,不能为迎合答案补入封装或传地址的假设。
题目 103¶
展开题目 103(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 103 题(原站入口)。
结构化设计中的结构图表示软件系统由哪些模块组成,以及模块之间如何调用。下列哪项不属于题目所称的基本成分( )?
-
A. 模块
-
B. 调用
-
C. 数据
-
D. 控制
答案与解析
平台答案:D。
整理解析
平台答案为 D,但“控制”的含义不够明确。结构图确实可表示模块间传递的控制信息,常用带实心圆的箭头区别于数据传递;若 D 指控制信息,则不能将它排除。只有把“控制”限定为程序内部的顺序、分支、循环等控制结构,才符合平台解释。原页已核实: D 就是“控制”,题干无额外限定;这处术语歧义仍须保留,不能把“结构图不表示控制信息”当成结论。
题目 107¶
展开题目 107(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 107 题(原站入口)。
模块 A 向模块 B 传递数据结构 X,这两个模块属于哪种耦合( )?
-
A. 数据耦合
-
B. 公共耦合
-
C. 外部耦合
-
D. 标记耦合
答案与解析
平台答案:D。
整理解析
选 D。模块通过记录或复合数据结构参数联系,按本题分类是标记耦合;只传递简单数据参数才对应数据耦合,共享公共数据环境则是另一种联系。数据结构可按值或按引用传递,不应把某一种传递机制说成必要条件。
题目 108¶
展开题目 108(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 108 题(原站入口)。
Theo Mandel 提出的界面设计三条“黄金准则”不包含以下哪项( )?
-
A. 用户操纵控制
-
B. 界面美观整洁
-
C. 减轻用户的记忆负担
-
D. 保持界面一致
答案与解析
平台答案:B。
整理解析
选 B。三条准则关注用户掌握控制、降低记忆负担和保持一致性。美观整洁可以是良好界面的要求,但不在这里指定的三条名称中。
题目 113¶
展开题目 113(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 113 题(原站入口)。
关于软件设计应遵循的原则,下列哪一项不正确( )?
-
A. 系统需要划分多个模块,模块的规模越小越好
-
B. 考虑信息隐蔽,模块内部的数据不能让其他模块直接访问,模块独立性要好
-
C. 尽可能高内聚和低耦合
-
D. 采用过程抽象和数据抽象设计
答案与解析
平台答案:A。
整理解析
选 A。模块应围绕清晰职责划分且规模适当,过小会增加接口、调用和理解成本,并非越小越好。信息隐藏、合理抽象以及高内聚低耦合有利于降低修改对其他模块的影响。
题目 114¶
展开题目 114(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 114 题(原站入口)。
一个模块的处理元素都与同一功能密切相关,必须按次序执行,而且前一步输出直接作为下一步输入。按这种联系应判为哪种内聚( )?
-
A. 过程
-
B. 时间
-
C. 顺序
-
D. 逻辑
答案与解析
平台答案:C。
整理解析
选 C。决定性的线索是处理之间存在“输出接着作为输入”的数据联系,这是顺序内聚;仅要求按一定次序执行而没有这种数据联系,才更接近过程内聚。
题目 118¶
展开题目 118(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 118 题(原站入口)。
采用 MVC(模型、视图、控制器)架构开发软件时,以下哪项不是它的优点( )?
-
A. 有利于代码重用
-
B. 提高系统的运行效率
-
C. 提高系统的开发效率
-
D. 提高系统的可维护性
答案与解析
平台答案:B。
整理解析
选 B。分离业务状态、界面呈现和交互处理,主要有利于重用、分工与维护;是否更快取决于算法、数据访问和具体实现,不能从采用 MVC 直接推出。纠错:MVC 不必等同于固定的三层部署结构,也不能反过来断言它在任何实现中都无法提升运行效率。
题目 124¶
展开题目 124(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 124 题(原站入口)。
以下哪项不属于良好的启发式模块设计原则( )?
-
A. 提高模块独立性
-
B. 模块规模越小越好
-
C. 模块作用域在其控制域之内
-
D. 降低模块接口复杂性
答案与解析
平台答案:B。
整理解析
选 B。模块划分要兼顾职责完整、接口复杂度、理解成本和修改影响,规模适中即可,并非越小越好。把作用域限制在控制域内,可以减少对下属关系之外模块的影响。
题目 127¶
展开题目 127(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 127 题(原站入口)。
一个模块中的全部处理元素都围绕同一数据结构进行操作,应归为哪种内聚( )?
-
A. 逻辑
-
B. 过程
-
C. 通信
-
D. 功能
答案与解析
平台答案:C。
整理解析
选 C。这些操作的共同联系是使用同一份数据,因此是通信内聚;题目并没有说明它们必然共同完成不可分割的单一功能。补充:平台表格对顺序内聚的描述过简,真正区分它与过程内聚的关键是前一处理的输出成为后一处理的输入。
题目 128¶
展开题目 128(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 128 题(原站入口)。
为了提高程序执行效率,下列哪种做法一般不包括在提高效率的方法之中( )?
-
A. 设计更好的算法
-
B. 采用不同的数据结构
-
C. 采用不同的程序设计语言
-
D. 改写代码使其更紧凑
答案与解析
平台答案:D。
整理解析
选 D。源代码更紧凑或行数更少,不意味着机器执行的操作更少。更合适的算法、数据结构以及语言和运行时实现可能改变性能,但也应测量验证;平台把其余三项概括为都能提高效率同样不能无条件成立。
题目 133¶
展开题目 133(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 133 题(原站入口)。
模块 A 不经过模块 B 的正常入口,而直接转入 B 的内部执行,这属于哪种耦合( )?
-
A. 数据
-
B. 公共
-
C. 外部
-
D. 内容
答案与解析
平台答案:D。
整理解析
选 D。A 依赖并侵入 B 的内部控制结构,破坏了通过公开接口交互的边界,属于内容耦合;它不只是传递数据参数或共享外部数据。
题目 134¶
展开题目 134(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 134 题(原站入口)。
下列哪项通常不属于软件详细设计阶段的主要任务( )?
-
A. 数据结构设计
-
B. 算法设计
-
C. 模块之间的接口设计
-
D. 数据库的物理设计
答案与解析
平台答案:C。
整理解析
选 C。模块间的接口和调用安排通常在概要设计中确定;详细设计再细化模块内部的数据结构、具体算法以及数据库物理实现。实际项目可迭代完善接口,题目考查的是传统阶段分工。
题目 139¶
展开题目 139(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 139 题(原站入口)。
软件设计中划分模块时,模块的作用范围和控制范围应满足哪种关系( )?
-
A. 控制范围应该在其作用范围之内
-
B. 作用范围应该在其控制范围之内
-
C. 作用范围与控制范围互不包含
-
D. 作用范围与控制范围不受任何限制
答案与解析
平台答案:B。
整理解析
选 B。控制范围包含该模块及其直接或间接下属模块;作用范围是受模块内部某个判定影响的模块集合。让后者包含于前者,能使影响落在该模块能够协调的范围内。
题目 141¶
展开题目 141(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 141 题(原站入口)。
关于软件设计原则,以下哪项不正确( )?
-
A. 将系统划分为相对独立的模块
-
B. 模块之间的耦合尽可能小
-
C. 模块规模越小越好
-
D. 模块的扇入系数和扇出系数合理
答案与解析
平台答案:C。
整理解析
选 C。模块大小需结合职责和接口成本权衡,越小不一定越独立或易维护。纠错:平台解析说“作用域应该在模块之内”不准确,正确的是作用域应在该模块的控制域内,控制域还包括下属模块;调用层次也不是越少越好。
题目 153¶
展开题目 153(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 153 题(原站入口)。
对模块结构进行优化时,下面哪项做法不适当( )?
-
A. 使模块功能完整
-
B. 消除重复功能,改善软件结构
-
C. 只根据模块功能确定规模大小
-
D. 避免或减少模块之间的病态连接
答案与解析
平台答案:C。
整理解析
选 C。规模不能只由模块自身功能决定,还应考虑职责是否单一、与其他模块的接口、耦合及理解成本。保持功能完整、减少重复和避免病态连接都有助于结构质量。
题目 155¶
展开题目 155(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 155 题(原站入口)。
关于三层 C/S 结构,以下哪项说法不正确( )?
-
A. 允许合理划分三层结构的功能,使之在逻辑上保持相对独立性,提高系统的可维护性和可扩展性
-
B. 允许更灵活有效地选用相应的软硬件平台和系统
-
C. 应用的各层可以并行开发,但需要相同的开发语言
-
D. 利用功能层有效地隔开表示层和数据层,便于严格的安全管理
答案与解析
平台答案:C。
整理解析
选 C。表示层、业务功能层与数据层可通过约定接口协作,并不要求都用同一种语言或平台实现。纠错:三层 C/S 与 MVC 是不同的划分概念,不能用模型、视图、控制器直接替代这三层;HTML 也是标记语言,平台所举例子并不能准确说明三层 C/S 的结构。
题目 156¶
展开题目 156(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 156 题(原站入口)。
模块 A、B 通过外部变量交换输入和输出信息。按给出的选项,它们属于哪种耦合( )?
-
A. 数据
-
B. 标记
-
C. 控制
-
D. 公共
答案与解析
平台答案:D。
整理解析
在所列选项中选 D。两个模块依赖共享的外部数据环境,而非通过简单参数或记录参数交换数据,符合公共耦合的通常解释。分类口径说明:某些教材另把共享全局简单变量称作“外部耦合”,本题未提供该选项,也未说明外部变量的具体形态;不能从题面补出“共享多个变量”作为必然事实。
六、软件测试¶
测试目的、独立性与分类¶
测试用于发现缺陷、评价质量并降低风险。测试通过只能说明已执行的检查未发现问题,不能一般性地证明程序在所有输入和环境下都正确。
- 尽早开展测试策划、评审与反馈,开发中持续验证。
- 开发者应编写并执行单元测试;独立测试人员能提供不同视角,减少认知偏差。独立性不等于禁止程序员测自己的代码。
- 测试用例应包含前置条件、输入、操作和可判定的预期结果,并覆盖有效与无效输入。
- 修复和变更后,需要确认修改生效,并开展回归测试检查副作用。
- 缺陷常呈聚集现象,但“未发现错误数与已发现错误数成正比”只是旧教材的经验化表述,不能当作数学定律或固定比例公式。
**静态测试**不执行被测程序,包括评审、走查和静态分析工具;原图“纯人工”不准确,代码审查也不等于必须使用 SVN。**动态测试**执行程序并观察行为。黑盒依据外部规格设计测试,白盒依据内部结构设计测试,灰盒结合部分内部知识。
例题 20:测试是否证明正确性¶
以下关于软件测试的叙述中,不正确的是( )。
A、在设计测试用例时应考虑输入数据和预期输出结果
B、软件测试的目的是证明软件的正确性
C、在设计测试用例时,应该包括合理的输入条件
D、在设计测试用例时,应该包括不合理的输入条件
参考答案与解析
选 B。 测试能够揭示缺陷、提供质量信息,但通常不能通过有限用例证明所有可能输入下都正确。设计测试时既要考虑有效输入,也要考虑无效输入与明确预期结果。
黑盒:等价类与边界值¶
等价类把预计行为相似的输入划为组,从每组选择代表。无效输入测试常一次只违反一个条件,便于确认具体校验是否起作用;之后仍可以增加多个错误同时发生的测试。
边界值分析重点检查边界及其相邻值,必须先明确数据域。例如整数分数的相邻值是 ±1,允许小数时需要根据精度重新确定。
例如设置项允许整数重试次数 1~5:有效等价类可取 3,无效类分别取 0、6;边界检查关注 0、1、2、4、5、6,并给每个输入写明接受还是拒绝。若输入框还能接收文本,空串和非数字是另需考虑的类别。有效用例可以同时满足多项有效条件,无效基础用例则通常一次只打破一项,以免某个错误先被拦截,遮住其他校验缺失。
**因果图**把输入条件作为“因”、输出动作作为“果”,用与、或、非及互斥等约束表达逻辑关系,再转换为判定表选用例;它不是分析故障根因的鱼骨图。错误推测则根据经验补充容易遗漏的场景,例如空列表、重复提交或网络中断,适合作为系统化设计的补充。
例题 21:多个无效条件同时出现¶
招聘系统要求求职的人年龄在20岁到60岁之间(含),学历为本科、硕士或者博士,专业为计算机科学与技术、通信工程或者电子工程。其中( )不是好的测试用例。
A、20,本科,电子工程 B、18,本科,通信工程
C、18,大专,电子工程 D、25,硕士,生物学
参考答案与解析
按“单个无效等价类单独验证”的原则,选 C。 C 同时违反年龄和学历限制,即使系统拒绝,也不能判断它是否真正检查了学历;B 只违反年龄,D 只违反专业,A 是有效边界输入。
C 并非永远没有测试价值:在分别验证各校验规则后,可以增加这种组合错误用例,检查错误提示与优先处理逻辑。本题问的是等价类基础用例的设计质量。
练习:成绩分级的测试数据¶
原题:小张帮朋友开发一个成绩分级程序,规则为 90~100 分:优;80~89 分:良;70~79 分:中;60~69 分:及格;0~59 分:不及格。若采用等价类划分以及边界值分析,应如何设计测试用例?
参考设计与边界检查
先假定输入为 0~100 的整数。有效等价类代表可用 30、65、75、85、95,预期分别是不及格、及格、中、良、优;无效等价类可用 -1、101,预期拒绝输入或显示事先约定的错误提示。
检查每个分段的下界、上界及其相邻整数,去重后得到:
若允许小数,原规则中的 89~90 等间隙需要先澄清,例如改成 [80,90);若输入来自文本框,还应单独测试空值、非数字和格式问题。这些不能凭空假设成题目已经规定的规则。
白盒:先分清判定、条件与路径¶
对于 x >= 0 && y <= 5:整个表达式是一个**判定**,x >= 0 和 y <= 5 是两个**基本条件**。
| 覆盖准则 | 要求 | 不能误认为 |
|---|---|---|
| 语句覆盖 | 每条可执行语句至少执行一次 | 所有分支都执行过 |
| 判定/分支覆盖 | 每个判定的真、假分支至少各执行一次 | 每个基本条件都取过真、假 |
| 条件覆盖 | 每个基本条件的真、假结果都被覆盖 | 必然满足判定覆盖 |
| 判定/条件覆盖 | 同时满足判定覆盖和条件覆盖 | 必然覆盖所有条件组合 |
| 条件组合覆盖 | 每个判定内的条件真值组合均被覆盖,需说明不可行组合及求值约定 | 多个判定之间的所有路径都被覆盖 |
| 路径覆盖 | 覆盖规定范围内的可行执行路径 | 有循环时总能有限地穷尽所有路径 |
覆盖率不是正确性证明;不可达语句、不可行路径、循环与短路求值都影响实际测量。
从覆盖要求推导测试数据¶
先列出要覆盖的语句、分支或条件,再逐例模拟执行,把每例实际经过的目标打勾,最后选择能覆盖全部目标的用例集合。赋值后的判定必须使用**新值**;整型除法按相应语言的整数规则计算。例如 Java/Kotlin 中正整数 17 / 4 得到 4,而不是 4.25。仅检查输入条件,不跟踪中间状态,容易选出输出正确但覆盖不足的用例。
以 ready && allowed 为例,若按逻辑真值表统计,TF 与 FT 让两个条件都出现过真、假,但整个判定始终是假,所以条件覆盖不能推出判定覆盖。若按实际短路执行,FT 中第二个条件没有求值,应记 F—;要观察两个条件实际的真假结果,需要 TT、TF 和 F— 三类执行。相反,对 a || b,TT 与 FF 可以使整体判定真假都出现,但在短路记录中 b 只执行了假值。做题先确定统计逻辑赋值还是实际执行,不能把未执行的条件算成已覆盖。
没有循环时,每次运行只走一条入口到出口路径。两个先后执行、互不约束的二分判定,有 TT、TF、FT、FF 共 4 条可行路径,但圈复杂度只有 2+1=3;若第二个判定只在第一个为真时执行,就只有 TT、TF、F 三条。不能一律用 2^判定数,也不能用圈复杂度代替全部路径数。
含循环时,要区分全部执行路径、选定的基本独立路径,以及图论中不重复结点的简单路径。未限制循环次数时,全路径覆盖通常不可穷尽;一次运行也可能在不同轮经过多个分支,因此“两个分支必需两个用例”只适用于相应无循环或受限执行情形。图中语句内容、变量更新或退出条件缺失时,应保留可行性限制,不能凭图形补造运行语义。
练习:同一组数据,不同覆盖口径¶
原用例是:① (x=1,y=1; result),② (x=1,y=6; result),③ (x=-1,y=1; result),④ (x=-1,y=6; result)。result 是原文占位符,图中未定义具体赋值,不能补造数值输出。注意:图中的“语句 1”在 N(假)分支,不在 Y 分支。
参考解析:课件真值表口径与真实短路执行
如果把两个条件都按输入赋值计算真值,并把整个合取作为一个判定,则:
| 覆盖目标 | 最少用例 | 原因 |
|---|---|---|
| 语句覆盖 | ②、③、④任选一个 | 任一个都使判定为假,执行语句 1 |
| 判定覆盖 | ①加上②/③/④之一 | 覆盖真分支和假分支 |
| 条件覆盖 | ①+④,或②+③ | 两个条件都具有真、假赋值;②+③的整体判定却都为假 |
| 判定/条件覆盖 | ①+④ | 两个条件和整个判定都覆盖真、假 |
| 条件组合覆盖 | ①②③④ | 覆盖 TT、TF、FT、FF 四种真值组合 |
| 图示路径覆盖 | ①加上②/③/④之一 | 在只保留一个判定的这张图中有两条路径 |
**若按 C、Java 等语言的 && 短路执行计数,情况不同:**③④中第一个条件为假,第二个条件根本没有执行。它们只能写成 F, —,不能把未执行算成已经取得一次真或假。要让两个条件实际都取真、假,至少需要 ①+②+③,也可用④替换③。
把短路求值展开为控制流后,有 TT、TF、F— 三条执行路径,最少也需要上述三个用例。课件的两例条件覆盖结论是**输入真值表口径**,不应直接套到运行时覆盖工具。条件组合覆盖也应明确按逻辑赋值还是实际求值记录统计。
例题 22:分支覆盖与整数除法¶
用白盒测试方法对如下图所示的流程图进行测试。若要满足分支覆盖,则至少需要( )个测试用例,正确的测试用例对是( )(测试用例的格式为(A,B,X;X))。
A、1 B、2 C、3 D、4
A、(1,3,3;3)和(5,2,15;3) B、(1,1,5;5)和(5,2,20;9)
C、(2,3,10;5)和(5,2,18;3) D、(5,2,16;3)和(5,2,21;9)
参考答案与解析
选 B、B,即至少 2 个用例,第二组选 B。 原图读取 int A、B、X,先执行 if (A>2 || B==3) X=X/A,再执行 if (A==5 && X>3) X=X+5。第二个判定必须使用已经更新的 X。
(1,1,5;5):第一个判定为假,X 保持 5;第二个判定也为假,输出 5。(5,2,20;9):第一个判定为真,整数除法得到 X=4;第二个判定为真,输出 9。
两条用例使两个判定均经历真、假,因此满足图示判定的分支覆盖;一个用例无法让同一判定在本图中同时走两边。
其余选项的数值输出也成立,但覆盖不足:A、C 的两例都使第一个判定为真、第二个为假;D 虽覆盖第二个判定的两边,第一个判定仍一直为真。其中 18/5=3、16/5=3、21/5=4 都按整数除法取商。这个结论针对原图中的两个复合判定,不等于已经覆盖短路表达式的全部内部求值分支。
测试层次、确认与回归¶
| 类别 | 核心问题 |
|---|---|
| 单元测试 | 单个模块的功能、边界、异常处理、内部逻辑是否符合设计 |
| 集成测试 | 模块之间的接口、数据与协作是否正确 |
| 系统测试 | 完整集成的系统是否满足系统级功能和质量要求 |
| 确认测试(Validation,按课件用语) | 软件是否满足预期用途和用户需求 |
| 验收测试 | 是否满足约定的接收准则,由有权接收方据此判断能否接收 |
| 回归测试 | 修改是否破坏已有行为,包括看似未改动但可能受影响的功能 |
确认是目的层面的概念,系统测试和验收测试也能提供确认所需证据,不宜强行当成完全互斥的时间阶段。系统测试常在代表实际运行条件的环境中进行,并不要求一律直接在真实生产环境执行。课件把内部确认、Alpha、Beta、验收归在确认测试下,是其教材组织方式。
Alpha 测试通常在开发方可控环境中由代表性用户等参与;Beta 测试通常由外部用户在更真实的使用环境中反馈。两者都不能代替所有测试。针对某个已修复缺陷重复原失败测试是**确认修复/再测试**,检查其他功能是否受损才体现回归的核心目的。
自顶向下集成常需要**桩模块**模拟尚未就绪的下级调用;自底向上集成常需要**驱动模块**调用待测下级模块;三明治(混合)策略同时使用两种方向。
| 集成方式 | 较早验证什么 | 主要代价 |
|---|---|---|
| 自顶向下 | 主控制逻辑、上层接口与总体流程 | 通常要写桩;真实底层能力较晚接入 |
| 自底向上 | 底层功能及其局部协作 | 通常要写驱动;高层控制问题可能较晚暴露 |
| 三明治 | 上层控制与底层功能两端推进,可并行 | 两端可能分别需要桩和驱动,不能保证替身工作量最少 |
| 一次性集成 | 先把全部模块组合再测 | 同时暴露的接口问题较多,难以定位来源 |
桩相当于“被调用者的替身”,驱动相当于“调用者的替身”。例如先测 ViewModel、数据层未就绪时,可用固定返回值的假数据源理解桩;单独运行底层解析模块时,需要测试入口传参并检查结果,可理解为驱动。无论采用哪种集成次序,组合发生变化后仍需回归测试。
测试发现问题,调试定位原因¶
测试说明“实际行为与预期不一致”,调试则查明原因、修复并验证。常见调试思路如下:
| 方法 | 推理方向 | 例子 |
|---|---|---|
| 试探法/强行排错法 | 用日志、断点、运行信息寻找可疑处 | 在关键调用前后打印状态,缩小崩溃范围 |
| 回溯法 | 从错误表现沿控制流、数据来源向前追查 | 从错误金额追到格式转换,再追到原始输入 |
| 归纳法 | 汇总成功与失败样例,从共性提出假设 | 发现只在切换语言后失败,提出与地区格式有关的假设,再验证 |
| 演绎法 | 从一般可能原因出发,推导并排除不符合证据的解释 | 列出网络、解析、缓存三类原因,用观测逐项排除 |
修复后先重跑能复现问题的用例,再测试可能受改动影响的其他行为。找到一个相关现象还不等于已经证明根因。
例题 23:由图判断集成策略¶
下图(a)所示为一个模块层次结构的例子,图(b)所示为对其进行集成测试的顺序,则此测试采用了( )测试策略。该测试策略的优点不包括( )。
A、自底向上 B、自顶向下 C、三明治 D、一次性
A、较早地验证了主要的控制和判断点 B、较早地验证了底层模块
C、测试的并行程度较高 D、较少的驱动模块和桩模块的编写工作量
参考答案与解析
选 C、D。 图(b)上方从 A 向 B、C、D 推进,下方同时从 E、F、G 开始向上集成,最后会合,是三明治/混合集成。它能较早检查高层控制和底层模块,并支持一定程度的并行。
同时使用两个方向通常仍需桩与驱动,不能把“较少的驱动模块和桩模块编写工作量”当成这种策略的普遍优势。具体数量取决于切分方式和替身复用,题目考的是典型特征。
McCabe 圈复杂度:数控制流,不数线条交叉¶
对于一个连通、具有约定入口和出口的程序控制流图:
其中 E(课件记作 m)是有向边数,N(课件记作 n)是结点数。若对 P 个独立控制流分量按同一约定合计,则为 E-N+2P。只有单分量时才能直接用 +2。
若每个判定都恰有两个出口,也可用 二分支判定结点数+1;多分支选择和短路表达式需按实际控制流处理。一般可用 1 + Σ(outdegree−1) 对分支结点贡献求和。圈复杂度反映独立控制流路径的基数,不等于“图上所有环的数量”或“程序全部执行路径数”。
原图右侧有 N=12 个结点、E=15 条边,因此 V=15−12+2=5;判定结点 2、3、7、10 共四个,也得到 5。它把真实汇合点补成结点;几何上交叉但没有汇合语义的线不应连接。在一条边上补一个普通结点会同时使 E、N 增加 1,不会改变圈复杂度。
平面画法中的区域计数法需要把外部区域算进去,也要确认画法没有伪交点。原文“最小独立闭环数+1”适合辅助理解,不宜据图的外观随意数圈。
例题 24:带循环控制流图的复杂度¶
采用McCabe度量法计算下图所示程序的环路复杂性为( )。
A、1 B、2 C、3 D、4
参考答案与解析
选 C,圈复杂度为 3。 图有 10 个结点,11 条边:1→2、2→3、3→4、4→5、4→10、5→6、5→9、9→6、6→7、7→8、8→4。因此 V=11−10+2=3。
结点 4 和 5 各有两个出口,也可算 2+1=3。这里虽然直观看见一个循环,圈复杂度却不是 1;分支也会增加独立路径数。
例题 25:嵌套判定的条件覆盖¶
若用白盒测试方法测试以下代码,并满足条件覆盖,则至少需要( )个测试用例。采用McCabe度量法算出该程序的环路复杂性为( )。
A、3 B、4 C、5 D、6
A、1 B、2 C、3 D、4
参考答案与解析
选 B、D,即至少 4 个用例,圈复杂度为 4。 外层判定 i>j 的两个分支分别包含 i>k 与 j>k。要让左侧内层判定取真、假,必须有两次执行进入左侧;要让右侧内层判定取真、假,又需要两次执行进入右侧,所以至少 4 次。
输入 (i,j,k) |
i>j |
实际执行的内层判定 | 输出最大值 |
|---|---|---|---|
(3,2,1) |
真 | i>k 真 |
3 |
(2,1,3) |
真 | i>k 假 |
3 |
(1,3,2) |
假 | j>k 真 |
3 |
(1,2,3) |
假 | j>k 假 |
3 |
三个二分支判定结点,圈复杂度为 3+1=4。每个判定都只有一个基本条件,所以本题的条件覆盖与判定覆盖目标一致。不能把未进入分支里的比较表达式按输入“脑算”为真或假,就声称已经覆盖。
原图代码混用了 Int、then 和 C 式声明,且缺少返回语句,应作为伪代码理解。明确花括号与返回值后的 C 写法如下:
专项题库练习(37 题)¶
本小节对应题库练习共 37 道题目,题目覆盖本节考点,答案与解析默认折叠。
题目 007¶
来源:知识点练习「系统开发基础」第 7 题(原站入口)。
用 McCabe 度量法计算图示程序的环路复杂性,结果为( )。
-
A. 2
-
B. 3
-
C. 4
-
D. 5
答案与解析
平台答案:C。
整理解析
平台选 C。按可见图把判定、处理框作为结点,共 6 个结点、8 条边,套用平台公式 E−N+2 得到 4。但图中语句2、语句3都返回顶部,没有绘出出口,常规单入口、单出口程序流图的前提并不完整。不能把“2个判定加1”和“8−6+2”在这张无出口图上当作互相验证,也不能将4直接等同于完整程序所有执行路径数。原页完整图已核实确无出口,也没有补充图或附注;这里只保留平台计算口径与原图,不据此补画出口或推断遗漏结构。
题目 010¶
来源:知识点练习「系统开发基础」第 10 题(原站入口)。
对图示程序做白盒测试,现有 4 个用例:①(x=0,y=3)、②(x=1,y=2)、③(x=-1,y=2)、④(x=3,y=1)。至少需要①②才能达到(10)覆盖;至少需要①②③或①②④才能达到(11)覆盖。
请作答:第 10 题。
-
A. 语句
-
B. 条件
-
C. 判定/条件
-
D. 路径
答案与解析
平台答案:A。
整理解析
本问选 A。①使 (x=0)&&(y>2) 为真,执行语句A;②使第一判定为假,随后 (x<1)||(y=1) 也为假,执行语句B。两例覆盖图中的全部处理语句,缺少任意一个都漏掉相应语句,所以满足语句覆盖。它们尚未经过第二判定为真的分支,不能说已经覆盖全部路径。
题目 011¶
展开题目 011(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 11 题(原站入口)。
对图示程序做白盒测试,现有 4 个用例:①(x=0,y=3)、②(x=1,y=2)、③(x=-1,y=2)、④(x=3,y=1)。至少需要①②才能达到(10)覆盖;至少需要①②③或①②④才能达到(11)覆盖。
请作答:第 11 题。
-
A. 语句
-
B. 条件
-
C. 判定/条件
-
D. 路径
答案与解析
平台答案:D。
整理解析
本问选 D。图中三条完整控制路径分别是:第一判定真执行A;第一判定假、第二判定假执行B;第一判定假、第二判定真,直接到出口。①②覆盖前两条,③或④补齐第三条,故①②③或①②④达到图示路径覆盖。若按代码短路求值进一步拆分复合条件,还应另行分析条件覆盖;“有循环时每个环只走一次”也不是一般全路径覆盖的定义,循环可能产生无穷多条执行路径。
同材料可参照第 10 题。
题目 017¶
展开题目 017(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 17、145 题(原站入口)。
软件开发中,系统测试阶段的测试目标主要依据( )阶段的成果。
-
A. 需求分析
-
B. 概要设计
-
C. 详细设计
-
D. 软件实现
答案与解析
平台答案(来源第 17 题):A。
整理解析(来源第 17 题)
选 A。系统测试要验证整个软件是否满足系统需求,因此目标来源于需求分析形成的功能、性能及其他质量要求。设计和实现资料可以帮助设计测试,但不能替代需求作为整体行为的依据。
来源第 145 题对照
原题题干
软件开发中的系统测试,其测试目标主要依据哪个阶段的成果确定( )?
原题选项对照
| 原选项 | 内容 | 本页选项 |
|---|---|---|
| A | 需求分析 | A |
| B | 概要设计 | B |
| C | 详细设计 | C |
| D | 软件实现 | D |
原平台答案(来源第 145 题,原题选项):A;对应本页选项:A;本页平台答案:A。
整理解析(来源第 145 题)
选 A。系统测试把整个软件当作系统,检查其功能与质量属性是否满足规定需求,因此目标来自需求分析。概要设计主要支持集成层面的接口与协作测试,详细设计主要支持模块内部测试;不应只按示意 V 图的垂直位置机械对应。
题目 019¶
展开题目 019(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 19 题(原站入口)。
图示程序流程图有(19)条不同的简单路径;采用 McCabe 度量法,其环路复杂性为(20)。
请作答:第 19 题。
-
A. 3
-
B. 4
-
C. 5
-
D. 6
答案与解析
平台答案:A。
整理解析
平台选 A,实际采用的是“3条独立基本路径”的口径:可取不进入循环、循环一次且不交换、循环一次且交换三条代表路径,分别可由 n=1,以及 n=2 时相邻元素不逆序或逆序来触发。严格图论的简单路径不重复结点,任何完整循环都会再次经过 y=n−1 判定,所以从入口到出口只有直接退出那条简单路径。原题术语不严谨,应区分基本路径、简单路径和所有循环执行路径。
题目 020¶
展开题目 020(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 20 题(原站入口)。
图示程序流程图有(19)条不同的简单路径;采用 McCabe 度量法,其环路复杂性为(20)。
请作答:第 20 题。
-
A. 3
-
B. 4
-
C. 5
-
D. 6
答案与解析
平台答案:A。
整理解析
本问选 A。按单入口、单出口图计算,共有 y=n−1 和 A[i]>A[i+1] 两个二路判定,环路复杂性为 P+1=2+1=3;逐框计数也得 E=10、N=9,E−N+2=3。静态判定结点只数一次,与测试时实际执行了几次无关。平台用“第一个判断至少执行两次”来凑3次判断,是错误的计算依据;环路复杂性也不是任意循环次数下全部执行路径的条数。
同材料可参照第 19 题。
题目 028¶
展开题目 028(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 28 题(原站入口)。
自底向上集成测试策略的优点是( )。
-
A. 主要的设计问题可以在测试早期处理
-
B. 不需要写驱动程序
-
C. 不需要写桩程序
-
D. 不需要进行回归测试
答案与解析
平台答案:C。
整理解析
按常规集成模型选 C。自底向上先集成真实的底层模块,因此无需用桩模拟尚未接入的下层被调用模块;相反,常要写驱动模拟尚未接入的上层调用者。集成后仍需回归测试,高层控制与整体设计问题也可能较晚暴露。外部服务等其他依赖是否需替身,是另一层测试边界问题。
题目 029¶
展开题目 029(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 29 题(原站入口)。
采用 McCabe 度量法,图示程序的环路复杂性为( )。
-
A. 2
-
B. 3
-
C. 4
-
D. 5
答案与解析
平台答案:C。
整理解析
选 C。图中有 8 个圆形结点、10 条连接边,左侧与右侧的两条弧线也各算一条边,所以 V(G)=E−N+2=10−8+2=4。交汇于同一个结点的多条边要分别计数,不能只数竖直、水平线。
题目 039¶
展开题目 039(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 39 题(原站入口)。
对下面代码进行白盒测试,达到条件覆盖至少需要(39)个用例;用 McCabe 度量法计算的环路复杂性为(40)。
请作答:第 39 题。
-
A. 3
-
B. 4
-
C. 5
-
D. 6
题目 040¶
展开题目 040(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 40 题(原站入口)。
对下面代码进行白盒测试,达到条件覆盖至少需要(39)个用例;用 McCabe 度量法计算的环路复杂性为(40)。
请作答:第 40 题。
-
A. 1
-
B. 2
-
C. 3
-
D. 4
答案与解析
平台答案:D。
整理解析
本问选 D。控制流有 i>j、i>k、j>k 三个静态二路判定,所以 V(G)=3+1=4。原解析图含9个结点、11条边,亦有 11−9+2=4。单次执行只经过两个判定,不改变整个程序的静态环路复杂性。原片段不是完整可编译的 C 函数,缺少返回语句等问题不影响此处按图分析的四条分支路径。
同材料可参照第 39 题。
题目 046¶
展开题目 046(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 46 题(原站入口)。
图(a)给出模块层次结构,图(b)给出集成测试顺序。此处采用的测试策略为(46);其优点不包括(47)。
请作答:第 46 题。
-
A. 自底向上
-
B. 自顶向下
-
C. 三明治
-
D. 一次性
答案与解析
平台答案:C。
整理解析
本问选 C。图(b)一端从 A 向下加入 B、C、D,另一端先测试叶子 E、F、G,再形成 B/E/F 与 D/G 子集,最后汇合。两端分别采用自顶向下、自底向上并在中间会合,就是三明治集成。
题目 047¶
展开题目 047(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 47 题(原站入口)。
图(a)给出模块层次结构,图(b)给出集成测试顺序。此处采用的测试策略为(46);其优点不包括(47)。
请作答:第 47 题。
-
A. 较早地验证了主要的控制和判断点
-
B. 较早地验证了底层模块
-
C. 测试的并行程度较高
-
D. 较少的驱动模块和桩模块的编写工作量
答案与解析
平台答案:D。
整理解析
平台选 D。三明治策略可以较早检查顶层控制和底层功能,并让两端并行推进;但顶层可能需要桩、底层可能需要驱动,数量是否减少取决于划分和调度。D 不是必然优势,也不能反过来说这种策略永远无法减少测试替身的工作量。
同材料可参照第 46 题。
题目 048¶
展开题目 048(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 48 题(原站入口)。
按 McCabe 度量法,图示程序的环路复杂性为( )。
-
A. 1
-
B. 2
-
C. 3
-
D. 4
答案与解析
平台答案:C。
整理解析
选 C。图中10个编号结点、11条有向边,V(G)=11−10+2=3;其中4、5是两个二路分支点,也可用2+1核对。8→4是回边,不能漏计;环路复杂性不是简单地数图中画了几个圈。
题目 057¶
展开题目 057(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 57 题(原站入口)。
对图示流程采用白盒测试,达到路径覆盖至少需要(57)个测试用例;按 McCabe 度量法,其环路复杂性为(58)。
请作答:第 57 题。
-
A. 3
-
B. 4
-
C. 6
-
D. 8
答案与解析
平台答案:C。
整理解析
本问选 C。按图示判定组合均可实现的口径,a有0、正、负三类控制路线,后面的 i>0 又分真、假两路,因此共有3×2=6条完整路径。每次执行只能覆盖其中一条,所以最少6例;例如让a取−1、0、1,分别配i=0、1。此结论还默认各语句不会让这些分支组合变成不可达。
题目 058¶
展开题目 058(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 58 题(原站入口)。
对图示流程采用白盒测试,达到路径覆盖至少需要(57)个测试用例;按 McCabe 度量法,其环路复杂性为(58)。
请作答:第 58 题。
-
A. 1
-
B. 2
-
C. 3
-
D. 4
答案与解析
平台答案:D。
整理解析
本问选 D。图中 a≠0、a>0、i>0 三个二路判定,环路复杂性为3+1=4;按处理框计数也有8个结点、10条边,10−8+2=4。前一问的6是全部可行路径数,4是独立路径基的规模,两者不是同一个指标。
同材料可参照第 57 题。
题目 059¶
展开题目 059(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 59 题(原站入口)。
关于软件测试,下列说法不正确的是( )。
-
A. 在设计测试用例时应考虑输入数据和预期输出结果
-
B. 软件测试的目的是证明软件的正确性
-
C. 在设计测试用例时,应该包括合理的输入条件
-
D. 在设计测试用例时,应该包括不合理的输入条件
答案与解析
平台答案:B。
整理解析
选 B。测试用于发现缺陷、检查需求实现并提供质量证据;一般有限测试通过,不能证明程序在所有可能输入和环境下都绝对正确。用例需要输入及预期结果,也应包含合法输入与不合法输入,以检验正常处理和错误处理。
题目 069¶
展开题目 069(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 69 题(原站入口)。
对图示流程图分别做语句覆盖和路径覆盖测试,所需的最少用例数分别是(69);按 McCabe 度量法,环路复杂度为(70)。
请作答:第 69 题。
-
A. 2和3
-
B. 2和4
-
C. 2和5
-
D. 2和6
答案与解析
平台答案:B。
整理解析
平台选 B,即2和4;这是把循环限制为零次或一次来枚举代表路径的口径。一次循环内,要走语句3的分支与走语句4、5的分支互斥,所以在这个限制下至少2例覆盖全部语句,零次循环加循环内3种路线共4条。一般循环可执行多轮,完整路径可能无穷多;若一次运行能在不同轮切换分支,单例也可能覆盖全部语句,是否可行取决于未给出的条件和语句内容。因此题干缺少循环边界,不能无条件断言最少2例、4例。
题目 070¶
展开题目 070(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 70 题(原站入口)。
对图示流程图分别做语句覆盖和路径覆盖测试,所需的最少用例数分别是(69);按 McCabe 度量法,环路复杂度为(70)。
请作答:第 70 题。
-
A. 1
-
B. 2
-
C. 3
-
D. 4
答案与解析
平台答案:D。
整理解析
本问选 D。图中判断1、判断2、判断3共3个二路判定,静态环路复杂度为3+1=4;按开始、结束和处理框计数为11个结点、13条边,13−11+2=4。循环回到判断1并不会新增判定结点。这个4不表示所有循环执行路径只有4条。
同材料可参照第 69 题。
题目 074¶
展开题目 074(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 74 题(原站入口)。
用白盒方法测试图示流程,要达到分支覆盖至少需(74)个用例,正确的一对用例是(75)。每个用例以(A,B,X;X)表示,分号前是输入,分号后是预期输出。
请作答:第 74 题。
-
A. 1
-
B. 2
-
C. 3
-
D. 4
答案与解析
平台答案:B。
整理解析
本问选 B。图中有两个顺序判定,每个都要经历真、假;一例不能同时覆盖同一个判定的两个结果,因此至少2例。输入(1,1,5)依次走假、假;(5,2,20)先使首判定为真,整数除法后X=4,再使第二判定为真,所以2例足够。首判定是A>2或B=3,要为假须A≤2且B≠3,不能像平台解析那样只讨论A。
题目 075¶
展开题目 075(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 75 题(原站入口)。
用白盒方法测试图示流程,要达到分支覆盖至少需(74)个用例,正确的一对用例是(75)。每个用例以(A,B,X;X)表示,分号前是输入,分号后是预期输出。
请作答:第 75 题。
-
A. (1,3,3;3)和(5,2,15;3)
-
B. (1,1,5;5)和(5,2,20;9)
-
C. (2,3,10;5)和(5,2,18;3)
-
D. (5,2,16;3)和(5,2,21;9)
答案与解析
平台答案:B。
整理解析
本问选 B。第一例(1,1,5)使A>2或B=3为假,后续A=5且X>3也为假,输出5;第二例(5,2,20)先令X=20/5=4,再满足A=5且X>3,执行X=X+5,输出9。A、C、D三组选项的首判定都只取真,不能覆盖其假分支。图中明确输入为int,应使用整数除法;第二次判断使用的是更新后的X。
同材料可参照第 74 题。
题目 089¶
展开题目 089(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 89 题(原站入口)。
对所示程序流程图进行测试:达到判定覆盖至少需要(89)个测试用例,按 McCabe 方法计算的环路复杂度为(90)。
请作答:第 89 题。
-
A. 2
-
B. 3
-
C. 4
-
D. 5
答案与解析
平台答案:A。
整理解析
平台给出 A,即 2 个。判定覆盖要求图中的“X>0 或 Y>0”及“Z>5”都经历真、假结果。但原图存在回边,且语句 1、2、3 的内容未知,无法仅凭图严格证明最少必须为 2:若循环内能改变 X/Y/Z,一次运行也可能依次走两个判定的全部分支;若变量不改变,Z≤5 的路径又可能不终止。两用例结论需要额外的状态更新与可行性假设。原页已核实:只有这两个小问和单张流程图,没有赋值语义或循环限制;条件不足属于原题。不要把图中复合判定的条件覆盖与判定覆盖混为一谈。
题目 090¶
展开题目 090(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 90 题(原站入口)。
对所示程序流程图进行测试:达到判定覆盖至少需要(89)个测试用例,按 McCabe 方法计算的环路复杂度为(90)。
请作答:第 90 题。
-
A. 2
-
B. 3
-
C. 4
-
D. 5
答案与解析
平台答案:B。
整理解析
按原图每个菱形视为一个判定结点,选 B。两个二分判定使 V(G)=2+1=3;直接计数也得 E=11、N=10,V=E−N+2=3。环路复杂度是控制流图的独立路径维数,不等于全部循环执行路径数,也不直接给出判定覆盖的最少用例数。若另行展开“或”的短路求值,必须重建图后再计数。
题目 091¶
展开题目 091(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 91 题(原站入口)。
软件调试要从测试发现的错误定位原因并修正。某种方法先收集成功与失败的数据,分析其联系,再提出可能的错误原因并用数据支持或反驳。该方法称为( )?
-
A. 试探法
-
B. 回溯法
-
C. 归纳法
-
D. 演绎法
答案与解析
平台答案:C。
整理解析
选 C。它从具体观察与样例中概括出解释错误的假设,属于归纳法。沿错误位置反向追踪是回溯;先列一般原因并逐一排除,侧重演绎。
题目 099¶
展开题目 099(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 99 题(原站入口)。
下面伪代码用缩进表示程序块。若要求覆盖所有路径,至少需要(99)个用例;相应控制流图的 McCabe 环路复杂度为(100)。
请作答:第 99 题。
-
A. 2
-
B. 4
-
C. 6
-
D. 8
答案与解析
平台答案:B。
整理解析
按图中判断结果可实现的常规假设,选 B。x>0 时才判断 y>0,x≤0 时才判断 z>0,所以终端分支为“x正、y正”“x正、y非正”“x非正、z正”“x非正、z非正”,共 4 条,不能误算成三个判断全部组合的 8 条。忽略占位语句对判断值的额外改动时,可分别取 (x,y,z)=(1,1,0)、(1,−1,0)、(−1,0,1)、(−1,0,−1)。
题目 100¶
展开题目 100(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 100 题(原站入口)。
下面伪代码用缩进表示程序块。若要求覆盖所有路径,至少需要(99)个用例;相应控制流图的 McCabe 环路复杂度为(100)。
请作答:第 100 题。
-
A. 2
-
B. 3
-
C. 4
-
D. 5
答案与解析
平台答案:C。
整理解析
选 C。控制流含 x>0、y>0、z>0 三个二分判定,且为单入口单出口连通图,V(G)=3+1=4。这里无循环,恰有四条结构路径;其他程序中环路复杂度与全部路径数未必相等。纠错:本题解析配图把外层 else 下的“语句5”误标为“语句3”,也错移了左侧内层语句编号;应以题干伪代码为准,拓扑形态与复杂度不受这些标签错误影响。
题目 109¶
展开题目 109(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 109 题(原站入口)。
下列关于软件测试的说法中,哪项正确( )?
-
A. 实际上,可以采用穷举测试来发现软件中的所有错误
-
B. 错误很多的程序段在修改后错误一般会非常少
-
C. 测试可以用来证明软件没有错误
-
D. 白盒测试技术中,路径覆盖法往往能比语句覆盖法发现更多的错误
答案与解析
平台答案:D。
整理解析
选 D。路径覆盖比单纯执行过每条语句更关注分支组合,因此通常有更强的发现缺陷机会,但并不保证一定发现更多错误。一般软件的输入和状态空间巨大,测试通过不能证明没有缺陷;小型有限域可做穷举,也不能因此宣称能发现任意软件的所有错误。缺陷聚集是经验现象,不是严格的数量正比定律。
题目 110¶
展开题目 110(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 110 题(原站入口)。
招聘系统限定年龄为 20—60 岁(包含两端),学历为本科、硕士或博士,专业为计算机科学与技术、通信工程或电子工程。按这三个字段设计测试时,以下哪组不是好的测试用例( )?
-
A. (20,本科,电子工程)
-
B. (18,本科,通信工程)
-
C. (18,大专,电子工程)
-
D. (25,硕士,生物学)
答案与解析
平台答案:C。
整理解析
按分别检验无效等价类的目的,选 C:18 岁和大专同时违反两个字段约束,失败时不易判断是哪项校验被触发。A 是合法边界,B 只违反年龄,D 只违反专业。多字段同时无效仍可用于组合健壮性测试,所以“不好”应限于本题这种单独验证无效类的目标。
题目 120¶
展开题目 120(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 120 题(原站入口)。
对下图使用白盒测试方法,图中有(120)条路径;按 McCabe 方法度量,该程序图的环路复杂度为(121)。
请作答:第 120 题。
-
A. 3
-
B. 4
-
C. 5
-
D. 6
答案与解析
平台答案:B。
整理解析
平台答案保留 B,即 4,但只能按基本独立路径的口径解释。原图中“语句6”明确回到“判断1”,所以没有循环次数上限时,控制流图中的完整执行路径可因循环次数和分支组合而无限增多,不能说总共只有四条。可取四条基本代表:零轮退出;一轮走判断2的否分支后退出;一轮走判断2真、判断3真后退出;一轮走判断2真、判断3假后退出。平台列出的单轮路径遗漏了回到判断1再退出的步骤,图中并不存在语句6直接到结束的边。原页已核实:未写“独立/基本路径”,也没有循环次数上限;这是原题措辞缺失,不能默加限定使其看似没有问题。
题目 121¶
展开题目 121(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 121 题(原站入口)。
对下图使用白盒测试方法,图中有(120)条路径;按 McCabe 方法度量,该程序图的环路复杂度为(121)。
请作答:第 121 题。
-
A. 3
-
B. 4
-
C. 5
-
D. 6
答案与解析
平台答案:B。
整理解析
选 B。图中有三个二分判定,按每个菱形一个判定计,V(G)=3+1=4。逐边核对也为 E=13、N=11,得到 13−11+2=4。回边“语句6→判断1”必须计算在内;数值 4 是独立路径维数,与允许反复循环时的全部执行路径数不同。
题目 129¶
展开题目 129(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 129 题(原站入口)。
使用白盒测试检验下列流程图,候选测试数据列于第二张图。至少采用测试用例(129)可实现语句覆盖;至少采用测试用例(130)可实现路径覆盖。
请作答:第 129 题。
-
A. ①
-
B. ②
-
C. ③
-
D. ④
答案与解析
平台答案:A。
整理解析
本问选 A。用例①为 (A,B,X)=(2,0,4),第一个复合判定为真,执行 x=x/A 后 x=2;随后 A=2 为真,又执行 x=x+1,两个赋值语句都被执行,因此一例足够达到语句覆盖。它并未覆盖两个判定的全部真假结果,不能据此声称达到路径覆盖。
题目 130¶
展开题目 130(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 130 题(原站入口)。
使用白盒测试检验下列流程图,候选测试数据列于第二张图。至少采用测试用例(129)可实现语句覆盖;至少采用测试用例(130)可实现路径覆盖。
请作答:第 130 题。
-
A. ①
-
B. ①②
-
C. ③④
-
D. ①②③④
答案与解析
平台答案:D。
整理解析
按图中把每个复合判定视为一个结点的路径,选 D。①(2,0,4)走真/真,即 ace;②(1,1,1)走假/假,即 abd;③(2,1,1)走假/真,即 abe;④(4,0,2)先除以 A,更新后的 x 不大于 1,走真/假,即 acd。四组覆盖四条不同路径,缺一便遗漏一条。第二个判定必须使用第一个赋值之后的 x。
题目 136¶
展开题目 136(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 136 题(原站入口)。
对下列流程图实施白盒测试,达到路径覆盖至少需要多少个用例( )?
-
A. 3
-
B. 4
-
C. 6
-
D. 8
答案与解析
平台答案:A。
整理解析
按图示控制流粒度选 A,共三条路径:第一个判定真时执行语句 A;第一个假、第二个真时直接汇合;两个都假时执行语句 B。可分别用 (x,y)=(0,3)、(0,1)、(0,0) 实现。这里把每个含 && 的菱形作为一个整体判定;若另外展开语言的短路求值控制流,路径粒度会改变,不能仍不加说明地沿用“三条”。
题目 148¶
展开题目 148(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 148 题(原站入口)。
题目用下列代码考查语句覆盖和控制流复杂度:语句覆盖至少需要(148)个用例,McCabe 环路复杂度为(149)。程序块以缩进表示。
请作答:第 148 题。
-
A. 1
-
B. 2
-
C. 3
-
D. 4
答案与解析
平台答案:A。
整理解析
选 A。原代码的缩进关系已核实:外层 for 遍历 i=2…n,内层 while 移动大于 key 的元素,最后的 A[j+1]=key 在 while 外、for 内。以从 1 开始的 A=[2,1]、n=2 为例,一次运行就能执行所有赋值和循环体语句,因此语句覆盖一例足够。原解析图入口把 input A,n 写成 input i,n,是解析图的变量笔误,应以已核实题干为准。
题目 149¶
展开题目 149(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 149 题(原站入口)。
题目用下列代码考查语句覆盖和控制流复杂度:语句覆盖至少需要(148)个用例,McCabe 环路复杂度为(149)。程序块以缩进表示。
请作答:第 149 题。
-
A. 2
-
B. 1
-
C. 3
-
D. 4
答案与解析
平台答案:C。
整理解析
选 C。原代码的缩进关系已核实,最后的 A[j+1]=key 位于 while 外、for 内。按平台流程图的粒度,for 与整个 while 条件各是一个二分判定,V(G)=2+1=3。若把 and 的短路求值拆成 j>0 与 A[j]>key 两个判定,再加外层 for,更细的控制流图会得到 4;这一差别来自建图粒度,不是缩进疑义。
同材料可参照第 148 题。
题目 150¶
展开题目 150(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 150 题(原站入口)。
需求规定月收入不超过 3500 元免征个人所得税。用 3499、3500、3501 三个输入来测试这一需求,采用的是哪种测试方法( )?
-
A. 判定覆盖
-
B. 边界值分析
-
C. 路径覆盖
-
D. 因果图
答案与解析
平台答案:B。
整理解析
选 B。三个数分别处于题设阈值的下方、边界及上方,是典型边界值分析;3500 只是本题给定的需求阈值。纠错:黑盒测试中的因果图表示输入条件与输出结果间的逻辑关系,可进一步导出判定表,不是用于根因分析的石川图或鱼骨图。
题目 158¶
展开题目 158(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 158 题(原站入口)。
在所列白盒测试覆盖方法中,哪一种通常被认为发现错误的能力最弱( )?
-
A. 判定覆盖
-
B. 语句覆盖
-
C. 条件覆盖
-
D. 路径覆盖
答案与解析
平台答案:B。
整理解析
按常见教材比较选 B。语句覆盖只要求每条可执行语句至少运行一次,可以完全漏掉某个判定的另一分支。纠错:判定—条件覆盖要求每个判定及其原子条件都经历真和假,并不要求全部条件组合;全部组合属于条件组合覆盖。条件覆盖与判定覆盖也不能简单相互推出,覆盖率本身更不保证一定发现某个具体缺陷。
题目 159¶
展开题目 159(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 159 题(原站入口)。
某财务系统组件中的一个变量没有正确初始化,以下哪类测试最可能首先发现该问题( )?
-
A. 单元测试
-
B. 集成测试
-
C. 接受测试
-
D. 安装测试
答案与解析
平台答案:A。
整理解析
选 A。单元测试直接检查组件内部行为,便于用初始状态和边界输入暴露初始化缺陷。集成、接受或安装测试也可能间接触发问题,但范围较大,通常不如针对组件的测试容易定位。
七、系统维护¶
维护类别要看**为什么变化**,不能凭“谁提出”分类:用户可以报告缺陷,程序员可以提出性能改进,第三方变化也可能引出新功能需求。
| 类型 | 变化原因 | 常见例子 |
|---|---|---|
| 改正性维护 | 修复已存在的故障或缺陷,使行为符合原要求 | 计算错误、崩溃、原性能指标不达标 |
| 适应性维护 | 适应外部环境变化 | 操作系统升级、外部接口变更、法规或业务环境改变 |
| 完善性/改善性维护 | 增加能力、提升性能或使用体验 | 新增报表、在原要求之外进一步优化响应速度 |
| 预防性维护 | 降低未来出错或维护困难的风险 | 主动消除潜在故障、改善脆弱结构、补充可维护性保障 |
同一项大型变更可能包含多种目的,题目通常要求按主要动机判断。重构也不自动只属于一种维护类别,仍需结合原因。
可维护性指理解、定位、修改、验证和改进系统的难易程度。课件强调**可理解性、可修改性、可测试性**;从需求和设计阶段就应关注,不能等到交付后才考虑。
**平均修复时间(MTTR)**可用于衡量故障修复效率:在统一统计口径下,用已修复故障的修复时间总和除以故障次数。例如三次修复分别用时 20、35、65 分钟,MTTR=(20+35+65)÷3=40 分钟。比较时应统一计时起止点、故障类型和样本范围;同等条件下越短,通常说明修复越容易。它不表示故障发生频率,也不能独自概括全部可维护性;用户量、功能点数和数据库容量则主要反映规模或工作量。
按维护对象分类与维护工具¶
“改正、适应、完善、预防”按**目的**分类;程序、数据、文档维护按**对象**分类。修复一批数据库记录属于数据维护,即使用专门程序执行也不改变对象;修改算法属于程序维护;同步更新接口说明属于文档维护。一项维护可以同时具有“改正性”和“数据维护”两个标签。
**逆向工程**从已有代码、数据或运行行为恢复结构、设计和业务规则,用于理解现有系统;它本身不必改变程序,也不以文档完全缺失为前提。正向工程从规格和设计实现系统;再工程则可能在理解旧系统后重构或重新实现。维护工具还包括文档分析、版本控制和配置管理等,配置管理控制的不仅是代码,还包括依赖、构建配置、文档与发布基线。其活动与边界见项目管理中的配置管理说明。
例题 26:性能优化属于哪种维护¶
系统交付用户使用了一段时间后发现,系统的某个功能响应非常慢。修改了某模块的一个算法使其运行速度得到了提升,则该行为属于( )维护。
A、改正性 B、适应性 C、改善性 D、预防性
参考答案与解析
按题干通常意图,参考 C(改善性/完善性)。 它强调通过算法优化提升运行速度,未说明违反原有性能要求。
若补充条件是“原要求必须 3 秒内响应,但目前达不到”,修复该性能缺陷可归为改正性维护。因此本题靠现有措辞选 C,不能把所有性能优化都机械归为完善性。提出者是谁并不决定类别。
例题 27:维护工作的难度¶
以下关于软件维护的叙述中,不正确的是( )。
A、软件维护解决软件产品交付用户之后运行中发生的各种问题
B、软件维护期通常比开发期长得多,投入也大得多
C、软件的可维护性是软件开发阶段各个时期的关键目标
D、相对于软件开发任务而言,软件维护工作要简单得多
参考答案与解析
选 D。 维护需要理解既有系统、兼容历史数据和接口、评估连带影响并防止回归,常常并不简单。维护期与投入通常可超过初始开发期,但 B 是项目经验,不是每个软件都必须满足的定量定律。
例题 28:可维护性的评价线索¶
系统可维护性是指维护人员理解、改正、改动和改进软件系统的难易程度,其评价指标不包括( )。
A、可理解性 B、可测试性 C、可修改性 D、一致性
参考答案与解析
按课件列举的可维护性因素选 D。 可理解性、可测试性、可修改性是直接指标;“一致性”虽可能影响维护体验,却不在本题指定的这组指标中。不要由此推断一致性对工程质量没有价值。
专项题库练习(13 题)¶
本小节对应题库练习共 13 道题目,题目覆盖本节考点,答案与解析默认折叠。
题目 009¶
来源:知识点练习「系统开发基础」第 9 题(原站入口)。
某搜索引擎在投入使用后,计划增加语音输入搜索功能,使用户可以说出搜索内容。这属于( )维护。
-
A. 正确性
-
B. 适应性
-
C. 完善性
-
D. 预防性
答案与解析
平台答案:C。
整理解析
选 C。新增语音搜索是在原有系统上扩充用户功能,属于完善性维护。若是修复已有功能错误才是改正性维护;为适配变化的运行环境而修改是适应性维护;提前降低未来故障或维护风险则是预防性维护。应按本次修改的目的分类,不只看“输入方式变了”。
题目 021¶
来源:知识点练习「系统开发基础」第 21 题(原站入口)。
关于软件维护及可维护性,下列说法不正确的是( )。
-
A. 软件维护要解决软件产品交付用户之后运行中发生的各种问题
-
B. 软件的维护期通常比开发期长得多,其投入也大得多
-
C. 进行质量保证审查可以提高软件产品的可维护性
-
D. 提高可维护性是在软件维护阶段考虑的问题
答案与解析
平台答案:D。
整理解析
选 D。可维护性应从需求、设计、编码、测试等开发环节持续考虑,例如明确模块职责、降低耦合、保留有效文档和自动化测试,而不是等交付后的维护阶段再补救。维护阶段通常很长、累计投入可能很大,但不是每个项目都必然如此。
题目 030¶
展开题目 030(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 30 题(原站入口)。
关于软件可维护性,以下补全“可维护性( )”的说法中,不正确的是哪一项?
-
A. 是衡量软件质量的一个重要特性
-
B. 不受软件开发文档的影响
-
C. 是软件开发阶段各个时期的关键目标
-
D. 可以从可理解性、可靠性、可测试性、可行性、可移植性等方面进行度量
答案与解析
平台答案:B。
整理解析
平台选 B。清楚的需求、架构、接口与维护文档能降低理解和修改成本,所以可维护性会受开发文档影响。D 是平台教材的宽泛评价口径,不应直接当作标准质量模型的可维护性子特性清单;例如在常见 ISO/IEC 分类中,可靠性、可移植性通常是并列质量特性。
题目 038¶
展开题目 038(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 38 题(原站入口)。
按软件过程活动给软件工具分类,逆向工程工具属于( )工具。
-
A. 软件开发
-
B. 软件维护
-
C. 软件管理
-
D. 软件支持
答案与解析
平台答案:B。
整理解析
按过程活动分类选 B。逆向工程从已有代码、数据或运行行为中恢复设计、结构及规则,帮助理解和维护现有系统。它不以“文档缺失”为必要条件,也不只用于维护,但本题采用的工具分类将其归入软件维护。
题目 080¶
展开题目 080(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 80 题(原站入口)。
系统交付用户后,为改善图形输出而修改系统,这属于( )维护。
-
A. 改正性
-
B. 适应性
-
C. 改善性
-
D. 预防性
答案与解析
平台答案:C。
整理解析
选 C,这里的“改善性”对应完善性维护。题目描述为提升图形输出效果而修改已交付系统,属于功能或表现能力的改进;若实际是纠正未达到原需求的图形错误,则应另按改正性维护判断。
题目 086¶
展开题目 086(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 86 题(原站入口)。
以下哪类工具被题目排除在软件维护工具之外( )?
-
A. 版本控制
-
B. 配置管理
-
C. 文档分析
-
D. 逆向工程
答案与解析
平台答案:B。
整理解析
平台答案保留 B,但该排除缺乏充分依据:配置管理用于控制变更、版本与基线,本来就支持维护,版本控制还是其重要组成部分。原页已核实:B 确为“配置管理”、平台答案确为 B,解析同时列出“配置管理支持工具”。这是平台自身的分类或答案矛盾;若按特定教材另归类别,须说明该分类口径,不能断言配置管理不用于维护。
题目 101¶
展开题目 101(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 101 题(原站入口)。
商场销售系统依赖信用卡公司的信息系统。由于对方改变了数据格式,销售系统随之修改;这属于哪类维护( )?
-
A. 改正性
-
B. 适应性
-
C. 改善性
-
D. 预防性
答案与解析
平台答案:B。
整理解析
选 B。变化来自系统外部的数据交换环境,修改是为了继续兼容新格式,因此是适应性维护。不是修复既有逻辑错误,也不是单纯增加功能。
题目 111¶
展开题目 111(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 111 题(原站入口)。
系统交付使用一段时间后,某功能被发现响应很慢。开发人员修改一个模块的算法,使运行速度提高;这属于哪种维护( )?
-
A. 改正性
-
B. 适应性
-
C. 改善性
-
D. 预防性
答案与解析
平台答案:C。
整理解析
按题目将其视为性能改善的意图,选 C。通过改进算法提升效率属于改善性维护。若“慢”实际违反了原先约定的性能需求,而修改是修复该缺陷,则也可能归为改正性维护;题面未交代原性能基线,不能仅凭速度提升给所有修改定类。
题目 122¶
展开题目 122(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 122 题(原站入口)。
关于软件维护的性质与投入,下列哪项说法不正确( )?
-
A. 软件维护解决软件产品交付用户之后运行中发生的各种问题
-
B. 软件维护期通常比开发期长得多,投入也大得多
-
C. 软件的可维护性是软件开发阶段各个时期的关键目标
-
D. 相对于软件开发任务而言,软件维护工作要简单得多
答案与解析
平台答案:D。
整理解析
选 D。维护往往需要理解既有行为、兼容旧数据和接口,并控制变更的连锁影响,不能认为它比开发简单得多。维护期和累计投入通常较大,但也不能把“每次维护必比开发复杂、每个项目维护必更贵”作为普遍定律。
题目 137¶
展开题目 137(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 137 题(原站入口)。
搜索引擎交付后,开发者更换了索引方法,使用户取得结果更快。这属于哪类维护( )?
-
A. 正确性
-
B. 适应性
-
C. 完善性
-
D. 预防性
答案与解析
平台答案:C。
整理解析
选 C,完善性维护。题目把修改描述为增强既有性能,而不是适应外部格式或平台变化。若是在修复违反原定性能要求的缺陷,则需考虑改正性维护;原选项 A 写作“正确性”,这里保留该词,不将其默改为规范名称。
题目 147¶
展开题目 147(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 147 题(原站入口)。
系统可维护性关注维护人员理解、纠正、修改和改进软件的难易。以下哪项不属于本题列举的评价指标( )?
-
A. 可理解性
-
B. 可测试性
-
C. 可修改性
-
D. 一致性
答案与解析
平台答案:D。
整理解析
选 D。可理解、可测试、可修改直接反映能否定位影响并安全实施变更。“一致性”不在本题的这组常用指标中,但一致的命名、接口和文档仍有助于维护,不能把它视为与维护无关,也不宜不分标准版本就断言它只属于可移植性。
题目 151¶
展开题目 151(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 151 题(原站入口)。
以下关于软件维护的陈述,哪项正确( )?
-
A. 工作量相对于软件开发而言要小很多
-
B. 成本相对于软件开发而言要更低
-
C. 时间相对于软件开发而言通常更长
-
D. 只对软件代码进行修改的行为
答案与解析
平台答案:C。
整理解析
选 C。软件交付后可持续使用多年,维护通常延续得比初次开发更久,累计成本和工作量也可能很大。维护不只改代码,还可能更新相关数据、配置和文档并开展验证;但具体时长与投入不能脱离产品寿命一概而论。
题目 160¶
展开题目 160(先作答,再查看解析)
来源:知识点练习「系统开发基础」第 160 题(原站入口)。
软件交付后的维护可按维护对象分类。使用专门程序,对文件或数据中的记录进行增加、修改、删除,这属于哪种维护( )?
-
A. 程序维护
-
B. 数据维护
-
C. 代码维护
-
D. 设备维护
答案与解析
平台答案:B。
整理解析
选 B。被维护的是文件或数据库内的记录内容,因此属于数据维护。这里按维护对象分类,与改正性、适应性、完善性、预防性这种按目的分类的维度不同。
八、软件质量保证与历史质量模型¶
质量保证关注过程、标准、评审、审计及持续改进,测试是其中提供质量信息的一种活动。不能把“质量保证”等同于“测试通过”。
高质量以满足明确需求、合理的隐含需求和适用标准为依据。例如功能可用之外,还要能诊断问题、维护升级;采用最新框架不是质量的必要条件。**正式技术评审**针对需求、设计、代码等工作产品发现缺陷、检查一致性与标准符合性,通常经过准备、记录问题、修正和跟踪。它评审的是技术成果,不是用错误数量给程序员排名,也不要求在会上由高级人员包办修复。
本节和例题按 **ISO/IEC 9126 的历史六特性体系及课件简化图**复习:
| 主特性 | 课件图中的子特性与关键词 |
|---|---|
| 功能性 | 适合性、准确性、互操作性、安全保密性、依从性 |
| 可靠性 | 成熟性、容错性、易恢复性;在规定条件下维持能力 |
| 易用性 | 易理解性、易学性、易操作性 |
| 效率 | 时间特性、资源利用性 |
| 维护性 | 易分析性、易改变性、稳定性、易测试性 |
| 可移植性 | 适应性、易安装性、课件所称“一致性”、易替换性 |
这是便于做题的简化归纳,不是所有版本标准子特性的完整清单。9126 已被 SQuaRE 系列后续标准替代,ISO/IEC 25010 等新版的特性组织发生变化,例如安全性在后续模型中成为独立主特性;不能把当前工程分类直接搬回旧题。图中可移植性的“一致性”等译名也应结合指定版本与教材理解。
若题目明确指定 ISO/IEC 25010:2023,可维护性的子特性是模块化、可重用性、可分析性、可修改性和可测试性。可分别理解为:控制模块间的改动影响、在其他系统或资产中复用、诊断问题并评估修改、有效修改而不引入缺陷或降低质量、建立测试准则并验证修改。容错性仍属于可靠性,关注发生故障后还能否维持规定功能;它与“容易找到并修好问题”不同。答题应先确认指定版本,再判断具体特性的归属。
这些名字可按使用场景区分:用户看懂界面、学会操作是**易用性**;维护者定位缺陷、评估改动、验证修改是**维护性**;换环境后能适配、安装、替代原软件是**可移植性**。可靠性的成熟性关注避免因缺陷发生失效,容错性关注发生故障时仍维持规定能力,易恢复性关注恢复服务和数据。安全保密性则关注阻止未授权访问等问题,不能因为都与“避免出事”有关就归入可靠性。
例题 29:易分析性属于哪类¶
在ISO/IEC软件质量模型中,易使用性的子特性不包括( )。
A、易理解性 B、易学性 C、易操作性 D、易分析性
参考答案与解析
按 ISO/IEC 9126 历史口径选 D。 易理解、易学、易操作属于易用性;易分析性关注诊断缺陷、定位需要修改的部分,属于维护性。
例题 30:可靠性与安全性¶
在ISO/IEC 9126软件质量模型中,可靠性质量特性是指在规定的一段时间内和规定的条件下,软件维持在其性能水平有关的能力,其质量子特性不包括( )。
A、安全性 B、成熟性 C、容错性 D、易恢复性
参考答案与解析
按 ISO/IEC 9126 历史口径选 A。 成熟性、容错性、易恢复性属于可靠性;安全保密性在该旧模型中归入功能性。不要用后续版本中独立的安全性主特性去修改旧题答案。
专项题库练习(8 题)¶
本小节对应题库练习共 8 道题目,题目覆盖本节考点,答案与解析默认折叠。
题目 016¶
来源:知识点练习「系统开发基础」第 16 题(原站入口)。
ISO/IEC 软件质量模型把可靠性描述为:软件在规定时间、规定条件下维持其性能水平的能力。以下哪项不是可靠性的子特性( )?
-
A. 成熟性
-
B. 容错性
-
C. 易恢复
-
D. 可移植性
答案与解析
平台答案:D。
整理解析
选 D。原解析图采用传统 ISO/IEC 9126 式分类:成熟性、容错性、易恢复性及可靠性的依从性归入可靠性;可移植性是与可靠性并列的质量特性。应结合标准版本理解,不能把这张旧分类表直接套到所有后续版本。
题目 027¶
来源:知识点练习「系统开发基础」第 27 题(原站入口)。
正式技术评审的目标是( )。
-
A. 允许高级技术人员修改错误
-
B. 评价程序员的工作效率
-
C. 发现软件中的错误
-
D. 记录程序员的错误情况并与绩效挂钩
答案与解析
平台答案:C。
整理解析
选 C。正式技术评审主要针对工作产品查找需求、设计、逻辑或实现缺陷,同时检查一致性与标准符合情况。评审对象是技术成果,不是用错误数给程序员作绩效排名;修复缺陷也不要求只能由高级人员现场完成。
题目 035¶
来源:知识点练习「系统开发基础」第 35、117 题(原站入口)。
在 ISO/IEC 软件质量模型中,以下哪项不属于易使用性的子特性( )?
-
A. 易理解性
-
B. 易学性
-
C. 易操作性
-
D. 易分析性
答案与解析
平台答案(来源第 35 题):D。
整理解析(来源第 35 题)
选 D。按原图的传统软件质量模型,易理解、易学、易操作属于易用性;易分析性属于维护性,用于判断问题原因或修改影响。这里按题目使用的标准分类版本作答。
来源第 117 题对照
原题题干
题目把易使用性定义为软件使用所需努力及用户对使用体验评价的一组属性。按此 ISO/IEC 软件质量模型,哪项不属于易使用性的子特性( )?
原题选项对照
| 原选项 | 内容 | 本页选项 |
|---|---|---|
| A | 易理解性 | A |
| B | 易学性 | B |
| C | 易分析性 | D |
| D | 易操作性 | C |
原平台答案(来源第 117 题,原题选项):C;对应本页选项:D;本页平台答案:D。
整理解析(来源第 117 题)
选 C。易理解、易学和易操作关注用户学习、理解与操作软件的难易;易分析性关注定位缺陷、分析变更影响,属于可维护性。
题目 056¶
来源:知识点练习「系统开发基础」第 56 题(原站入口)。
以下哪项不属于软件质量特性中的可移植性( )?
-
A. 适应性
-
B. 易安装性
-
C. 易替换性
-
D. 易理解性
答案与解析
平台答案:D。
整理解析
选 D。按教材采用的传统质量分类,适应性、易安装性、易替换性属于可移植性;易理解性属于易用性。不同标准版本的分组可能调整,不能把这组名称当作所有版本通用的完整清单。
题目 096¶
来源:知识点练习「系统开发基础」第 96 题(原站入口)。
ISO/IEC 9126 用可靠性描述软件在规定条件和时间内维持规定性能水平的能力。以下哪项不属于其可靠性子特性( )?
-
A. 安全性
-
B. 成熟性
-
C. 容错性
-
D. 易恢复性
答案与解析
平台答案:A。
整理解析
选 A。按 ISO/IEC 9126,成熟性、容错性、易恢复性属于可靠性,安全性列在功能性之下。较新的 ISO/IEC 25010 将安全性单列为质量特性,解题应遵守题目指定的标准版本。
题目 106¶
来源:知识点练习「系统开发基础」第 106 题(原站入口)。
在 ISO/IEC 9126 质量模型里,“安全性”归属于以下哪一个质量特性( )?
-
A. 功能性
-
B. 可靠性
-
C. 效率
-
D. 可维护性
答案与解析
平台答案:A。
整理解析
选 A。题目指定的 ISO/IEC 9126 将安全性列为功能性的子特性。不要用后续 ISO/IEC 25010 中安全性独立成类的分类替换本题口径。
题目 144¶
来源:知识点练习「系统开发基础」第 144 题(原站入口)。
ISO/IEC 软件质量模型将可移植性定义为软件从一个环境转移到另一个环境的能力。下列哪项不是其子特性( )?
-
A. 适应性
-
B. 易测试性
-
C. 易安装性
-
D. 易替换性
答案与解析
平台答案:B。
整理解析
选 B。易测试性衡量检查软件及其修改效果的难易,属于可维护性;适应新环境、安装和替换其他软件才是题目所用可移植性分类的内容。
题目 157¶
来源:知识点练习「系统开发基础」第 157 题(原站入口)。
软件开发以获得高质量系统为目标。下面哪一项不属于高质量本身的要求( )?
-
A. 软件必须满足用户规定的需求
-
B. 软件应遵循规定标准所定义的一系列开发准则
-
C. 软件开发应采用最新的开发技术
-
D. 软件应满足某些隐含的需求,如可理解性、可维护性等
答案与解析
平台答案:C。
整理解析
选 C。满足明确及合理的隐含需求、遵循适用标准,是评价质量的依据;技术是否最新不是质量条件。新技术可能适合也可能不适合项目,不能仅因它新就断言不稳定,关键是与需求、风险和工程能力匹配。
九、软件文档¶
文档支持沟通、开发、使用、维护和管理,也是软件交付的重要组成部分。敏捷要求减少无价值的文档,并不取消必要的需求、接口、运维和用户说明。
| 类别 | 主要用途 | 课件示例 |
|---|---|---|
| 开发文档 | 支持分析、设计、开发与验证 | 可行性研究和任务书、需求及功能规格、设计规格、开发计划、集成与测试计划、质量保证计划、安全和测试信息 |
| 产品文档 | 支持产品理解、使用、培训与服务 | 培训手册、参考手册、用户指南、软件支持手册、产品手册及信息材料 |
| 管理文档 | 支持进度、职责、决策和变更管理 | 进度及变更记录、软件变更记录、开发决策记录、职责定义 |
分类按主要用途区分,不代表一份文档只能供某一类人使用。原章节回顾的“开放文档”应为**开发文档**。
文档随工作开展形成并维护:规划分析时用总体规划、可行性研究和开发计划沟通目标与安排;需求分析形成需求规格;设计形成架构、接口及详细规格。测试设计可以在需求、设计阶段开始,测试分析报告则依据执行结果形成。用户手册主要面向使用者,也可提前写草稿来验证交互需求,不能把主要用途误当成唯一编写时点。
高质量文档应明确读者、术语准确、内容完整自洽,并与对应软件版本保持一致。按项目规模、复杂度、风险和适用规范裁剪种类与深度:一个端上工具与大型交易系统不必交付完全相同的文档集合,但都需要让读者找到必要的信息。完整并非重复堆材料,裁剪也不等于省略关键需求或接口契约。
例题 31:文档对开发的价值¶
以下关于文档的叙述中,不正确的是( )。
A、也是软件产品的一部分,没有文档的软件就不能称之为软件
B、文档只对软件维护活动有用,对开发活动意义不大
C、软件文档的编制在软件开发工作中占有突出的地位和相当大的工作量
D、质量文档对于发挥软件产品的效益有着重要的意义
参考答案与解析
选 B。 文档支持需求沟通、设计评审、实现、测试、交付和维护,并非只对维护有用。A 采用教材对完整软件产品(程序、数据及相关文档)的工程定义,措辞偏绝对;它不意味着一个可执行程序因缺少独立说明书就不再是软件程序。题目要求识别的主要错误是 B 否认文档对开发的价值。
专项题库练习(6 题)¶
本小节对应题库练习共 6 道题目,题目覆盖本节考点,答案与解析默认折叠。
题目 008¶
来源:知识点练习「系统开发基础」第 8 题(原站入口)。
关于软件文档,下列说法不正确的是( )。
-
A. 文档仅仅描述和规定了软件的使用范围及相关的操作命令
-
B. 文档也是软件产品的一部分,没有文档的软件就不能称之为软件
-
C. 软件文档的编制在软件开发工作中占有突出的地位和相当大的工作量
-
D. 高质量文档对于发挥软件产品的效益有着重要的意义
答案与解析
平台答案:A。
整理解析
平台选 A。软件文档还可记录需求、架构、接口、测试、部署和维护等内容,远不止操作范围与命令。B 采用教材“程序、数据及相关文档构成软件产品”的交付口径;它强调产品完整性,不应理解成缺少说明文档的程序便不能运行。
题目 018¶
来源:知识点练习「系统开发基础」第 18 题(原站入口)。
关于软件文档,下列说法不正确的是( )。
-
A. 项目相关人员可以通过文档进行沟通
-
B. 编写文档会降低软件开发的效率
-
C. 编写高质量文档可以提高软件开发的质量
-
D. 文档是软件的不可或缺的部分
答案与解析
平台答案:B。
整理解析
选 B。适量、准确并及时更新的文档有助于沟通、减少误解和返工,不能概括成“编写文档就会降低效率”。反过来,也不能断言任何文档都自动提高效率;重复、过时或不必要的文档同样会增加成本。
题目 119¶
来源:知识点练习「系统开发基础」第 119 题(原站入口)。
关于软件文档通常在哪个阶段编写,下面哪项说法不正确( )?
-
A. 软件需求规格说明书在需求分析阶段撰写
-
B. 概要设计规格说明书在设计阶段撰写
-
C. 测试设计必须在测试阶段撰写
-
D. 测试分析报告在测试阶段撰写
答案与解析
平台答案:C。
整理解析
选 C。测试设计可以在需求和设计阶段开始:先依据需求确定验收或系统测试目标,再依据设计细化集成与单元测试。因此不必等到测试执行阶段才写测试设计,文档也可随开发逐步更新。
题目 135¶
来源:知识点练习「系统开发基础」第 135 题(原站入口)。
关于软件文档的作用,下列哪项叙述不正确( )?
-
A. 文档也是软件产品的一部分,没有文档的软件就不能称之为软件
-
B. 文档只对软件维护活动有用,对开发活动意义不大
-
C. 软件文档的编制在软件开发工作中占有突出的地位和相当大的工作量
-
D. 高质量文档对于发挥软件产品的效益有着重要的意义
答案与解析
平台答案:B。
整理解析
按教材口径选 B。需求、设计、接口和测试等文档也支持开发中的沟通、决策与验证,不只服务于后续维护。A 强调文档属于完整的软件产品交付物;“没有文档就不是软件”是教材中的规范性表述,不能据此否认无文档程序仍是软件。
题目 146¶
来源:知识点练习「系统开发基础」第 146 题(原站入口)。
在信息系统规划与分析阶段,用户和系统分析人员通常用文档进行沟通。下列哪项不属于该阶段的典型沟通文档( )?
-
A. 可行性研究报告
-
B. 总体规划报告
-
C. 项目开发计划
-
D. 用户使用手册
答案与解析
平台答案:D。
整理解析
按传统阶段分工选 D。可行性、总体规划和开发计划用于讨论是否建设、建设范围与实施安排;用户手册主要服务于产品使用。手册草稿也可以提前编写以验证需求,因此不是只有软件全部完成后才能动笔。
题目 161¶
来源:知识点练习「系统开发基础」第 161 题(原站入口)。
关于高质量软件文档,下面哪项说法不正确( )?
-
A. 不论项目规模和复杂程度如何,都要用统一的标准指定相同类型和相同要素的文档
-
B. 应该分清读者对象
-
C. 应当是完整的、独立的、自成体系的
-
D. 行文应十分确切,不出现多义性描述
答案与解析
平台答案:A。
整理解析
选 A。文档应遵循适用规范,但具体种类、深度与要素可按项目规模、复杂程度和读者需求裁剪,不宜要求所有项目完全相同。明确受众、内容完整且自洽、表达无歧义,才是共同的质量目标。
十、复习时的关键词与检查顺序¶
| 题干线索 | 优先联想 | 继续核对的条件 |
|---|---|---|
| 成熟度、五级 | CMM/CMMI 阶段式 | 两个模型的等级名称、历史版本 |
| 输入工作产品转换为输出 | 早期连续式 CL1 已执行 | 题目是否明确采用六级模型 |
| 尽早使用、持续完善 | 演化或迭代 | 选项是否强调分批新增功能、需求反馈 |
| 风险分析 | 螺旋模型 | 是否真以风险驱动下一轮工作 |
| 分批交付、核心产品 | 增量开发 | 模块边界与整体架构是否能支持增量 |
| 对象、交叠、无明显阶段间隙 | 喷泉模型 | 不是“无阶段、无文档” |
| 用例、架构、迭代增量 | RUP | 四个阶段不是四种互斥活动 |
| Sprint、冲刺 | Scrum | 不强制 30 天;固定时长不超过一个月 |
| 结对、重构、测试先行 | XP | 强调技术质量,不能解释为速度压倒质量 |
| 前一步输出是后一步输入 | 顺序内聚 | 只说执行次序还不足以排除过程内聚 |
| 传结构体/记录 | 标记耦合 | 简单值与控制标志的语义不同 |
| 每个判定真、假 | 判定覆盖 | 与每个基本条件的真、假不同 |
| 每个基本条件真、假 | 条件覆盖 | 条件是否真的执行,是否有短路或嵌套 |
| 改动后检查已有行为 | 回归测试 | 包括未修改但可能受影响的部分 |
| 外部环境改变 | 适应性维护 | 不是只看提出者是不是第三方 |
| 错误修复/新能力/预防风险 | 改正/完善/预防 | 按变更原因,而不是用户或程序员身份 |
| 维护性中的“易分析性” | 历史 ISO/IEC 9126 | 不要误归入易用性 |
做选择题可依次检查:问正确还是错误 → 找定义中的决定性条件 → 核对版本与模型假设 → 排除只是常见现象的说法。图和代码题先实际走一遍路径;涉及数值、整数除法、短路或循环时,关键词不能代替计算。
可继续阅读已有的生命周期与开发模型、需求分析与系统设计、测试、质量与维护入口。
课件来源¶
来自希赛《2026 版本软件设计师考试精讲班视频教程讲义电子版》,按已打开页面的 Obsidian Web Clipper 正文整理。图片保留原图,原图的简化和错误已在相邻文字中说明。
| 原课件 | 章节 ID |
|---|---|
| 课程内容提要 | 161724 |
| 软件工程概述 | 161726 |
| 软件开发模型 | 161727 |
| 软件开发方法 | 161728 |
| 系统分析 | 161729 |
| 系统设计 | 161730 |
| 系统测试 | 161731 |
| 系统维护 | 161732 |
| 软件质量保证 | 161733 |
| 软件文档 | 161734 |
| 章节回顾 | 161735 |




























































