Traditionally, practitioners use formal methods pre-dominately for one half of the quality-assurance process: verification (do we build the software right?). The other half -- validation (do we build the right software?) -- has been given comparatively little attention. While verification is the core of refinement-based formal methods, where each new refinement step must preserve all properties of its abstract model, validation is usually postponed until the latest stages of the development, when models can be automatically executed. Thus mistakes in requirements or in their interpretation are caught too late: usually at the end of the development process. In this paper, we present a novel approach to check compliance between requirements and their formal refinement-based specification during the earlier stages of development. Our proposed approach -- "validation obligations" -- is based on the simple idea that both verification and validation are an integral part of all refinement steps of a system.
翻译:传统上,实践者在质量保证过程的半个阶段预先使用正式方法:核查(我们是否构建软件正确? )。另一半是验证(我们是否构建正确的软件?? ) -- -- 相对较少受到重视。虽然核查是基于完善的正式方法的核心,每个新的改进步骤都必须保留其抽象模型的所有特性,但验证通常推迟到开发的最近阶段,模型可以自动执行。因此,要求或解释方面的错误出现得太晚:通常在开发过程结束时。我们在本文件中提出了一种新办法,以检查要求的遵守情况及其在早期发展阶段基于正式改进的规格。我们提出的方法——“验证义务”——基于一个简单的概念,即核查和验证是系统所有改进步骤的组成部分。