了解硬件开发中验证(Verification)与确认(Validation)之间的区别。探索 V&V 规划、V 模型,以及需要避免的常见错误。
有时,一项硬件设计在测试台上看起来完全正确:MCU 以稳定的 160 MHz 运行,传感器通过 I²C 通信,电源在满载下也能保持 12 V。但即使产品满足了所有要求,在真正交付给用户后,仍然可能达不到预期。
验证与确认(V&V)正是用来弥合“满足要求”与“满足真实需求”之间差距的方法。一些硬件团队会混淆这两个术语。把 V&V 当作单一步骤来处理,或者因为原型机看起来能工作就跳过其中之一,往往会在后期才发现问题:比如在审计期间,或产品投入现场之后。
本文将说明在硬件开发中,verification 和 validation 分别是什么意思,以及它们之间有何不同。我们还会介绍 V&V 如何通过 V 模型与需求关联、如何制定 V&V 计划,以及如何避免常见错误。
Verification 是检查硬件是否符合已定义需求和工程规格的过程。它回答的问题是: 我们是否把产品做对了?
Verification 的目的是用证据取代假设。团队不再只是“假定”电路能工作,而是将设计或实物原型与已定义需求进行比对,并收集证据来证明其是否满足这些需求。
Verification 可包括以下活动:
实际中的表现在硬件开发中,Verification 早在最终产品出现之前就已开始。比如有这样一条需求:“12 V 输入在满载条件下必须保持在 ±5% 以内。” 对它的 Verification 会分阶段进行:先检查原理图中元件的额定值,然后运行电源仿真,最后在测试台上测量原型机。每一步都会增加一份证据。 |
Validation 是检查硬件是否真正适用于其预期用途、目标用户和运行环境的过程。它回答的问题是: 我们是否在做正确的产品?
Validation 的主要目的是提供证据,证明产品确实解决了它原本要解决的问题。一个设计可能满足所有技术要求,但如果在真实运行条件下达不到预期表现,仍然算不上成功。Validation 让你有信心确认:完整系统确实适合完成利益相关方真正需要它完成的工作。
Validation 可包括以下活动:
实际中的表现假设一款商用无人机通过了所有台架测试。为了进行 Validation,需要让无人机在其设计所面向的环境中运行。如果发现高湿度会导致传感器漂移,或者阳光直射会让状态 LED 几乎无法辨认,那么这个产品也许在技术要求上已经通过 Verification,但对于其预期用途而言,仍然可能 Validation 失败。 |
硬件开发过程中的验证与确认。
V&V 往往会使用相同的工程工具,例如测试、测量、检查和分析。区别在于,你希望通过结果证明什么。
例如,热箱测试可以用于 Verification,证明产品能够在规定的 −20 °C 到 60 °C 范围内工作。而 Validation 关注的是:这个温度范围是否真正符合需求?如果产品被安装在一个日晒暴露的外壳中,温度会达到 75 °C,那么它即使通过了 Verification,在实际使用中仍可能失效。当使用完整产品在现场预期会遇到的温度曲线来运行同一个热箱测试时,它也可以支持 Validation。
Verification 通常会针对已定义需求给出更直接的通过/失败结果,并且可以应用于单项需求、设计或硬件要素。Validation 则更广泛地关注集成后的系统,以及其整体行为对预期用途而言是否可接受。
在以需求驱动的开发流程中,Verification 用于建立证据,证明单项技术需求已被满足。Validation 则进一步检查完整产品在真实运行条件下是否满足利益相关方的需求,并且它也可能揭示某项需求本身并不完整或定义错误。
方面 | Verification | Validation |
问题 | 我们是否把产品做对了? | 我们是否在做正确的产品? |
比对对象 | 需求、规格以及设计特性 | 预期用途和利益相关方需求 |
关注点 | 各系统层级上的单项需求、设计文件和技术特性 | 处于其预期使用背景中的完整产品 |
时机 | 尽早开始,并贯穿整个开发过程 | 从需求确认开始,并在完整产品逐渐成型时再次回到这一工作 |
使用方法 | 评审、检查、分析、仿真、演示,以及针对已定义需求的测试 | 用例测试、环境测试、用户评估和现场测试,并辅以分析 |
结果 | 证明硬件满足其既定技术要求的证据 | 证明完整产品在预期用途下满足利益相关方需求的证据 |
V 模型展示了如何在硬件开发项目中组织 V&V。
V 模型将系统生命周期表示为一个“V”字。左侧从利益相关方的需求与期望开始,将其转化为系统和子系统需求,再细化为架构和详细设计。V 的底部是实现阶段。右侧则随着集成过程逐步向上,在元件、子系统和完整产品层面开展测试。
系统工程过程的 V 模型。
左侧的每一个层级都与右侧相应的测试层级配对,而这些配对关系建立了可追溯性。每项需求都要关联到用于检查它的 V&V 活动及相应证据,团队在设计仍在进行时就应规划这些活动。
例如,“12 V 输入在满载条件下必须保持在 ±5% 以内”这一需求,可以在多个层级进行检查:根据原理图检查元件额定值,对电路板进行电源仿真,以及对装配完成的产品进行测量。
在这一结构中,V&V 承担着不同角色:
当硬件进入测试阶段时,团队本应已经清楚要检查什么、它关联到哪些需求、如何判定结果,以及必须收集哪些证据。V&V 计划就是将这些决策整合到一份文档中。
一份 V&V 计划通常包括六项决策:
虽然软件缺陷通常可以通过更新修复,但硬件设计中的问题,最好在电路板制造之前就解决。许多这类问题都源于需求的编写方式以及 V&V 的规划方式。
下表列出了常见的 V&V 误区,以及帮助避免这些问题的良好实践。
常见误区 | 如何避免 |
将验证与确认视为同一项活动 | 将验证(针对需求)和确认(针对利益相关者需求)作为彼此独立、明确区分的活动来规划。 |
编写含糊或不可测试的需求 | 在设计开始前审查需求的清晰性和可测试性,并在编写需求的同时定义验收标准。 |
等到硬件设计和制造完成后才开始规划 V&V | 一旦需求可用,就应开始规划 V&V,并在实现完成之前明确每项需求将如何被验证。 |
V&V 活动没有明确的优先级 | 根据安全关键需求、技术风险和运行条件,为 V&V 活动设定优先级。 |
仅依赖实体硬件测试 | 为每项需求匹配最合适的方法:评审、检查、分析、仿真、演示或测试。 |
遗漏相关利益相关者的输入 | 从初始需求到最终确认,始终让用户和关键利益相关者参与进来,并在验证过程中纳入设计工程师。 |
未记录 V&V 结果和证据 | 为每项 V&V 活动保留记录和证据,确保能够完整追溯到相关需求。 |
在开发后期进行硬件更改,成本通常高于软件更改。电路板重制、工装变更或认证测试失败都会消耗真实的时间和预算,而且已出货设备中的硬件也很难再“打补丁”。这就是为什么在硬件开发中,验证与确认尤为重要。结合使用时,它们能为团队带来四项主要收益:
硬件开发涉及大量需求和测试结果,在整个项目中手动跟踪它们可能非常困难。团队最终可能会陷入文件分散、工具彼此割裂的局面,例如:
对于希望在共享工作空间中规划和跟踪 V&V 活动并与需求一起管理的团队, Requirements Portal 可将需求与验证计划、测试执行、证据和变更历史关联起来。这样一来,团队就能清楚看到哪些内容已完成验证,哪些仍需关注。
简而言之,验证证明你的硬件符合规格,而确认证明它在实际使用中确实对用户有效。要做到这一点,V&V 不能只是最后的检查清单,而必须从项目一开始就嵌入产品开发流程。
如果你想进一步加深对 V&V 框架的理解,以下资料值得继续阅读:
如果你已经准备好从理论走向实践,不妨试试 Requirements Portal,将测试用例与需求和电子设计关联起来,跟踪覆盖情况,并记录工程证据。
不是。Verification 是根据已定义的需求检查硬件;Validation 则是检查这些需求以及最终产品是否在真实使用中反映了利益相关者的需要。
两者都应尽早规划,而且都不是单一阶段。随着设计推进,Verification 会从评审、分析和仿真开始展开;Validation 则从检查需求是否符合利益相关者需求开始,并随着集成产品逐步成形而变得更加重要。
常见的 V&V 方法包括评审、检查、分析、仿真、演示和测试。根据其目的是检查既定需求,还是在预期使用场景中评估产品,同一种方法既可用于 Verification,也可用于 Validation。