3.8 验证软件需求
3.8.1 从哪些方面验软件需求的正确性
需求分析阶段的工作结果是开发件系统的重要基础,大量统计数字表明,软件系统中15%的错误起源于错误的需求,为了高软件质量,确保软件开发成功,降低较件开发成本,一旦对目标系统提出一组要求之后,必须严格验证这些需求的正确性,一般说来,应该从下述4个方面进行验证
(1)一致性 所有需求必须是一致的,任何一条需求不能和其他需求互相矛。
(2)完整性 需求必须是完整的,规格说明书应该包括用户需要的每一个功能或性能
(3)现实性 指定的需求应该是用现有的硬件技术和软件技术基本上可以实现的。对硬件技术的进步可以做些预测,对就件技术的进步则很难做出预测,只能从现有技术水平出发判断需求的现实性。
(4)有效性 必须证明需求是正确有数的,确实能解决用户面对的问题
3.8.2 验证软件需求的方法
上一小节已经指出,至少必须从一致性、完整性、现实性和有效性这4个不同角度验证软件需求的正确性,那么,怎样验证软件需求的正确性呢?验证的角度不同,验证的方法也不同。
1.验证需求的一致性
当需求分析的结果是用自然语言书写的时候,除了靠人工技术审查验证软件系统规格说明书的正确性之外,目前还没有其他更好的“测试”方法。但是,这种非形式化的规格说明书是难于验证的,特别在目标系统规模度大、规格说明书篇幅很长的时候,人工审查的效果是没有保证的,冗余、遗楼和不一致等问题可能没被发现而继续保留下来,以致软件开发工作不能在正确的基础上顺利进行。
为了克服上述困难,人们提出了形式化的描述软件需求的方法。当软件需求规格说明书是用形式化的需求陈述语言书写的时候,可以用软件工具验证需求的一致性(见需求分析的软件工具),从而能有效地保证软件需求的一致性。
2,验证需求的现实性
为了验证需求的现实性,分析员应该参照以往开发类似系统的经验,分析用现有的软、硬件技术实现目标系统的可能性。必要的时候应该采用仿真或性能模拟技术,辅助分析件需求规格说明书的现实性。
3,验证需求的完整性和有效性
只有目标系统的用户才真正知道软件需求规格说明书是否完整、准确地描述了他们的需求。因此,检验需求的完整性,特别是证明系统确实满足用户的实际需要(即,需求的有效性),只有在用户的密切合作下才能完成。然而许多用户并不能清楚地认识到他们的需要(特别在要开发的系统是全新的,以前没有使用类似系统的经验时,情况更是如此)不能有效地比较陈述需求的语句和实际需要的功能。只有当他们有某种工作着的软件系统可以实际使用和评价时,才能完整确切地提出他们的需要。
理想的做法是先根据需求分析的结果开发出一个软件系统,请用户试用一段时间以使能认识到他们的实际需要是什么,在此基础上再写出正式的“正确的”规格说明书。但是,这种做法将使软件成本增加一倍,因此实际上几乎不可能采用这种方法。使用原型系是一个比较现实的替代方法,开发原型系统所需要的成本和时间可以大大少于开发实际系统所需要的,用户通过试用原型系统,也能供得许多宝贵的经验,从面可以提出更符合实际的要求。
使用原型系统的目的,通常是显示目标系统的主要功能而不是性能,为了达到这个目的可以使用本章3.2.4小节介绍的方法快速建立原型系统,并且可以适当降低对接口、可靠性和程序质量的要求,此外还可以省掉许多文档资料方面的工作,从面可以大大降低原型系统的开发成本。
3.8.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系统的主要优点是它改进了文档质量,能保证文档具有完整性、一致性和无二义性,从面可以减少管理和维护的费用,数据存放在数据库中,便于增加、删除和更改,这也是它的一个优点。
3.9 小结
传统软件工程方法学使用结构化分析技术,完成分析用户需求的工作。需求分析是发现、求精、建模、规格说明和复审的过程,需求分析的第一步是进一步了解用户当前所处的情况,发现用户所画临的问题和对目标系统的基本需求接下来应该与用户深人交流,对用户的基本需求反复细化遥逐步求精,以得出对目标系统的完整、准确和具体的需求。具体地说,应该确定系统必须具有的功能、性能,可靠性和可用性,必实现的出错处理需求,接口需求和逆向需求,必须满足的约束条件以及数据需求,并且预测系统的发展前景。
为了详细地了解并正确地理解用户的需求,必须使用适当方法与用户沟通。访谈是与用户通信的历史悠久的技术,至今仍被许多系统分析员采用。从可行性研究阶段得到的数据流图出发,在用户的协助下面向数据流自顶向下逐步求精,也是与用户沟通获取需求的一个有效的方法。为了促使用户与分析员齐心协力共同分析需求,人们研究出一种面向团队的需求收集法,称为简易的应用规格说明技术,现在这种技术已经成为信息系统领城使用的主流技术。实践表明,快速建立软件原型是最准确,最有效和最强大的需求分析技术。快速原型应该具备的基本特性是“快速”和“容易修改”,因此,必须用适当的软件工具支持快速原型技术。通常使用第四代技术、可重用的软件构件及形式化规格说明与原型环境,快速地构建和修改原型。
为了更好地理解问题,人们常常采用建立模型的方法,结构化分析实质上就是一种建模,在需求分析阶段通常建立数据模型、功能模型和行为模型。
除了创建分析模型之外,在需求分析阶段还应该写出软件需求规格说明书,经过严格评审并得到用户确认之后,作为这个阶段的最终成果,通常主要从一致性,完整性,现实性和有效性4个方面复审件需求规格说明书。
多数人习惯于使用实体-联系图建立数据模型,使用数据流图建立功能模型,使用状态图建立行为模型,读者应该掌据这些图形的基本符号,并能正确地使用这些符号建立软件系统的模型。
数据字典描述在数据模型、功能模型和行为模型中出现的数据对象及控制信息的特性,给出它们的准确定义,因此,数据字典度成为把3种分析模型粘合在一起的“粘合剂”,是分析模型的“心”,为了提高可理解性,还可以用层次方框图或 Warnier图等图形工具轴助描系统中的数据结构。为了减少冗余、简化修改步骤,往往需要规范数据的存储结构。
算法也是重要的,分析的基本目的是确定系统必须做什么。概括地说,任何一个计算机系统的基本功能都是把输人数据转变成输出信息,算法定义了转变的规则,因此,没有对算法的了解就不能确切知道系统的功能,IPO图是描述算法的有效工具。