版权归原作者所有,如有侵权,请联系我们

[科普中国]-需求语言

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏

需求定义语言简介

需求定义语言(requirements definition language) 用于书写软件需求定义的语言。软件需求包括功能需求和非功能需求两个方面。功能需求从用户角度明确了软件系统必须具有的功能行为,它是整个软件需求的核心所在。在功能需求的基础上,非功能需求对软件需求作进一步的刻画,它包括功能限制、设计限制、环境描述、数据与通信规程和项目管理等。软件需求定义主要面向用户,采用基于现实世界的描述模型,以便于用户理解。1

发展第一阶段

从20世纪60年代末期到70年代初期为第一阶段。在计算机发展早期,由于问题规模较小,需求定义语言研究的重要性并未引起足够重视,人们常采用自然语言来书写一些简单的需求。自然语言对于规模较小的应用还能够应付,但对于大型软件系统,其内在的非形式性导致需求定义中经常出现错误,并且由于由机器自动处理自然语言的非形式性异常闲难而使得纠正需求定义中的错误不仅代价高而且费时。随计算机应用规模的不断扩大,特别是自1968年在大两洋公约学术会议提出软件工程以来,人们逐渐认识到需求定义语言的重要性,开始研究各种类型的需求定义语言。1

第二阶段

从70年代初期到80年代中期为第二阶段。由于认识到:非形式自然语言给需求定义带来的种种不足,人们以软件方法学为基础,开始研究需求定义语言的形式化问题。提出诸如基于自顶向下途径的SA,基于自底向上途径的问题陈述语言PSL,以及基于面向对象思想的需求定义语者RML等,这类语言的重要特征是较自然语言有比较精确的语法和语义定义,从而便于分析其各种性质,利于用计算机提供自动化的支持。

第三阶段

80年代中期迄今为第三阶段。随着软件系统复杂性的提高和规模的增大,需求定义愈加困难和耗时;传统的需求定义语言由于采用的模型和问题领域差距较大,从而使得需求定义的易理解性和易维护性较差。而面向对象模型由于和问题结构之间有良好的对应关系而较好地满足需求定义的需要。因此,面向对象需求模型的研究成为热门课题并展示出良好的前景,代表性的工作有J.Rumbaugh等提出的模型以及D.W.Embley等提出的模型,这些模型以对象及其相互间的关系为核心,以图形化表示机制为手段来刻画系统,不仅能反映系统的静态结构关系,而且能反映系统的动态变化行为,为解决传统功能分解模型中存在的功能本身的易变性、分解结构的随意性以及功能结构与问题结构常难对应等问题提供有效途径。

形式化非形式需求定义语言是指未作任何限制的自然语言。一般说来,非形式需求定义语言具有易理解、易使用的特点,易于为一般用户所接受。但是由于自然语言的非形式性而使得需求定义中常出现错误,并且难以用计算机系统提供自动化的支持。半形式需求定义语言是指在宏观上对语言的语法和语义有较精确的描述,而在某些局部方面则允许使用非形式的自然语言。这类语言既便于用户的表达和理解相应的需求定义,又可在某种程度上用机器对相应的需求定义进行管理和进行部分的正确性检查。形式需求定义语言是指其语法和语义均精确定义的语言。一般说来,形式化需求定义语言具有良好的数学基础,易于分析需求定义的各种性质。然而,形式需求定义语言往往要求具有较高的数学修养,且相对说来,所书写的需求定义较难理解。

需求描述语言简介需求描述语言(requirement description language)是从用户的角度对世界客观存在的知识进行更加精确描述的语言。自然语言作为一种用户熟悉、易于掌握的需求描述语言,在很长一段时间内都发挥着重要的作用,沿用至今。自然语言处理NLP(Natural Language Processing)技术能够帮助在自然语言形式的需求文档中抽取需求,虽然该技术尚不能完全理解文档,但是能够支持从文档中摘录相关的需求信息。为了防止在需求获取的过程中引入不精确的内容,研究组织提出了一种类自然语言形式的需求描述语言。2

特点(1)需求描述语言的理解可以与具体的物理通道完全无关。由于字符串本身就可以完全定义清楚语义,从而对这种编码的理解可以完全不依赖于特定的物理通道。这样,采用需求描述语苦的消息控制系统可以理想地实现媒体与控制的彻底分离。

(2)编码的效率远远低于机器码和汇编码。字符串的编码方式存在大量的冗余,这种冗余的程度只要看一下字符文件几倍甚至上十倍的压缩潜力就可以有所体验了。但是,冗余本身也意味着这种编码方式对误码的敏感度不高,从而可以降低对网络控制通道的误特性要求,甚至可以不用任何附加的检错纠错技术就可以在编码本身的语义级提供检错纠错功能。事实上,检错纠错技术本质上就是通过编码的冗余来实现的。

(3)对控制通道可完全统计复用。控制通道利用率可以达到最佳状态。3

(4)编码的设计可以非常灵活和简单。

(5)编码的扩展能力可达到理想状态。字符串可以是不定长度的,并且总长度也没有明确的限制。这使需求描述语言几乎具有无限的编码空间,从而具有无限的可扩展能力。

(6)容错性和可理解性最佳化。需求描述语言接近自然语言,具有最高的可理解性。