不准使用需求说明语言中不曾定义的符号,保证所有语句均满足语法规则。实践表明,错误的预防、检测和更正是语法质量保证的三种基本手段。检测错误是通过模型的构造发现错误;预防错误是拒绝在模型中加入错误的语句;更正错误是用正确的语句替换错误的语句。前两者可以通过需求说明语言的形式预防来完成,后者则较难自动化。

  语义质量是需求模型有效性和完备性的保证。有效性要求模型中的所有语句都正确且与用户需求相关;完备性要求模型包含领域中关于问题的所有相关语句。需求模型与领域越相似,其语义质量越高。但对实际问题,不可能达到彻底的有效性和完备性,因而较为实际的目标是在约定的可信度下的有效性和完备性。多数提高模型质量的方法都依赖于人们对模型具体内容的理解,即语用手段。一致性检测往往可自动完成,而不必真正理解给出的模型。

  语用质量影响人们对表达同一意义的多种表达方式的选择,其目标是可理解性。它不仅要使需求模型能被理解,而且要确保开发人员理解该模型。与语义质量目标一样,在可理解性中也需要引入可信度。任何有助于理解需求模型的手段都可以纳入达到语用目标的有益途径 。

  例如,各种逐项阅读、以求理解的模型检查,以图表代替文字的模型可视化,利用动画表现系统动态特征的模型动画显示,根据统计数据预测模型所刻划软件行为特征的系统模型,基于解释的模型查阅手段,基于过滤(甚至包括语言翻译)的阅读范围控制等。

  3.软件需求分析中的可靠性分析、设计与管理

  在软件需求分析过程中,可靠性任务包含四方面内容:一是对可靠性需求的获取、分析二是确定拟开发软件的可靠性目标;三是软件需求分析过程中的可靠性设计;四是为实现可靠性目标而采取的可靠性管理。在需求分析活动中,将这四方面的可靠性任务以用户和软件开发人员共同熟悉的软件可靠性度量加以反映。

  用户需求中有时已经包含了用户对可靠性的要求,这样,需求分析人员只需将其可靠性要求和其它要求一起进行细化,并以规定的要求和形式形成能综合反映可靠性要求的规格说明即可。不过,大部分用户对可靠性提不出明确的要求、甚至没有要求,这需要根据用户对拟开发软件的功能、性能等要求,来确定用户对可靠性的要求和可靠性目标,并将其随软件功能的分解而分解。

  在软件需求分析过程中,我们可以很方便地列举出影响软件需求分析可靠性的一些常见的错误和缺陷,并可以估计需求分析错误相对这些错误和缺陷的分布。

  为了进一步开展软件需求分析中的可靠性设计,可以用需求分析中的错误或缺陷度量来对需求分析的有关可靠性指标进行度量。通过度量,明确主要的软件错误分布及对软件需求分析可靠性的影响,以及软件需求分析阶段的错误或缺陷指标后,我们可以对相关的错误或缺陷进行控制。

  需求分析中的错误或缺陷,主要残存于需求规格说明中。对此,可通过仔细的复核、审查与评审来降低。当然,分析人员素质的提高,以及分析工具、方法和说明语言的选择都相当重要。

  软件需求分析阶段中的可靠性问题,同样严重受制于其复杂性。因此,有效地控制其复杂性(包括结构的、功能分解的、总体的、规格说明的复杂性),是确保需求分析阶段可靠性的有效措施。

  为了能有效地避免需求分析中的人为因素,需求重用在很多时候是一种非常有效的方法。它包括模型、方法、概念、工具的重用,以及需求规格说明的片段、甚至完全的重用。

  因为软件需求分析是一项纯智力活动,所以需要在这一过程中、尤其在需求分析的后期,进行有效的评审和验证。它们是发现需求分析错误和缺陷的有效的办法。当然,它们也只能发现需求分析中的错误和缺陷,并不能保证需求分析没有错误和缺陷。此时,采用基于严格数学正确性证明和公理证明的非形式化正确性证明方法,会收到意想不到的效果。

  四、结束语

  软件需求分析工作主要解决需求分析的指导原则、方法框架和操作启示。形式化需求分析技术在软件需求分析中的研究与应用,推动了软件需求分析自动化的进程,使软件需求的获取与分析更加严密、精确。

  目前,基于结构化的非形式化需求分析方法是一种使用较为广泛的需求分析技术,是一种单纯的自顶向下、逐步求精的功能分解方法,具有较好的分割、抽象能力,为开发人员找到了一种中间语言,软件人员易于掌握。但它难以直接应用领域术语,这无疑为其更广泛的应用设置了障碍。

  随着面向对象软件开发技术的成熟与广泛应用,人们自然也研究了面向对象软件的形式化分析。面向对象的需求分析强调系统是对现实的模拟,通过对象、状态、服务及对象之间的交互,来同时刻划软件系统的动态、静态特征。在形式化的需求分析规格说明中,Z语言是一个成功的范例。用Z语言进行描述时,通常把系统看成一个状态机。在这种意义下,即可用Z语言描述面向对象的系统。但Z语言未提供描述面向对象系统的足够机制。因此,人们又在Z语言的基础上进行了改进和扩充,如Object-Z和Z++。此外,人们还开发了基于代数规格描述技术、面向对象分析的形式化描述语言,如OBJ-3和COLD-K等。

  尽管人们已经认识到了需求工程在软件产品开发中的重要性,并逐步认识到需求规格说明是软件开发的基石。但无论从技术、支持环境,还是从分析工具与方法上来看,软件需求分析所获得的支持都非常有限。目前,它面临如下困难:

应用领域与用户问题的多样性,以及需求变更的不可预测性。 用户要求的实效性、多变性、不确定性与模糊性。 用户需求的内在矛盾及其潜在冲突。 自然概念中存在的本质矛盾。 用户需求的获取过程与描述形式的非形式特征,以及规范描述的困难性。 需求分析方法论和分析工具的缺乏,及其应用范围的局限性。 对软件需求分析认识不足、重视不够。  目前,软件需求分析的重要性正日益引起人们的普遍关注和重视,这方面的研究正在大力开展。其中,人工智能中关于知识表示、知识获取与知识处理的研究,似乎对进一步推动需求分析研究带来了希望,我们期盼着它的成功。