软件验证和确认
目录
软件验证和确认
在软件项目管理、软件测试和软件工程中,验证和确认(V&V)是检查软件系统是否符合规格和要求,从而实现其预期目的的过程。它也可以被称为软件质量控制。它通常是软件测试人员的责任,是软件开发生命周期的一部分。简单地说,软件验证是:假设我们应该建立X,我们的软件是否在没有任何缺陷或差距的情况下实现其目标?另一方面,软件验证是:X是我们应该建立的吗?X是否符合高层次的要求?
软件验证和确认的定义
核查和验证不是一回事,尽管它们经常被混淆。Boehm将两者的区别简明扼要地表述为验证。我们建造的产品是否正确?验证。构建正确的产品可以检查系统是否正确实现了规范,而构建正确的产品则是指用户的需求。在某些情况下,需要对两者都有书面的要求,以及正式的程序或协议来确定是否符合要求。理想情况下,形式化的方法为软件满足其规格提供了数学上的保证。建立正确的产品意味着使用需求规范作为开发过程的下一阶段的输入,即设计过程,其输出是设计规范。然后,它还意味着使用设计规范来为建造过程提供支持。每当一个过程的输出正确地实现了它的输入规范,软件产品就离最终验证更近了一步。如果一个过程的输出是不正确的,那么开发者就没有正确地构建利益相关者想要的产品。这种验证被称为工件或规格验证。构建正确的产品意味着创建一个包含软件产品的利益相关者的需求和目标的需求规格。如果这样的工件是不完整的或错误的,开发人员将不能建立利益相关者想要的产品。这是工件或规格验证的一种形式。注意:验证开始于确认之前,然后它们平行运行,直到软件产品被发布。(反之亦然,见下面的原因:)术语验证经常与术语确认联系在一起,并被理解为V&V的一个单一概念。验证用于确保人们正在处理正确的问题,而核查则用于确保人们已经正确地解决了问题(Martin1997)。从实际和词源学的意义来看,验证一词来自拉丁文verus,意思是真理,和facere,意思是制作/执行。因此,验证意味着证明某物是真实的或正确的(一个属性、一个特征等)。验证一词来自拉丁文valere,意思是变得强大,与价值一词有相同的词源。因此,验证意味着证明某物具有正确的特征以产生预期的效果。(改编自VerificationandValidationinplainEnglish(LakeINCOSE1999)。)[1][iso/iec/ieee15288]。
软件验证
它意味着通过运行软件来验证是否符合规范,但这是不可能的(例如,谁能通过运行软件知道架构/设计/等是否正确实现?)只有通过审查其相关的工件,才能得出是否满足规范的结论。工件或规范验证每个软件开发过程阶段的输出在对照其输入规范时也可以进行验证(见下面CMMI的定义)。工件验证的例子。设计规范与需求规范的对照。
架构设计、详细设计和数据库逻辑模型规范是否正确地实现了功能和非功能的需求规范?针对设计规范的构建工件。源代码、用户界面和数据库物理模型是否正确地实现了设计规范?软件验证软件验证检查软件产品是否满足或适合预期的使用(高层检查),也就是说,软件满足用户需求,不是作为规范的工件或作为那些将操作软件的人的需求;而是作为所有利益相关者(如用户、操作员、管理员、经理、投资者等)的需求。有两种方法可以进行软件验证:内部和外部。在内部软件验证过程中,假定利益相关者的目标被正确理解,并且他们在需求工件中被准确和全面地表达。