从20世纪60年代末期到70年代初期为第一阶段。在计算机发展早期,由于问题规模较小,需求定义语言研究的重要性并未引起足够重视,人们常采用自然语言来书写一些简单的需求。自然语言对于规模较小的应用还能够应付,但对于大型软件系统,其内在的非形式性导致需求定义中经常出现错误,并且由于由机器自动处理自然语言的非形式性异常闲难而使得纠正需求定义中的错误不仅代价高而且费时。随计算机应用规模的不断扩大,特别是自1968年在大两洋公约学术会议提出软件工程以来,人们逐渐认识到需求定义语言的重要性,开始研究各种类型的需求定义语言。
从70年代初期到80年代中期为第二阶段。由于认识到:非形式自然语言给需求定义带来的种种不足,人们以软件方法学为基础,开始研究需求定义语言的形式化问题。提出诸如基于自顶向下途径的SA,基于自底向上途径的问题陈述语言PSL,以及基于面向对象思想的需求定义语者RML等,这类语言的重要特征是较自然语言有比较精确的语法和语义定义,从而便于分析其各种性质,利于用计算机提供自动化的支持。
80年代中期迄今为第三阶段。随着软件系统复杂性的提高和规模的增大,需求定义愈加困难和耗时;传统的需求定义语言由于采用的模型和问题领域差距较大,从而使得需求定义的易理解性和易维护性较差。而面向对象模型由于和问题结构之间有良好的对应关系而较好地满足需求定义的需要。因此,面向对象需求模型的研究成为热门课题并展示出良好的前景,代表性的工作有J.Rumbaugh等提出的模型以及D.W.Embley等提出的模型,这些模型以对象及其相互间的关系为核心,以图形化表示机制为手段来刻画系统,不仅能反映系统的静态结构关系,而且能反映系统的动态变化行为,为解决传统功能分解模型中存在的功能本身的易变性、分解结构的随意性以及功能结构与问题结构常难对应等问题提供厂有效途径。
按照形式化的程度,需求定义语言可分为非形式需求定义语言,半形式需求定义语言,以及形式需求定义语言三类。
非形式需求定义语言是指未作任何限制的自然语言。一般说来,非形式需求定义语言具有易理解、易使用的特点,易于为一般用户所接受。但是由于自然语言的非形式性而使得需求定义中常出现错误,并且难以用计算机系统提供自动化的支持。半形式需求定义语言是指在宏观上对语言的语法和语义有较精确的描述,而在某些局部方面则允许使用非形式的自然语言。这类语言既便于用户的表达和理解相应的需求定义,又可在某种程度上用机器对相应的需求定义进行管理和进行部分的正确性检查。形式需求定义语言是指其语法和语义均精确定义的语言。一般说来,形式化需求定义语言具有良好的数学基础,易于分析需求定义的各种性质。然而,形式需求定义语占往往要求朋户具有较高的数学修养,且相对说来,所书写的需求定义较难理解。