非功能需求这种系统的整体性质往往成为判定项目开发成功与失败的标准。非功能需求是功能需求的补充,只有和功能需求联系在一起才有意义,对系统设计或实现起约束作用,因此,非功能需求往往直接影响着系统架构的设计和选择。由于非功能需求不易被发现,发现后不易表达、实现以及测试,因此,它们经常被忽略。非功能需求可以被分为两个主要类别:与执行质量有关的非功能需求,如安全性、可用性、可靠性等在运行时能够观测的质量属性;与演化质量有关的非功能需求,如可测试性、可维护性、可扩展性、可伸缩性等提醒系统静态结构的质量属性。因此,非功能需求往往也被称为质量需求或系统的“质量属性”。例如:与执行质量有关的非功能需求,对交易的加密和解密必须在1毫秒之内完成;与演化质量有关的非功能需求,系统内置测试功能的完整性必须达到100%。
有些学者建议不要使用“非功能需求”这一术语。他们认为,非功能需求一般分为两类:一类是不明确的功能需求,通过精化,可以将其细化定义为一个或一组功能需求,必要时还可能包括相应的质量需求;另一类是质量需求,定义整个系统或系统组件、服务或功能所要具备的质量属性。
功能需求与非功能需求的关系可以解释如下:功能需求是让产品工作的需求,而非功能需求是为产品赋予特征的需求,是产品必须具备的品质,可以让产品有吸引力、易于使用、快速、可靠或安全。因此,功能需求和非功能需求是相辅相成、密不可分的。功能需求用于定义系统应该具备的行为和功能,即定义了系统将会做什么;而非功能需求描述评判系统运行情况好坏的标准,即定义系统做得如何。一般说来,功能需求往往采用句式“系统应该做……(The system should do