软件验证及确认
在软件项目管理、软件工程及软件测试中,验证及确认(verification and validation,简称V&V)是指检查软件是否符合规格及其预期目的的程序。验证及确认也被视为一种软件质量管理,是软件开发过程的一部分,一般归类在软件测试中。
验证及确认有时会由公正的第三方单位进行,此情形下的验证及确认称为独立验证及确认,简称IV&V。
定义
编辑确认(validation)的目的是检查产品设计是否符合其预期的目的,软件确认的目的是检查软件是否符合用户的需求而言,可以由动态检查或是其他方式的审查来达成。
依照能力成熟度模型(CMMI-SW v1.1)的定义:
- 确认(validation):是在特定开发阶段中,评估软件是否符合阶段开始前所定义条件的程序(IEEE-STD-610)。
- 验证(verification): 是在开发阶段后,评估软件是否符合规格需求的程序(IEEE-STD-610)。
换句话说,程序确保产品符合客户需求,而验证程序确保产品符合要求及设计规格。确认程序确保“制造出正确的产品”(you built the right thing),也就是符合客户需求的产品,而验证程序确保“以正确的方式制造产品”(you built it right)。
白话来说,对于抓老鼠为目的:
- Validation
- 黑猫白猫能抓老鼠的就是好猫。
- Verification
- 预先定义猫的健康标准,以此标准饲养符合条件的高质量成猫,期待其能抓老鼠。(期待而不保证)
相关概念
编辑验证及确认都是属于软件质量保证的一部分,但只靠验证及确认无法确保软件质量,需配合计划、可追踪性、配置管理及其他软件工程的概念才能确保软件质量。
分类
编辑对于要求完美性能的任务关键系统,会使用形式方法确认系统的正确性,不过形式方法的成本相当的高[2],若是非任务关键系统,一般会使用其他的验证及确认方式,例如句法方法等。
测试用例
编辑测试用例是验证及确认过程中使用的工具,测试用例一组条件或变量,测试者根据它来确定应用软件或软件系统是否正确工作。
测试用例是为了验证而准备,其目的是评估后续建构产品的程序是否正确。
测试用例是为了确认而执行,是评估产品是否依照用户的需求而设计及制造的程序,若在软件开发生命周期的前面,会用其他方法(例如软件评审)进行确认。
监管环境
编辑有一些产业的验证及确认需符合相关法令的兼容性要求,一般会由政府机构[3][4]或是产业主管部分进行指导。例如美国食品药品监督管理局要求医疗设备的软件及补丁均需经过确认的程序。[5]
有关条目
编辑参考资料
编辑- ^ 1.0 1.1 1.2 Department of Defense Documentation of Verification, Validation & Accreditation (VV&A) for Models and Simulations. Missile Defense Agency. 2008.
- ^ M. Archer, C. Heitmeyer and E. Riccobene. Proving invariants of I/O automata with TAME. Automated Software Engineering, 9, 201-232 (2002).
- ^ General Principles of Software validation; Final Guidance for Industry and FDA Staff (PDF). Food and Drug Administration. 2002-01-11 [2009-07-12]. (原始内容存档 (PDF)于2017-08-30).
- ^ Guidance for Industry: Part 11, Electronic Records; Electronic Signatures — Scope and Application (PDF). Food and Drug Administration. August 2003 [2009-07-12]. (原始内容存档 (PDF)于2010-07-30).
- ^ Guidance for Industry: Cybersecurity for Networked Medical Devices Containing Off-the Shelf (OTS) Software (PDF). Food and Drug Administration. 2005-01-14 [2009-07-12]. (原始内容存档 (PDF)于2018-12-30).