【软件工程】需求工程:需求规格说明与需求验证

考点频率 :★★★★☆(选择题常考SRS特征,验证与确认的辨析是高频易错点)

难度 :⭐⭐

建议:重点掌握SRS的六大质量特征、需求验证的常用方法,以及"验证"与"确认"的本质区别

1️⃣ 需求规格说明:把"蓝图"写成"合同"

承接上篇文章,需求分析阶段产出了数据流图、用例图等模型,但这些模型还不能直接交给开发人员编码------因为图是分散的,需要一份完整的、结构化的、无二义性的文档来统一所有人的认知。

软件需求规格说明书(SRS,Software Requirements Specification) 就是这份文档。它是需求工程的核心产出物,是开发团队和用户之间的一份"技术合同"------开发团队承诺按SRS实现功能,用户承诺验收标准以SRS为准。

SRS包含哪些内容?

一份典型的SRS通常包含以下部分:

章节 主要内容
引言 项目背景、术语定义、适用范围
总体描述 系统主要功能、用户角色、硬件/软件环境、设计约束(如必须使用特定数据库、遵守特定法规)
外部接口需求 用户界面、硬件接口、软件接口、通信接口
功能需求 系统"必须做什么"------每个功能模块的详细描述
非功能需求 性能(响应时间、吞吐量)、安全性、可靠性、可维护性等质量属性
数据需求 数据字典、数据格式、数据库要求
附录 业务流程图、补充说明等

SRS的六大质量特征(软考高频考点)

一份合格的SRS必须满足以下特征,这也是选择题中常考的考点:

特征 含义 反例
正确性 每条需求都真实反映了用户的意图 用户说要"导出Excel",你写成了"导出PDF"
完整性 包含所有需求,没有遗漏 漏掉了"密码输错3次锁定账号"的规则
一致性 需求之间不矛盾 前面说"支持1000并发",后面说"内存限制只支持100并发"
明确性 每条需求无二义性,只有一种解释 "系统响应要快" ❌ → "系统响应时间≤2秒" ✅
可验证性 每条需求都可以通过测试或评审来验证 "用户体验好" ❌ → "用户可在3步内完成下单" ✅
可追踪性 每条需求都有唯一编号,可从设计追溯到测试 需求编号 REQ-101,对应设计文档 SD-101,对应测试用例 TC-101

软考常考 :题目给出一句需求描述,让你判断它违反了SRS的哪个特征。比如"系统应具有良好的用户界面" → 违反明确性(什么叫"良好"?没法量化)。

2️⃣ 需求验证:怎么确认"蓝图画对了"?

需求规格说明书写完后,不能直接就扔给开发团队开干------因为里面可能有错误、遗漏、矛盾。需求验证就是检查SRS"是否正确"的过程。

需求验证的常用方法

方法 说明 适用场景
正式评审 组织各方代表(用户、需求分析师、架构师、测试代表)召开会议,逐条评审SRS 大型项目、安全关键系统
同行评审 由同级别需求分析师互相检查,找出逻辑漏洞和遗漏点 常规项目
走查 需求撰写人向相关人员逐条解释需求,发现不一致和含糊之处 需求复杂、难理解的场景
原型验证 构建快速原型(低保真/高保真)让用户试用,验证需求是否符合用户真实预期 需求不明确、用户难以具象化的场景
测试用例预编写 在编码前先编写验收测试用例,如果某个需求写不出测试用例,说明该需求不可验证(违反了"可验证性"特征) 检验SRS的可测试性

3️⃣ 需求验证 vs 需求确认(极容易混淆!)

在软考中,验证(Verification)确认(Validation) 是两张极易混淆的"面孔"。很多同学看到"确认"就以为是"验证",结果丢分。

记住这个经典定义:

概念 英文 核心问题 关注点 检查对象
验证(Verification) "Are we building the product right?" 我们正确地构建了产品吗? 过程是否正确、文档是否规范 需求文档、设计文档、代码是否符合规范
确认(Validation) "Are we building the right product?" 我们构建了正确的产品吗? 最终产品是否满足用户真实需求 原型、可运行系统是否符合用户预期

打个比方:

  • 验证(Verification) :检查你手里的设计图纸------每根线有没有画歪?尺寸有没有标错?这就像老师检查你的作业有没有语法错误。
  • 确认(Validation) :把你盖好的房子给客户看------客户说"我要的是三室一厅,你给我整了个两室一厅?"这就像用户试用产品后反馈是否满意。

放在需求工程中:

  • 需求验证:检查SRS文档本身------需求写全了吗?前后矛盾吗?有没有歧义?(检查"图纸")
  • 需求确认:把原型或最终产品拿给用户看------用户满意吗?这是你想要的吗?(检查"成品")

考试口诀:验证看文档(过程),确认看用户(结果)。验证明"对不对",确认问"好不好"。

4️⃣ 经典例题

例题1:在需求工程中,需求规格说明书(SRS)的"明确性"特征是指( )。

A. 每条需求都有唯一的编号

B. 每条需求都真实反映了用户的意图

C. 每条需求只有一种解释,不存在二义性

D. 每条需求都可以通过测试来验证

解析 :A是可追踪性,B是正确性,D是可验证性,C是明确性。选 C


例题2:某项目团队在SRS中写道:"系统应具备良好的扩展性。"以下说法正确的是( )。

A. 该需求符合"明确性"特征

B. 该需求不符合"明确性"特征

C. 该需求符合"可验证性"特征

D. 该需求符合"一致性"特征

解析 :"良好的扩展性"是一个模糊的描述------什么叫"良好"?是支持增加新模块?还是支持数据库迁移?没有量化标准,违反了"明确性"特征。选 B


例题3(判断):需求验证和需求确认本质上是同一回事,都是检查需求是否正确。( )

解析:错误。需求验证检查SRS文档本身是否正确、规范(验证);需求确认检查最终产品是否满足用户真实需求(确认)。两者对象不同、目的不同。

5️⃣ 记忆口诀

SRS六大特征正完一明可追 (正=正确,完=完整,一=一致,明=明确,可=可验证,追=可追踪)。

验证与确认验文档、认用户;验过程、认结果

需求验证四方法评同走原测(正式评审、同行评审、走查、原型验证、测试用例预编写)。

6️⃣ 小测验(评论区对答案)

某项目团队在需求规格说明书(SRS)中描述需求为:"用户登录后,系统应显示最近的通知。"在需求评审时,测试工程师指出该需求无法编写明确的测试用例,因为"最近"没有定义。这违反了SRS的哪个特征?该阶段属于验证还是确认?

A. 完整性;验证

B. 明确性;验证

C. 完整性;确认

D. 明确性;确认

🔔 本专栏日更,点击头像 → 专栏《软考中级高频考点》订阅,第一时间接收新内容

#软考中级 #软件设计师 #需求规格说明 #需求验证 #软件工程 #软考备考

相关推荐
摇滚侠36 分钟前
《SpringBoot 3:入门与应用实战》第 15 章 生产级特性 监控指标 Metrics 阅读笔记
java·spring boot·笔记
噜~噜~噜~1 小时前
操作系统笔记-1.1.3 操作系统的特征
笔记·操作系统
杨先生哦1 小时前
【2026热端攻防系列 10/12】前端凭据安全深度攻防:Cookie/Storage劫持、会话固定、凭据泄露与浏览器最新加固方案
前端·笔记·安全·web安全
天天爱吃肉82182 小时前
# 商用车多体动力学实战笔记|第7篇:制动系统与制动热衰退、ABS滞环控制
大数据·人工智能·笔记·python·嵌入式硬件·汽车
xiaoyuchidayuma2 小时前
【交流绕组及其磁动势-典型交流绕组结构(绘制绕组展开图)】
笔记·学习
崔高杰2 小时前
【自动阅读笔记】Inference-Time Scaling for Generalist Reward Modeling
人工智能·笔记·机器学习
叫我Paul就好4 小时前
RAG 入门到精通 - 生成的优化
人工智能·软件工程·rag
chenzhou__4 小时前
独立游戏开发日志 ①:从信号博弈到涂色对战——一次玩法重构始
笔记·后端·学习·unity·go·独立游戏
杨先生哦4 小时前
【2026热端攻防系列 11/12】前端AI风控攻防实战:验证码缺陷、人机验证绕过、智能爬虫对抗与企业智能风控加固方案
前端·人工智能·笔记·爬虫·安全
摇滚侠4 小时前
《SpringBoot 3:入门与应用实战》第 15 章 生产级特性 使用监控体系 阅读笔记
spring boot·笔记·后端