验证软件需求

1 从哪些方面验证软件需求的正确性

需求分析阶段的工作结果是开发软件系统的重要基础,大量统计数字表明,软件系统中15%的错误起源于错误的需求。为了提高软件质量,确保软件开发成功,降低软件开发成本,一旦对目标系统提出一组要求之后,必须严格验证这些需求的正确性。一般说来,应该从下述4个方面进行验证。

(1) 一致性所有需求必须是一致的,任何一条需求不能和其他需求互相矛盾。

(2) 完整性需求必须是完整的,规格说明书应该包括用户需要的每一个功能或性能。

(3) 现实性指定的需求应该是用现有的硬件技术和软件技术基本上可以实现的。对硬件技术的进步可以做些预测,对软件技术的进步则很难做出预测,只能从现有技术水平出发判断需求的现实性。

(4) 有效性必须证明需求是正确有效的,确实能解决用户面对的问题。

2 验证软件需求的方法

上一小节已经指出,至少必须从一致性、完整性、现实性和有效性这4个不同角度验证软件需求的正确性。那么,怎样验证软件需求的正确性呢?验证的角度不同,验证的方法也不同。

1、验证需求的一致性

当需求分析的结果是用自然语言书写的时候,除了靠人工技术审查验证软件系统规格说明书的正确性之外,目前还没有其他更好的"测试"方法。但是,这种非形式化的规格说明书是难于验证的,特别在目标系统规模庞大、规格说明书篇幅很长的时候,人工审查的效果是没有保证的,冗余、遗漏和不一致等问题可能没被发现而继续保留下来,以致软件开发工作不能在正确的基础上顺利进行。

为了克服上述困难,人们提出了形式化的描述软件需求的方法。当软件需求规格说明书是用形式化的需求陈述语言书写的时候,可以用软件工具验证需求的一致性,从而能有效地保证软件需求的一致性。

2、验证需求的现实性

为了验证需求的现实性,分析员应该参照以往开发类似系统的经验,分析用现有的软、硬件技术实现目标系统的可能性。必要的时候应该采用仿真或性能模拟技术,辅助分析软件需求规格说明书的现实性。

3、验证需求的完整性和有效性

只有目标系统的用户才真正知道软件需求规格说明书是否完整、准确地描述了他们的需求。因此,检验需求的完整性,特别是证明系统确实满足用户的实际需要(即,需求的有效性),只有在用户的密切合作下才能完成。然而许多用户并不能清楚地认识到他们的需要(特别在要开发的系统是全新的,以前没有使用类似系统的经验时,情况更是如此),不能有效地比较陈述需求的语句和实际需要的功能。只有当他们有某种工作着的软件系统可以实际使用和评价时,才能完整确切地提出他们的需要。理想的做法是先根据需求分析的结果开发出一个软件系统,请用户试用一段时间以便能认识到他们的实际需要是什么,在此基础上再写出正式的"正确的"规格说明书。但是,这种做法将使软件成本增加一倍,因此实际上几乎不可能采用这种方法。使用原型系统是一个比较现实的替代方法,开发原型系统所需要的成本和时间可以大大少于开发实际系统所需要的。用户通过试用原型系统,也能获得许多宝贵的经验,从而可以提出更符合实际的要求。

使用原型系统的目的,通常是显示目标系统的主要功能而不是性能。为了达到这个目的可以使用前述小节介绍的方法快速建立原型系统,并且可以适当降低对接口、可靠性和程序质量的要求,此外还可以省掉许多文档资料方面的工作,从而可以大大降低原型系统的开发成本。用于需求分析的软件工具为了更有效地保证软件需求的正确性,特别是为了保证需求的一致性,需要有适当的软件工具支持需求分析工作。这类软件工具应该满足下列要求。

(1) 必须有形式化的语法(或表),因此可以用计算机自动处理使用这种语法说明的内容。

(2) 使用这个软件工具能够导出详细的文档。

(3) 必须提供分析(测试)规格说明书的不一致性和冗余性的手段,并且应该能够产生一组报告指明对完整性分析的结果。

(4) 使用这个软件工具之后,应该能够改进通信状况。

作为需求工程方法学的一部分,在1977年设计完成了RSL(需求陈述语言)。RSL中的语句是计算机可以处理的,处理以后把从这些语句中得到的信息集中存放在一个称为ASSM(抽象系统语义模型)的数据库中。有一组软件工具处理ASSM数据库中的信息以产生出用PASCAL语言书写的模拟程序,从而可以检验需求的一致性、完整性和现实性。

1977年美国密执安大学开发了PSL/PSA(问题陈述语言/问题陈述分析程序)系统。

这个系统是CADSAT(计算机辅助设计和规格说明分析工具)的一部分,它的基本结构类似于RSL。其中PSL是用来描述系统的形式语言,PSA是处理PSL描述的分析程序用PSL描述的系统属性放在一个数据库中。一旦建立起数据库之后即可增加信息、删除信息或修改信息,并且保持信息的一致性。PSA对数据库进行处理以产生各种报告,测试不一致性或遗漏,并且生成文档资料。

PSL/PSA系统的功能主要有下述4种。

(1) 描述任何应用领域的信息系统。

(2) 创建一个数据库保存对该信息系统的描述符。

(3) 对描述符施加增加、删除和更改等操作。

(4) 产生格式化的文档和关于规格说明书的各种分析报告。

PSL/PSA系统用描述符从系统信息流、系统结构、数据结构、数据导出、系统规模、系

统动态、系统性质和项目管理共8个方面描述信息系统。

一旦用PSL对系统做了完整描述,就可以调用PSA产生一组分析报告,其中包括所有修改规格说明数据库的记录,用各种形式描述数据库信息的参照报告(包括图形形式的描述),关于项目管理信息的总结报告,以及评价数据库特性的分析报告。

借助PSL/PSA系统可以边对目标系统进行自顶向下的逐层分解,边将需求分析过程中遇到的数据流、文件、处理等对象用PSL描述出来并输入到PSL/PSA系统中。PSA将对输入信息作一致性和完整性检查,并且保存这些描述信息。

PSL/PSA系统的主要优点是它改进了文档质量,能保证文档具有完整性,一致性和无二义性,从而可以减少管理和维护的费用。数据存放在数据库中,便于增加、删除和更改,这也是它的一个优点。

相关推荐
concisedistinct13 小时前
Perl 语言开发(五):循环语句
开发语言·后端·perl·面向对象
棱镜射线2 天前
《软件需求》读书笔记
算法·金融·需求分析·软件需求
草莓味的¥猪2 天前
需求分析分类和层级、分析步骤
大数据·需求分析
程序猿小D2 天前
第一百三十八节 Java数据类型教程 - Java boolean数据类型和float数据类型
java·开发语言·jvm·java-ee·eclipse·面向对象·数据类型
concisedistinct3 天前
大数据开发语言 Scala(四):面向对象编程
大数据·开发语言·后端·scala·编程语言·面向对象
打码人的日常分享3 天前
软件研发标准化流程文件
web安全·系统安全·压力测试·需求分析·设计规范
ZKNOW甄知科技6 天前
仿真数据管理与运维管理,驱动新型电力系统创新
运维·信息可视化·需求分析·数据库开发·数据库架构
程序猿小D6 天前
第一百三十六节 Java数据类型教程 - Java byte数据类型
java·开发语言·jvm·java-ee·eclipse·哈希算法·面向对象
DieSnowK7 天前
[C++][设计模式][备忘录模式]详细讲解
开发语言·c++·设计模式·重构·面向对象·备忘录模式·新手向
huaqianzkh12 天前
网络构建和设计方法_1.网络需求分析
架构·系统架构·需求分析