需求是问题解决的期望,问题是可大可小的,期望自然也是可大可小的。问题和期望粒度不同的现象被称为需求的不同抽象层次。
用户需求是对任务的期望,所以其基本方式为“XX用户可以使用系统完成XX任务”。用户任务应该是有目标性。有价值的活动。
业务需求描述了系统的目标和效益,适合决策者;用户需求描述了具体任务,适合用户;它们都不适合于软件开发者。适合软件开发者的需求层次是系统级需求,它关注的是软件系统的行为,尤其是系统与外界的交互行为:在接收到一个外界请求时,软件系统应该给外界提供响应。
一个软件系统的系统级需求集合定义了相应业务及用户需求的解决方案,构成了需求规格说明的主题部分。相比之下,业务需求直接或间接地来源于决策者,用户需求直接或间接地来源于用户,为系统级需求就只能通过技术加工获得。
严格意义上的软件需求分类为:功能需求、性能需求、质量属性、对外接口、约束以及可能会出现的逻辑数据需求等其他特殊类型的功能。
约束是不受解系统影响,却会给解系统带来极大影响的问题域特性。常见的约束有以下几种:系统开发及运行的环境、问题域内的相关标准、商业规则、社会性因素等。
优秀需求应该具备以下特性:完备性、正确性、可行性、必要性、无歧义、可验证等特性。