1
 软件工程
1.9.1.1 7.1.1 需求陈述

7.1.1 需求陈述

用户需求陈述是面向对象分析过程的第一步。需求陈述可以由用户单方面写出,也可以由系统分析人员配合用户通过需求研讨共同写出。当软件项目采用招标方式确定开发单位时,“标书”往往可以作为初步的需求陈述。

需求陈述的内容通常包括问题范围、功能需求、性能需求、应用环境及假设条件等。总之,需求陈述应该阐明“做什么”而不是“怎么做”。它应该描述用户的需求而不是提出解决问题的办法;应该指出哪些是系统必要的性质,哪些是任选的性质;应该避免对设计策略施加过多的约束,也不要描述系统的内部结构,因为这样做将限制实现的灵活性。对系统性能及系统与外界环境交互协议的描述,是合适的需求。此外,对采用的软件工程标准、模块构造准则、将来可能做的扩展及可维护要求等方面的描述,也都是适当的需求。

大多数需求陈述都是用自然语言书写的,很容易产生二义性,内容往往不完整、不一致。有些需求有明显的错误,还有一些需求虽然陈述准确,但是它们对系统的行为存在着不良的影响,或者实现起来造价昂贵。另外,一些需求乍看起来合理,但却没有真正地反映用户的需要。因此,要求系统分析人员必须理解用户需求,抽象出目标系统的本质属性,并用模型准确地表示出来。分析模型应该成为对问题的精确而又简洁的表示。后继的设计阶段将以分析模型为基础。更重要的是,通过建立分析模型,能够纠正在开发期对问题域的误解。

应该强调的是,领域知识在面向对象建模的过程中非常重要,尤其是建模过程中的分类工作往往有很大难度。继承关系的建立实质上是知识抽取,它必须反映出一定深度的领域知识,这不是单方面努力所能做到的。因此,系统分析人员必须与领域专家密切配合,共同地整理用户需求。同时,在需求陈述过程中,与用户的有效交流也是非常重要的。

在面向对象建模过程中的重用问题也很重要,系统分析人员应该仔细研究以前对类似的问题域进行面向对象分析所得到的结果。由于面向对象分析结果的稳定性和可重用性,这些结果在当前项目中往往有许多是可以重用的。