需求工程作者Dorfman和Rhayer(1990)对软件需求进行了如下定义:
●用户为了达到某个目标而解决某个问题时所必需的一种软件能力。
●系统或系统组件为满足某个合约、标准、规格说明或其他正式文档所必须达到或拥有的软件能力。
1997年IEEE在《软件工程标准词汇表》对需求做出如下定义:
●用户为解决某一问题或为达到某个目标所需要的条件或能力。
●系统或系统部件为满足合同、标准、规格说明或其他正式的强制性文档所必须具有的条件和能力。
●对在上述两点所描述的条件或能力的文档化说明。
IEEE的定义包括从用户角度(系统的外部行为)以及从开发者角度(一些内部特性)来阐述需求,其关键的问题是一定要编写需求文档。
对于用户来说,软件系统相当于一个黑盒,软件系统与系统间的交互过程如图4-1所示。
图4-1 软件系统元素
因此,Davis(1999)认为可以从5个方面来完全描述系统:
●系统输入。包括输入的设备、形式、外观以及感觉等必要的细节。
●系统输出。必须支持对输出设备的描述,如语音输出或可视化显示等,以及系统所产生信息的协议和格式。
●系统的功能。把输入映射到输出,以及他们的不同组合。
●系统的属性。非行为需求,如可靠性、可维护性、可得到性以及吞吐量等开发人员必须考虑的因素。
●系统环境的属性。附加的非行为需求,如系统在不同操作约束、负载和操作系统兼容性中运行的系统能力。